オペレーター専用のinstructionsで、Instance.current_tree_indexをインクリメントしてスパースマークルツリーをローテーションし、出金ルートをリセットすることで、65,536件の出金からなる新しいepochを開始できます。
エスクロープログラムは、このスパースマークルツリー設計からオンチェーンのノンスビットマップ(上流で追跡中)へ移行中であり、このinstructionsはRotateBitmapになります。このページは現在のエスクロープログラムに基づいた正確な内容であり、変更が反映され次第、改訂される予定です。
アカウント
| アカウント | 書き込み可能 | 署名者 | 説明 |
|---|---|---|---|
payer | ✓ | ✓ | 手数料支払者 |
operator | ✓ | オペレーター署名者 | |
instance | ✓ | エスクローインスタンスPDA(current_tree_indexがインクリメントされる) | |
operator_pda | 署名者がプロビジョニング済みであることを証明するオペレーターPDA | ||
event_authority | EmitEvent CPI用のイベント認証PDA | ||
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から開始されます
EmitEventCPIを通じてイベントを発行します
Is this page helpful?