TronWeb ব্যবহার করে সম্পূর্ণ Node.js ইন্টিগ্রেশন। প্রতিটি ধাপ একটি স্বাধীন কোড ব্লক যা আপনি আপনার প্রকল্পে অনুলিপি করতে পারেন। সম্পূর্ণ এন্ড-টু-এন্ড উদাহরণ নীচে আছে।
পূর্বশর্তাবলী: Node.js 18+, tronweb ইনস্টল করা (npm install tronweb), একটি তহবিল সরবরাহকৃত Tron ওয়ালেট।
প্রবাহ
কোনো API কী নেই। কোনো সাইন-আপ নেই। আপনার কোড TronEnergy পেমেন্ট ঠিকানায় অন-চেইনে TRX পাঠায়, মালিকানা প্রমাণ করে একটি বার্তায় স্বাক্ষর করে, তারপর ডেলিগেশন দাবি করে। এনার্জি প্রায় ৩ সেকেন্ডে পৌঁছায়। তারপর আপনার কোড প্রতিনিধিত্বকৃত এনার্জি ব্যবহার করে USDT পাঠায়।
মূল্য নির্ধারণ রৈখিক: প্রতি TRX ১৬,২৫০ এনার্জি। সর্বনিম্ন অর্ডার ৪ TRX (৬৫,০০০ এনার্জি — একটি মানক USDT ট্রান্সফার), সর্বাধিক ১,০০০ TRX (১৬.২৫ মিলিয়ন এনার্জি)। আপনি যে পরিমাণ পাঠান তা নির্ধারণ করে ঠিক কত এনার্জি ফেরত আসে — কোনো স্তর বা প্যাকেজ নেই। একটি একক মানক ট্রান্সফারের জন্য, ৪ পাঠান। একটি নতুন-ওয়ালেট ট্রান্সফারের জন্য, ৮ পাঠান। ব্যাচ কাজের জন্য, আরও পাঠান। নীচের কোডটি একটি trxAmount ভেরিয়েবল ব্যবহার করে যাতে আপনি এটি একটি জায়গায় পরিবর্তন করতে পারেন।
ধাপে ধাপে
১. সেটআপ
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';
২. 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 পাঠান
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 পাঠায়।
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।