The fact: PC 2's exporter failed blocks 58,752 to 58,843 (and the task's 58,584 to 58,984) at shard.rs:175, "shard 0 post-root from the witness", while three empty shards were later proven, verified and paid. Every failing block is empty: one blue block, one reward, the pool credit, no transactions, no payouts (igneum_exportSegments 0x0..0xe738 from the Mac node, fork 2b6d23ef). The proven block 59,507 has the same shape and the same miner as the failing 58,927. So the difference is not block content. The rule that differed: the planner's post-root of an empty segment. The exporter on PC 2 was a stale build whose core predated commit |
||
|---|---|---|
| .. | ||
| fixtures | ||
| igneum-prove | ||
| windows-wsl2 | ||
| README.md | ||
proving
Igneum proving: v0 (3 October 2026, one SP1 proof per block) and the devnet v4 shards (4 October 2026). Plan, status and measurements: docs/plans/proving-v0.md; numbers: docs/bench-log.md.
igneum-prove/: Cargo workspace.core(the port of the execution layer's executor at b7fca5a0; the cutterplan.rs, the partial-trie witnessestrie.rsandwitness.rs, the shard statementshard.rs, the block statementagg.rs),program(the shard guest),aggregator(the aggregator guest, SP1 deferred proofs of the shard program),host(modes native, execute, shard, block, all; the versionedProofSystemtrait with the stub and the SP1 implementation inhost/src/proof_system.rs),export(cuts a real block out of anigneum_exportSegmentsdump, checks the port against the node's state roots, plans the shards and checks every witness).fixtures/:block-338-shard1,block-341-shards2,block-344-shards4(one, two and four shards atS_p= 7.5 M pgas, from the private simnet oftools/prove-fixtures),block-78-incrementandblock-56-transfers(the v0 blocks, one shard each),block-56-transfers-3shards(a test cut at 200 pgas for the CPU multi-shard check).windows-wsl2/: SETUP-PROVER.bat, PROVE-SHARD.bat (the shard atS_pand the two- and four-shard blocks on the GPU), PROVE-BLOCK.bat (the small block) and the Linux scripts for the project lead's PC;make-package.shbuilds 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 -p igneum-prove-host # add --features igneum-prove-host/cuda on Linux x86_64 with an NVIDIA card
./target/release/igneum-prove-export ../../tools/prove-fixtures/seq.json 344 ../fixtures/block-344-shards4.json # replay, plan, witnesses; --budget <pgas> for a test cut
./target/release/igneum-prove-host ../fixtures/block-344-shards4.json --mode native # cut, witnesses, chain and sums, tamper checks
./target/release/igneum-prove-host ../fixtures/block-344-shards4.json --mode execute # SP1 cycles per shard and for the aggregator
./target/release/igneum-prove-host ../fixtures/block-338-shard1.json --mode shard --shard 0 --out results.json # execute, core, compressed, verified
SP1_PROVER=cuda ./target/release/igneum-prove-host ../fixtures/block-344-shards4.json --mode block --out results.json # shard proofs plus aggregation
Fixtures of real size: tools/prove-fixtures/net.sh start (a one-node simnet on ports 29300+), node tools/prove-fixtures/gen.mjs (bursts of modexp calls, transfers and Counter increments landed in one block, then the export), then the exporter per block.