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
| Compte | Modifiable | Signataire | Description |
|---|---|---|---|
payer | ✓ | ✓ | Payeur des frais |
operator | ✓ | Signataire de l'opérateur | |
instance | ✓ | PDA de l'instance d'entiercement (current_tree_index incrémenté) | |
operator_pda | PDA de l'opérateur prouvant que le signataire est provisionné | ||
event_authority | PDA d'autorité d'événement pour le CPI EmitEvent | ||
private_channel_escrow_program | Programme d'entiercement (auto-référence pour CPI) |
Paramètres
| Paramètre | Type | Description |
|---|---|---|
expected_current_tree_index | u64 | Protection 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_pdavalide ; lèveInvalidOperatorPdadans le cas contraire expected_current_tree_indexdoit être égal àInstance.current_tree_indexau moment de l'appel ; une valeur obsolète lèveUnexpectedTreeIndex, 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-channelappelle ceci automatiquement lorsquetransaction_nonce % 65536 == 0(etnonce > 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?