Skip to content

Osaka on L2#20031

Draft
joshklop wants to merge 6 commits intodevelopfrom
joshklop/osaka-on-l2
Draft

Osaka on L2#20031
joshklop wants to merge 6 commits intodevelopfrom
joshklop/osaka-on-l2

Conversation

@joshklop
Copy link
Copy Markdown
Contributor

@joshklop joshklop commented Apr 12, 2026

No description provided.

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 12, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.0%. Comparing base (85e4935) to head (1d6d650).

❗ There is a different number of reports uploaded between BASE (85e4935) and HEAD (1d6d650). Click for more details.

HEAD has 20 uploads less than BASE
Flag BASE (85e4935) HEAD (1d6d650)
contracts-bedrock-tests 18 0
unit 2 0
Additional details and impacted files
@@             Coverage Diff             @@
##           develop   #20031      +/-   ##
===========================================
- Coverage     11.7%     0.0%   -11.8%     
===========================================
  Files          676        1     -675     
  Lines        71049        6   -71043     
===========================================
- Hits          8322        0    -8322     
+ Misses       62583        6   -62577     
+ Partials       144        0     -144     
Flag Coverage Δ
cannon-go-tests-64 0.0% <ø> (-66.4%) ⬇️
contracts-bedrock-tests ?
unit ?

Flags with carried forward coverage won't be shown. Click here to find out more.
see 676 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Wire up the Karst OP fork through the Rust EL stack so that EIP-7823
(modexp precompile input upper bounds of 1024 bytes) takes effect when
Karst activates. Karst remains at SpecId::PRAGUE to avoid unsupported
fork errors in reth v2.0.0; the modexp limit is enforced via a custom
karst() precompile set that swaps modexp::BERLIN for modexp::OSAKA.

Changes:
- Add OpSpecId::KARST variant mapped to SpecId::PRAGUE
- Add karst() precompile set with modexp::OSAKA (EIP-7823 limits)
- Add karst_time to OpGenesisInfo, HardforkConfig, ChainConfigExtraFields
- Wire is_karst_active_at_timestamp into spec_by_timestamp_after_bedrock
- Register OpHardfork::Karst in chainspec From<Genesis>, DEV_HARDFORKS,
  devnet config, and OpChainSpecBuilder
- Add KarstTime to Go RollupConfig() output (was missing)
- Add acceptance test TestEIP7823UpperBoundModExp verifying pre/post
  fork behavior

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@joshklop joshklop force-pushed the joshklop/osaka-on-l2 branch 3 times, most recently from 1d6d650 to 8daae0a Compare April 12, 2026 20:07
joshklop and others added 3 commits April 12, 2026 13:11
Add TestEIP7939CLZ to verify the CLZ opcode (0x1e) is available after
the Karst fork and unavailable before it. The test uses eth_call with
init code that computes CLZ(1) = 255, asserting an invalid opcode error
pre-fork and the correct result post-fork.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add TestEIP7883ModExpGasCostIncrease to verify the modexp precompile
gas floor increases from 200 to 500 after the Karst fork. Uses empty
calldata (precompile zero-pads missing input) to avoid EIP-7623
calldata cost inflation, allowing precise control of execution gas
via the eth_call gas limit.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add TestEIP7825TxGasLimitCap to verify the 2^24 transaction gas limit
cap is enforced after Karst. Uses txplan to send real transactions since
EIP-7825 is a tx validity rule not enforced by eth_call or
eth_simulateV1. Tests both pre-karst (gas above cap allowed) and
post-karst (gas above cap rejected, gas at cap succeeds).

Also adds WithKarstAtGenesis deployer option and fixes the tx manager
gas estimator to set callMsg.Gas to params.MaxTxGas before calling
EstimateGas, which is required post-Osaka.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@joshklop joshklop force-pushed the joshklop/osaka-on-l2 branch from 8daae0a to 58c5664 Compare April 12, 2026 20:12
…test

Assert that the P256VERIFY precompile gas cost increases from 3,450
(RIP-7212) to 6,900 (EIP-7951) at Karst activation. Also update the
karst() precompile set in op-revm to swap secp256r1::P256VERIFY for
secp256r1::P256VERIFY_OSAKA.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@joshklop joshklop changed the title feat(op-reth): activate EIP-7823 modexp upper bounds on Karst fork Osaka on L2 Apr 12, 2026
Assert that OP Stack chains can build blocks exceeding the EIP-7934
10 MiB RLP block size limit. Submits many transactions with large
calldata under a 200M gas limit and verifies a single block exceeds
10 MiB in total transaction data.

Also adds WithGasLimit to L2Configurator and WithL2GasLimit deployer
option to support custom L2 block gas limits in tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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