Retrospective LLM-Based Complexity Evaluations

EIP complexity assessment

EIP-8025: Optional Execution Proofs

Assessed in Hegotá. The score describes the EIP text available at the snapshot, not the EIP as it stands today.

ProspectiveHegotáSnapshot 2026-08-25PFI at snapshotLayers: execution, consensus
LLM Completescore 21
Human Pending· No STEEL checklist existed on the ethspecs/pm default branch or in any open pull request at the snapshot.

LLM assessment

Evaluated on: · Spec revision: 2026-08-25 · ac450a4ab2 · Inclusion status at snapshot: PFI

Scope at the cutoff. Assessment of the execution-layer surface only: the stateless execution guest, witness construction, schema-prefixed SSZ input/output, payload-request binding, and proof-generation/verification implications. Consensus-layer gossip, req/resp, discovery, beacon-state processing, and fork-choice behavior are boundary context and are not scored as execution-layer complexity.

21MediumMedium
Evaluator
LLMChecklist v2
Confidence
Medium
Under-specified at assessment cutoff
Yes — 6 criteria affected
Plausible range
17–25 (Medium–High)
Snapshot
2026-08-25 · EIP revision ac450a4ab2 (2026-08-25)
Score bands · Checklist revision 2
  • 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. Cross-EIP interactions4
  2. Encoding changes (RLP/SSZ)3
  3. Performance risks3
  4. Edge/boundary conditions3

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: Material execution-layer details remain open: concrete proof systems and ProofType-to-guest/verifier dispatch, the exact adaptation between the proof's chain configuration and the guest's chain/schema output, production fork-rule selection, and the conformance-runner interface. The separate consensus-layer threshold k is also open but is not used to score the execution surface.

Unresolved questions at the cutoff (5)
  • Which concrete proof systems and ProofType values are supported, and how is each value bound to an exact guest program and verifier?
  • How is PublicInput.chain_config mapped to or checked against the execution guest's chain_id and schema_id result?
  • What fork-activation data is supplied to a production guest, and what exact timestamp/fork-selection failures must it return?
  • Is the stateless guest exercised through a new transition-tool mechanism or a standalone conformance runner, and what reusable expectations are required?
  • What value of k defines proof verification on the consensus side, noting that this does not affect the execution-layer score?
Notable ambiguities noted by the assessor (3)
  • The abstract describes proof verification as a path that decouples verification from re-execution, while the current optional phase explicitly requires proof-verifying nodes to continue re-executing and treats proofs only as a supplementary signal; this assessment uses the normative optional-phase behavior.
  • PublicInput is shown with chain_config, while the execution guest's public result exposes chain_id and schema_id; the exact cross-component binding is not fully spelled out in the EIP text.
  • Consensus networking and proof retention are substantial but intentionally do not contribute to execution-layer anchors such as block syncing or Engine API changes.

Criterion breakdown

EIP-8025 Hegotá: LLM criterion scores and rationale
CriterionScoreWhy this scoreEvidence / uncertainty
Cross-EIP interactionsExceptional4There are strong coordinated interactions with 4844 (blob hashes and blob fields), 6110 (deposits), 7002 (withdrawals), 7251 (consolidations), 7688 (progressive SSZ), 7732 (delayed execution-validation window and payload context), 7928 (BAL and access tracker), and 8282 (builder requests). The uncapped rule gives base score 3 for strong multi-EIP interdependence plus 1 for the first complete group of three among the five interactions beyond the first three.

Exceptional score: Score 4 is mechanically required by the uncapped anchor: eight interacting EIPs produce base 3 plus floor((8 - 3) / 3) = 1, and each changes a distinct input, schema, timing, or witness axis requiring coordinated cases.

  • eip.md · Front matter > requires The proposal explicitly requires EIPs 4844, 6110, 7002, 7251, 7688, 7732, 7928, and 8282.
  • eip.md · Specification > Execution Layer > Stateless input and output NewPayloadRequest and its SSZ commitment combine blob hashes, three established request families, two builder request families, progressive SSZ, delayed execution context, and the BAL.
  • eip.md · Specification > Execution Layer > Host-side input construction Witness generation reuses the BAL tracker and must cover request-driven system actions and fork-specific payload execution.
