Retrospective LLM-Based Complexity Evaluations

EIP complexity assessment

EIP-7951: Precompile for secp256r1 Curve Support

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

RetrospectiveOsaka / FusakaAssessment cutoff 2025-07-02Included by cutoffLayers: execution
LLM Completescore 11
Human Not available· Human complexity assessments were not produced for this fork; only the LLM assessment exists.

LLM assessment

Evaluated on: · Spec revision: 2025-07-01 · d386b29b5a

Scope at the cutoff. At the information cutoff, this draft introduced P256VERIFY at address 0x100, accepting exactly 160 input bytes for secp256r1 ECDSA verification and charging a fixed 3450 gas. It specified the curve parameters, encodings, validation checks, verification algorithm, fixed success and failure outputs, and uniform gas consumption on invalid inputs. It aimed to retain RIP-7212 interface compatibility while correcting recovered-point-at-infinity and modular-comparison edge cases; it specified no transaction, block, state, Engine API, or opcode changes.

11LowLow
Evaluator
LLMChecklist v2
Confidence
Medium
Under-specified at assessment cutoff
Yes — 1 criterion affected
Plausible range
10–12 (Low–Medium)
Assessment cutoff
2025-07-02 · EIP revision d386b29b5a (2025-07-01)
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. Edge/boundary conditions3
  2. Added precompiles1
  3. EVM Gas rule changes1
  4. Patterns affecting pre-existing tests1

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 specification is materially complete for most constructible cases, but it does not expressly state how the 32-byte message hash becomes the integer used in scalar multiplication, and its absolute no-revert wording does not expressly carve out insufficient supplied gas. Both gaps are localized and have strong intended readings from the adjacent encoding and gas rules.

Plausible total

10–12
recorded score 11 · plausible tiers Low, Medium

Unresolved questions at the cutoff (2)
  • Is message hash h decoded as an unsigned big-endian integer before scalar multiplication?
  • Does the no-revert requirement apply only after the fixed precompile gas cost has been supplied?
Notable ambiguities noted by the assessor (2)
  • The byte-to-integer interpretation of message hash h is implied but not stated explicitly.
  • The unconditional no-revert wording does not explicitly distinguish insufficient supplied gas.

Criterion breakdown

EIP-7951 Osaka / Fusaka: LLM criterion scores and rationale
CriterionScoreWhy this scoreEvidence / uncertainty
Edge/boundary conditions3Multiple independent boundary-prone mechanisms are present, and the recovered infinity and modular-reduction paths require specially constructed cryptographic cases in addition to ordinary adjacent-boundary vectors. This elevated case set matches score 3.
  • eip.md · Input Validation and Signature Verification Algorithm, lines 102-147 The operation separately checks exact length, r and s order bounds, coordinate field bounds, curve membership, public-key infinity, recovered-point infinity, and an x-coordinate comparison modulo n.
  • eip.md · Error Cases and Security Fixes, lines 149-177 The listed invalid-input classes include several numeric and elliptic-curve boundaries, while the rationale identifies rare infinity and x-coordinate-over- order cases whose mishandling can change verification results.
Confidence: High
Added precompiles1One precompile with constant input length and constant gas cost is a simple precompile under the anchor, exactly matching score 1; cryptographic complexity is scored separately.
  • eip.md · Precompile, ABI Input, and Gas Schedule, lines 33-35, 85-93, and 157-167 The EIP adds one P256VERIFY precompile at address 0x100 with exactly 160 input bytes and a constant 3450-gas charge for both success and failure.
Confidence: High
EVM Gas rule changes1This adds a gas-schedule entry using the existing fixed-cost precompile charging model. It updates an existing gas-accounting mechanism rather than introducing a new dynamic accounting mechanism, matching score 1.
  • eip.md · Precompile and Gas Schedule, lines 33-35 and 157-167 The proposal assigns the new precompile a fixed cost of 3450 gas and requires invalid inputs and failed verification to consume the same amount as success.
Confidence: Medium
Uncertainty: The score treats addition to the fixed precompile cost schedule as an update to the existing mechanism, rather than as a wholly new gas mechanism.
Patterns affecting pre-existing tests1Existing cases aimed at the 0x100 address or the compatible RIP-7212 interface need only localized expected-result updates for the corrected edge cases. That is a minor subset of pre-existing tests, matching score 1.
  • eip.md · Backwards Compatibility and Interface Compatibility, lines 192-206 The proposal preserves the RIP-7212 address, input, output, gas cost, and return interface, while stating that its security fixes change only edge cases that should previously have failed.
