Неудачная контрактная операция может оставить пользователя Ethereum с оплатой, даже если предполагаемое изменение состояния не было завершено. Объяснение начинается с исполнения: вычисление потребляет газ. Откат операции не означает, что сеть не выполнила никакой работы. Документация Ethereum отличает сбои во время исполнения от транзакций, отклоненных до включения. Ethereum .org Газ и сборы

Следуйте доказательствам

Отследите, как событие может достичь рынков, а затем проверьте конкурирующее объяснение.

Неудачная контрактная операция может оставить пользователя Ethereum с гонораром, даже если предполагаемое изменение состояния не было завершено.Объяснение начинается с исполнения:

Сравнить объяснения

Переключите линзы, чтобы увидеть, что объясняет каждый аккаунт, и что остается неопределенным.

Примирить сбой и заряд отдельно

Пример работы WFN: предположим, что включенная гипотетическая транзакция использует 40 000 газов по эффективной цене 15 гвэй за единицу. Плата за исполнение составляет 600 000 гвэй или 0,0006 ETH. Эти входы изобретены для показа единиц. Они не являются текущими сетевыми ценами, цитатой из кошелька или претензией о стоимости конкретного приложения. Если заявленный лимит газа составлял 80 000, умножение этого лимита на ту же цену единицы будет описывать другое количество от платы, рассчитанной с использованием 40 000 газа. Квитанция и применимые поля комиссионных являются доказательствами, необходимыми для согласования фактического сбора. Скриншот, говорящий о неудаче, не обеспечивает этого полного учета. Причина отказа имеет значение при описании того, что произошло. Попытка, которая никогда не входит в блок, является другим случаем. Полезная примечание о происшествии идентифицирует хеш, цепочку и квитанцию транзакции, прежде чем объяснить результат. Она не должна выводить путь исполнения из одной красной метки состояния.

Что протокол записывает

EIP-658 определяет статус получения транзакции ноль для отказа и один для успеха. EIP-140 определяет REVERT, который откатывает изменения исполнения без автоматического потребления всего оставшегося газа. Запуск газа во время исполнения имеет различные последствия для потребления газа. Один только статус отказа поэтому не устанавливает, что был потреблен полный лимит газа. Ethereum EIP-658: статус сделки в квитанциях Ethereum EIP-140: инструкция по РЕВЕРТНОМУ

Газовая документация Ethereum отделяет газовые единицы от цены за единицу. В соответствии с документированным механизмом сбора часть базовой платы сжигается, а часть приоритетной платы поступает в валидатор. Плата за обычный пример газа для исполнения зависит от фактически используемого газа и его эффективной цены единицы, а не просто от отображаемого максимального предела газа. Ethereum .org Газ и сборы

Примирить сбой и заряд отдельно

Пример работы WFN: предположим, что включенная гипотетическая транзакция использует 40 000 газов по эффективной цене 15 гвэй за единицу. Плата за исполнение составляет 600 000 гвэй или 0,0006 ETH. Эти входы изобретены для отображения единиц. Это не текущие сетевые цены, котировка из кошелька или претензия о стоимости конкретного приложения.

Если заявленный лимит газа составлял 80 000, умножение этого лимита на одну и ту же цену единицы будет описывать другое количество от платы, рассчитанной с использованием 40 000 газа. Поля получения и применимые поля сборов являются доказательствами, необходимыми для согласования фактического сбора. Скриншот, говорящий о неудаче, не обеспечивает этого полного учета.

Причина неудачи имеет значение при описании случившегося. Выполнение может прекратиться через преднамеренное ПРЕДУПРЕЖДЕНИЕ или потому, что его доступный газ исчерпан. Попытка, которая никогда не входит в блок, - это еще один случай. Полезная примечание о происшествии идентифицирует хеш транзакции, цепочку и квитанцию, прежде чем объяснить результат. Она не должна выводить путь выполнения из одной красной метки статуса.

Прочитайте квитанцию перед повторением действия

Для проверки сохраняйте статус получения, ссылку на блок, используемую цену на газ и любые доступные доказательства ошибки исполнения. Проверяйте предполагаемый контракт и операцию отдельно. Более высокое предложение о вознаграждении не объясняет, почему собственное условие контракта отклонило операцию; для разрешения этого условия требуются соответствующие правила применения и информация об исполнении.

Повторная попытка является отдельной транзакцией и требует собственной записи. Это различие также помогает при согласовании сообщений приложения с ответом исследователя или узла. В статье описаны обычные сборы за выполнение Ethereum; конкретная сеть второго уровня или специализированный тип транзакции могут добавлять свои собственные компоненты платы. Его документированный учет должен быть рассмотрен непосредственно перед применением этого упрощенного примера.