Confidence: High
Uncertainty: All eight interactions are explicit in the sealed package; no unidentified interaction is added.
Interacting EIPs: EIP-4844, EIP-6110, EIP-7002, EIP-7251, EIP-7688, EIP-7732, EIP-7928, EIP-8282
Encoding changes (RLP/SSZ)3The proposal introduces a new schema-versioned SSZ encoding at the execution host/guest interface, satisfying the rubric's binary interface-level encoding anchor.
  • eip.md · Specification > Execution Layer > SSZ encoding A new host/guest interface serializes StatelessInput as a two-byte schema ID followed by SSZ and serializes a structured SSZ result.
  • eip.md · Specification > Execution Layer > Stateless input and output The public payload-request commitment is an SSZ hash-tree-root binding.
Confidence: High
Uncertainty: This is a new proof-stack interface encoding, not a replacement of transaction or block RLP.
Performance risksUnder-specified3Proving performance cannot be fully isolated from payload execution, state/trie access, witness shape, and proof-system choice, and the proposal identifies a substantial, superlinear proving burden with complex interactions.
  • eip.md · Specification > Execution Layer > Host-side input construction Witness construction is coupled to block execution, trie data, code reads, ancestor headers, and post-state-root reconstruction.
  • eip.md · Security Considerations > Verifier-prover decentralisation asymmetry Provers retain full EL state and run a non-trivial stack whose cost scales as O(n log^2 n) in witnessed computation size.
  • eip.md · Rationale > Build operational experience Proof size, generation latency, verifier throughput, and prover diversity require live operational measurement.
Confidence: High
Uncertainty: Concrete proof systems are unpinned, so exact resource envelopes remain unknown.
Edge/boundary conditions3Multiple boundary-prone mechanisms compose across malformed schemas, empty or non-contiguous header witnesses, trie-node completeness, code and public-key lists, invalid execution, fork selection, and post-state reconstruction. Witness completeness across arbitrary blocks requires an elevated case count.
  • eip.md · Specification > Execution Layer > Guest validation Cases include decode failure sentinels, bounded and contiguous ancestor headers, missing witness data, invalid payloads, and transaction-key verification.
  • eip.md · Specification > Execution Layer > Host-side input construction Witness creation must capture reads, writes, code, ancestors, and sibling trie nodes while reproducing the expected post-state root.
  • eip.md · Specification > Execution Layer > SSZ encoding Schema IDs, progressive collections, and several fixed byte/header bounds add serialization boundaries.
Confidence: High
Uncertainty: Concrete proof-format boundaries remain unknown and are not added to this score.
New test-framework primitivesUnder-specified2Reusable EIP-specific primitives are needed to assemble witnesses and payload requests, serialize the guest input, run it, and assert structured success or sentinel-failure output.
  • eip.md · Specification > Execution Layer > Stateless input and output Tests must construct a new StatelessInput and check a new StatelessValidationResult.
  • eip.md · Specification > Execution Layer > SSZ encoding Inputs require schema-prefixed SSZ and progressive-container/list serialization with fixed subordinate bounds.
Confidence: Medium
Uncertainty: The package does not specify whether these helpers are framework expectations/modifiers or a standalone runner.
Security risksUnder-specified2Soundness and binding interact with several critical execution components and require targeted review and fuzzing, but the optional design preserves ordinary re-execution and bounds failure to an opted-in node's local signal.
  • eip.md · Specification > Execution Layer Acceptance binds proof verification to the guest program, successful result, payload-request root, chain ID, and schema ID.
  • eip.md · Specification > Execution Layer > Guest validation Security-sensitive logic covers witness-backed state, state-root recomputation, fork rules, payload validity, and transaction-signature/public-key equivalence.
  • eip.md · Security Considerations > Soundness and consensus implications Proof results remain supplementary and cannot alter fork choice or consensus state in this optional phase.
Confidence: High
Uncertainty: Security assumptions of the concrete proof systems are not specified; load-bearing proof use is explicitly outside this EIP.
CryptographyUnder-specified2Proving full stateless payload validation is one novel cryptographic mechanism, while the concrete proof system is deliberately not fixed; this fits the single-novel-mechanism anchor.
  • eip.md · Specification > Terminology A proof system proves guest computation and may vary in proof format, verifier logic, cost, and security assumptions.
  • eip.md · Specification > Execution Layer The execution result is accepted only after proof verification and binding to the expected guest, request root, chain, and schema.
Confidence: Medium
Uncertainty: Concrete proof systems and their testing resources are not identified, so the eventual mechanism count may differ.
Unspecified behavior requiring cross-client consensusUnder-specified2Interoperable execution-proof tests require localized agreement on proof-type to guest/verifier dispatch, public-input binding, and production fork selection. These are open but do not make previously unobservable EVM behavior consensus-critical in this optional phase.
  • eip.md · Specification > Consensus Layer > Proof types and containers ProofType values and new proof systems are socialized out of band, with proof-system support configured dynamically.
  • eip.md · Specification > Execution Layer Verification expects an exact guest plus request-root, chain, and schema binding, but no concrete proof-system/guest registry is defined.
  • eip.md · Specification > Execution Layer > Guest validation Production implementations must add a fork-activation timestamp comparison whose exact configuration path is not specified.
