Skip to content

op-reth: apply RISE patches - #2

Open
silver-rise wants to merge 2 commits into
rise/op-reth-v2.3.0from
rise/rise-patches
Open

op-reth: apply RISE patches#2
silver-rise wants to merge 2 commits into
rise/op-reth-v2.3.0from
rise/rise-patches

Conversation

@silver-rise

Copy link
Copy Markdown

No description provided.

silver-rise and others added 2 commits August 21, 2026 17:46
The RISE sequencer raises three revm CfgEnv limits for every block it builds:
deployed code size to 256 KiB (EIP-170 default is 24 KiB), initcode size to
512 KiB (EIP-3860 default is 48 KiB), and no per-transaction gas cap.

A node running the vanilla limits rejects transactions the sequencer accepted
and forks off the canonical chain. Observed on RISE mainnet at L2 block
19548399: a contract creation carrying 84,302 bytes of initcode was dropped by
a vanilla replica, which built a 576-transaction block against the canonical
577.

Apply the overrides in all three EvmEnv constructors -- evm_env (historical
replay, executor, RPC), next_evm_env (block building from DA-derived payload
attributes, the path that dropped the transaction above) and
evm_env_for_payload (engine_newPayload). Patching a subset only defers the
fork to whichever path is hit next. The ConfigureEngineEvm<OpExecData> impl in
reth-optimism-payload delegates to evm_env_for_payload, so it is covered.

Mirrors RiseEvmConfig in risechain/rise, execution/crates/core/src/evm.rs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two upstream defaults are unreachable for RISE and make a vanilla op-node
derive a different chain than the one RISE published.

DAFootprintGasScalarDefault: RISE commits a zero DA footprint gas scalar in
every L1-attributes transaction. Upstream reads 0 as "unset" and substitutes
400 before encoding, and no system-config value can produce a committed 0.
Feeding real mainnet inputs through upstream's own encoder reproduces 176 of
178 bytes; only the trailing scalar differs (0000 against 0190).

MaxFrameLen: RISE posts frames through EigenDA, whose maximum payload is
16,252,897 bytes. Larger payloads encode to a 32 MiB blob and are rejected at
dispersal. Calldata is [1 version byte] + [23 byte frame header] + [frame
payload], so frames run up to 16,252,873 bytes -- well past the 1 MB upstream
cap, which would reject them outright.

Also add RISE.md at the repo root describing the EL and CL deltas carried on
this branch, and the two base-tag traps: track RISE's deployed version rather
than their default branch, and the datadir is locked to a storage layout.

Co-Authored-By: Claude Opus 5 (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