Evaluated on: · Spec revision: 2025-05-20 · 0aefdc9d5a
Scope at the cutoff. EIP-7843 (revision 0aefdc9d) adds a SLOTNUM opcode at 0x4b. It takes no inputs, pushes the current block's slot number (described as an 8-byte big-endian uint) and costs a fixed 2 gas. The consensus layer computes the slot number and passes it to the execution layer through a new uint64 `slot_number` field in the Engine API `PayloadAttributes`. The execution header encoding also gets a uint64 `slot_number` field, so each block carries the value without extra inputs. The EIP does not specify the header field's position, how the field is validated, the newPayload/ExecutionPayload changes, Engine method versioning, or the genesis value.
- Evaluator
- LLMChecklist v3
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 4 criteria affected
- Plausible range
- 18–23 (Medium–High)
- Assessment cutoff
- 2025-06-09 · EIP revision
0aefdc9d5a(2025-05-20)
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
- New block / header fields3
- Encoding changes (RLP/SSZ)3
- New invariant on pre-existing tests2
- Unspecified behavior requiring cross-client consensus2
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 EIP adds a header field and a PayloadAttributes field but does not say where the field goes in the header RLP. It also gives no validation rule for imported blocks, no ExecutionPayload/newPayload or method-versioning changes, and no genesis or fork-transition value.
Plausible total
18–23
recorded score 19 · plausible tiers Medium, High
Affected criteria (4)
Unresolved questions at the cutoff (4)
- Where does slot_number go in the header RLP list?
- How does newPayload/ExecutionPayload carry slot_number, and must the EL validate it against the CL value, the timestamp or the parent slot?
- Are new versioned Engine API methods required?
- What slot_number value applies at genesis or the fork block?
Notable ambiguities noted by the assessor (3)
- The value is called an '8 byte uint in big endian encoding', but the EVM stack is 256-bit; zero-extension is presumably intended but not stated.
- There is no stated consistency rule between slot_number and the block timestamp.
- Engine API changes are described only for PayloadAttributes, not for ExecutionPayload.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| New block / header fields | 3 | The execution header schema gains a slot_number member that clients must produce and read. |
Confidence: High |
| Encoding changes (RLP/SSZ) | 3 | The block header RLP schema and the Engine API PayloadAttributes schema both gain a serialized field. |
Confidence: High Uncertainty: The field's position in the header RLP list is not specified. |
| New invariant on pre-existing tests | 2 | Every post-fork block test must include and check the new header field. That is a universal assertion within the fork. Pre-fork vectors are not affected, so the rubric caps this at level 2. |
Confidence: Medium |
| Unspecified behavior requiring cross-client consensus | 2 | Localized but competing outcomes affect block hashes and validity: where the field sits in the header, how imported blocks validate it, and what the genesis or fork-block value is. Clients must agree on these before fixtures can be fixed. |
Confidence: Medium Uncertainty: A later revision or Engine API spec may define these; neither was supplied. |
| Added opcodes | 1 | Exactly one simple instruction is introduced. |
Confidence: High |
| Block syncing changesUnder-specified | 1 | Block import must decode and structurally check the one new field (presence and uint64 size) after the fork: a single simple rule. No consistency check against other fields or blocks is specified. |
Confidence: Low Uncertainty: The validation rule for slot_number is unspecified. A check against the timestamp, the parent's slot or the CL-supplied value would be a complex rule (level 2). |
| Engine API changesUnder-specified | 1 | Exactly one semantic field (slot_number) is specified. No new method version or endpoint behavior is stated. |
Confidence: Low Uncertainty: Building the header from ExecutionPayload in newPayload implies the payload must also carry the field (the same semantic field). Changing PayloadAttributes plausibly requires new versioned methods, which would make this level 2–3. None of this is specified. |
| Transition-tool interface changes | 1 | One semantic field (the slot number in the block environment and header) is added. The tool's operation is otherwise unchanged. |
Confidence: Medium Uncertainty: No tool evidence was supplied; the field name and placement are assumptions. |
| Patterns affecting pre-existing tests | 1 | The only behavioral rework is the 0x4b boundary case in the undefined/invalid-opcode family: it must now succeed instead of halting. That is a parameter case within one family. The header-field plumbing is assessed under INV/HDR/ENC. |
Confidence: Medium Uncertainty: If changed block hashes from the extra header field count as rework of expected results across all blockchain fixtures, this could be scored higher. |
| New test-framework primitives | 1 | Existing header/environment and opcode primitives need local extensions; no new abstraction is required. |
Confidence: Medium |
| Security risksUnder-specified | 1 | Contracts can now read a CL-provided header value. Its correctness (header value matching the CL value, uint64 bounds) can be checked locally without changing other components' assumptions. |
Confidence: Low Uncertainty: The validation rule is unspecified, so the exact security boundary is unclear. |
| Edge/boundary conditionsUnder-specified | 1 | One boundary-sensitive mechanism: the uint64 slot-number range, covering header decoding of oversized values and stack representation at 0 and 2^64-1. |
Confidence: Low Uncertainty: A validation rule tying slot_number to the timestamp or parent block is not specified. If one were added, it would add a second boundary-sensitive rule. |
| Cross-EIP interactions | 1 | The new header field extends a header schema that includes EIP-4788's parent_beacon_block_root, so header encoding and ordering need a local compatibility check. The SLOTNUM value could also be cross-checked against beacon-root proofs. Otherwise the opcode can be tested on its own. |
Confidence: Low Uncertainty: The EIP-4788 citation is mostly motivational, so the interaction could arguably be scored 0. Interacting EIPs: EIP-4788 |
Show 15 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Modified opcodes | 0 | No existing instruction's semantics change. |
|
| Added precompiles | 0 | None. |
|
| Modified precompiles | 0 | None. |
|
| Added system contracts | 0 | None. |
|
| Modified system contracts | 0 | No system contract's rules or surrounding behavior change. |
|
| EVM Gas rule changes | 0 | Giving a new opcode a constant base-tier cost is not a new gas-accounting mechanism and does not change any existing accounting rule. Its gas cost is tested under the opcode criterion. |
|
| State-access ordering within opcode execution | 0 | No state access or gas-charge ordering is introduced or changed. |
|
| Blob gas accounting changes | 0 | No blob-gas rules change. |
|
| State gas accounting changes | 0 | No state-gas accounting changes. |
|
| New EVM gas refund | 0 | No refund mechanism is introduced. |
|
| New transaction types | 0 | None. |
|
| New or modified transaction validity mechanisms | 0 | None. |
|
| New fork activation mechanism | 0 | Activation only selects new rules: the opcode becomes valid and the header field is required. No one-time state transition is needed. |
|
| Performance risks | 0 | No new or changed workload needs performance validation. |
|
| Cryptography | 0 | No cryptographic rule changes. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@0aefdc9d5aEIPS/eip-7843.md committed 2025-05-20 · information cutoff 2025-06-09T07:29:29Z- 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-7843.yaml· sha2561361e740cecf - Supporting documents supplied with the EIP
supporting/eip-4788.md