Retrospective LLM-Based Complexity Evaluations

EIP complexity assessment

EIP-2780: Resource-based intrinsic transaction gas

Assessed in Amsterdam / Glamsterdam. The score describes the EIP text available at the assessment cutoff, not the EIP as it stands today.

RetrospectiveAmsterdam / GlamsterdamAssessment cutoff 2025-09-12Included by cutoffLayers: execution
LLM Completescore 25
Human Completescore 13 · Checklist revision 1· merged checklist

Evaluated on: · Spec revision: 2025-09-08 · 2fd1e5e98e

Scope at the cutoff. At FORK_BLOCK, this revision of EIP-2780 lowers the transaction intrinsic base cost TX_BASE_COST from 21,000 to 6,000 for every transaction type. It also adds a GAS_NEW_ACCOUNT = 25,000 surcharge to intrinsic gas when all of these hold: the transaction is not a CREATE, value > 0, `to` is not a precompile, and `to` is "non-existent per EIP-161 emptiness" at the start of transaction execution. Calldata pricing, access-list pricing and the EIP-1559 mechanics are explicitly unchanged. Typed transactions from EIP-2930, EIP-1559 and EIP-7702 inherit the new base. Because of the surcharge, intrinsic gas, and so transaction validity (gas_limit ≥ intrinsic), now depends on account state. The EIP asks for Perfnet benchmarks of blocks made entirely of ETH transfers and of minimal contract calls.

25HighHigh
Evaluator
LLMChecklist v3
Confidence
Medium
Under-specified at assessment cutoff
Yes — 4 criteria affected
Plausible range
22–26 (Medium–High)
Assessment cutoff
2025-09-12 · EIP revision 2fd1e5e98e (2025-09-08)
Score bands · Checklist revision 3
  • Low <12
  • Medium 12–22
  • High ≥23

28 criteria scored 0–3 (4 in exceptional cases; cross-EIP interactions is uncapped); nominal maximum 84.

Complexity profile

Each segment is one criterion's contribution to the LLM total. Hover or focus a segment for its score and rationale.

Top complexity drivers

  1. EVM Gas rule changes3
  2. New or modified transaction validity mechanisms3
  3. Patterns affecting pre-existing tests3
  4. Performance risks3

Under-specified at assessment cutoff: Yes

The EIP text available at the assessment cutoff left material behavior unresolved. The affected criteria and the plausible total range record that uncertainty.

Why: The surcharge condition uses 'non-existent per EIP-161 emptiness', which mixes two states that EIP-161 keeps separate. 'Start of transaction execution' is not ordered relative to the sender nonce/fee debit or EIP-7702 authorization processing. The EIP does not say how the surcharge combines with the EIP-7623/7976 calldata floor, which hardcodes the base outside max().

Unresolved questions at the cutoff (4)
  • Is GAS_NEW_ACCOUNT charged when `to` exists but is empty (zero nonce, zero balance, no code)?
  • Is recipient existence evaluated before or after EIP-7702 authorizations are applied in the same transaction?
  • Is GAS_NEW_ACCOUNT included in, added outside of, or overridden by the EIP-7623/7976 calldata floor in gas used and in the gas_limit validity check?
  • Does 'Replace any hardcoded 21,000' also change the floor formula's base constant to 6,000? This is implied but not stated for EIP-7623.
Notable ambiguities noted by the assessor (5)
  • 'Non-existent per EIP-161 emptiness' conflates non-existent and empty accounts.
  • Timing of the existence check relative to EIP-7702 authorization processing and the sender debit.
  • How the surcharge combines with the EIP-7623/7976 calldata floor.
  • The intended precompile set is assumed to be the fork's active precompiles; the EIP does not state it.
  • SGAS and GAS overlap for the new-account surcharge; the classification is a judgement call.

Criterion breakdown

EIP-2780 Amsterdam / Glamsterdam: LLM criterion scores and rationale
CriterionScoreWhy this scoreEvidence / uncertainty
EVM Gas rule changes3A new accounting rule (a state-dependent surcharge in intrinsic gas) is added. At the same time the base charge changes, which alters the expected gas used for every baseline transaction. This meets level 3.
  • eip.md · Intrinsic gas computation — "Replace any hardcoded `21,000` with `TX_BASE_COST = 6,000`" The intrinsic base charge for every transaction drops from 21,000 to 6,000.
  • eip.md · Intrinsic gas computation — pseudocode "is_nonexistent_per_eip161(state_at_start, tx.to)" Adds a new state-dependent conditional term (+25,000) to intrinsic gas.
Confidence: High
Uncertainty: The surcharge could be read as a parameterised extension of intrinsic gas rather than a new mechanism (level 1). However, it adds a state-dependent condition that intrinsic gas did not have before.
New or modified transaction validity mechanismsUnder-specified3Intrinsic-gas validity was previously a function of transaction fields only; it now needs a state read. Testing it requires coordinated transaction/state scenarios. Examples: an earlier transaction in the same block creates or funds the recipient, which changes a later transaction's intrinsic gas and validity; empty-but-existing pre-state accounts; type-4 authorizations touching `to`. Validity tests therefore need pre-state and intra-block sequencing designed together, not just a parameter change.
  • eip.md · Intrinsic gas computation — "CalculateIntrinsicGas(tx, state_at_start)" Intrinsic gas, which bounds validity, now depends on recipient state at the start of each transaction.
  • eip.md · New-account surcharge — "non-existent per EIP-161 emptiness at the start of transaction execution" Validity depends on state evolving within the block.
  • supporting/eip-7623.md · Specification — "or below its intrinsic gas cost (take the maximum of these two calculations) is considered invalid" Intrinsic gas is a validity bound.
