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. تصل الخطوات المتبقية عند تفعيل بوابات الميزات الخاصة بها؛ تعامل مع الجدول الزمني كموضوع للتغيير واقرأ القيمة المباشرة من الكتلة بدلاً من ترميزها بشكل ثابت.
يعتمد SIMD-0437 على SIMD-0194، الذي يستبدل عتبة الإعفاء من الإيجار «لتجنب الرياضيات العائمة غير الضرورية عند تعيين معاملات الإيجار عند تفعيل الميزة». في الممارسة العملية، يحمل Rent sysvar الآن 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. أضاف Token-2022 UnwrapLamports (discriminant 45) لهذه الحالة؛ @solana/spl-token يشحن createUnwrapLamportsInstruction لها اعتباراً من 0.4.15. تخطَّ الحسابات الأصلية في كنس الإيجار وتعامل معها بشكل متعمد.

تعليمات WithdrawExcessLamports

Discriminant 38 في تعدادات التعليمات لكلا برنامجي الرموز. من spl-token-interface:
ثلاث خصائص تجعلها آمنة للتشغيل على كل حساب في محفظة:
  • لا تأخذ مبلغاً. يحسب البرنامج source.lamports − rent.minimum_balance(source.data_len()) بنفسه، لذا لا يمكنه أبداً أخذ حساب أقل من الحد الأدنى الحالي، ويبقى صحيحاً عند تفعيل الخطوات اللاحقة.
  • لا تغلق أي شيء. يحتفظ الحساب ببيانات، ومالكه، ورصيد الرموز.
  • إنها عملية idempotent. تشغيلها على حساب بالفعل عند الحد الأدنى ينقل صفر lamports وينجح.
حساب رمز مجمد لا يزال مؤهلاً: التجميد يقيد حركة الرموز، وليس lamports.

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

@solana/spl-token لا يصدر منشئ لها. اعتباراً من 0.4.15 إدخال التعداد لا يزال معلقاً:
قم بترميزها مباشرة. الحمولة هي بايت discriminant واحد:
مرر programId لكل حساب. تعليمات SPL Token و Token-2022 يمكن أن تشارك معاملة، لكن يجب معالجة كل واحدة من قبل البرنامج الذي يملك حساب المصدر الخاص بها. تم قياسه على mainnet، التعليمات تكلف 270 وحدة حساب على برنامج SPL Token و 1,414 على Token-2022 — مهمل بأي حال. القيد الحقيقي هو حجم المعاملة، وليس الحساب.

العثور على الحسابات القابلة للاسترجاع

لا تشتق الفائض من معدل مرمز بشكل ثابت. اسأل الكتلة ما يحتاجه كل حساب الآن، حتى يبقى نفس الكود يعمل عبر جميع الخطوات الخمس:
getMinimumBalanceForRentExemption(0) هو قناة جانبية مفيدة: تعيد بالضبط 128 × lamports_per_byte، لذا القسمة على 128 تخبرك أي خطوة طرح الكتلة عليها دون تحليل Rent sysvar.

التجميع: كم عدد التعليمات التي تناسب معاملة واحدة

كل تعليمة WithdrawExcessLamports تساهم بمفتاح حساب قابل للكتابة واحد فريد — 32 بايت في الرسالة المترجمة — بالإضافة إلى حوالي 7 بايت من ترميز التعليمات. الوجهة والسلطة ودافع الرسوم كلهم نفس المحفظة، لذا يكلفون مفتاح واحد بينهم. مقابل حد المعاملة 1,232 بايت، حوالي 26 تعليمة تناسب بمجرد حساب الميزانية وتعليمات blockhash. عشرون لكل معاملة هو رقم العمل الآمن، وهو ما تستخدمه تطبيق Raydium الخاص به. محفظة بـ 116 حساب قابل للاسترجاع لذا تكنس في ست معاملات، برسم أساسي واحد 5,000 lamport لكل منها. لاحظ الاقتصاديات: يتم فرض الرسم لكل معاملة، وليس لكل حساب. استرجاع حسابات أقل لا يكلف أقل، وهذا هو السبب في أن كنس جزئي نادراً ما يستحق الرحلات الإضافية.

الاسترجاع عبر Raydium

صفحة raydium.io/reclaim-rent تمسح حسابات SPL Token و Token-2022 للمحفظة المتصلة، وتعرض الإجمالي مقسم حسب البرنامج، وتكنس كل شيء في معاملات مجمعة. المسح للقراءة فقط — لا توقيع حتى تضغط على Reclaim all rent. تغطي الصفحة بشكل متعمد حسابات الرموز فقط. أنواع الحسابات التي يمكنها إطلاق الإيجار فقط بالإغلاق يتم استبعادها بدلاً من إدراجها كغير متاحة، لأن إغلاق حساب هو إجراء مختلف ومدمر.

الاسترجاع من عرض SDK التوضيحي

لافتة الإصدار. تستهدف العروض التوضيحية @raydium-io/raydium-sdk-v2@0.2.42-alpha مقابل Solana mainnet-beta، تم التحقق منها 2026-09. يتم ترميز WithdrawExcessLamports يدويًا وهو مستقل عن إصدار SDK؛ يتم استخدام SDK فقط لبناء المعاملات والتجميع.
نصان برمجيان في raydium-sdk-V2-demo/src/rent:
reclaimRent.ts يجمع في 20 حساب لكل معاملة ويوقع جميع الدفعات في ممر واحد:
محاكاة قبل الإرسال. simulateTransaction مع accounts.addresses يعيد أرصدة lamport بعد التنفيذ، وهي أرخص طريقة للتأكد من أن الحسابات تطابق ما ستفعله الكتلة فعلياً.

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

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

قراءة إضافية

SIMD-0437

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

الإيجار المخفض

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

تخفيض الإيجار: تحليل مدعوم بالبيانات

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

نموذج الحساب

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