Retrospective LLM-Based Complexity Evaluations

EIP complexity assessment

EIP-7819: SETDELEGATE instruction

Assessed in Hegotá. The score describes the EIP text available at the snapshot, not the EIP as it stands today.

ProspectiveHegotáSnapshot 2026-08-25PFI at snapshotLayers: execution
LLM Completescore 21
Human Draft PRscore 22 · Checklist revision 2· ethspecs/pm #128 (draft)

Evaluated on: · Spec revision: 2026-08-25 · ac450a4ab2 · Inclusion status at snapshot: PFI

Scope at the cutoff. Assessment of the execution-layer complexity of draft EIP-7819 as sealed in the Hegota PFI snapshot, limited to its new SETDELEGATE opcode and the package-grounded interactions of the delegation accounts it creates.

21MediumMedium
Evaluator
LLMChecklist v2
Confidence
Medium
Under-specified at assessment cutoff
Yes — 4 criteria affected
Plausible range
20–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

  1. Security risks3
  2. Edge/boundary conditions3
  3. Cross-EIP interactions3
  4. Added opcodes2

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 leaves material execution-layer outcomes unresolved: it does not define state-gas charging for durable code and nonce writes, uses the unqualified result "Halt" at two consensus-visible failure sites, and does not anchor trie existence to original or current transaction state for its refund.

Unresolved questions at the cutoff (3)
  • Does SETDELEGATE charge state gas for the 23-byte code write, account creation, or nonce initialization, and at which exact charge points?
  • Does "Halt" in steps 2 and 6 mean an exceptional halt, a revert, or a successful stop, and which gas, accessed-address, and state effects survive?
  • For step 7, is "already exists in the trie" evaluated against transaction original state or the current journaled state after earlier SETDELEGATE executions and rollbacks?
Notable ambiguities noted by the assessor (2)
  • Step 6 accepts any non-empty code that starts with 0xEF0100, while the text elsewhere describes delegation indicators as exactly 23 bytes; the intended eligibility of a longer prefixed code value is not expressly reconciled.
  • The recommendation that only the creator should be able to destroy a delegation is not a protocol check; authority is instead determined entirely by possession of the same executing address and salt path.

Criterion breakdown

EIP-7819 Hegotá: LLM criterion scores and rationale
CriterionScoreWhy this scoreEvidence / uncertainty
Security risks3Contract-controlled, immediately effective code replacement interacts with multiple critical mechanisms: account code and nonce state, delegation execution, access journaling, refunds, upgrade authorization, and deletion assumptions. Mistakes can change which code executes or who controls an account, requiring extensive security review and fuzzing across components.
  • eip.md · Security Considerations > Delegator Upgrades and Deletion; Delegator Chaining Factories control upgrades and deletion, while targets can be delegation chains or loops with unexpected behavior.
  • eip.md · Security Considerations > Multiple Delegation Changes Within a Single Transaction A single address can have multiple code values installed, removed, and executed during one transaction.
  • eip.md · Specification > Behavior, steps 5-9 The opcode couples access-list state, code eligibility, refunds, code-hash replacement, account nonce mutation, and immediate execution semantics.
Confidence: High
Uncertainty: Factory-level authorization policy is intentionally outside the protocol, so application guarantees vary, but the protocol integration risks are explicit and broad.
Edge/boundary conditions3Multiple boundary-prone mechanisms combine, and repeated same-location changes multiply success, failure, revert, refund, warm/cold, target, and call-timing cases. At least this repeated-update mechanism requires an elevated test matrix.
  • eip.md · Specification > Behavior Cases include static mode, stack-size failures, 20-byte target padding and truncation, empty versus delegated versus other code, trie existence, zero-target clearing, nonce zero versus nonzero, immediate calls, and refund behavior.
  • eip.md · Security Considerations > Delegator Chaining; Multiple Delegation Changes Within a Single Transaction Delegation targets can chain or loop, and one location can hold and execute multiple code values, including cleared code, within a transaction.
Confidence: High
Uncertainty: Ambiguous halt and trie-existence semantics make some expected boundary results unresolved, but clearly do not reduce the number of boundaries.
Cross-EIP interactions3SETDELEGATE strongly extends EIP-7702's shared delegation object, must coordinate access warming with EIP-2929 and non-empty-account preservation with EIP-7523, relies on the EIP-3541 marker convention, and is explicitly integrated into EIP-8141 deployment and mempool validation. These multiple interdependencies require coordinated cross-EIP execution, failure, introspection, and deployment tests.
  • eip.md · Front matter requires; Specification > Behavior, steps 5 and 8-9 EIP-7819 requires EIP-7702, uses EIP-2929 accessed_addresses, creates the same delegation indicators as EIP-7702, and uses nonce initialization to satisfy EIP-7523 account non-emptiness.
  • supporting/eip-7702.md · Specification > Delegation indicator Delegation indicators use EIP-3541's 0xef marker and alter code execution and code-reading dispatch for several operations.
  • supporting/eip-8141.md · Mempool > Validation Trace Rules > Banned Opcodes EIP-8141 explicitly recognizes SETDELEGATE in the first deploy frame and requires the deployment to install code at the frame transaction sender.
Confidence: High
Uncertainty: ERC-721, ERC-1155, ERC-1167, ERC-1967, and ERC-4337 are cited as use cases or comparisons, not counted as protocol-test interactions requiring their own coordinated vectors.
Interacting EIPs: EIP-2929, EIP-3541, EIP-7523, EIP-7702, EIP-8141
Added opcodes2A single opcode is added, but its state-dependent net gas, multi-step stack behavior, state access, code/nonce mutation, and failure paths make it a complex opcode under the rubric.
  • eip.md · Specification; Specification > Behavior One new opcode, SETDELEGATE at 0xf6, takes salt and target, derives and returns an address, performs state reads and writes, and has a state-dependent refund.
