Evaluated on: · Spec revision: 2021-09-22 · 6caab461df
Scope at the cutoff. This revision of EIP-3855 adds the instruction PUSH0 at opcode 0x5f, starting at a fork block HF. PUSH0 has no immediate data and pops nothing. It pushes the constant 0 onto the stack and costs a fixed 2 gas, which the text labels "verylow". The listed test cases cover a single PUSH0, 1024 consecutive PUSH0s (succeeds) and 1025 (stack overflow). The Security Considerations section says jumpdest analysis is unaffected because there is no immediate data. Already-deployed code containing 0x5f may behave differently after the fork.
- Evaluator
- LLMChecklist v3
- Confidence
- High
- Under-specified at assessment cutoff
- Yes — 1 criterion affected
- Plausible range
- 5–6 (Low)
- Assessment cutoff
- 2022-02-04 · EIP revision
6caab461df(2021-09-22)
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
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 gas cost says "2 gas (aka verylow)". In conventional tier naming, verylow is 3 gas and 2 gas is the base tier. The explicit number and the comparison to ADDRESS and ORIGIN support 2 gas.
Plausible total
5–6
recorded score 5 · plausible tiers Low
Affected criteria (1)
Unresolved questions at the cutoff (2)
- Is the intended cost 2 gas (the explicit number) or the verylow tier value (3 gas)?
- The fork is identified only as an HF block number.
Notable ambiguities noted by the assessor (2)
- The "verylow" label conflicts with the stated 2-gas cost. The cited comparison instructions (ADDRESS, ORIGIN) cost 2, which suggests the label is wrong rather than the number.
- Activation is given as BLOCK_NUMBER >= HF, with no concrete fork block.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 1 | Exactly one simple instruction is introduced. |
Confidence: High |
| Patterns affecting pre-existing tests | 1 | Rework is limited to the one parameter value 0x5f within the undefined/invalid-opcode test family. That is localized rework in one behavioral family. |
Confidence: Medium Uncertainty: How much rework is needed depends on whether baseline invalid-opcode tests enumerate 0x5f. No test suite was supplied. |
| Security risks | 1 | The security conditions (jumpdest analysis does not skip bytes after 0x5f, and pre-fork vs post-fork validity) can be checked locally. |
Confidence: Medium |
| Edge/boundary conditions | 1 | There is one boundary-sensitive mechanism: the new push instruction's validity and stack-limit behavior, plus fork activation and exact gas or out-of-gas. There is no elevated matrix. |
Confidence: Medium Uncertainty: The stack limit itself is an existing rule. Someone could argue for 0, but the new instruction's own overflow behavior needs boundary cases. |
| Unspecified behavior requiring cross-client consensusUnder-specified | 1 | The tier label is inconsistent, but the explicit number and the comparison instructions point to one intended outcome: 2 gas. That makes this a localized omission or detail at level 1. |
Confidence: Medium Uncertainty: If an implementer followed the tier name, gas results would differ (3 vs 2). That reading could justify level 2. |
Show 23 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Modified opcodes | 0 | 0x5f was previously undefined. Defining it counts as an added opcode, not a modification of an existing one. |
|
| Added precompiles | 0 | None. |
|
| Modified precompiles | 0 | None. |
|
| Added system contracts | 0 | None introduced. |
|
| Modified system contracts | 0 | None modified. |
|
| EVM Gas rule changes | 0 | A new instruction priced at an existing constant tier is not a new accounting mechanism, and it does not change any existing gas rule or baseline expectation. |
Uncertainty: The tier name conflicts with the number 2 (see UNSP). Either way it is a constant from an existing tier, so this score is unaffected. |
| State-access ordering within opcode execution | 0 | No state access occurs, and no ordering rule changes. |
|
| Blob gas accounting changes | 0 | Blob-gas accounting does not change. |
|
| State gas accounting changes | 0 | State-gas accounting does not change. |
|
| New EVM gas refund | 0 | No new refund mechanism is introduced. |
|
| New transaction types | 0 | None. |
|
| New or modified transaction validity mechanisms | 0 | None. |
|
| New block / header fields | 0 | None. |
|
| Encoding changes (RLP/SSZ) | 0 | No schema or codec changes. |
|
| Block syncing changes | 0 | Only an execution rule changes. |
|
| New fork activation mechanism | 0 | No activation-specific state transition is needed. |
|
| Engine API changes | 0 | The Engine API does not change. |
|
| Transition-tool interface changes | 0 | The tool interface does not change. Fork selection covers the new behavior. |
|
| New invariant on pre-existing tests | 0 | Baseline tests need no new assertion. |
|
| New test-framework primitives | 0 | Baseline primitives (bytecode, stack-overflow and gas expectations) are enough. Adding a PUSH0 mnemonic to the opcode list is a new value, not a new abstraction. |
Uncertainty: One could argue the opcode list needs a local extension (level 1). |
| Performance risks | 0 | No additional performance-validation requirement is established. |
|
| Cryptography | 0 | No cryptographic mechanism changes. |
|
| Cross-EIP interactions | 0 | PUSH0 behaves the same regardless of any other EIP. The EIP-2733 citation is motivation only. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@6caab461dfEIPS/eip-3855.md committed 2021-09-22 · information cutoff 2022-02-04- 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/shanghai/eip-3855.yaml· sha25672fefbd84bbf