مرجع API تأجير طاقة Tron: نقاط نهاية REST والتكامل
توثيق API الكامل لخدمة تفويض الطاقة من TronEnergy. نقطة نهاية POST /delegate، مصادقة HMAC، صيغ الطلب والاستجابة، رموز الأخطاء، وحدود المعدل.
عنوان URL الأساسي:https://api.tronnrg.comالمصادقة: لا توجد متطلبات. جميع نقاط النهاية عامة.
حد المعدل: 20 طلب/ثانية لكل عنوان IP
عنوان الدفع:TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx (API فقط، وليس للتأجيرات اليدوية)
كيفية العمل
ثلاث خطوات. بدون مفتاح API، بدون تسجيل، بدون توصيل محفظة. يتم إثبات الملكية بشكل تشفيري.
أرسل TRX — أرسل 4 TRX (أو أكثر) إلى عنوان الدفع. 4 TRX = 65,000 طاقة. 8 TRX = 130,000. خطي تماماً.
وقّع — وقّع الرسالة {tx_hash}:{delegate_to} باستخدام المحفظة التي أرسلت TRX. هذا يثبت أنك أذنت بتفويض الطاقة.
استلم — POST /delegate مع tx_hash، delegate_to، وsignature. تصل الطاقة في حوالي 3 ثوان.
عنوان الدفع
TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx
عنوان دفع API فقط. هذا العنوان مخصص للتكاملات البرمجية عبر API. لا تستخدمه لتأجير الطاقة اليدوي. عنوان التأجير اليدوي مختلف ومتاح على .tronnrg.com.
أرسل TRX إلى هذا العنوان. بصمة معاملتك هي رمزك لتفعيل تفويض الطاقة. لا يمكن استخدام كل بصمة سوى مرة واحدة.
TRX المرسلة
الطاقة المفوضة
حالة الاستخدام
4 TRX
65,000
تحويل USDT قياسي إلى محفظة موجودة (الحد الأدنى للطلب)
8 TRX
130,000
تحويل USDT إلى متلقٍ لأول مرة
16 TRX
260,000
أربع تحويلات قياسية في طلب واحد
40 TRX
650,000
عشرة تحويلات قياسية
100 TRX
1,625,000
حوالي 25 تحويلاً قياسياً — شائع للمنصات الصغيرة
1,000 TRX
16,250,000
الحد الأقصى للطلب، حوالي 250 تحويلاً قياسياً
أي مبلغ بينهما
trx × 16,250
خطي تماماً. لا فئات، لا حزم، لا خصومات.
الصيغة:energy = trxSent × 16,250. الحدود: الحد الأدنى 4 TRX (65,000 طاقة)، الحد الأقصى 1,000 TRX (16,250,000 طاقة). كلاهما مفروض على مستوى API — المبالغ أقل من الحد الأدنى يتم رفضها بـ below_minimum وتُسترجع؛ المبالغ فوق الحد الأقصى يتم رفضها قبل التفويض.
POST /delegate
POST/delegate
طلب تفويض طاقة. يجب أن تكون قد أرسلت TRX بالفعل إلى عنوان الدفع على السلسلة. مرّر بصمة التحويل وعنوان المستقبل والتوقيع الذي يثبت أنك المُرسل.
معامل
النوع
الوصف
tx_hash
string
مطلوب
بصمة التحويل السادسة والستين (hex) لدفع TRX
delegate_to
string
مطلوب
عنوان Tron لاستقبال الطاقة
signature
string
مطلوب
tronWeb.trx.signMessageV2() من tronWeb.trx.signMessageV2(). يثبت أنك مُرسل الدفع.
بصمات معاملات التفويض على السلسلة. كل tx قابلة للتحقق على TronScan. هذا إيصالك.
GET /health
GET/health
فحص الحيوية للمراقبة وأدوات وقت التشغيل. يعيد 200 OK عند تشغيل عملية API. لا يتحقق من العُقد أو الموفرين العلويين.
الاستجابة 200
{ "status": "ok" }
رموز الخطأ
لكل استجابة خطأ error (مستقرة وقابلة للقراءة الآلية) و message (مقروءة بواسطة الإنسان). قم دائماً بالتبديل على error في الكود الخاص بك.
الكود
HTTP
المعنى
invalid_tx_hash
400
ليست سلسلة سادسة وستين حرفاً hex
invalid_address
400
عنوان Tron غير صحيح
missing_signature
400
لم يتم تقديم توقيع
invalid_signature
401
تعذر التحقق من التوقيع
signature_mismatch
403
عنوان الموقّع لا يطابق مُرسل الدفع
hash_already_used
409
بصمة التحويل مطالب بها بالفعل
payment_verification_failed
404 / 400
فشل التحقق من الدفع على السلسلة. اقرأ حقل message للسبب المحدد: المعاملة لم تُوجد بعد (404، أعد المحاولة بعد بضع ثوان)، مُستقبِل خاطئ، ليس تحويل TRX، أو أقل من الحد الأدنى 4 TRX.
delegation_failed
400 / 500
لم يتمكن الموفر من توصيل الطاقة. إذا حدث الفشل بعد التحقق من الدفع، يتم إدراج استرداد تلقائي. تحقق من كائن refund عند حدوث هذا.
rate_limited
429
عدد طلبات كثير جداً لكل ثانية من هذا العنوان IP. الحد الأقصى هو 20/ثانية.
server_error
500
خطأ داخلي غير متوقع. أعد المحاولة بعد بضع ثوان.
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;
}
}
المبالغ المسترجعة
إذا فشل التفويض بالطاقة بعد التحقق من الدفع، يتم ترتيب رسوم استرجاع TRX تلقائياً وإرسالها مرة أخرى إلى عنوان المُرسِل على البلوكتشين. ابحث عن كائن المبلغ المسترجع في استجابة الخطأ.
خطأ مع استرداد
{
"error": "delegation_failed",
"message": "Energy delegation failed. Your payment will be refunded.",
"ref": "nrg_d_43",
"refund": {
"type": "queued",
"to": "TSenderAddress",
"amount": 4
}
}
مثال كامل
التدفق الكامل من البداية للنهاية: أرسل TRX، وقّع، ادعِ مع إعادة المحاولة. انسخ وشغّل.
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