igneum/bench/proof-systems
2026-10-06 12:06:56 +00:00
..
rows bench/proof-systems: PC 2 rows (job bench-a-pc2, beside the miner): SP1 stock v1 shard 14.8 s at 22,477 MiB, patched default 15.1 s at 18,637 MiB, patched 2^26 27.0 s at 12,012 MiB; the prototype full shard 37.6 s at 30,413 MiB stock, 138.0 s at 12,129 MiB patched 2^26; every proof verified in 0.32 s 2026-10-06 12:06:56 +00:00
README.md bench/proof-systems: the fixtures named right (block-338-shard1 is the prototype full shard, the empty shard is block-72854) 2026-10-06 12:06:18 +00:00
run.sh bench: run.sh --patched-env; the PC 2 bench job A script (SP1 stock and patched, default and 2^26, beside the miner) 2026-10-06 11:57:57 +00:00
TABLE.md bench/proof-systems: PC 2 rows (job bench-a-pc2, beside the miner): SP1 stock v1 shard 14.8 s at 22,477 MiB, patched default 15.1 s at 18,637 MiB, patched 2^26 27.0 s at 12,012 MiB; the prototype full shard 37.6 s at 30,413 MiB stock, 138.0 s at 12,129 MiB patched 2^26; every proof verified in 0.32 s 2026-10-06 12:06:56 +00:00
table.mjs bench/proof-systems: run.sh portable (GNU time on Linux, host and out paths, a row label, the patched server's HOME), the table keys on the label and fixture 2026-10-06 11:56:22 +00:00

Proof-system watch

One fixed shard, every candidate, one row each. The row says what a 12 GB card and a phone verifier would see; the quarterly run says what moved.

The fixed shard

Three fixtures, shard 0 of each: proving/fixtures/fees-v1-shards2.json (the adopted shard size S_p, 4,717,439 SP1 cycles, "the v1 shard"), proving/fixtures/block-338-shard1.json (one FULL shard at the prototype shard size, about 60 M cycles: the heaviest shard the chain ever cut; 30 GB on the stock SP1 server) and proving/fixtures/block-72854-empty-block-first.json (an empty block, "the empty shard"). The statement is igneum_prove_core::shard::shard_statement; every candidate commits the same ShardOutput bytes. The 12 GB tier is judged on the v1 shard; the prototype shard is the ceiling, not the gate.

The candidates and how each is run

Candidate Binary How Recursion Audit
SP1 stock 6.8.1 (Hypercube: SP1 6.x is the Hypercube prover, docs/analysis/proving-methods.md 1.1) proving/igneum-prove/target/release/igneum-prove-host --mode compressed --shard 0, SP1_PROVER=cpu on the Mac, cuda on PC 2 yes (compressed, aggregator guest) yes (KALOS, Cantina, Zellic, Veridise; docs/plans/funding.md 2a)
SP1 patched server (the prover-floor agent's v3/v4 build) the same host, ~/.sp1/bin/sp1-gpu-server replaced PC 2 only (HOME=/opt/igneum-floor/home); n/a on the Mac (no CUDA) yes the server fork is not audited; the guest and verifier are the stock ones
SP1 Hypercube separate release n/a the stock row is the Hypercube prover; no separate release exists to run
RISC Zero (proof system 2) proving/igneum-prove-r0/target/release/igneum-prove-r0-host --mode compressed --shard 0, Metal on the Mac, CUDA on PC 2 yes (succinct receipt; composition for an aggregator) yes (Veridise, Hexens; funding.md 2a)
Jolt n/a no guest for our shard, no shipped recursion, no Metal release used here (proving-methods.md route F): n/a until a guest is written no no

The row

rows/<date>-<machine>-<candidate>.json: candidate, machine, backend (cpu|cuda|metal), fixture, shard, cycles, wall_s, prove_s, peak_memory_mib (max RSS on the Mac; nvidia-smi memory.used on a CUDA box), proof_bytes, verify_s (one core), recursion, audit, verified (by the pinned verifier), command, source. node table.mjs renders every row into the table below. A cell that was not measured says n/a and why.

Latest table

(rendered by node bench/proof-systems/table.mjs > bench/proof-systems/TABLE.md)