Evaluated on: · Spec revision: 2025-09-03 · 9f795ed298
Scope at the cutoff. At the information cutoff, EIP-7778 proposed retaining existing gas refunds for user transaction costs while counting gas before refunds toward the block gas limit. It required the sum of unrefunded transaction gas to remain within the block limit, while retaining discounts described as reflecting reduced work, and identified a hard fork plus block-producer transaction-selection changes.
- Evaluator
- LLMChecklist v2
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 7 criteria affected
- Plausible range
- 10–15 (Low–Medium)
- Assessment cutoff
- 2025-09-03 · EIP revision
9f795ed298(2025-09-03)
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 proposal defines the high-level split between refunded transaction gas and unrefunded block gas, but does not fully specify how the two quantities map to consensus block and receipt values or exhaustively define the boundary between excluded refunds and retained storage discounts. These omissions affect exact vector baselines without changing the proposal's core accounting direction.
Plausible total
10–15
recorded score 13 · plausible tiers Low, Medium
Unresolved questions at the cutoff (4)
- Does block.gas_used denote the encoded block-header gas-used value, only an internal validity accumulator, or both?
- What gas values should receipts and cumulative transaction-gas fields expose when transaction accounting remains refunded but block accounting is gross?
- Which adjustments are refunds excluded from block accounting, and which are discounts that remain applied, especially for reverting storage to its original value?
- Must a transition-tool interface expose both net transaction gas and gross block gas separately, or is changing an existing result sufficient?
Notable ambiguities noted by the assessor (3)
- The notation block.gas_used is not tied explicitly to the block header, receipts, or an internal-only accumulator.
- The examples distinguish refunds from storage discounts, but do not provide a complete classification of adjustments for consensus testing.
- Backwards compatibility says only producers need to adjust transaction selection, while the specification also imposes a consensus block-limit rule that validators must evaluate.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Patterns affecting pre-existing testsUnder-specified | 2 | Existing block and refund vectors containing refundable operations need their expected block accounting or validity reworked. This can be a considerable set, but it is confined to the refund-bearing category, matching anchor 2. |
Confidence: Medium Uncertainty: The text does not identify the historical test corpus or state whether the changed block accumulator is reflected in every existing block-gas expectation. |
| Security risks | 2 | The consensus-critical accumulator interacts with existing transaction refunds and block validation. Incorrect implementation could create divergent block acceptance or preserve the stated denial-of-service condition, warranting targeted review and fuzzing of a limited component set under anchor 2. |
Confidence: Medium Uncertainty: The security section states intended benefits but does not analyze divergence, overflow, or mixed-refund failure cases in detail. |
| Performance risksUnder-specified | 2 | Validating the new workload bound requires mixed transaction and refund-bearing block benchmarks rather than only an isolated accumulator benchmark. Its effect on existing performance workloads is limited to blocks using refunds, matching anchor 2. |
Confidence: Medium Uncertainty: The EIP gives one observed workload example but no benchmark methodology or complete set of refund-heavy workloads. |
| Edge/boundary conditionsUnder-specified | 2 | There are multiple boundary-prone aspects: cumulative equality versus excess, variable refund amounts across transactions, and classification of discounts that remain applied. None is described as requiring an exceptionally large case matrix, matching anchor 2. |
Confidence: Medium Uncertainty: The exact refund and discount cases covered by the general wording are not exhaustively enumerated. |
| Cross-EIP interactionsUnder-specified | 2 | The proposal centrally modifies how pre-existing refund rules feed block gas and must be tested together with the retained storage-discount rules. That requires coordinated but limited-scope testing, matching anchor 2. The historical EIP supplies no EIP numbers for those interactions, so none are inferred. |
Confidence: Medium Uncertainty: The interacting mechanisms are named, but their EIP identifiers and complete boundaries are absent from the package. |
| Unspecified behavior requiring cross-client consensusUnder-specified | 2 | Clients must agree on localized, constructible cases such as the mapping of gross gas to block and receipt values and the refund-versus-discount boundary before vectors can be baselined. This matches anchor 2, not anchor 3, because the EIP is not making a formerly unobservable behavior consensus-critical. |
Confidence: High Uncertainty: The package contains no supporting specification that resolves these localized accounting semantics. |
| EVM Gas rule changes | 1 | This updates the existing EVM block gas accounting rule, matching anchor 1; the proposal characterizes it as a modification rather than a separate new gas accounting mechanism. |
Confidence: High Uncertainty: The precise protocol representation of block.gas_used is not defined, but the existence of an update to the existing accounting rule is clear. |
Show 21 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No opcode is added, matching anchor 0. |
|
| Modified opcodes | 0 | No opcode result or non-gas behavior is modified, and gas-only changes are excluded by this anchor; score 0 applies. |
|
| Added precompiles | 0 | No precompile is introduced, matching anchor 0. |
|
| Modified precompiles | 0 | No existing precompile is modified, matching anchor 0. |
|
| Added system contracts | 0 | No system contract is introduced, matching anchor 0. |
|
| Modified system contracts | 0 | No direct or package-established indirect system-contract modification exists, matching anchor 0. |
|
| State-access ordering within opcode execution | 0 | No opcode-internal state-access or gas-charge ordering changes, so anchor 0 applies. |
|
| Blob gas accounting changes | 0 | No blob gas accounting mechanism is changed, matching anchor 0. |
|
| State gas accounting changes | 0 | The rubric's distinct state-gas mechanism is not introduced or adjusted, so anchor 0 applies. |
|
| New EVM gas refund | 0 | Existing refunds are preserved rather than a new refund mechanism being added, matching anchor 0. |
|
| New transaction types | 0 | No new transaction type is introduced, matching anchor 0. |
|
| New or modified transaction validity mechanisms | 0 | The change is to block validity, not existing transaction-type validity, so anchor 0 applies. |
|
| New block / header fields | 0 | Modification of the calculation associated with an existing value is not the introduction of a new field; anchor 0 applies. |
Uncertainty: The EIP does not explicitly identify how block.gas_used maps to the encoded header and receipts, but it never specifies an additional field. |
| Encoding changes (RLP/SSZ) | 0 | No RLP, SSZ, or other interface encoding is introduced, matching anchor 0. |
|
| Block syncing changes | 0 | A consensus block-validity calculation changes without an RLP validation mechanism being added, so the rubric's block-syncing anchor remains 0. |
|
| New fork activation mechanism | 0 | Fork-gated use of a new rule alone is not an activation-block modification; anchor 0 applies. |
|
| Engine API changes | 0 | No Engine API field or endpoint is introduced, matching anchor 0. |
|
| Transition-tool interface changesUnder-specified | 0 | The changed result can be expressed through the existing block gas result; no transition-tool interface modification is specified as required, so anchor 0 applies. |
Uncertainty: The text does not define whether both refunded transaction gas and unrefunded block gas must be surfaced separately by a transition tool. |
| New invariant on pre-existing testsUnder-specified | 0 | Existing expectations may be reworked, but tests do not clearly gain a distinct new invariant to assert; anchor 0 applies. |
Uncertainty: A fuller definition of whether block.gas_used denotes an existing header value or a separate accumulator could change whether a new assertion is needed. |
| New test-framework primitives | 0 | These cases can use existing transaction, block, gas, and validity assertions; no new framework abstraction is required, matching anchor 0. |
|
| Cryptography | 0 | No cryptographic mechanism is introduced or modified, matching anchor 0. |
|
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 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-7778.yaml· sha25656ab26670309