Releases: succinctlabs/op-succinct
Release list
v4.5.0
v4.5.0: SP1 6.2.4 + kona v1.6.0
Verification keys have changed. All deployments must upgrade contracts with the new keys before using proofs produced by this release.
Minor release that bumps the proving stack to SP1 v6.2.4, kona-client/v1.6.0, reth v2.2.0, alloy 2.0, and revm 38. It also includes fault-proof robustness fixes, validity checkpoint anchoring, KZG precompile error handling, and CI/build maintenance.
Security
- Fixes GHSA-pq4w-5vv8-gxhr: invalid KZG proofs were accepted by the EIP-4844 point-evaluation precompile path. Affected versions are v3.4.0 through v4.4.0; upgrade to v4.5.0 or v3.10.0 and rotate to this release's verification keys.
Breaking Changes
- Verification keys have changed — all range and aggregation ELFs were rebuilt with SP1 v6.2.4 and kona-client/v1.6.0.
Compatibility Matrix
| op-succinct version | op-contracts version | SP1 SDK | Status |
|---|---|---|---|
| v4.5.0 | v5.0.0 | v6.2.4 | Supported |
| v4.4.0 | v5.0.0 | v6.1.0 | Stable |
Migration Guide (v4.4.0 -> v4.5.0)
Since the verification keys have changed, upgrade your contracts with the new keys. Follow the upgrade guide for your deployment type:
- OP Succinct Lite (Fault Proofs): Upgrading the OPSuccinct Fault Dispute Game. Existing games continue under the vkeys they were created with.
- OP Succinct (Validity): Updating OPSuccinctL2OutputOracle Parameters.
Summary of Changes
Dependencies
- Bumps SP1 to v6.2.4 and kona-client to v1.6.0.
- Bumps reth to v2.2.0, alloy to 2.0, and revm to 38.
- Pulls in op-reth-compatible witness behavior from kona.
Operational Notes
- kona v1.6.0 bulk-preloads the L2 payload witness path for op-reth compatibility. This increases witness/preimage volume and oracle-verify cycles, but does not change proof correctness.
Fixes
- Hardens fault-proof catch-up behavior for genesis-rooted chains.
- Anchors validity aggregation checkpoints to a safe L1 head.
- Handles KZG proof verification errors explicitly.
- Removes redundant rustup installs from fault-proof Docker images.
CI / Build
- Pins sqlx-cli to 0.8.x.
- Refreshes Celestia ELF after removing yanked
core2. - Updates tests/optimism for OPSuccinct ASR separation.
Verification Key Hashes
| Program | Verification Key Hash |
|---|---|
| Ethereum DA Range | 0x74a85f930a8a38b82ab9314064384ccd0130d62177d8379b28a4bc00014bee12 |
| Celestia DA Range | 0x47334edf1acf0c8106819681730a9f20327b749329742c3b473c441065ec6370 |
| EigenDA Range | 0x1f88212e7a7f75b944be2624395bef3b0e4357df49587c425ef349394b340737 |
| AltDA Range | 0x3c6f7c2c5637417a14b554984c759e5318028e3a23bbfd840d6cce2b15f9eae8 |
| Aggregation | 0x005444f04a3998d27f9d8a01517c5f955702d3a65b7ea17ed0346c1201c91ccd |
What's Changed
- chore: bump tests/optimism to include OPSuccinct ASR separation fix by @fakedev9999 in #916
- ci(sqlx): pin sqlx-cli to 0.8.x by @fakedev9999 in #919
- fix: remove redundant rustup installs from fault-proof images by @fakedev9999 in #921
- chore: remove yanked core2 and refresh Celestia ELF by @fakedev9999 in #920
- fix(precompiles): handle KzgProof::verify_kzg_proof result explicitly by @fakedev9999 in #924
- fix(validity): anchor agg checkpoint to safe L1 head to avoid tip reorg by @Farhad-Shabani in #923
- fix(fault-proof): robustness follow-ups to #865 + cost-estimator parity by @fakedev9999 in #901
- fix(fault-proof): follow genesis-rooted catch-up chains to their tip by @fakedev9999 in #927
- chore(deps): bump SP1 6.2.4 / kona v1.6.0 / reth v2.2.0 (alloy 2.0 + revm 38) by @fakedev9999 in #928
Full Changelog: v4.4.0...v4.5.0
v3.10.0
v3.10.0: SP1 6.2.4 runtime backport
Verification keys have changed. Operators must upgrade contracts/configuration with the new vkeys before using this release in production.
Maintenance minor release on the v3.x line. Brings the v3.x production branch onto the v4.5.0 runtime stack: SP1 6.2.4, kona v1.6.0, reth v2.2.0, alloy 2.0, and revm 38, plus the production fixes backported after v3.9.0.
Security
- Fixes GHSA-pq4w-5vv8-gxhr: invalid KZG proofs were accepted by the EIP-4844 point-evaluation precompile path. Affected versions are v3.4.0 through v4.4.0; upgrade to v4.5.0 or v3.10.0 and rotate to this release's verification keys.
Breaking Changes
- Verification keys have changed — all range and aggregation ELFs were rebuilt with SP1 v6.2.4 and the updated runtime stack.
Migration Guide (v3.9.0 → v3.10.0)
Verification keys have changed. Follow the upgrade guide for your deployment type:
- OP Succinct Lite (Fault Proofs): Upgrading the OPSuccinct Fault Dispute Game. Existing games continue under the vkeys they were created with.
- OP Succinct (Validity): Updating OPSuccinctL2OutputOracle Parameters.
No database or rollup-config migration is required beyond applying the new verification keys.
Compatibility Matrix
| op-succinct version | op-contracts | SP1 SDK | Status |
|---|---|---|---|
| v3.10.0 | v6.0.0 | v6.2.4 | Supported |
| v3.9.0 | v6.0.0 | v6.1.0 | Superseded |
| v3.8.1 | v6.0.0 | v6.1.0 | Superseded |
Verification Key Hashes
| Program | Verification Key Hash |
|---|---|
| Ethereum DA Range | 0x1b04822373ca65680026b5610c1edf424798421b032ef9117b2c264661de246f |
| Celestia DA Range | 0x4a9be7534cf49bfb0f7f11900f6b62e3045ece0a181e7a4f010389b55f0a24c8 |
| EigenDA Range | 0x43efe3733cb473b6350b4cc70d98b7e000208a7403945cfc6e61c2451c5b342e |
| AltDA Range | 0x4102a9970fc2b21d68f8710b548258ec529120f10465348c4c81b4ce3068de83 |
| Aggregation | 0x0034587dfb1de8163284d39f3043f5fadfa92f9e03fb3e0315eb469c550fde40 |
Summary of Changes
Runtime and dependencies
- SP1 SDK v6.1.0 → v6.2.4.
- kona v1.2.14 → v1.6.0.
- reth v1.3.12 → v2.2.0.
- alloy 1.x → 2.0 and revm 24 → 38.
- Carries the op-reth-compatible execution witness path from the v4.5.0 line.
Validity
- Anchor aggregation checkpoint selection to the safe L1 head to avoid tip reorg exposure.
Fault proofs
- Follow genesis-rooted catch-up chains to their tip.
- Backport robustness follow-ups and cost-estimator parity from the mainline fault-proof path.
Fixes and release plumbing
- Handle KZG proof verification results explicitly.
- Unblock v3.x release CI and legacy rollup config handling.
What's Changed
- fix(precompiles): handle KzgProof::verify_kzg_proof result explicitly by @fakedev9999 in #925
- backport(v3): unblock release CI and legacy rollup configs by @fakedev9999 in #933
- backport(validity): anchor agg checkpoint to safe L1 head (#923) by @fakedev9999 in #930
- backport(fault-proof): robustness follow-ups to #865 + cost-estimator parity (#901) by @fakedev9999 in #931
- backport(fault-proof): follow genesis-rooted catch-up chains to their tip (#927) by @fakedev9999 in #932
- backport(deps): bump SP1/kona/reth runtime stack (#928) by @fakedev9999 in #934
Full Changelog: v3.9.0...v3.10.0
v4.4.0
v4.4.0: Kona DestroyedChanged fix + AltDA Validium support
Minor release that closes GHSA-6gcx-mhp9-fxjf in kona-executor (a state-trie soundness bug in update_accounts() for DestroyedChanged bundle accounts) via kona-client/v1.2.14, hokulea-client/v1.1.9, and hana v1.7.0-mocha. Also lands AltDA (Validium) support in main and a configurable L1 block selection knob for the proposer.
Breaking Changes
- Verification keys have changed — range and aggregation ELFs are rebuilt with the patched kona-executor. All deployments must upgrade contracts with the new keys.
Compatibility Matrix
| op-succinct version | op-contracts version | SP1 SDK | Status |
|---|---|---|---|
| v4.4.0 | v5.0.0 | v6.1.0 | Supported |
| v4.3.1 | v5.0.0 | v6.1.0 | Stable |
Migration Guide (v4.3.1 → v4.4.0)
Since the verification keys have changed, you must upgrade your contracts with the new keys. Follow the upgrade guide for your deployment type:
- OP Succinct Lite (Fault Proofs): Upgrading the OPSuccinct Fault Dispute Game. Existing games continue under the vkeys they were created with.
- OP Succinct (Validity): Updating OPSuccinctL2OutputOracle Parameters.
Summary of Changes
Security
- Pulls in kona's
DestroyedChangedaccount-state fix (GHSA-6gcx-mhp9-fxjf) via kona-client/v1.2.14, hokulea-client/v1.1.9, and hana v1.7.0-mocha (#911).
Features
- AltDA (Validium) support merged into main:
range-altdaELF, host/client utils, contracts wiring (#908). - Configurable L1 block selection for the proposer (#883).
Documentation
- Celestia and EigenDA graduate out of experimental (#903).
- New Alt-DA Server page (#902).
update-parameterstypo fix (#905).
CI
Verification Key Hashes
| Program | Verification Key Hash |
|---|---|
| Ethereum DA Range | 0x6a2df9630a20c9a06e5d171817191194702a69002b63d3625a56ae4142030df0 |
| Celestia DA Range | 0x0dea79ed1f4f6d5a6c0175332fd691700749bc97521b0483098f110409d44a35 |
| EigenDA Range | 0x66a34c285d8379c01cb19a7c408b337a1c762cac2d8912e805520306645bd1ba |
| AltDA Range | 0x18a3e87f59928fe60d846da75fc2a5a86e3234183514a24173857b653d344328 |
| Aggregation | 0x00d9fc2141d389d2ceecbf7c994fa988d1dfee146d7de47e9690d88de3ebe5b8 |
What's Changed
- feat: configurable L1 block selection for proposer by @fakedev9999 in #883
- docs: graduate Celestia and EigenDA out of experimental by @fakedev9999 in #903
- docs: fix add_config typo in update-parameters page by @fakedev9999 in #905
- feat(altda): merge AltDA (Validium) support into main by @fakedev9999 in #908
- docs: add Alt-DA Server page by @fakedev9999 in #902
- fix(ci): unblock book deploy-pages by overriding transitive skip by @fakedev9999 in #909
- fix(ci): use always() + explicit needs result checks for deploy-pages by @fakedev9999 in #910
- chore(deps): bump kona v1.2.14, hokulea v1.1.9, hana v1.7.0-mocha (GHSA-6gcx-mhp9-fxjf) by @fakedev9999 in #911
Full Changelog: v4.3.1...v4.4.0
v3.9.0
v3.9.0: AltDA Validium support + kona security backport
Maintenance minor release on the v3.x line. Brings the AltDA (Validium) data-availability path to v3.x as an opt-in Cargo feature, backports the kona-executor DestroyedChanged security fix (GHSA-6gcx-mhp9-fxjf via upstream kona), and adds a configurable L1 block-selection knob for the proposer. Existing default-feature deployments are unaffected by the AltDA work; the security fix changes verification keys and requires a contract upgrade.
Breaking Changes
- Verification keys have changed — all range and aggregation ELFs are rebuilt with kona v1.2.14 (incorporates the
DestroyedChangedfix). All deployments must upgrade contracts with the new keys.
Migration Guide (v3.8.1 → v3.9.0)
Verification keys have changed. Follow the upgrade guide for your deployment type:
- OP Succinct Lite (Fault Proofs): Upgrading the OPSuccinct Fault Dispute Game. Existing games continue under the vkeys they were created with.
- OP Succinct (Validity): Updating OPSuccinctL2OutputOracle Parameters.
AltDA users: enable the altda Cargo feature on validity or fault-proof. New ELF is elf/altda-range-elf-embedded. Sample compose files: docker-compose-altda.yml, fault-proof/docker-compose-altda.yml.
Compatibility Matrix
| op-succinct version | op-contracts | SP1 SDK | Status |
|---|---|---|---|
| v3.9.0 | v6.0.0 | v6.1.0 | Supported |
| v3.8.1 | v6.0.0 | v6.1.0 | Superseded |
| v3.8.0 | v6.0.0 | v6.1.0 | Superseded |
Verification Key Hashes
| Program | Verification Key Hash |
|---|---|
| Ethereum DA Range | 0x3813362d038935ad6cb1e2566278975f08be38a92bfe7137505ef0c14a9d1972 |
| Celestia DA Range | 0x3f6e5c8b11df1bc572f1f5de15568f49529e4af165fb67947b4637227c2a5eb3 |
| EigenDA Range | 0x584bd6bb37a6c6496cda12060a356da60c32015004920c6023bfc52f2e7a8491 |
| AltDA Range | 0x7ef243563fc10842510674723b308c5471262687498982b22ca16ec04e9594da |
| Aggregation | 0x0095c1f31a6e1003e1e3083ca45bf69b95c9a1468708df1029c9cf4bceb8a852 |
Summary of Changes
Security
- kona-executor
DestroyedChangedaccount fix via GHSA-6gcx-mhp9-fxjf (upstream advisory in kona). Backported in #913.
Features
- AltDA (Validium) data-availability support behind the
altdaCargo feature — generic op-alt-da server, newaltda-rangeprogram, newaltdaclient/host utils, new Dockerfile and compose recipes, new e2e preset. Default builds unchanged. Backported in #912 (source #908). - Configurable L1 block selection for proposer (
L1_BLOCK_TAG=safe|latest|finalized). Backported in #907 (source #883).
Dependencies
- kona v1.2.13 → v1.2.14
- hokulea v1.1.7 → v1.1.9
- hana v1.6.0-mocha → v1.7.0-mocha
What's Changed
- backport(proposer): configurable L1 block selection for proposer (#883) by @fakedev9999 in #907
- backport(altda): merge AltDA (Validium) support into release/v3.x (#908) by @fakedev9999 in #912
- backport(deps): bump kona v1.2.14, hokulea v1.1.9, hana v1.7.0-mocha (GHSA-6gcx-mhp9-fxjf) (#911) by @fakedev9999 in #913
- chore: release v3.9.0 by @fakedev9999 in #915
Full Changelog: v3.8.1...v3.9.0
v4.3.1
Patch release that closes GHSA-5jh4-3p33-85xc, a soundness gap in WitnessExecutor::run where a non-interop EndOfSource could let an adversarial witness commit a (claimed_l2_output_root, claimed_l2_block_number) pair referring to different L2 blocks. The fix binds the committed l2BlockNumber to the actual derived safe-head number. The release also bundles fault-proof, host, and CI fixes merged since v4.3.0.
Breaking Changes
- Verification keys have changed — range and aggregation ELFs are rebuilt with the patched
WitnessExecutor::run. All deployments must upgrade contracts with the new keys.
Migration Guide (v4.3.0 → v4.3.1)
Since the verification keys have changed, you must upgrade your contracts with the new keys. Follow the upgrade guide for your deployment type:
- OP Succinct Lite (Fault Proofs): Upgrading the OPSuccinct Fault Dispute Game. Existing games continue under the vkeys they were created with.
- OP Succinct (Validity): Updating OPSuccinctL2OutputOracle Parameters.
Verification Key Hashes
| Program | Verification Key Hash |
|---|---|
| Ethereum DA Range | 0x0e459f7b7b91a69544714f82370e93cb0ffa8dfe1d750a6b7095c3cc03d22406 |
| Celestia DA Range | 0x12ba926d0b4a23822455687914e8c3420803934d3d140136583f4c6e1791dc70 |
| EigenDA Range | 0x53f3096213735de635e1d4687e625be72277df1c5f3b6ec96fccf9625838c598 |
| Aggregation | 0x0045e1767d8214ebb172f1e5e0267aab63192b5a10b437211ea991f852b14587 |
Summary of Changes
Security
WitnessExecutor::runnow rejects when the derived safe-head block number does not matchBootInfo.claimed_l2_block_number, closing the(l2_output_root, l2_block_number)binding gap (GHSA-5jh4-3p33-85xc).
What's Changed
- fix(fault-proof): pin L1 block during sync to prevent RPC inconsistency by @fakedev9999 in #865
- fix(ci): report all required check names on PRs to unblock merge queue by @fakedev9999 in #885
- fix(host): surface real RPC failures in is_safe_db_activated by @fakedev9999 in #884
- fix(fault-proof): correct resolve() invariant comment by @fakedev9999 in #881
- fix(fault-proof): correct maxChallengeDuration return type to uint64 by @fakedev9999 in #891
- fix(ci): drop missing FOUNDRY_PROFILE=ci to unbreak Foundry Test by @fakedev9999 in #892
- fix(client): use canonical OP precompile set for fork-correct semantics by @fakedev9999 in #895
- ci(eigenda): run eigenda-proxy ephemerally inside CI jobs by @fakedev9999 in #897
- chore: release v4.3.1 by @fakedev9999 in #899
Full Changelog: v4.3.0...v4.3.1
v3.8.1
Maintenance release on the v3.x line that closes GHSA-5jh4-3p33-85xc, a soundness gap in WitnessExecutor::run where a non-interop EndOfSource could let an adversarial witness commit a (claimed_l2_output_root, claimed_l2_block_number) pair referring to different L2 blocks. The fix binds the committed l2BlockNumber to the actual derived safe-head number. The release also backports fault-proof, host, client, and CI fixes from the v4.x line.
Breaking Changes
- Verification keys have changed — range and aggregation ELFs are rebuilt with the patched
WitnessExecutor::run. All deployments must upgrade contracts with the new keys.
Migration Guide (v3.8.0 → v3.8.1)
Since the verification keys have changed, you must upgrade your contracts with the new keys. Follow the upgrade guide for your deployment type:
- OP Succinct Lite (Fault Proofs): Upgrading the OPSuccinct Fault Dispute Game. Existing games continue under the vkeys they were created with.
- OP Succinct (Validity): Updating OPSuccinctL2OutputOracle Parameters.
Verification Key Hashes
| Program | Verification Key Hash |
|---|---|
| Ethereum DA Range | 0x63edbd04408aba2f48cd5a6677e9e32f5124dda574309132053754dd5134a4ed |
| Celestia DA Range | 0x5b80f840124df3e845c582a72cb1e84763c2f0e55ca0e58459db5eea5ca51971 |
| EigenDA Range | 0x1161f3694cc58ad77b308d3814890ad407dee3cc75c40f59786f6e4c0a9a4997 |
| Aggregation | 0x004180a741a6e632865cf40aaed19dd20ae0985c3e1da8cdff54c1ceef7c78e6 |
Summary of Changes
Security
WitnessExecutor::runnow rejects when the derived safe-head block number does not matchBootInfo.claimed_l2_block_number, closing the(l2_output_root, l2_block_number)binding gap (GHSA-5jh4-3p33-85xc).
What's Changed
- backport(host): classify SafeDB probe outcome so transport errors no longer masquerade as 'enable SafeDB' (#884) by @fakedev9999 in #888
- backport(fault-proof): pin L1 block during sync to prevent RPC inconsistency (#865) by @fakedev9999 in #889
- backport(fault-proof): correct resolve() invariant comment (#881) by @fakedev9999 in #890
- backport(fault-proof): correct maxChallengeDuration return type to uint64 (#891) by @fakedev9999 in #893
- backport(client): use canonical OP precompile set for fork-correct semantics (#895) by @fakedev9999 in #896
- backport(ci): run eigenda-proxy ephemerally inside CI jobs (#897) by @fakedev9999 in #898
- chore: release v3.8.1 by @fakedev9999 in #900
Full Changelog: v3.8.0...v3.8.1
v4.3.0
v4.3.0: SP1 v6.1.0 + OP Succinct Lite Fixes
Verification keys have changed due to ELF rebuilds with SP1 v6.1.0. Existing deployments must update their verification keys. See the migration guide below.
This release upgrades SP1 to v6.1.0, includes OP Succinct Lite fixes, performance and CI improvements.
Breaking Changes
- Verification keys have changed — ELFs rebuilt with SP1 v6.1.0 toolchain. All deployments must upgrade contracts with new keys.
- AnchorStateRegistry upgrade required —
getAnchorRoot()is now called onIAnchorStateRegistry(added in op-contracts/v2.0.0). Operators on older ASR versions must upgrade their on-chain AnchorStateRegistry proxy before deploying the new OPSuccinctFaultDisputeGame. - Parent game must be ahead of anchor — The contract now rejects parent games whose L2 block is at or behind the anchor state. The proposer automatically uses
u32::MAX(anchor path) when the canonical head is the anchor game. Existing proposer deployments must be upgraded alongside the contract.
Compatibility Matrix
| op-succinct version | op-contracts version | SP1 SDK | Status |
|---|---|---|---|
| v4.3.0 | v5.0.0 | v6.1.0 | Supported |
| v3.8.0 | v3.0.0 | v6.1.0 | Maintenance |
Migration Guide (v4.2.0 → v4.3.0)
Since the verification keys have changed, you must upgrade your contracts with the new keys and redeploy. Follow the upgrade guide for your deployment type:
- OP Succinct Lite (Fault Proofs): Upgrading the OPSuccinct Fault Dispute Game
- OP Succinct (Validity): Updating OPSuccinctL2OutputOracle Parameters
Summary of Changes
Dependencies
- SP1 v6.1.0 — Upgrade from v6.0.2 (#872)
- SP1 verifier contracts v6.1.0 — Update sp1-contracts submodule and DeployVerifier (#878)
OP Succinct Lite Fixes
- Prevent duplicate game creation via anchor parent index (#839)
- Cache-first rollup config loading for hardfork transitions (#842)
- Filter games by anchor state registry (#844)
- Remove orphan check from backup validation (#846)
Performance
- Use header
withdrawals_rootfor L2 storage root lookup post-Isthmus, skippingeth_getProofRPC call (#858)
Improvements
- Make L1 tx confirmation timeout configurable (#874)
- Let RUST_LOG override default log suppressions (#860)
- Honor explicit
--batch-sizeand reject zero in cost estimator (#869) - Graceful fallback when
eth_getBlockReceiptsis unavailable (#829) - Increase recommended cpu-node memory from 64Gi to 96Gi (#828)
CI & Testing
- Reduce CI costs by removing PR triggers from heavy workflows (#843)
- Remove broken backport workflow (#834)
- Remove failing daily cost estimator workflow (#862)
- Fix flaky eigenda integration test race condition (#861, #864)
- Add Rust dependency caching to lint workflow (#854)
- Move path filtering to job level for docs-only PRs (#857)
Docs
- Add migration guide from optimistic to ZK fault proofs (#845)
Verification Key Hashes
| Program | Verification Key Hash |
|---|---|
| Ethereum DA Range | 0x3f0914400d4a8eb2488defa97d9da17833a1c8b42fda59cc5996d1c44554d5d0 |
| Celestia DA Range | 0x46bb91d377bdae7475775f7671b30d6f09d5944831873cb03cb4b15628a92895 |
| EigenDA Range | 0x6583208460e6610f69805fa87efda50876964db108bcc42a7c8939ec08fbdacb |
| Aggregation | 0x000226bca14e2ed117d333539fae5c91d299f33f74f13aefc3185f1798a4f911 |
What's Changed
- fix: graceful fallback when eth_getBlockReceipts is unavailable by @fakedev9999 in #829
- ci: reduce CI costs by removing PR triggers from heavy workflows by @fakedev9999 in #843
- fix: prevent duplicate game creation via anchor parent index by @fakedev9999 in #839
- feat: cache-first rollup config loading for hardfork transitions by @fakedev9999 in #842
- feat(fault-proof): filter games by anchor state registry by @fakedev9999 in #844
- ci: move path filtering to job level so docs-only PRs can merge by @fakedev9999 in #857
- ci: add Rust dependency caching to lint workflow by @fakedev9999 in #854
- docs: add migration guide from optimistic to ZK fault proofs by @fakedev9999 in #845
- fix(fault-proof): remove orphan check from backup validation by @fakedev9999 in #846
- fix(docs): increase recommended cpu-node memory from 64Gi to 96Gi by @fakedev9999 in #828
- chore(ci): remove broken backport workflow by @fakedev9999 in #834
- fix(logger): let RUST_LOG override default log suppressions by @fakedev9999 in #860
- ci: remove daily cost estimator workflow by @fakedev9999 in #862
- perf(fault-proof): use header withdrawals_root for L2 storage root (post-Isthmus) by @fakedev9999 in #858
- fix(test): fix race condition in proposer recovery integration test by @fakedev9999 in #861
- fix(test): check recovery before finalization to avoid anchor race by @fakedev9999 in #864
- fix(scripts): honor explicit --batch-size and reject zero by @fakedev9999 in #869
- feat(fault-proof,validity): make L1 tx confirmation timeout configurable by @fakedev9999 in #874
- chore: bump sp1 to v6.1.0 by @fakedev9999 in #872
- fix: update sp1-contracts submodules and DeployVerifier to v6.1.0 by @fakedev9999 in #878
Full Changelog: v4.2.0...v4.3.0
v3.8.0
v3.8.0: SP1 v6.1.0 Upgrade & Fault Proof Improvements
Maintenance release for the v3.x line, backporting SP1 v6.1.0 upgrade, fault proof enhancements, and bug fixes from v4.x.
Breaking Changes
- Verification keys have changed — ELFs rebuilt with SP1 v6.1.0 toolchain. All deployments must upgrade contracts with new keys.
- AnchorStateRegistry upgrade required —
getAnchorRoot()is now called onIAnchorStateRegistry(added in op-contracts/v2.0.0). Operators on older ASR versions must upgrade their on-chain AnchorStateRegistry proxy before deploying the new OPSuccinctFaultDisputeGame. - Parent game must be ahead of anchor — The contract now rejects parent games whose L2 block is at or behind the anchor state. The proposer automatically uses
u32::MAX(anchor path) when the canonical head is the anchor game. Existing proposer deployments must be upgraded alongside the contract.
Migration Guide (v3.7.0 → v3.8.0)
Since the verification keys have changed, you must upgrade your contracts with the new keys and redeploy. Follow the upgrade guide for your deployment type:
- OP Succinct Lite (Fault Proofs): Upgrading the OPSuccinct Fault Dispute Game
- OP Succinct (Validity): Updating OPSuccinctL2OutputOracle Parameters
Summary of Changes
Dependencies
Fault Proof
- Filter games by anchor state registry (#856): Improves game filtering to only process relevant dispute games
- Prevent duplicate game creation via anchor parent index (#853): Fixes a race condition that could create duplicate games
- Remove orphan check from backup validation (#867): Simplifies backup validation logic
- Withdrawals root performance + integration test fixes (#868): Performance improvements to withdrawals root computation and test stability fixes
- Make L1 tx confirmation timeout configurable (#875): Operators can now configure the timeout for L1 transaction confirmations
Fixes
- Graceful fallback when
eth_getBlockReceiptsis unavailable (#852): Falls back to per-transaction receipt fetching on nodes that don't support batch receipts - Honor explicit
--batch-sizeand reject zero (#870): CLI batch-size flag now works correctly - Let
RUST_LOGoverride default log suppressions (#866): Operators can now override built-in log filters
Host
- Cache-first rollup config loading for hardfork transitions (#855): Improves performance by caching rollup config across hardfork boundaries
Compatibility Matrix
| op-succinct version | op-contracts version | SP1 SDK | Status |
|---|---|---|---|
| v3.8.0 | v3.0.0 | v6.1.0 | Maintenance |
| v4.3.0 | v5.0.0 | v6.1.0 | Supported |
Verification Key Hashes
| Program | Verification Key Hash |
|---|---|
| Ethereum DA Range | 0x77df39bf202b0e9a600228d4490f96a525d3fe6e1c29d39202ea33d0751a6824 |
| Celestia DA Range | 0x47d30d7f03a14d04673247c049072b141f43b88f353dd8553edd5b1d0a3166f7 |
| EigenDA Range | 0x6082c36f7bfe3d3c4e33ef23522c97346bdfe0e56880515b371723ae3b9a2bb5 |
| Aggregation | 0x00c4e879b2c9a19705728be6f960e8ea77abc61f94ea2a68750ce561c511b54f |
What's Changed
- backport(fix): graceful fallback when eth_getBlockReceipts is unavailable (#829) by @fakedev9999 in #852
- backport(fix): prevent duplicate game creation via anchor parent index (#839) by @fakedev9999 in #853
- backport(host): cache-first rollup config loading for hardfork transitions (#842) by @fakedev9999 in #855
- backport(fault-proof): filter games by anchor state registry (#844) by @fakedev9999 in #856
- backport(logger): let RUST_LOG override default log suppressions (#860) by @fakedev9999 in #866
- backport(fault-proof): remove orphan check from backup validation (#846) by @fakedev9999 in #867
- backport(fault-proof): withdrawals_root perf + integration test fixes (#858, #861, #864) by @fakedev9999 in #868
- backport(scripts): honor explicit --batch-size and reject zero (#869) by @fakedev9999 in #870
- backport(fault-proof,validity): make L1 tx confirmation timeout configurable (#874) by @fakedev9999 in #875
- backport(deps): bump sp1 to v6.1.0 (#872) by @fakedev9999 in #876
- backport(contracts): update sp1-contracts and DeployVerifier to v6.1.0 (#878) by @fakedev9999 in #879
- chore: release v3.8.0 by @fakedev9999 in #880
Full Changelog: v3.7.0...v3.8.0
v4.2.0
v4.2.0: Self-Hosted Cluster Proving
This release adds self-hosted cluster proving mode, allowing operators to run against their own SP1 proving clusters. It also includes a fix for EigenDA canoe VK setup and a prover initialization refactor.
Breaking Changes
- Verification keys have changed due to ELF rebuilds. Existing deployments must update their verification keys. See the migration guide below.
Compatibility Matrix
| op-succinct version | op-contracts version | SP1 SDK | Status |
|---|---|---|---|
| v4.2.0 | v5.0.0 | v6.0.2 | Supported |
| v4.1.0 | v5.0.0 | v6.0.2 | Stable |
| v3.6.0 | v3.0.0 | v5.2.4 | Maintenance |
Migration Guide (v4.1.0 → v4.2.0)
Since the verification keys have changed, you must upgrade your contracts with the new keys and redeploy. Follow the upgrade guide for your deployment type:
- OP Succinct Lite (Fault Proofs): Upgrading the OPSuccinct Fault Dispute Game
- OP Succinct (Validity): Updating OPSuccinctL2OutputOracle Parameters
Summary of Changes
- Self-Hosted Cluster Proving: New proving mode that allows operators to run their own SP1 proving cluster, providing an alternative to the Succinct prover network (#805)
- Prover Refactor: Extracted
build_network_prover_from_envhelper and integrated it with cluster mode for cleaner prover initialization (#820) - EigenDA Fix: Use
CpuProverinstead ofProverClient::from_env()for canoe VK setup, fixing initialization in environments without network prover credentials (#827)
Verification Key Hashes
| Program | Verification Key Hash |
|---|---|
| Ethereum DA Range | 0x773d89f231d4c62d6ab68d171777f72a28c056e8366e07694d91c99530dceaab |
| Celestia DA Range | 0x5522577a10667f302cd030f2652f95996268ed4a6c0bb41b62bf683a2c14d6a0 |
| EigenDA Range | 0x28b919161900e70e62598bce7ca4283524cd3ce124e83fd15517de92715a2d89 |
| Aggregation | 0x00a5efc95e5805e27488095a6aae484ec66cd67ca32f32e7f3c2fb744daeff1b |
What's Changed
- feat: add self-hosted cluster proving mode by @Farhad-Shabani in #805
- refactor: extract build_network_prover_from_env, integrate with cluster mode by @Farhad-Shabani in #820
- fix(eigenda): use CpuProver instead of ProverClient::from_env() for canoe VK setup by @fakedev9999 in #827
- chore: release v4.2.0 by @fakedev9999 in #833
Full Changelog: v4.1.0...v4.2.0
v3.7.0
v3.7.0: Self-Hosted Cluster Proving (Maintenance)
This is a maintenance release for the v3.x line, backporting self-hosted cluster proving support and bug fixes from v4.x.
Summary of Changes
- Self-hosted cluster proving: Operators can now use their own SP1 proving clusters instead of the Succinct prover network. Backported from v4.x (#805 → #830).
- Prover refactoring: Extracted
build_network_prover_from_envhelper and integrated it with cluster mode for cleaner prover initialization (#820 → #831). - EigenDA fix: Use
CpuProverinstead ofProverClient::from_env()for canoe VK setup, fixing an issue where EigenDA VK generation required network access (#827 → #832).
Compatibility Matrix
| op-succinct version | op-contracts version | SP1 SDK | Status |
|---|---|---|---|
| v3.7.0 | v3.0.0 | v6.0.2 | Supported |
| v3.6.0 | v3.0.0 | v6.0.2 | Stable |
| v4.1.0 | v5.0.0 | v6.0.2 | Supported |
Verification Key Hashes
| Program | Verification Key Hash |
|---|---|
| Ethereum DA Range | 0x1096b81b172c3b3d3d0d65f63e7de07915ca84b60305f2fc30d1df204c220b28 |
| Celestia DA Range | 0x780ef2af170d50061520ba0b2010fc723d965f4b49ca05f42634cd4470e0926d |
| EigenDA Range | 0x458d4c0f26fb0a877485dbb602cc6d0b22fbc0c337d819116bf7e477541245fa |
| Aggregation | 0x004ea5a93f9d62659d6e2dd18b9a44ca5b8c149c74080a77dfaf4571c4e022cb |
What's Changed
- backport(cluster): add self-hosted cluster proving mode (#805) by @fakedev9999 in #830
- backport(scripts): extract build_network_prover_from_env, integrate with cluster mode (#820) by @fakedev9999 in #831
- backport(eigenda): use CpuProver instead of ProverClient::from_env() for canoe VK setup (#827) by @fakedev9999 in #832
- chore: release v3.7.0 by @fakedev9999 in #835
Full Changelog: v3.6.0...v3.7.0