Evaluated on: · Spec revision: 2025-09-03 · 9f795ed298
Scope at the cutoff. EIP-7778 (revision 9f795ed, Draft) changes block-level gas accounting so that gas refunds, mainly from SSTORE setting slots to zero, are no longer subtracted when computing the gas counted against the block gas limit: `block.gas_used += gas_used`, with refunds not subtracted. What users pay stays the same (`tx.gas_used = gas_used - gas_refund`). Storage discounts that reflect less actual work, such as warm access or reverting a slot to its original value, still count toward block gas. Under the new rule, the sum of unrefunded gas across all transactions must not exceed the block gas limit. The change needs a hard fork and adds no new transaction types, opcodes, header fields or contracts.
- Evaluator
- LLMChecklist v3
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 6 criteria affected
- Plausible range
- 13–20 (Medium)
- Assessment cutoff
- 2025-09-03 · EIP revision
9f795ed298(2025-09-03)
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
- Patterns affecting pre-existing tests2
- Cross-EIP interactions2
- Unspecified behavior requiring cross-client consensus2
- EVM Gas rule changes1
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 defines only block.gas_used. It does not say how receipts' cumulative gas, the per-transaction inclusion check, base-fee inputs or any transaction gas floor relate to the unrefunded accounting.
Plausible total
13–20
recorded score 13 · plausible tiers Medium
Unresolved questions at the cutoff (4)
- Does receipt cumulativeGasUsed record refunded or unrefunded gas?
- Does the check that a transaction's gas limit fits the remaining block gas use the unrefunded running total?
- Is the header gasUsed used for base-fee adjustment the unrefunded value?
- How does 'gas_used' relate to any per-transaction minimum gas floor?
Notable ambiguities noted by the assessor (3)
- The meaning of receipt cumulative gas and its effect on the receipts root are not specified.
- It is unspecified whether the transaction inclusion check against remaining block gas uses unrefunded totals.
- Base-fee dynamics probably change because header gasUsed changes, but this is not stated.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Patterns affecting pre-existing testsUnder-specified | 2 | Any baseline block test whose transactions earn refunds needs new expected header gasUsed values and may need revised block-gas-limit fill boundaries. Affected families include SSTORE clearing and refund tests, other refund-producing paths in the baseline, and block gas limit filling tests. These are localized cases in several families rather than a common rewrite of every family. |
Confidence: Medium Uncertainty: If receipt cumulativeGasUsed must also change (unspecified), the rework would be broader. |
| Cross-EIP interactions | 2 | Coordinated cases are needed with the existing SSTORE refund and discount rules, which the text references without EIP numbers. Tests must separate refunds, which are excluded from block gas, from discounts, which remain. With no candidate EIPs supplied, these interactions are recorded as unidentified. |
Confidence: Medium Uncertainty: Interactions with base-fee calculation, the refund cap, other refund sources and per-transaction gas floors are plausible but not stated. |
| Unspecified behavior requiring cross-client consensus | 2 | Several consensus-visible outcomes are left unresolved and allow competing readings. (a) Whether receipt cumulativeGasUsed, and so the receipts root, uses refunded or unrefunded gas. (b) Whether the pre-execution transaction-limit check against remaining block gas uses unrefunded totals. (c) Whether 'gas_used' means gas before or after any per-transaction gas floor. (d) Whether header gasUsed is the value fed into base-fee adjustment. Clients and specs must agree on these before expected results can be fixed. |
Confidence: Medium Uncertainty: Some of these may be intended to follow implicitly from header gasUsed redefinition, but the text doesn't state it. |
| EVM Gas rule changes | 1 | An existing settlement rule changes: the block gas counter now adds pre-refund gas. User-side refund settlement is unchanged. No new charging mechanism is added, only a changed increment to an existing counter, so level 1. |
Confidence: Medium Uncertainty: Separating per-transaction user gas from block gas could be read as a new dual-accounting mechanism that changes baseline gas results, which would be level 3. |
| New or modified transaction validity mechanismsUnder-specified | 1 | Whether a transaction is eligible in a block depends on cumulative block gas. That existing condition now uses unrefunded gas. No new validation sequence is introduced. |
Confidence: Medium Uncertainty: The spec does not say whether the pre-execution check (transaction gas limit vs remaining block gas) uses the unrefunded running total. |
| Transition-tool interface changesUnder-specified | 1 | The tool's reported block gasUsed result changes meaning (unrefunded sum). That is one semantically changed field with no new mechanism, so level 1. |
Confidence: Medium Uncertainty: No tool evidence was supplied. If receipts' cumulative gas also changes meaning, or a separate per-transaction block-gas field is needed, more than one field changes (level 2). |
| New test-framework primitives | 1 | Expected-header-gas calculations in the framework need a local extension to sum gas before refunds separately from the user charge. No new shared abstraction is required. |
Confidence: Medium |
| Security risks | 1 | The changed invariant is local: block gas limit enforcement and the consistency of header gasUsed. It can be checked through block validity tests. |
Confidence: Medium Uncertainty: Effects on base-fee dynamics or builders are not specified. |
| Performance risks | 1 | Worst-case per-block computation becomes tighter (gross gas is now capped). Benchmarks of refund-heavy blocks should confirm the new bound; no new resource coupling is introduced. |
Confidence: Medium |
| Edge/boundary conditionsUnder-specified | 1 | There is one boundary-sensitive mechanism: the block gas limit check now applies to unrefunded gas. Its boundary cases are exactly at the limit, and over the limit before refunds but under it after. |
Confidence: Medium Uncertainty: If the per-transaction inclusion check (transaction gas limit vs remaining block gas) is treated as a separate changed boundary, this rises to 2. |
Show 18 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | None. |
|
| Modified opcodes | 0 | No instruction's semantics change. |
|
| Added precompiles | 0 | None. |
|
| Modified precompiles | 0 | None. |
|
| Added system contracts | 0 | None. |
|
| Modified system contracts | 0 | None. |
|
| State-access ordering within opcode execution | 0 | No instruction changes when it accesses state or charges gas. |
|
| Blob gas accounting changes | 0 | No blob-gas rule changes. |
|
| State gas accounting changes | 0 | No state-gas accounting mechanism is added or changed. |
|
| New EVM gas refund | 0 | No new refund mechanism. The change only stops refunds from reducing block gas, which belongs under GAS. |
|
| New transaction types | 0 | None. |
|
| New block / header fields | 0 | Changed meaning of an existing field does not count. |
|
| Encoding changes (RLP/SSZ) | 0 | Only the values in existing fields change. |
|
| Block syncing changesUnder-specified | 0 | No RLP decoding or structural header rule changes. The gas_used check depends on execution, which is an ordinary execution-rule change and is excluded. |
Uncertainty: Invalid-block import tests are needed for blocks over the limit before refunds. If that post-execution header check counts as a complex validation rule, the level could be 2. |
| New fork activation mechanism | 0 | No state migration or code installation is needed; the fork only selects the new rule. |
|
| Engine API changesUnder-specified | 0 | No Engine API method or field schema change is specified. Only the value the EL puts in the existing payload gasUsed field changes. |
Uncertainty: Treating gasUsed's changed meaning as an Engine API field change would give level 1. |
| New invariant on pre-existing tests | 0 | Existing outputs change value but no new output is added. Changed values are counted under PAT. |
|
| Cryptography | 0 | No cryptographic changes. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@9f795ed298EIPS/eip-7778.md committed 2025-09-03 · information cutoff 2025-09-03T20:52:20Z- 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-7778.yaml· sha25680ef7524bf31