Evaluated on: · Spec revision: 2026-08-25 · ac450a4ab2 · Inclusion status at snapshot: PFI
Scope at the cutoff. Draft EIP-7979 execution-layer snapshot introducing CALLSUB, CALLDEST, and RETURNSUB, a bounded separate return stack, fixed opcode gas costs, and CALLDEST as a valid JUMP/JUMPI target. Opcode byte assignments remain undetermined. The assessment uses only package/eip.md and package/rubric.md.
- Evaluator
- LLMChecklist v2
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 2 criteria affected
- Plausible range
- 14–16 (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
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: Final opcode byte assignments are absent, and the required initialization and lifetime boundaries of the return stack are not explicit. These gaps are material to canonical vectors and client agreement but localized to opcode/test baselining and return-stack semantics.
Plausible total
14–16
recorded score 16 · plausible tiers Medium
Unresolved questions at the cutoff (2)
- Which byte values are assigned to CALLSUB, CALLDEST, and RETURNSUB?
- Must each EVM machine instance initialize an empty return stack, and what are its exact lifetime boundaries across nested executions?
Notable ambiguities noted by the assessor (2)
- The prose defines PC as the index of the next byte to execute while the algorithms and traces use PC as the current instruction position; the observable return target PC+1 is nevertheless clear from the tests.
- The EIP calls the change backwards compatible while final opcode allocation—and therefore the exact pre-existing opcode-recognition vectors affected—remains unknown.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 3 | Multiple opcodes are added and at least CALLSUB and RETURNSUB have nontrivial cross-stack/control-flow mechanics, satisfying score 3. |
Confidence: High Uncertainty: Opcode numbers are TBD, but the count and semantic complexity of the instructions are explicit. |
| Modified opcodes | 3 | The observable destination-validity behavior of pre-existing JUMP and JUMPI is modified, so the rubric's binary score 3 applies. |
Confidence: High Uncertainty: The implementation location of the change is destination analysis rather than the opcode handlers, but the opcode result is still changed. |
| Edge/boundary conditions | 3 | There are multiple boundary-prone mechanisms, and the 1024-depth limit plus mixed CALLSUB/JUMP/JUMPI/RETURNSUB paths requires an elevated set of depth, destination, and exceptional-halt cases. |
Confidence: High Uncertainty: The exact opcode bytes are open, but that does not reduce the stated semantic boundary set. |
| Security risks | 2 | The mechanism touches a limited set of existing but security-sensitive EVM control-flow components and changes destination-validity assumptions, so it warrants targeted review and fuzzing rather than isolated validation alone. |
Confidence: Medium Uncertainty: The EIP describes safety checks but provides no allowlisted implementation or fuzzing evidence. |
| Unspecified behavior requiring cross-client consensusUnder-specified | 2 | Canonical bytecode vectors cannot be baselined until clients agree on opcode assignments, and return-stack initialization/lifetime needs a localized consensus reading. These are localized agreements, not a broad redefinition of previously unobservable behavior. |
Confidence: Medium Uncertainty: Implementation, devnet, and discussion status are unavailable by package policy, so this score uses the snapshot text alone. |
| EVM Gas rule changes | 1 | The opcode gas schedule is extended, but charging uses the existing fixed execution-gas mechanism and existing cost constants; no new metering mechanism is introduced. |
Confidence: High Uncertainty: The EIP says cost balance needs benchmarking, but the accounting form and proposed values are explicit. |
| Patterns affecting pre-existing testsUnder-specified | 1 | The change should affect only a minor fork-specific subset of existing invalid-opcode and destination-validation vectors once opcode bytes are allocated; the EIP does not indicate broad reworking of diverse existing tests. |
Confidence: Medium Uncertainty: The exact pre-existing vectors affected cannot be identified until the opcode bytes are assigned. |
| Performance risks | 1 | The new opcode paths and return-stack operations require validation, but they can be benchmarked in isolation and existing bytecode behavior is stated unchanged. |
Confidence: Medium Uncertainty: The EIP cites asset benchmarks, but no supporting asset is allowlisted in this package; only the text's need for benchmarking is used. |
Show 20 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added precompiles | 0 | No precompile is introduced. |
Uncertainty: None; precompiles are absent from the proposal. |
| Modified precompiles | 0 | No precompile logic or gas schedule is modified. |
Uncertainty: None; no precompile is identified. |
| Added system contracts | 0 | No system contract is introduced. |
Uncertainty: None; no contract address, code, state, or system action is specified. |
| Modified system contracts | 0 | No existing system contract code or state is directly or indirectly modified by the specified mechanism. |
Uncertainty: None; system contracts are not identified or targeted. |
| State-access ordering within opcode execution | 0 | No opcode adds, moves, or reorders a state access or a gas charge relative to state access. |
Uncertainty: None; the specified execution steps contain no state-access surface. |
| Blob gas accounting changes | 0 | No blob gas rule or blob-related mechanism is introduced or modified. |
Uncertainty: None; blobs are outside the proposal's stated and normative scope. |
| State gas accounting changes | 0 | There is no state-gas charging site, state-byte rate, budget, reservoir, or spill-path change. |
Uncertainty: None; persistent-state writes and state-gas accounting are absent. |
| New EVM gas refund | 0 | No refund mechanism or interaction with existing refunds is specified. |
Uncertainty: None; the gas provisions contain no refund behavior. |
| New transaction types | 0 | No transaction type is introduced. |
Uncertainty: None; transactions are outside the normative change. |
| New or modified transaction validity mechanisms | 0 | No transaction validity rule or intrinsic gas calculation is added or modified. |
Uncertainty: None; instruction exceptional halts are execution results, not transaction-validity changes. |
| New block / header fields | 0 | No block or block-header field is introduced. |
Uncertainty: None; the return stack is machine state, not a block field. |
| Encoding changes (RLP/SSZ) | 0 | Assigning opcode bytes is not an RLP/SSZ transaction, block, or interface encoding change under this anchor. |
Uncertainty: Final opcode byte values are open, but they do not create an encoding change in the anchor's stated scope. |
| Block syncing changes | 0 | No block RLP field or block-validation rule requiring sync testing is introduced. |
Uncertainty: None; block encoding and syncing are outside the specified scope. |
| New fork activation mechanism | 0 | No state or existing internal variable is modified specifically at the fork-activation block. |
Uncertainty: Return-stack initialization is under-specified, but initialization of a new internal variable is excluded by this rubric anchor. |
| Engine API changes | 0 | No Engine API field, endpoint, or communication mechanism is introduced. |
Uncertainty: None; the Engine API is not part of the proposal. |
| Transition-tool interface changes | 0 | No transition-tool input, output, field, or fork-activation awareness mechanism is specified. |
Uncertainty: None; the package contains no transition-tool interface change. |
| New invariant on pre-existing tests | 0 | Tests unrelated to this EIP do not gain a new consensus-visible value or invariant to assert. |
Uncertainty: None; internal return-stack representation is explicitly excluded from consensus observability. |
| New test-framework primitives | 0 | The specified behavior can be tested with existing bytecode execution, gas, and failure expectations; no new framework abstraction is required by the text. |
Uncertainty: No test-framework source is in the package; the score follows the behavioral form of the included tests. |
| Cryptography | 0 | No cryptographic primitive or cryptographic functionality is introduced or modified. |
Uncertainty: None; cryptography is absent from the normative mechanism. |
| Cross-EIP interactions | 0 | The normative proposal is self-contained; named design comparisons and statements of non-preclusion do not establish a coordinated cross-EIP testing dependency. |
Uncertainty: No interacting EIP number or normative dependency is identified in the package. |
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@ac450a4ab2EIPS/eip-7979.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-7979.yaml· sha256a72e886bb5d2