Evaluated on: · Spec revision: 2026-01-18 · e43e899bb1
Scope at the cutoff. EIP-7954 (revision e43e899, status Stagnant) is a parameter-only change. It raises the EIP-170 limit on deployed contract code from 24KiB (0x6000) to 32KiB (0x8000) and the EIP-3860 initcode limit from 48KiB (0xC000) to 64KiB (0x10000). The rationale says only the size limits change. EIP-3860's per-word initcode metering, the existing failure modes (creation fails as if out of gas, CREATE/CREATE2 abort exceptionally, an oversized create transaction is invalid) and every other rule stay as they are. Activation is by hard fork.
- Evaluator
- LLMChecklist v3
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 2 criteria affected
- Plausible range
- 12–14 (Medium)
- Assessment cutoff
- 2026-01-20 · EIP revision
e43e899bb1(2026-01-18)
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
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: There are minor gaps and no unresolved consensus outcome. The EIP does not say that the new initcode limit (0x10000) breaks the 16-bit code-size property that EIP-3860 advertised. Its abstract mentions only the code-size increase, although the specification covers both limits.
Plausible total
12–14
recorded score 14 · plausible tiers Medium
Affected criteria (2)
Unresolved questions at the cutoff (2)
- Do any EVM implementations depend on EIP-3860's 16-bit code-size and offset property, which a 65536-byte initcode now breaks?
- Was the expected DoS exposure from 32KiB code loading and 64KiB initcode analysis benchmarked? The EIP says only that the increase is 'marginal'.
Notable ambiguities noted by the assessor (4)
- Modified opcodes: it is a judgment call whether a threshold-only change to CREATE/CREATE2 exceptional-halt conditions counts as a semantic change. It is scored 3 here, but 0 is defensible.
- Size-limit failures read as gas limits versus validity and halting thresholds (GAS scored 0, 1 possible).
- The abstract mentions only the code-size increase, but the specification and title also raise the initcode limit.
- At this revision the EIP's status is Stagnant; the discussions-to title refers to 48kb, while the specification says 32KiB.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Modified opcodes | 3 | The conditions under which CREATE/CREATE2 halt exceptionally and when code deposit fails change. Initcode of 48–64KiB and runtime code of 24–32KiB used to fail and now succeed. That is an observable change to exceptional-halt and return-value semantics, which the criterion counts, so level 3. |
Confidence: Medium Uncertainty: This is a threshold-only change. A reader who treats parameter changes as leaving 'specified semantics' unchanged would score 0. |
| Patterns affecting pre-existing tests | 2 | Boundary cases in several families must be reworked: the code-deposit size limit (CREATE, CREATE2 and create transactions), the initcode abort in CREATE/CREATE2, and initcode validity for create transactions, including the expected metering gas. For example, 49153-byte initcode that used to fail must now succeed. The rework is limited to boundary cases rather than being a common rewrite, so it is localized cases in several families: level 2. |
Confidence: Medium Uncertainty: If code-size and initcode-size tests are treated as a single family, level 1 would apply. |
| Security risksUnder-specified | 2 | Moving the initcode limit to 0x10000 breaks the 16-bit code-size property that EIP-3860 advertised to EVM engines. Interpreter and analysis components that used 16-bit sizes need targeted review and fuzzing at sizes 65535 and 65536 (overflow and truncation). The DoS bounds for code loading also change. This is a bounded interaction that changes another component's assumptions, so level 2. |
Confidence: Medium Uncertainty: Whether any engine actually relies on the 16-bit property is not established in the supplied documents. |
| Performance risksUnder-specified | 2 | The resource bounds grow by 33% for code loading and analysis per cold call and for jumpdest analysis and hashing of initcode. Worst-case blocks of calls to many maximum-size contracts (disk/state reads plus code analysis), and blocks that create from maximum-size initcode, need targeted integrated benchmarking under the new bounds. This is a bounded interaction with no new resource coupling, so level 2. |
Confidence: Medium Uncertainty: Component benchmarks of code loading and analysis alone might be judged enough, which would give level 1. |
| Edge/boundary conditions | 2 | Two boundary-sensitive mechanisms change: the code-deposit size limit (32768 vs 32769) and the initcode size limit (65536 vs 65537), the latter at both the transaction and opcode sites. Each can be tested on its own dimension with no interacting matrix, so level 2. |
Confidence: High |
| Cross-EIP interactions | 2 | Coordinated cases are needed in which a single creation exercises both changed limits, for example 64KiB initcode deploying 32KiB runtime code through a create transaction, CREATE and CREATE2. These cases also check EIP-3860 initcode metering and intrinsic gas in the newly permitted range against EIP-170 deposit success or failure. This goes beyond local checks but does not require restructuring shared vectors, so level 2. |
Confidence: Medium Uncertainty: Because the target only changes these EIPs' parameters, the cases could be counted as each EIP's own boundary tests. That reading would give level 1. Interacting EIPs: EIP-170, EIP-3860 |
| New or modified transaction validity mechanisms | 1 | Only an existing validity bound changes. No new validation dependency or sequence is introduced, so level 1. |
Confidence: High |
Show 21 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No opcodes are added. |
|
| Added precompiles | 0 | No precompile is added. |
|
| Modified precompiles | 0 | No precompile changes. |
|
| Added system contracts | 0 | No system contract is added. |
|
| Modified system contracts | 0 | No existing system contract changes. |
|
| EVM Gas rule changes | 0 | No execution-gas accounting rule or gas parameter changes. The code-size and initcode-size limits are validity and halting thresholds, not gas accounting rules. Gas outcomes at sizes that are newly allowed fall under the edge and rework criteria. |
Uncertainty: Someone could read the 'as if out of gas' failure at the size limits as a gas limit. That reading would give level 1. |
| State-access ordering within opcode execution | 0 | No instruction's ordering of state access or gas charging changes. |
|
| Blob gas accounting changes | 0 | No change to blob-gas accounting. |
|
| State gas accounting changes | 0 | The code deposit rate is unchanged and applied over a larger range. That is not a change to state-gas accounting. |
|
| New EVM gas refund | 0 | No new refund is introduced. |
|
| New transaction types | 0 | No new transaction type. |
|
| New block / header fields | 0 | No header or block field is added. |
|
| Encoding changes (RLP/SSZ) | 0 | No schema or codec changes. |
|
| Block syncing changes | 0 | No change to block decoding or structural validation. |
|
| New fork activation mechanism | 0 | Selecting constants at the fork is not an activation-specific state transition. |
|
| Engine API changes | 0 | No change to Engine API fields or endpoints. |
|
| Transition-tool interface changes | 0 | Choosing constants by fork needs no change to the t8n interface. |
|
| New invariant on pre-existing tests | 0 | No new assertion on baseline tests is needed. |
|
| New test-framework primitives | 0 | Testing needs only new parameter values for existing size-limit tests. No new abstraction is required. |
Uncertainty: If the framework hard-codes the limits instead of making them fork-dependent, a small local extension (level 1) could be needed. No framework evidence was supplied. |
| Cryptography | 0 | No cryptographic mechanism changes. CREATE2 hashing of larger initcode uses an unchanged primitive. |
|
| Unspecified behavior requiring cross-client consensus | 0 | Every observable outcome follows from the inherited rules with the new constants. The abstract mentions only the code-size change, but the specification is explicit about both. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@e43e899bb1EIPS/eip-7954.md committed 2026-01-18 · information cutoff 2026-01-20T14:22:47Z- 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-7954.yaml· sha256873f41d4f382 - Supporting documents supplied with the EIP
supporting/eip-170.md,supporting/eip-3860.md