Confidence: High
Uncertainty: The classification remains complex regardless of the unresolved details of halt and refund semantics.
EVM Gas rule changes2The opcode introduces its own gas-accounting rule, including a state-dependent refund, while leaving the gas rules of existing opcodes unchanged. This is a new mechanism confined to the new operation.
  • eip.md · Specification > Behavior, steps 1 and 7; Parameters SETDELEGATE deducts EMPTY_ACCOUNT_COST, conditionally adds EMPTY_ACCOUNT_COST minus BASE_COST to the refund counter, and defines both constants numerically.
Confidence: High
Uncertainty: The treatment of repeated writes to an account that begins absent is not fully determined by the phrase "already exists in the trie," but the presence and general scope of the new gas rule are clear.
State-access ordering within opcode executionUnder-specified2SETDELEGATE is a new state-accessing operation whose charge, warm-access, read, refund, and write positions require boundary testing. It does not change the ordering rule for an existing class of opcodes, so score 2 rather than 3 applies.
  • eip.md · Specification > Behavior, steps 1-10 The new operation charges gas, checks static mode, derives and warms a location, reads its code and existence, writes code and nonce, and returns the location in a specified sequence.
  • supporting/eip-2929.md · Specification > Storage read changes EIP-2929 makes the timing and rollback behavior of additions to accessed_addresses transaction-observable.
Confidence: High
Uncertainty: The word "Halt" does not say whether the warm-address update at step 5 is retained or rolled back when step 6 rejects the location, increasing the uncertainty at that particular boundary.
New EVM gas refundUnder-specified2This is a simple conditional refund, but it shares the global refund counter with existing refund behavior and has state-dependent interactions under repeated writes, so targeted mixed-refund and cap testing is required.
  • eip.md · Specification > Behavior, step 7 The opcode conditionally adds 12,500 gas to the transaction-global refund counter when the derived location already exists in the trie.
  • eip.md · Security Considerations > Multiple Delegation Changes Within a Single Transaction The same derived location may be updated, cleared, and reset multiple times within one transaction.
Confidence: Medium
Uncertainty: The proposal does not define whether "already exists in the trie" refers to original or current transaction state, so the refund outcome for repeated creation, clearing, and rollback is uncertain.
Unspecified behavior requiring cross-client consensusUnder-specified2Clients need agreement on localized, constructible cases: the exact failure semantics and rollback boundary of both halt sites, and original-versus-current existence for refunds. Most other opcode behavior is specified, so the gaps are material but localized rather than a wholesale redefinition.
  • eip.md · Specification > Behavior, steps 2 and 6 Static-mode execution and a disallowed destination are said only to "Halt," without defining exceptional-halt, revert, success, return value, or journaling consequences.
  • eip.md · Specification > Behavior, step 7; Security Considerations > Multiple Delegation Changes Within a Single Transaction A refund depends on whether the location "already exists in the trie," yet the same location may be changed repeatedly in one transaction and the temporal reference for existence is not defined.
Confidence: High
Uncertainty: The separate omission of state-gas charging is recorded under under_specification and is not used again to inflate this row.
Patterns affecting pre-existing tests1Existing fork/opcode-validity coverage for byte 0xf6 must distinguish the activation boundary and the new behavior. That is a minor, localized subset of pre-existing tests; the broader SETDELEGATE matrix consists of new tests.
  • eip.md · Specification A new instruction is assigned to opcode byte 0xf6.
Confidence: Medium
Uncertainty: The package contains no implementation test inventory, so the exact number of pre-existing vectors requiring rework cannot be established.
Performance risks1The new opcode's hashing, state access, fixed-size code write, and delegated call path require benchmarking, but the operation is bounded and can be benchmarked in isolation; the delegated execution mechanism already comes from EIP-7702.
  • eip.md · Specification > Behavior Each execution hashes a fixed-format preimage, accesses an account, and may update its code and nonce.
  • eip.md · Motivation > Scalability The intended performance effects are lower state growth and cheaper call redirection through 23-byte delegation indicators.
Confidence: Medium
Uncertainty: The package supplies motivations but no benchmark results for SETDELEGATE, so the size of its runtime and state-backend impact is not established.
Show 18 zero-score criteria
Zero-score criteria (Checklist revision 2)
CriterionScoreWhy this scoreEvidence / uncertainty
Modified opcodes0SETDELEGATE adds another way to create an already-defined delegation object; it does not itself modify the behavior of a pre-existing opcode.
  • eip.md · Specification > Behavior, text following step 10 Created indicators inherit EIP-7702 behavior for CODESIZE, CODECOPY, precompile targets, and chaining; the proposal does not specify a changed result for an existing opcode.
  • supporting/eip-7702.md · Specification > Delegation indicator Existing delegation-indicator execution and code-reading behavior is already defined for CALL-family, transaction execution, CODESIZE, and CODECOPY operations.
Uncertainty: Existing opcode suites need new SETDELEGATE-created fixtures, but the sealed text says their delegated-object semantics are identical rather than changed.
Added precompiles0No precompile is introduced.
  • eip.md · Specification > Behavior Precompiles are mentioned only as possible delegation targets through inherited EIP-7702 behavior; none is added.
Uncertainty: No precompile-addition ambiguity is present.
Modified precompiles0Existing precompile behavior and gas schedules are not modified.
  • eip.md · Specification > Behavior, text following step 10 The proposal adopts EIP-7702's already-defined behavior when a delegation targets a precompile and specifies no precompile logic or gas change.
  • supporting/eip-7702.md · Specification > Delegation indicator > Precompiles A precompile address reached through a delegation is treated as empty code, so no precompile logic executes.
Uncertainty: The inherited edge case requires tests but is specified by EIP-7702.
Added system contracts0No system contract is introduced.
  • eip.md · Specification The proposal adds opcode 0xf6 and does not deploy or designate a system contract.
