Owlio
RU
← Блог
ИнструкцияДля новичка

Транзакция Ethereum успешна, но токены не пришли: что проверить

Success описывает исполнение транзакции. Сам по себе этот статус не доказывает, что нужные токены поступили на нужный счёт.

Успешная транзакция Ethereum сама по себе не доказывает, что нужные токены ERC-20 поступили на нужный счёт. Success сообщает, завершилась ли транзакция в целом без отката. Прежде чем считать платёж выполненным, подтвердите выполненное действие, точный контракт токена, получателя и свидетельства перевода.

Начните с исходного хеша транзакции в Ethereum Mainnet. Не отправляйте ещё один платёж только ради проверки устаревшего отображения в кошельке. Это руководство описывает проверку уже включённой в блок транзакции без изменения данных, а не услугу восстановления или указания подписать новую транзакцию.

Понимайте Success на правильном уровне

EIP-658 определяет статус квитанции как результат вызова верхнего уровня. Статус 1 означает успех, 0 - неудачу; JSON-RPC представляет их как 0x1 и 0x0. Это сведения об исполнении, а не перечень всех результатов, которых вы ожидали от приложения.

Контракт может обработать неудачную внутреннюю операцию без отката всей транзакции. Стандарт ERC-20 также прямо требует от вызывающей стороны обрабатывать возвращённое false. Не предполагайте, что любая реализация токена сообщает о неудачных переводах через откат.

Статус квитанции - не значение true или false, возвращённое методом токена. Справочник квитанций описывает статус транзакции, блок и журналы; поле статуса от этого не становится возвращаемым значением внутреннего вызова. Декодированные сведения об исполнении могут помочь, но ошибку в трассировке или название метода нужно толковать в контексте всего действия.

Если квитанция всей транзакции показывает Failed, используйте руководство по неудачным транзакциям и газу. Если транзакция ещё не включена в блок, читайте руководство по ожидающим транзакциям. Здесь рассматривается включённая в блок транзакция со статусом Success.

Установите, было ли действие переводом

Приложение может запросить разрешение перед последующим переводом, обменом или внесением средств. В ERC-20 approve устанавливает лимит расходования; сам по себе этот вызов не отправляет разрешённую сумму тому, кому дано разрешение. Поэтому его успешная транзакция может не изменить баланс токена.

Посмотрите действие и, если доступно, декодированные входные данные. Запишите контракт назначения транзакции и задуманную операцию. В поле To транзакции может быть маршрутизатор или другой контракт, а не конечный получатель токенов. Не приравнивайте это поле к получателю, записанному в переводе токена.

Наблюдение Что оно устанавливает Что ещё проверить
Статус квитанции Success Исполнение верхнего уровня успешно Результат нужного действия
Успешное разрешение Выполнено действие с разрешением Отдельный перевод или действие протокола
Совпадающая запись Transfer Контракт создал запись о переводе Идентичность, сумму и итоговое состояние
Текущий баланс токена Количество на счёте при чтении Другую активность и время наблюдения

Сохраните хеши отдельных шагов. Успешное разрешение и следующий за ним перевод - две записи; один ярлык Success не заменяет обе. Сообщение приложения о завершении также не доказывает зачисление депозита биржей или завершение моста в другой сети. У этих сервисов свои записи и правила.

Сопоставьте запись перевода с точным токеном и получателем

Событие Transfer из стандарта записывает отправителя, получателя и сумму. В журналах квитанции проверьте адрес контракта, создавшего запись, затем сравните декодированные поля с задуманным платежом. Знакомого символа недостаточно: другой контракт может использовать то же имя или создавать похожее событие.

Проверьте сеть и полный адрес контракта токена через источник, которому уже доверяете. Сравнивайте полный адрес получателя, а не только сокращённые начало и конец. Наше руководство по адресу кошелька и контракту токена объясняет, какой адрес обозначает актив, а какой - счёт.

Проверьте сумму, а не только наличие события. ERC-20 предусматривает переводы с нулевым значением, поэтому событие Transfer не доказывает положительный платёж. Если журнал показывает целое число в исходном виде, учитывайте проверенное число десятичных знаков токена. Не применяйте форматирование дважды и не придумывайте масштаб, если метаданные недоступны.

Допустим, задуманный платёж составляет 25 токенов. Успешное разрешение на 25 токенов - не этот платёж. Запись перевода нулевых токенов тоже им не является. Запись на 25 токенов от другого контракта по-прежнему не подтверждает получение нужного актива. Это условные сравнения, а не наблюдения за реальным кошельком.

Сравните состояние, не приписывая все изменения этому хешу

Прочитайте баланс получателя для того же контракта токена в той же сети. Стандартный balanceOf(account) сообщает баланс токена на счёте, а не объясняет изменения от одной транзакции. Галерея кошелька или общая стоимость портфеля в обычной валюте может запаздывать либо описывать другое.

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

Если свидетельства расходятся, сохраните это расхождение. Особая механика токена, несовместимый инструмент чтения или внутренний учёт протокола могут потребовать документации точного контракта и поддержки. Журнал контракта - не сертификат подлинности или безопасности. Неудачный запрос баланса означает неизвестность, а не нулевой баланс.

Сохраните запись перед решением о новом платеже

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

  1. Определите исходную транзакцию. Сохраните Ethereum Mainnet, полный хеш, отправителя, блок и общий статус квитанции.
  2. Определите фактическое действие. Отличите разрешение от перевода, обмена или внесения средств. Сохраните все отдельные хеши этого процесса.
  3. Сопоставьте свидетельства по токену. Запишите создавший запись контракт, отправителя перевода, получателя и сумму с единицами. Сравните их с нужным активом и счётом.
  4. Проверьте итоговое состояние. Прочитайте точный баланс токена или соответствующую запись протокола, записав блок или время и другую активность, способную повлиять на результат.
  5. Не закрывайте неразрешённые вопросы. Сохраните сведения об отсутствующих журналах, неудачных чтениях и необъяснимых различиях. Обратитесь в официальную поддержку кошелька или протокола с публичными данными транзакции, прежде чем решать, уместна ли новая транзакция.

Проверка завершена, когда вы можете объяснить, что прошло успешно и какие свидетельства подтверждают нужное получение. Если транзакция успешна, но платёж не подтверждён, так и обозначьте его. Значок Success полезен как свидетельство; он не позволяет игнорировать актив, получателя или сумму.

Частые вопросы

Означает ли статус 1, что мой перевод ERC-20 точно прошёл?

Он означает успех исполнения Ethereum на верхнем уровне. Проверьте выполненное действие, точный контракт токена, получателя, сумму и итоговое состояние. Успешное разрешение или обработанная внутренняя ошибка не доказывают нужный вам платёж.

Можно ли узнать возвращённое токеном true или false из статуса квитанции?

Нет. Статус квитанции отражает результат исполнения на верхнем уровне, а не возвращаемое значение метода ERC-20. Стандарт требует от вызывающей стороны обрабатывать false; для разбора конкретного вызова могут понадобиться декодированные сведения об исполнении или поддержка протокола.

Стоит ли отправить платёж повторно, если кошелёк не обновился?

Сначала разберитесь с исходным хешем в нужной сети. Новая транзакция может создать ещё один платёж. Сохраните исходную квитанцию и проверьте точный актив и счёт, прежде чем решать, что делать дальше.