Разбор комиссий TRC-20: энергия, bandwidth и что на самом деле списывается

2026-04-06

Два ресурса, одна транзакция

Каждый перевод TRC-20 в TRON расходует два разных ресурса: bandwidth и энергию. Они тарифицируются отдельно, берутся из разных пулов и имеют совершенно разные механизмы пополнения. Большинство разработчиков понимают один или другой, но именно во взаимодействии между ними стоимость либо остаётся управляемой, либо выходит из-под контроля.

Bandwidth покрывает стоимость сырых байт при широковещательной передаче транзакции в сеть. Энергия покрывает стоимость исполнения логики смарт-контракта на VM. Простому переводу TRX нужен только bandwidth. Переводу TRC-20, который вызывает функцию transfer(address,uint256) у контракта токена, нужны оба ресурса.

Bandwidth: простая половина

Каждый аккаунт TRON получает 600 бесплатных единиц bandwidth в сутки через базовое выделение. Стандартная транзакция перевода TRC-20 обычно весит около 345 байт, что соответствует примерно 345 единицам bandwidth (сеть берёт 1 единицу bandwidth за байт данных транзакции, включая подписи и поля memo).

Если у аккаунта достаточно бесплатного дневного bandwidth или TRX, застейканных под bandwidth, по этой статье транзакция ничего не стоит. Если пул bandwidth пуст, сеть сжигает TRX напрямую по ставке 0.001 TRX за единицу bandwidth (1000 SUN за байт). Для транзакции в 345 единиц это 0.345 TRX, сжигаемых с адреса отправителя, без всякого стейкинга.

Бесплатные 600 единиц в сутки сбрасываются в 00:00 UTC. Если вы делаете переводы небольшого объёма, в стоимость bandwidth вы редко упрётесь вообще. Те, кто отправляет много, обычно стейкают TRX под bandwidth, а не сжигают, потому что доходность от стейкинга покрывает больше транзакций на один TRX, чем даёт ставка сжигания.

Энергия: где живёт реальная стоимость

Перевод USDT TRC-20 расходует примерно 65 000 энергии. Эта цифра получается из исполнения EVM-совместимого байт-кода внутри виртуальной машины TRON: чтения и записи в mapping балансов контракта, эмиссия события для лога Transfer и внутренние проверки безопасности. Точное число может слегка отличаться в зависимости от того, записываются ли слоты хранения впервые (cold) или обновляются (warm), но 65 000 это стандартная цифра для типичного перевода USDT между двумя активными адресами. Перевод получателю, у которого текущий баланс USDT равен нулю, примерно удваивается до около 130 000 энергии, потому что выделяется новый слот хранения.

У энергии два источника: ваши собственные застейканные TRX или арендованная (делегированная) энергия от третьей стороны. Стейкинг TRX даёт пропорциональную долю в общем пуле энергии сети, а пул линейно восстанавливается до 100% за 24 часа. Точное соотношение энергии на застейканный TRX зависит от общего объёма стейка в сети и со временем меняется. Чтобы восстановить 65 000 энергии только из собственного стейка, нужно заблокировать существенный объём TRX, и именно поэтому существует аренда энергии.

Что происходит, когда энергия заканчивается

Если транзакции нужно 65 000 энергии, а у аккаунта доступно недостаточно, сеть не выполняет молча частичное исполнение. Вместо этого она проверяет fee_limit у транзакции и сжигает TRX с вашего аккаунта, в пределах этого лимита, чтобы покрыть нехватку энергии, а потом исполняет всю транзакцию. Если дефицит превысит ваш fee_limit, транзакция упадёт до того, как будут зафиксированы какие-либо изменения состояния.

Это сценарий, которого вы хотите избежать: платить и за свою застейканную энергию, и за сожжённые сверх неё TRX, или хуже того, ронять транзакцию полностью из-за слишком низкого fee_limit. Текущую стоимость в TRX за покрытие 65 000 энергии можно посмотреть на странице с ценами перед выбором стратегии.

Stake 2.0 изменил работу делегирования

До Stake 2.0 (активирован в основной сети в апреле 2023 года) стейкинг и делегирование были связаны: владелец ресурса вызывал freezeBalance и указывал адрес получателя напрямую, заморозка была привязана к этому получателю, и в модели не было гибкости, нужной для рынков ресурсов.

Stake 2.0 ввёл freezeBalanceV2 и отделил действие стейкинга от действия делегирования. Теперь вы стейкаете TRX в личный пул энергии или bandwidth, потом отдельно делегируете этот ресурс через delegateResource. Это означает:

  • Делегирования по умолчанию отзывные и могут быть переназначены без разморозки. Есть необязательный флаг lock: если установить его в true, делегирование удерживается минимум на минимальный сетевой период блокировки (сейчас 3 дня). Без этого флага вы можете забрать делегирование в любой момент.
  • 14-дневный период ожидания разморозки относится к самому базовому стейку TRX, когда вы его выводите, а не к делегированию.
  • Платформы аренды энергии могут циклически распределять делегирования по многим адресам-получателям из одной застейканной позиции.

