Як зменшити комісії за переказ 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 :
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 :
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: Заявіть на делегування
Опублікуйте хеш платежу, цільовий гаманець та підпис на api.tronnrg.com/delegate у форматі JSON.
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 не спалюються з гаманця відправника.
// 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% |
Щоб отримати поточні показники USD за актуальною ціною 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 секунд, перевірте, чи відповідає адреса цільового гаманця, яку ви надіслали, тій, яку ви запитуєте (тут зазвичай виникає друкарська помилка).
Для корпоративних обсягів: звертайтеся до TronNRG у Telegram для підтвердження вебхуків, оптових цін та індивідуальних угод про рівень обслуговування.
Пов’язані посібники: API Tron Energy для розробників · Автоматизація переказів USDT у великих масштабах · Надсилання USDT менш ніж за $1
ТРИ ВИКЛИКИ API . ЗНИЖКА 70% НА КОЖЕН ПЕРЕКАЗ USDT .
TronNRG доступний за адресою api.tronnrg.com. Мінімум 4 TRX , лінійне ціноутворення до 1000 TRX . Делегування протягом 3 секунд. Авторизація на основі підпису, ключ API не потрібен. Повна документація всіма підтримуваними мовами доступна на support.tronnrg.com.
ОРЕНДА ЕНЕРГІЇ →