Evaluated on: · Spec revision: 2026-08-25 · ac450a4ab2 · Inclusion status at snapshot: PFI
Scope at the cutoff. Draft execution-layer assessment of EIP-7923 at the sealed Hegota PFI snapshot: replacement of quadratic EVM memory expansion pricing with per-message-call page charging, 32-bit addressing, and a transaction-global 64 MiB allocated-page limit.
- Evaluator
- LLMChecklist v2
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 3 criteria affected
- Plausible range
- 21–23 (Medium–High)
- 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: The Draft does not normatively define what each memory instruction touches, whether the transaction-global count is cumulative or the simultaneously live allocation restored after child calls, whether free page 0 counts toward the cap, or the precise address/size and failure-order rules. The example selects some behaviors but is internally incomplete and does not consistently specify all bounds.
Plausible total
21–23
recorded score 23 · plausible tiers Medium, High
Unresolved questions at the cutoff (4)
- For every affected instruction, which source and destination byte ranges count as touching a page, especially for zero length, range overflow, and multi-range copy operations?
- Does the 16384-page transaction limit count cumulative first allocations or pages simultaneously live across the active message-call stack, and exactly when are child pages released on success or revert?
- Does free page 0 count toward the transaction limit, and is it considered already touched for MSIZE or only for charging?
- Is the 32-bit rule applied to the start operand, every byte in the accessed range, or the exclusive end, and what exception takes precedence over page gas charging or the global limit?
Notable ambiguities noted by the assessor (4)
- The phrase "maximum byte touched ... rounded up by 32" for MSIZE can be read as inclusive-byte or exclusive-end accounting, although the example uses ceil32(start + size).
- The example restores transaction_context.num_pages after a child computation, a lifetime rule absent from the normative transaction-global limit text.
- The example checks start_position + size >= 2**32 only in the write path, which does not cleanly match the normative allowance of addresses through 2**32 - 1.
- The normative phrase "all memory instructions" gives examples but no exhaustive list or per-instruction touched ranges.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Modified opcodes | 3 | At least one pre-existing memory-using opcode gains new non-gas exceptional-halt behavior, meeting the rubric binary score of 3. |
Confidence: High Uncertainty: The exact affected instruction set and boundary convention are underspecified, but the existence of modified behavior is explicit. |
| EVM Gas rule changes | 3 | This is a new page-history-based EVM gas mechanism that replaces the existing expansion mechanism for all memory instructions, necessarily changing existing gas expectations and tests. |
Confidence: High Uncertainty: The exact instruction coverage and touch ordering are underspecified, but the replacement of the existing gas mechanism is explicit and fixes this anchor at 3. |
| Patterns affecting pre-existing testsUnder-specified | 3 | Gas and outcome vectors across the broad, diverse class of existing memory-using opcode and nested-call tests must be reworked, rather than only a narrow contrived category. |
Confidence: Medium Uncertainty: The Test Cases section is empty, so the package does not quantify the affected corpus or enumerate all memory instructions. |
| Security risks | 3 | Gas metering, memory allocation, exceptional halts, and nested message calls are critical interacting components; incorrect implementation could enable resource exhaustion or consensus-divergent execution and warrants extensive review and fuzzing. |
Confidence: High Uncertainty: The EIP provides only a coarse maximum-memory comparison and does not resolve the detailed limit semantics needed for a complete security analysis. |
| Performance risks | 3 | Core memory behavior, OS allocation strategy, page tracking, and nested-call resource limits have substantial and complex interactions with existing execution performance that cannot be validated by isolated microbenchmarks alone. |
Confidence: High Uncertainty: Only selected microbenchmarks and a rough maximum-memory comparison are supplied; no end-to-end workload results are in the package. |
| Edge/boundary conditionsUnder-specified | 3 | Multiple boundary-prone mechanisms interact across zero-length accesses, cross-page ranges, maximum addresses, gas exhaustion, and nested calls; at least the transaction-global cap and page-touch matrix require elevated case counts. |
Confidence: High Uncertainty: The normative text does not settle several off-by-one, lifetime, and failure-order cases, increasing rather than removing the boundary burden. |
| Unspecified behavior requiring cross-client consensusUnder-specified | 3 | Exact per-page touch history was not previously a consensus-visible gas dimension, but now determines charges and halts. The unresolved definitions therefore make previously unobservable details consensus-critical and require re-baselining as the draft is clarified. |
Confidence: High Uncertainty: The package prohibits discussion-thread, implementation, devnet, and later-revision evidence, so the score is based solely on the material gaps visible in the sealed Draft text. |
| Cross-EIP interactions | 2 | EIP-7923 modifies the memory-expansion term used around EIP-150 call gas forwarding and adds a limit spanning nested calls, requiring coordinated but limited cross-EIP gas and call-depth tests. |
Confidence: High Uncertainty: EIP-150 is the only numbered interaction established by the package; no other EIPs are inferred. Interacting EIPs: EIP-150 |
Show 20 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No opcode is added. |
Uncertainty: No opcode number or new instruction semantics are present. |
| Added precompiles | 0 | No precompile is added. |
Uncertainty: The proposal contains no precompile mechanism. |
| Modified precompiles | 0 | Call-site memory expansion is not a modification to a precompile itself under this anchor. |
Uncertainty: No precompile is named in the sealed evidence. |
| Added system contracts | 0 | No system contract is added. |
Uncertainty: No contract address, code, state, or system action is specified. |
| Modified system contracts | 0 | The package provides no grounded direct or indirect system-contract modification to score. |
Uncertainty: The package contains no system-contract inventory; prohibited external knowledge was not used to infer an interaction. |
| State-access ordering within opcode execution | 0 | Page touches concern EVM memory, not chain state, so no state-access ordering within an opcode is changed. |
Uncertainty: No package evidence identifies a state-accessing operation in scope. |
| Blob gas accounting changes | 0 | No blob gas rule is introduced or modified. |
Uncertainty: No blob mechanism appears in the package evidence. |
| State gas accounting changes | 0 | EVM memory allocation gas is execution gas, not the rubric-defined gas for writing state. |
Uncertainty: No state-gas facility is mentioned in the sealed proposal. |
| New EVM gas refund | 0 | No new gas-refund mechanism is introduced. |
Uncertainty: No refund behavior is stated or implied by page deallocation. |
| New transaction types | 0 | No new transaction type is introduced. |
Uncertainty: No transaction-type identifier or fields are specified. |
| New or modified transaction validity mechanisms | 0 | Runtime memory failure is distinct from transaction admission validity under this anchor. |
Uncertainty: No transaction validation rule is stated. |
| New block / header fields | 0 | No new block or block-header field is introduced. |
Uncertainty: The proposal does not alter block structure. |
| Encoding changes (RLP/SSZ) | 0 | No RLP, SSZ, or other interface-level encoding change is introduced. |
Uncertainty: No encoding format appears in the normative change. |
| Block syncing changes | 0 | There is no new RLP validation mechanism requiring client syncing tests. |
Uncertainty: No block serialization change appears in the package. |
| New fork activation mechanism | 0 | No existing state or internal variable is modified specially at the activation block, and initialization of a new variable is excluded by the rubric. |
Uncertainty: Fork-choice or activation plumbing is expressly absent from the reference implementation. |
| Engine API changes | 0 | No Engine API change is introduced. |
Uncertainty: Engine API behavior is outside the stated proposal surface. |
| Transition-tool interface changes | 0 | The execution change can be derived from ordinary transaction execution without a new transition-tool interface field or mechanism. |
Uncertainty: No transition-tool interface is discussed in the package. |
| New invariant on pre-existing tests | 0 | Existing gas and outcome tests may need changed expectations, which belongs to the prior anchor; they do not gain a separate universal assertion. |
Uncertainty: The empty Test Cases section provides no explicit assertion plan, but no externally assertable invariant is specified. |
| New test-framework primitives | 0 | The sealed proposal does not establish a need for a new test-framework abstraction beyond constructing calls and checking gas or halt results. |
Uncertainty: Because the Test Cases section is empty, framework needs are not demonstrated; this score does not assume unprovided infrastructure. |
| Cryptography | 0 | No cryptography mechanism is added or modified. |
Uncertainty: The rationale uses keccak256 only as a benchmark calibration reference, not as a cryptographic protocol change. |
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@ac450a4ab2EIPS/eip-7923.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-7923.yaml· sha256c9a7a0db1b1a - Supporting documents in the sealed package
supporting/eip-150.md