Uncertainty: No system-contract addition is described.
Modified system contracts0The proposal has no direct or specified indirect system-contract modification.
  • eip.md · Specification > Behavior State changes target an address derived from the executing contract and salt; no pre-existing system contract is named or modified.
Uncertainty: No system-contract interaction is identified in the package.
Blob gas accounting changes0No blob gas accounting mechanism is introduced or modified.
  • eip.md · Specification > Behavior; Parameters The proposal defines only execution gas constants and opcode behavior; it introduces no blob-gas rule or blob-related field.
Uncertainty: No blob-gas ambiguity is visible in the sealed proposal.
State gas accounting changesUnder-specified0As written, EIP-7819 neither adjusts an existing state-gas rate nor defines a new state-gas charging site. The apparent omission for its durable code and nonce writes is recorded as material under-specification rather than repaired by assigning an unstated mechanism.
  • eip.md · Specification > Behavior, steps 7-9; Parameters The operation writes code and may increment a nonce, but the only charging terms specified are EMPTY_ACCOUNT_COST, BASE_COST, and an execution-gas refund; no state-gas charge is defined.
  • supporting/eip-8141.md · Mempool > Validation Trace Rules The snapshot's frame-transaction proposal explicitly permits SETDELEGATE to install code during a deploy frame, where separate state budgets exist.
Uncertainty: It is unresolved whether SETDELEGATE should receive a new state-gas charge for code and account-state growth in the Hegota setting; such a resolution could move this row to score 2.
New transaction types0No new transaction type is introduced.
  • eip.md · Abstract; Specification The proposal introduces an instruction, not a transaction envelope.
Uncertainty: No transaction-type ambiguity is present.
New or modified transaction validity mechanisms0Runtime opcode failure conditions do not modify transaction-envelope validity.
  • eip.md · Specification > Behavior All checks occur during EVM execution of SETDELEGATE; the proposal defines no transaction validity or intrinsic-gas rule.
Uncertainty: The meaning of runtime "Halt" is uncertain but does not create a static validity rule.
New block / header fields0The proposal introduces no new block or header field.
  • eip.md · Specification No block body or header field is defined.
Uncertainty: No header-surface uncertainty is present.
Encoding changes (RLP/SSZ)0No RLP, SSZ, or other interface-level encoding change is introduced.
  • eip.md · Specification Inputs are opcode stack values and state code bytes; no transaction, block, receipt, or interface encoding changes are defined.
Uncertainty: No encoding uncertainty is visible in the package.
Block syncing changes0No block RLP validation mechanism requiring sync testing is introduced.
  • eip.md · Specification The proposal adds an EVM opcode and no block RLP field or block-validation encoding rule.
Uncertainty: No syncing-surface ambiguity is present in the package.
New fork activation mechanism0Enabling a new opcode requires no special activation mechanism as written.
  • eip.md · Specification The text specifies opcode behavior but no activation-block state mutation, migration, or change to an existing internal variable.
Uncertainty: The proposal contains no activation procedure to assess beyond opcode availability.
Engine API changes0No Engine API surface is introduced or modified.
  • eip.md · Specification The specification contains no Engine API endpoint, field, or communication change.
Uncertainty: No Engine API uncertainty is present in the package.
Transition-tool interface changes0Existing transition-tool interface shapes are sufficient as specified.
  • eip.md · Specification > Behavior All new inputs and outputs are EVM stack operands and ordinary account state; no transition-tool request or response field is introduced.
Uncertainty: The package does not prescribe tooling, but no new block or transaction input is needed to execute the opcode.
New invariant on pre-existing tests0The proposal does not require tests unrelated to SETDELEGATE to assert a new output or invariant.
  • eip.md · Specification > Behavior Code, nonce, access-list, refund, and stack effects arise only when the new SETDELEGATE instruction executes.
Uncertainty: The package has no test-suite mapping, but the specification states no universal per-test artifact or assertion.
New test-framework primitives0The EIP does not demonstrate a need for a new expectation type, modifier, or permanent framework abstraction beyond composing existing EVM state and execution checks.
  • eip.md · Specification > Behavior Observable results are conventional stack, gas/refund, accessed-address, code, nonce, call, and revert effects.
Uncertainty: No test-framework description is included in the package, so sufficiency of existing helpers cannot be confirmed from an implementation inventory.
Cryptography0Using an existing hash in a new derivation is not a new cryptographic mechanism.
  • eip.md · Specification > Behavior, step 4; Rationale > Address Derivation Address derivation applies keccak256 to a domain-separated preimage; no new hash, signature, proof system, or cryptographic verification is defined.
Uncertainty: No cryptographic mechanism is under-specified in this proposal.
Assessment provenance
Assessed EIP revision
ethereum/EIPs@ac450a4ab2 EIPS/eip-7819.md committed 2026-08-25 · information cutoff 2026-08-25T11:56:58Z
Current master · File history · blob 1af30928ed · sha256 431cc6e41caf
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-7819.yaml · sha256 aff55796c707
Supporting documents in the sealed package
supporting/eip-721.md, supporting/eip-1155.md, supporting/eip-1167.md, supporting/eip-1967.md, supporting/eip-2929.md, supporting/eip-4337.md, supporting/eip-7523.md, supporting/eip-7702.md, supporting/eip-8141.md

Evaluated on: Not recorded

22MediumMedium
Evaluator
HumanChecklist v2
Confidence
Not recorded
Under-specified at assessment cutoff
Not recorded in the checklist
Checklist published
2026-08-24
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 Human total. Hover or focus a segment for its score and rationale.

Top complexity drivers

  1. Edge/boundary conditions3
  2. Cross-EIP interactions3
  3. Added opcodes2
  4. EVM Gas rule changes2

