Skip to content

mempool: align intrinsic-gas validation with execution (EIP-7702 auth-list + EIP-7623 floor) #6889

@ElFantasma

Description

@ElFantasma

Motivation

The mempool's transaction_intrinsic_gas (crates/blockchain/mempool.rs) computes Berlin-era intrinsic gas and does not match what LEVM enforces at execution. Transactions that LEVM will reject at inclusion are therefore admitted to the pool, wasting payload-builder cycles and able to crowd out valid txs. geth rejects both cases at admission.

This is not a consensus issue — LEVM rejects these txs at inclusion — it's purely a mempool-fidelity / cross-client parity gap.

Description

Two gaps, both in mempool admission only:

  1. EIP-7702 auth-list costtransaction_intrinsic_gas never reads tx.authorization_list(), so it omits PER_EMPTY_ACCOUNT_COST per tuple. validate_transaction also never rejects an empty type-4 auth list. LEVM enforces both (get_intrinsic_gas / validate_type_4_tx).
  2. EIP-7623 calldata floor — intrinsic gas omits the Prague calldata floor (10 gas/token), so an under-floor Prague tx is admitted that LEVM rejects with IntrinsicGasBelowFloorGasCost.

Proposed work

  • Add auth-list cost + empty-auth-list rejection to mempool intrinsic-gas validation.
  • Apply the EIP-7623 calldata floor (Prague+) in the same helper.
  • Tests: admit/reject parity with LEVM for type-4 and high-calldata txs.

Checklist

  • EIP-7702 auth-list cost + empty-auth-list rejection at admission
  • EIP-7623 calldata floor (Prague+) in transaction_intrinsic_gas
  • Tests for auth-list cost + EIP-7623 floor parity with LEVM

Metadata

Metadata

Assignees

No one assigned

    Labels

    L1Ethereum clientmempoolIssues related to mempool

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions