АДРЕСА ПЛАТЕЖУ API
TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx
Надішліть TRX на цю адресу. Ваш геш транзакції використовується для запиту делегування енергії.

Повна інтеграція Node.js з використанням TronWeb. Кожен крок — це окремий блок коду, який можна скопіювати до свого проекту. Повний приклад від початку до кінця наведено внизу.

Передумови: Node.js 18+, tronweb встановлений (npm install tronweb), фінансований гаманець Tron.

Потік процесу

Без API ключа. Без реєстрації. Ваш код надсилає TRX на блокчейні на адресу платежу TronEnergy, підписує повідомлення, яке доводить право власності, а потім запитує делегування. Енергія надходить приблизно за 3 секунди. Потім ваш код надсилає USDT, використовуючи делеговану енергію.

Ціна лінійна: 16 250 енергії за TRX. Мінімальне замовлення 4 TRX (65 000 енергії — один стандартний переказ USDT), максимум 1 000 TRX (16,25M енергії). Сума, яку ви надсилаєте, точно визначає, скільки енергії повернеться — немає рівнів або пакетів. Для одного стандартного переказу надішліть 4. Для переказу з нового гаманця надішліть 8. Для масштабної роботи надішліть більше. Код нижче використовує trxAmount змінну, щоб ви могли змінити її в одному місці.

Крок за кроком

1. Налаштування

налаштування
const { TronWeb } = require('tronweb'); // destructured: the default import is broken in v6 const tronWeb = new TronWeb({ fullHost: 'https://api.trongrid.io', privateKey: process.env.TRON_PRIVATE_KEY, }); const API = 'https://api.tronnrg.com'; const ADDR = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx'; // API payment address const USDT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';

2. Надішліть TRX

відправити платіж
const TRX_AMOUNT = 4; // Linear: 16,250 energy per TRX. Min 4, max 1000. // 4 → 65k (standard) · 8 → 130k (new wallet) · 40 → 650k (10 transfers) const payment = await tronWeb.trx.sendTransaction(ADDR, TRX_AMOUNT * 1e6); console.log('Payment tx:', payment.txid);

3. Отримайте делегування

отримати делегування
// Sign: proves you are the sender const msg = `${payment.txid}:${tronWeb.defaultAddress.base58}`; const sig = await tronWeb.trx.signMessageV2(msg); const delegation = await fetch(`${API}/delegate`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ tx_hash: payment.txid, delegate_to: tronWeb.defaultAddress.base58, signature: sig, }), }).then(r => r.json()); if (delegation.error) { throw new Error(delegation.message); } console.log('Energy delegated:', delegation.energy); // TRX_AMOUNT × 16,250

4. Надішліть USDT

відправити USDT
const contract = await tronWeb.contract().at(USDT); const tx = await contract.transfer( recipientAddress, Math.round(usdtAmount * 1e6) ).send({ feeLimit: 50_000_000 }); console.log('USDT sent:', tx);

Обробка помилок

обробка помилок
const result = await fetch(`${API}/delegate`, { ... }) .then(r => r.json()); if (result.error) { switch (result.error) { case 'payment_verification_failed': // Payment not yet indexed on-chain. Wait 3s and retry. break; case 'hash_already_used': // Already claimed. Don't retry. break; case 'signature_mismatch': // Sender of TRX != signer of the message. Sign with the same key. break; case 'delegation_failed': // Provider could not deliver. Retry or contact support with result.ref. break; } }

Повний приклад

Скопіюйте це в файл, установіть змінні середовища та запустіть. Скрипт надсилає TRX, підписує повідомлення, отримує делегування з повторними спробами, а потім надсилає USDT.

delegate-energy.js
const { TronWeb } = require('tronweb'); // destructured: default import is broken in v6 const tronWeb = new TronWeb({ fullHost: 'https://api.trongrid.io', privateKey: process.env.TRON_PRIVATE_KEY, }); const API = 'https://api.tronnrg.com'; const ADDR = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx'; const USDT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'; async function claimWithRetry(txHash, delegateTo, signature, retries = 3) { for (let i = 0; i < retries; i++) { const res = await fetch(`${API}/delegate`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ tx_hash: txHash, delegate_to: delegateTo, signature }), }).then(r => r.json()); if (!res.error) return res; if (res.error !== 'payment_verification_failed') throw new Error(res.message); await new Promise(r => setTimeout(r, 3000)); } throw new Error('Transaction not found after retries'); } async function main() { const recipient = 'TRecipientWallet'; const trxAmount = 4; // min 4, max 1000 — you get trxAmount × 16,250 energy // 1. Send TRX (linear pricing: 16,250 energy per TRX) const payment = await tronWeb.trx.sendTransaction(ADDR, trxAmount * 1e6); console.log('Payment:', payment.txid); // 2. Claim delegation // Sign: proves you are the sender const message = `${payment.txid}:${recipient}`; const signature = await tronWeb.trx.signMessageV2(message); const result = await claimWithRetry(payment.txid, recipient, signature); console.log('Delegated:', result.energy, 'energy'); console.log('Delegation tx:', result.delegations[0].tx); // verify on TronScan console.log('Ref:', result.ref); // 3. Send USDT const contract = await tronWeb.contract().at(USDT); const tx = await contract.transfer(recipient, 10 * 1e6).send(); console.log('USDT sent:', tx); } main().catch(console.error);
Завжди включайте підпис. Він доводить, що ви — гаманець, який надіслав TRX. Без нього API відхиляє запит з помилкою missing_signature.
Telegram WhatsApp