Criterion breakdown

EIP-7819 Hegotá: Human criterion scores and rationale
CriterionScoreWhy this scoreNotes
Edge/boundary conditions3Testing spans target truncation/padding, salt/address order, zero-target clearing, nonce zero/nonzero, exact and malformed collision code, cold/warm access, fresh/existing leaves and designations, exact/one-short gas, static mode, call contexts, and success/revert interactions. Several axes combine in elevated gas/state matrices.
Cross-EIP interactions3Coordinated cases cover EIP-7702 designation semantics, EIP-2929 warming, EIP-7523 nonce persistence, EIP-3541 collision reachability, EIP-6780 `SELFDESTRUCT`, EIP-7928 BAL observability, EIP-8037 state gas, and EIP-8038 access/write pricing. The base interaction level is 2; eight interacting EIPs add 1 for the five beyond the first three.
Added opcodes2One complex opcode is added: it has dynamic access, write, and state-gas costs and mutates another account while returning its derived address.
EVM Gas rule changes2`SETDELEGATE` introduces a dynamic schedule composed of cold/warm access and an account-write charge. It does not change another opcode's schedule, but exact and repeat-write cases need dedicated accounting tests.
State-access ordering within opcode execution2A new state-accessing opcode must check state-independent access gas before reading the location, then calculate and charge state-dependent costs. BAL output changes at those boundaries.
State gas accounting changes2The prototype adds a new `NEW_ACCOUNT`/`AUTH_BASE` state-gas charging site and a journaled designation refill on clear or frame rollback. It reuses the reservoir and spill mechanism rather than changing it.
Security risks2The opcode creates and upgrades immediately effective EIP-7702 designations and interacts with collision, nonce, delegation-resolution, and `SELFDESTRUCT` invariants. These interactions are limited but warrant targeted review and fuzzing.
Unspecified behavior requiring cross-client consensus2The current EIP leaves localized consensus questions around post-EIP-8037 gas, operand order, prefix-only versus exact designation collisions, and the state point used for trie existence. The prototype records assumptions, but clients need agreement before production vectors are baselined.
New EVM gas refund1The current EIP text specifies a simple existence-based global refund. The Amsterdam prototype replaces it with EIP-8037 state-gas accounting, so the normative disposition of that refund still needs agreement.
Patterns affecting pre-existing tests1Three fixture executions of one existing constant-gas opcode-sweep function flipped because `SETDELEGATE` is dynamic; the sweep now excludes it. No other existing test was reworked or parked.
New test-framework primitives1The framework gains one opcode definition with dynamic metadata and a reusable address-derivation helper; existing fillers and expectation types suffice.
Performance risks1The opcode adds account reads and code/nonce writes, but it can be benchmarked in isolation and does not alter existing benchmark behavior.
Show 16 zero-score criteria
Zero-score criteria (Checklist revision 2)
CriterionScoreWhy this scoreNotes
Modified opcodes0No pre-existing opcode's result changes.
Added precompiles0No precompile is added.
Modified precompiles0No precompile logic or gas schedule changes.
Added system contracts0No system contract is added.
Modified system contracts0No existing system contract is modified directly or indirectly.
Blob gas accounting changes0No blob gas behavior changes.
New transaction types0No transaction type is introduced.
New or modified transaction validity mechanisms0Transaction validity and intrinsic gas rules are unchanged.
New block / header fields0No block or header field is added.
Encoding changes (RLP/SSZ)0No transaction, block, or interface encoding changes.
Block syncing changes0Block encoding and RLP validation are unchanged.
New fork activation mechanism0Activation only makes the opcode valid; it does not mutate state at the fork block.
Engine API changes0No Engine API field or endpoint changes.
Transition-tool interface changes0The transition-tool request and result interfaces are unchanged.
New invariant on pre-existing tests0Tests unrelated to EIP-7819 gain no new assertion.
Cryptography0Address derivation reuses existing Keccak-256 and introduces no new cryptographic primitive.
Assessment provenance
Rubric
Checklist revision 2 · ethspecs/pm@3d8c0128c5
Evaluator
STEEL team · ethspecs/pm complexity_assessments
Source record
Open draft pull request #128: Add EIP-7819 complexity assessment · checklist at 664f62e0e0 · updated 2026-08-24
blob a34cb99264 · sha256 7202736865a9
Research record
research/tasks/09-hegota-human-assessment-snapshot/outputs/assessments/eip-7819.yaml · sha256 46b88a993f3e

Both assessments applied Checklist revision 2 (28 criteria) to EIP-7819 in Hegotá. Δ is LLM minus Human.

Using the latest scored LLM evaluation for this checklist: 2026-08-26 · spec 2026-08-25 · ac450a4ab2. The Human and LLM assessments may use different spec revisions.

LLM21Medium
Human22Medium
Δ total−1Same tier
Criteria24/28agree exactly · 3 differ by 1 · 1 differ by 2+

Complexity profiles side by side

LLM
Human

Largest disagreements: State gas accounting changes (−2), New EVM gas refund (+1), New test-framework primitives (−1), Security risks (+1)

Per-criterion scores, Human versus LLM, ordered by the size of the difference
CriterionLLMHumanΔAgreementRationale from each source
State gas accounting changes02−2Differ by 2+
Show rationale

LLM As written, EIP-7819 neither adjusts an existing state-gas rate nor defines a new state-gas charging site. The apparent omission for its durable code and nonce writes is recorded as material under-specification rather than repaired by assigning an unstated mechanism.

Human The prototype adds a new `NEW_ACCOUNT`/`AUTH_BASE` state-gas charging site and a journaled designation refill on clear or frame rollback. It reuses the reservoir and spill mechanism rather than changing it.

New EVM gas refund21+1Differ by 1
Show rationale

