Evaluated on: · Spec revision: 2025-07-31 · 59be937534
Scope at the cutoff. At the information cutoff, this draft introduced a consensus-enforced Block-Level Access List in the block body and a new header commitment, with an ordered SSZ structure covering accessed accounts, storage reads, and per-transaction storage, balance, nonce, and code changes. Clients were required to gather accesses and changes during execution, system processing, and withdrawals, then reject a block whose committed BAL was incomplete, spurious, or inaccurate. The stated goals were parallel I/O and transaction validation, plus state reconstruction without transaction execution.
- Evaluator
- LLMChecklist v2
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 9 criteria affected
- Plausible range
- 37–41 (High)
- Assessment cutoff
- 2025-07-31 · EIP revision
59be937534(2025-07-31)
Score bands · Checklist revision 2
- 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 draft establishes exact BAL validity without fully specifying how every execution path maps into the list, how the SSZ object is committed and embedded in the RLP body, or how system and withdrawal effects are ordered and indexed. It also omits transition-tool and Engine API representations and contains an EIP-7702 hyperlink that resolves to the packaged EIP-7792. These are material because distinct client choices can produce different bal_hash values for the same execution.
Plausible total
37–41
recorded score 40 · plausible tiers High
Affected criteria (9)
- Modified system contracts (2)
- State-access ordering within opcode execution (0)
- Encoding changes (RLP/SSZ) (3)
- Block syncing changes (3)
- Engine API changes (2)
- Transition-tool interface changes (2)
- Edge/boundary conditions (3)
- Cross-EIP interactions (4)
- Unspecified behavior requiring cross-client consensus (3)
Unresolved questions at the cutoff (6)
- What exact SSZ serialization or tree root does compute_bal_hash use, is compression consensus-visible, and where are the opaque BAL bytes placed in the RLP block body?
- Do failed, reverted, out-of-gas, or declared-but-unused EIP-2930 accesses remain in the BAL, and at what exact point does each state-accessing operation become recordable?
- Are EIP-7002 and EIP-7251 processed only after transactions, are EIP-2935 and EIP-4788 processed only before them, and why does the generic pseudocode process all four in both calls?
- Do system effects use transaction_count or transaction_count + 1, and how are they distinguished from withdrawals that also use transaction_count in the pseudocode?
- Which new fields are inputs or outputs of transition-tool and Engine API interfaces, and which component derives bal_hash?
- Does the authority nonce rule intend EIP-7702 as written, or EIP-7792 as linked, whose packaged text instead specifies verifiable logs?
Notable ambiguities noted by the assessor (5)
- The normative source defines bal_hash only as Hash32 and calls compute_bal_hash without specifying the commitment derivation.
- The prose assigns system-contract effects transaction_count + 1, while the pseudocode uses transaction_count and also assigns that value to withdrawals.
- The two process_system_contracts calls are described as covering different EIP sets, but the single function body tracks all four named system mechanisms on either call.
- The text names EIP-7702 authorities but links to eip-7792.md; the packaged EIP-7792 concerns verifiable logs and supplies no authority definition.
- Storage reads include the phrase "slots in pre-state but not written," which does not state whether access is required and conflicts with the surrounding access-based definition if read literally.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Cross-EIP interactionsUnder-specifiedExceptional | 4 | The BAL has strong, test-relevant interdependencies with seven identified EIPs: 2929, 2930, 7702, 7002, 7251, 2935, and 4788. Access-set initialization and per-opcode tracking, authority nonce changes, and four system-transition paths each need coordinated expected BAL cases. A base score of 3 plus one increment for four additional EIPs beyond the first three yields 4. Exceptional score: Cross-EIP interactions is explicitly uncapped. Seven identified interacting EIPs leave four beyond the first three, which triggers one rubric-defined +1 increment and produces score 4. |
Confidence: Medium Uncertainty: The authority reference names EIP-7702 but links to the packaged EIP-7792; 7702 is retained because it is the number stated in the normative sentence, while 7792 is not counted as an interaction. Some system EIP timing is contradictory. Interacting EIPs: EIP-2929, EIP-2930, EIP-7702, EIP-7002, EIP-7251, EIP-2935, EIP-4788 |
| New block / header fields | 3 | The binary rubric anchor assigns score 3 for any new block or header field. |
Confidence: High |
| Encoding changes (RLP/SSZ)Under-specified | 3 | The rubric assigns score 3 whenever encoding changes are introduced at block level; this proposal does so directly. |
Confidence: High Uncertainty: The exact SSZ commitment and RLP placement are missing, but the existence of a block-level encoding change is unambiguous. |
| Block syncing changesUnder-specified | 3 | Sync validation must handle multiple related mechanisms: the changed header/body RLP shape, nested SSZ decoding and limits, commitment matching, and full semantic validation. At least one is complex, meeting score 3. |
Confidence: Medium Uncertainty: The exact RLP body placement and hash derivation are absent, so some validation cases cannot yet be baselined. |
| Patterns affecting pre-existing tests | 3 | Existing post-fork block and execution scenarios across diverse opcode, transaction, system-action, and sync categories must be reworked to carry a correctly derived BAL and commitment. This is a major, diverse subset rather than a narrow contrived class. |
Confidence: High Uncertainty: The draft does not describe a test migration plan, but the fork-wide block-validity consequence is explicit. |
| New invariant on pre-existing tests | 3 | Regardless of what an execution test principally exercises, every test instantiated at the fork must additionally satisfy and check the BAL commitment and exact-content invariant. Existing scenarios carried into the fork therefore require mechanically re-derived BAL data. |
Confidence: High |
| New test-framework primitives | 3 | Because every post-fork block needs this artifact, BAL derivation, encoding, commitment, and invalid-entry expectations must be framework-level primitives used by unrelated EIP tests, not helpers confined to EIP-7928's own cases. |
Confidence: Medium Uncertainty: The historical package contains no test-framework design, so the exact primitive split remains an implementation choice. |
| Security risks | 3 | Incorrect implementation can affect consensus validity and state reconstruction, and the mechanism spans critical execution, state, serialization, sync, and networking components. Those altered assumptions require extensive security review and fuzzing, matching score 3. |
Confidence: High Uncertainty: The draft's security section does not analyze malformed encodings, commitment ambiguity, or access-tracking disagreement in detail. |
| Performance risks | 3 | Full-block access instrumentation, sorting, SSZ construction, hashing, propagation, and parallel scheduling cannot be validated wholly in isolation and interact with existing execution, database, sync, and networking performance. The expected impact on established benchmarks is substantial, satisfying score 3. |
Confidence: High Uncertainty: The cited size analysis is summarized but its linked asset is not in the sealed package. |
| Edge/boundary conditionsUnder-specified | 3 | Multiple boundary-prone mechanisms interact, and exact-list validity requires an elevated matrix over state value transitions, transaction ordering, reverts or halts, system actions, and maximum lengths. This satisfies score 3. |
Confidence: High Uncertainty: Several boundary outcomes are unresolved in the draft, especially non-transaction indices and reverted or failed accesses. |
| Unspecified behavior requiring cross-client consensusUnder-specified | 3 | EIP-7928 turns the previously non-committed exact set and timing of accesses into consensus-critical block data, yet constructible failure, revert, preload, system-action, indexing, and commitment cases do not have a unique answer. This is the score-3 case of previously unobservable behavior becoming consensus-critical and requiring repeated cross-client re-baselining as the draft is clarified. |
Confidence: High Uncertainty: Material gaps include commitment derivation, RLP placement, failed or reverted accesses, EIP-2930 preloads, system-action ordering and indices, and the mismatched EIP-7702/EIP-7792 reference. |
| Modified system contractsUnder-specified | 2 | The proposal does not alter those contracts' code or underlying state-transition rules, but it gives the outputs of multiple system-contract actions a major new indirect effect on block validity. That matches score 2 rather than the direct-modification anchor at 3. |
Confidence: Medium Uncertainty: The pseudocode is internally unclear about which contracts run before or after transactions and withdrawals and about their assigned index. |
| Engine API changesUnder-specified | 2 | Payload construction and validation must convey the new commitment and BAL data across the execution-payload interface, implying multiple Engine API fields or equivalent versioned representations. The draft does not propose a new endpoint, so score 3 is not supported. |
Confidence: Low Uncertainty: No Engine API directive or field ownership is specified. Depending on whether one side derives bal_hash, the eventual interface could require only one new field and score 1. |
| Transition-tool interface changesUnder-specified | 2 | Even though the draft does not name a transition-tool schema, the tool must represent the BAL validation mechanism and its new block data. That establishes at least the score-2 anchor for a new interface mechanism; the exact multiplicity of fields is not specified well enough to select 3. |
Confidence: Medium Uncertainty: The input/output ownership of bal_hash, the encoded BAL, and any computed BAL artifact is not defined; a fully specified interface could warrant score 3. |
Show 14 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No opcode is introduced. |
|
| Modified opcodes | 0 | BAL observability does not modify an opcode's result or non-gas behavior under this anchor. |
|
| Added precompiles | 0 | No precompile is introduced. |
|
| Modified precompiles | 0 | No existing precompile behavior or gas accounting is modified. |
|
| Added system contracts | 0 | No system contract is added by EIP-7928. |
|
| EVM Gas rule changes | 0 | The BAL is an observation and block-validation mechanism. It neither adjusts an existing EVM gas rule nor introduces a new one, so the zero anchor applies. |
|
| State-access ordering within opcode executionUnder-specified | 0 | EIP-7928 makes the gathered accesses consensus-observable but does not itself change where an opcode accesses state or where gas is charged relative to that access. The rubric directs that observability alone is not scored here. |
Uncertainty: The draft does not fully map every exceptional execution path to a BAL entry; that missing consensus definition is scored under unspecified behavior, not as an ordering change. |
| Blob gas accounting changes | 0 | No blob gas accounting mechanism is changed or introduced. |
|
| State gas accounting changes | 0 | Recording state diffs is not a state-gas charging rule, so none of the state-gas anchors is triggered. |
|
| New EVM gas refund | 0 | No refund is created or modified; the proposal only observes a balance after ordinary refund processing. |
|
| New transaction types | 0 | No transaction type is introduced. |
|
| New or modified transaction validity mechanisms | 0 | The EIP changes block validity, not transaction-type validity or intrinsic gas calculation. |
|
| New fork activation mechanism | 0 | A schema change beginning at a fork is not the activation-block mutation scored by this anchor. |
|
| Cryptography | 0 | Existing SSZ commitment and hash use do not introduce or modify a cryptography mechanism under this anchor. |
Uncertainty: The exact compute_bal_hash derivation is unspecified, but the text provides no evidence that it is novel cryptography. |
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@59be937534EIPS/eip-7928.md committed 2025-07-31 · information cutoff 2025-07-31T16:00:14Z- Rubric
- Checklist revision 2 ·
ethspecs/pm@3d8c0128c5 - Evaluator
- gpt-5.6-sol at xhigh reasoning effort · isolation
bubblewrap_one_eip_capsule_v1 - Source record
- Frozen research record
research/tasks/05-retrospective-complexity-assignment/outputs/fork-eips/amsterdam/eip-7928.yaml· sha2563b2272986a04 - Supporting documents in the sealed package
supporting/eip-2929.md,supporting/eip-2930.md,supporting/eip-7792.md