SMT-root resetten

Alleen-operator-instructie die de Sparse Merkle Tree roteert door Instance.current_tree_index te verhogen en de opname-root te resetten, waardoor een nieuwe epoch van 65.536 opnames mogelijk wordt.

Het escrow-programma migreert van dit Sparse Merkle Tree-ontwerp naar een on-chain nonce-bitmap (bijgehouden upstream), waarbij deze instructie RotateBitmap wordt. Deze pagina is accuraat ten opzichte van het huidige escrow-programma en wordt herzien zodra die wijziging beschikbaar is.

Accounts

AccountSchrijfbaarOndertekenaarBeschrijving
payer✓✓Betalende partij
operator✓Operator-ondertekenaar
instance✓Escrow-instantie PDA (current_tree_index verhoogd)
operator_pdaOperator-PDA die bewijst dat de ondertekenaar is ingericht
event_authorityGebeurtenisautoriteit-PDA voor EmitEvent CPI
private_channel_escrow_programEscrow-programma (zelfverwijzing voor CPI)

Parameters

ParameterTypeBeschrijving
expected_current_tree_indexu64Replay-beveiliging; moet overeenkomen met Instance.current_tree_index, anders mislukt de aanroep

Retourwaarde

Retourneert een TransactionBuilder die kan worden gebruikt om de transactie te bouwen en te verzenden.

Voorbeeld

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

Belangrijke opmerkingen

  • Alleen voor operators: vereist een geldige operator_pda; geeft anders InvalidOperatorPda terug
  • expected_current_tree_index moet op het moment van aanroep gelijk zijn aan Instance.current_tree_index; een verouderde waarde geeft UnexpectedTreeIndex terug, als beveiliging tegen het opnieuw afspelen van een reset die al heeft plaatsgevonden
  • Verhoogt Instance.current_tree_index; nonces die geldig waren in de vorige boom-epoch worden ongeldig na rotatie
  • De operator-private-channel-service roept dit automatisch aan wanneer transaction_nonce % 65536 == 0 (en nonce > 0), wat het begin van een nieuwe epoch signaleert; onder normale werking hoeft dit niet handmatig te worden aangeroepen
  • Na rotatie wordt de opname-root teruggezet naar de lege boom, zodat nieuwe opnames starten vanuit een nieuwe SMT
  • Verstuurt een gebeurtenis via EmitEvent CPI

Is this page helpful?

Inhoudsopgave

Pagina Bewerken
© 2026 Solana Foundation. Alle rechten voorbehouden.