ГЛАВНАЯ / ИНСТРУКЦИИ / ETHEREUM RECEIPT И STATUS: КАК ПРОВЕРИТЬ ИСХОД ВЫЗОВА КОНТРАКТА
Ethereum receipt и status: как проверить исход вызова контракта
Receipt – запись результата уже включённой транзакции. В ней можно проверить, завершилось ли исполнение верхнего вызова успешно, сколько газа учтено и какие logs сохранились. Но receipt не пересказывает полное намерение пользователя и не гарантирует, что интерфейс биржи или приложения уже зачислил актив.
Receipt появляется для транзакции в блоке
Пока транзакция находится в mempool, окончательного receipt ещё нет. После обработки блока клиент или обозреватель обычно показывает transaction hash, блок, gasUsed, статус исполнения и logs. Набор полей зависит от формата RPC и интерфейса, но hash транзакции остаётся способом найти конкретный объект в выбранной сети.
Status из EIP-658 отражает успешность верхнего вызова: 1 означает success, 0 – failure. Это статус исполнения, а не гарантия бизнес-результата. Контракт мог успешно завершить вызов, хотя параметры оказались не теми, которые пользователь хотел, либо вложенная ошибка могла быть обработана кодом.
| Поле | Что проверить | Чего не доказывает |
|---|---|---|
| Status | Итог top-level вызова | Что действие было выгодно или ожидаемо |
| Gas used | Оплаченный расход газа | Насколько корректен вызов |
| Logs | События, сохранённые после исполнения | Наличие всех ожидаемых изменений |
| Block | Где включена транзакция | Абсолютную неизменность до финальности |
Неуспех не отменяет комиссию за выполненную работу
При status 0 исполнение верхнего вызова завершилось ошибкой или revert. Изменения состояния транзакции откатываются, но газ, израсходованный на обработку до завершения, учитывается. Если причиной был out of gas, расход может отличаться от revert с оставшимся газом. Receipt позволяет увидеть фактический gasUsed, а trace иногда объясняет точку сбоя.
Не повторяйте вызов вслепую. Установите причину по параметрам, балансу, allowance, коду ошибки и состоянию нужного блока. Если параметры изменились, прежняя симуляция могла устареть. Повышение лимита помогает только при подтверждённой нехватке газа и не исправляет неверного получателя, сети или условия контракта.
Успешный вызов нужно сверить с тем, что произошло
Status 1 означает, что верхнее исполнение не завершилось общим revert. Он не говорит, что депозит зачислен внутренним учётом биржи, что токен имеет ожидаемую стоимость или что интерфейс правильно декодировал операцию. Сверьте адрес токена, получателя, amount, логи и изменение состояния.
Если top-level вызов успешно завершился после обработки ошибки дочернего вызова, receipt может быть успешным при отсутствии ожидаемого действия. Прочитайте фактические logs и, когда это существенно, trace. Не делайте вывод по значку success без проверки контракта и полученного состояния.
- status описывает верхний вызов;
- бизнес-результат подтверждается отдельно.
Отделите включение, устойчивость блока и зачисление
Появление receipt подтверждает включение в наблюдаемый блок. До достаточного подтверждения возможна реорганизация цепи; критерии ожидания и финальности зависят от сети и приложения. Сверьте число подтверждений или состояние финальности в официальном интерфейсе нужной сети.
Затем проверьте пункт назначения: self-custody-кошелёк читает сетевой баланс, а кастодиальный сервис обновляет внутренний учёт по собственным правилам. Успешный receipt сам по себе не означает, что биржа завершила зачисление. Сохраните hash и обращайтесь в поддержку только по официальному каналу, не раскрывая seed или приватный ключ.
- сверьте confirmation count или финальность сети;
- при биржевом депозите отдельно проверьте зачисление.
Частые вопросы
Что значит status 1?
Верхний вызов транзакции завершился успешно по консенсусному статусу receipt.
Что значит status 0?
Верхний вызов завершился неуспешно; gas, потраченный на исполнение, всё равно может оплачиваться.
Если receipt есть, депозит уже зачислен?
Не обязательно. Кастодиальный сервис может учитывать поступление отдельно.
Status 1 гарантирует правильный перевод?
Нет. Сверьте сеть, контракт, адрес, сумму, logs и фактический баланс.
Сразу ли receipt финален?
Не всегда. Учитывайте подтверждения и критерии финальности конкретной сети.
Чек-лист: ethereum receipt и status: как проверить исход вызова контракта
- hash найден в правильной сети;
- receipt уже существует;
- status прочитан отдельно от сообщения кошелька;
- gasUsed и комиссия сохранены;
- логи и адреса сверены;
- ожидаемый баланс проверен;
- подтверждения и зачисление не смешаны.
Материал подготовлен редакцией сайта и проверен 28 октября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.