Skip to content

feat(node): wire opt-in parent-state multiproof experiment - #48

Draft
dghelm wants to merge 10 commits into
mainfrom
plan/issue-1066-multiproof
Draft

feat(node): wire opt-in parent-state multiproof experiment#48
dghelm wants to merge 10 commits into
mainfrom
plan/issue-1066-multiproof

Conversation

@dghelm

@dghelm dghelm commented Sep 5, 2026

Copy link
Copy Markdown

Wires opt-in dogeos_getProofs from adapter #16 into the rollup node. --rpc.experimental-multiproof defaults off, follows each transport's Eth selection, rejects registration collisions, and stays separate from the authenticated Engine endpoint.

All compact dependency manifests, lockfile sources and the source guard pin published adapter commit 4e2b66dd9f0790ad854cac4fb34ac338cf9d6afa. There are no path overrides, registry upgrades or underlying Reth/revm pin changes.

Adds real-node proof fixtures and a retained Tsuki range producer with transfers, contract creation and storage writes. Test-utils observer injection uses the existing single registration hook. A file-control barrier waits for observer idle and acquires all configured shared proof permits, snapshots under those guards, then releases them before acknowledging. Uncertain work or a barrier timeout permanently poisons fixture reuse. Separate ordinary/shared provider baselines join their worker and use one frozen state/root with the actual target vector exported by the core runner.

Companion core experiments retain the performance tradeoffs:

  • Unoptimized multiproof reduces median paired whole-node CPU by 20–46% but increases completion time by 21–38% against bounded Individual 8/8/5. Performance promotion remains parked.
  • Optimized Individual 8/8/5 reduces median paired completion time by 46–66% versus 1/8/1; no alternative configuration clears the registered gates in all four matrices.
  • At 8/8/5 per job, two concurrent chunk subprocesses improve median paired throughput by 52–74%; four improve it by 143–195%. Node CPU per chunk rises by 0–17% and 9–47%, respectively. Neither count stays within the registered 10% CPU budget across all four matrices, so the experimental one-job baseline is retained under that budget.

The job experiment reuses the same sealed node executable and 25 proof permits. All 576 final chunks, 144 group barriers, exact artifact comparisons, process/memory accounting and host-pressure gates pass. Both nodes stop cleanly and pass read-only retained-DB checks at heads 97 and 129. This measures subprocess pipeline throughput; production coordinator leases, artifact publication and deployed-service throughput remain unvalidated. Earlier experiment-specific host-pressure and CPU-quantization caveats remain in their reports.

Validation against published Git sources: the optimized node fixture suite passes six tests, with four opt-in tests ignored; dependency-source guard and all 14 rejection fixtures pass. Independent review approves source and experiment evidence. The measured node executable is built from 1d98600357f81c692b05be1ca3d4a050b58478db; subsequent fixture-only commit 317512a0834e0c1929f435b0288d9e62a4c99b49 fixes six Clippy diagnostics after measurement.

CI on 317512a passes Clippy, formatting and unit tests. Two integration failures remain undiagnosed: requeues_transactions_after_update_fcs_head hits a Reth nippy-jar slice-index panic followed by an event timeout; docker_test_remote_block_source_recovery fails to make the L2 node ready after 30 attempts. Integration job, Docker Compose integration job.

Results and reproduction: job scaling results, job scaling runbook, optimized Individual results, multiproof overlap results.

Related draft: core #1090, stacked on core #1081. External synced-state qualification, bridge workloads and historical RPC replay after restart remain future work.

@codspeed-hq

codspeed-hq Bot commented Sep 5, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 2 untouched benchmarks


Comparing plan/issue-1066-multiproof (317512a) with main (d3260af)

Open in CodSpeed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant