OUT_OF_ENERGY в TRON: почему сгорел TRX и как исправить
Коротко: OUT_OF_ENERGY в TRON — транзакция исчерпала лимит энергии, контракт откатился, USDT остались у вас, а потраченный TRX сгорел. Причины — мало TRX на балансе (лимит считается от него), низкий fee_limit или недостаточно арендованной энергии. На 21.10.2026 перевод USDT требует около 64–131 тыс. энергии, либо 6,4–13 TRX сжигания.
Эта ошибка неприятна тем, что вы платите за неудачу. Ниже — как она устроена, как прочитать её в обозревателе и что сделать, чтобы второй раз не потерять TRX. Остальные коды ошибок собраны в справочнике ошибок транзакций TRON.
Почему возникает OUT_OF_ENERGY?
Перевод USDT — это вызов смарт-контракта. Каждая инструкция виртуальной машины TRON стоит определённое количество энергии. Перед выполнением сеть определяет, сколько энергии транзакции позволено потратить, — это лимит. Если работа не уложилась в лимит, выполнение останавливается и откатывается с результатом OUT_OF_ENERGY.
Лимит определяется меньшим из двух значений:
- fee_limit — потолок, который ставит кошелёк при отправке (в SUN). По документации TRON о плате за ресурсы, он ограничивает всю энергию вызова — и свою, и оплаченную сжиганием TRX;
- что вы реально можете оплатить — ваша доступная энергия плюс энергия, которую можно купить сжиганием свободного TRX с баланса по цене 100 SUN за единицу (на 21.10.2026).
На практике у обычного пользователя «узкое место» почти всегда второе: TRX на балансе мало.
Как именно сгорает TRX при этой ошибке?
Разберём на цифрах. Вы отправляете USDT другу, у которого USDT уже есть. Нужно около 64 285 энергии. Своей энергии нет, на балансе 3 TRX.
- 3 TRX = 3 000 000 SUN. По 100 SUN за единицу это максимум 30 000 энергии.
- Контракт начинает выполняться и расходует энергию.
- На отметке около 30 000 энергия заканчивается, выполнение откатывается.
- Сеть сжигает TRX за потраченную энергию — по сути весь доступный баланс в пределах лимита.
Итог: USDT на месте, TRX почти ноль, перевод не прошёл. Чтобы он прошёл, на балансе нужно было около 6,43 TRX плюс плата за bandwidth, если бесплатные 600 единиц в сутки уже потрачены.
| Ситуация | Доступно энергии | Нужно | Результат |
|---|---|---|---|
| 0 энергии, 3 TRX, получатель с USDT | ≈ 30 000 | ≈ 64 285 | OUT_OF_ENERGY, сгорело ≈ 3 TRX |
| 0 энергии, 8 TRX, получатель с USDT | ≈ 80 000 | ≈ 64 285 | Успех, сгорело ≈ 6,43 TRX |
| 0 энергии, 8 TRX, пустой адрес | ≈ 80 000 | ≈ 130 285 | OUT_OF_ENERGY, сгорело ≈ 8 TRX |
| 65 000 аренды, 0,5 TRX, пустой адрес | ≈ 70 000 | ≈ 130 285 | OUT_OF_ENERGY, аренда израсходована |
| 131 000 аренды, 0 TRX, пустой адрес | ≈ 131 000 | ≈ 130 285 | Успех, TRX не сгорел |
Четвёртая строка — частая ошибка при аренде: энергию заказали «как на обычный перевод», а получатель оказался новым. Как отличить эти два случая и почему стоимость различается вдвое, объясняет статья о том, сколько энергии нужно на перевод USDT.
Как увидеть OUT_OF_ENERGY в Tronscan?
Откройте транзакцию по хэшу в Tronscan. Смотрите на поля:
- Результат —
OUT_OF_ENERGYвместоSUCCESS. Кошельки часто пишут просто «Ошибка» или «Failed», точная причина видна только здесь. - Потребление ресурсов — сколько энергии использовано и сколько TRX сожжено на её покупку.
- Fee limit — какой потолок поставил кошелёк.
- Переводы токенов — при OUT_OF_ENERGY движения USDT нет.
По этим цифрам легко понять причину. Если сожжено почти столько, сколько было TRX на балансе, — проблема в балансе. Если сожжено ровно столько, сколько fee_limit, а TRX ещё оставались, — кошелёк поставил слишком низкий потолок. Если энергия использована почти вся, но TRX не тратился, — не хватило арендованной энергии.
Чем OUT_OF_ENERGY отличается от похожих ошибок?
| Ошибка или сообщение | Когда | Списано ли что-то |
|---|---|---|
OUT_OF_ENERGY | Транзакция в блоке, лимит энергии кончился | Да, энергия или TRX за выполненную часть |
REVERT | Контракт сам отказал (например, мало токенов, адрес заблокирован) | Да, за выполненную часть |
| «Недостаточно TRX» в кошельке | Кошелёк не отправил транзакцию | Нет, транзакции не было |
| Нехватка bandwidth | Узел отклонил транзакцию до блока | Нет |
Если кошелёк предупредил о нехватке TRX и ничего не отправил — это другая ситуация, она разобрана в статье «Недостаточно TRX для комиссии». OUT_OF_ENERGY хуже: транзакция уже попала в блок, и ресурсы потрачены.
Как повторить перевод, чтобы он прошёл?
Не нажимайте «отправить ещё раз» сразу. Если условия те же, ошибка повторится, и сгорит ещё TRX. Сначала устраните причину.
- Проверьте получателя. Есть ли на его адресе USDT? От этого зависит, нужно 65 или 131 тысяча энергии.
- Обеспечьте энергию. Либо пополните TRX с запасом (7–8 TRX для получателя с USDT, 14–15 для пустого адреса), либо арендуйте энергию на нужный объём.
- Проверьте fee_limit. Если ваш кошелёк позволяет его задать и стоит низкое значение, поднимите. Сам fee_limit ничего не стоит — это только потолок, сжигается фактический расход.
- Отправьте в пределах срока аренды. Арендованная энергия делегируется на время; если отложить перевод, она может вернуться владельцу.
- Проверьте результат. После отправки откройте хэш в Tronscan и убедитесь, что статус
SUCCESS, а в переводах токенов есть ваш USDT.
Можно ли вообще избежать OUT_OF_ENERGY?
Да, если перед каждым переводом на адресе есть энергия на полный объём операции. Для разовых переводов достаточно аренды на 15 минут или час перед отправкой. Для регулярных проще держать запас энергии постоянно — вручную или в автоматическом режиме, который пополняет энергию после каждого перевода.
Если вы отправляете переводы из своего кода через API или TronWeb, fee_limit задаёте вы сами. Ставьте его с запасом относительно ожидаемого расхода: для перевода USDT на пустой адрес при цене энергии 100 SUN это минимум 13,03 TRX, то есть 13 030 000 SUN, а лучше 15–20 TRX. Перед отправкой полезно оценить расход вызовом triggerconstantcontract: он выполняет контракт «вхолостую» и возвращает нужную энергию, ничего не списывая. Именно так получены цифры 64 285 и 130 285 в этой статье. Учтите, что динамическая энергия контракта меняется, поэтому оценку стоит делать непосредственно перед отправкой, а не раз в месяц.
Второе правило — не держать на рабочем адресе «почти хватает». 5–6 TRX выглядят как достаточная сумма, но для перевода на новый адрес это гарантированный OUT_OF_ENERGY. Если перевод не прошёл, а вы не уверены, что USDT на месте, пройдите проверку из статьи «USDT отправлен, но не пришёл».
Отправьте следующий перевод с арендованной энергией
Сейчас 65 000 энергии на час — 3,15 TRX. Энергия на ваш адрес за секунды, ключи не нужны.
Частые вопросы
Что означает OUT_OF_ENERGY в TRON?
Транзакции не хватило энергии в пределах её лимита: смарт-контракт начал выполняться, лимит кончился, и выполнение откатилось. USDT остаются у вас, а израсходованная энергия или сожжённый TRX не возвращаются.
Вернут ли сгоревший TRX после OUT_OF_ENERGY?
Нет. Сеть списывает ресурсы за уже выполненную работу, даже если результат откатился. Обратиться за возвратом некуда: это правило протокола, а не решение кошелька.
Пропали ли мои USDT после ошибки?
Нет. При OUT_OF_ENERGY перевод токена не выполняется, баланс USDT остаётся на вашем адресе. Проверьте его в Tronscan по адресу, а не по транзакции.
Сколько энергии нужно, чтобы перевод USDT не упал?
На 21.10.2026 — около 64 285 энергии получателю, у которого уже есть USDT, и около 130 285 — на пустой адрес. Берите с небольшим запасом: цифра зависит от динамической энергии контракта.
Может ли OUT_OF_ENERGY случиться, если я арендовал энергию?
Да, если энергии оказалось меньше, чем нужно (заказали 65 тыс. на пустой адрес), срок аренды кончился до отправки или энергию частично съела другая транзакция. Тогда недостающее сеть пытается добрать сжиганием TRX.