Транзакции ERC-20 обычно завершаются с ошибкой потому, что сеть или контракт токена отклонили запрос, а не потому, что ваши токены исчезли. Наиболее распространённые причины — недостаточно ETH для оплаты газа, слишком низкий лимит газа, недостаточный баланс токенов или разрешённая сумма, ограничения на перевод токена либо замена старой транзакции новой с тем же nonce.
Перевод ERC-20 может завершиться с ошибкой на двух основных этапах: до включения майнерами или валидаторами в блок либо во время выполнения смарт-контракта после включения. Это различие важно, поскольку для зависшей или удалённой транзакции требуется другое решение, чем для подтверждённой транзакции со статусом ошибки.
При обычной неудачной транзакции задуманный перевод токенов, как правило, не выполняется, но газ, использованный для попытки, всё равно расходуется. Это один из наиболее часто неправильно понимаемых аспектов Эфириума: выполнение может завершиться ошибкой, однако комиссия сети всё равно взимается, поскольку валидаторы обработали попытку транзакции.
Ошибки особенно часто возникают при взаимодействии с контрактами токенов через кошельки, сервисы обмена, приложения для стейкинга, мосты и платёжные dApp. В таких случаях вы не просто отправляете токен, а вызываете логику контракта, которая может отклонить действие по нескольким причинам.
Сначала всегда проверяйте хеш транзакции в обозревателе блоков. Посмотрите поле статуса и текст ошибки, если он имеется. Обычно транзакция находится в одном из трёх состояний:
| Статус | Что он означает | Что обычно произошло | Что делать дальше |
|---|---|---|---|
| В ожидании | Транзакция ещё не подтверждена | Комиссия за газ слишком низкая или сеть перегружена | Подождать, ускорить или отменить транзакцию с тем же nonce |
| Ошибка | Транзакция была включена, но её выполнение не удалось | Закончился газ, произошёл откат, недопустимая инструкция или сработало ограничение контракта | Прочитать сообщение об ошибке и устранить её причину перед повторной отправкой |
| Удалена или заменена | Исходная транзакция больше не активна | Её заменила новая транзакция с тем же nonce | Проверить статус заменяющей транзакции |
Если вы торгуете или управляете активами с помощью разных инструментов, совместимых с Эфириумом, учётная запись на бирже WEEX поможет отделить биржевые операции от действий в блокчейне через кошелёк, что упрощает проверку nonce и отслеживание транзакций.
Ошибки, связанные с газом, являются наиболее частой причиной неудач. Сами токены ERC-20 не оплачивают газ. Для оплаты выполнения нужен нативный токен сети — обычно ETH в основной сети Эфириума.
Наиболее распространённые проблемы с газом:
| Проблема с газом | Как она проявляется | Типичное решение |
|---|---|---|
| Недостаточный баланс нативного токена | У вас есть токен, но недостаточно ETH для оплаты сетевой комиссии | Пополнить баланс ETH и отправить транзакцию повторно |
| Слишком низкий лимит газа | Для транзакции отображается ошибка «Закончился газ» | Повторно отправить транзакцию с более высоким лимитом газа |
| Слишком низкая максимальная или приоритетная комиссия | Транзакция долго остаётся в ожидании | Ускорить её, установив более высокую комиссию и используя тот же nonce |
Лимит газа — не то же самое, что цена газа. Лимит газа определяет максимальный объём вычислительной работы, который может использовать транзакция. Настройки комиссии определяют, сколько вы готовы заплатить за эту работу. Если одно из этих значений слишком мало, транзакция может никогда не подтвердиться либо завершиться с ошибкой после начала выполнения.
Некоторые ошибки ERC-20 никак не связаны с перегрузкой Эфириума. Действие может блокировать сам контракт токена.
Распространённые причины на стороне контракта:
Если обозреватель показывает «Откат» или «Недопустимая инструкция», это часто означает, что смарт-контракт активно отклонил вызов либо столкнулся с логической ошибкой. В таких случаях повторная отправка той же транзакции без каких-либо изменений обычно приводит к тому же результату и дополнительной трате газа.
Многие проблемы ERC-20 возникают при взаимодействии с контрактами, а не при простом переводе между кошельками. Если вы используете децентрализованную биржу, контракт стейкинга, платёжный сервис или мост, приложение часто вызывает transferFrom вместо прямого transfer.
Это означает, что контракту сначала нужно предоставить разрешение. Если разрешённая сумма слишком мала, фактически стала недействительной после смены кошелька или относится к неверному адресу получателя разрешения, транзакция может быть отменена с откатом.
Перед повторной попыткой проверьте четыре пункта:
Если проблема связана с разрешением, обычно нужно сначала отправить новую транзакцию одобрения, дождаться её подтверждения и только затем повторить основное действие.
Эти сообщения указывают на проблемы при выполнении смарт-контракта.
Откат обычно означает, что контракт столкнулся с условием, предписывающим остановить выполнение и отменить изменение состояния. Причиной может быть недостаточная разрешённая сумма, запрещённый получатель, блокировка переводов, неверные параметры или другое встроенное в контракт правило.
Недопустимая инструкция обычно указывает на более серьёзную проблему в логике или коде контракта. Для пользователей токена это часто означает, что устранить проблему только со стороны кошелька нельзя. Если контракт токена неисправен или намеренно ограничивает операции, разъяснить ситуацию сможет только команда проекта или владелец контракта.
Если кошелёк сообщает только «выполнение отменено» без понятного объяснения, обозреватель может не распознать точную причину. В таком случае сопоставьте неудачный вызов со своим балансом, разрешением, целевым адресом и сетью. Если всё это указано верно, следующим шагом обычно становится обращение в службу поддержки проекта токена или протокола.
Каждая транзакция из вашего кошелька использует nonce — порядковый номер. Эфириум обрабатывает транзакции по порядку. Если транзакция с одним nonce зависла, последующие могут встать за ней в очередь.
Транзакция также может быть заменена, если из того же кошелька отправить другую транзакцию с тем же nonce и более высокой комиссией. Кошельки часто называют эту функцию «Ускорить». Отправка перевода самому себе с тем же nonce может использоваться кошельком для отмены старой ожидающей транзакции.
Это приводит к двум распространённым заблуждениям:
При проверке в обозревателе всегда изучайте как неудачную или отсутствующую транзакцию, так и любую последующую транзакцию с тем же nonce.
Не отправляйте ту же транзакцию повторно сразу. Сначала определите точный тип ошибки.
| Сообщение обозревателя | Наиболее вероятное значение | Лучшее первое действие |
|---|---|---|
| Закончился газ | Лимит газа был слишком низким | Повторно отправить транзакцию с более высоким лимитом газа |
| Откат | Контракт отклонил действие | Проверить баланс, разрешённую сумму, адрес и правила токена |
| Недопустимая инструкция | Ошибка логики или ограничение контракта | Связаться с командой проекта или владельцем контракта |
| В ожидании | Слишком низкая комиссия или перегрузка сети | Ускорить или отменить транзакцию с тем же nonce |
| Удалена и заменена | Её заменила новая транзакция с тем же nonce | Отслеживать заменяющую транзакцию |
Используйте следующую последовательность действий, чтобы устранить проблему и не тратить дополнительный газ:
Этот процесс намного безопаснее, чем многократное нажатие кнопки отправки, которое может создать цепочку зависших nonce или повторяющихся ошибок.
Иногда транзакция вовсе не завершается с ошибкой, но результат всё равно оказывается нежелательным. Классический пример — отправка токенов ERC-20 непосредственно на адрес контракта токена или другого контракта, который не умеет управлять входящими токенами.
В таком случае перевод может успешно пройти в блокчейне, но токены способны застрять навсегда, если в принимающем контракте нет функции вывода или восстановления. Это отличается от обычной неудачной транзакции, поскольку сеть приняла перевод.
Перед отправкой токенов всегда проверяйте, что адрес назначения принадлежит кошельку или контракту, специально предназначенному для получения этого токена. Если перевод на несовместимый контракт уже успешно выполнен, восстановление может оказаться невозможным, если владелец контракта не способен получить доступ к средствам и вернуть их.
Несколько привычек помогут избежать большинства ошибок ERC-20:
На данный момент безопаснее всего воспринимать каждое взаимодействие с токеном прежде всего как вызов контракта и лишь затем как простой платёж. Переводы ERC-20 могут выглядеть на экране просто, но на внутреннем уровне они выполняются по точным правилам, которые блокчейн строго применяет.
Эта статья предназначена исключительно для общей информации и не является финансовой, юридической или технической консультацией.
Этот контент предоставляется исключительно в общих информационных целях и не является финансовым, инвестиционным, юридическим или налоговым советом. Любые мероприятия, вознаграждения, онлайн-акции или связанная с ними информация, упомянутые в настоящем документе, не должны рассматриваться как рекомендация, приглашение к покупке, продаже, торговле или иной сделке с какими-либо криптоактивами. Криптоактивы очень волатильны и могут привести к убыткам. Доступность услуг, продуктов WEEX и связанных с ними событий может варьироваться в зависимости от региона. Вы несете ответственность за обеспечение того, чтобы ваше участие соответствовало применимым местным законам и нормативным актам.

Купите криптовалюту за 1$