Confidence: Medium
Uncertainty: If the state dependency can be covered by local pre-state variations within existing intrinsic-gas tests, level 2 applies.
Patterns affecting pre-existing tests3One common rule change (the base intrinsic cost) changes expected gas used, receipts' cumulative gas, sender and coinbase balances, and intrinsic-gas validity boundaries in ordinary cases across every transaction-carrying family: opcodes, calls, creates, access lists, 1559 fees, 7702 and 7623 floor tests. Tests that fund new accounts by top-level transfer also pick up the surcharge.
  • eip.md · Backwards Compatibility — "any logic that assumes a `21,000` base must update" Every transaction's gas used, fee debit and coinbase payment change.
  • eip.md · Effects on transactions per block — "ETH transfer tx that creates a new EOA: intrinsic becomes `6,000 + 25,000`" Baseline tests that transfer value to fresh addresses change cost differently from other tests.
Confidence: High
Performance risks3The cheaper fixed per-transaction cost raises the per-block transaction count. That stresses several client subsystems together: signature recovery, per-transaction state and trie updates, receipt and root computation, code loading for tx.to (maximum code size per transaction), and the block-size cap interaction. The benchmark assumption that a block holds few transactions is invalidated, so integrated adversarial stress testing is needed.
  • eip.md · Abstract — "+250% more minimal transactions" Up to 3.5x as many minimal transactions fit per block.
  • eip.md · Test Cases — "blocks of just ETH transfers ... Block of txs calling minimal gas contract execution with maximal contract size addresses" The EIP itself requires integrated perfnet benchmarks across clients.
  • eip.md · Effects on transactions per block — "Above ~457.6 M gas, the 8 MiB size cap dominates" Couples transaction count to the EIP-7934 block size cap.
  • eip.md · Security Considerations — "Current gaslimit testing mostly uses a block with a single transaction" The baseline benchmark assumptions do not cover many-transaction blocks.
Confidence: Medium
Uncertainty: The EIP claims existing headroom (>300 MGas/s for transfers), but that claim is not supported by supplied data.
Edge/boundary conditions3Several boundary-sensitive mechanisms change: (1) the intrinsic gas_limit boundary at the new base; (2) the surcharge condition, which forms an elevated matrix; (3) the calldata floor-versus-intrinsic boundary. The matrix dimensions are: value (0 / >0); recipient state (non-existent, existing-but-empty, balance-only, nonce-only, code or 7702 delegation, created earlier in the same block); precompile or not; create or call; transaction type (legacy, 1, 2, 3, 4); and gas_limit at intrinsic or intrinsic−1. These combine to change validity.
  • eip.md · New-account surcharge — "Apply `GAS_NEW_ACCOUNT` when **all** are true" Four interacting conditions: create, value, precompile, and existence at transaction start.
  • eip.md · Intrinsic gas computation The new base moves the gas_limit ≥ intrinsic validity boundary.
  • supporting/eip-7623.md · Specification — "Any transaction with a gas limit below `21000 + TOTAL_COST_FLOOR_PER_TOKEN * tokens_in_calldata`" The floor boundary also uses the base constant.
Confidence: High
Cross-EIP interactionsUnder-specified3The new intrinsic-gas rule couples EIP-161 existence semantics, the EIP-7623 (and possibly EIP-7976) floor, and EIP-7702 authorization effects within one validity computation. Coordinated scenarios are needed across these interactions, not only independent checks.
  • eip.md · Edits and interactions with other EIPs Names EIP-2930, EIP-7702 and EIP-7623 interactions.
  • supporting/eip-161.md · Specification Defines the emptiness and existence semantics that the surcharge depends on.
  • supporting/eip-7976.md · Specification A floor formula also hardcodes 21000.
Confidence: Medium
Uncertainty: Whether EIP-7976 is in the same fork is not established.
Interacting EIPs: EIP-161, EIP-7623, EIP-7702, EIP-7976, EIP-2930, EIP-1559, EIP-2718, EIP-2929, EIP-7934
State gas accounting changes2The existing new-account state-growth charge is applied at a new charging site (top-level transfer intrinsic gas). No new state-gas dimension or spill rule is introduced. This matches level 2: charging added at a new site using an existing mechanism.
  • eip.md · Motivation — "Charging `GAS_NEW_ACCOUNT = 25,000` on value transfers that create an account aligns entry points and internalizes state growth" The existing new-account (state-growth) charge is applied at a new site: top-level value transfers.
  • supporting/eip-161.md · Specification (b) The existing 25,000 charge for CALL when the destination is dead and value > 0.
Confidence: Low
Uncertainty: The baseline has no separate state-gas dimension; the charge is paid in ordinary execution gas. An evaluator could therefore assign this entirely to GAS and score 0 here.
Security risksUnder-specified2Two bounded interactions change: per-transaction DoS pricing, and the assumption that intrinsic gas is stateless. The second affects transaction-pool admission, builders and estimation, because validity can change with recipient state. These need targeted integration review. A shared authorization invariant across many components is not clearly established.
  • eip.md · Security Considerations — "As this significantly increases the max tx per block this carries risk" DoS pricing boundary for per-transaction overhead changes.
  • eip.md · Backwards Compatibility — "Wallets, RPCs, gas estimators ... must update" Intrinsic gas is now state-dependent, which affects components such as mempool validation and estimation.
