igneum/proving
igneum-josh eedd136d84 Proving: shard cutter, MPT witnesses, shard and block statements in igneum-prove-core
The executor runs any contiguous range of a segment from a carried-in position and emits a boundary per transaction (cumulative gas and pgas, the carry link, the state root natively); the planner cuts at transaction boundaries to at most S_p pgas (provisional S_p = B_p / 4, the specification has no number yet), deterministically from the trace. Witnesses are partial Merkle Patricia tries (touched leaves in full, every untouched subtree as a hash, collapse-safe siblings carried) for the account trie and each touched storage trie; the guest rebuilds the pre-root from them, refuses any read they do not cover, and rebuilds the post-root after execution. The shard statement commits the prover's payout address (ledger P12) and the carry links; the block statement verifies the shard proofs in order, chains roots, links and transaction commitments, and carries the provers and the shard program id (design 5.1, 5.3). Port moved to igneum-exec b7fca5a0 (spec 7.5 pgas cap and abort).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 11:05:04 +01:00
..
fixtures Proving v0: SP1 guest and host for one Igneum block, real-block fixtures, versioned ProofSystem trait, WSL2 package for the RTX 5090 run 2026-10-03 22:30:12 +00:00
igneum-prove Proving: shard cutter, MPT witnesses, shard and block statements in igneum-prove-core 2026-10-04 11:05:04 +01:00
windows-wsl2 Prover package: protobuf-compiler in the apt list (the host build's prost crate needs protoc) 2026-10-04 09:46:32 +01:00
README.md Proving v0: SP1 guest and host for one Igneum block, real-block fixtures, versioned ProofSystem trait, WSL2 package for the RTX 5090 run 2026-10-03 22:30:12 +00:00

proving

Igneum proving v0 (3 October 2026): the first SP1 proof of an Igneum block. Plan and scope: docs/plans/proving-v0.md.

  • igneum-prove/: Cargo workspace. core (the block statement, a port of the execution layer's executor), program (the SP1 guest), host (execute, core, compressed modes; the versioned ProofSystem trait with the stub and the SP1 implementation in host/src/proof_system.rs), export (cuts a real block out of an igneum_exportSegments dump and checks the port against the node's state roots).
  • fixtures/: real simnet blocks, block-78-increment.json (the Counter increment(5) call) and block-56-transfers.json (three transfers).
  • windows-wsl2/: SETUP-PROVER.bat, PROVE-BLOCK.bat and the Linux scripts for Josh's PC; make-package.sh builds the zip.

Build and run on a machine with the SP1 toolchain (curl -L https://sp1up.succinct.xyz | bash && sp1up):

cd proving/igneum-prove
cargo build --release -p igneum-prove-export
./target/release/igneum-prove-export ../../tools/evm-smoke/seq.json 78 ../fixtures/block-78-increment.json
cargo build --release -p igneum-prove-host            # add --features igneum-prove-host/cuda on Linux x86_64 with an NVIDIA card
./target/release/igneum-prove-host ../fixtures/block-78-increment.json --mode execute   # native check + cycle count
SP1_PROVER=cuda ./target/release/igneum-prove-host ../fixtures/block-78-increment.json --mode all --out results.json