Надежность попробуйте поймать, показав, что выполнение внутреннего tx возвращено на Etherscan

#try-catch #solidity #etherscan

Вопрос:

У меня есть функция, чтобы проверить, имеет ли данный токен заводской адрес Uniswap:

 address possibleFactoryAddress;
try IUniswapV2Pair(token).factory() returns (address factory) {
    possibleFactoryAddress = factory;
} catch {}
 

Теперь этот код работает идеально — catch блок будет выполнен, если данный токен не возвращает адрес через свою factory() функцию (правильно, потому что у него нет этой функции). Однако, когда tx отображается на Etherscan, на нем есть большой желтый восклицательный знак и страшное предупреждение:

Although one or more Error Occurred [execution reverted] Contract Execution Completed

Я знаю, что в коде нет ничего плохого, передача данных завершена без возврата, и все изменения состояния сохранены должным образом, но возможно ли, чтобы Etherscan НЕ показывал это большое предупреждение? Я боюсь, что это смутит многих нетехнических людей и отпугнет их.

Спасибо.

Комментарии:

1. Можете ли вы связать одну из транзакций, в которой отображается это предупреждение? Возможно, он состоял из нескольких внутренних транзакций — и одна из этих внутренних транзакций не удалась.

2. Это моя точка зрения — есть несколько внутренних транзакций, и одна ошибка (внешний вызов), которая поймана. В моем случае неудачная транзакция не оказывает никакого влияния на правильность родительской транзакции. Но теперь, когда я думаю об этом, Etherscan, вероятно, должен показать предупреждение, потому что кто-то может попытаться злоупотребить уловом, притвориться, что ничего не пошло не так, и использовать его для мошенничества с людьми.