LLM This is a simple conditional refund, but it shares the global refund counter with existing refund behavior and has state-dependent interactions under repeated writes, so targeted mixed-refund and cap testing is required.

Human The current EIP text specifies a simple existence-based global refund. The Amsterdam prototype replaces it with EIP-8037 state-gas accounting, so the normative disposition of that refund still needs agreement.

New test-framework primitives01−1Differ by 1
Show rationale

LLM The EIP does not demonstrate a need for a new expectation type, modifier, or permanent framework abstraction beyond composing existing EVM state and execution checks.

Human The framework gains one opcode definition with dynamic metadata and a reusable address-derivation helper; existing fillers and expectation types suffice.

Security risks32+1Differ by 1
Show rationale

LLM Contract-controlled, immediately effective code replacement interacts with multiple critical mechanisms: account code and nonce state, delegation execution, access journaling, refunds, upgrade authorization, and deletion assumptions. Mistakes can change which code executes or who controls an account, requiring extensive security review and fuzzing across components.

Human The opcode creates and upgrades immediately effective EIP-7702 designations and interacts with collision, nonce, delegation-resolution, and `SELFDESTRUCT` invariants. These interactions are limited but warrant targeted review and fuzzing.

Added opcodes220Agree
Show rationale

LLM A single opcode is added, but its state-dependent net gas, multi-step stack behavior, state access, code/nonce mutation, and failure paths make it a complex opcode under the rubric.

Human One complex opcode is added: it has dynamic access, write, and state-gas costs and mutates another account while returning its derived address.

Modified opcodes000Agree
Show rationale

LLM SETDELEGATE adds another way to create an already-defined delegation object; it does not itself modify the behavior of a pre-existing opcode.

Human No pre-existing opcode's result changes.

Added precompiles000Agree
Show rationale

LLM No precompile is introduced.

Human No precompile is added.

Modified precompiles000Agree
Show rationale

LLM Existing precompile behavior and gas schedules are not modified.

Human No precompile logic or gas schedule changes.

Added system contracts000Agree
Show rationale

LLM No system contract is introduced.

Human No system contract is added.

Modified system contracts000Agree
Show rationale

LLM The proposal has no direct or specified indirect system-contract modification.

Human No existing system contract is modified directly or indirectly.

EVM Gas rule changes220Agree
Show rationale

LLM The opcode introduces its own gas-accounting rule, including a state-dependent refund, while leaving the gas rules of existing opcodes unchanged. This is a new mechanism confined to the new operation.

Human `SETDELEGATE` introduces a dynamic schedule composed of cold/warm access and an account-write charge. It does not change another opcode's schedule, but exact and repeat-write cases need dedicated accounting tests.

State-access ordering within opcode execution220Agree
Show rationale

LLM SETDELEGATE is a new state-accessing operation whose charge, warm-access, read, refund, and write positions require boundary testing. It does not change the ordering rule for an existing class of opcodes, so score 2 rather than 3 applies.

Human A new state-accessing opcode must check state-independent access gas before reading the location, then calculate and charge state-dependent costs. BAL output changes at those boundaries.

Blob gas accounting changes000Agree
Show rationale

LLM No blob gas accounting mechanism is introduced or modified.

Human No blob gas behavior changes.

New transaction types000Agree
Show rationale

LLM No new transaction type is introduced.

Human No transaction type is introduced.

New or modified transaction validity mechanisms000Agree
Show rationale

LLM Runtime opcode failure conditions do not modify transaction-envelope validity.

Human Transaction validity and intrinsic gas rules are unchanged.

New block / header fields000Agree
Show rationale

LLM The proposal introduces no new block or header field.

Human No block or header field is added.

Encoding changes (RLP/SSZ)000Agree
Show rationale

LLM No RLP, SSZ, or other interface-level encoding change is introduced.

Human No transaction, block, or interface encoding changes.

Block syncing changes000Agree
Show rationale

LLM No block RLP validation mechanism requiring sync testing is introduced.

Human Block encoding and RLP validation are unchanged.

New fork activation mechanism000Agree
Show rationale

LLM Enabling a new opcode requires no special activation mechanism as written.

Human Activation only makes the opcode valid; it does not mutate state at the fork block.

Engine API changes000Agree
Show rationale

LLM No Engine API surface is introduced or modified.

Human No Engine API field or endpoint changes.

Transition-tool interface changes000Agree
Show rationale

LLM Existing transition-tool interface shapes are sufficient as specified.

Human The transition-tool request and result interfaces are unchanged.

Patterns affecting pre-existing tests110Agree
Show rationale

LLM Existing fork/opcode-validity coverage for byte 0xf6 must distinguish the activation boundary and the new behavior. That is a minor, localized subset of pre-existing tests; the broader SETDELEGATE matrix consists of new tests.

Human Three fixture executions of one existing constant-gas opcode-sweep function flipped because `SETDELEGATE` is dynamic; the sweep now excludes it. No other existing test was reworked or parked.

New invariant on pre-existing tests000Agree
Show rationale

LLM The proposal does not require tests unrelated to SETDELEGATE to assert a new output or invariant.

Human Tests unrelated to EIP-7819 gain no new assertion.

Performance risks110Agree
Show rationale

LLM The new opcode's hashing, state access, fixed-size code write, and delegated call path require benchmarking, but the operation is bounded and can be benchmarked in isolation; the delegated execution mechanism already comes from EIP-7702.

Human The opcode adds account reads and code/nonce writes, but it can be benchmarked in isolation and does not alter existing benchmark behavior.

Edge/boundary conditions330Agree
Show rationale

LLM Multiple boundary-prone mechanisms combine, and repeated same-location changes multiply success, failure, revert, refund, warm/cold, target, and call-timing cases. At least this repeated-update mechanism requires an elevated test matrix.

