Evaluated on: · Spec revision: 2026-08-25 · ac450a4ab2 · Inclusion status at snapshot: PFI
Scope at the cutoff. Execution-layer assessment of the proposal to change CALLCODE (0xf2) at FORK_BLOCK so that it always returns 0. The sealed package describes a localized but breaking opcode deprecation, declares EIP-7 as a dependency, and leaves detailed opcode effects, tests, implementation, and security considerations unresolved.
- Evaluator
- LLMChecklist v2
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 3 criteria affected
- Plausible range
- 10–12 (Low–Medium)
- Snapshot
- 2026-08-25 · EIP revision
ac450a4ab2(2026-08-25)
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
- Modified opcodes3
- Security risks2
- Unspecified behavior requiring cross-client consensus2
- Patterns affecting pre-existing tests1
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 specification says only that post-fork CALLCODE always returns 0. It does not determine whether existing gas processing or state access occurs before that result, which other existing instruction effects remain, or a concrete FORK_BLOCK value. Test cases, implementation, and security considerations are also TBA.
Plausible total
10–12
recorded score 10 · plausible tiers Low, Medium
Unresolved questions at the cutoff (4)
- Does CALLCODE retain its existing gas accounting before returning the forced failure value?
- Does CALLCODE perform any state access after activation, and where is gas charged relative to it?
- Which existing CALLCODE effects other than its returned result remain in force?
- What concrete activation block replaces FORK_BLOCK?
Notable ambiguities noted by the assessor (2)
- "Always returns 0" does not say whether the instruction follows any of its existing execution path before producing that result.
- The backwards-compatibility claim about valuable contracts is explicitly unvalidated, and security considerations are absent.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Modified opcodes | 3 | A pre-existing opcode is deprecated and its non-gas behavior is modified, which exactly matches the score-3 anchor. Exceptional score: Not applicable; score 3 is within the defined anchors. |
Confidence: High Uncertainty: Detailed secondary effects are underspecified, but the deprecation and result change are explicit. |
| Security risks | 2 | The modified opcode has a limited interaction surface but changes assumptions for contracts that execute it, with acknowledged potential breakage and no completed security analysis. That warrants targeted review rather than the self-contained score-1 treatment. Exceptional score: Not applicable; score 2 is within the defined anchors. |
Confidence: Medium Uncertainty: The package neither validates affected-contract prevalence nor supplies security considerations, so the practical reach of the risk is unknown. |
| Unspecified behavior requiring cross-client consensusUnder-specified | 2 | Constructible CALLCODE cases cannot be baselined from the text until clients agree on the localized operational details surrounding the forced result. The uncertainty concerns one opcode, so score 2 fits better than the broad or newly observable score-3 condition. Exceptional score: Not applicable; score 2 is within the defined anchors. |
Confidence: High Uncertainty: The assessment has no permitted evidence about implementations, devnets, or discussion state; the score rests only on omissions visible in the snapshot. |
| Patterns affecting pre-existing tests | 1 | Existing tests that exercise CALLCODE across the fork must be updated, but the affected set is the narrow subset centered on one opcode, matching the minor-subset anchor. Exceptional score: Not applicable; score 1 is within the defined anchors. |
Confidence: Medium Uncertainty: Test cases are TBA, so the package does not enumerate the actual regression set or demonstrate broader effects. |
| Edge/boundary conditions | 1 | The proposal introduces one explicit activation boundary at which the same opcode changes from its prior behavior to forced failure. Exceptional score: Not applicable; score 1 is within the defined anchors. |
Confidence: High Uncertainty: FORK_BLOCK has no concrete value in the EIP, but the before/at-boundary test dimension is clear. |
| Cross-EIP interactions | 1 | There is one explicit, limited interaction with EIP-7. The proposal relies on DELEGATECALL as the historical replacement context but does not modify its specified behavior, so the interaction remains independently testable for the most part. Exceptional score: Not applicable; score 1 is within the defined anchors. |
Confidence: High Uncertainty: No other EIP interaction is identified by the package. Interacting EIPs: EIP-7 |
Show 22 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No new opcode is introduced. |
Uncertainty: The only opcode number named, 0xf2, is identified as CALLCODE's existing instruction. |
| Added precompiles | 0 | No precompile is added. |
Uncertainty: Precompiles are outside the stated scope. |
| Modified precompiles | 0 | No pre-existing precompile behavior or gas accounting is modified. |
Uncertainty: The proposal identifies only CALLCODE. |
| Added system contracts | 0 | No system contract is added. |
Uncertainty: The package identifies no system-contract deployment or system action. |
| Modified system contracts | 0 | No direct or package-grounded indirect modification of a system contract is specified. |
Uncertainty: The EIP warns generically about affected contracts but does not identify any as system contracts, so no such interaction can be inferred. |
| EVM Gas rule changesUnder-specified | 0 | No gas-accounting change is specified, so the zero anchor applies. Whether existing CALLCODE charging remains in force is a material specification gap recorded separately. |
Uncertainty: The text does not say whether existing gas processing occurs before the forced failure, so a later clarification could change this row. |
| State-access ordering within opcode executionUnder-specified | 0 | The proposal does not specify a change to state-access or gas-charge ordering within CALLCODE, so the zero anchor applies on the sealed text. |
Uncertainty: It is unresolved whether the deprecated instruction retains or bypasses any pre-existing access path; that localized ambiguity could make this a single-opcode ordering change. |
| Blob gas accounting changes | 0 | No blob-gas accounting mechanism is introduced or updated. |
Uncertainty: No blob-gas behavior is within the proposal's stated scope. |
| State gas accounting changes | 0 | No state-gas cost, charging site, budget, reservoir, or spill rule is changed. |
Uncertainty: The separate ambiguity about CALLCODE execution gas does not establish any change to state gas for writes. |
| New EVM gas refund | 0 | No new EVM gas refund is specified. |
Uncertainty: The EIP contains no refund proposal or refund parameters. |
| New transaction types | 0 | No transaction type is introduced. |
Uncertainty: The EIP contains no transaction-type specification. |
| New or modified transaction validity mechanisms | 0 | Existing transaction validity and intrinsic gas calculation are not modified. |
Uncertainty: The execution result may change, but no transaction is declared invalid by this proposal. |
| New block / header fields | 0 | No new block or block-header field is introduced. |
Uncertainty: FORK_BLOCK is a threshold placeholder, not a proposed header field. |
| Encoding changes (RLP/SSZ) | 0 | No RLP, SSZ, or other transaction/block/interface encoding change is introduced. |
Uncertainty: Encoding is outside the proposal's stated scope. |
| Block syncing changes | 0 | No block encoding or RLP validation mechanism requiring sync testing is introduced. |
Uncertainty: The motivation mentions syncing clients, but proposes no change to block validation encoding. |
| New fork activation mechanism | 0 | The fork changes opcode semantics without modifying state or an internal variable at the activation block, so it does not meet the nonzero anchor. |
Uncertainty: No activation-time initialization or irregular transition is described. |
| Engine API changes | 0 | No Engine API field, endpoint, or communication mechanism is introduced. |
Uncertainty: No Engine API surface appears in the proposal. |
| Transition-tool interface changes | 0 | No transition-tool interface field or mechanism is specified. |
Uncertainty: FORK_BLOCK is not assigned a value, but that does not itself specify a new tool field. |
| New invariant on pre-existing tests | 0 | Tests unrelated to this EIP gain no additional invariant or mechanically applied assertion. |
Uncertainty: Test cases are TBA, but no package evidence identifies a cross-suite assertion. |
| New test-framework primitives | 0 | The specified result and fork boundary can be exercised with ordinary opcode-result tests; no new expectation, modifier, or helper is required by the package. |
Uncertainty: The absent test plan prevents confirmation, but it supplies no basis for a nonzero score. |
| Performance risks | 0 | No new mechanism requiring performance validation is introduced; the specified path is a localized forced result. |
Uncertainty: Implementation is TBA, but the package identifies no performance risk or benchmark requirement. |
| Cryptography | 0 | No cryptographic mechanism or cryptographic functionality is added or modified. |
Uncertainty: Cryptography is outside the stated change. |
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@ac450a4ab2EIPS/eip-2488.md committed 2026-08-25 · information cutoff 2026-08-25T11:56:58Z- 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/08-hegota-prospective-complexity-assessment/outputs/assessments/hegota-pfi-2026-08-26/eip-2488.yaml· sha256e3a1ee5c5b7f - Supporting documents in the sealed package
supporting/eip-7.md