Большинство транзакций ERC-20 завершаются ошибкой из-за недостаточного баланса токенов, отсутствия разрешения, слишком низких настроек газа, выбора неправильной сети или ограничений контракта токена. В большинстве случаев при сбое выполнения токены не покидают ваш кошелёк, однако комиссия за газ всё равно может быть израсходована. Самый быстрый способ решить проблему — определить, выполняли ли вы обычный перевод токенов или взаимодействовали с контрактом, а затем проверить точное сообщение об ошибке, баланс, разрешение, газ, nonce и адрес назначения.
Переводы ERC-20 могут завершаться ошибкой по нескольким типичным причинам, большинство из которых носит операционный, а не катастрофический характер. Неудачная транзакция обычно означает, что блокчейн выполнил ваш запрос, обнаружил нарушение правила и отменил перемещение токенов.
Наиболее распространённые причины:
Перед устранением неполадок полезно разделить два совершенно разных действия. Перевод ERC-20 между кошельками использует логику transfer() контракта токена. Внесение токенов в децентрализованное приложение, мост, стейкинговый контракт или другой протокол часто зависит от approve() в сочетании с transferFrom(). Это различие важно, поскольку ошибки, связанные с разрешением, возникают только во втором случае.
Сначала нужно понять, какое действие вы пытались выполнить. Если вы отправляли USDT, USDC или другой токен ERC-20 напрямую на другой кошелёк, вероятными причинами являются баланс, газ, адрес получателя или ограничения токена. Если вы выполняли обмен, стейкинг, перевод через мост, внесение средств или взаимодействовали с каким-либо dApp, к возможным причинам добавляются разрешение, логика проскальзывания внутри dApp, проверки конкретного контракта и замещение по nonce.
Здесь часто помогает страница статуса в обозревателе блоков. Если транзакция имеет статус Fail и отображает строку ошибки, например ERC20: insufficient allowance или transfer amount exceeds balance, причина обычно очевидна. Если отображается общая ошибка выполнения, возможно, протокол или контракт токена применяет собственные правила.
Пользователям, которые управляют переводами и балансами токенов в одном месте, интерфейс биржи WEEX может помочь сократить число базовых ошибок управления активами, например путаницу между сетями или балансами в кошельках и торговых аккаунтах.
Многие неудачные транзакции становится гораздо проще исправить после расшифровки точного сообщения. В таблице ниже перечислены наиболее частые ошибки.
| Сообщение об ошибке | Что оно означает | Что делать |
|---|---|---|
| transfer amount exceeds balance | В вашем кошельке недостаточно этого токена | Уменьшите сумму или добавьте токены |
| insufficient allowance | Контракту не разрешено расходовать достаточное количество токенов | Отправьте новую транзакцию подтверждения с более высоким разрешением |
| transfer amount exceeds allowance | Разрешённая сумма меньше запрошенной суммы расходования | Увеличьте разрешение и повторите попытку |
| transfer to the zero address | Адрес назначения недействителен | Проверьте и исправьте адрес получателя |
| amount must be nonzero | Вы ввели ноль или недопустимую итоговую сумму | Введите допустимое положительное количество токенов |
| Out of Gas | Лимит газа был слишком низким для выполнения | Повторно отправьте транзакцию с более высоким лимитом газа |
| Bad Instruction | При выполнении контракта произошёл логический сбой | Изучите правила токена или протокола; при необходимости свяжитесь с проектом |
Если вы видите статус ошибки без понятного сообщения, проверьте входные данные транзакции, контракт назначения и журналы в обозревателе блоков. Обычно это позволяет определить, связана ли ошибка с настройками кошелька или с самим контрактом.
Это самый простой тип ошибки. Перед разрешением перевода контракт токена ERC-20 проверяет, достаточно ли у отправителя токенов. Если сумма превышает ваш баланс, контракт отклоняет транзакцию.
Это может произойти, даже если кажется, что на кошельке достаточно средств, поскольку пользователи часто путают:
Например, у вас может быть достаточно USDC, но недостаточно ETH для оплаты газа в сети Эфириума. В таком случае проблема заключается не только в количестве токенов. Вам нужны как переводимые токены, так и достаточное количество нативной монеты для оплаты выполнения.
Проблемы с разрешением возникают, когда протокол пытается переместить токены из вашего кошелька через transferFrom(). Это стандартная процедура для обменов, внесения средств в хранилища, кредитования и многих операций через мосты. Если вы не предоставили контракту разрешение или разрешённая сумма слишком мала, транзакция завершится ошибкой.
Обычное решение выглядит просто:
Некоторые пользователи разрешают точную сумму, а затем забывают, что для второй или более крупной транзакции требуется большее разрешение. Другие предоставили разрешение старому адресу контракта, тогда как dApp теперь использует новый контракт маршрутизатора или хранилища. В обоих случаях расходующий контракт не имеет права перемещать токены, поэтому блокчейн отклоняет действие.
Перед подтверждением разрешения всегда проверяйте адрес расходующего контракта в запросе кошелька. Разрешение исправит неудачную транзакцию только в том случае, если расходователь является правильным контрактом.
Проблемы с газом обычно делятся на две категории: проблемы с лимитом газа и недостаточная конкурентоспособность комиссии.
Если лимит газа слишком низкий, выполнение останавливается до завершения, а транзакция заканчивается ошибкой нехватки газа. В этом случае перевод токенов не выполняется, но газ, потраченный во время попытки выполнения, всё равно теряется.
Если максимальная или приоритетная комиссия слишком мала относительно текущих условий сети, транзакция может долго оставаться в ожидании, быть отброшена узлами или позднее заменена. Это не то же самое, что ошибка выполнения контракта, но с точки зрения пользователя всё равно выглядит так, будто транзакция «не прошла».
Практические способы решения:
Да. Это один из наиболее важных структурных рисков токенов ERC-20. Стандарт не требует от принимающих контрактов реализации специальной функции получения токенов. Поэтому некоторые контракты могут получать токены на уровне адреса, но не иметь внутренней логики для их обработки или возврата.
Особенно распространены два рискованных случая:
Во многих сценариях внесения средств правильный порядок действий не предполагает прямой вызов transfer(). Вместо этого dApp ожидает вызов approve(), после которого следует обращение к контракту, забирающему средства через transferFrom(). Если обойти этот процесс и вручную отправить токены на контракт, активы могут оказаться заблокированными.
Именно поэтому адреса для внесения средств и адреса контрактов нельзя считать взаимозаменяемыми.
Несоответствие сети — ещё один распространённый источник путаницы. Токен с одним и тем же тикером может существовать в нескольких блокчейнах, а кошельки нередко показывают похожие балансы в Эфириуме и других сетях EVM. Если попытаться взаимодействовать с протоколом в неправильной сети, транзакция может сразу завершиться ошибкой либо активы не появятся там, где вы их ожидаете.
Перед повторной отправкой проверьте следующее:
Из-за несоответствия сети также может показаться, что транзакция не удалась, хотя на самом деле вы просто просматриваете не тот блокчейн в кошельке или обозревателе.
Каждая транзакция Эфириума из одного кошелька использует nonce, который служит порядковым номером. Если две транзакции пытаются использовать один и тот же nonce, одна из них может заменить другую, предложив более высокую комиссию. В результате появляются такие статусы, как ожидание, отбрасывание или замена.
Распространённые ситуации:
Такие ситуации не всегда означают, что контракт токена отклонил перевод. Иногда исходная транзакция просто не была завершена, поскольку её место заняла другая. В этом случае перед отправкой новых транзакций проверьте окончательную историю nonce в обозревателе блоков.
Да. Не все неудачные транзакции происходят по вине пользователя. Некоторые контракты токенов содержат ограничения, способные блокировать переводы, даже если баланс, разрешение и газ указаны правильно.
Примеры:
Если транзакция продолжает завершаться ошибкой несмотря на правильные настройки кошелька, прочитайте документацию токена или изучите последние сообщения пользователей. Общая ошибка вроде Bad Instruction часто указывает на логику контракта, а не на ошибку кошелька.
Простой контрольный список обычно помогает решить проблему быстрее, чем попытки угадать причину.
Если вы не уверены, были ли средства действительно перемещены при неудачной попытке, сначала проверьте окончательный ончейн-статус и баланс токенов после подтверждения хеша транзакции. При обычной отмене токены остаются в вашем кошельке.
Профилактика в основном сводится к соблюдению правильного порядка действий. Небольшие проверки перед подписанием транзакции помогают исключить большинство предотвратимых ошибок.
| Перед отправкой | Почему это полезно |
|---|---|
| Сначала проверьте сеть | Помогает избежать несоответствия блокчейна и неподдерживаемых депозитов |
| Храните в кошельке нативную монету для оплаты газа | Предотвращает ошибки отправки, связанные с газом |
| Проверяйте адреса получателей и контрактов | Снижает риск блокировки или ошибочной отправки токенов |
| Проверяйте разрешение перед действиями в dApp | Предотвращает ошибки расходования токенов контрактом |
| Не снижайте лимит газа вручную | Снижает вероятность ошибки нехватки газа |
| Дождитесь подтверждения перед повторной попыткой | Помогает избежать конфликтов nonce и замещения транзакций |
Пользователям, которые активно перемещают активы между кошельками, протоколами и биржевыми аккаунтами, также следует чётко учитывать, какие активы находятся в блокчейне, а какие — на кастодиальных платформах. Такое разделение предотвращает многие недоразумения, связанные с «пропавшими токенами».
Эта статья предназначена исключительно для общей информации и не является финансовой, юридической или инвестиционной рекомендацией.
Этот контент предоставляется исключительно в общих информационных целях и не является финансовым, инвестиционным, юридическим или налоговым советом. Любые мероприятия, вознаграждения, онлайн-акции или связанная с ними информация, упомянутые в настоящем документе, не должны рассматриваться как рекомендация, приглашение к покупке, продаже, торговле или иной сделке с какими-либо криптоактивами. Криптоактивы очень волатильны и могут привести к убыткам. Доступность услуг, продуктов WEEX и связанных с ними событий может варьироваться в зависимости от региона. Вы несете ответственность за обеспечение того, чтобы ваше участие соответствовало применимым местным законам и нормативным актам.

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