Skip to content

Remove cfg_env.disable_eip7623 override after EIP-7623 activation #125

Description

@panos-xyz

Background

morph-reth currently sets cfg_env.disable_eip7623 = true in two places (crates/evm/src/config.rs:39, :90) to match morph-geth's behavior — morph-geth has not implemented EIP-7623 and treats calldata floor gas as not applicable.

However, reth's upstream mempool ensure_intrinsic_gas enforces EIP-7623 floor gas based on the active SpecId, without consulting cfg_env.disable_eip7623. The upstream cfg → mempool sync channel only propagates tx_gas_limit_cap etc., not disable_eip7623. As a result morph-reth's mempool is stricter than its own execution layer (and stricter than morph-geth) — see QA finding X18.

A 41,000-gas tx with 5,000 zero-byte calldata is accepted by morph-geth and imports cleanly into morph-reth's execution layer (stateRoot matches), but rejected by morph-reth's mempool with intrinsic gas too low.

Decision

Will be fixed alongside morph-geth at the next Morph hardfork that activates EIP-7623.

Once EIP-7623 is activated, removing the disable_eip7623 = true override here aligns morph-reth's execution layer with the new "EIP-7623 enabled" state, and reth's mempool floor-gas check (which already enforces EIP-7623) becomes correct.

Scope

  • crates/evm/src/config.rs: remove cfg_env.disable_eip7623 = true from both evm_env() and next_evm_env()
  • Verify mempool / execution behavior is identical (both enforce EIP-7623)
  • Verify behavior matches morph-geth post-hardfork
  • Update tests that asserted cfg_env.disable_eip7623 == true (e.g. crates/evm/src/config.rs:266)

Acceptance Criteria

  • cfg_env.disable_eip7623 = true removed from both evm_env() and next_evm_env()
  • Test asserting disable_eip7623 is updated/removed
  • X18 QA reproducer (5000-byte calldata, 41000 gas) is rejected at mempool with intrinsic gas too low — now intentionally, matching geth post-hardfork
  • Same reproducer with gas_limit ≥ 71000 is accepted by both morph-geth and morph-reth
  • cargo nextest run --workspace and e2e tests pass

Reference

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions