Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
الإيجار هو وديعة قابلة للاسترجاع، وليس رسماً. يخفض SIMD-0437 الوديعة التي يجب أن يحتفظ بها كل حساب، في خمس خطوات مستقلة. الحسابات المنشأة قبل خطوة ما تحتفظ بالرصيد الذي تم تمويله به، لذا تترك كل خطوة الحسابات ممولة بزيادة. يمكن لبرامج SPL Token و Token-2022 إرجاع هذا الفرق من خلال WithdrawExcessLamports دون إغلاق الحساب أو لمس رصيد الرموز الخاص به. لا شيء ينتهي — الفائض يجلس في حساباتك الخاصة حتى تختار نقله.
اقرأ نموذج الحساب أولاً إذا كنت جديداً على كيفية تمويل حسابات Solana.

ما هو الإيجار فعلياً

كل حساب على Solana يحتفظ بوديعة SOL بحجم المساحة التي يشغلها. لا يتم إنفاقها — يتم إرجاعها بالكامل عند إغلاق الحساب. الصيغة هي:
ACCOUNT_STORAGE_OVERHEAD هو 128 بايت ثابت يدفعه كل حساب بغض النظر عن حمولته. lamports_per_byte هو الثابت على مستوى الشبكة الذي يغيره SIMD-0437. حساب رمز SPL قياسي بحجم 165 بايت كان يكلف دائماً (128 + 165) × 6,960 = 2,039,280 lamports — حوالي 0.00203928 SOL الذي تراه مخصوماً كلما فتح محفظة حساب رمز مرتبط.

ما يغيره SIMD-0437

يقلل SIMD-0437 lamports_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، لذا فهو ممول بزيادة بمقدار:
لحساب رمز SPL بحجم 165 بايت بعد الخطوة 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. يبقى الحساب مفتوحاً، ويحتفظ برصيد الرموز الخاص به، وينخفض ببساطة إلى الحد الأدنى الحالي.

كل شيء آخر

لا توجد تعليمات مكافئة. يتم إطلاق الإيجار فقط عند إغلاق الحساب — عملية مدمرة لها شروطها الخاصة، وليست كنس إيجار.
بشكل ملموس، لأنواع الحسابات التي يحتفظ بها مستخدمو Raydium: حسابات 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 وينجح.
حساب رمز مجمد لا يزال مؤهلاً: التجميد يقيد حركة الرموز، وليس lamports.

بناء التعليمات

@solana/spl-token لا يصدر منشئ لها. اعتباراً من 0.4.15 إدخال التعداد لا يزال معلقاً — ولاحظ أن upstream يكتب المعرف WithdrawalExcessLamports، مع “al” الإضافية، لذا ابحث عن ذلك:
قم بترميزها مباشرة. الحمولة هي بايت discriminant واحد:
مرر 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 للمحفظة المتصلة، وتعرض الإجمالي مقسم حسب البرنامج، وتكنس كل شيء في معاملات مجمعة. المسح للقراءة فقط — لا توقيع حتى تضغط على Reclaim all rent. تغطي الصفحة بشكل متعمد حسابات الرموز فقط. أنواع الحسابات التي يمكنها إطلاق الإيجار فقط بالإغلاق يتم استبعادها بدلاً من إدراجها كغير متاحة، لأن إغلاق حساب هو إجراء مختلف ومدمر.

الاسترجاع من عرض 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 لإرجاعها، وتبعتها CLMM في 2026-09-30: العناوين موجودة في reference/program-addresses. لا يوجد ما يعادل Stable AMM. لا شيء هنا يؤثر على LP أو متاجر. تنقل هذه التعليمات lamports فقط. أرصدة الرموز، وبيانات الحساب، والمالكون، وحالة المجموعة، وإمداد LP، وعدادات الرسوم والمنحنى كلها لم تتغير، ولا يمكن لأي منها إغلاق حساب. عرض أسعار المجموعة للمبادلة متطابق قبل وبعد الكنس. لا توجد إجراءات من جانب المستخدم، ولا اختيار، ولا موعد نهائي.

أشكال الحسابات الثلاثة التي يتعامل معها كل برنامج

