Module Tezos_smart_rollup_nds_on_disk

On-disk NDS backend for the dual-state WASM PVM.

Adapts the rocksdb-backed RISC-V new durable storage (Octez_riscv_nds_disk) to the Tezos_smart_rollup_wasm_dual_state.NDS_BACKEND interface the generic dual-state functor (Tezos_smart_rollup_wasm_dual_state.Make) consumes.

include Tezos_smart_rollup_wasm_dual_state.NDS_BACKEND with module Proof = Octez_riscv_nds_disk.Proof

NDS proofs: (de)serialisation plus the start/stop hashes cross-checked against the /pvm/nds_hash marker.

type prove_session

An in-progress Prove-mode session. An NDS handle runs in one of three modes: Normal during live kernel execution, Prove to record a step's host-function operations, and Verify to replay them against a proof. open_prove_session opens this session; produce_proof seals it into a Proof.t.

open_prove_session nds switches the live Normal-mode handle nds into Prove mode, returning the prove_session and the Prove-mode handle to install in the state. Running the step against that handle records its host-function calls into the session; produce_proof then seals them into the proof. Raises Invalid_argument if nds is not in Normal mode — only kernel-driven execution should hold a non-Normal handle.

val produce_proof : prove_session -> Proof.t

Mint the NDS proof at the end of an open_prove_session.

val open_verify_session : Proof.t -> Octez_riscv_nds_common.Nds.t

open_verify_session proof opens a Verify-mode session against proof, returning the Verify-mode handle to install in the state; replaying the step against it checks each host-function call against proof.

copy nds returns a handle independent of nds: mutations to either handle are invisible to the other; both stay backed by the same underlying store. Copy-on-write — at most one lazy copy of the registry state, deferred to the next mutation of either side.

Only Normal-mode handles can be copied — Prove/Verify handles are transient in-step sessions and never live in a state at rest. Raises Invalid_argument otherwise (same precedent as open_prove_session).