Draft
Conversation
Overhaul dependencies from superchain-primitives/old-kona/alloy-0.x to kona-genesis (op-rs/kona v1.2.7), alloy 1.4, op-succinct (SP1 v6.0.0-rc.1). New CLI commands: - `from-op-succinct`: generates SP1Stdin fixtures via SingleChainOPSuccinctHost - `run-op-succinct`: executes fixtures through CpuProver, extracts per-precompile cycle stats (bn_pair, bn_add, bn_mul, kzg_eval, ec_recover, p256_verify) New justfile recipes: generate-op-succinct-fixture, run-op-succinct-fixture. Old from-op-program/run-op-program commands stubbed (incompatible with new deps).
- Fix critical bug in From<RollupConfig> for kona_genesis::RollupConfig where self. references were used instead of cfg. parameter - Convert impl Into<BlockNumHash> to idiomatic impl From<BlockID> - Remove needless return and redundant .to_string() in TryFrom - Remove unused Uint import in tests - Apply field init shorthand - Fix redundant doc comment
- Remove redundant help attributes (doc comments serve as clap help) - Remove numbered inline comments restating the code - Remove redundant SP1Stdin type annotation - Remove verbose per-field doc comments on OpSuccinctStats (field names are self-documenting; suppress missing_docs lint) - Remove unused std::fs import in util.rs tests
The hex literal was truncated during the initial implementation commit (14110 chars vs 16816 on main), causing the test to fail with "failed to fill whole buffer". Restored from main.
- Update devnet/standard.yaml to dict-based format required by current ethpandaops/optimism-package (chains/participants as named dicts, nested el/cl type fields, add network_id and fund_dev_accounts) - Use env_var_or_default for OPTIMISM_DIR in justfile so recipes that don't need cannon/op-program don't fail on missing env var
…loyer-configs - Update kurtosis service names in justfile to match new naming convention (op-el-2151908-node0-op-geth, op-cl-2151908-node0-op-node) - Fix rollup node port grep (http -> rpc) - Add op-deployer-configs/ to .gitignore (generated from devnet)
The OPSuccinctDataFetcher requires an L1 ChainConfig file for non-mainnet chains. The built-in registry only has chain ID 1, so generate-op-succinct-fixture fails on the devnet L1 (3151908). Add the config queried from the devnet geth node via admin_nodeInfo.
The derivation pipeline was exhausting its L1 data source before reaching the target L2 block because calculate_safe_l1_head() caps at the finalized L1 block, which lags on minimal-preset devnets. Pass the L1 head hash from op-node sync status directly via --l1-head, bypassing the estimation.
The via-ir pipeline without the optimizer lacks the Stack Limit Evader step, causing stack-too-deep errors when compiling OpenZeppelin's ERC20 on older solc versions (e.g. 0.8.20 resolved on Linux). Pinning the solc version ensures cross-platform reproducibility.
Point devnet contract deployer at op-deployer:local, built from succinctlabs/optimism@fakedev9999/raise-max-gas-limit which raises SystemConfig.MAX_GAS_LIMIT from 500M to 4B to support 2G+ gas block testing. Co-Authored-By: Claude Opus 4.6 <[email protected]>
The custom op-node build requires --rollup.l1-chain-config for non-standard L1 chains (chain ID 3151908). Bake the config into a wrapper Docker image and pass the flag via extra_params in standard.yaml.
Replace just shell() (evaluates at parse time) with runtime jq call so the address is read from the freshly downloaded op-deployer-configs.
Root cause of 7.17x bn_pair_cycles blowup: the [patch.crates-io] entry
`substrate-bn = { ..., package = "substrate-bn-succinct-rs" }` fails to
replace the guest's transitive substrate-bn dependency from crates.io.
Guest programs run unpatched pure-software BN254 field arithmetic (21.4M
instructions/pairing) instead of SP1 precompile syscalls (1.18M with fix).
Changes:
- Add syscall_counts and opcode_counts fields to OpSuccinctStats, populated
from ExecutionReport's EnumMap fields (Step 1)
- Add bench/pairing-v6: isolated BN254 pairing benchmark for SP1 v6, with
direct git dep fix applied to guest Cargo.toml (Step 3)
- Add bench/pairing-v5: same benchmark for SP1 v5.2.4 as baseline (Step 3b)
- Add bench/v5: standalone v5 baseline workspace using lincoln's crates
via path deps for full op-succinct reproduction (Step 2)
Benchmark results (per pairing, n=1):
v5: 2,690,238 instructions, 31,802 syscalls
v6 broken: 21,415,257 instructions, 0 syscalls (no precompile acceleration)
v6 fixed: 1,182,752 instructions, 46,832 syscalls (2.27x faster than v5)
Updates op-succinct from #73725895 to #006e459c (PR #798 branch), which includes the substrate-bn patch fix (PR #811). Also bumps sp1-sdk from 6.0.0-rc.1 to 6.0.0 release. Verified: ECPairing 20M gas fixture drops from 7.46B to 684M total instructions (10.9x), bn_pair_cycles from 7.18B to 422M (17x).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.