ماذا تفعل عملية سحب lamport الزائدة؟
WithdrawExcessLamports تنقل SOL المحتجزة في حساب Token Program الذي يتجاوز
الحد الأدنى المعفى من الإيجار إلى حساب الوجهة. تبقى أرصدة الرموز وعرض mint دون
تغيير — فقط lamport الفائضة هي التي تتحرك.
يسترد هذا SOL الذي كان محاصراً في السابق: إذ لم يكن بالإمكان تحريك lamport المُرسلة إلى token account أو mint أو multisig (جميعها مملوكة لـ Token Program) بأي طريقة أخرى.
المرجع المصدري
| العنصر | الوصف | المصدر |
|---|---|---|
WithdrawExcessLamports | التعليمة (المُميِّز 38). | المصدر |
process_withdraw_excess_lamports | منطق المعالج وفحوصات الصلاحية. | المصدر |
الحسابات
| الحساب | الوصف |
|---|---|
source | قابل للكتابة. token account أو mint أو multisig المراد السحب منه. |
destination | قابل للكتابة. يستقبل lamport الزائدة. |
authority | يوقّع بناءً على نوع حساب المصدر (انظر أدناه). |
من يمكنه التوقيع
يعتمد الموقّع المطلوب على نوع حساب source:
| حساب المصدر | الموقّع |
|---|---|
| token account | مالك token account (أو موقّعو multisig الخاصون به). |
| Mint مع صلاحية إصدار | صلاحية الإصدار. |
| Mint بدون صلاحية إصدار | يجب على mint account نفسه التوقيع (انظر الملاحظة أدناه). |
| Multisig | الموقّعون M-of-N المُهيَّئون. |
حالة "الإصدار بدون سلطة إصدار" نادرة الحدوث. عند تطبيقها، يكون حساب الإصدار هو الموقّع: يُوقّع إصدار مملوك لبرنامج (خارج المنحنى) عبر CPI من البرنامج المالك له، بينما يُوقّع إصدار keypair (على المنحنى) باستخدام مفتاحه.
حسابات token account الأصلية (SOL المُغلَّف) غير مدعومة وتُرجع
NativeNotSupported. لا يمكن أن يؤدي السحب إلى انخفاض رصيد الحساب المصدر عن
الحد الأدنى المطلوب للإعفاء من الإيجار.
كيفية سحب الـ lamport الزائدة
يستخدم المثال عميل @solana/kit
مُهيَّأً مسبقاً — راجع نقل الرموز لإعداد
العميل.
import { getWithdrawExcessLamportsInstruction } from "@solana-program/token";// source/destination: addresses of the account to drain and the lamport recipient.// authority: a TransactionSigner that signs per the source account type.const instruction = getWithdrawExcessLamportsInstruction({source,destination,authority});await client.sendTransaction([instruction]);
في حالة سلطة التوقيع المتعدد، مرِّر الموقِّعين المشاركين مع multiSigners.
Is this page helpful?