DIRECCIÓN DE PAGO DE API
TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx
Envía TRX a esta dirección. Tu hash de transacción se usa para reclamar la delegación de energía.

Integración completa de Node.js usando TronWeb. Cada paso es un bloque de código independiente que puedes copiar a tu proyecto. El ejemplo completo de extremo a extremo está al final.

Requisitos previos: Node.js 18+, tronweb instalado (npm install tronweb), una billetera Tron financiada.

El Flujo

Sin clave de API. Sin registro. Tu código envía TRX en la cadena a la dirección de pago de TronEnergy, firma un mensaje probando la propiedad, luego reclama la delegación. La energía llega en aproximadamente 3 segundos. Luego tu código envía USDT usando la energía delegada.

El precio es lineal: 16,250 Energía por TRX. Orden mínima 4 TRX (65,000 Energía — una transferencia USDT estándar), máximo 1,000 TRX (16.25M Energía). La cantidad que envías determina exactamente cuánta Energía recibes — no hay niveles ni paquetes. Para una sola transferencia estándar, envía 4. Para una transferencia de billetera nueva, envía 8. Para trabajo por lotes, envía más. El código a continuación utiliza una trxAmount variable para que puedas cambiarla en un solo lugar.

Paso a Paso

1. Configuración

configuración
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. Enviar TRX

enviar pago
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. Reclamar la Delegación

reclamar delegación
// 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. Enviar USDT

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

Manejo de Errores

gestión de errores
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; } }

Ejemplo Completo

Copia esto en un archivo, configura tus variables de entorno y ejecútalo. El script envía TRX, firma el mensaje, reclama la delegación con reintentos y luego envía 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);
Siempre incluye la firma. Prueba que eres la billetera que envió el TRX. Sin ella, la API rechaza la solicitud con missing_signature.
Telegram WhatsApp