Evaluated on: · Spec revision: 2026-10-07 · 6dac5e7491 · EIP-8081 list: CFI
Scope at the cutoff. EIP-8272 sets up a stateful recent root contract at RECENT_ROOT_ADDRESS (0x…8272), installed by the protocol at activation. Root sources write domain-separated keccak entry hashes into an 8192-slot ring buffer keyed by (source_id, slot) using 64-byte calldata. The same contract checks 1–16 packed 72-byte (source_id, slot, root) tuples against storage and the EIP-7843 SLOTNUM within an 8191-slot window. A canonical EIP-8141 VERIFY frame, `recent_root_verify`, calls this check before account validation, so a failed check invalidates the frame transaction. The EIP-8141 public mempool policy is extended with: a fixed frame position, a SLOTNUM/SLOAD exception, MAX_VERIFY_GAS accounting, dependency indexing, and eviction on age, slot advance, reorg and code change. There is no new opcode, transaction envelope, header field or gas mechanism.
- Evaluator
- LLMChecklist v3
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 5 criteria affected
- Plausible range
- 22–27 (Medium–High)
- 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
- New fork activation mechanism3
- Edge/boundary conditions3
- Cross-EIP interactions3
- Added system contracts2
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: RECENT_ROOT_CODE is TBD, so the gas used by write and validation calls, the order of checks and short-circuiting, and revert-vs-halt behavior cannot be fixed. The failure mode of a static-context write is unspecified. It is unclear whether the activation install runs when genesis is already in the fork, and how a transition tool detects the first active block.
Plausible total
22–27
recorded score 24 · plausible tiers Medium, High
Unresolved questions at the cutoff (5)
- What is the exact RECENT_ROOT_CODE bytecode, and therefore the gas used by write and validation calls?
- Does the validation operation stop at the first failing tuple, and in what order does it check the window and SLOAD (this affects warm sets and gas used)?
- Does a write in static context revert or halt exceptionally?
- If genesis is already in the fork, does the activation install run in block 1, or must the contract be in genesis allocation?
- How does a transition tool learn that a block is the first active block?
Notable ambiguities noted by the assessor (5)
- RECENT_ROOT_CODE is TBD, but the EIP requires direct evaluation to match EVM gas use and warm sets exactly.
- A static-context write "MUST fail" without saying whether it reverts or halts exceptionally.
- The activation trigger is unclear for chains or tests whose genesis is already in the fork.
- Mempool current_slot (header slotNumber + 1) can differ from the payload slot, so builder revalidation is required; the expected eviction behavior for skipped slots is only partly specified.
- The admission margin for references close to expiry is left to the node, so expiry-near admission results are not deterministic across clients.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| New fork activation mechanism | 3 | Activation installs code at a new or existing empty account: nonce max(n,1), balance preserved, invalid if code or storage is present. This differs from ordinary post-fork processing. Level 3. |
Confidence: High Uncertainty: Behavior when genesis is already in the fork is not stated. |
| Edge/boundary conditions | 3 | There are several independent boundary-sensitive mechanisms: the age window and ring index, calldata length and tuple count, the MAX_VERIFY_GAS budget, the execution limit, and the activation-state conditions. The frame-position rule is an elevated matrix: four prefix shapes × expiry_verify presence × recent_root_verify presence × order and duplication, where combinations change acceptance. Separately, the current_slot definition (mempool header+1 vs payload slotNumber) interacts with the age window. Level 3. |
Confidence: High |
| Cross-EIP interactions | 3 | The target couples EIP-8141 (frame modes, flags, STATICCALL VERIFY, frame-entry cold charge, prefix matching, MAX_VERIFY_GAS, introspection, revalidation) with EIP-7843 (SLOTNUM as current_slot, mempool header+1 slot, payload slot revalidation). This requires coordinated scenarios across both, plus EIP-7702 storage-context checks. Level 3. |
Confidence: Medium Interacting EIPs: EIP-8141, EIP-7843, EIP-7702 |
| Added system contracts | 2 | Exactly one stateful system contract is introduced. Level 2. |
Confidence: High |
| New or modified transaction validity mechanisms | 2 | The VERIFY invalidation rule is inherited, but the protocol-installed contract adds a new consensus validity dependency on recent-root storage, SLOTNUM and the window. This needs dedicated multi-block cases: write in slot S then reference at S+1, a same-slot reference, ages 8191 and 8192, overwrite within a slot, and a reorg-removed root. Baseline EIP-8141 test construction remains usable. Level 2. |
Confidence: Medium Uncertainty: Could be read as an application-level revert under an unchanged VERIFY rule (level 1). However, the contract is protocol-mandated and bound to slot semantics. |
| Block syncing changesUnder-specified | 2 | One complex block-validity rule, tested through block import: the first active block is invalid if RECENT_ROOT_ADDRESS has nonempty code or storage in the parent state. It depends on state, so it is complex. No RLP decoding changes. Level 2. |
Confidence: Low Uncertainty: This is a state-dependent rule rather than a structural one. It could be treated as an activation/execution matter only, which would give 0. |
| Security risks | 2 | Relaxing the mempool's no-shared-mutable-state invariant changes security assumptions between mempool admission/eviction, block-builder revalidation and the contract. Needed adversarial cases: mass invalidation via reorg or expiry, same-slot overwrite, and the gap between mempool slot and payload slot. Write-context isolation (static, DELEGATECALL, 7702) also needs checking. This is a bounded interaction rather than a change across many components. Level 2. |
Confidence: Medium Uncertainty: Could reach 3 if the mempool DoS invariant change is treated as a shared trust invariant across mempool, builder and applications. |
| Performance risks | 2 | Needs targeted integrated benchmarks of mempool dependency indexing and revalidation under reorgs and synchronized expiry of popular roots, and of 16-SLOAD validation inside the MAX_VERIFY_GAS budget. This is a bounded interaction between mempool and state. Level 2. |
Confidence: Medium Uncertainty: Unbounded growth in the number of source_ids is priced by ordinary state growth; whether that needs separate benchmarking is not established. |
| Unspecified behavior requiring cross-client consensusUnder-specified | 2 | Several consensus-visible outcomes cannot be fixed yet: gas used by write and validation calls, short-circuit order on failing tuples (which affects warm sets and gas), the failure mode for static-context writes, and the install trigger when genesis is in the fork. These are localized competing outcomes that need specification agreement. Level 2. |
Confidence: Medium Uncertainty: Once RECENT_ROOT_CODE is published, most of these resolve. |
| Patterns affecting pre-existing testsUnder-specified | 1 | Rework is limited to particular cases in the EIP-8141 public mempool prefix-shape family. A VERIFY frame with flags 0 targeting 0x…8272 before account validation used to be rejected and may now be accepted, and the deploy-first check now applies after skipping. Baseline execution tests are otherwise unaffected. Level 1. |
Confidence: Medium Uncertainty: If tests whose genesis is already in the fork must run the activation install in block 1, many blockchain-test post-states would change. |
| New invariant on pre-existing testsUnder-specified | 1 | Fork-transition tests must also assert the newly installed account (code, nonce 1, preserved balance, empty storage) in the first active block. Only that restricted family needs the assertion. Level 1. |
Confidence: Medium Uncertainty: The text does not say whether the install applies when genesis is already in the fork. If it does, many more tests would be affected. |
| New test-framework primitives | 1 | Needs local extensions to existing kinds of primitive: tuple and frame builders, an entry-hash/storage-key pre-state helper, and mempool eviction expectations for slot advance and reorg on top of the EIP-8141 mempool revalidation harness. No new shared abstraction is architecturally required. Level 1. |
Confidence: Medium Uncertainty: If the EIP-8141 baseline has no mempool/reorg harness that can be driven from tests, the eviction and reorg cases would need a new expectation abstraction (level 2). |
Show 16 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No new instruction. Level 0. |
|
| Modified opcodes | 0 | Instruction semantics are unchanged. The SLOTNUM/SLOAD permissions are public-mempool policy only. Level 0. |
|
| Added precompiles | 0 | No precompile is introduced. Level 0. |
|
| Modified precompiles | 0 | Level 0. |
|
| Modified system contracts | 0 | No existing protocol-designated contract changes its rules, code or layout. The expiry verifier's position and semantics are unchanged. Level 0. |
Uncertainty: The extended prefix-skip rule touches handling around expiry_verify, but expiry_verify itself stays first. |
| EVM Gas rule changes | 0 | The frame and contract calls use ordinary EVM and EIP-8141 gas rules. Counting the frame's limit toward MAX_VERIFY_GAS is mempool policy, not execution-gas accounting. Level 0. |
Uncertainty: Actual gas use depends on RECENT_ROOT_CODE, which is TBD, but that is the cost of contract code, not an accounting rule. |
| State-access ordering within opcode execution | 0 | No instruction's state-access or gas-charge ordering changes. The frame-entry cold access charge is inherited from EIP-8141. Level 0. |
|
| Blob gas accounting changes | 0 | No blob-gas rules change. Level 0. |
|
| State gas accounting changes | 0 | Writes are ordinary SSTOREs under unchanged state-gas rules. There is no registration surcharge and no new charge site. Level 0. |
Uncertainty: A future surcharge is only mentioned as a possibility in Security Considerations. |
| New EVM gas refund | 0 | No new refund. Overwriting ring-buffer slots uses existing SSTORE refund rules. Level 0. |
|
| New transaction types | 0 | No new envelope. Level 0. |
|
| New block / header fields | 0 | No header field is added by the target. Level 0. |
|
| Encoding changes (RLP/SSZ) | 0 | Only contract calldata and storage layouts are new, and the template excludes those. Level 0. |
|
| Engine API changes | 0 | No Engine API change beyond the prerequisite. Level 0. |
|
| Transition-tool interface changesUnder-specified | 0 | slotNumber is a prerequisite (EIP-7843) field. The EIP adds no transition-tool field or mechanism. Mempool handling is outside t8n. Level 0. |
Uncertainty: Detecting the first active block may need parent-fork information in the t8n input. No tool evidence was supplied. |
| Cryptography | 0 | Only reuses keccak256 inside contract logic and mempool direct evaluation. No cryptographic verification or protocol hashing rule changes. Level 0. |
Uncertainty: The domain-separated key derivation is new, but it is message construction that the template treats as an encoding concern. |
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@6dac5e7491EIPS/eip-8272.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-8272.yaml· sha256b9c0223875fb - Supporting documents supplied with the EIP
supporting/eip-7702.md,supporting/eip-7843.md,supporting/eip-8141.md