العودة إلى المدونة
Solana

WithdrawExcessLamports على Solana: دليل رموز SPL وToken-2022

S
Sol Slugs Team
Sol Incinerator

تم التحقق من أدلة الأسعار والإمكانات 3 سبتمبر 2026.

WithdrawExcessLamports هي تعليمة برنامج الرموز 38. وهي تحل مشكلة محددة: قد يحتفظ سكّ أو حساب رمز أو حساب متعدد التوقيعات بلامبورت أكثر مما يحتاج إليه للإعفاء من الإيجار، لكن لا يمكن نقل تلك اللامبورت عبر تحويل رموز عادي.

ماذا يفعل WithdrawExcessLamports؟

WithdrawExcessLamports لا ينقل سوى SOL الذي يزيد عن الحد الأدنى المباشر المعفى من الإيجار لحساب برنامج الرموز. ويظل المصدر مفتوحًا، كما تبقى بيانات رمزه أو سكّه دون تغيير. ويعتمد الموقّع المطلوب على ما إذا كان المصدر حساب رمز، أو سكًّا، أو حساب رموز متعدد التوقيعات.

تتوفر التعليمة في كل من برنامج رمز SPL التقليدي وToken-2022. وكانت مفيدة لاسترداد اللامبورت المُرسلة بطريق الخطأ إلى حسابات مملوكة لبرنامج الرموز قبل مقترح إيجار 2026. ويمنحها انخفاض الحد الأدنى للإيجار استخدامًا أوسع: إذ يمكن للحسابات القديمة الاحتفاظ برصيدها الأصلي مع احتياجها إلى احتياطي أصغر.

يتوفر السلوك المرجعي ومثال العميل الحالي في وثائق Withdraw Excess Lamports الخاصة بـ Solana. كما أن تنفيذ المعالج علني في مستودع برنامج الرموز.

ما الحسابات التي تتطلبها التعليمة؟

الحسابقابل للكتابة؟موقّع؟الغرض
sourceنعمأحيانًاحساب رمز أو سكّ أو حساب متعدد التوقيعات يحتفظ بفائض لامبورت
destinationنعملايتلقى اللامبورت المسحوبة
authorityلايعتمد على نوع المصدريثبت الإذن بالسحب
multiSignersلانعم عند استخدامهاستيفاء الحد المضبوط لحساب الرموز متعدد التوقيعات

يقرأ المعالج طول بيانات المصدر وإعدادات الإيجار الحالية، ويحسب حده الأدنى للرصيد، ثم ينقل الفرق. ولا يقبل احتياطيًا يقدمه المستدعي قد يكون قديمًا أو قابلًا للتلاعب.

من يجب أن يوقّع لكل نوع من المصادر؟

المصدرالصلاحية المطلوبة
حساب رمز يملكه مالك محفظةمالك حساب الرمز
حساب رمز يملكه حساب رموز متعدد التوقيعاتأعضاء التوقيع المتعدد المطلوبون وفق M- من N
سك بصلاحية سك نشطةجهة صلاحية السكّ الحالية
سك بلا صلاحية سكحساب سكّ المصدر نفسه
حساب مصدر متعدد التوقيعاتالأعضاء المضبوطون وفق M- من N

تستحق حالة السكّ الملغاة صلاحيته اهتمامًا خاصًا. فإذا أُنشئ سكّ المصدر من زوج مفاتيح واقع على المنحنى، فيجب أن يوقّع زوج المفاتيح الأصلي. وإذا كان خارج المنحنى، فيجب أن يستدعي البرنامج المتحكم فيه برنامج الرموز باستخدام بذور توقيع PDA الصحيحة. ولا يمكن لحامل الرمز أو لصاحب صلاحية السكّ السابق أن يحل محل توقيع المصدر.

كيف تنشئ التعليمة باستخدام عميل Solana؟

يستخدم المثال الرسمي الحالي @solana-program/token مع ... مُعد @solana/kit العميل:

