Evaluated on: · Spec revision: 2022-03-11 · 1ce607ac37
Scope at the cutoff. At the information cutoff, this draft proposed a new system-level withdrawal object, distinct from transactions, carrying a consensus-layer-supplied index, recipient, and amount. Post-fork execution blocks would gain an RLP-encoded withdrawals list and a header withdrawals root built like the transactions root; execution clients would validate the commitment and, after all user transactions, apply every withdrawal as an unconditional, gas-free balance increase. The draft left the fork timestamp and whether to add logs, receipts, and a receipts commitment unresolved, while assuming consensus-layer validation and a small bound on withdrawal volume.
- Evaluator
- LLMChecklist v2
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 10 criteria affected
- Plausible range
- 24–35 (High)
- Assessment cutoff
- 2022-03-11 · EIP revision
1ce607ac37(2022-03-11)
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
- New block / header fields3
- Encoding changes (RLP/SSZ)3
- Patterns affecting pre-existing tests3
- New invariant on pre-existing tests3
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: Material consensus behavior remains open in this draft. The explicit logs and receipts TODO could add observable execution outputs and another commitment; the consensus/execution transport, empty-list and field-presence behavior, index validity, list bound, and extreme balance-update semantics are also not specified sufficiently to baseline every constructible test.
Plausible total
24–35
recorded score 30 · plausible tiers High
Affected criteria (10)
- Block syncing changes (2)
- Engine API changes (1)
- Transition-tool interface changes (1)
- Patterns affecting pre-existing tests (3)
- New invariant on pre-existing tests (3)
- New test-framework primitives (2)
- Performance risks (1)
- Edge/boundary conditions (3)
- Cross-EIP interactions (2)
- Unspecified behavior requiring cross-client consensus (3)
Unresolved questions at the cutoff (6)
- Do withdrawals produce logs or receipts, and if so what are their schemas and commitment rules?
- Through what consensus/execution interface are withdrawals and any related commitments supplied and validated?
- Is the withdrawals field mandatory when empty, and what is the required empty-list root at and after activation?
- What list-level validity rules apply to withdrawal indices, including duplicates, gaps, and ordering across or within blocks?
- What exact maximum list size is consensus-enforced, and how is violation represented or rejected at the execution layer?
- How must unconditional balance increases behave at numeric limits and for previously absent recipient accounts?
Notable ambiguities noted by the assessor (4)
- The term monotonically increasing does not state the validation scope or whether gaps are permitted.
- The phrase assuming the block is well-formatted leaves malformed withdrawal-list validation outside the stated root check.
- Unconditional and MUST not fail does not define arithmetic-limit or absent-account behavior.
- The package establishes a consensus-layer dependency but identifies no EIP number for that change.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| New block / header fields | 3 | A new block field and a new header field directly trigger score 3 under this binary anchor. |
Confidence: High |
| Encoding changes (RLP/SSZ) | 3 | The proposal changes block-body and header encoding by adding new RLP objects and fields. Any transaction-, block-, or interface-level encoding change maps directly to score 3 under this binary anchor. |
Confidence: High |
| Patterns affecting pre-existing testsUnder-specified | 3 | The block-body and header schemas, block-validity path, and state-transition path all change. Consequently a major and diverse set of existing post-fork block tests and fixtures must be reworked to construct and validate the new fields, including tests whose main subject is unrelated to withdrawals. |
Confidence: High Uncertainty: The draft does not say how an empty withdrawal list is represented, so the exact amount of mechanical reworking cannot be fixed from the text alone. |
| New invariant on pre-existing testsUnder-specified | 3 | Every post-fork block test gains a withdrawals-root consistency invariant regardless of what the test otherwise exercises. Fork-sensitive fixtures also have to distinguish the new post-fork header/body shape from the pre-fork shape, matching the broadest anchor. |
Confidence: High Uncertainty: Empty-list and field-presence semantics are not stated, and the unresolved receipts commitment could add another universal invariant. |
| Security risks | 3 | A fault can create incorrect ETH balances and crosses multiple critical components: consensus validation, execution block validation, commitment construction, and account state. The proposal itself calls for very high scrutiny, supporting extensive cross-component security review and fuzzing. |
Confidence: High Uncertainty: The unspecified cross-layer interface and validation details broaden, rather than eliminate, the review risk. |
| Edge/boundary conditionsUnder-specified | 3 | Multiple boundary-prone mechanisms combine: typed RLP values and list sizes, index progression and trie position, commitment mismatch, fork and processing order, and balance updates at account/value extremes. Their combinations require an elevated case matrix rather than a few isolated edge tests. |
Confidence: Medium Uncertainty: Empty lists, duplicate or discontinuous indices, balance overflow, recipient account creation, and the exact consensus-layer list bound are not resolved in the draft. |
| Unspecified behavior requiring cross-client consensusUnder-specified | 3 | The draft leaves consensus-observable choices unresolved, most notably whether withdrawals create logs and receipts and add another commitment. It also omits constructible-case rules for empty or malformed lists, index progression, and unconditional balance-update extremes. Clients would have to agree and re-baseline block and state-transition vectors as those choices were amended, matching score 3. |
Confidence: Medium Uncertainty: No packaged implementation, devnet, test cases, or discussion record is available, so the assessment cannot establish whether any intended readings had already converged outside the sealed proposal. |
| Block syncing changesUnder-specified | 2 | Syncing clients must parse and validate multiple new block RLP structures and their commitment. These are multiple validation changes, but the trie-root construction intentionally reuses the existing transactions-root pattern, so the package does not establish a complex novel validation mechanism. |
Confidence: High Uncertainty: The unresolved possibility of receipts and another commitment could expand the syncing changes. |
| New test-framework primitivesUnder-specified | 2 | Tests need reusable withdrawal-object construction and expectations for its body list, commitment, and unconditional state effect. Those are new primitives reusable across this EIP's suite, while the package does not establish adoption by other EIPs' tests. |
Confidence: Medium Uncertainty: No test design is included, and existing generic block-field and trie helpers might reduce the required extension to a minor one. |
| Cross-EIP interactionsUnder-specified | 2 | EIP-4895 is independently testable from the two numbered alternative designs, but it supersedes or conflicts with their withdrawal paths and therefore needs limited comparative coverage. More importantly, correct execution behavior depends on coordinated consensus-layer production and validation of the withdrawal list; that dependency is material but bounded in scope, fitting score 2 rather than an extensive multi-EIP score 3. |
Confidence: Medium Uncertainty: The package identifies no EIP number for the required consensus-layer withdrawal scheduling and validation change, so it cannot be added to the numbered list or assessed in greater detail. Interacting EIPs: EIP-4788, EIP-4863 |
| Engine API changesUnder-specified | 1 | Supplying one new structured withdrawals list from consensus to execution implies at least one new payload/interface field. The text supports that limited consequence, but it neither names Engine API directives nor specifies multiple fields or a new endpoint. |
Confidence: Low Uncertainty: The cross-layer transport is wholly unspecified; the eventual interface could require multiple fields or a new mechanism, and that cannot be inferred from later designs. |
| Transition-tool interface changesUnder-specified | 1 | A transition tool needs at least one new structured block input for the withdrawals list. On the text available, that is best supported as a single new field rather than a fully specified new interface mechanism. |
Confidence: Medium Uncertainty: The draft gives no transition-tool or consensus/execution interface schema; separate inputs or outputs for the commitment or any future receipts could raise the score. |
| Performance risksUnder-specified | 1 | The new root computation and bounded sequence of balance writes merit performance validation, but both can be benchmarked in isolation and the text asserts a small consensus-enforced bound. This fits the localized score-1 anchor. |
Confidence: Medium Uncertainty: The actual maximum withdrawal count and its enforcement rule are not specified. |
Show 15 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | The proposal defines no new EVM opcode. |
|
| Modified opcodes | 0 | No existing opcode's result or behavior is changed or deprecated. |
|
| Added precompiles | 0 | The proposal introduces no precompile. |
|
| Modified precompiles | 0 | No pre-existing precompile logic or gas schedule is modified. |
|
| Added system contracts | 0 | Calling the operation system-level does not introduce a system contract; no contract code, address, or state is specified. |
|
| Modified system contracts | 0 | No pre-existing system contract code, state, or behavior is modified directly or indirectly. |
|
| EVM Gas rule changes | 0 | The proposal neither adjusts an existing EVM gas rule nor introduces a new gas-accounting mechanism; declaring the out-of-EVM operation gas-free is not itself a new EVM gas rule under this anchor. |
|
| State-access ordering within opcode execution | 0 | No opcode is added or changed, and no state access or gas charge is reordered inside an opcode. The separately specified block-level processing order is outside the scope of this narrowly defined anchor. |
|
| Blob gas accounting changes | 0 | No blob gas rule or accounting mechanism is introduced or modified. |
|
| State gas accounting changes | 0 | Although the operation writes account state, it introduces no state-gas cost, state-gas charging site, budget, reservoir, or spill rule covered by this anchor. |
|
| New EVM gas refund | 0 | The proposal introduces no EVM gas-refund mechanism. |
|
| New transaction types | 0 | The proposal intentionally does not introduce a transaction type. |
|
| New or modified transaction validity mechanisms | 0 | Block validation gains a withdrawal-root rule, but no existing transaction type's validity rules or intrinsic gas calculation changes. That block-level rule is scored in the block and invariant anchors instead. |
|
| New fork activation mechanism | 0 | Timestamp gating alone is not a new activation mechanism under this anchor, and the proposal specifies no irregular state or internal-variable modification at the activation block. |
Uncertainty: The activation timestamp value is TBD, but that does not change the mechanism score. |
| Cryptography | 0 | Reusing an existing commitment construction introduces no new or modified cryptographic mechanism. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@1ce607ac37EIPS/eip-4895.md committed 2022-03-11 · information cutoff 2022-03-11T12:28:57Z- 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/shanghai/eip-4895.yaml· sha2567a696963b410 - Supporting documents in the sealed package
supporting/eip-4788.md,supporting/eip-4863.md