Evaluated on: · Spec revision: 2025-09-17 · 28578c7ba0
Scope at the cutoff. EIP-8024, at this revision, adds three legacy EVM instructions: DUPN (0xe6), SWAPN (0xe7) and EXCHANGE (0xe8). Each takes a 1-byte immediate and costs a constant 3 gas. DUPN and SWAPN reach stack items 17–235, and EXCHANGE swaps defined (n, m) pairs within the top 30 items. The immediate is decoded by decode_single or decode_pair. Immediates in the ranges 91–127 (DUPN/SWAPN) and 80–127 (EXCHANGE) cause a halt that consumes all gas. These ranges are excluded so that JUMPDEST analysis stays unchanged and no existing jump target is created or removed.
- Evaluator
- LLMChecklist v3
- Confidence
- High
- Under-specified at assessment cutoff
- Yes — 2 criteria affected
- Plausible range
- 11–12 (Low–Medium)
- Assessment cutoff
- 2025-10-29 · EIP revision
28578c7ba0(2025-09-17)
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
- Added opcodes3
- Edge/boundary conditions2
- Patterns affecting pre-existing tests1
- New test-framework primitives1
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: There are minor, localized omissions: stack underflow/overflow handling, how an immediate past the end of the code is read, and the use of the word "revert" alongside "consuming all gas". General EVM conventions resolve each of these to a single outcome.
Plausible total
11–12
recorded score 11 · plausible tiers Low, Medium
Affected criteria (2)
Unresolved questions at the cutoff (3)
- What happens when the opcode is the last byte of the code: is the missing immediate read as 0 (DUPN 17, and so on)?
- Is the invalid-immediate failure an exceptional halt, or a REVERT with return data, given that it consumes all gas?
- Stack underflow when n exceeds the stack height, and DUPN overflow at 1024 items, are not stated explicitly.
Notable ambiguities noted by the assessor (3)
- The word "revert" is used for invalid immediates while also requiring all gas to be consumed.
- Reading an immediate at code[pc+1] beyond the end of the code is not specified.
- Stack underflow/overflow conditions are not stated in the formal steps.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 3 | Multiple instructions are introduced, and all of them are complex because they carry immediate data. This is level 3. |
Confidence: High |
| Edge/boundary conditionsUnder-specified | 2 | Several independent boundary-sensitive mechanisms are introduced: the invalid-immediate ranges for each opcode, the piecewise decode branches, stack-depth reachability (n relative to stack height, and DUPN at 1024 items), and the JUMPDEST/PUSH compatibility boundary. None forms an elevated matrix whose combinations cannot be tested separately, so this is level 2. |
Confidence: Medium Uncertainty: Stack underflow/overflow and an immediate past the end of the code are not stated explicitly, though general EVM rules imply exceptional halts. |
| Patterns affecting pre-existing tests | 1 | Baseline tests that treat 0xe6–0xe8 as undefined and expect an exceptional halt must now expect execution when the immediate is valid. That rework is confined to a few cases in the undefined-opcode family, so this is level 1. |
Confidence: Medium Uncertainty: No test suite was supplied, so the number of affected undefined-opcode tests is estimated. |
| New test-framework primitives | 1 | The framework's opcode and bytecode builder needs a local extension to encode the operand-to-immediate mapping, and to emit raw invalid immediates. No new abstraction is required, so this is level 1. |
Confidence: Medium Uncertainty: Existing support for opcodes with immediates is assumed to extend; actual helper availability was not supplied. |
| Security risks | 1 | The new security condition, preserving jump-target analysis and halting on invalid immediates, can be checked locally within the EVM interpreter and its jumpdest analysis. This is level 1. |
Confidence: Medium |
| Performance risks | 1 | Component benchmarks of deep DUPN, SWAPN and EXCHANGE are enough to confirm that 3 gas is adequate, including immediate decoding at stack depths up to 235. No end-to-end performance assumptions change, so this is level 1. |
Confidence: Medium Uncertainty: This could be 0 if benchmarking is considered unnecessary given the parity with DUP/SWAP. |
| Cross-EIP interactions | 1 | Only local compatibility checks with existing opcode and jump-analysis behavior are needed. The target's behavior can otherwise be tested on its own, so this is level 1. |
Confidence: Medium Uncertainty: The candidate list is empty, so the interactions are recorded without EIP numbers. |
| Unspecified behavior requiring cross-client consensusUnder-specified | 1 | Several localized details are omitted, but general EVM rules support one intended outcome for each: exceptional halt on underflow/overflow, and zero-padded code for a missing immediate. Because every failure path consumes all gas, the order of checks is not observable. This is level 1. |
Confidence: Medium Uncertainty: If clients disagree on how to read an immediate past the end of the code, or on the meaning of "revert", this would rise to level 2. |
Show 20 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Modified opcodes | 0 | Only previously undefined bytes gain meaning, which is counted under Added opcodes. No existing instruction's semantics or availability changes. |
|
| Added precompiles | 0 | None added. |
|
| Modified precompiles | 0 | None modified. |
|
| Added system contracts | 0 | None added. |
|
| Modified system contracts | 0 | None modified. |
|
| EVM Gas rule changes | 0 | The new instructions only have constant per-opcode costs. No accounting rule or baseline gas result changes, so this is level 0. |
|
| State-access ordering within opcode execution | 0 | No state is accessed and no instruction's access ordering changes. |
|
| Blob gas accounting changes | 0 | No blob-gas accounting changes. |
|
| State gas accounting changes | 0 | No state-gas accounting changes. |
|
| New EVM gas refund | 0 | No new refund mechanism. |
|
| New transaction types | 0 | None introduced. |
|
| New or modified transaction validity mechanisms | 0 | No transaction-validity or intrinsic-gas changes. |
|
| New block / header fields | 0 | None added. |
|
| Encoding changes (RLP/SSZ) | 0 | The immediate encoding is part of contract bytecode, not a protocol serialization schema. |
|
| Block syncing changes | 0 | No block RLP or structural validation changes. |
|
| New fork activation mechanism | 0 | No activation-specific state transition is required. |
|
| Engine API changes | 0 | No Engine API changes. |
|
| Transition-tool interface changes | 0 | The transition tool's interface does not change. |
|
| New invariant on pre-existing tests | 0 | Baseline tests need no new assertion. |
|
| Cryptography | 0 | No cryptography is added or changed. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@28578c7ba0EIPS/eip-8024.md committed 2025-09-17 · information cutoff 2025-10-29T02:00:31Z- 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/retrospective/outputs/assessments/amsterdam/eip-8024.yaml· sha2565efa5f1d1251