Evaluated on: · Spec revision: 2026-10-07 · 6dac5e7491 · EIP-8081 list: CFI
Scope at the cutoff. EIP-5920 adds one EVM instruction, PAY (0xfc). It pops `addr` then `val` and sends `val` wei from the current account to `addr` without running any code at `addr`. If the frame is static (EIP-214) or the upper 12 bytes of `addr` are non-zero, it halts exceptionally. It charges warm/cold access gas (EIP-2929), plus GAS_NEW_ACCOUNT when the recipient does not exist and `val` is non-zero, plus GAS_CALL_VALUE when `val` is non-zero. It then adds `addr` to `accessed_addresses` and pushes 1 on success or 0 if the balance is too low. It relies on EIP-7523 (no empty accounts) and adds no transaction, header, encoding or system-contract changes.
- Evaluator
- LLMChecklist v3
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 4 criteria affected
- Plausible range
- 14–20 (Medium)
- Snapshot
- 2026-10-07 · EIP revision
6dac5e7491(2026-10-07)
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
- Edge/boundary conditions3
- Added opcodes2
- EVM Gas rule changes2
- State-access ordering within opcode execution2
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 core semantics are clear. Some details depend on baseline mechanisms that are not supplied or are only implied: whether a zero-value PAY to a non-existent address creates or touches an account, how failure paths are recorded in block-level access lists, and how GAS_NEW_ACCOUNT maps onto any state-gas accounting in Amsterdam.
Plausible total
14–20
recorded score 18 · plausible tiers Medium
Unresolved questions at the cutoff (4)
- Does a zero-value PAY to a non-existent address create, touch or leave the account absent?
- Is addr recorded in the block-level access list when PAY fails for insufficient balance or runs out of gas after the existence check?
- How does GAS_NEW_ACCOUNT interact with any state-gas or reservoir mechanism in the Amsterdam baseline?
- Self-PAY (addr == current address): is it a no-op that still charges GAS_CALL_VALUE?
Notable ambiguities noted by the assessor (3)
- Gas is charged and addr is warmed before the conditional transfer, so a PAY that fails for insufficient balance still pays the full cost, including GAS_NEW_ACCOUNT. This follows from the order of the bullets rather than an explicit statement.
- The static-frame halt is unconditional, even for val=0, which differs from CALL. The halt also appears to come before the stack pops, but the difference is not observable.
- The constants are linked to frontier EELS values instead of being given numerically.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Edge/boundary conditions | 3 | There are several independent boundary-sensitive mechanisms: address-width validation (bit 160 vs. lower bits), the balance >= val comparison (equal, one wei short), and exact-gas out-of-gas points. The gas rule has an elevated matrix: recipient existence × val zero/non-zero decides GAS_NEW_ACCOUNT, and warm/cold adds to it. These cannot be tested independently, so level 3 applies. |
Confidence: Medium Uncertainty: The matrix is fairly small (three binary dimensions). A stricter reading of 'elevated' would give 2. |
| Added opcodes | 2 | Exactly one instruction is added. Its gas is dynamic, so it is complex, which gives level 2. |
Confidence: High |
| EVM Gas rule changesUnder-specified | 2 | PAY adds a new dynamic charging rule at a new instruction. It is built from existing components and does not change any existing opcode's gas or baseline gas results. That fits level 2: a new mechanism with no change to existing rules. |
Confidence: Medium Uncertainty: One could argue that reusing existing gas components is not a new accounting mechanism, which would give 0. Level 2 is the best-supported reading because the opcode's charging rule is new and conditional. |
| State-access ordering within opcode executionUnder-specified | 2 | PAY is a new state-accessing operation that needs its own ordering rule. The existence read and the warm/cold check come before the charge, and the warming and transfer come after it. No existing opcode's ordering changes. Relevant combinations are cold/warm, existing/non-existing recipient, static/non-static, enough/too little balance, revert/success, and out-of-gas at each gas part. |
Confidence: Medium Uncertainty: The Amsterdam baseline's block-level access list rules are not supplied. Whether `addr` is recorded on out-of-gas or insufficient-balance paths cannot be checked. |
| State gas accounting changesUnder-specified | 2 | PAY adds a new place where an existing account-creation charge applies, without a new state-gas mechanism. That matches level 2: charging added at a new site using an existing mechanism. |
Confidence: Low Uncertainty: Any state-gas mechanism in the Amsterdam baseline is not supplied. If GAS_NEW_ACCOUNT is treated purely as execution gas, this could be 0. If the baseline has a separate state-gas dimension, PAY must also be wired into it, which the EIP does not specify. |
| Cross-EIP interactions | 2 | Coordinated cases are needed with EIP-214 (PAY in static frames, including val=0), EIP-2929 (warming shared with CALL/BALANCE, and warming undone on revert) and EIP-7702 (PAY to a delegated EOA runs no code and charges no delegation-resolution cost). Each of these is a pairwise interaction, not a coupled multi-EIP restructuring, so level 2 applies. |
Confidence: Medium Uncertainty: Whether the EIP-6780 cases (PAY to or from a contract created and self-destructed in the same transaction) need coordinated cases or only compatibility checks is a judgement call. Interacting EIPs: EIP-214, EIP-2929, EIP-7702, EIP-6780, EIP-7523, EIP-1153 |
| Patterns affecting pre-existing tests | 1 | Baseline tests that treat 0xfc as an undefined or invalid opcode need new expected results. This rework is limited to particular cases in one family (undefined-opcode coverage). |
Confidence: Medium Uncertainty: No test suite was supplied, so the exact number of affected undefined-opcode cases cannot be measured. |
| New test-framework primitives | 1 | The framework's opcode definitions need a local extension for PAY: its stack arity and a gas calculator for its dynamic cost. No new abstraction is needed. |
Confidence: Medium Uncertainty: This could be 0 if adding an opcode entry does not count as extending a primitive. |
| Security risks | 1 | The new security conditions can be checked locally: static enforcement, address-width halting, insufficient-balance handling, and no code running at the recipient (including delegated EOAs). No other component's assumptions change. |
Confidence: Medium Uncertainty: Some applications that assume value arrives only through code may be affected, but this is outside the protocol and the EIP says it is not a new invariant. |
| Performance risks | 1 | A component benchmark of worst-case PAY workloads (many cold or new-account transfers per block) is enough. Baseline end-to-end performance assumptions do not change. |
Confidence: Medium Uncertainty: Account-creation throughput per gas is close to CALL with value, but PAY skips loading code. No benchmark evidence was supplied. |
| Unspecified behavior requiring cross-client consensusUnder-specified | 1 | Some local details are omitted: account creation on a zero-value PAY, self-PAY, and access-list recording on failure paths. The surrounding rules (no empty accounts, CALL-like semantics) support one intended outcome for each, so this is level 1. |
Confidence: Medium Uncertainty: The Amsterdam block-level access list and state-gas specifications are not supplied. If they create competing outcomes for recording or charging on out-of-gas or insufficient-balance paths, this would be 2. |
Show 17 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Modified opcodes | 0 | No existing instruction's semantics or availability change. |
|
| Added precompiles | 0 | None added. |
|
| Modified precompiles | 0 | None modified. |
|
| Added system contracts | 0 | None added. |
|
| Modified system contracts | 0 | No system contract's rules or surrounding protocol behavior change. |
Uncertainty: Value can now reach a system contract without its code running. This is an application-level concern and does not change the contracts' rules. |
| Blob gas accounting changes | 0 | No blob-gas rule is affected. |
|
| New EVM gas refund | 0 | No refund mechanism is introduced. |
|
| New transaction types | 0 | No new transaction type. |
|
| New or modified transaction validity mechanisms | 0 | No consensus rule on transaction validity changes. |
|
| New block / header fields | 0 | None. |
|
| Encoding changes (RLP/SSZ) | 0 | No schema changes. |
|
| Block syncing changes | 0 | No block decoding or structural validation changes. |
|
| New fork activation mechanism | 0 | Only a rule switch at activation. No one-time state transition. |
|
| Engine API changes | 0 | No Engine API change. |
|
| Transition-tool interface changes | 0 | The transition tool's interface does not need to change. |
|
| New invariant on pre-existing tests | 0 | Baseline tests need no new assertion. |
|
| Cryptography | 0 | No cryptographic mechanism changes. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@6dac5e7491EIPS/eip-5920.md committed 2026-10-07 · information cutoff 2026-10-07T22:23:55Z- Rubric
- Checklist revision 3 ·
ethspecs/pm@fe2f793b03 - Evaluator
- Opus 5.5 (
claude-opus-5-5) at high effort, one tool-less call per EIP · isolationbubblewrap_claude_p_no_tools_v1 - Source record
- Frozen research record
research/tasks/10-opus-v3-reassessment/prospective/outputs/assessments/hegota-2026-10-08/eip-5920.yaml· sha256f3d3de9b94c9 - Supporting documents supplied with the EIP
supporting/eip-141.md,supporting/eip-214.md,supporting/eip-1153.md,supporting/eip-1283.md,supporting/eip-2200.md,supporting/eip-2929.md,supporting/eip-6780.md,supporting/eip-7523.md,supporting/eip-7702.md