Инструкция

Как снизить комиссию за перевод USDT через API : пошаговая инструкция с использованием API TronNRG

Краткая версия: стандартный перевод USDT TRC-20 потребляет 65 000 Energy . Если в вашем кошельке нет Energy , Tron сжигает примерно 13 TRX с вашего баланса, чтобы покрыть его. С помощью API TronNRG вы делегируете ту же Energy за 4 TRX — примерно 70% от каждой отправки. Интеграция состоит из трех HTTP-операций: отправка TRX на адрес отправки, подписание сообщения о владении и отправка POST-запроса на конечную точку /delegate. В этом руководстве описан каждый шаг с кодом и четырьмя наиболее распространенными ошибками, с которыми вы столкнетесь в рабочей среде.

Прежде чем начать

Перед первым вызовом API вам понадобятся три вещи:

Кошелек Tron с TRX . Минимум 4 TRX для оплаты одной делегации. В рабочем режиме — больше, так как вы будете платить за каждый перевод, а периодическое пополнение горячего кошелька проще, чем микрофинансирование при каждой отправке.

Способ подписи сообщений Tron . TronWeb предоставляет доступ к функции tronWeb.trx.signMessageV2() . Python использует tron.trx.sign_message_v2() через tronpy. PHP использует библиотеку iexbase/tron-api. В справочнике API TronNRG есть рабочие примеры на всех четырех языках.

Адрес кошелька получателя. Заранее определитесь, будете ли вы делегировать средства самому кошельку плательщика (простейший случай) или другому кошельку, который вы контролируете (настройка казначейства). Оба варианта подойдут. Подпись связывает их между собой.

Что вы на самом деле строите

Это оболочка для вашей существующей функции отправки USDT . Оболочка выполняет три HTTP-операции (оплата, подписание, получение), ожидает поступления Energy , а затем вызывает вашу существующую логику перевода USDT . Это вся интеграция. Ниже приведено подробное описание каждого шага.

Шаг 1: Отправьте TRX на адрес отправителя.

Отправьте TRX с кошелька, за Energy которого вы платите, на адрес отправки TronNRG . Минимальная сумма — 4 TRX (что эквивалентно 65 000 Energy , достаточно для одного стандартного перевода USDT ). Максимальная сумма на делегирование — 1000 TRX (16,25 млн Energy ). Ценообразование линейное: 16 250 Energy за TRX .

В TronWeb :

Код шага 1

const DISPATCH = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx';
const payment = await tronWeb.trx.sendTransaction(DISPATCH, 4 * 1e6);
// payment.txid is what you will sign in Step 2

Распространенная ошибка: отправка TRX в целых числах, выраженных в SUN, без учета преобразования. TRX имеет 6 знаков после запятой. 4 TRX — это 4_000_000 SUN ( 4 * 1e6 ). Ошибка в этом случае либо приведет к отправке пыли (делегирование будет слишком маленьким), либо к отправке сотен TRX (делегирование пройдет успешно, но вы переплатите гораздо больше, чем нужно). Всегда удваивайте сумму перед передачей в sendTransaction .

Шаг 2: Подпишите сообщение об авторизации.

API требует подтверждения того, что лицо, запрашивающее делегирование, является тем же лицом, которое произвело оплату. Это подтверждение предоставляется путем подписи сообщения закрытым ключом кошелька плательщика. Формат сообщения следующий:

{payment_tx_hash}:{delegate_to_address}

Где payment_tx_hash это идентификатор транзакции (txid), возвращенный на шаге 1, а delegate_to_address — это адрес Tron , на который вы хотите делегировать Energy . В TronWeb :

Код шага 2

const message = `${payment.txid}:${delegateTo}`;
const signature = await tronWeb.trx.signMessageV2(message);

Почему именно такая конструкция: она устраняет необходимость в ключах API , обеспечивая при этом безопасность делегирования. Никто другой не сможет претендовать на ваш платеж, поскольку только вы владеете закрытым ключом. Вы также можете оплачивать с кошелька A и делегировать средства на кошелек B, если вы контролируете кошелек A — это полезно для казначейств, которые финансируют Energy для нескольких отправляющих кошельков от одного плательщика.

Распространенная ошибка: использование неправильного метода подписи. Tron используются два стандарта подписи сообщений — signMessage (устаревший) и signMessageV2 (совместимый с EIP-191). API ожидает V2. Использование устаревшего стандарта приведет к созданию подписи, которая будет выглядеть корректной, но API отклонит ее как несоответствие подписи.

Шаг 3: Заявите о своем праве на делегирование

Отправьте хэш платежа, целевой кошелек и подпись в формате JSON на адрес api.tronnrg.com/delegate .

Код шага 3

