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

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