Receipt сначала отвечает, была ли транзакция включена

Три состояния, которые интерфейсы часто называют одной ошибкой
СостояниеReceiptКомиссия сети
Rejected до принятия сетьюНет сетевого наблюдения и receipt; локальный hash подписанной raw transaction возможенOn-chain fee не возникает, если транзакция не включена
Pending / droppedReceipt отсутствуетНет включённого исполнения; локальный интерфейс может показывать резерв
Included, status 0Есть block number, gasUsed и failed statusИспользованный gas оплачен
Included, status 1Есть успешный receiptGas оплачен; бизнес-результат всё равно проверяют по events и balances
Три состояния, которые интерфейсы часто называют одной ошибкой
Состояние
Rejected до принятия сетью
Receipt
Нет сетевого наблюдения и receipt; локальный hash подписанной raw transaction возможен
Комиссия сети
On-chain fee не возникает, если транзакция не включена
Состояние
Pending / dropped
Receipt
Receipt отсутствует
Комиссия сети
Нет включённого исполнения; локальный интерфейс может показывать резерв
Состояние
Included, status 0
Receipt
Есть block number, gasUsed и failed status
Комиссия сети
Использованный gas оплачен
Состояние
Included, status 1
Receipt
Есть успешный receipt
Комиссия сети
Gas оплачен; бизнес-результат всё равно проверяют по events и balances

Для разбора сохраните network, transaction hash, block number, status, from, to, value, input, gas limit, gas used и effective gas price. Для обычной included EVM-транзакции фактическая execution fee проверяется как gasUsed × effectiveGasPrice; у blob-транзакции отдельно учитывается blob fee. Logs при top-level revert обычно не подтверждают откатившиеся события. Token transfer в preview или интерфейсе не доказывает изменение баланса: authoritative state нужно читать после блока.

Состояние откатывается, счётчик работы — нет

EVM выполняет opcodes и расходует gas. Если неперехваченное исключение доходит до верхнего вызова, изменения этого исполнения возвращаются к состоянию до транзакции. Но проверка подписи, чтение данных и вычисления уже произошли на узлах. Экономическая модель оплачивает эту работу, иначе ошибочными вызовами можно было бы бесплатно занимать ресурсы блока. Отдельный гайд даёт подробное объяснение счётчика gas и EIP-1559.

Больше gas исправляет только один класс причин

Диагностическая матрица EVM-ошибок
ПризнакВероятная причинаЧто должно измениться до повтора
Gas used близок к gas limit; out of gas в traceЛимита не хватило на исполнениеКорректная новая оценка gas и проверка, почему вызов стал тяжелее
Revert reason про slippage/minimum outputРезультат swap вышел за допускНовая котировка и осознанный предел; не бесконечное расширение slippage
Deadline expiredВызов просроченНовый payload с разумным сроком из доверенного приложения
Insufficient balance/allowanceКонтракт не видит нужный баланс или разрешениеПроверка owner, token, spender, amount и сети
Unauthorized / missing roleSender не имеет требуемой ролиОфициальный доступ или отказ от действия; fee не исправляет права
Paused / custom errorПротокол остановил функцию или нарушено условиеПроверка официального статуса и точного custom error
Диагностическая матрица EVM-ошибок
Признак
Gas used близок к gas limit; out of gas в trace
Вероятная причина
Лимита не хватило на исполнение
Что должно измениться до повтора
Корректная новая оценка gas и проверка, почему вызов стал тяжелее
Признак
Revert reason про slippage/minimum output
Вероятная причина
Результат swap вышел за допуск
Что должно измениться до повтора
Новая котировка и осознанный предел; не бесконечное расширение slippage
Признак
Deadline expired
Вероятная причина
Вызов просрочен
Что должно измениться до повтора
Новый payload с разумным сроком из доверенного приложения
Признак
Insufficient balance/allowance
Вероятная причина
Контракт не видит нужный баланс или разрешение
Что должно измениться до повтора
Проверка owner, token, spender, amount и сети
Признак
Unauthorized / missing role
Вероятная причина
Sender не имеет требуемой роли
Что должно измениться до повтора
Официальный доступ или отказ от действия; fee не исправляет права
Признак
Paused / custom error
Вероятная причина
Протокол остановил функцию или нарушено условие
Что должно измениться до повтора
Проверка официального статуса и точного custom error

Revert reason полезен, если explorer или trace получил его из реального вызова и смог декодировать ABI. Но строка не является гарантией полноты: контракт может вернуть custom error, пустые данные или ошибку из глубины вложенного вызова. Не доверяйте неизвестному сайту, который просит новую подпись якобы для «расшифровки ошибки».

Повтор имеет смысл только после изменения проверяемого условия

Перед новой подписью

  • подтвердить status 0 и канонический block hash исходной транзакции;
  • определить функцию по to и input data, не полагаясь только на подпись карточки dapp;
  • проверить balances, allowances, deadline, min/max amounts и paused state на актуальном блоке;
  • воспроизвести eth_call или wallet simulation с теми же параметрами на свежем состоянии;
  • изменить только параметр, связанный с установленной причиной;
  • после повтора проверить новый hash, receipt и фактические token transfers.

На DEX причиной может быть изменение цены или ликвидности между quote и исполнением, но сам факт failed swap не доказывает MEV или мошенничество. Сначала сравните minimum received, deadline и маршрут. Повышать slippage без границы опасно: транзакция может пройти с существенно худшим результатом.

Успешная симуляция тоже не гарантирует следующий блок: state способен измениться до inclusion. Если интерфейс не показывает точную функцию, суммы и контракт, остановитесь. Общая модель смарт-контракта помогает отделить подпись, broadcast, EVM execution и итоговый state.

Границы ответа

Failed-транзакция перевела ETH или токен?

При top-level status 0 изменения этой транзакции откатываются, но проверьте исходное и итоговое состояние. Отдельная другая транзакция или перехваченный subcall — другой случай.

Можно вернуть комиссию за revert?

Протокол не создаёт возврат использованного gas: вычислительная работа уже включена в блок. Неиспользованная часть gas limit не считается использованной комиссией.

Нужно просто поставить больше gas?

Только подтверждённый out of gas указывает на недостаточный limit. Для логического revert увеличение лимита не меняет условие контракта.

Источники

Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.

  1. Solidity — Error handling Solidity · Проверено 18 августа 2026 г. в 22:28 GMT+5
  2. Ethereum.org — JSON-RPC API Ethereum Foundation · Проверено 18 августа 2026 г. в 22:28 GMT+5
  3. Ethereum.org — Gas and fees Ethereum Foundation · Проверено 18 августа 2026 г. в 22:28 GMT+5
  4. Ethereum.org — Transactions Ethereum Foundation · Проверено 18 августа 2026 г. в 22:28 GMT+5
  5. EIP-4844 — Shard Blob Transactions Ethereum Improvement Proposals · Проверено 18 августа 2026 г. в 22:50 GMT+5
Материал носит информационный характер и не является индивидуальной рекомендацией. Криптоактивы связаны с риском волатильности, технических сбоев, хищения и полной потери средств.