import { getWithdrawExcessLamportsInstruction } from "@solana-program/token";

const instruction = getWithdrawExcessLamportsInstruction({
    source,
    destination,
    authority,
});

await client.sendTransaction([instruction]);

هنا authority هو TransactionSigner المناسب للمصدر. ولجهة صلاحية متعددة التوقيعات، أدرج الموقّعين المشاركين عبر multiSigners. ثبّت إصدارات الحزم في بيئة الإنتاج، ونفّذ التجميع مقابل إصدار العميل نفسه الذي تستخدمه؛ فقد تتغير أنواع العميل حتى عندما لا يتغير عقد الحساب على السلسلة.

لا تثبّت في الشيفرة 0.00203928 SOL بوصفه الاحتياطي. هذا هو الحد الأدنى القديم لحساب رمز قياسي بحجم 165 بايت، وليس قيمة حالية عامة. استعلم عن الحد الأدنى الحالي لطول بيانات المصدر الفعلي مباشرةً قبل إنشاء المعاملة أو معاينتها.

كيف تختلف رموز SPL وToken-2022 هنا؟

الأثر الأساسي للتعليمة هو نفسه، لكن Token-2022 يجعل الافتراضات المتعلقة بطول البيانات محفوفة بالمخاطر بشكل خاص. تزيد امتدادات السك والحساب من الحجم المتسلسل، وبالتالي الاحتياطي المطلوب. والتكامل الذي يستخدم الأحجام القياسية البالغة 82 أو 165 بايت لكل مصدر قد يبالغ في تقدير الفائض.

يُعد CPI Guard الخاص بـ Token-2022 فرقًا عمليًا آخر للأغلفة. فعندما يكون الحارس مقفلًا، قد يُرفض الاستدعاء عبر البرامج حتى لو كانت المحفظة جهة صلاحية صالحة لولا ذلك. يتخطى Sol Incinerator تلك المصادر بدلًا من إدراج عملية مضمونة الفشل ضمن معاملة تنظيف أكبر.

تُرفض حسابات رموز SOL الأصلية المغلفة بـ NativeNotSupported. يتبع فك تغليف SOL الأصلي مسارًا مختلفًا لإغلاق الحساب؛ وليس سحبًا لفائض اللامبورت.

كيف يغلف Sol Incinerator API التعليمة؟

ينشئ الإصدار v2 من API الخاص بـ Sol Incinerator استدعاء برنامج الرموز عبر Assetcinerator، بحيث تُفرض رسوم البروتوكول ورسوم الشريك الاختيارية على السلسلة. وهذا الغلاف طبقة منتج؛ أما تعليمة برنامج الرموز الأولية نفسها فلا تفرض رسوم Sol Incinerator.

استخدم المعاينة المصادَق عليها قبل مطالبة المستخدم بالتوقيع:

curl -X POST https://v2.api.sol-incinerator.com/withdraw-excess-lamports/preview \
  -H "content-type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "userPublicKey": "DESTINATION_WALLET",
    "sourceAccount": "TOKEN_ACCOUNT_MINT_OR_MULTISIG"
  }'

مسارات المعاملة والتعليمة ذات الصلة هي:

  • POST /withdraw-excess-lamports
  • POST /withdraw-excess-lamports-instructions

userPublicKey هي محفظة الوجهة والصلاحية الافتراضية. قدّم authorityPublicKey عندما يلزم توقيع صلاحية سك أو مصدر أو صلاحية متعددة التوقيعات مختلفة. قدّم حتى 11 multisigSignerPublicKeys عند إنشاء تدفق رموز متعدد التوقيعات. يظل كل مفتاح خاص محليًا؛ ويعيد API المواد ليوافق عليها الموقّعون المطلوبون.

رسوم البروتوكول الأساسية هي 200 bps. يمكن لجهة التكامل المباشرة إضافة partnerFeeAccount و partnerFeeBps، بينما تظل رسوم معاملة Solana المعتادة منفصلة. استخدم الحقول المرجعة feeLamports وحقول الاسترداد بدلًا من إعادة استخدام حساب نسبة مئوية مخزّن مؤقتًا.

