نحوه کاهش کارمزد انتقال USDT از طریق API : گام به گام با API TronNRG
خلاصه کلام: یک انتقال استاندارد USDT TRC-20 ، ۶۵۰۰۰ Energy مصرف میکند. اگر کیف پول شما Energy نداشته باشد، Tron تقریباً ۱۳ TRX از موجودی شما را برای پوشش آن میسوزاند. با API TronNRG شما همان Energy برای ۴ TRX واگذار میکنید - حدود ۷۰٪ کاهش در هر ارسال. این ادغام شامل سه عملیات HTTP است: ارسال TRX به آدرس ارسال، امضای پیام مالکیت و ارسال به نقطه پایانی /delegate. این راهنما هر مرحله را با کد و چهار خطای رایج که در تولید با آنها مواجه خواهید شد، بررسی میکند.
قبل از شروع
قبل از اولین فراخوانی API به سه چیز نیاز دارید:
یک کیف پول Tron با TRX . حداقل ۴ TRX برای پرداخت هزینه یک تراکنش. در حالت عملیاتی، بیشتر - شما برای هر انتقال هزینه پرداخت خواهید کرد و شارژ کردن یک کیف پول گرم به صورت دورهای سادهتر از تامین مالی خرد آن برای هر ارسال است.
راهی برای امضای پیامهای Tron . TronWeb از tronWeb.trx.signMessageV2() استفاده میکند. پایتون از tron.trx.sign_message_v2() از طریق tronpy استفاده میکند. PHP از کتابخانه iexbase/tron-api استفاده میکند. مرجع API TronNRG نمونههای کاری در هر چهار زبان دارد.
آدرس کیف پول گیرنده. از قبل تصمیم بگیرید که آیا میخواهید به خود کیف پول پرداختکننده (سادهترین حالت) یا به کیف پول دیگری که کنترل میکنید (تنظیمات خزانه) انتقال دهید. هر دو حالت جواب میدهد. امضا این دو را به هم پیوند میدهد.
یک پوشش (wrapper) پیرامون تابع ارسال USDT موجود شما. این پوشش سه عملیات HTTP (پرداخت، امضا، مطالبه) را انجام میدهد، منتظر میماند تا Energy به مقصد برسد، سپس منطق انتقال USDT موجود شما را فراخوانی میکند. این کل ادغام است. جزئیات هر مرحله در زیر آمده است.
مرحله ۱: ارسال TRX به آدرس ارسال
TRX از کیف پولی که هزینه Energy آن را پرداخت میکنید، به آدرس ارسال TronNRG ارسال کنید. حداقل مقدار ۴ TRX است (که ۶۵۰۰۰ Energy خریداری میکند، که برای یک انتقال استاندارد USDT کافی است). حداکثر مقدار برای هر نماینده ۱۰۰۰ TRX است (۱۶.۲۵ میلیون Energy ). قیمتگذاری به صورت خطی و بین ۱۶۲۵۰ 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 دارای ۶ رقم اعشار است. ۴ 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 را از بین میبرد و در عین حال، امنیت واگذاری را حفظ میکند. هیچ کس دیگری نمیتواند پرداخت شما را مطالبه کند زیرا فقط شما کلید خصوصی را دارید. همچنین میتوانید از کیف پول A پرداخت کنید و به کیف پول B محول کنید، البته تا زمانی که A را کنترل کنید - برای خزانههایی که Energy را برای چندین کیف پول ارسالی از یک مسئول پرداخت واحد تأمین میکنند، مفید است.
اشتباه رایج: استفاده از روش امضای اشتباه. Tron دو استاندارد امضای پیام دارد - signMessage (legacy) و signMessageV2 (سازگار با EIP-191). API انتظار V2 را دارد. استفاده از legacy یک امضای به ظاهر معتبر تولید میکند که API آن را به عنوان عدم تطابق امضا رد میکند.
مرحله ۳: درخواست نمایندگی خود را ثبت کنید
هش پرداخت، کیف پول هدف و امضا را به صورت JSON به api.tronnrg.com/delegate ارسال کنید.
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 ارسال شده ضربدر ۱۶۲۵۰)، res.delegations[0].tx (هش تراکنش واگذاری درون زنجیرهای - این را برای گزارش حسابرسی خود ذخیره کنید) و res.ref (یک شناسه مرجع مانند nrg_d_42 که برای درخواستهای پشتیبانی مفید است).
این واگذاری تقریباً ۳ ثانیه پس از یک ادعای موفقیتآمیز، روی زنجیره قرار میگیرد. از آن لحظه به مدت ۱۵ دقیقه نگه داشته میشود. پس از ۱۵ دقیقه، هرگونه Energy استفاده نشده به طور خودکار به استخر TronNRG باز میگردد - بدون بازپرداخت جزئی.
مرحله ۴: انتقال USDT خود را منتشر کنید
قبل از پخش انتقال USDT ، مطمئن شوید که Energy واقعاً رسیده است. tronWeb.trx.getAccountResources() را روی کیف پول هدف Poll کنید تا EnergyLimit - EnergyUsed حداقل ۶۵۰۰۰ شود. فاصله زمانی ۵۰۰ میلیثانیهای با زمان انقضای ۳۰ ثانیهای استاندارد است.
سپس 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 });
همیشه یک محدودیت کارمزد (feeLimit) تعیین کنید. اگر به هر دلیلی 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 ذخیره شده در هر سال | کاهش |
|---|---|---|---|---|
| ۱۰ | ~۴۷,۴۵۰ | ۱۴,۶۰۰ | ۳۲,۸۵۰ پوند | ~۶۹٪ |
| ۱۰۰ | ۴۷۴,۵۰۰ پوند | ۱۴۶۰۰۰ | ۳۲۸,۵۰۰ پوند | ~۶۹٪ |
| ۵۰۰ | تقریباً ۲.۳۷ میلیون | ۷۳۰،۰۰۰ | ۱.۶۴ میلیون | ~۶۹٪ |
| ۱۰۰۰ | ۴.۷۵ میلیون پوند | ۱.۴۶ میلیون | ۳.۲۹ میلیون پوند | ~۶۹٪ |
| ۵۰۰۰ | ۲۳.۷ میلیون پوند | ۷.۳۰ میلیون | ۱۶.۴ میلیون پوند | ~۶۹٪ |
برای مشاهده ارقام فعلی دلار آمریکا با قیمت زنده TRX ، از محاسبهگر کارمزد TronNRG استفاده کنید - حجم روزانه خود را وارد کنید و این ابزار، صرفهجویی دلاری را به صورت آنی نشان میدهد.
اگر روزانه بیش از ۵۰۰ انتقال انجام میدهید، ارزش دارد که آن را با TRX خود-استیکینگ مقایسه کنید تا Energy خود را تولید کنید. خود-استیکینگ هزینه هر انتقال تقریباً صفر دارد اما به قفل شدن سرمایه قابل توجهی نیاز دارد. ماشین حساب نقطه سر به سر استیکینگ به شما میگوید که API در مقابل خود-استیکینگ برای حجم خاص شما کجا تلاقی میکند.
عیبیابی
چهار خطا آنقدر زیاد پیش میآیند که ارزش دارند از قبل آنها را بدانید:
عدم تطابق امضا (رایجترین). API با V2 امضا میشود اما شما با متد قدیمی signMessage امضا کردهاید. راه حل: به signMessageV2 تغییر دهید. لیست کامل کدهای خطا در مستندات خطای TronNRG موجود است.
پرداخت یافت نشد. شما قبل از تأیید تراکنش پرداخت روی زنجیره، تابع /delegate فراخوانی کردید. راه حل: قبل از فراخوانی مرحله ۳، حداقل یک بلوک (حدود ۳ ثانیه) بعد از مرحله ۱ صبر کنید. در کد، tronWeb.trx.getTransaction(payment.txid) را تا زمانی که نتیجه را برگرداند، نظرسنجی کنید.
پرداخت کمتر از حداقل. شما کمتر از ۴ TRX ارسال کردهاید. ارسال، هر مبلغی کمتر از ۴ TRX را نامعتبر و به صورت خودکار بازپرداخت میکند. راه حل: قبل از ارسال، مبالغ را بررسی کنید - حداقل مبلغ قطعی است.
Energy نرسید. واگذاری در سمت API با موفقیت انجام شد اما کیف پول هدف هنوز هیچ Energy نشان نمیدهد. راه حل: منتظر یک بلوک دیگر بمانید و دوباره بررسی کنید - انتشار گاهی اوقات میتواند به جای ۳ ثانیه، ۶ ثانیه طول بکشد. اگر Energy هنوز پس از ۳۰ ثانیه ظاهر نشد، بررسی کنید که آدرس کیف پول هدفی که ارسال کردهاید با آدرسی که جستجو میکنید مطابقت داشته باشد (در اینجا معمولاً یک اشتباه تایپی مقصر است).
برای حجمهای سازمانی: برای تأیید وبهوک، قیمتگذاری عمده و SLA های سفارشی TronNRG در تلگرام تماس بگیرید .
راهنماهای مرتبط: API Energy Tron برای توسعهدهندگان · خودکارسازی انتقالهای USDT در مقیاس بزرگ · ارسال USDT با کمتر از ۱ دلار
سه تماس API . 70٪ تخفیف برای هر انتقال USDT .
TronNRG در api.tronnrg.com فعال است. حداقل ۴ TRX ، قیمتگذاری خطی تا ۱۰۰۰ TRX . واگذاری اختیار در ۳ ثانیه. احراز هویت مبتنی بر امضا، بدون نیاز به کلید API . مستندات کامل به تمام زبانهای پشتیبانی شده در support.tronnrg.com.
اجاره انرژی →