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

Как рассчитывается комиссия за перевод USDT (TRC-20) в TRON

Кошельки показывают одну цифру и называют её комиссией. В TRON всё устроено иначе: сеть берёт три платы по отдельности, по правилам, которые можно прочитать прямо из блокчейна. Как только вы умеете их считать, цифра перестаёт скакать неожиданно.

Формула

Итог = израсходованная Energy × цена энергии, плюс байты транзакции × цена Bandwidth, плюс комиссия за активацию, если адрес назначения ещё не существует в сети. Каждое слагаемое равно нулю, если соответствующего ресурса у вас достаточно.

ПлатаПараметрТекущее значение
EnergygetEnergyFee100 сан = 0,0001 TRX за единицу
BandwidthgetTransactionFee1 000 сан = 0,001 TRX за байт
Бесплатный BandwidthgetFreeNetLimit600 единиц в сутки
Активация нового аккаунтаgetCreateNewAccountFeeInSystemContract1 000 000 сан = 1 TRX

Это параметры управления сетью, а не константы. Цену энергии, в частности, уже несколько раз понижали голосованием. Читайте их вживую, а не доверяйте таблице из статьи — как это сделать, в следующем разделе.

Как прочитать параметры самому

Все значения выше публичны. Вызовите getchainparameters на любой ноде TRON — и получите текущий набор пар «ключ — значение» в санах.

  1. Обратитесь к эндпоинту wallet/getchainparameters на публичной ноде.
  2. Найдите в ответе getEnergyFee. Разделите на 1 000 000, чтобы перевести саны в TRX за единицу энергии.
  3. То же самое для getTransactionFee — это ваша цена за байт Bandwidth.
  4. Если что-то из этого изменилось с прошлой проверки, изменились и все ваши расчёты, построенные на этих числах.

Слагаемое Energy

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

  • Перевод на адрес, который уже держит USDT, расходует около 64 285 энергии — примерно 6,43 TRX по текущей цене.
  • Перевод на адрес, который USDT никогда не держал, расходует около 130 285 — примерно 13 TRX, — потому что контракту нужно выделить новую ячейку хранилища.
  • Сумма перевода не влияет ни на что. Десять долларов и сто тысяч стоят одинаково.

Чтобы получить точную цифру, а не оценку, симулируйте вызов. Запрос triggerconstantcontract к контракту USDT с вашими реальными отправителем и получателем возвращает energy_used и ничего не отправляет в сеть. Умножьте на цену энергии — и вот точная стоимость именно этого перевода.

Слагаемое Bandwidth

Bandwidth считается по сериализованному размеру транзакции. Перевод TRC-20 занимает около 345 байт, значит требует около 345 Bandwidth.

Каждому аккаунту ежедневно даётся 600 бесплатных Bandwidth. Их хватает на первый перевод и слишком мало на второй — поэтому дневная серия сбоев обычно начинается со второго перевода. Сверх лимита платите 0,001 TRX за байт, то есть около 0,345 TRX за перевод.

Слагаемое активации

TRON-адрес не существует в сети, пока на него что-нибудь не отправят. Создание стоит 1 TRX, списывается с отправителя и добавляется к Energy и Bandwidth самого перевода.

Это свойство адреса назначения, а не USDT. Списывается один раз за всю жизнь адреса и обычно застаёт врасплох при первом платеже на новый кошелёк.

Итоги по случаям

СлучайEnergyBandwidthАктивацияИтого
Постоянный получатель, первый перевод за сутки~6,43 TRXбесплатно~6,43 TRX
Постоянный получатель, позже в тот же день~6,43 TRX~0,35 TRX~6,78 TRX
Получатель, впервые получающий USDT~13 TRXбесплатно~13 TRX
Совсем новый, неактивированный адрес~13 TRXбесплатно1 TRX~14 TRX
Любой из вариантов с арендованной энергиейцена арендыбесплатно или ~0,35 TRXкак вышезаметно ниже сжигания

Последняя строка и есть смысл аренды: энергия — крупное слагаемое и единственное, которое реально можно уменьшить.

Число, которое кошельки показывают, но которое не комиссия

Перед подписью вызова контракта кошелёк просит задать fee_limit. Это потолок того, что вы готовы потратить, а не списание: платите вы за то, что реально израсходовало исполнение.

Слишком низкий лимит приводит к остановке на середине исполнения: транзакция падает, а израсходованное всё равно списывается. Щедрый лимит при успешном вызове не стоит ничего — поэтому запас почти всегда правильный выбор.