Ончейн, когда платформа аренды, например tronenergyrent.com, делегирует энергию на ваш адрес, делегированная сумма отражается в состоянии вашего аккаунта, видна через wallet/getaccount как acquired_delegated_frozenV2_balance_for_energy. Соответствующая полезная энергия добавляется к лимиту энергии вашего аккаунта и сразу доступна для расходования без каких-либо действий с вашей стороны.

Стоимость аренды против стоимости сжигания

Аренда тарифицируется по длительности: 1 час, 1 день, 3 дня, 30 дней. Тариф на 1 час самый дешёвый в абсолютном выражении TRX, тариф на 30 дней самый дорогой, между ними 1 день и 3 дня. Цена отражает то, как долго собственный стейк TRX платформы заблокирован на вашем адресе: длиннее окно = больше связанного капитала = больше списанных TRX. Актуальные цифры по тарифам в TRX смотрите в разделе цен.

По сравнению со сжиганием, аренда почти всегда выигрывает у тех, кто планирует заранее. Сжигание полных 65 000 энергии по динамической ставке сети устроено просто, но зависит от текущей стоимости сжигания, которая может резко двигаться при изменении общего спроса на энергию в сети. Аренда даёт фиксированную стоимость в TRX в момент заказа.

Порядок приоритета ресурсов при исполнении

Когда транзакция исполняется, VM берёт энергию в определённом порядке:

  1. Энергия, обеспеченная ресурсами, делегированными на ваш адрес другими аккаунтами
  2. Энергия из ваших собственных застейканных TRX
  3. TRX, сжигаемые с вашего аккаунта на покрытие оставшегося дефицита (с ограничением по fee_limit)

Этот порядок важен для стратегий аренды. Делегированная энергия расходуется раньше вашего собственного стейка. Поэтому, если у вас есть и собственная застейканная энергия, и арендованная, сначала расходуется арендованная порция. После того, как окно аренды истекает и делегирование возвращается, аккаунт переходит на собственный застейканный баланс, а если и его не хватает, на сжигание TRX.

Bandwidth следует тому же приоритету: сначала бесплатное дневное выделение, потом застейканный bandwidth, потом сжигание TRX. Подмены ресурсов между собой нет: нельзя использовать лишнюю энергию для покрытия нехватки bandwidth.

Чтение состояния ресурсов вашего аккаунта ончейн

Эндпоинт TRON API wallet/getaccountresource возвращает JSON-объект с полями, которые стоит знать:

  • EnergyLimit: общая энергия, доступная сейчас вашему аккаунту из собственного стейка
  • EnergyUsed: энергия, расходованная в текущем 24-часовом окне
  • TotalEnergyLimit: общесетевая суммарная энергия (полезно для расчёта соотношения стейк/энергия)
  • TotalEnergyWeight: общесетевой суммарный вес стейка под энергию
  • freeNetLimit: ваше бесплатное дневное выделение bandwidth (обычно 600)
  • NetLimit: bandwidth из ваших собственных застейканных TRX
  • NetUsed: bandwidth, расходованный сегодня
  • TotalNetLimit, TotalNetWeight: общесетевые суммарные значения по bandwidth

Чтобы узнать, сколько энергии делегировано на ваш адрес другими, запросите wallet/getaccount и прочитайте поле acquired_delegated_frozenV2_balance_for_energy. Для деталей по каждому делегатору, включая срок блокировки, используйте wallet/getdelegatedresourcev2.

Если вы строите систему, которая программно отправляет переводы TRC-20, опрос этих эндпоинтов до отправки в сеть позволяет обнаруживать ситуации низкой энергии до того, как они приведут к неожиданному сжиганию TRX. Документация API описывает, как встроить проверки ресурсов и заказ энергии в автоматизированные процессы.

Почему расход энергии у контрактов токенов разный

Цифра в 65 000 энергии у USDT относится конкретно к контракту Tether по адресу TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t. У других контрактов TRC-20 будет иначе. Контракт токена с дополнительной логикой (механизмы комиссии при переводе, проверки allowance для роутеров или эмиссия событий по нескольким топикам) расходует больше энергии за вызов. Минималистичный контракт в стиле ERC-20 может уложиться в меньше 30 000.

Единственный надёжный способ узнать реальную стоимость энергии у контракта это симулировать транзакцию или посмотреть исторические записи исполнения по этому контракту в блок-эксплорере. Не применяйте цифру USDT универсально ко всем токенам TRC-20.

Хотите сэкономить на комиссиях TRON? Проверьте цены на энергию. Рассчитать цену
Назад к блогу