ENЛичный кабинет

Почему не проходит перевод USDT (TRC-20): руководство по диагностике

За фразой «перевод не прошёл» скрываются восемь не связанных между собой проблем с восемью разными решениями. Применить не то — дорого: за несколько из них списывают заново при каждой попытке. Начните с того, чтобы понять, какая у вас.

Сначала определите тип отказа

Всё дальнейшее зависит от одного вопроса: попала ли транзакция в блокчейн вообще?

  1. Если у вас есть хеш транзакции, вставьте его в TronScan. Страница открылась, и поле Status называет отказ — переходите к разделу про блокчейн ниже.
  2. Если хеша нет или обозреватель его не знает, транзакция до сети не дошла — переходите к разделу про неотправленные.
  3. Если обозреватель показывает SUCCESS с приложенным переводом TRC-20, перевод состоялся и проблема на стороне получателя — переходите к последнему разделу.

Транзакция в блокчейне и помечена как failed

РезультатПричинаСписали?
OUT_OF_ENERGYВызов исчерпал лимит энергии на середине исполненияДа
REVERTКонтракт отказал — обычно не хватает баланса USDT либо нет allowance для контракта, тратящего от вашего имениДа
OUT_OF_TIMEИсполнение превысило лимит времени ноды, обычно под нагрузкой сетиДа
Адрес в чёрном спискеTether может замораживать адреса на уровне контракта; переводы на такой адрес и с него отклоняютсяДа

Все четыре списывают комиссию. Это не ошибка: сеть выполнила заказанное вами вычисление и отменить его выполнение не может. Повтор без изменений сжигает комиссию второй раз.

OUT_OF_ENERGY встречается заметно чаще остальных, и ей посвящён отдельный разбор. REVERT чаще всего ошибочно принимают за проблему с энергией: добавление энергии не меняет ничего, потому что контракт отказал по своим причинам.

Транзакция не дошла до сети

Эти отказы происходят до исполнения кода, поэтому ничего не списывается — хоть какое-то утешение.

ПричинаКак распознатьЧто делать
Нет Bandwidth и нет TRXКошелёк отклоняет транзакцию по размеру ещё до исполненияДержите немного TRX: 600 бесплатных единиц за сутки израсходованы
Адрес назначения не активированОбозреватель сообщает, что аккаунт не существуетСначала отправьте 1 TRX либо примите комиссию за активацию
Слишком низкий fee_limitКошелёк предупреждает, либо расход упирается ровно в лимитПоднимите: неиспользованный лимит не стоит ничего
Совсем не та сетьОтправили TRC-20 на депозитный адрес ERC-20 или BEP-20Немедленно свяжитесь с получателем; возврат зависит целиком от него

Случай с не той сетью — единственный по-настоящему серьёзный на этой странице. Ничто в TRON тут не поможет: средства лежат в TRON на адресе, владелец которого может и не иметь от него ключей TRON. Биржи иногда возвращают такое за комиссию, а иногда не могут.

Прошло успешно, но получатель говорит, что ничего нет

Если обозреватель показывает SUCCESS с переводом TRC-20 на нужный адрес и нужную сумму, сеть свою работу сделала. Оставшиеся причины — на стороне получателя.

  • Кошелёк не отображает токен. Многие кошельки прячут токены TRC-20, пока их не добавят вручную: баланс есть, интерфейс его не показывает.
  • Получатель смотрит не на тот адрес либо не на ту сеть внутри того же кошелька.
  • Средства ушли на депозитный адрес биржи с минимальной суммой зачисления или с задержкой.
  • В адресе опечатка в один символ, и он ушёл на реальный, но другой аккаунт. Сверьте адрес в обозревателе с задуманным посимвольно.

Отправьте получателю хеш транзакции, а не описание. Это закрывает вопрос сразу и без переписки.

Диагностика за две минуты

  1. Откройте хеш в TronScan и прочитайте Status.
  2. Если отказ — прочитайте строку результата и сопоставьте с таблицами выше.
  3. Посмотрите страницу адреса получателя: держит ли он USDT и активирован ли. Эти два факта объясняют большинство отказов по энергии ещё до того, как вы посмотрите на что-то ещё.
  4. Проверьте свою панель Resources: доступные Energy и Bandwidth — именно доступные, а не общие.
  5. Перед повтором что-нибудь измените. Повтор с теми же ресурсами даст тот же отказ и то же списание.

Как предотвратить бо́льшую часть

  • Считайте энергию от получателя, а не от суммы, и для любого нового исходите из дорогого сценария.
  • Держите 5–10 TRX на любом отправляющем кошельке: этого хватает на Bandwidth, активацию и округления.
  • Проверяйте, активирован ли адрес получателя и держит ли он USDT, до первого платежа, а не после.
  • Для автоматической отправки симулируйте каждый вызов и считайте от результата, а не от зашитой константы.

Четыре привычки снимают практически всё с этой страницы, кроме случая с не той сетью, — а он предотвращается проверкой сети до вставки адреса, а не после.