Confidence: Medium
Uncertainty: If the stateless-intrinsic-gas invariant is treated as shared across txpool, builder and import, level 3 could apply.
Unspecified behavior requiring cross-client consensusUnder-specified2Several localized questions have competing outcomes. (a) Is an existing-but-empty recipient charged? (b) How does the surcharge combine with the EIP-7623 floor? (c) Is existence evaluated before or after EIP-7702 authorization processing, or after the sender nonce/fee debit? All three require client agreement before expected values can be fixed.
  • eip.md · New-account surcharge — "`to` is **non-existent** per EIP-161 emptiness" Conflates non-existent and empty. EIP-161 distinguishes them, with 'dead' covering both.
  • supporting/eip-161.md · Specification — "An account is considered _dead_ when either it is non-existent or it is _empty_" Defines separate states, so existing-but-empty recipients have an unclear outcome.
  • supporting/eip-7623.md · Specification — tx.gasUsed formula The floor formula places the base outside max(); the EIP does not say whether GAS_NEW_ACCOUNT is inside the execution side, outside both, or absorbed by the floor.
  • eip.md · Edits and interactions with other EIPs — EIP-7702 "No other changes" Does not say whether 'start of transaction execution' is before or after authorization processing, which can change whether `to` exists.
Confidence: Medium
Uncertainty: The EIP-7702 spec is not supplied, so the ordering of its authorization processing relative to intrinsic gas is an evidence gap.
New test-framework primitives1The framework's fork-aware intrinsic-gas calculator needs a local extension: a recipient-existence and precompile input. No new abstraction is required.
  • eip.md · Intrinsic gas computation — "CalculateIntrinsicGas(tx, state_at_start)" Intrinsic gas now takes state as an input.
Confidence: Medium
Uncertainty: If the framework computes intrinsic gas purely from transaction fields, adding a state-aware variant could be judged a new construction abstraction (level 2).
Show 18 zero-score criteria
Zero-score criteria (Checklist revision 3)
CriterionScoreWhy this scoreEvidence / uncertainty
Added opcodes0None.
  • eip.md · Specification No new instruction.
Modified opcodes0No instruction's semantics change.
  • eip.md · Rationale — "identical to `CALL` account-creation pricing" CALL semantics and pricing stay as they are; only the top-level path changes.
Added precompiles0None.
  • eip.md · Specification No new precompile.
Modified precompiles0None.
  • eip.md · New-account surcharge — "`to` is not a precompile" Precompiles are only exempted from the surcharge; their own semantics and gas are unchanged.
Added system contracts0None.
  • eip.md · Specification No system contract is introduced.
Modified system contracts0None.
  • eip.md · Specification No system contract is referenced or changed.
State-access ordering within opcode execution0No instruction's state-access or gas-charge ordering changes. The new pre-execution read of `to` happens at the transaction level, not inside an opcode.
  • eip.md · Intrinsic gas computation Changes only the pre-execution intrinsic computation; no opcode's access or charge sequence changes.
  • supporting/eip-2929.md · Specification — "accessed_addresses is initialized to include the tx.sender, tx.to" tx.to is already in the accessed set at transaction start, and this is unchanged.
Uncertainty: No block-level access list specification is supplied. Whether the intrinsic-gas read of `to` must be recorded there is outside the supplied evidence.
Blob gas accounting changes0No blob-gas accounting changes.
  • eip.md · Abstract — "Calldata and access-list metering are unchanged" The EIP does not mention blob gas at all.
New EVM gas refund0No new refund.
  • eip.md · Specification No refund mechanism is introduced.
New transaction types0None.
  • eip.md · Code change example — "Typed transactions ... now inherit `TX_BASE_COST = 6,000`" Existing types are repriced; no new type is added.
New block / header fields0None.
  • eip.md · Specification No header fields are added.
Encoding changes (RLP/SSZ)0No schema changes.
  • eip.md · Why not charge full tx data as calldata? — "Serialization neutrality" No envelope or schema changes.
Block syncing changes0The changes are execution and validity rules only.
  • eip.md · Specification No block RLP or structural validation rule changes.
New fork activation mechanism0No activation-time state transition.
  • eip.md · Specification — "After `FORK_BLOCK`, set the following parameters and rules" Only rule and constant selection at the fork.
Engine API changes0None.
  • eip.md · Specification No Engine API fields or methods are mentioned.
Transition-tool interface changes0No new input or output field is required. The state-dependent intrinsic gas is computed internally from the existing pre-state input.
  • eip.md · Intrinsic gas computation Intrinsic gas is derived from the transaction and the pre-state, both of which the tool already receives.
Uncertainty: No transition-tool documentation is supplied to confirm interface reuse.
New invariant on pre-existing tests0Only existing values change, which is counted under PAT.
  • eip.md · Specification No new header, receipt, log or state output is introduced.
Cryptography0No cryptographic rule changes.
  • eip.md · Derivation (non-normative) — "ECRECOVER_COST = 3,000" Signature recovery is used only as a pricing proxy; signing rules are unchanged.
Assessment provenance
Assessed EIP revision
ethereum/EIPs@2fd1e5e98e EIPS/eip-2780.md committed 2025-09-08 · information cutoff 2025-09-12T13:12:54Z
Current master · File history · blob 61527a7b30 · sha256 93fb43bd8718
Rubric
Checklist revision 3 · ethspecs/pm@fe2f793b03
Evaluator
Opus 5.5 (claude-opus-5-5) at high effort, one tool-less call per EIP · isolation bubblewrap_claude_p_no_tools_v1
Source record
Frozen research record research/tasks/10-opus-v3-reassessment/retrospective/outputs/assessments/amsterdam/eip-2780.yaml · sha256 6aa551c01e8c
Supporting documents supplied with the EIP
supporting/eip-161.md, supporting/eip-1559.md, supporting/eip-2718.md, supporting/eip-2929.md, supporting/eip-2930.md, supporting/eip-7623.md, supporting/eip-7782.md, supporting/eip-7934.md, supporting/eip-7976.md, supporting/eip-7999.md