Human Testing spans target truncation/padding, salt/address order, zero-target clearing, nonce zero/nonzero, exact and malformed collision code, cold/warm access, fresh/existing leaves and designations, exact/one-short gas, static mode, call contexts, and success/revert interactions. Several axes combine in elevated gas/state matrices.

Cryptography000Agree
Show rationale

LLM Using an existing hash in a new derivation is not a new cryptographic mechanism.

Human Address derivation reuses existing Keccak-256 and introduces no new cryptographic primitive.

Cross-EIP interactions330Agree
Show rationale

LLM SETDELEGATE strongly extends EIP-7702's shared delegation object, must coordinate access warming with EIP-2929 and non-empty-account preservation with EIP-7523, relies on the EIP-3541 marker convention, and is explicitly integrated into EIP-8141 deployment and mempool validation. These multiple interdependencies require coordinated cross-EIP execution, failure, introspection, and deployment tests.

Human Coordinated cases cover EIP-7702 designation semantics, EIP-2929 warming, EIP-7523 nonce persistence, EIP-3541 collision reachability, EIP-6780 `SELFDESTRUCT`, EIP-7928 BAL observability, EIP-8037 state gas, and EIP-8038 access/write pricing. The base interaction level is 2; eight interacting EIPs add 1 for the five beyond the first three.

Unspecified behavior requiring cross-client consensus220Agree
Show rationale

LLM Clients need agreement on localized, constructible cases: the exact failure semantics and rollback boundary of both halt sites, and original-versus-current existence for refunds. Most other opcode behavior is specified, so the gaps are material but localized rather than a wholesale redefinition.

Human The current EIP leaves localized consensus questions around post-EIP-8037 gas, operand order, prefix-only versus exact designation collisions, and the state point used for trie existence. The prototype records assumptions, but clients need agreement before production vectors are baselined.

Criterion legend and glossary

Every stacked bar, comparison matrix, and criterion table on this site uses the same criterion colours, abbreviations, and order. Colour marks the criterion group; the abbreviation and name identify the criterion. Scores are 0–3 per criterion (4 is exceptional; cross-EIP interactions is uncapped).

EVM surface

Opcodes, precompiles, and system contracts that are added or modified.

  • Added opcodes
    Introduces new opcodes
    Score anchors
    0
    No new opcodes are introduced.
    1
    A new simple opcode is introduced (no data portion, no complex stack mechanics, and a constant gas cost).
    2
    Multiple new simple opcodes are introduced, or a single new complex opcode is introduced (has data portion, or complex stack mechanics, or a dynamic gas cost).
    3
    Multiple new opcodes are introduced, and at least one of them is complex (has data portion, or complex stack mechanics, or a dynamic gas cost).
    • Cryptography opcodes are not considered complex by default. Refer to the "Cryptography" section for a separate assessment.
  • Modified opcodes
    Modifies pre-existing opcodes
    Score anchors
    0
    No pre-existing opcode modifications are introduced.
    3
    At least one pre-existing opcode's behavior is modified (not including gas changes) or a pre-existing opcode is deprecated.
  • Added precompiles
    Introduces new precompiles
    Score anchors
    0
    No new precompiles are introduced.
    1
    A new simple precompile is introduced (constant input length, constant gas cost).
    2
    Multiple new simple precompiles are introduced, or a single new complex precompile is introduced (dynamic input length or dynamic gas cost).
    3
    Multiple new precompiles are introduced, and at least one of them is complex (dynamic input length or dynamic gas cost).
    • Cryptography precompiles are not considered complex by default. Refer to the "Cryptography" for a separate assessment.
  • Modified precompiles
    Modifies pre-existing precompiles logic or gas-accounting
    Score anchors
    0
    No pre-existing precompiles are modified.
    1
    At least one pre-existing precompile has its gas schedule modified.
    2
    Multiple pre-existing precompiles have their gas schedule modified, or a single pre-existing precompile has its behavior modified.
    3
    The behavior of multiple pre-existing precompiles, or a single complex pre-existing precompile modified.
  • Added system contracts
    Introduces new system contract, stateful or not
    Score anchors
    0
    No new system contracts are introduced.
    1
    A new system contract is introduced that is not stateful nor does it trigger a new system action (e.g. requests to the consensus layer).
    2
    Multiple new system contracts are introduced or a single new system contract that is either stateful or triggers a new system action (e.g. requests to the consensus layer).
    3
    Multiple new system contracts are introduced and at least one of them is either stateful or triggers a new system action (e.g. requests to the consensus layer).
  • Modified system contracts
    Modifies pre-existing system contracts
    Score anchors
    0
    No modifications to pre-existing system contracts are introduced, directly or indirectly.
    1
    Does not directly modify any system contract, but its behavior has minor indirect effects on one or more system contracts.
    2
    Does not directly modify any system contract, but its behavior has major indirect effects on one or more system contracts.
    3
    At least one pre-existing system contract code or state is modified, which would involve irregular state transition or a similarly complex transition methodology.

Gas and accounting

