Releases: succinctlabs/op-succinct
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
v4.1.0
v4.1.0: SP1 v6 Hypercube Upgrade
All OP Succinct and OP Succinct Lite operators on v4.x must upgrade. Starting with v4.1.0, op-succinct targets SP1 v6 exclusively. SP1 v5 remains supported on the prover network but will be deprecated in the near future — teams should begin planning their migration. This release requires contract redeployment with new verification keys.
This release upgrades the SP1 proving backend from v5.2.4 to v6.0.2 (Hypercube), delivering improved proving performance and compatibility with the latest SP1 prover network.
Breaking Changes
- Contract redeployment required: Verification keys have changed due to the SP1 v6 upgrade. Existing game implementations must be redeployed with the new verification keys listed below.
- SP1 toolchain v6.0.2 required: Developers building from source must install the SP1 v6 toolchain (
sp1up -v 6.0.2). CI workflows and Dockerfiles have been updated accordingly. protobuf-compilerbuild dependency:protobuf-compileris now required. All Dockerfiles and CI workflows have been updated. Developers building locally must install it (e.g.,apt install protobuf-compilerorbrew install protobuf).
Compatibility Matrix
| op-succinct version | op-contracts version | SP1 SDK | Status |
|---|---|---|---|
| v4.1.0 | v5.0.0 | v6.0.2 | Supported |
| v4.0.2 | v5.0.0 | v5.2.4 | Deprecated |
| v3.5.0 | v3.0.0 | v5.2.4 | Stable |
Migration Guide (v4.0.x → v4.1.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
- SP1 Upgrade: SP1 SDK v5.2.4 → v6.0.2 (Hypercube) with all breaking API changes resolved (async prover building,
Elf::Static()wrapper, new setup/prove/verify signatures, blocking vs async prover patterns) - Hokulea: Updated to upstream Layr-Labs/hokulea tag (SP1 v6 compatible)
- Dependencies: kzg-rs 0.2.8 from crates.io, substrate-bn patch fix
- E2E Testing: Deploy SP1 v6.0.0 verifier contracts for network prover tests
- Prover: Mainnet readiness improvements, cached canoe verifying key with LazyLock
- CI: SP1 version consistency check, updated toolchain pins
- Docs: Fixed broken Optimism tutorial link in prerequisites
Verification Key Hashes
| Program | Verification Key Hash |
|---|---|
| Ethereum DA Range | 0x4357642c2cd12d606ce7bf8210f7538079da88f51f9c5acb232d36e818b84975 |
| Celestia DA Range | 0x3779a2b7206420f94672caae6c9e1a255848f2716aa5491c21291d643aa2f90b |
| EigenDA Range | 0x70d2050b700482a24f861c94436a8b611ce058d7145d31a040d6406548e525a2 |
| Aggregation | 0x006f25245547f33542382ee1966c3b8d5c10f37672679fdc6edad1347ac5da3a |
What's Changed
- fix: use correct substrate-bn package name in [patch.crates-io] by @fakedev9999 in #811
- feat(sp1): upgrade to SP1 v6.0.1 (Hypercube) by @fakedev9999 in #798
- fix(docs): update broken Optimism tutorial link by @fakedev9999 in #822
- fix(e2e): deploy SP1 v6.0.0 verifier contracts for network prover tests by @fakedev9999 in #819
- chore: bump sp1 to v6.0.2 by @fakedev9999 in #821
- chore: release v4.1.0 by @fakedev9999 in #825
Full Changelog: v4.0.2...v4.1.0
v3.6.0
v3.6.0: SP1 v6 Hypercube Upgrade (Maintenance)
All OP Succinct and OP Succinct Lite operators on v3.x must upgrade. Starting with v3.6.0, op-succinct targets SP1 v6 exclusively. SP1 v5 remains supported on the prover network but will be deprecated in the near future — teams should begin planning their migration. This release requires contract redeployment with new verification keys.
This is a maintenance release for the v3.x line, targeting chains using op-contracts v3.0.0. It upgrades the SP1 SDK from v5.2.4 to v6.0.2 (Hypercube stable) and includes backported fixes from the v4.x line.
Note: For op-contracts v5.0.0 users, use the v4.x release line instead.
Breaking Changes
- Contract redeployment required: Verification keys have changed due to the SP1 v6 upgrade. Existing game implementations must be redeployed with the new verification keys listed below.
- SP1 toolchain v6.0.2 required: Developers building from source must install the SP1 v6 toolchain (
sp1up -v 6.0.2). CI workflows have been updated accordingly. protobuf-compilerrequired:protobuf-compileris now a build dependency. All Dockerfiles and CI workflows have been updated. Developers building locally must install it (e.g.,apt install protobuf-compilerorbrew install protobuf).
Migration Guide (v3.5.0 → v3.6.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
Compatibility Matrix
| op-succinct version | op-contracts version | SP1 SDK | Status |
|---|---|---|---|
| v3.6.0 | v3.0.0 | v6.0.2 | Supported |
| v3.5.0 | v3.0.0 | v5.2.4 | Deprecated |
| v4.0.2 | v5.0.0 | v6.0.2 | Supported |
Summary of Changes
- SP1 Upgrade: SP1 SDK v5.2.4 → v6.0.2 (Hypercube) with all breaking API changes resolved
- Proposer Fix: Prevent defense task counter from blocking on skipped games
- Scripts: Add witness caching for multi and cost_estimator
- Testing: Cycle tracker regression tests for precompiles, SP1 v6.0.0 verifier contracts for e2e tests
Verification Key Hashes
| Program | Verification Key Hash |
|---|---|
| Ethereum DA Range | 0x669fbb907b5b3bc52f45a533190555e3052357091a9fc0365914823e40dbec97 |
| Celestia DA Range | 0x0659b1740242d6b113b309bb3310598b5d392fd27c10adae6ab163c42225b55c |
| EigenDA Range | 0x643e90881478857e167fb13029f09068167c1abb5fc578911ad48bd2395f60fb |
| Aggregation | 0x00a7debcc20be76f995fc4f6b1d9f614d55223bb2212fbb7b8bf8279b11b0580 |
What's Changed
- backport: test(precompiles): add cycle tracker regression tests (#772) by @fakedev9999 in #790
- backport: feat(scripts): add witness caching for multi and cost_estimator by @fakedev9999 in #791
- backport: fix(proposer): prevent defense task counter from blocking on skipped games (#794) by @fakedev9999 in #795
- backport(sp1): upgrade to SP1 v6.0.1 (Hypercube) (#798) by @fakedev9999 in #799
- backport(deps): bump sp1 to v6.0.2 (#821) by @fakedev9999 in #823
- backport(e2e): deploy SP1 v6.0.0 verifier contracts (#819) by @fakedev9999 in #824
- chore: release v3.6.0 by @fakedev9999 in #826
Full Changelog: v3.5.0...v3.6.0