Evaluated on: · Spec revision: 2023-03-28 · a3d0763930
Scope at the cutoff. At the 2023-03-30 information cutoff, draft EIP-6780 changed the existing SELFDESTRUCT opcode so that a contract not created in the current transaction retained its code and storage while transferring its balance to the target. Contracts created and self-destructed in the same transaction retained the prior deletion behavior, with the existing EIP-2929 access rules, EIP-3529 no-refund rule, and EIP-6049 deprecation left in place. The proposal identified CREATE2 address recreation across transactions as its breaking application pattern.
- Evaluator
- LLMChecklist v2
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 3 criteria affected
- Plausible range
- 14–16 (Medium)
- Assessment cutoff
- 2023-03-30 · EIP revision
a3d0763930(2023-03-28)
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
- Edge/boundary conditions3
- Unspecified behavior requiring cross-client consensus3
- Security risks2
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: Material localized under-specification remains around the definition and rollback lifecycle of "created in the same transaction," address reuse after destruction, and the balance result when the SELFDESTRUCT target is the executing account. The abstract's "caller" terminology also conflicts with the specification's "target."
Plausible total
14–16
recorded score 16 · plausible tiers Medium
Unresolved questions at the cutoff (4)
- Precisely which successful creation events mark an address as created in the transaction, and how is that status rolled back across reverted nested scopes?
- If an address is destroyed, accessed, or recreated again within the same transaction, which branch applies and at what point must it behave as empty?
- When the SELFDESTRUCT target equals the executing account, must the non-creation branch end with a zero balance, as the creation branch explicitly requires?
- Does "caller" in the abstract mean the beneficiary/target, or does it prescribe a different recipient from the target named in the specification?
Notable ambiguities noted by the assessor (3)
- The front matter requires EIP-2681, but the normative text does not explain how its account-nonce limit participates in EIP-6780.
- The same-transaction branch explicitly sets the source balance to zero after transfer, while the other branch states only that the entire balance is transferred.
- The alternative EIP-6046 is characterized briefly in EIP-6780, so it is treated as a design conflict rather than as a co-activated dependency.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Modified opcodesUnder-specified | 3 | The rubric assigns 3 whenever at least one existing opcode's non-gas behavior is modified; SELFDESTRUCT is explicitly modified. |
Confidence: High |
| Edge/boundary conditionsUnder-specified | 3 | Multiple boundary-prone effects require a large case matrix: creation by transaction/CREATE/CREATE2, current-versus-prior transaction, later access to code/storage/account, beneficiary state, and address recreation. At least the creation-timing and recreation mechanisms require elevated combinatorial coverage. |
Confidence: Medium Uncertainty: The draft gives no test plan, and some lifecycle cases within this matrix are not normatively resolved. |
| Unspecified behavior requiring cross-client consensusUnder-specified | 3 | Creation history becomes a new consensus-critical discriminator for opcode results even though its difficult lifecycle cases were not previously observable through this semantic distinction. Constructible tests need agreement on those cases and on self-beneficiary balance behavior before stable baselines can be set. |
Confidence: Medium Uncertainty: The package records a Draft only three days after creation and contains no packaged resolution of these cases; later amendments or implementation knowledge were deliberately not consulted. |
| Security risks | 2 | The new semantics alter the code/storage deletion invariant and interact with CREATE2-based application upgrade assumptions. The affected components are limited enough for targeted security review and fuzzing rather than an extensive chain-wide review. |
Confidence: Medium Uncertainty: The EIP identifies one unsafe application pattern but does not exhaustively analyze other contracts that rely on account deletion. |
| Performance risks | 2 | Performance validation cannot be fully isolated from account storage size and transaction lifecycle, but the impact is limited to SELFDESTRUCT and its two branches rather than broad execution benchmarks. |
Confidence: Medium Uncertainty: The package provides motivation but no benchmarks or implementation detail, so the magnitude of the residual tracking and deletion costs is not quantified. |
| Cross-EIP interactions | 2 | Coordinated testing is needed across the new semantic branch, EIP-2929 access charging, and EIP-3529 refund behavior, while EIPs 2681, 6049, and the conflicting 6046 proposal add limited dependency/deprecation/design context. These interactions are multiple but localized to SELFDESTRUCT and creation behavior, matching score 2; five identified EIPs do not form the first complete group of three interactions beyond the initial three, so they do not trigger the uncapped increment. |
Confidence: Medium Uncertainty: EIP-2681 is declared as required without an explicit explanation of its role in the normative text; EIP-6046 is an alternative rather than a co-activated dependency. Interacting EIPs: EIP-2681, EIP-2929, EIP-3529, EIP-6046, EIP-6049 |
| Patterns affecting pre-existing tests | 1 | Existing tests that exercise SELFDESTRUCT state deletion require reworking, but they are a narrow opcode-specific subset rather than a broad class of the test corpus. |
Confidence: Medium Uncertainty: The package does not enumerate the pre-existing test corpus, so the relative size of the affected subset is inferred from the proposal's single-opcode scope. |
Show 21 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No opcode is added. |
|
| Added precompiles | 0 | No precompile is introduced. |
|
| Modified precompiles | 0 | No existing precompile is modified. |
|
| Added system contracts | 0 | No system contract is introduced. |
|
| Modified system contracts | 0 | No direct or package-identified indirect system-contract modification exists. |
|
| EVM Gas rule changes | 0 | The proposal changes SELFDESTRUCT's state result, but introduces no gas accounting change and explicitly preserves the applicable existing rules. |
|
| State-access ordering within opcode execution | 0 | No state access is moved within opcode execution and no gas charge is moved relative to an access, so the ordering-specific anchor is not triggered. |
|
| Blob gas accounting changes | 0 | No blob gas accounting mechanism is introduced or modified. |
|
| State gas accounting changes | 0 | Changing state writes is not itself a change to the rubric's separate state gas accounting mechanism; no such accounting mechanism appears here. |
|
| New EVM gas refund | 0 | The proposal introduces no new refund mechanism. |
|
| New transaction types | 0 | No transaction type is introduced. |
|
| New or modified transaction validity mechanisms | 0 | No transaction validation mechanism is added or modified. |
|
| New block / header fields | 0 | No block or header field is introduced. |
|
| Encoding changes (RLP/SSZ) | 0 | No RLP, SSZ, or other interface-level encoding is changed. |
|
| Block syncing changes | 0 | No RLP validation mechanism requiring syncing is introduced. |
|
| New fork activation mechanism | 0 | Ordinary fork-gated execution semantics do not constitute the rubric's special activation-block modification mechanism. |
|
| Engine API changes | 0 | No Engine API change is introduced. |
|
| Transition-tool interface changes | 0 | No transition-tool interface modification is specified. |
|
| New invariant on pre-existing tests | 0 | Affected SELFDESTRUCT tests need changed expectations; unrelated pre-existing tests do not gain a mechanically added assertion. |
|
| New test-framework primitives | 0 | The historical text does not require a new expectation type, modifier, or reusable test-framework abstraction; existing transaction and state checks suffice. |
Uncertainty: No packaged test-framework description is available, so sufficiency is judged from the protocol behavior exposed by the EIP. |
| Cryptography | 0 | No cryptography mechanism is introduced or modified. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@a3d0763930EIPS/eip-6780.md committed 2023-03-28 · information cutoff 2023-03-30- 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/05-retrospective-complexity-assignment/outputs/fork-eips/cancun/eip-6780.yaml· sha256bf3c82056837 - Supporting documents in the sealed package
supporting/eip-2535.md,supporting/eip-2681.md,supporting/eip-2929.md,supporting/eip-3529.md,supporting/eip-6046.md,supporting/eip-6049.md