Execution, blob, and state gas rules, refunds, and where charges happen inside opcodes.

  • EVM Gas rule changes
    New EVM gas accounting rules
    Score anchors
    0
    No gas accounting changes.
    1
    Existing gas accounting mechanism is updated.
    2
    A new gas accounting mechanism is introduced but it does not affect existing mechanisms nor does it affect existing tests.
    3
    A new gas accounting mechanism is introduced and affects existing mechanisms which in turn affect existing tests.
  • State-access ordering within opcode execution · Checklist revision 2 only
    Changes *where inside an opcode's execution* state is accessed, or where gas is charged relative to that access. Because a state access is recorded in the block-level access list only if execution had enough gas to reach it, this ordering is consensus-critical: moving it changes the BAL at every gas boundary of every affected opcode.
    Score anchors
    0
    No change to where state is accessed, or to where gas is charged relative to a state access, within any opcode.
    1
    A single opcode's state-access or gas-charge ordering changes.
    2
    Multiple opcodes' ordering changes, or a new state-accessing operation is introduced whose position in the order must be settled.
    3
    The ordering rule changes for a whole class of state-accessing opcodes at once, or what counts as a recordable state access is redefined — requiring existing BAL vectors to be re-derived across opcodes and forks.
    • Distinct from "Modified opcodes", which asks whether an opcode's **result** changed. This row asks about the **path to the result**, which is observable even when the result is identical. An EIP can be 0 on that row and 3 on this one.
    • Score changes **to** the ordering. Do not score the fact that state accesses are observable — they always are.
    • Each boundary must be re-tested against every other dimension that can change the answer (cold/warm, static/non-static, delegated/direct, revert/success), so the case count grows multiplicatively rather than additively. Note this explicitly under Special Considerations.
  • Blob gas accounting changes
    New Blob gas accounting rules which potentially affect pre-existing tests
    Score anchors
    0
    No blob gas accounting changes.
    1
    Existing blob gas accounting mechanism is updated.
    2
    A new blob gas accounting mechanism is introduced but it does not affect existing mechanisms nor does it affect existing tests.
    3
    A new blob gas accounting mechanism is introduced and affects existing mechanisms which in turn affect existing tests.
  • State gas accounting changes · Checklist revision 2 only
    New state gas accounting rules. State gas is the cost of *writing* state, as opposed to accessing or executing it: `StateGasCosts`, `COST_PER_STATE_BYTE`, the block-level state gas budget, and the spill path into execution gas.
    Score anchors
    0
    No state gas accounting changes.
    1
    An existing state gas cost or `STATE_BYTES_PER_*` rate is adjusted.
    2
    A new state-gas-charging site is introduced, or the block-level state gas budget or reservoir allocation is modified.
    3
    A new state gas charging mechanism is introduced, or the spill interaction between state gas and execution gas is modified, affecting existing gas tests.
    • Harder to test than blob gas: the spill path means state gas cannot be metered independently of execution gas, and some costs (e.g. `NEW_ACCOUNT`) are state-dependent.
  • New EVM gas refund
    New gas-refund mechanism
    Score anchors
    0
    No new gas-refund mechanisms are introduced.
    1
    A new simple gas-refund mechanism is introduced that does not affect either existing tests or existing gas-refund mechanisms.
    2
    A new complex gas-refund mechanism is introduced or a simple mechanism that affects existing tests or existing gas-refund mechanisms.
    3
    A new complex gas-refund mechanism is introduced that affects existing tests or existing gas-refund mechanisms.

Blocks, transactions, and encoding

Transaction types and validity, block and header fields, encodings, syncing, and activation-time changes.

  • New transaction types
    Introduces a new transaction type
    Score anchors
    0
    No new transaction types are introduced.
    3
    A new transaction type is introduced.
  • New or modified transaction validity mechanisms
    Creates new or modifies pre-existing transaction types' validation mechanisms
    Score anchors
    0
    No changes are introduced to the validity rules of existing transaction types or to their intrinsic gas cost calculation.
    1
    Minor adjustments are introduced to validity rules or intrinsic gas cost calculation, but they do not significantly affect existing tests.
    2
    Changes to validity rules or intrinsic gas cost calculation affect existing tests, but require only limited updates to test cases and no redesign of the testing infrastructure.
    3
    Changes to validity rules or intrinsic gas cost calculation require extensive rework or redesign of the tests or testing infrastructure.
  • New block / header fields
    Introduces new block or block header fields
    Score anchors
    0
    No new block or header fields are introduced.
    3
    A new block or header field is introduced.
  • Encoding changes (RLP/SSZ)
    Introduces encoding changes at the transaction/block/interfaces level
    Score anchors
    0
    No encoding changes are introduced at the transaction, block, or interfaces levels.
    3
    An encoding change is introduced at transaction, block or interfaces level (e.g. RLP -> SSZ).
    • "Interfaces level" includes the Engine API. Score an Engine API encoding change (e.g. JSON -> SSZ) here.
  • Block syncing changes
    Modifies block RLP validation mechanisms that require test client syncing.
    Score anchors
    0
    No new RLP validation mechanism is introduced.
    1
    A single simple RLP validation mechanism is introduced.
    2
    Multiple simple RLP validation mechanisms are introduced or a single complex one.
    3
    Multiple RLP validation mechanisms are introduced and at least one of them is deemed complex.
  • New fork activation mechanism
    Modifies state, internal variables, or similar, at the fork activation block
    Score anchors
    0
    No state modifications, internal variables or similar are modified at the fork activation block.
    3
    Either a state modification or internal variables are modified at the fork activation block.
    • Initialization of new internal variable is not considered a modification.

Client interfaces

Engine API and transition-tool interface changes.

  • Engine API changes
    Introduces new fields to the Engine API directives
    Score anchors
    0
    No new fields or communication mechanisms are introduced to the Engine API.
    1
    A single new field is introduced in one of the Engine API endpoints.
    2
    Multiple fields are introduced to one or multiple Engine API end points, or a new Engine API end-point is introduced.
    3
    Multiple fields are introduced to one or multiple Engine API end points and a new Engine API end-point is introduced.
  • Engine API encoding changes · Checklist revision 1 only
    Engine API encoding changes (the revision-1 template defines no anchor text for this row).
  • Transition-tool interface changes
    Modifies or adds new fields to the transition tool interface.
    Score anchors
    0
    No modifications to the transition tool interface are required.
    1
    A single new field needs to be introduced to the transition tool interface.
    2
    Multiple new fields or a new mechanism has to be introduced to the transition tool interface.
    3
    Multiple new fields and a new mechanism has to be introduced to the transition tool interface.
    • Special consideration must be paid to this section if the EIP introduces a mechanism that requires the state transition tool to be aware whether the block it is processing is the fork-activation block.

