Ошибка OUT_OF_ENERGY: почему перевод USDT не проходит
Вы жмёте «отправить», кошелёк думает несколько секунд и показывает красное: OUT_OF_ENERGY,
«недостаточно энергии» или просто «транзакция не выполнена». Баланс USDT на месте, интернет работает,
адрес правильный. Разберёмся, что произошло на самом деле, потому что ошибка не про деньги,
а про ресурс сети.
Что вообще случилось
Перевод USDT TRC-20 — это не «отправка монеты», как в биткоине. Это вызов метода у смарт-контракта
Tether: сеть выполняет код, который уменьшает одну запись баланса и увеличивает другую. За выполнение
кода TRON берёт плату ресурсом под названием энергия. Если энергии на вашем адресе нет,
сеть сжигает эквивалент в TRX. Если и TRX не хватает — или хватает, но вы сами ограничили расход, —
виртуальная машина останавливается на полпути и возвращает OUT_OF_ENERGY.
Ключевое отличие от «недостаточно средств»: транзакция попала в блок. Она отработала, упёрлась в потолок ресурса и откатилась. Изменения в балансе USDT отменены, а вот потраченная энергия и сожжённые TRX — нет. Это неприятно, но так устроена любая сеть со смарт-контрактами: вычисления уже произведены, значит, за них уже заплачено.
Повторять неудачную отправку «на авось» — самый дорогой способ решить проблему. Каждая попытка сжигает TRX и ничего не меняет. Сначала исправьте причину, потом отправляйте.
Четыре причины, и все чинятся по-разному
1. Энергии нет вообще, а TRX мало
Самый частый случай. На кошельке лежат, скажем, 3 TRX и 500 USDT. Сжигание требует примерно — TRX за один перевод — денег не хватает, транзакция падает. Лечение: либо докинуть TRX, либо арендовать энергию. Аренда дешевле в разы, потому что вы платите рыночную цену ресурса, а не штрафной курс сжигания.
2. Энергия есть, но её меньше, чем нужно именно этому переводу
Классическая ловушка: вы арендовали 65 000 энергии и отправляете USDT на адрес, где USDT ещё никогда не было. Такому переводу нужно примерно вдвое больше — сеть создаёт новую запись баланса, а не правит существующую. Энергия кончается на середине, и вы получаете ту же ошибку. Как отличить один случай от другого, подробно разобрано на странице сколько энергии нужно для перевода USDT.
3. Слишком низкий Fee Limit
В настройках транзакции у большинства кошельков есть параметр Fee Limit — потолок того, сколько TRX вы разрешаете сжечь. Он существует как страховка от кривого контракта, который съест весь баланс. Но если потолок стоит ниже, чем реальная стоимость перевода, вы своими руками обрываете выполнение. В TronLink это видно в расширенных настройках отправки; поднимите значение до 30–100 TRX и повторите. Деньги при этом не тратятся: лимит — это максимум, а не сумма.
4. Энергия пришла не на тот адрес
Вы арендовали энергию, но указали адрес получателя USDT вместо своего собственного. Энергию тратит отправитель, а не получатель, — делегирование должно приходить на кошелёк, с которого вы шлёте USDT. Проверить просто: откройте свой адрес в Tronscan, вкладка с ресурсами покажет, сколько энергии вам делегировано и до какого момента.
Как исправить за две минуты
- Откройте свой адрес в Tronscan и посмотрите текущий остаток энергии.
- Определите, есть ли USDT у получателя. Есть — вам нужно около 65 000 энергии; нет — около 131 000.
- Возьмите нужный объём в аренду на час. Энергия делегируется на ваш адрес, никакие ключи для этого не нужны.
- Проверьте, что Fee Limit в кошельке не занижен, и отправьте перевод заново.
65 000 энергии закрывают один перевод USDT, 131 000 — перевод на кошелёк, где USDT ещё не было. Выдача на ваш адрес за секунды, без регистрации. Живая цена и калькулятор.
Почему нельзя просто «положить побольше TRX»
Можно, и перевод пройдёт. Вопрос в цене. Сжигание — это аварийный режим сети: она берёт за
энергию фиксированную ставку по параметру energy_fee, и эта ставка заметно выше
рыночной цены аренды. Разница на одном переводе — единицы TRX, на сотне переводов — уже ощутимая
сумма. Расчёт с цифрами есть на странице
сжигать, стейкать или арендовать.
Соседние ошибки, которые путают с этой
OUT_OF_BANDWIDTH или «недостаточно пропускной способности» — это про другой ресурс.
Bandwidth оплачивает размер транзакции в байтах, и его бесплатной суточной нормы обычно хватает
на один-два перевода. Если норма исчерпана, сеть возьмёт за байты небольшую сумму в TRX — доли
трикса. Разница между ресурсами разобрана в статье
Energy и Bandwidth.
REVERT без упоминания энергии — это уже сам контракт отказался выполнять операцию:
например, вы пытаетесь отправить больше, чем есть на балансе, или адрес получателя в чёрном списке
эмитента. Энергия тут ни при чём, и аренда не поможет.
«Транзакция не найдена» сразу после отправки — обычно просто задержка индексации в кошельке. Подождите полминуты и обновите.
Частые вопросы
Вернутся ли TRX, сожжённые при неудачной транзакции?
Нет. Сеть уже выполнила вычисления до момента, когда ресурс кончился, и плата за них не возвращается. Это одна из причин сначала разобраться с энергией, а потом нажимать «отправить».
Сколько энергии нужно, чтобы ошибка больше не повторилась?
Около 65 000 на перевод, если у получателя USDT уже есть, и около 131 000, если адрес получателя USDT ещё не видел. Если сомневаетесь — берите больший объём.
Может ли ошибка возникнуть при отправке TRX, а не USDT?
Нет. Перевод самого TRX не вызывает смарт-контракт и энергии не требует — ему нужен только bandwidth. Ошибка про энергию появляется только на токенах TRC-20 и других контрактах.
Я арендовал энергию, а ошибка осталась. Почему?
Три обычные причины: энергия делегирована не на тот адрес, объёма не хватает для перевода на пустой кошелёк или занижен Fee Limit. Проверьте всё три по списку выше, а если не помогло — напишите в @tronfor_support.
Не хотите разбираться — просто возьмите энергию
Бот сам подскажет, какой объём нужен под ваш случай, и выдаст его на ваш адрес за секунды.