النونسات الدائمة

ملخص

تستبدل معاملات النونس الدائم الهاش الكتلي الأخير بقيمة نونس مخزنة، مما يزيل نافذة انتهاء الصلاحية البالغة 150 فتحة للمعاملة. وهذا يتيح التوقيع دون اتصال والتقديم المتأخر.

قد يتم إيقاف النونسات الدائمة في إصدار مستقبلي. راجع نقاش SIMD للحصول على التفاصيل.

النونسات الدائمة

تستبدل معاملة النونس الدائم الهاش الكتلي الأخير بقيمة نونس مخزنة، مما يزيل نافذة انتهاء الصلاحية البالغة 150 فتحة. وهذا يتيح التوقيع دون اتصال والتقديم المتأخر.

كيفية عمل معاملات النونس

حساب النونس هو حساب مملوك لبرنامج النظام يخزن قيمة State::Initialized تحتوي على ثلاثة حقول: مفتاح عام للسلطة (من يمكنه تقديم النونس)، وقيمة نونس دائمة (هاش مشتق من هاش كتلي حديث)، ولامبورتس لكل توقيع (معدل الرسوم عندما تم تقديم النونس آخر مرة).

لاستخدام نونس دائم:

  1. إنشاء وتهيئة حساب نونس باستخدام CreateAccount + InitializeNonceAccount
  2. بناء المعاملة مع AdvanceNonceAccount كـ التعليمة الأولى وقيمة النونس كـ recent_blockhash
  3. توقيع المعاملة (يمكن القيام بذلك دون اتصال، حيث أن النونس لا ينتهي)
  4. التقديم عند الاستعداد

كشف النونس

يكتشف وقت التشغيل معاملات النونس من خلال التحقق مما إذا كانت التعليمة الأولى (الفهرس NONCED_TX_MARKER_IX_INDEX = 0) هي استدعاء لبرنامج النظام مع تعليمة AdvanceNonceAccount. يجب أن يكون حساب النونس هو الحساب الأول لتلك التعليمة ويجب أن يكون قابلاً للكتابة. راجع get_durable_nonce.

تدفق التحقق من nonce

عندما لا يتم العثور على recent_blockhash الخاص بالمعاملة في BlockhashQueue، يتحقق المدقق (validator) مما إذا كانت معاملة nonce صالحة عبر check_transaction_age:

  1. يجب أن يختلف durable_nonce المخزن في nonce عن nonce الدائم التالي (المشتق من blockhash الحالي). هذا يضمن أن nonce لم يتم استخدامه بالفعل في هذا البلوك
  2. يجب تحميل حساب nonce ويجب تحليله كـ State::Initialized
  3. يجب أن يطابق durable_nonce المخزن recent_blockhash الخاص بالمعاملة

يتم إجراء فحص توقيع صلاحية nonce لاحقاً (validate_transaction_nonce).

إذا نجحت جميع الفحوصات، يتم تقديم nonce إلى قيمة nonce الدائم التالية قبل بدء التنفيذ. عند فشل التنفيذ، يتم الاحتفاظ بـ nonce المتقدم ودافع الرسوم المخصوم منه الرسوم (مما يمنع إعادة التشغيل مع تحصيل الرسوم).

سلوك فشل nonce

إذا فشل التحقق من معاملة nonce (تم استخدام nonce بالفعل، لم يتم توقيع الصلاحية، لم يتم العثور على الحساب)، يتم إسقاط المعاملة بالكامل. لا يتم تحصيل رسوم، ولا تحدث تغييرات في الحالة.

إذا نجح التحقق من معاملة nonce لكن فشل التنفيذ (أرجعت تعليمة خطأ)، يتم تقديم nonce ويتم تحصيل الرسوم. هذا يمنع إعادة تشغيل المعاملة مع ضمان تعويض المدقق (validator).

Is this page helpful?

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

تعديل الصفحة

تدار بواسطة

© 2026 مؤسسة سولانا.
جميع الحقوق محفوظة.
تواصل معنا