Confidence: Medium
Uncertainty: The EIP does not enumerate the pre-existing execution test inventory; the score is limited to tests that exercise address 0x100 or reuse the stated compatible interface and edge cases.
Security risks1Incorrect implementation could affect consensus or users, but the fixed-input verifier is self-contained, can be validated in isolation, and does not alter an existing protocol security invariant. This matches score 1.
  • eip.md · Security Fixes and Security Considerations, lines 171-177 and 216-228 The text identifies recovered-infinity and modular-comparison errors as capable of incorrect or non-deterministic verification, while characterizing the curve as standardized and documenting malleability and constant-time expectations.
Confidence: Medium
Uncertainty: The consensus-failure consequence makes the review important, but the EIP text does not specify interactions with multiple existing critical components that would support the higher anchors.
Performance risks1The introduced computation requires performance validation but can be benchmarked independently without changing existing performance behavior, exactly matching score 1.
  • eip.md · Gas Schedule and Gas Cost Justification, lines 157-163 and 188-190 The new verification operation has a fixed input and fixed cost, and the EIP justifies that cost using isolated benchmarking against ECRECOVER.
Confidence: High
Cryptography1It introduces one well-known cryptographic mechanism with substantial existing specification and testing resources, exactly matching score 1.
  • eip.md · Abstract, Curve Parameters, and Cryptographic Security, lines 13-17, 37-53, and 216-220 The EIP introduces secp256r1 ECDSA verification, supplies standardized curve parameters, and describes the curve as standardized, extensively analyzed, and already widely deployed.
Confidence: High
Cross-EIP interactions1The sole interaction is a limited compatibility relationship with proposal 7212. Interface and corrected-edge vectors need coordinated consideration, but the new precompile can otherwise be tested independently, matching score 1.
  • eip.md · Motivation and Backwards Compatibility, lines 25-27 and 192-206 EIP-7951 explicitly supersedes RIP-7212, preserves its address, byte interface, gas cost, and return values, and changes only two security-sensitive edge cases.
Confidence: Medium
Uncertainty: The referenced proposal is designated RIP-7212 rather than a mainline EIP, but it is the only numbered proposal with an explicit behavioral and interface coupling in the historical text.
Interacting EIPs: EIP-7212
Unspecified behavior requiring cross-client consensusUnder-specified1These are a few localized specification gaps with obvious intended readings: interpret h consistently with the stated big-endian scalar convention and retain ordinary insufficient-gas call behavior. They therefore match score 1 rather than requiring broad re-baselining.
  • eip.md · Fields and Groups, Scalar Encoding, and ABI Input, lines 55-59, 75-77, and 85-93 Field elements and scalars receive explicit big-endian integer encodings, but the 32-byte message hash h is listed separately and is then used as a scalar in the verification algorithm without an explicit byte-to-integer rule.
  • eip.md · Gas Burning on Error, lines 165-167 The EIP says the precompile must not revert under any circumstances while also assigning a fixed cost, leaving insufficient-gas behavior to the obvious existing precompile execution convention rather than stating an exception.
Confidence: Medium
Uncertainty: If the surrounding encoding and ordinary precompile gas conventions are deemed fully determinative, score 0 is plausible; if explicit client agreement is needed before vectors can be baselined, score 2 is plausible.
Show 19 zero-score criteria
Zero-score criteria (Checklist revision 2)
CriterionScoreWhy this scoreEvidence / uncertainty
Added opcodes0No opcode is introduced, matching score 0.
  • eip.md · Precompile, lines 33-35 The new operation is assigned a precompile address and is not assigned an opcode byte or stack semantics.
Modified opcodes0No pre-existing opcode behavior is modified, matching score 0.
  • eip.md · Precompile and ABI, lines 33-35 and 83-110 P256VERIFY is reached as a precompile call, and the EIP does not alter the result semantics of CALL or any other pre-existing opcode.
Modified precompiles0Compatibility and corrected semantics relative to RIP-7212 do not modify a pre-existing precompile in this proposal's execution-layer scope, matching score 0.
  • eip.md · Precompile and Backwards Compatibility, lines 33-35 and 192-206 The text introduces a new precompile while preserving compatibility with the separately identified RIP-7212 interface; it does not change an already existing Ethereum precompile address, gas schedule, or behavior.
Uncertainty: The EIP describes behavioral security fixes relative to deployed Layer 2 RIP-7212 implementations, but frames P256VERIFY as newly introduced here.
Added system contracts0A precompile is scored under the dedicated precompile criterion; the proposal adds no system contract, matching score 0.
  • eip.md · Precompile, lines 33-35 The EIP explicitly introduces P256VERIFY as a precompile at address 0x100, not as deployed system-contract code or state.
