Інструкція лише для оператора, яка виконує ротацію розрідженого дерева Меркла шляхом збільшення
Instance.current_tree_index та скидання кореня виведень, дозволяючи новому
epoch із 65 536 виведень.
Програма ескроу мігрує з цього дизайну на основі розрідженого дерева Меркла на
бітову карту нонсів у мережі (відстежується вище за течією), де ця інструкція стає
RotateBitmap. Ця сторінка відповідає поточній програмі ескроу та
буде оновлена після впровадження зазначених змін.
Акаунти
| Акаунт | Записуваний | Підписант | Опис |
|---|---|---|---|
payer | ✓ | ✓ | Платник комісії |
operator | ✓ | Підписант-оператор | |
instance | ✓ | PDA екземпляра ескроу (збільшується current_tree_index) | |
operator_pda | PDA оператора, що підтверджує надання доступу підписанту | ||
event_authority | PDA авторитету подій для CPI EmitEvent | ||
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; нонси, дійсні в попередньому epoch дерева, стають недійсними після ротації - Сервіс
operator-private-channelвикликає це автоматично, колиtransaction_nonce % 65536 == 0(іnonce > 0), сигналізуючи про початок нового epoch; за звичайних умов роботи не потребує ручного виклику - Після ротації корінь виведень скидається до порожнього дерева, тому нові виведення починаються з чистого SMT
- Генерує подію через CPI
EmitEvent
Is this page helpful?