Evaluated on: Not recorded · Spec revision: 2025-10-26 · d5e16901ed

13MediumMedium
Evaluator
HumanChecklist v1
Confidence
Not recorded
Under-specified at assessment cutoff
Not recorded in the checklist
Checklist published
2025-11-05 · EIP at d5e16901ed
Score bands · Checklist revision 1
  • Low <10
  • Medium 10–19
  • High ≥20

24 criteria scored 0–3 (4 in exceptional cases; cross-EIP interactions is uncapped); nominal maximum 72.

Complexity profile

Each segment is one criterion's contribution to the Human total. Hover or focus a segment for its score and rationale.

Top complexity drivers

  1. EVM Gas rule changes3
  2. New or modified transaction validity mechanisms3
  3. Patterns affecting pre-existing tests3
  4. Edge/boundary conditions2

Criterion breakdown

EIP-2780 Amsterdam / Glamsterdam: Human criterion scores and rationale
CriterionScoreWhy this scoreNotes
EVM Gas rule changes3Affects the intrinsic gas cost of every transaction, which could break many pre-existing tests.—
New or modified transaction validity mechanisms3Modifies the intrinsic transaction gas cost of all pre-existing transaction types. This will potentially break previous tests which will need to be updated and re-evaluated, e.g. intrinsic gas cost 7702 tests now have to be updated depending on whether they target a `GAS_NEW_ACCOUNT` account or not.—
Patterns affecting pre-existing tests3Potentially a many of the pre-existing tests that require exact gas costs need rework. Although normal tests that don't rely on exact gas costs might not necessarily be affected since the cost is going down instead of up.—
Edge/boundary conditions2Mainly due to the logic introduced that affects the intrinsic gas cost, and the new-account surcharge cost calculation, all combinations need to be tested.—
Blob gas accounting changes1Minimal testing required due to type-3 transaction changing its intrinsic gas cost too.—
Performance risks1Does not pose a performance risk but rather affects how we calculate worst case scenarios because more transactions (potentially) fit in each block.—
Show 18 zero-score criteria
Zero-score criteria (Checklist revision 1)
CriterionScoreWhy this scoreNotes
Added opcodes0No rationale recorded.—
Modified opcodes0No rationale recorded.—
Added precompiles0No rationale recorded.—
Modified precompiles0No rationale recorded.—
Added system contracts0No rationale recorded.—
Modified system contracts0No rationale recorded.—
New EVM gas refund0No rationale recorded.
Blank cell read as zero because the published total proves it.
New transaction types0No rationale recorded.—
New block / header fields0No rationale recorded.—
Encoding changes (RLP/SSZ)0No rationale recorded.—
Block syncing changes0No rationale recorded.—
New fork activation mechanism0No rationale recorded.—
Engine API changes0No rationale recorded.—
Engine API encoding changes0No rationale recorded.—
Transition-tool interface changes0No rationale recorded.—
Security risks0No rationale recorded.—
Cryptography0No rationale recorded.—
Cross-EIP interactions0No rationale recorded.—
Assessment provenance
Assessed EIP revision
ethereum/EIPs@d5e16901ed EIPS/eip-2780.md committed 2025-10-26
EIP master revision at the time of the human checklist commit; the checklist itself does not pin an EIP revision.
Current master · File history · blob 5b09bf7e29 · sha256 3c6c007bdadb
Rubric
Checklist revision 1 · ethspecs/pm@d936bcb349
Evaluator
STEEL team · ethspecs/pm complexity_assessments
Source record
Merged checklist ethspecs/pm@d49a44fe77 complexity_assessments/EIPs/EIP-2780.md · committed 2025-11-05
blob e31e27bde7 · sha256 057e21adfca9
Research record
research/tasks/05c-amsterdam-human-assessment-alignment/inputs/human/eip-2780.yaml · sha256 d3e77c8c9c5a

The LLM applied checklist revision 3 and the human reviewers revision 1 to EIP-2780 in Amsterdam / Glamsterdam. Revision 3 phrases the same criteria more precisely; differences cover the 23 criteria both revisions share, and each total keeps its own revision. Δ is LLM minus Human.

LLM25High
Human13Medium
Δ total+12Tiers differ: High vs Medium
Criteria18/23agree exactly · 2 differ by 1 · 3 differ by 2+
Confounded comparison. The human checklist evaluated the EIP as it stood when the checklist was written; the LLM evaluated the sealed historical revision. Input alignment: substantive drift; human hindsight exposure: possible exposure.
Exposure evidence

The rationale discusses existing EIP-7702 tests needing updates, indicating awareness of a concrete test corpus but not a completed implementation of EIP-2780.

