سحب lamport الزائدة

ماذا تفعل عملية سحب 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 مُهيَّأً مسبقاً — راجع نقل الرموز لإعداد العميل.

Withdraw excess lamports (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?

جدول المحتويات

تعديل الصفحة