Modified system contracts0No direct or indirect system-contract modification is specified, matching score 0.
  • eip.md · Precompile and Backwards Compatibility, lines 33-35 and 192-206 The proposal adds native precompile behavior and discusses caller interface compatibility, without changing any pre-existing system-contract code or state.
State-access ordering within opcode execution0No opcode state access, state-access recording, or ordering of a gas charge relative to state access changes, matching score 0.
  • eip.md · Precompile and Signature Verification Algorithm, lines 33-35 and 112-147 The introduced operation reads only its call input and performs elliptic-curve verification; no state access or state-relative gas-charging step is specified.
Blob gas accounting changes0No blob gas accounting mechanism is introduced or modified, matching score 0.
  • eip.md · Precompile and Gas Schedule, lines 33-35 and 157-167 The only gas rule specified is a fixed execution-gas cost for P256VERIFY; blobs and blob gas are not part of the operation.
State gas accounting changes0No state gas cost or state-gas charging mechanism changes, matching score 0.
  • eip.md · ABI and Gas Schedule, lines 83-167 The precompile consumes fixed execution gas for computation and specifies no state write, state-gas charge, budget, reservoir, or spill behavior.
New EVM gas refund0No gas-refund mechanism is introduced, matching score 0.
  • eip.md · Gas Schedule, lines 157-167 The EIP defines a fixed charge and equal gas consumption for success and failure, without defining any refund condition.
New transaction types0No new transaction type is introduced, matching score 0.
  • eip.md · Precompile and ABI, lines 33-35 and 83-100 The proposal adds functionality invoked through a precompile call and defines no transaction envelope or transaction type.
New or modified transaction validity mechanisms0No transaction validity rule or intrinsic gas calculation changes, matching score 0.
  • eip.md · Input Validation and Gas Burning on Error, lines 102-110 and 165-167 Validation applies only inside P256VERIFY, and invalid precompile inputs return empty output rather than making the containing transaction intrinsically invalid.
New block / header fields0No new block or block-header field is introduced, matching score 0.
  • eip.md · Precompile and ABI, lines 33-35 and 83-100 The proposal's data is supplied as precompile call input and no block-body or header field is defined.
Encoding changes (RLP/SSZ)0A new precompile's byte ABI is not a transaction, block, or protocol-interface RLP/SSZ encoding migration, so the anchor remains score 0.
  • eip.md · Points and Encoding and ABI, lines 61-100 The EIP defines fixed byte encodings internal to the new precompile call but no transaction, block, Engine API, RLP, or SSZ encoding change.
Block syncing changes0No block RLP validation mechanism is introduced, matching score 0.
  • eip.md · Precompile and ABI, lines 33-35 and 83-110 The proposal adds call-time verification behavior and contains no block RLP or block-validation rule.
New fork activation mechanism0Ordinary activation of new execution behavior is not the state or internal-variable modification targeted by this anchor, so the score is 0.
  • eip.md · Precompile, lines 33-35 The EIP defines availability of a new precompile address but specifies no activation-block state write, migration, or modification of an internal variable.
Engine API changes0No Engine API change is introduced, matching score 0.
  • eip.md · Precompile and ABI, lines 33-35 and 83-110 The only introduced interface is the EVM-callable P256VERIFY input and output; no Engine API endpoint, field, or communication mechanism appears.
Transition-tool interface changes0No transition-tool interface field or mechanism is required, matching score 0.
  • eip.md · Precompile and ABI, lines 33-35 and 83-110 The complete external surface described is a precompile call input and output; no transition-tool field or invocation mechanism is specified.
New invariant on pre-existing tests0Pre-existing tests gain no additional universal assertion, matching score 0.
  • eip.md · Test Cases and Backwards Compatibility, lines 192-210 The text calls for implementation-specific verification vectors and localized compatibility behavior, but does not require unrelated pre-existing tests to assert any new fork-wide value or invariant.
New test-framework primitives0Existing precompile-call, output, and gas-check primitives suffice for the stated interface, so no new test-framework abstraction is required, matching score 0.
  • eip.md · ABI and Test Cases, lines 83-110 and 208-210 The feature is exercised through a fixed byte input and a success-or-empty byte output, and the EIP points to ordinary test vectors rather than a new kind of expectation or framework modifier.
Uncertainty: The linked vector file was not an allowlisted package source, but its absence does not establish a need for a new framework primitive.
Assessment provenance
Assessed EIP revision
ethereum/EIPs@d386b29b5a EIPS/eip-7951.md committed 2025-07-01 · information cutoff 2025-07-02T17:49:36Z
Current master · File history · blob f4600e688b · sha256 4fca0c5daef3
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/05-retrospective-complexity-assignment/outputs/fork-eips/osaka/eip-7951.yaml · sha256 003238621a43
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.