Substantive intervening revisions: Extends the proposal into a granular state-operation gas model (PR #10594, 'Include Call changes'): TX_BASE_COST 6,000 to 4,500; introduces STATE_UPDATE = 1,000, COLD_ACCOUNT_COST_CODE = 2,600, COLD_ACCOUNT_COST_NOCODE = 500, WARM_STATE_READ = 100; reprices value-moving calls (CALL_VALUE_COST 9,000 to 2,000, or 26,000 when creating an account); specifies a PAY-style primitive's warmth/code-load behavior, self-transfer rule, and warmth policy; adds transaction reference cases; EIP-2929 described as 'refined by this EIP'. | Adds an explicit warmth-pricing spec…

Complexity profiles side by side

LLM
Human

Largest disagreements: Cross-EIP interactions (+3), Performance risks (+2), Security risks (+2), Blob gas accounting changes (−1), Edge/boundary conditions (+1)

Per-criterion scores, Human versus LLM, ordered by the size of the difference
CriterionLLMHumanΔAgreementRationale from each source
Cross-EIP interactions30+3Differ by 2+
Show rationale

LLM The new intrinsic-gas rule couples EIP-161 existence semantics, the EIP-7623 (and possibly EIP-7976) floor, and EIP-7702 authorization effects within one validity computation. Coordinated scenarios are needed across these interactions, not only independent checks.

Human No rationale recorded.

Security risks20+2Differ by 2+
Show rationale

LLM Two bounded interactions change: per-transaction DoS pricing, and the assumption that intrinsic gas is stateless. The second affects transaction-pool admission, builders and estimation, because validity can change with recipient state. These need targeted integration review. A shared authorization invariant across many components is not clearly established.

Human No rationale recorded.

Performance risks31+2Differ by 2+
Show rationale

LLM The cheaper fixed per-transaction cost raises the per-block transaction count. That stresses several client subsystems together: signature recovery, per-transaction state and trie updates, receipt and root computation, code loading for tx.to (maximum code size per transaction), and the block-size cap interaction. The benchmark assumption that a block holds few transactions is invalidated, so integrated adversarial stress testing is needed.

Human Does not pose a performance risk but rather affects how we calculate worst case scenarios because more transactions (potentially) fit in each block.

Blob gas accounting changes01−1Differ by 1
Show rationale

LLM No blob-gas accounting changes.

Human Minimal testing required due to type-3 transaction changing its intrinsic gas cost too.

Edge/boundary conditions32+1Differ by 1
Show rationale

LLM Several boundary-sensitive mechanisms change: (1) the intrinsic gas_limit boundary at the new base; (2) the surcharge condition, which forms an elevated matrix; (3) the calldata floor-versus-intrinsic boundary. The matrix dimensions are: value (0 / >0); recipient state (non-existent, existing-but-empty, balance-only, nonce-only, code or 7702 delegation, created earlier in the same block); precompile or not; create or call; transaction type (legacy, 1, 2, 3, 4); and gas_limit at intrinsic or intrinsic−1. These combine to change validity.

Human Mainly due to the logic introduced that affects the intrinsic gas cost, and the new-account surcharge cost calculation, all combinations need to be tested.

Added opcodes000Agree
Show rationale

LLM None.

Human No rationale recorded.

Modified opcodes000Agree
Show rationale

LLM No instruction's semantics change.

Human No rationale recorded.

Added precompiles000Agree
Show rationale

LLM None.

Human No rationale recorded.

Modified precompiles000Agree
Show rationale

LLM None.

Human No rationale recorded.

Added system contracts000Agree
Show rationale

LLM None.

Human No rationale recorded.

Modified system contracts000Agree
Show rationale

LLM None.

Human No rationale recorded.

EVM Gas rule changes330Agree
Show rationale

LLM A new accounting rule (a state-dependent surcharge in intrinsic gas) is added. At the same time the base charge changes, which alters the expected gas used for every baseline transaction. This meets level 3.

Human Affects the intrinsic gas cost of every transaction, which could break many pre-existing tests.

New EVM gas refund000Agree
Show rationale

LLM No new refund.

Human No rationale recorded.

New transaction types000Agree
Show rationale

LLM None.

Human No rationale recorded.

New or modified transaction validity mechanisms330Agree
Show rationale

LLM Intrinsic-gas validity was previously a function of transaction fields only; it now needs a state read. Testing it requires coordinated transaction/state scenarios. Examples: an earlier transaction in the same block creates or funds the recipient, which changes a later transaction's intrinsic gas and validity; empty-but-existing pre-state accounts; type-4 authorizations touching `to`. Validity tests therefore need pre-state and intra-block sequencing designed together, not just a parameter change.

Human Modifies the intrinsic transaction gas cost of all pre-existing transaction types. This will potentially break previous tests which will need to be updated and re-evaluated, e.g. intrinsic gas cost 7702 tests now have to be updated depending on whether they target a `GAS_NEW_ACCOUNT` account or not.

New block / header fields000Agree
Show rationale

LLM None.

Human No rationale recorded.

Encoding changes (RLP/SSZ)000Agree
Show rationale

LLM No schema changes.

Human No rationale recorded.

Block syncing changes000Agree
Show rationale

LLM The changes are execution and validity rules only.

Human No rationale recorded.

New fork activation mechanism000Agree
Show rationale

LLM No activation-time state transition.

Human No rationale recorded.

Engine API changes000Agree
Show rationale

LLM None.

Human No rationale recorded.

Transition-tool interface changes000Agree
Show rationale

LLM No new input or output field is required. The state-dependent intrinsic gas is computed internally from the existing pre-state input.

Human No rationale recorded.

Patterns affecting pre-existing tests330Agree
Show rationale

LLM One common rule change (the base intrinsic cost) changes expected gas used, receipts' cumulative gas, sender and coinbase balances, and intrinsic-gas validity boundaries in ordinary cases across every transaction-carrying family: opcodes, calls, creates, access lists, 1559 fees, 7702 and 7623 floor tests. Tests that fund new accounts by top-level transfer also pick up the surcharge.

Human Potentially a many of the pre-existing tests that require exact gas costs need rework. Although normal tests that don't rely on exact gas costs might not necessarily be affected since the cost is going down instead of up.

Cryptography000Agree
Show rationale

LLM No cryptographic rule changes.

Human No rationale recorded.

State-access ordering within opcode execution0n/a—Only in revision 3
Show rationale

LLM No instruction's state-access or gas-charge ordering changes. The new pre-execution read of `to` happens at the transaction level, not inside an opcode.

Human No rationale recorded.

State gas accounting changes2n/a—Only in revision 3
Show rationale

LLM The existing new-account state-growth charge is applied at a new charging site (top-level transfer intrinsic gas). No new state-gas dimension or spill rule is introduced. This matches level 2: charging added at a new site using an existing mechanism.

Human No rationale recorded.

Engine API encoding changesn/a0—Only in revision 1—
New invariant on pre-existing tests0n/a—Only in revision 3
Show rationale

LLM Only existing values change, which is counted under PAT.

Human No rationale recorded.

New test-framework primitives1n/a—Only in revision 3
Show rationale

LLM The framework's fork-aware intrinsic-gas calculator needs a local extension: a recipient-existence and precompile input. No new abstraction is required.

Human No rationale recorded.

Unspecified behavior requiring cross-client consensus2n/a—Only in revision 3
Show rationale

LLM Several localized questions have competing outcomes. (a) Is an existing-but-empty recipient charged? (b) How does the surcharge combine with the EIP-7623 floor? (c) Is existence evaluated before or after EIP-7702 authorization processing, or after the sender nonce/fee debit? All three require client agreement before expected values can be fixed.

Human No rationale recorded.

Criterion legend and glossary

Every stacked bar, comparison matrix, and criterion table on this site uses the same criterion colours, abbreviations, and order. Colour marks the criterion group; the abbreviation and name identify the criterion. Scores are 0–3 per criterion (4 is exceptional; cross-EIP interactions is uncapped).

EVM surface

Opcodes, precompiles, and system contracts that are added or modified.

  • Added opcodes
    Introduces new opcodes
    Score anchors
    0
    No new opcodes are introduced.
    1
    A new simple opcode is introduced (no data portion, no complex stack mechanics, and a constant gas cost).
    2
    Multiple new simple opcodes are introduced, or a single new complex opcode is introduced (has data portion, or complex stack mechanics, or a dynamic gas cost).
    3
    Multiple new opcodes are introduced, and at least one of them is complex (has data portion, or complex stack mechanics, or a dynamic gas cost).
    • Cryptography opcodes are not considered complex by default. Refer to the "Cryptography" section for a separate assessment.
  • Modified opcodes
    Modifies pre-existing opcodes
    Score anchors
    0
    No pre-existing opcode modifications are introduced.
    3
    At least one pre-existing opcode's behavior is modified (not including gas changes) or a pre-existing opcode is deprecated.
  • Added precompiles
    Introduces new precompiles
    Score anchors
    0
    No new precompiles are introduced.
    1
    A new simple precompile is introduced (constant input length, constant gas cost).
    2
    Multiple new simple precompiles are introduced, or a single new complex precompile is introduced (dynamic input length or dynamic gas cost).
    3
    Multiple new precompiles are introduced, and at least one of them is complex (dynamic input length or dynamic gas cost).
    • Cryptography precompiles are not considered complex by default. Refer to the "Cryptography" for a separate assessment.
  • Modified precompiles
    Modifies pre-existing precompiles logic or gas-accounting
    Score anchors
    0
    No pre-existing precompiles are modified.
    1
    At least one pre-existing precompile has its gas schedule modified.
    2
    Multiple pre-existing precompiles have their gas schedule modified, or a single pre-existing precompile has its behavior modified.
    3
    The behavior of multiple pre-existing precompiles, or a single complex pre-existing precompile modified.
  • Added system contracts
    Introduces new system contract, stateful or not
    Score anchors
    0
    No new system contracts are introduced.
    1
    A new system contract is introduced that is not stateful nor does it trigger a new system action (e.g. requests to the consensus layer).
    2
    Multiple new system contracts are introduced or a single new system contract that is either stateful or triggers a new system action (e.g. requests to the consensus layer).
    3
    Multiple new system contracts are introduced and at least one of them is either stateful or triggers a new system action (e.g. requests to the consensus layer).
  • Modified system contracts
    Modifies pre-existing system contracts
    Score anchors
    0
    No modifications to pre-existing system contracts are introduced, directly or indirectly.
    1
    Does not directly modify any system contract, but its behavior has minor indirect effects on one or more system contracts.
    2
    Does not directly modify any system contract, but its behavior has major indirect effects on one or more system contracts.
    3
    At least one pre-existing system contract code or state is modified, which would involve irregular state transition or a similarly complex transition methodology.

Gas and accounting

Execution, blob, and state gas rules, refunds, and where charges happen inside opcodes.

  • EVM Gas rule changes
    New EVM gas accounting rules
    Score anchors
    0
    No gas accounting changes.
    1
    Existing gas accounting mechanism is updated.
    2
    A new gas accounting mechanism is introduced but it does not affect existing mechanisms nor does it affect existing tests.
    3
    A new gas accounting mechanism is introduced and affects existing mechanisms which in turn affect existing tests.
  • State-access ordering within opcode execution · not in checklist revision 1
    Changes *where inside an opcode's execution* state is accessed, or where gas is charged relative to that access. Because a state access is recorded in the block-level access list only if execution had enough gas to reach it, this ordering is consensus-critical: moving it changes the BAL at every gas boundary of every affected opcode.
    Score anchors
    0
    No change to where state is accessed, or to where gas is charged relative to a state access, within any opcode.
    1
    A single opcode's state-access or gas-charge ordering changes.
    2
    Multiple opcodes' ordering changes, or a new state-accessing operation is introduced whose position in the order must be settled.
    3
    The ordering rule changes for a whole class of state-accessing opcodes at once, or what counts as a recordable state access is redefined — requiring existing BAL vectors to be re-derived across opcodes and forks.
    • Distinct from "Modified opcodes", which asks whether an opcode's **result** changed. This row asks about the **path to the result**, which is observable even when the result is identical. An EIP can be 0 on that row and 3 on this one.
    • Score changes **to** the ordering. Do not score the fact that state accesses are observable — they always are.
    • Each boundary must be re-tested against every other dimension that can change the answer (cold/warm, static/non-static, delegated/direct, revert/success), so the case count grows multiplicatively rather than additively. Note this explicitly under Special Considerations.
  • Blob gas accounting changes
    New Blob gas accounting rules which potentially affect pre-existing tests
    Score anchors
    0
    No blob gas accounting changes.
    1
    Existing blob gas accounting mechanism is updated.
    2
    A new blob gas accounting mechanism is introduced but it does not affect existing mechanisms nor does it affect existing tests.
    3
    A new blob gas accounting mechanism is introduced and affects existing mechanisms which in turn affect existing tests.
  • State gas accounting changes · not in checklist revision 1
    New state gas accounting rules. State gas is the cost of *writing* state, as opposed to accessing or executing it: `StateGasCosts`, `COST_PER_STATE_BYTE`, the block-level state gas budget, and the spill path into execution gas.
    Score anchors
    0
    No state gas accounting changes.
    1
    An existing state gas cost or `STATE_BYTES_PER_*` rate is adjusted.
    2
    A new state-gas-charging site is introduced, or the block-level state gas budget or reservoir allocation is modified.
    3
    A new state gas charging mechanism is introduced, or the spill interaction between state gas and execution gas is modified, affecting existing gas tests.
    • Harder to test than blob gas: the spill path means state gas cannot be metered independently of execution gas, and some costs (e.g. `NEW_ACCOUNT`) are state-dependent.
  • New EVM gas refund
    New gas-refund mechanism
    Score anchors
    0
    No new gas-refund mechanisms are introduced.
    1
    A new simple gas-refund mechanism is introduced that does not affect either existing tests or existing gas-refund mechanisms.
    2
    A new complex gas-refund mechanism is introduced or a simple mechanism that affects existing tests or existing gas-refund mechanisms.
    3
    A new complex gas-refund mechanism is introduced that affects existing tests or existing gas-refund mechanisms.

Blocks, transactions, and encoding

Transaction types and validity, block and header fields, encodings, syncing, and activation-time changes.

  • New transaction types
    Introduces a new transaction type
    Score anchors
    0
    No new transaction types are introduced.
    3
    A new transaction type is introduced.
  • New or modified transaction validity mechanisms
    Creates new or modifies pre-existing transaction types' validation mechanisms
    Score anchors
    0
    No changes are introduced to the validity rules of existing transaction types or to their intrinsic gas cost calculation.
    1
    Minor adjustments are introduced to validity rules or intrinsic gas cost calculation, but they do not significantly affect existing tests.
    2
    Changes to validity rules or intrinsic gas cost calculation affect existing tests, but require only limited updates to test cases and no redesign of the testing infrastructure.
    3
    Changes to validity rules or intrinsic gas cost calculation require extensive rework or redesign of the tests or testing infrastructure.
  • New block / header fields
    Introduces new block or block header fields
    Score anchors
    0
    No new block or header fields are introduced.
    3
    A new block or header field is introduced.
  • Encoding changes (RLP/SSZ)
    Introduces encoding changes at the transaction/block/interfaces level
    Score anchors
    0
    No encoding changes are introduced at the transaction, block, or interfaces levels.
    3
    An encoding change is introduced at transaction, block or interfaces level (e.g. RLP -> SSZ).
    • "Interfaces level" includes the Engine API. Score an Engine API encoding change (e.g. JSON -> SSZ) here.
  • Block syncing changes
    Modifies block RLP validation mechanisms that require test client syncing.
    Score anchors
    0
    No new RLP validation mechanism is introduced.
    1
    A single simple RLP validation mechanism is introduced.
    2
    Multiple simple RLP validation mechanisms are introduced or a single complex one.
    3
    Multiple RLP validation mechanisms are introduced and at least one of them is deemed complex.
  • New fork activation mechanism
    Modifies state, internal variables, or similar, at the fork activation block
    Score anchors
    0
    No state modifications, internal variables or similar are modified at the fork activation block.
    3
    Either a state modification or internal variables are modified at the fork activation block.
    • Initialization of new internal variable is not considered a modification.

Client interfaces

Engine API and transition-tool interface changes.

  • Engine API changes
    Introduces new fields to the Engine API directives
    Score anchors
    0
    No new fields or communication mechanisms are introduced to the Engine API.
    1
    A single new field is introduced in one of the Engine API endpoints.
    2
    Multiple fields are introduced to one or multiple Engine API end points, or a new Engine API end-point is introduced.
    3
    Multiple fields are introduced to one or multiple Engine API end points and a new Engine API end-point is introduced.
  • Engine API encoding changes · Checklist revision 1 only
    Engine API encoding changes (the revision-1 template defines no anchor text for this row).
  • Transition-tool interface changes
    Modifies or adds new fields to the transition tool interface.
    Score anchors
    0
    No modifications to the transition tool interface are required.
    1
    A single new field needs to be introduced to the transition tool interface.
    2
    Multiple new fields or a new mechanism has to be introduced to the transition tool interface.
    3
    Multiple new fields and a new mechanism has to be introduced to the transition tool interface.
    • Special consideration must be paid to this section if the EIP introduces a mechanism that requires the state transition tool to be aware whether the block it is processing is the fork-activation block.

Testing impact

Rework, new invariants, and new primitives required in the test framework.

  • Patterns affecting pre-existing tests
    Implements a new validation mechanism or rule that translates in reworking pre-existing tests
    Score anchors
    0
    No pre-existing tests are affected by this change.
    1
    Minor subset of existing tests are affected by this change.
    2
    Considerable subset of existing tests are affected by this change but involves only a contrived category of tests.
    3
    Major subset of existing tests are affected, including diverse category of tests (benchmarks, static, multiple forks, etc.).
  • New invariant on pre-existing tests · not in checklist revision 1
    Tests that are **not about this EIP** must nonetheless assert something this EIP produces. Their logic does not change; they gain a new thing to check.
    Score anchors
    0
    Pre-existing tests assert nothing new.
    1
    A narrow, contrived category of pre-existing tests gains a new assertion.
    2
    A broad category gains a new assertion, applied mechanically.
    3
    Every test in the fork gains the assertion regardless of what it tests, and pre-fork vectors must be re-derived to satisfy it.
    • Paired with the row above, and easy to confuse with it. "Patterns affecting pre-existing tests" asks whether existing tests must be **reworked**; this row asks whether they must **additionally assert something new**. Score both — an EIP can be low on one and high on the other.
  • New test-framework primitives · not in checklist revision 1
    Requires new abstractions in the test framework itself — expectation types, modifiers, helpers — beyond writing test functions with what already exists.
    Score anchors
    0
    Existing test primitives suffice.
    1
    Existing primitives need minor extension.
    2
    New expectation or modifier primitives are required, reusable within this EIP's own test suite.
    3
    New framework-level primitives are required that become a permanent part of the framework and are used by other EIPs' tests.

Risk and validation

Security, performance, boundary conditions, and cryptography that need validation.

  • Security risks
    Introduces or modifies mechanisms that could compromise the security of the chain, users, validators, or other stakeholders, if not implemented properly.
    Score anchors
    0
    No new mechanisms are introduced that could pose a security risk.
    1
    The introduced mechanisms are self-contained, can be validated in isolation, and do not alter existing invariants that could pose a security risk for any stakeholders.
    2
    The introduced mechanisms interact with a limited number of existing components, slightly altering their security assumptions and requiring a targeted security review or fuzzing.
    3
    The introduced mechanisms interact with multiple existing components, including critical ones, substantially altering their security assumptions and requiring an extensive security review and fuzzing.
  • Performance risks
    Introduces or modifies mechanisms and requires performance validation.
    Score anchors
    0
    No new mechanisms are introduced that require performance validation.
    1
    The introduced mechanisms can be benchmarked in isolation and do not affect existing performance behavior.
    2
    The introduced mechanisms cannot be fully benchmarked in isolation, but they only have a limited impact on the existing performance benchmarks.
    3
    The introduced mechanisms cannot be benchmarked in isolation and have a substantial impact on existing performance benchmarks or have complex interactions with existing mechanisms.
  • Edge/boundary conditions
    Feature contains edge/boundary conditions.
    Score anchors
    0
    No discernible edge cases or boundary conditions are introduced.
    1
    A single edge-case or boundary-condition prone mechanism is introduced.
    2
    Multiple edge-case or boundary-condition prone mechanisms are introduced, but none of them requires an elevated number of cases to test.
    3
    Multiple edge-case or boundary-condition prone mechanisms are introduced and at least one of them requires an elevated number of cases to test.
  • Cryptography
    Introduces new cryptography mechanisms or modifies existing functionality that involves cryptography
    Score anchors
    0
    No cryptography mechanisms are introduced.
    1
    A new cryptography mechanism is introduced but it is a well known mechanism that is known to have vast resources to aid on its testing.
    2
    Multiple new cryptography mechanisms are introduced that are well-known or a single but novel mechanism is introduced that is either untested or has limited resources.
    3
    Multiple new cryptography mechanisms are introduced and at least one of them is a novel mechanism.

Coordination

Cross-EIP interactions and behavior that clients must agree on before tests exist.

  • Cross-EIP interactions
    Introduces or modifies mechanisms that affect other EIPs in either the same or past forks.
    Score anchors
    0
    Fully self-contained EIP that does not depend on, modify, or conflict with any other EIP.
    1
    The EIP interacts with one or more other EIPs in a non-critical and limited way but can be tested independently for the most part.
    2
    The EIP depends on or modifies one or more other EIPs such that coordinated testing and consideration is required, but interactions are limited in scope and not complex.
    3
    The EIP has strong interdependencies with multiple EIPs, requiring extensive coordinated cross-EIP testing as well as potential re-design of existing test vectors.
    • +1 for every 3 additional interacting EIPs beyond the first 3, each of which requires its own coordinated test cases. List the EIPs in the rationale.
    • This row is intentionally uncapped, unlike every other anchor: each interacting EIP is another axis of the test matrix, so a ceiling would make a 12-EIP product indistinguishable from a 3-EIP one.
  • Unspecified behavior requiring cross-client consensus · not in checklist revision 1
    The EIP text does not determine the answer for cases a test can construct. Clients must agree on a previously unspecified detail before tests can be baselined. The cost here is coordination and re-baselining, not test writing.
    Score anchors
    0
    The EIP text determines the answer for every case a test could construct.
    1
    A few details are unspecified but have an obvious intended reading.
    2
    Details require client agreement before tests can be written, but they are localized.
    3
    A previously unspecified *and previously unobservable* behavior becomes consensus-critical; expect tests to be re-baselined on each round of EIP amendment.
    • Score this from the EIP's state at assessment time: whether it has client implementations, whether it has been through a devnet, and how many open questions remain on its discussion thread.