Confidence: High
Uncertainty: The consensus-layer threshold k is also open, but is excluded from this execution-layer score.
Show 20 zero-score criteria
Zero-score criteria (Checklist revision 2)
CriterionScoreWhy this scoreEvidence / uncertainty
Added opcodes0No opcode is added.
  • eip.md · Specification > Execution Layer > Guest validation The guest reuses ordinary block execution and introduces no instruction definition.
Uncertainty: None.
Modified opcodes0No existing opcode behavior is modified or deprecated.
  • eip.md · Specification > Execution Layer > Guest validation Existing execution is run against WitnessState without specifying any changed opcode result.
Uncertainty: State-backend substitution must preserve opcode behavior and is tested as equivalence, not scored as a modification.
Added precompiles0No precompile is added.
  • eip.md · Specification > Execution Layer The specified components do not include a precompile.
Uncertainty: Proof verification is delegated to a proof node and is not exposed as an EVM precompile.
Modified precompiles0No pre-existing precompile is modified.
  • eip.md · Specification > Execution Layer > Guest validation The normal payload path is replayed without a precompile logic or gas-schedule change.
Uncertainty: None.
Added system contracts0No system contract is introduced by EIP-8025.
  • eip.md · Specification > Execution Layer The execution-layer additions are off-chain host/guest and witness components.
Uncertainty: System contracts from required EIPs remain dependency interactions.
Modified system contracts0Existing system-contract execution must be witnessed, but no contract code, state transition, or behavior is modified directly or indirectly.
  • eip.md · Specification > Execution Layer > Stateless input and output > ExecutionWitness Ancestor headers let the guest reproduce recent block hashes and existing system-contract logic.
  • eip.md · Specification > Execution Layer > Host-side input construction The witness records existing state accesses rather than changing contract behavior or state.
Uncertainty: None; observability for proving is not a behavioral modification.
EVM Gas rule changes0The proposal proves and replays existing execution rules; it specifies no new or modified EVM gas-accounting rule.
  • eip.md · Specification > Execution Layer > Guest validation The guest invokes the normal payload-validation and block-execution path against witness-backed state.
  • eip.md · Abstract The optional mechanism is stated not to change consensus validity rules.
Uncertainty: No gas schedule or gas-charging site is introduced in the package.
State-access ordering within opcode execution0EIP-8025 observes existing accesses to build a witness and substitutes a state backend; it does not move gas checks or state accesses inside any opcode.
  • eip.md · Specification > Execution Layer > Host-side input construction Witness construction consumes data gathered by the existing block-level read/write tracker used for BAL construction.
  • eip.md · Specification > Execution Layer > Guest validation The guest uses the normal execution path with WitnessState replacing the pre-state database.
Uncertainty: Ordering requirements belonging to EIP-7928 are a dependency interaction, not a change made by EIP-8025.
Blob gas accounting changes0Blob data and accounting fields are inputs to stateless validation, but EIP-8025 does not alter their accounting mechanism.
  • eip.md · Specification > Execution Layer > Stateless input and output NewPayloadRequest carries existing blob versioned hashes and the payload carries existing blob gas fields.
  • supporting/eip-4844.md · Specification > Gas accounting EIP-4844 defines the blob-gas mechanism that EIP-8025's guest validates.
Uncertainty: None; the blob mechanism is consumed unchanged.
State gas accounting changes0No state-gas cost, state-byte rate, state-gas budget, reservoir, or spill path is introduced or modified.
  • eip.md · Specification > Execution Layer The execution-layer changes are a stateless guest and prover-side guest-input construction.
Uncertainty: Witness construction changes data availability for execution, not the cost of writing state.
New EVM gas refund0The proposal introduces no EVM gas-refund mechanism.
  • eip.md · Specification > Execution Layer > Guest validation Payload execution follows the normal execution-engine path without a new refund operation.
Uncertainty: None; refunds are not changed or newly exposed by the proposal.
New transaction types0No transaction type is introduced.
  • eip.md · Specification > Execution Layer > Stateless input and output Existing serialized transactions are carried inside ExecutionPayload; no transaction envelope is defined.