const res = await fetch('https://api.tronnrg.com/delegate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
tx_hash: payment.txid,
delegate_to: delegateTo,
signature
})
}).then(r => r.json());

API возвращает три поля, которые вам понадобятся: res.energy (количество делегированной Energy , равное количеству отправленных TRX , умноженному на 16 250), res.delegations[0].tx (хеш транзакции делегирования в блокчейне — сохраните его для своего журнала аудита) и res.ref (идентификатор ссылки, например nrg_d_42 полезный для запросов в службу поддержки).

Делегация попадает в блокчейн примерно через 3 секунды после успешного запроса. С этого момента она удерживается в течение 15 минут. По истечении 15 минут неиспользованная Energy автоматически возвращается в пул TronNRG — частичное возмещение не производится.

Шаг 4: Отправьте сообщение о вашем переводе USDT

Перед отправкой перевода USDT убедитесь, что Energy действительно поступила. Опрашивайте tronWeb.trx.getAccountResources() на целевом кошельке до тех пор, пока EnergyLimit - EnergyUsed не достигнет значения не менее 65 000. Стандартный интервал составляет 500 мс с таймаутом в 30 секунд.

Затем отправьте USDT как обычно. Energy покрывает комиссию. TRX не сжигаются с кошелька отправителя.

Схема шага 4

// Wait for Energy to arrive
await pollUntilEnergyAvailable(delegateTo, 65000, { interval: 500, timeout: 30000 });

// Broadcast the USDT transfer
const contract = await tronWeb.contract().at( USDT _CONTRACT);
const txHash = await contract.transfer(recipient, amount).send({ feeLimit: 20_000_000 });

Всегда устанавливайте feeLimit. Если Energy по какой-то причине не поступит, а ваш код все равно будет отправлен, feeLimit ограничивает максимальное количество TRX которое сеть может сжечь. 20 TRX (выраженных как 20 000 000 SUN) — это разумный потолок, достаточный для покрытия одного перевода в случае сбоя Energy , и ограниченный таким образом, чтобы ошибка не могла опустошить горячий кошелек.

На самом деле это вам сэкономит деньги.

Экономия на каждом переводе фиксирована в TRX : примерно 9 TRX экономится при каждой стандартной отправке USDT (13 TRX предотвращено сжиганием, минус 4 TRX уплаченные за Energy ). Это число не меняется в зависимости от рыночных условий — это свойство сети Tron на уровне протокола. Меняется лишь то, сколько долларов представляют эти 9 TRX .

При реальном объеме бизнеса экономия быстро накапливается:

Ежедневные трансферы Ежегодный расход TRX (без API ) Ежегодная TRX через API Сэкономленные TRX в год Снижение
10 ~47 450 14 600 ~32 850 ~69%
100 ~474 500 146 000 ~328 500 ~69%
500 ~2,37 млн. 730 000 ~1,64 млн. ~69%
1000 ~4,75 млн. 1,46 М ~3,29 млн. ~69%
5000 ~23,7 млн. 7,30 млн. ~16,4 млн. ~69%

Для получения актуальных данных о комиссиях в долларах США по текущей цене TRX воспользуйтесь калькулятором комиссий TronNRG — введите свой ежедневный объем, и он покажет вам реальную сумму экономии в долларах.

Если вы совершаете более 500 переводов в день, стоит также сравнить этот вариант с самостоятельным стейкингом TRX для генерации собственной Energy . Самостоятельный стейкинг имеет практически нулевую стоимость за перевод, но требует существенной блокировки капитала. Калькулятор точки безубыточности стейкинга покажет вам, где пересекаются границы между API и самостоятельным стейкингом для вашего конкретного объема.

Поиск неисправностей

Четыре ошибки встречаются достаточно часто, чтобы о них стоило знать заранее:

Несоответствие подписи (наиболее распространенная ошибка). API использует подпись V2, а вы использовали устаревший метод signMessage . Решение: переключитесь на signMessageV2 . Полный список кодов ошибок находится в документации по ошибкам TronNRG .

Платеж не найден. Вы вызвали /delegate до того, как транзакция платежа была подтверждена в блокчейне. Решение: подождите хотя бы один блок (около 3 секунд) после Шага 1, прежде чем вызывать Шаг 3. В коде опрашивайте tronWeb.trx.getTransaction(payment.txid) , пока он не вернет результат.

Оплата ниже минимальной суммы. Вы отправили менее 4 TRX . Система обработки платежей считает сумму менее 4 TRX недействительной и автоматически возвращает деньги. Решение: проверьте сумму перед отправкой — минимальная сумма фиксирована.

Energy не поступила. Делегирование успешно выполнено на стороне API , но в целевом кошельке по-прежнему отсутствует Energy . Решение: подождите еще один блок и перепроверьте — распространение может иногда занимать 6 секунд вместо 3. Если Energy по-прежнему не появляется через 30 секунд, проверьте, совпадает ли указанный вами адрес целевого кошелька с адресом, который вы запрашиваете (обычно это происходит из-за опечатки).

