Скидання кореня SMT

Інструкція лише для оператора, яка виконує ротацію розрідженого дерева Меркла шляхом збільшення Instance.current_tree_index та скидання кореня виведень, дозволяючи новому epoch із 65 536 виведень.

Програма ескроу мігрує з цього дизайну на основі розрідженого дерева Меркла на бітову карту нонсів у мережі (відстежується вище за течією), де ця інструкція стає RotateBitmap. Ця сторінка відповідає поточній програмі ескроу та буде оновлена після впровадження зазначених змін.

Акаунти

АкаунтЗаписуванийПідписантОпис
payer✓✓Платник комісії
operator✓Підписант-оператор
instance✓PDA екземпляра ескроу (збільшується current_tree_index)
operator_pdaPDA оператора, що підтверджує надання доступу підписанту
event_authorityPDA авторитету подій для CPI EmitEvent
private_channel_escrow_programПрограма ескроу (самопосилання для CPI)

Параметри

ПараметрТипОпис
expected_current_tree_indexu64Захист від повторного відтворення; має збігатися з 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?

Зміст

Редагувати сторінку