Testing impact

Rework, new invariants, and new primitives required in the test framework.

  • Patterns affecting pre-existing tests
    Implements a new validation mechanism or rule that translates in reworking pre-existing tests
    Score anchors
    0
    No pre-existing tests are affected by this change.
    1
    Minor subset of existing tests are affected by this change.
    2
    Considerable subset of existing tests are affected by this change but involves only a contrived category of tests.
    3
    Major subset of existing tests are affected, including diverse category of tests (benchmarks, static, multiple forks, etc.).
  • New invariant on pre-existing tests · Checklist revision 2 only
    Tests that are **not about this EIP** must nonetheless assert something this EIP produces. Their logic does not change; they gain a new thing to check.
    Score anchors
    0
    Pre-existing tests assert nothing new.
    1
    A narrow, contrived category of pre-existing tests gains a new assertion.
    2
    A broad category gains a new assertion, applied mechanically.
    3
    Every test in the fork gains the assertion regardless of what it tests, and pre-fork vectors must be re-derived to satisfy it.
    • Paired with the row above, and easy to confuse with it. "Patterns affecting pre-existing tests" asks whether existing tests must be **reworked**; this row asks whether they must **additionally assert something new**. Score both — an EIP can be low on one and high on the other.
  • New test-framework primitives · Checklist revision 2 only
    Requires new abstractions in the test framework itself — expectation types, modifiers, helpers — beyond writing test functions with what already exists.
    Score anchors
    0
    Existing test primitives suffice.
    1
    Existing primitives need minor extension.
    2
    New expectation or modifier primitives are required, reusable within this EIP's own test suite.
    3
    New framework-level primitives are required that become a permanent part of the framework and are used by other EIPs' tests.

Risk and validation

Security, performance, boundary conditions, and cryptography that need validation.

  • Security risks
    Introduces or modifies mechanisms that could compromise the security of the chain, users, validators, or other stakeholders, if not implemented properly.
    Score anchors
    0
    No new mechanisms are introduced that could pose a security risk.
    1
    The introduced mechanisms are self-contained, can be validated in isolation, and do not alter existing invariants that could pose a security risk for any stakeholders.
    2
    The introduced mechanisms interact with a limited number of existing components, slightly altering their security assumptions and requiring a targeted security review or fuzzing.
    3
    The introduced mechanisms interact with multiple existing components, including critical ones, substantially altering their security assumptions and requiring an extensive security review and fuzzing.
  • Performance risks
    Introduces or modifies mechanisms and requires performance validation.
    Score anchors
    0
    No new mechanisms are introduced that require performance validation.
    1
    The introduced mechanisms can be benchmarked in isolation and do not affect existing performance behavior.
    2
    The introduced mechanisms cannot be fully benchmarked in isolation, but they only have a limited impact on the existing performance benchmarks.
    3
    The introduced mechanisms cannot be benchmarked in isolation and have a substantial impact on existing performance benchmarks or have complex interactions with existing mechanisms.
  • Edge/boundary conditions
    Feature contains edge/boundary conditions.
    Score anchors
    0
    No discernible edge cases or boundary conditions are introduced.
    1
    A single edge-case or boundary-condition prone mechanism is introduced.
    2
    Multiple edge-case or boundary-condition prone mechanisms are introduced, but none of them requires an elevated number of cases to test.
    3
    Multiple edge-case or boundary-condition prone mechanisms are introduced and at least one of them requires an elevated number of cases to test.
  • Cryptography
    Introduces new cryptography mechanisms or modifies existing functionality that involves cryptography
    Score anchors
    0
    No cryptography mechanisms are introduced.
    1
    A new cryptography mechanism is introduced but it is a well known mechanism that is known to have vast resources to aid on its testing.
    2
    Multiple new cryptography mechanisms are introduced that are well-known or a single but novel mechanism is introduced that is either untested or has limited resources.
    3
    Multiple new cryptography mechanisms are introduced and at least one of them is a novel mechanism.

Coordination

Cross-EIP interactions and behavior that clients must agree on before tests exist.

  • Cross-EIP interactions
    Introduces or modifies mechanisms that affect other EIPs in either the same or past forks.
    Score anchors
    0
    Fully self-contained EIP that does not depend on, modify, or conflict with any other EIP.
    1
    The EIP interacts with one or more other EIPs in a non-critical and limited way but can be tested independently for the most part.
    2
    The EIP depends on or modifies one or more other EIPs such that coordinated testing and consideration is required, but interactions are limited in scope and not complex.
    3
    The EIP has strong interdependencies with multiple EIPs, requiring extensive coordinated cross-EIP testing as well as potential re-design of existing test vectors.
    • +1 for every 3 additional interacting EIPs beyond the first 3, each of which requires its own coordinated test cases. List the EIPs in the rationale.
    • This row is intentionally uncapped, unlike every other anchor: each interacting EIP is another axis of the test matrix, so a ceiling would make a 12-EIP product indistinguishable from a 3-EIP one.
  • Unspecified behavior requiring cross-client consensus · Checklist revision 2 only
    The EIP text does not determine the answer for cases a test can construct. Clients must agree on a previously unspecified detail before tests can be baselined. The cost here is coordination and re-baselining, not test writing.
    Score anchors
    0
    The EIP text determines the answer for every case a test could construct.
    1
    A few details are unspecified but have an obvious intended reading.
    2
    Details require client agreement before tests can be written, but they are localized.
    3
    A previously unspecified *and previously unobservable* behavior becomes consensus-critical; expect tests to be re-baselined on each round of EIP amendment.
    • Score this from the EIP's state at assessment time: whether it has client implementations, whether it has been through a devnet, and how many open questions remain on its discussion thread.