Evaluated on: · Spec revision: 2025-10-07 · c47ae3be21
Scope at the cutoff. EIP-8037 (revision c47ae3be, requires EIP-2780) reprices state creation using a cost of 1,900 gas per state byte. It raises GAS_CREATE, GAS_CODE_DEPOSIT, GAS_NEW_ACCOUNT, GAS_SELF_DESTRUCT_NEW_ACCOUNT, GAS_STORAGE_SET, and the EIP-7702 PER_EMPTY_ACCOUNT_COST and PER_AUTH_BASE_COST. It adds a two-dimensional metering scheme, derived from EIP-8011, with `gas` and `code_deposit_gas` dimensions, so that code deposit cost does not count against the EIP-7825 transaction cap or the block gas limit. It also changes how contract deployment is charged. A new code-existence lookup waives the code deposit charge for runtime bytecode that is already stored. A warm/cold storage-access charge and a keccak hash charge per word of runtime code are added for CREATE, CREATE2 and creation transactions.
- Evaluator
- LLMChecklist v3
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 11 criteria affected
- Plausible range
- 29–49 (High)
- Assessment cutoff
- 2025-10-16 · EIP revision
c47ae3be21(2025-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
- EVM Gas rule changes3
- State gas accounting changes3
- New block / header fields3
- Encoding changes (RLP/SSZ)3
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 two-dimensional metering is specified only by reference to EIP-8011, and the target's own statements contradict that reference. The target says code deposit counts toward neither the transaction cap nor the block gas limit, while 8011 applies the transaction limit to the sum of dimensions and the block limit to the bottleneck dimension. As a result, transaction validity under the 7825 cap, header contents, block validity and base fee are unresolved. The dedup lookup's warm/cold semantics and the visibility of code from reverted or same-transaction creations are also undefined. The EIP-2780 GAS_NEW_ACCOUNT value conflicts with the target's value.
Plausible total
29–49
recorded score 43 · plausible tiers High
Affected criteria (11)
- Modified opcodes (0)
- State-access ordering within opcode execution (2)
- New or modified transaction validity mechanisms (2)
- New block / header fields (3)
- Encoding changes (RLP/SSZ) (3)
- Block syncing changes (3)
- Engine API changes (1)
- Transition-tool interface changes (2)
- New invariant on pre-existing tests (2)
- New test-framework primitives (2)
- Security risks (2)
Unresolved questions at the cutoff (9)
- Is code_deposit_gas deducted from the transaction's gas_limit? If so, how can a creation transaction exceed the EIP-7825 2^24 cap without its gasLimit field being invalid?
- Does code_deposit_gas count toward the block gas limit (as 8011's bottleneck dimension would imply) or not (as the target's Security Considerations state)?
- Is the 8011 max_gas_metered header field and base-fee rule adopted in the two-dimensional version?
- What do 'warm' and 'cold' mean for the code-hash existence check, and is the hash added to any accessed set?
- Does CodeExists see code stored by an earlier creation in the same transaction, or by a creation that was later reverted?
- Do storage_access_cost and hash_cost apply when creation fails (out of gas, size limit exceeded) or returns empty code?
- Does the EIP-2780 surcharge use 25,000 or the repriced 212,800 GAS_NEW_ACCOUNT?
- Do SSTORE refunds derived from GAS_STORAGE_SET scale with the new 60,800 value?
- Can code deposit cause an out-of-gas halt in the creating frame when it is metered separately?
Notable ambiguities noted by the assessor (6)
- The target says code deposit gas 'doesn't contribute to the block gas limit or the individual transaction limit', but the EIP-8011 model it cites keeps a single transaction gas_limit over the sum of dimensions and caps blocks on the bottleneck dimension.
- The rationale table counts '25,000 new account' within a deployment's cost, which is inconsistent with the price-impact example that charges only GAS_CREATE. It is unclear whether CREATE also charges GAS_NEW_ACCOUNT.
- GAS_NEW_ACCOUNT is 25,000 in the supplied EIP-2780 and 212,800 in the target.
- The Backwards Compatibility text refers to 'new calldata cost rules' and 'floor cost values', which this EIP does not define. This appears to be leftover text.
- 'Empty code handling: Clients can treat empty code as a special case ... making it effectively free' is permissive language. It is unclear whether hash and access costs are charged for empty runtime code.
- How the EIP-7702 refund (now 169,100 per existing authority) interacts with the global refund cap is not discussed.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| EVM Gas rule changes | 3 | The EIP adds new accounting mechanisms (separate code_deposit_gas metering, the dedup-dependent deposit charge, and access and hash charges at creation). It also changes the expected gas of many baseline operations (SSTORE set, CREATE/CREATE2, CALL to a new account, SELFDESTRUCT, EIP-7702 authorizations). This meets level 3. |
Confidence: High Uncertainty: The exact semantics of the second dimension (whether it is deducted from the transaction's gas limit) are under-specified, but level 3 holds under any reading. |
| State gas accounting changes | 3 | Beyond changing state-byte rates (level 1), the EIP introduces a new charging mechanism for state writes: a separately metered code_deposit_gas dimension and a charge that is waived based on deduplication. This meets level 3. |
Confidence: Medium Uncertainty: How the code_deposit_gas dimension interacts with the transaction gas limit and the block gas limit is not fully specified. |
| New block / header fieldsUnder-specified | 3 | The 8011-derived metering that the target requires adds an execution-header member (max_gas_metered) to the execution block header schema, so the score is 3. |
Confidence: Low Uncertainty: The target does not explicitly require the header field. It might rely only on transaction-level separation, in which case the score would be 0. |
| Encoding changes (RLP/SSZ)Under-specified | 3 | The required 8011-derived metering appends a field to the execution block header RLP schema, so the score is 3. |
Confidence: Low Uncertainty: The target does not explicitly state that the header field is part of the two-dimensional version. |
| Block syncing changesUnder-specified | 3 | The required two-dimensional 8011 version brings several block-level rules: header decoding of the new field, a gas-limit validity check against metered gas, and a base-fee rule that depends on the parent block. At least two of these are complex (they depend on execution or on other blocks), so the score is 3. |
Confidence: Low Uncertainty: The target does not state whether the header field and base-fee change are adopted. If only the gas-used exclusion applies, the score could be 1 or 2. |
| Patterns affecting pre-existing tests | 3 | One common repricing of state creation forces rework of ordinary cases across distinct families: SSTORE gas tests, CREATE/CREATE2 and creation-transaction gas, CALL/value-transfer account creation, SELFDESTRUCT to a new beneficiary, and 7702 intrinsic gas and refunds. Any test that hardcodes gas or relies on contract deployment fitting in a gas budget is affected. This meets level 3. |
Confidence: High |
| Performance risks | 3 | Code deposit bytes are no longer bounded by the block or transaction gas limit. This couples block size and propagation, code storage writes, hashing and the cost of dedup lookups in ways that existing gas-limit benchmarks do not cover. Adversarial blocks full of maximum-size deployments, with and without duplicates, need integrated stress testing across execution, database and networking, so the score is 3. |
Confidence: Medium Uncertainty: The actual per-block bound on code deposit depends on the unspecified metering design. |
| Edge/boundary conditions | 3 | Several boundary-sensitive mechanisms change. These include the dedup existence boundary, warm/cold access cost, the per-word hash rounding, the out-of-gas point at code deposit, the 7825 cap versus the separately metered deposit gas, the EIP-170 size limit, and the 2780 new-account surcharge conditions. The dedup charge forms an elevated matrix over these dimensions: code existence (prior block, earlier transaction, same transaction, reverted creation) × warm/cold × CREATE/CREATE2/creation transaction × empty versus non-empty code × size near 24,576. These combinations change the outcome together, so the score is 3. |
Confidence: Medium |
| Cross-EIP interactions | 3 | The target couples behavior from several EIPs: the 7825 cap, the 170 size limit and the 8011 metering jointly decide whether large deployments succeed; 2780's intrinsic surcharge uses the repriced new-account cost; and 7702's intrinsic cost and refund change. Each needs coordinated scenarios, so the score is 3. |
Confidence: Medium Uncertainty: The 8011 interaction depends on how much of 8011 the two-dimensional version adopts. Interacting EIPs: EIP-170, EIP-2780, EIP-7702, EIP-7825, EIP-8011 |
| Unspecified behavior requiring cross-client consensus | 3 | Gas metering split across two dimensions is new and consensus-visible, and the rule is left unresolved. The target's statements contradict the 8011 model it adopts on how the transaction cap, transaction gas limit and block gas limit apply. Resolving this changes gas-used, validity and base-fee expectations across many families. Further open points include warm/cold semantics for code lookups, CodeExists for code created by reverted or same-transaction creations, and the interaction with the 2780 constant. This meets level 3. |
Confidence: Medium Uncertainty: Some gaps might be resolved by an unsupplied later version or two-dimensional 8011 text. They are judged as written. |
| State-access ordering within opcode executionUnder-specified | 2 | A new state-accessing step, the code-hash existence check, is added to the return path of CREATE, CREATE2 and creation transactions. It needs an ordering rule relative to the hash charge, the deposit charge and the out-of-gas point. This affects multiple operations, but no rule for an entire opcode class or for recordable accesses changes across operations, so the score is 2. |
Confidence: Medium Uncertainty: Several points are unspecified: what 'warm' means for a code hash, whether this access enters any access-tracking set, and the order of the hash, lookup and deposit charges. |
| New or modified transaction validity mechanismsUnder-specified | 2 | Intrinsic gas values change for creation transactions, 7702 transactions and 2780 new-account transfers. Lifting the 7825 cap for code deposit also changes how creation transactions are checked against the gas limit. These need dedicated cases, but the baseline validation sequence remains usable, so the score is 2. |
Confidence: Medium Uncertainty: How the 7825 cap applies to a transaction whose gas limit must cover code deposit is unspecified. Depending on the design, it could require restructuring validity checks (level 3) or be only a parameter change (level 1). |
| Transition-tool interface changesUnder-specified | 2 | The transition tool would need to report per-transaction code_deposit_gas (or a gas vector) and the block-level metered gas or header value. That is multiple fields with no new exchange mechanism, so the score is 2. |
Confidence: Low Uncertainty: No supplied tool evidence exists, and which outputs are needed depends on the unspecified metering design. |
| New invariant on pre-existing testsUnder-specified | 2 | If the required two-dimensional metering carries the 8011-style per-block metered-gas output, every post-fork block test must check a new value (bottleneck metered gas). Pre-fork vectors are unaffected, so the score is 2. |
Confidence: Low Uncertainty: The target does not state which 8011 outputs (header field, per-transaction vector) are required. If none are, no new assertion arises. |
| New test-framework primitivesUnder-specified | 2 | The target's test suite needs new expectation abstractions: a two-dimensional gas-used expectation for creations, and helpers that compute deposit, access and hash costs depending on whether the code already exists. This is level 2. Whether that representation must become a shared one that changes block-gas and base-fee checks across families depends on unresolved metering details. |
Confidence: Low Uncertainty: If the 8011-style header and block metering are adopted, the framework's block gas and base-fee model changes for all families, which would be level 3. |
| Security risksUnder-specified | 2 | Exempting code deposit from the transaction and block gas limits changes the DoS assumptions that EIP-7825 and block validation rely on. The dedup lookup and linking also introduce a state-dependent charge open to griefing (cold lookups, reorg and same-block visibility). Each of these is a bounded interaction that needs targeted integration and fuzzing review, so the score is 2. |
Confidence: Medium Uncertainty: If code deposit truly has no block-level bound, the invariant that the gas limit bounds block work is broken across components, which would argue for level 3. |
| Engine API changesUnder-specified | 1 | If the header field is adopted, the execution payload would need one additional field. No endpoint-level change is indicated, so the score is 1. |
Confidence: Low Uncertainty: No supplied document mentions the Engine API. The score could be 0 if no header field is added. |
Show 11 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No new opcode is introduced. |
|
| Modified opcodesUnder-specified | 0 | The changes to CREATE, CREATE2, SSTORE and SELFDESTRUCT are gas-only or internal storage optimizations. Stack, memory/state effects and return values are unchanged. |
Uncertainty: If separate metering means code deposit no longer causes an out-of-gas halt in the creating frame, the exceptional-halt semantics of CREATE would change and the score would be 3. The text does not say. |
| Added precompiles | 0 | No new precompile is introduced. |
|
| Modified precompiles | 0 | No precompile changes. |
|
| Added system contracts | 0 | No system contract is introduced. |
|
| Modified system contracts | 0 | No system contract's rules or surrounding protocol behavior change. |
|
| Blob gas accounting changes | 0 | The EIP does not change blob-gas accounting. |
|
| New EVM gas refund | 0 | No additional refund mechanism is introduced. Repricing the existing EIP-7702 refund belongs under GAS. |
Uncertainty: It is unspecified whether the SSTORE restore refunds derived from GAS_STORAGE_SET scale with the new value. Either way, that is a repricing, not a new mechanism. |
| New transaction types | 0 | No new transaction type. |
|
| New fork activation mechanism | 0 | No activation-specific state transition is required. |
|
| Cryptography | 0 | Only an existing hashing primitive is reused, and only its gas charge is new. No cryptographic rule changes. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@c47ae3be21EIPS/eip-8037.md committed 2025-10-07 · information cutoff 2025-10-16T08:11:36Z- 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-8037.yaml· sha2560fac3ba8fef0 - Supporting documents supplied with the EIP
supporting/eip-170.md,supporting/eip-2780.md,supporting/eip-7702.md,supporting/eip-7825.md,supporting/eip-8011.md