يتبع الجميع نفس الإرسال، على مالك حساب المصدر:
  • حساب رمز أو سك مملوك لـ PDA سلطة برنامج: يقوم البرنامج بـ CPI لـ WithdrawExcessLamports لبرنامج الرمز (discriminant 38)، موقعاً كـ PDA. في CLMM هذا PDA هو PoolState نفسه، لذا استدعاء واحد يغطي أقبية مجموعة واحدة.
  • قبو SOL المغلف — WithdrawExcessLamports يرفض الحسابات الأصلية، لذا يقوم البرنامج بـ SyncNative أولاً (الذي يطوي الفائض المتبرع به في amount المغلف)، يقيس بالضبط كم نما المبلغ المغلف، UnwrapLamports لهذا الدلتا، ثم يؤكد أن الرصيد المغلف عاد إلى قيمته قبل المزامنة. إذا فشل هذا الفحص، تعود التعليمات بأكملها مع LamportsCalculateError. هذا هو السبب في أن قبو مجموعة جانب SOL يحتفظ بسيولته الكاملة من خلال الكنس.
  • حساب حالة مملوك للبرنامج — AmmInfo، PoolState، AmmConfig، ObservationState، PlatformConfig، TickArrayState CLMM، وما إلى ذلك. يمكن للبرنامج خصم حساباته الخاصة مباشرة، لذا ينقل الرصيد إلى rent.minimum_balance(data_len) بدون CPI على الإطلاق.
يتم تخطي الحسابات المملوكة لأي شيء آخر بصمت، لذا تمرير حساب غير ذي صلة غير ضار بدلاً من أن يكون قاتلاً. تستحق تسلسل SOL المغلف النسخ إذا كنت تحتفظ بحسابات أصلية خاصة بك: إنها الطريقة الوحيدة لأخذ الفائض من حساب wSOL دون تغيير ما يبلغ عنه الحساب كرصيد رمز.
تعتمد هذه المسارات على برنامج الرمز المنشور، وليس على إصدار crate. تقوم جميع البرامج الأربعة بترميز تعليمات الرمز يدوياً — بايت 38 واحد لـ WithdrawExcessLamports، 45 بالإضافة إلى COption<u64> لـ UnwrapLamports — وترسلها إلى أي برنامج رمز يملك حساب المصدر. كلا التعليمات موجودة في برامج SPL Token و Token-2022 الحالية على mainnet. لا يطبق مدقق محلي أو اختبار harness يشغل بناء SPL Token مجمع أقدم هذه التعليمات، والكنس ضده يفشل على discriminator غير معروف بدلاً من أي شيء في برنامج Raydium. اختبر هذه المسارات مقابل برنامج رمز مستنسخ من mainnet.

ما لا يزال لا يمكن استرجاعه في المكان

لا يزال لا يمكنك استرجاع إيجار موضع CLMM في المكان بنفسك. يعود عند إغلاق الموضع، كما تقول الجدول أعلاه. CollectExcessLamports الخاص بـ CLMM لا يتحقق من من مول حساباً، لذا يمكنه أخذ الفائض من PersonalPositionState أو LimitOrderState. يبقى الحساب عند الحد الأدنى للإيجار، وهذا الحد الأدنى هو ما يعيده الإغلاق. نفس الشيء بالنسبة لـ LaunchLab base mint: تعليمات التهيئة تلغي MintTokens في نفس الاستدعاء الذي يسك الإمداد، لذا لا يمكن لأي مفتاح أبداً توقيع WithdrawExcessLamports لهذا السك وإيجاره عالق بالتصميم.

هل يجب عليك الاسترجاع الآن أم الانتظار؟

كلاهما جيد، والفرق صغير على أي حال:
  • الفائض لا يذهب إلى أي مكان. يجلس في حساباتك الخاصة. لا شيء ينتهي، لا شيء يتم كنسه، لا موعد نهائي ينطبق.
  • الانتظار يركب. كل خطوة تحرر المزيد من نفس الحسابات، وكنس واحد بعد الخطوة 5 يكلف نفس الرسوم مثل كنس واحد اليوم.
  • الاسترجاع الآن لا يتنازل عن الخطوات اللاحقة. حساب تكنسه اليوم هو ببساطة عند الحد الأدنى الحالي؛ الخطوة التالية تجعله ممول بزيادة مرة أخرى ويمكنك كنسه مرة أخرى.
التكلفة الحقيقية الوحيدة للاسترجاع المبكر هي الرسم الأساسي، والتكلفة الحقيقية الوحيدة للانتظار هي أن lamports تبقى ثابتة لفترة أطول.

قراءة إضافية

SIMD-0437

الاقتراح نفسه — بوابات الميزات الخمس والمنطق الكامن وراء خطوات التخفيض.

تقليل الإيجار

صفحة طرح Solana: الخطوة الحالية والجدول الزمني وما يتغير للحسابات الجديدة.

تقليل الإيجار: تحليل مدعوم بالبيانات

الاقتصاديات، وخطر نمو الحالة الذي يهدف الطرح المتدرج إلى إدارته.

نموذج الحساب

كيف يتم تمويل حسابات Solana وملكيتها وإغلاقها — الخلفية لكل ما سبق.