ما حالات الفشل التي ينبغي للتكامل معالجتها؟

  • لا يوجد فائض: رصيد المصدر يساوي الاحتياطي الحالي بالفعل.
  • مالك حساب أو بنية غير صحيحة: المصدر ليس حسابًا مدعومًا في برنامج الرموز.
  • صلاحية غير صالحة: الموقّع المقدّم لا يطابق حالة المصدر بعد فك ترميزها.
  • توقيع متعدد غير مكتمل: قُدّم عدد أقل من المطلوب من الموقّعين المضبوطين الصالحين.
  • حساب أصلي: يستخدم SOL المغلف عملية أخرى.
  • CPI Guard مقفل: يرفض Token-2022 CPI الخاص بالغلاف.
  • تغيّر الحالة: تغيّر رصيد أو صلاحية أو إعداد إيجار بعد المعاينة.
  • تكلفة المعاملة تتجاوز القيمة: قد لا يكون السحب الضئيل مجديًا اقتصاديًا بعد رسوم الشبكة.

أعد المعاينة عندما يُحتمل أن تكون الحالة قد تغيرت، واجعل اختيار المصدر متماثل الأثر، ولا تدمج مطلقًا مصدرًا معروفًا بعدم أهليته في دفعة مع عمليات صالحة أخرى.

Sol Incinerator

Sol Incinerator

عاين فائض الإيجار المباشر أو استخدم الإصدار v2 من API لإنشاء عملية سحب آمنة للموقّع.

جرّبه الآن

قراءات ذات صلة

الأسئلة الشائعة

ماذا يفعل WithdrawExcessLamports على Solana؟

ينقل WithdrawExcessLamports اللامبورت الزائدة على الحد الأدنى الحالي المعفى من الإيجار لحساب تابع لبرنامج الرموز إلى محفظة وجهة. ويمكن أن يكون مصدره حساب رمز أو سكًّا أو حسابًا متعدد التوقيعات. وتترك التعليمة كميات الرموز ومعروض السكّ والصلاحيات والامتدادات وجميع بيانات الحساب المتسلسلة الأخرى دون تغيير.

أي جهة صلاحية توقّع WithdrawExcessLamports؟

يستخدم حساب الرمز مالكه أو موقّعيه متعددي التوقيعات المُعدّين. ويستخدم السك بصلاحية سك نشطة تلك الصلاحية. أما السك الذي لا يملكها، فيجب أن يوقّع بصفته حساب المصدر نفسه، باستخدام زوج مفاتيحه أو مسار توقيع CPI من البرنامج الذي يتحكم في سك خارج المنحنى.

هل يدعم WithdrawExcessLamports Token-2022؟

نعم. تتوفر التعليمة لحسابات رموز SPL وToken-2022 التقليدية، وعمليات السك، والحسابات متعددة التوقيعات. يجب على التكاملات حساب الإيجار من طول بيانات المصدر الفعلي، لأن امتدادات Token-2022 قد تجعل الحسابات أكبر، كما يمكن لـ CPI Guard المقفل منع التنفيذ القائم على الغلاف.

هل يمكن لـ WithdrawExcessLamports استنزاف حساب رمز إلى ما دون حد الإعفاء من الإيجار؟

لا. يحسب برنامج الرموز الحد الأدنى المطلوب للمصدر ولا ينقل سوى الفرق الذي يزيد عنه. وتُرفض حسابات رموز SOL الأصلية المغلفة. ومع ذلك، ينبغي للتطبيقات معاينة الحالة المباشرة لأن أرصدة الحسابات وأطوال البيانات وإعدادات الإيجار والصلاحية المتاحة قد تتغير قبل الإرسال.

WithdrawExcessLamports على Solana: دليل رموز SPL وToken-2022 | Sol Incinerator