▸ API TronNRG доступен по адресу api.tronnrg.com.

Прочитать полную документацию →

Для корпоративных заказов: свяжитесь с TronNRG в Telegram для подтверждения веб-хуков, получения информации о ценах для оптовых заказов и индивидуальных соглашений об уровне обслуживания (SLA).

Похожие руководства: API Tron Energy для разработчиков · Автоматизация переводов USDT в больших масштабах · Отправка USDT менее чем за 1 доллар

Три вызова API . Скидка 70% на каждый перевод USDT .

TronNRG доступен по адресу api.tronnrg.com. Минимальное количество TRX — 4, линейная тарификация до 1000 TRX . Делегирование за 3 секунды. Аутентификация на основе подписи, ключ API не требуется. Полная документация на всех поддерживаемых языках доступна по адресу support.tronnrg.com.

АРЕНДА ЭНЕРГИИ →

FAQ

Как быстрее всего снизить комиссию за перевод USDT программным способом?
Используйте API для делегирования Energy . API TronNRG по адресу api.tronnrg.com делегирует 65 000 Energy (один стандартный перевод USDT ) за 4 TRX вместо примерно 13 TRX , которые сеть бы сожгла в противном случае — снижение комиссии примерно на 70%. Интеграция состоит из трех HTTP-операций: отправка TRX на адрес отправки, подписание сообщения о владении, отправка POST-запроса на /delegate. Время выполнения от начала до конца составляет около 3 секунд, прежде чем вы сможете отправить свой перевод USDT .
Нужен ли мне API ключ для использования api.tronnrg.com?
Для стандартного процесса делегирования ключ API не требуется. Аутентификация осуществляется путем подписания сообщения закрытым ключом платежного кошелька. Это подтверждает право собственности в блокчейне и позволяет API проверять запрос без настройки учетной записи, панелей управления или необходимости смены секретов. Для корпоративных объемов (более 500 ежедневных переводов) с подтверждениями через веб-хуки и индивидуальными соглашениями об уровне обслуживания (SLA) свяжитесь с TronNRG в Telegram.
Могу ли я оплачивать покупки с одного кошелька, а Energy перенаправлять на другой?
Да. Подписанное сообщение связывает хэш платежной транзакции с адресом кошелька delegate_to. Пока у вас есть закрытый ключ от платящего кошелька, вы можете делегировать полученную Energy на любой адрес Tron . Это полезно для казначейских схем, где кошелек-донор оплачивает Energy от имени нескольких кошельков-отправителей.
Какова модель ценообразования — я всегда плачу ровно 4 TRX ?
Цена линейно рассчитывается по тарифу 16 250 Energy за TRX , с минимальным значением 4 TRX (65 000 Energy , один стандартный перевод) и максимальным значением 1000 TRX (16,25 млн Energy ). Таким образом, 8 TRX Energy на два стандартных перевода или один перевод на новый кошелек (что стоит вдвое дороже), 40 TRX — на 10 переводов и так далее. Делегирование удерживается в течение 15 минут, поэтому вы можете заплатить один раз и отправить несколько транзакций USDT в течение этого времени.
Что произойдет, если делегирование не удастся после того, как я уже произвел оплату?
TronNRG автоматически возвращает TRX на адрес отправителя в блокчейне, если делегирование не может быть завершено по какой-либо причине. Сцена застревания средств отсутствует. Тем не менее, в производственной среде следует реализовать резервный вариант: если вызов /delegate завершается неудачей или Energy не поступает в течение разумного времени ожидания, транслируйте перевод USDT без Energy (сеть сжигает TRX , но перевод все равно завершается) и зарегистрируйте событие для расследования.
Является ли сервис TronNRG некастодиальным?
Да. Energy делегируется через собственный механизм делегирования протокола Tron . TronNRG никогда не хранит ваши USDT , никогда не требует подключения кошелька и никогда не запрашивает подтверждения токенов. Сервис предоставляет Energy на адрес вашего кошелька. Вы отправляете USDT с адреса вашего кошелька. Эти две операции полностью независимы. Единственные токены, которые затрагивает TronNRG — это TRX которые вы отправляете для покупки Energy .
Для каких языков программирования существуют рабочие примеры?
В документации для разработчиков TronNRG на сайте support.tronnrg.com представлены примеры кода на JavaScript ( TronWeb ), Python (tronpy), PHP (iexbase/tron-api) и cURL. Интеграция возможна с любым языком программирования, способным подписывать сообщения Tron и выполнять HTTP-запросы — реализации на Go, Rust, Java и C# уже внедрены в продакшн для этого API .
Telegram WhatsApp