Réinitialiser la racine SMT

Instruction réservée à l'opérateur qui fait pivoter le Sparse Merkle Tree en incrémentant Instance.current_tree_index et en réinitialisant la racine de retrait, permettant un nouvel epoch de 65 536 retraits.

Le programme d'entiercement migre de cette conception de Sparse Merkle Tree vers un bitmap de nonces on-chain (suivi en amont), où cette instruction devient RotateBitmap. Cette page est exacte par rapport au programme d'entiercement actuel et sera remaniée une fois ce changement appliqué.

Comptes

CompteModifiableSignataireDescription
payer✓✓Payeur des frais
operator✓Signataire de l'opérateur
instance✓PDA de l'instance d'entiercement (current_tree_index incrémenté)
operator_pdaPDA de l'opérateur prouvant que le signataire est provisionné
event_authorityPDA d'autorité d'événement pour le CPI EmitEvent
private_channel_escrow_programProgramme d'entiercement (auto-référence pour CPI)

Paramètres

ParamètreTypeDescription
expected_current_tree_indexu64Protection contre le rejeu ; doit correspondre à Instance.current_tree_index, sinon l'appel échoue

Retours

Retourne un TransactionBuilder pouvant être utilisé pour construire et envoyer la transaction.

Exemple

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
});

Notes importantes

  • Réservé à l'opérateur : nécessite un operator_pda valide ; lève InvalidOperatorPda dans le cas contraire
  • expected_current_tree_index doit être égal à Instance.current_tree_index au moment de l'appel ; une valeur obsolète lève UnexpectedTreeIndex, protégeant contre le rejeu d'une réinitialisation déjà effectuée
  • Incrémente Instance.current_tree_index ; les nonces valides dans l'epoch précédent de l'arbre sont invalidés après la rotation
  • Le service operator-private-channel appelle ceci automatiquement lorsque transaction_nonce % 65536 == 0 (et nonce > 0), signalant le début d'un nouvel epoch ; il ne devrait pas être nécessaire de l'appeler manuellement en fonctionnement normal
  • Après la rotation, la racine de retrait est réinitialisée à l'arbre vide, ainsi les nouveaux retraits repartent d'un SMT vierge
  • Émet un événement via le CPI EmitEvent

Is this page helpful?

Table des matières

Modifier la page
© 2026 Fondation Solana. Tous droits réservés.