Instruksi khusus operator yang merotasi Sparse Merkle Tree dengan menginkrementasi
Instance.current_tree_index dan mereset withdrawal root, memungkinkan epoch baru
sebanyak 65.536 penarikan.
Program escrow sedang bermigrasi dari desain Sparse Merkle Tree ini ke
nonce bitmap on-chain (dilacak di upstream), di mana instruksi ini menjadi
RotateBitmap. Halaman ini akurat terhadap program escrow saat ini dan
akan diperbarui setelah perubahan tersebut diterapkan.
Akun
| Akun | Dapat Ditulis | Penanda Tangan | Deskripsi |
|---|---|---|---|
payer | ✓ | ✓ | Pembayar biaya |
operator | ✓ | Penanda tangan operator | |
instance | ✓ | PDA instance escrow (current_tree_index diinkrementasi) | |
operator_pda | PDA operator yang membuktikan bahwa penanda tangan telah disediakan | ||
event_authority | PDA otoritas event untuk CPI EmitEvent | ||
private_channel_escrow_program | Program Escrow (referensi diri untuk CPI) |
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
expected_current_tree_index | u64 | Penjaga replay; harus cocok dengan Instance.current_tree_index atau pemanggilan gagal |
Kembalian
Mengembalikan TransactionBuilder yang dapat digunakan untuk membangun dan mengirim
transaksi.
Contoh
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});
Catatan Penting
- Khusus operator: memerlukan
operator_pdayang valid; melemparInvalidOperatorPdajika tidak expected_current_tree_indexharus sama denganInstance.current_tree_indexpada saat pemanggilan; nilai yang usang akan melemparUnexpectedTreeIndex, melindungi dari pemutaran ulang reset yang sudah diterapkan- Menginkrementasi
Instance.current_tree_index; nonce yang valid di epoch pohon sebelumnya akan dibatalkan setelah rotasi - Layanan
operator-private-channelmemanggil ini secara otomatis ketikatransaction_nonce % 65536 == 0(dannonce > 0), menandakan dimulainya epoch baru; tidak perlu dipanggil secara manual dalam operasi normal - Setelah rotasi, withdrawal root direset ke pohon kosong, sehingga penarikan baru dimulai dari SMT yang baru
- Memancarkan event melalui CPI
EmitEvent
Is this page helpful?