ADRESSE DE PAIEMENT API
TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx
Envoyez TRX à cette adresse. Votre hash de transaction est utilisé pour réclamer la délégation d'énergie.

Intégration Node.js complète avec TronWeb. Chaque étape est un bloc de code autonome que vous pouvez copier dans votre projet. L'exemple complet de bout en bout est en bas.

Prérequis : Node.js 18+, tronweb installé (npm install tronweb), un portefeuille Tron approvisionné.

Le flux

Pas de clé API. Pas d'inscription. Votre code envoie TRX on-chain à l'adresse de paiement TronEnergy, signe un message prouvant la propriété, puis réclame la délégation. L'énergie arrive en environ 3 secondes. Ensuite, votre code envoie USDT en utilisant l'énergie déléguée.

Le tarif est linéaire : 16,250 Énergie par TRX. Commande minimale 4 TRX (65,000 Énergie — un transfert USDT standard), maximale 1,000 TRX (16,25M Énergie). Le montant que vous envoyez détermine exactement combien d'Énergie vous recevez en retour — il n'y a pas de paliers ni de forfaits. Pour un seul transfert standard, envoyez 4. Pour un transfert vers un nouveau portefeuille, envoyez 8. Pour du travail en batch, envoyez plus. Le code ci-dessous utilise une trxAmount variable pour que vous puissiez la modifier à un seul endroit.

Étape par étape

1. Configuration

configuration
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. Envoyer TRX

envoyer un paiement
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. Réclamer la délégation d'énergie

réclamer la délégation
// 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. Envoyer USDT

envoyer 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);

Gestion des erreurs

gestion des erreurs
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; } }

Exemple complet

Copiez ceci dans un fichier, définissez vos variables d'environnement et exécutez-le. Le script envoie TRX, signe le message, réclame la délégation avec nouvelle tentative, puis envoie 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);
Incluez toujours la signature. Elle prouve que vous êtes le portefeuille qui a envoyé le TRX. Sans elle, l'API rejette la demande avec missing_signature.
Telegram WhatsApp