Uncertainty: None.
New or modified transaction validity mechanisms0Supplied public keys are an optimization input that must reproduce existing signature recovery; transaction validity and intrinsic-gas rules are unchanged.
  • eip.md · Specification > Execution Layer > Guest validation The guest uses the normal new-payload path and verifies supplied public keys against the existing transaction signatures.
Uncertainty: The new guest needs equivalence tests, but it does not create a new transaction-validity rule.
New block / header fields0EIP-8025 adds proof-stack input fields, not a field to the canonical execution block or header.
  • eip.md · Specification > Execution Layer > Stateless input and output StatelessInput packages an existing NewPayloadRequest, witness, chain ID, and public keys without defining a new canonical block/header field.
Uncertainty: Payload fields originating in required EIPs are scored as interactions, not as fields introduced by EIP-8025.
Block syncing changes0No execution block-RLP validation mechanism is added. The proposal's explicit proof-sync protocols are consensus-layer behavior and are excluded from this execution-only score.
  • eip.md · Specification > Execution Layer The execution-layer surface adds guest validation and witness construction, not block RLP validation.
  • eip.md · Specification > Consensus Layer > Req/resp domain Proof backfill and synchronization protocols are specified on the consensus layer.
Uncertainty: None; the cross-layer boundary is explicit.
New fork activation mechanism0Selecting and checking fork rules in the guest does not modify state or an existing internal variable at the activation block; no activation transition is introduced.
  • eip.md · Specification > Execution Layer > Guest validation Production guests must compare the payload timestamp with fork activation data, while the reference shape uses one implementation per fork.
Uncertainty: The exact production fork-configuration input and comparison are under-specified, but initialization or selection is not a score-3 modification.
Engine API changes0EIP-8025 consumes the dependency-defined NewPayloadRequest and adds a distinct proof-engine protocol; it specifies no new Engine API field, endpoint, or communication mechanism.
  • eip.md · Specification > Execution Layer > Stateless input and output The host consumes NewPayloadRequest as payload data supplied by the consensus layer.
  • eip.md · Specification > Consensus Layer > Proof engine interface ProofEngine is a separate interface merely modeled on the Engine API.
Uncertainty: Any transport mapping between an EL host and proof node is implementation-dependent and not an Engine API change in the package.
Transition-tool interface changesUnder-specified0The new stateless guest is a separate mechanism; the package does not require a field or mechanism in the state transition tool interface.
  • eip.md · Specification > Execution Layer > Stateless input and output The proposal defines a separate guest input/output interface rather than a transition-tool field.
  • eip.md · Test Cases No transition-tool interface addition is specified.
Uncertainty: A test implementation could choose to expose the guest through a transition tool, but that interface is not specified.
Patterns affecting pre-existing tests0The package supports adding a dedicated stateless-validation suite, but does not require existing execution tests to be reworked.
  • eip.md · Backwards Compatibility The feature is fully opt-in, changes no consensus validity rules, and leaves non-participating nodes unchanged.
  • eip.md · Test Cases The proposal points to dedicated execution-layer conformance tests.
Uncertainty: The package does not describe how much of an existing payload corpus would be reused by the new guest suite.
New invariant on pre-existing tests0Existing tests need not additionally assert a proof, witness, or stateless result; those outputs belong to the opt-in feature's own tests.
  • eip.md · Backwards Compatibility Nodes outside the optional modes have unchanged behavior and duties.
  • eip.md · Rationale > Build operational experience Proofs are non-critical artifacts and are not placed on the fork-choice or attestation path.
Uncertainty: None material for pre-existing tests in the sealed proposal.
Assessment provenance
Assessed EIP revision
ethereum/EIPs@ac450a4ab2 EIPS/eip-8025.md committed 2026-08-25 · information cutoff 2026-08-25T11:56:58Z
Current master · File history · blob 6287bacd18 · sha256 d6131d778d89
Rubric
Checklist revision 2 · ethspecs/pm@3d8c0128c5
Evaluator
gpt-5.6-sol at xhigh reasoning effort · isolation bubblewrap_one_eip_capsule_v1
Source record
Frozen research record research/tasks/08-hegota-prospective-complexity-assessment/outputs/assessments/hegota-pfi-2026-08-26/eip-8025.yaml · sha256 95df960b863b
Supporting documents in the sealed package
supporting/eip-4844.md, supporting/eip-6110.md, supporting/eip-7002.md, supporting/eip-7251.md, supporting/eip-7688.md, supporting/eip-7732.md, supporting/eip-7928.md, supporting/eip-8282.md
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 · Checklist revision 2 only
    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 · Checklist revision 2 only
    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 · Checklist revision 2 only
    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 · Checklist revision 2 only
    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 · Checklist revision 2 only
    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.