تعليمة مخصصة للمشغّل فقط، تقوم بتدوير شجرة ميركل المتفرقة عبر زيادة
Instance.current_tree_index وإعادة تعيين جذر السحب، مما يتيح دورة جديدة
تضمّ 65,536 عملية سحب.
يجري ترحيل برنامج الضمان من تصميم شجرة ميركل المتفرقة هذا إلى
خريطة بت nonce على السلسلة (يُتتبّع upstream)، حيث تصبح هذه التعليمة
RotateBitmap. تعكس هذه الصفحة الوضع الحالي لبرنامج الضمان
وستُعاد صياغتها بمجرد تطبيق هذا التغيير.
الحسابات
| الحساب | قابل للكتابة | موقِّع | الوصف |
|---|---|---|---|
payer | ✓ | ✓ | دافع الرسوم |
operator | ✓ | موقِّع المشغّل | |
instance | ✓ | PDA مثيل الضمان (يُزاد current_tree_index) | |
operator_pda | PDA المشغّل الذي يُثبت أن الموقِّع مُوفَّر | ||
event_authority | PDA سلطة الأحداث لـ EmitEvent CPI | ||
private_channel_escrow_program | برنامج الضمان (مرجع ذاتي لـ CPI) |
المعاملات
| المعامل | النوع | الوصف |
|---|---|---|
expected_current_tree_index | u64 | حارس إعادة التشغيل؛ يجب أن يطابق Instance.current_tree_index وإلا فشل الاستدعاء |
القيم المُعادة
يُعيد TransactionBuilder يمكن استخدامه لبناء المعاملة وإرسالها.
مثال
import { getResetSmtRootInstruction } from "../private-channel-escrow-program/clients/typescript/src/generated";const resetIx = getResetSmtRootInstruction({payer: operatorPayerSigner,operator: operatorSigner,instance: instancePda,operatorPda: operatorPdaAddress,eventAuthority: eventAuthorityPda,privateChannelEscrowProgram: ESCROW_PROGRAM_ID,expectedCurrentTreeIndex: currentTreeIndex // u64});
ملاحظات مهمة
- مخصص للمشغّل فقط: يتطلب
operator_pdaصالحاً؛ وإلا يطرحInvalidOperatorPda - يجب أن يساوي
expected_current_tree_indexقيمةInstance.current_tree_indexوقت الاستدعاء؛ وأي قيمة قديمة تطرحUnexpectedTreeIndex، للحماية من إعادة تشغيل إعادة تعيين سبق تطبيقها - يزيد
Instance.current_tree_index؛ وتُبطَل القيم العشوائية (nonces) الصالحة في دورة الشجرة السابقة بعد التدوير - تستدعي خدمة
operator-private-channelهذه التعليمة تلقائياً عندما يكونtransaction_nonce % 65536 == 0(وnonce > 0)، مما يشير إلى بداية دورة جديدة؛ ولا ينبغي استدعاؤها يدوياً في ظروف التشغيل الاعتيادية - بعد التدوير، يُعاد تعيين جذر السحب إلى الشجرة الفارغة، بحيث تبدأ عمليات السحب الجديدة من SMT جديدة
- يُصدر حدثاً عبر
EmitEventCPI
Is this page helpful?