هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
الإيجار هو وديعة قابلة للاسترجاع، وليس رسماً. يقلل SIMD-0437 الوديعة التي يجب أن يحتفظ بها كل حساب، في خمس خطوات مستقلة. الحسابات المنشأة قبل خطوة ما تحتفظ بالرصيد الذي تم تمويله به، لذا تترك كل خطوة الحسابات مفرطة في التمويل. يمكن لبرامج SPL Token و Token-2022 إرجاع هذا الفرق من خلال
WithdrawExcessLamports دون إغلاق الحساب أو لمس رصيد الرموز. لا شيء ينتهي — الفائض يبقى في حساباتك الخاصة حتى تختار نقله.ما هو الإيجار فعلياً
كل حساب على Solana يحتفظ بوديعة SOL بحجم المساحة التي يشغلها. لا يتم إنفاقها — يتم إرجاعها بالكامل عند إغلاق الحساب. الصيغة هي:ACCOUNT_STORAGE_OVERHEAD هو 128 بايت ثابت يدفعه كل حساب بغض النظر عن حمولته. lamports_per_byte هو الثابت على مستوى الشبكة الذي يغيره SIMD-0437.
حساب SPL token قياسي بحجم 165 بايت كان يكلف دائماً (128 + 165) × 6,960 = 2,039,280 lamports — حوالي 0.00203928 SOL الذي تراه مخصوماً كلما فتحت محفظة حساب رمز مرتبط.
ما يغيره SIMD-0437
يقلل SIMD-0437lamports_per_byte من 6,960 إلى 696 — تخفيض بنسبة 90% — يتم طرحه عبر خمس بوابات ميزات منفصلة حتى يتمكن المدققون من امتصاص تأثير نمو الحالة خطوة تلو الأخرى.
تفعلت الخطوة 1 على mainnet في 3 سبتمبر 2026. وصلت الخطوة 2 إلى testnet في نفس اليوم ومن المتوقع أن تصل إلى mainnet في منتصف سبتمبر 2026؛ الخطوات 3–5 محتفظ بها لـ Agave 4.4، المتوقع حوالي نوفمبر 2026. تعامل مع الجدول الزمني على أنه قابل للتغيير — قالت المؤسسة إنها ستوقف الطرح إذا ساء نمو الحالة — واقرأ القيمة المباشرة من الكتلة بدلاً من ترميزها بشكل ثابت.
يعتمد SIMD-0437 على SIMD-0194، الذي يستبدل عتبة الإعفاء من الإيجار «لتجنب الرياضيات العائمة غير الضرورية عند تعيين معاملات الإيجار عند تفعيل الميزة». في الممارسة العملية، يحمل sysvar
Rent الآن lamports_per_byte_year = 6,333 مع exemption_threshold = 1.0، بدلاً من الانقسام القديم 3,480 × 2 الذي أنتج 6,960. لا تضرب هذين الحقلين بنفسك — استدعِ getMinimumBalanceForRentExemption واترك الكتلة تجيب.لماذا الحسابات الموجودة تحتفظ بأكثر مما تحتاج
تغيير الثابت يغير ما يحتاجه الحساب فعلياً. لا يغير ما يملكه الحساب بالفعل. حساب ممول بـ 6,960 lamports لكل بايت يحتفظ برصيده بعد تفعيل الخطوة 1، لذا فهو مفرط في التمويل بمقدار:293 × (6,960 − 6,333) = 183,711 lamports، أو حوالي 0.000184 SOL لكل حساب. حساب Token-2022 يحمل امتدادات أكبر، لذا يحتفظ بنسبة أكثر — حساب بحجم 182 بايت مفرط في التمويل بـ 310 × 627 = 194,370 lamports.
بشكل فردي هذا غبار. محفظة تفاعلت مع بضع مئات من الرموز على مدار السنين تحتفظ بمضاعف معنوي منه، وبحلول الخطوة 5 كل حساب 165 بايت يحتفظ بـ 1,835,352 lamports (حوالي 0.00184 SOL) فوق الحد الأدنى.
أي الحسابات يمكنها إرجاع الفائض
لا يمكن نقل lamports الفائضة في حساب مملوك للبرنامج إلا من قبل هذا البرنامج. ما إذا كان يمكنك استرجاع الإيجار دون إغلاق الحساب يعتمد بالكامل على البرنامج الذي يملكه.SPL Token و Token-2022
كلاهما يعرض
WithdrawExcessLamports. يبقى الحساب مفتوحاً، ويحتفظ برصيد الرموز، وينخفض ببساطة إلى الحد الأدنى الحالي.كل شيء آخر
لا توجد تعليمات مكافئة. يتم إطلاق الإيجار فقط عند إغلاق الحساب — عملية مدمرة لها شروطها الخاصة، وليست كنس إيجار.
حسابات SOL المغلفة هي الاستثناء الوحيد لبرنامج الرمز: رصيد lamport الخاص بهم هو رصيد الرمز الخاص بهم، لذا يرفضهما كلا البرنامجين مع
TokenError::NativeNotSupported. بدلاً من ذلك، يعرض كلا البرنامجين UnwrapLamports (discriminant 45) لهذه الحالة — إنه في spl-token-interface جنباً إلى جنب مع WithdrawExcessLamports، لذا يمتلكه البرنامج القديم أيضاً، وليس فقط Token-2022 — و @solana/spl-token يشحن createUnwrapLamportsInstruction له اعتباراً من 0.4.15. تخطَّ الحسابات الأصلية في كنس إيجار عادي وتعامل معها بشكل متعمد؛ النمط الآمن للقيام بذلك هو الذي تستخدمه برامج Raydium الخاصة، أدناه.
تعليمات WithdrawExcessLamports
Discriminant 38 في تعدادات التعليمات لكلا برنامجي الرموز. من spl-token-interface:
- لا تأخذ مبلغاً. يحسب البرنامج
source.lamports − rent.minimum_balance(source.data_len())بنفسه، لذا لا يمكنه أبداً أخذ حساب أقل من الحد الأدنى الحالي، ويبقى صحيحاً مع تفعيل الخطوات اللاحقة. - لا تغلق أي شيء. يحتفظ الحساب ببيانات، ومالكه، ورصيد الرموز الخاص به.
- إنها عملية idempotent. تشغيلها على حساب بالفعل عند الحد الأدنى ينقل صفر lamports وينجح.
بناء التعليمات
@solana/spl-token لا يصدر منشئ لها. اعتباراً من 0.4.15 إدخال التعداد لا يزال معلقاً — ولاحظ أن المصدر الأصلي يهجئ المُعرِّف WithdrawalExcessLamports، بحرفَي “al” الزائدين، فابحث عنه بهذا الهجاء:
programId الخاص بكل حساب. يمكن لتعليمات SPL Token و Token-2022 مشاركة معاملة، لكن يجب معالجة كل واحدة من قبل البرنامج الذي يملك حساب المصدر الخاص به.
تم قياسه على mainnet، التعليمات تكلف 270 وحدة حساب على برنامج SPL Token و 1,414 على Token-2022 — مهمل بأي حال. القيد الحقيقي هو حجم المعاملة، وليس الحساب.
العثور على الحسابات القابلة للاسترجاع
لا تشتق الفائض من معدل مرمز بشكل ثابت. اسأل الكتلة ما يحتاجه كل حساب الآن، حتى يبقى نفس الكود يعمل عبر جميع الخطوات الخمس:getMinimumBalanceForRentExemption(0) هو قناة جانبية مفيدة: تعيد بالضبط 128 × lamports_per_byte، لذا القسمة على 128 تخبرك بأي خطوة طرح تكون الكتلة عليها دون تحليل sysvar Rent.
التجميع: كم عدد التعليمات التي تناسب معاملة واحدة
كل تعليمةWithdrawExcessLamports تساهم بمفتاح حساب قابل للكتابة فريد واحد — 32 بايت في الرسالة المترجمة — بالإضافة إلى حوالي 7 بايت من ترميز التعليمات. الوجهة والسلطة ودافع الرسوم كلهم نفس المحفظة، لذا يكلفون مفتاح واحد بينهم.
مقابل حد المعاملة 1,232 بايت، تناسب حوالي 25 تعليمة مرة واحدة بعد حساب تعليمات الميزانية والـ blockhash. عشرون لكل معاملة هو رقم العمل الآمن، وهو ما تستخدمه تطبيق Raydium الخاص به. محفظة بـ 116 حساب قابل للاسترجاع تكنس إذاً في ست معاملات، برسم أساسي 5,000 lamports لكل واحدة.
لاحظ الاقتصاديات: يتم فرض الرسم لكل معاملة، وليس لكل حساب. استرجاع حسابات أقل لا يكلف أقل، وهذا هو السبب في أن الكنس الجزئي نادراً ما يستحق الرحلات الإضافية.
الاسترجاع من خلال Raydium
تقوم صفحة raydium.io/reclaim-rent بمسح حسابات SPL Token و Token-2022 للمحفظة المتصلة، وتعرض الإجمالي مقسم حسب البرنامج، وتكنس كل شيء في معاملات مجمعة. المسح للقراءة فقط — لا توقيع حتى تضغط على استرجاع كل الإيجار. تغطي الصفحة بشكل متعمد حسابات الرموز فقط. أنواع الحسابات التي يمكنها إطلاق الإيجار فقط بالإغلاق يتم استبعادها بدلاً من إدراجها كغير متاحة، لأن إغلاق حساب هو إجراء مختلف ومدمر.الاسترجاع من عرض توضيحي SDK
لافتة الإصدار. تستهدف هذه العروض التوضيحية
@raydium-io/raydium-sdk-v2@0.2.64-alpha مقابل Solana mainnet-beta، تم التحقق منها في سبتمبر 2026؛ مستودع raydium-sdk-V2-demo نفسه يثبت حالياً 0.2.62-alpha، والاثنان قابلان للتبديل هنا. يتم ترميز WithdrawExcessLamports يدوياً وهو مستقل عن إصدار SDK — يتم استخدام SDK فقط لبناء المعاملات والتجميع.raydium-sdk-V2-demo/src/rent:
reclaimRent.ts عند 20 حساب لكل معاملة ويوقع جميع الدفعات في ممر واحد:
simulateTransaction مع accounts.addresses يعيد أرصدة lamport بعد التنفيذ، وهي أرخص طريقة للتأكد من أن الحسابات تطابق ما ستفعله الكتلة فعلياً.
ما تكنسه برامج Raydium على جانبهم الخاص
محفظتك ليست المكان الوحيد الذي يحرر فيه التخفيض lamports. كل مجموعة تحتفظ بإيجار أيضاً — الأقبية، وسك LP، وحسابات الحالة المملوكة للبرنامج التي تم تمويلها جميعاً بالمعدل القديم. هذا الإيجار ينتمي للبروتوكول، وليس لـ LPs: تم دفعه من قبل من أنشأ الحساب، وليس جزءاً من احتياطيات أي مجموعة، ولم يدخل أبداً المنحنى. اكتسبت ثلاثة برامج تعليمات إدارية في 2026-09-09 لإرجاعها:
العناوين موجودة في
reference/program-addresses. لم تكن CLMM و Stable AMM جزءاً من هذا الإصدار.
لا شيء هنا يؤثر على LP أو متاجر. تنقل هذه التعليمات lamports فقط. أرصدة الرموز، بيانات الحساب، المالكون، حالة المجموعة، إمداد LP، عدادات الرسوم والمنحنى كلها لم تتغير، ولا يمكن لأي منها إغلاق حساب. عرض أسعار المجموعة للمبادلة متطابق قبل وبعد الكنس. لا توجد إجراءات من جانب المستخدم، لا اختيار، ولا موعد نهائي.
أشكال الحسابات الثلاثة التي يتعامل معها كل برنامج
جميعها تتبع نفس الإرسال، على مالك حساب المصدر:- حساب رمز أو سك مملوك لـ PDA سلطة برنامج — يقوم البرنامج بـ CPI لـ
WithdrawExcessLamports(discriminant 38) لبرنامج الرمز، موقعاً كـ PDA. - قبو SOL مغلف — يرفض
WithdrawExcessLamportsالحسابات الأصلية، لذا يقوم البرنامج بـSyncNativeأولاً (الذي يطوي الفائض المتبرع به فيamountالمغلف)، يقيس بالضبط كم نما المبلغ المغلف،UnwrapLamportsلهذا الدلتا، ثم يؤكد أن الرصيد المغلف عاد إلى قيمته السابقة للمزامنة. إذا فشل هذا الفحص، تعود التعليمات بأكملها معLamportsCalculateError. هذا هو السبب في أن قبو مجموعة جانب SOL يحتفظ بسيولته الكاملة من خلال الكنس. - حساب حالة مملوك للبرنامج —
AmmInfo،PoolState،AmmConfig،ObservationState،PlatformConfig، وما إلى ذلك. يمكن للبرنامج خصم حساباته الخاصة مباشرة، لذا ينقل الرصيد إلىrent.minimum_balance(data_len)بدون CPI على الإطلاق.
تعتمد هذه المسارات على برنامج الرمز المنشور، وليس على إصدار crate. تقوم جميع البرامج الثلاثة بترميز تعليمات الرمز يدوياً — بايت
38 واحد لـ WithdrawExcessLamports، 45 بالإضافة إلى COption<u64> لـ UnwrapLamports — وترسلها إلى أي برنامج رمز يملك حساب المصدر. كلا التعليمات موجودة في برامج SPL Token و Token-2022 الحالية على mainnet. محاكي محلي أو اختبار يشغل بناء SPL Token قديم مجمع لا ينفذهما، والكنس ضده يفشل على discriminator غير معروف بدلاً من أي شيء في برنامج Raydium. اختبر هذه المسارات مقابل برنامج رمز مستنسخ من mainnet.ما لا يزال لا يمكن استرجاعه في المكان
إيجار موضع CLMM لم يتغير من كل هذا — يعود عند إغلاق الموضع، كما تقول الجدول أعلاه. نفس الشيء بالنسبة لـ LaunchLab base mint: تعليمات التهيئة تلغيMintTokens في نفس الاستدعاء الذي يسك الإمداد، لذا لا يمكن لأي مفتاح أبداً توقيع WithdrawExcessLamports لهذا السك وإيجاره عالق بالتصميم.
هل يجب عليك الاسترجاع الآن أم الانتظار؟
كلاهما جيد، والفرق صغير على أي حال:- الفائض لا يذهب إلى أي مكان. يجلس في حساباتك الخاصة. لا شيء ينتهي، لا شيء يتم كنسه، لا موعد نهائي ينطبق.
- الانتظار يركب. كل خطوة تحرر المزيد من نفس الحسابات، وكنس واحد بعد الخطوة 5 يكلف نفس الرسوم مثل كنس واحد اليوم.
- الاسترجاع الآن لا يتنازل عن الخطوات اللاحقة. حساب تكنسه اليوم هو ببساطة عند الحد الأدنى الحالي؛ الخطوة التالية تجعله مفرط التمويل مرة أخرى ويمكنك كنسه مرة أخرى.
قراءة إضافية
SIMD-0437
الاقتراح نفسه — بوابات الميزات الخمس والمنطق الكامن وراء تدرج التخفيض.
تخفيض الإيجار
صفحة طرح Solana: الخطوة الحالية والجدول الزمني وما يتغير للحسابات الجديدة.
تخفيض الإيجار: تحليل مدعوم بالبيانات
الاقتصاديات، وخطر نمو الحالة الذي يهدف الطرح المتدرج إلى إدارته.
نموذج الحساب
كيف يتم تمويل حسابات Solana وملكيتها وإغلاقها — الخلفية لكل ما سبق.

