Tron Energy ijarasi API havolasi: REST uchlari va integratsiya
TronEnergy energiya ijarasi uchun to'liq REST API hujjatlari. POST /delegate uchi, HMAC autentifikatsiyasi, so'rov/javob formatlari, xato kodlari va tezlik chegaralari.
Asosiy URL:https://api.tronnrg.comAutentifikatsiya: Kerak emas. Barcha uchlari ommaviy.
Tezlik chegarasi: IP manzilga 20 so'rov/sekund
To'lov manzili:TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx (Faqat API uchun, qo'lda ijara uchun emas)
Ishlash tarzi
Uch bosqich. API kaliti yo'q, ro'yxatdan o'tish yo'q, hamyon ulanmasi yo'q. Mullik kriptografik jihatdan isbotlanadi.
Imzo chekish — Xabarni imzo chekish {tx_hash}:{delegate_to} TRX yuborgan hamyondan foydalanib. Bu delegatsiyani avtorizatsiya qilganingizni isbotlaydi.
Talab qilish — POST /delegate bilan tx_hash, delegate_to, va signature. Energiya ~3 soniyada keladi.
To'lov Manzili
TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx
Faqat API to'lov manzili. Bu manzil API orqali dasturiy integratsiyalar uchun. Qo'lda energiya ijarasi uchun foydalanmang. Qo'l ijarasi manzili boshqacha va saytida mavjud.tronnrg.com.
Bu manzilga TRX yuboring. To'lovingizning tranzaksiya heshi delegatsiyani ishga tushirish uchun sizning tokeningiz. Har bir heš faqat bir marta ishlatilishi mumkin.
Yuborilgan TRX
Ijaralangan Energiya
Foydalanish Holati
4 TRX
65,000
Mavjud hamyonga standart USDT o'tkazma (minimal buyurtma)
8 TRX
130,000
Birinchi marta qabul qiluvchiga USDT o'tkazma
16 TRX
260,000
Bitta buyurtmada to'rtta standart o'tkazma
40 TRX
650,000
O'n standart o'tkazma
100 TRX
1,625,000
~25 standart o'tkazma — kichik platformalar uchun odatiy
1,000 TRX
16,250,000
Maksimal buyurtma, ~250 standart o'tkazma
Oraliqda istalgan miqdor
trx × 16,250
To'liq chiziqli. Qatlamlar yo'q, paketlar yo'q, skidkalar yo'q.
Formula:energy = trxSent × 16,250. Chegaralar: min 4 TRX (65,000 energiya), max 1,000 TRX (16,250,000 energiya). Ikkalasi ham API darajasida qo'llaniladi — minimal qiymatdan past miqdorlar below_minimum bilan rad etiladi va qaytariladi; maksimal qiymatdan oshiq miqdorlar delegatsiyadan oldin rad etiladi.
POST /delegate
POST/delegate
Energiya ijarasini talab qiling. Siz allaqachon TRX-ni to'lash manzilidan zanjir orqali jo'natgan bo'lishingiz kerak. Tranzaksiya xeshini, qabul qiluvchi manzilini va siz jo'natuvchi ekanligingizni isbotlaydigan imzoni o'tkazing.
Parametr
Turi
Tavsif
tx_hash
string
talab qilinadi
TRX to'lovining 64 ta belgili heksadetsimal xeshi
delegate_to
string
talab qilinadi
Energiyani qabul qiladigan Tron manzili
signature
string
talab qilinadi
tronWeb.trx.signMessageV2() dan tronWeb.trx.signMessageV2(). Siz to'lov jo'natuvchi ekanligingizni isbotlaydi.
TronNRG identifikator raqami. Qo'llab-quvvatlash so'rovlari uchun buni qayd qiling.
energy
number
Jami delegat qilingan energiya
cost
number
Undan olingan TRX
status
string
Muvaffaqiyatda "delegated"
delegations
array
Zanjir delegat qilish tranzaksiyasi xeshlari. Har bir tx da tekshirish mumkin TronScan. Bu sizning kvitansiyangiz.
GET /health
GET/health
Monitoring va uptime vositalari uchun tiriklik tekshiruvi. API jarayoni yuqorida bo'lganda qaytaradi 200 OK. Upstream tugunlarini yoki ta'minotchilarini tekshirmaydi.
Javob 200
{ "status": "ok" }
Xato Kodlari
Har bir xato javobining error (barqaror, mashinaga o'qish mumkin) va message (inson tomonidan o'qiladigan) bor. Har doim kodingizda error ga o'tkazing.
Kod
HTTP
Ma'nosi
invalid_tx_hash
400
64 ta belgili heksadetsimal qator emas
invalid_address
400
Haqiqiy Tron manzili emas
missing_signature
400
Imzo taqdim etilmadi
invalid_signature
401
Imzoni tekshirish mumkin emas edi
signature_mismatch
403
Imzo qo'yuvchi manzili to'lov jo'natuvchisi bilan mos kelmaydi
hash_already_used
409
Tranzaksiya xeshi allaqachon talab qilingan
payment_verification_failed
404 / 400
To'lovning zanjir tekshiruvi bajarilmadi. Aniq sababni bilish uchun message maydonini o'qing: tx hali topilmadi (404, bir necha soniyadan keyin qayta urinib ko'ring), noto'g'ri qabul qiluvchi, TRX o'tkazma emas yoki 4 TRX minimaldan past.
delegation_failed
400 / 500
Ta'minotchi energiya yetkazib bera olmadi. Agar muvaffaqiyatsizlik to'lov tekshiruvdan keyin sodir bo'lsa, qaytarish avtomatik ravishda navbatga olinadi. Bu sodir bo'lganda refund ob'ektini tekshiring.
rate_limited
429
Bu IP manzilidan sekundiga juda ko'p so'rov. Limit 20/sec.
server_error
500
Kutilmagan ichki xato. Bir necha soniyadan keyin qayta urinib ko'ring.
const result = awaitfetch('https://api.tronnrg.com/delegate', { ... })
.then(r => r.json());
if (result.error) {
switch (result.error) {
case'payment_verification_failed':
// Most common cause: tx not yet indexed. Wait 3s and retry.// Read result.message for the specific cause.break;
case'hash_already_used':
// Already claimed. Don't retry.break;
case'signature_mismatch':
// Signer != payment sender. Sign with the same key that sent TRX.break;
case'delegation_failed':
// Refund queued automatically if payment was verified.if (result.refund) console.log('Refund queued:', result.refund);
break;
}
}
result = requests.post('https://api.tronnrg.com/delegate', json=data).json()
if'error'in result:
if result['error'] == 'payment_verification_failed':
# Most common cause: tx not yet indexed. Wait 3s and retry.passelif result['error'] == 'hash_already_used':
# Already claimed. Don't retry.passelif result['error'] == 'signature_mismatch':
# Signer != payment sender. Sign with the same key.passelif result['error'] == 'delegation_failed':
# Refund queued automatically if payment was verified.pass
if (isset($result['error'])) {
switch ($result['error']) {
case'payment_verification_failed':
// Most common cause: tx not yet indexed. Wait 3s and retry.break;
case'hash_already_used':
// Already claimed. Don't retry.break;
case'signature_mismatch':
// Signer != payment sender. Sign with the same key.break;
case'delegation_failed':
// Refund queued automatically if payment was verified.break;
}
}
Qaytarimlar
Agar to'lovingiz tekshirilgandan keyin energiya ijarasi bajarilmasa, TRX qaytarimi avtomatik navbatga qo'yiladi va yuboruvchi manzilga zanjirda qaytariladi. Xato javobida qaytarish ob'ektini qidiring.
Qaytarish bilan xato
{
"error": "delegation_failed",
"message": "Energy delegation failed. Your payment will be refunded.",
"ref": "nrg_d_43",
"refund": {
"type": "queued",
"to": "TSenderAddress",
"amount": 4
}
}
To'liq Misol
Butun oqimni oxiriga qadar: TRX yuboring, imzo qo'ying, qayta urinish bilan talab qiling. Nusxa oling va ishga tushiring.
const API = 'https://api.tronnrg.com';
const ADDR = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx';
async functionrentEnergy(delegateTo, trxAmount = 4) {
// 1. Send TRX to the payment addressconst payment = await tronWeb.trx.sendTransaction(ADDR, trxAmount * 1e6);
// 2. Sign: proves you are the senderconst message = `${payment.txid}:${delegateTo}`;
const signature = await tronWeb.trx.signMessageV2(message);
// 3. Claim delegation (retry if tx not indexed yet)let result;
for (let i = 0; i < 3; i++) {
result = awaitfetch(`${API}/delegate`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
tx_hash: payment.txid,
delegate_to: delegateTo,
signature,
}),
}).then(r => r.json());
if (!result.error) break;
if (result.error !== 'payment_verification_failed') throw newError(result.message);
await newPromise(r => setTimeout(r, 3000));
}
if (result.error) throw newError(result.message);
return result;
}
// Usage — send any amount between 4 and 1,000 TRXconst result = awaitrentEnergy('TWalletThatNeedsEnergy', 4); // 4 TRX → 65k energy// rentEnergy(addr, 8) // → 130,000 energy (new-wallet transfer)// rentEnergy(addr, 40) // → 650,000 energy (10 transfers)// rentEnergy(addr, 1000) // → 16,250,000 energy (max)
console.log(result.energy); // trxAmount × 16,250
console.log(result.delegations[0].tx); // on-chain tx hash
console.log(result.ref); // "nrg_d_42"
import requests
import time
API = 'https://api.tronnrg.com'
ADDR = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx'defrent_energy(delegate_to, trx_amount=4):
# 1. Send TRX to ADDR (via your Tron library)
tx_hash = send_trx(ADDR, trx_amount) # your TRX send function# 2. Sign: proves you are the sender
message = f'{tx_hash}:{delegate_to}'
signature = tron.trx.sign_message_v2(message)
# 3. Claim delegation (retry if tx not indexed yet)for attempt inrange(3):
result = requests.post(f'{API}/delegate', json={
'tx_hash': tx_hash,
'delegate_to': delegate_to,
'signature': signature,
}).json()
if'error'not in result:
return result
if result['error'] != 'payment_verification_failed':
raiseException(result['message'])
time.sleep(3)
raiseException('Transaction not found after retries')
# Usage
result = rent_energy('TWalletThatNeedsEnergy', 4)
print(f"Delegated: {result['energy']} energy")
print(f"Delegation tx: {result['delegations'][0]['tx']}")
print(f"Ref: {result['ref']}")
# 1. Send TRX to TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx# Pricing is linear at 16,250 energy per TRX.# Min 4 TRX (65,000 energy), max 1,000 TRX (16.25M energy).# (use your wallet or tronweb CLI)# 2. Sign the message {tx_hash}:{delegate_to} (proves you are the sender)# (use tronWeb.trx.signMessageV2 in your code)# 3. Claim delegation with tx hash + signature
curl -X POST https://api.tronnrg.com/delegate \
-H "Content-Type: application/json" \
-d '{
"tx_hash": "YOUR_PAYMENT_TX_HASH",
"delegate_to": "TWalletThatNeedsEnergy",
"signature": "YOUR_SIGNATURE"
}'# Response includes delegations[].tx — the on-chain hash you can verify on TronScan