كيفية تقليل رسوم تحويل USDT عبر API : خطوة بخطوة باستخدام API TronNRG
باختصار: تستهلك عملية تحويل USDT TRC-20 القياسية 65,000 Energy . إذا لم يكن لديك Energy في محفظتك، Tron تخصم ما يقارب 13 TRX من رصيدك لتغطية هذا النقص. باستخدام API TronNRG يمكنك تفويض نفس Energy مقابل 4 TRX - أي ما يعادل خصمًا بنسبة 70% تقريبًا على كل عملية إرسال. تتضمن عملية التكامل ثلاث عمليات HTTP: إرسال TRX إلى عنوان الإرسال، وتوقيع رسالة ملكية، وإرسال طلب POST إلى نقطة النهاية /delegate. يشرح هذا الدليل كل خطوة بالتفصيل مع توضيح التعليمات البرمجية والأخطاء الأربعة الأكثر شيوعًا التي قد تواجهها أثناء التشغيل الفعلي.
قبل أن تبدأ
تحتاج إلى ثلاثة أشياء قبل أول استدعاء API :
محفظة Tron تحتوي على TRX . يلزم توفير 4 TRX على الأقل لدفع رسوم تفويض واحد. في بيئة الإنتاج، ستحتاج إلى مبلغ أكبر - ستدفع مقابل كل عملية تحويل، وشحن المحفظة الساخنة بشكل دوري أسهل من تمويلها بشكل جزئي لكل عملية إرسال.
طريقة لتوقيع رسائل Tron . يوفر TronWeb الدالة tronWeb.trx.signMessageV2() . يستخدم بايثون الدالة tron.trx.sign_message_v2() عبر مكتبة tronpy. يستخدم PHP مكتبة iexbase/tron-api. يحتوي مرجع API TronNRG على أمثلة عملية باللغات الأربع.
عنوان محفظة المستلم. حدد مسبقًا ما إذا كنت ستفوض إلى محفظة الدفع نفسها (أبسط الحالات) أو إلى محفظة أخرى تتحكم بها (إعداد الخزينة). كلا الخيارين صحيح. يربط التوقيع بينهما.
غلاف برمجي لوظيفة إرسال USDT الحالية لديك. يقوم هذا الغلاف بثلاث عمليات HTTP (الدفع، التوقيع، المطالبة)، ثم ينتظر وصول Energy ، ثم يستدعي منطق تحويل USDT الحالي لديك. هذا هو التكامل الكامل. فيما يلي تفاصيل كل خطوة.
الخطوة 1: إرسال TRX إلى عنوان الإرسال
أرسل TRX من المحفظة التي تدفع ثمن Energy إلى عنوان إرسال TronNRG . الحد الأدنى هو 4 TRX (ما يعادل 65,000 Energy ، تكفي لتحويل USDT قياسي واحد). الحد الأقصى لكل تفويض هو 1,000 TRX (16.25 مليون Energy ). السعر ثابت عند 16,250 Energy لكل TRX .
في TronWeb :
const DISPATCH = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx';
const payment = await tronWeb.trx.sendTransaction(DISPATCH, 4 * 1e6);
// payment.txid is what you will sign in Step 2
خطأ شائع: إرسال TRX بأعداد صحيحة مُقوَّمة بعملة SUN مع إغفال التحويل. تحتوي TRX على ستة أرقام عشرية. 4 TRX تساوي 4_000_000 SUN ( 4 * 1e6 ). يؤدي هذا الخطأ إما إلى إرسال مبلغ ضئيل جدًا (سيكون التفويض صغيرًا جدًا) أو إلى إرسال مئات من TRX (سينجح التفويض ولكنك ستدفع مبلغًا يفوق الحاجة بكثير). دائمًا ضاعف المبلغ قبل إرساله إلى sendTransaction .
الخطوة الثانية: توقيع رسالة التفويض
يتطلب API إثباتًا بأن الشخص الذي يطالب بالتفويض هو نفسه الشخص الذي قام بالدفع. يمكنك تقديم هذا الإثبات عن طريق توقيع رسالة باستخدام المفتاح الخاص لمحفظة الدفع. صيغة الرسالة هي:
{payment_tx_hash}:{delegate_to_address}
حيث يمثل payment_tx_hash معرّف المعاملة (txid) المُعاد في الخطوة 1، ويمثل delegate_to_address عنوان Tron الذي تريد تفويض Energy إليه. في TronWeb :
const message = `${payment.txid}:${delegateTo}`;
const signature = await tronWeb.trx.signMessageV2(message);
لماذا هذا التصميم؟ لأنه يُغني عن الحاجة إلى مفاتيح API مع الحفاظ على أمان التفويض. لا يمكن لأي شخص آخر المطالبة بدفعتك لأنك أنت وحدك من يملك المفتاح الخاص. يمكنك أيضًا الدفع من المحفظة (أ) والتفويض إلى المحفظة (ب)، طالما أنك تتحكم في المحفظة (أ) - وهذا مفيد للخزائن التي تموّل Energy لعدة محافظ إرسال من جهة دفع واحدة.
خطأ شائع: استخدام طريقة التوقيع الخاطئة. لدى Tron معياران لتوقيع الرسائل: signMessage (القديم) و signMessageV2 (متوافق مع EIP-191). تتوقع API استخدام V2. سيؤدي استخدام المعيار القديم إلى إنتاج توقيع يبدو صحيحًا، لكن API ترفضه لعدم تطابق التوقيع.
الخطوة 3: المطالبة بتفويضك
أرسل تجزئة الدفع، والمحفظة المستهدفة، والتوقيع إلى api.tronnrg.com/delegate بصيغة JSON.
const res = await fetch('https://api.tronnrg.com/delegate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
tx_hash: payment.txid,
delegate_to: delegateTo,
signature
})
}).then(r => r.json());
تقوم API بإرجاع ثلاثة حقول ستستخدمها: res.energy (كمية Energy المفوضة، تساوي TRX المرسلة مضروبة في 16250)، res.delegations[0].tx (تجزئة معاملة التفويض على السلسلة - قم بتخزين هذا لسجل التدقيق الخاص بك)، و res.ref (معرف مرجعي مثل nrg_d_42 مفيد لاستفسارات الدعم).
يتم تسجيل التفويض على سلسلة الكتل في غضون ثلاث ثوانٍ تقريبًا من عملية المطالبة الناجحة، ويستمر لمدة 15 دقيقة من تلك اللحظة. بعد انقضاء هذه المدة، تعود أي Energy غير مستخدمة إلى مجمع TronNRG تلقائيًا، دون أي استرداد جزئي.
الخطوة الرابعة: بث عملية تحويل USDT الخاصة بك
قبل بث تحويل USDT ، تأكد من وصول Energy فعليًا. استعلم عن موارد الحساب في المحفظة المستهدفة باستخدام tronWeb.trx.getAccountResources() حتى يصبح EnergyLimit - EnergyUsed 65,000 على الأقل. الفاصل الزمني القياسي هو 500 مللي ثانية مع مهلة 30 ثانية.
ثم أرسل عملة USDT كالمعتاد. تغطي Energy الرسوم. لا يتم حرق أي TRX من محفظة الإرسال.
// Wait for Energy to arrive
await pollUntilEnergyAvailable(delegateTo, 65000, { interval: 500, timeout: 30000 });
// Broadcast the USDT transfer
const contract = await tronWeb.contract().at( USDT _CONTRACT);
const txHash = await contract.transfer(recipient, amount).send({ feeLimit: 20_000_000 });
حدد دائمًا حدًا أقصى للرسوم. إذا لم تصل Energy لأي سبب من الأسباب، واستمر برنامجك في البث، فإن هذا الحد الأقصى للرسوم يحدد الحد الأقصى لعملة TRX التي يمكن للشبكة حرقها. يُعدّ 20 TRX (أي ما يعادل 20,000,000 SUN) حدًا معقولًا، فهو يكفي لتغطية عملية تحويل واحدة في حال انقطاع Energy ، كما أنه يمنع أي خلل برمجي من استنزاف المحفظة الساخنة.
ما الذي يوفره لك هذا فعلاً؟
تُحدد قيمة التوفير لكل عملية تحويل TRX : حوالي 9 TRX يتم توفيرها في كل عملية إرسال قياسية USDT (تجنب حرق 13 TRX ، مطروحًا منها 4 TRX مدفوعة مقابل Energy ). هذا الرقم لا يتغير بتغير ظروف السوق، فهو خاصية على مستوى بروتوكول شبكة Tron . ما يتغير هو القيمة الدولارية التي يمثلها مبلغ 9 TRX .
عند حجم الأعمال الحقيقي، تتراكم الوفورات بسرعة:
| التحويلات اليومية | حرق TRX السنوي (بدون API ) | TRX السنوي عبر API | TRX المدخر سنوياً | تخفيض |
|---|---|---|---|---|
| 10 | حوالي 47,450 | 14600 | حوالي 32850 | حوالي 69% |
| 100 | حوالي 474,500 | 146,000 | حوالي 328,500 | حوالي 69% |
| 500 | حوالي 2.37 مليون | 730,000 | حوالي 1.64 مليون | حوالي 69% |
| 1000 | حوالي 4.75 مليون | 1.46 مليون | حوالي 3.29 مليون | حوالي 69% |
| 5000 | حوالي 23.7 مليون | 7.30 مليون | حوالي 16.4 مليون | حوالي 69% |
للحصول على أرقام الدولار الأمريكي الحالية بسعر TRX المباشر، استخدم حاسبة رسوم TronNRG - أدخل حجم التداول اليومي وستظهر لك قيمة التوفير بالدولار في الوقت الفعلي.
إذا كنت تُجري أكثر من 500 عملية تحويل يوميًا، فمن المفيد أيضًا مقارنة ذلك بالتخزين الذاتي لعملة TRX لتوليد Energy الخاصة بك. يتميز التخزين الذاتي بتكلفة شبه معدومة لكل عملية تحويل، ولكنه يتطلب تجميد رأس مال كبير. تُوضح لك حاسبة نقطة التعادل للتخزين نقطة تقاطع خطي واجهة برمجة API والتخزين الذاتي لحجم معاملاتك المحدد.
استكشاف الأخطاء وإصلاحها
أربعة أخطاء تتكرر بشكل متكرر بما يكفي ليكون من المفيد معرفتها مسبقاً:
عدم تطابق التوقيع (الأكثر شيوعًا). يستخدم واجهة برمجة API التوقيع بالإصدار الثاني (V2)، بينما استخدمتَ أنت التوقيع بالطريقة القديمة signMessage . الحل: التبديل إلى signMessageV2 . تجد قائمة رموز الخطأ الكاملة في وثائق أخطاء TronNRG .
لم يتم العثور على الدفعة. لقد استدعيتَ /delegate قبل تأكيد عملية الدفع على سلسلة الكتل. الحل: انتظر كتلة واحدة على الأقل (حوالي 3 ثوانٍ) بعد الخطوة 1 قبل استدعاء الخطوة 3. في الكود، استعلم عن tronWeb.trx.getTransaction(payment.txid) حتى يُعيد نتيجة.
الدفع أقل من الحد الأدنى. لقد أرسلت أقل من 4 TRX . تعتبر عملية الشحن أي مبلغ أقل من 4 TRX غير صالح ويتم استرداد المبلغ تلقائيًا. الحل: تحقق من المبالغ قبل الإرسال - الحد الأدنى ثابت.
لم تصل Energy . نجحت عملية التفويض من جانب API ، لكن المحفظة المستهدفة لا تزال لا تعرض أي Energy . الحل: انتظر كتلة أخرى وأعد التحقق - قد تستغرق عملية النشر أحيانًا 6 ثوانٍ بدلًا من 3. إذا لم تظهر Energy بعد 30 ثانية، فتأكد من أن عنوان المحفظة المستهدفة الذي أرسلته يطابق العنوان الذي تستعلم عنه (عادةً ما يكون السبب خطأً مطبعيًا).
بالنسبة لأحجام المؤسسات: تواصل مع TronNRG على Telegram للحصول على تأكيدات webhook، وأسعار الجملة، واتفاقيات مستوى الخدمة المخصصة.
أدلة ذات صلة: API Tron Energy للمطورين · أتمتة تحويلات USDT على نطاق واسع · إرسال USDT بأقل من دولار واحد
ثلاث مكالمات API . خصم 70% على كل عملية تحويل USDT .
خدمة TronNRG متاحة الآن على api.tronnrg.com. الحد الأدنى 4 TRX ، وتسعير خطي يصل إلى 1000 TRX . تفويض سريع خلال 3 ثوانٍ. مصادقة قائمة على التوقيع، لا حاجة لمفتاح API . وثائق كاملة بجميع اللغات المدعومة على support.tronnrg.com.
تأجير الطاقة →