Evaluated on: · Spec revision: 2023-03-28 · a3d0763930
Scope at the cutoff. EIP-6780 (draft revision of 2023-03-25) changes the SELFDESTRUCT opcode. If the executing contract was not created in the current transaction, SELFDESTRUCT only transfers the account's entire balance to the target and does not delete code or storage. If the contract was created in the same transaction, the original behaviour is kept: storage and the account are deleted, the balance is transferred and set to 0, and the account then behaves as an empty account "both in the same transaction and in all later ones". The EIP-3529 removal of the SELFDESTRUCT refund and the EIP-2929 cold-beneficiary charge stay unchanged. The stated breaking change is that a contract can no longer be re-created at the same address with CREATE2 after a SELFDESTRUCT in an earlier transaction.
- Evaluator
- LLMChecklist v3
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 3 criteria affected
- Plausible range
- 13–15 (Medium)
- Assessment cutoff
- 2023-03-30 · EIP revision
a3d0763930(2023-03-28)
Score bands · Checklist revision 3
- 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 revision contradicts itself on whether a same-transaction self-destruct takes effect immediately or at the end of the transaction. It omits self-beneficiary handling in the non-deleting branch and does not define 'created in the same transaction' for reverted creations or repeated creations.
Plausible total
13–15
recorded score 14 · plausible tiers Medium
Affected criteria (3)
Unresolved questions at the cutoff (5)
- After a same-transaction SELFDESTRUCT, is the account empty for the rest of that transaction, or only at the end as originally?
- In the non-deleting branch with the beneficiary equal to the contract itself, is the balance kept or burned?
- Does a contract count as created in this transaction if its creating frame later reverted, or if it was created, self-destructed and re-created?
- In the non-deleting branch, is the balance explicitly set to 0 (item 2 says so; item 1 does not)?
- How does the rule apply when SELFDESTRUCT runs through DELEGATECALL/CALLCODE in a contract created in this transaction versus a pre-existing one?
Notable ambiguities noted by the assessor (4)
- Specification item 2 says SELFDESTRUCT 'continues to behave as originally' but also that the account behaves as empty 'in the same transaction'.
- Specification item 1 omits zeroing the balance and the self-beneficiary case.
- The definition of 'created in the same transaction' is not given.
- Listing EIP-2681 in requires has no stated role in this revision.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Modified opcodes | 3 | SELFDESTRUCT's state effects change beyond gas or ordering. |
Confidence: High |
| Patterns affecting pre-existing testsUnder-specified | 3 | One common rule change, that SELFDESTRUCT of pre-existing contracts no longer deletes the account, alters expected post-states for ordinary cases across distinct families. These include SELFDESTRUCT and beneficiary tests, CREATE2 recreation and collision tests, revert and nested-call tests that self-destruct pre-state contracts, and account-touch and emptiness tests. It also affects calls to the contract after the transaction. |
Confidence: Medium Uncertainty: The breadth is estimated from the specification; no test suite was supplied. |
| Security risksUnder-specified | 2 | The change breaks a bounded interaction with contract creation: CREATE2 at an address whose contract self-destructed in an earlier transaction must now fail on collision. Mis-tracking same-transaction creation, for example after a reverted creation or with DELEGATECALL contexts, could wrongly delete or keep state. This needs targeted integration and fuzz cases, not coordinated changes across multiple components. |
Confidence: Medium |
| Edge/boundary conditionsUnder-specified | 2 | Several boundary-sensitive rules change: the same-transaction creation boundary (including creation followed by a revert), within-transaction emptiness after self-destruct, and the balance outcome when the beneficiary is the contract itself in the non-deleting branch. Dimensions such as DELEGATECALL/CALLCODE context, revert of the self-destructing frame and cold/warm beneficiary can be tested largely independently, so the matrix is not elevated. |
Confidence: Medium Uncertainty: How these rules combine (for example creation reverted, then SELFDESTRUCT) depends on unresolved semantics. If counted as one mechanism this would be level 1; if combinations are deemed coupled, level 3. |
| Cross-EIP interactions | 2 | At least one interaction needs coordinated cross-EIP cases: self-destruct in an earlier transaction followed by CREATE2 to the same address, which now collides. The EIP-2929 and EIP-3529 interactions need only local compatibility checks in both branches. No coupled multi-EIP restructuring is required. |
Confidence: Medium Uncertainty: CREATE2 and empty-account semantics are not in a supplied candidate document, so they are listed as unidentified interactions. Interacting EIPs: EIP-2929, EIP-3529, EIP-2681 |
| Unspecified behavior requiring cross-client consensus | 2 | Several localized cases have competing interpretations with observable state outcomes, so clients and the spec must agree before expected results can be fixed: within-transaction emptiness timing, the self-beneficiary balance, and the definition of 'same transaction' creation. |
Confidence: Medium |
Show 22 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No new instruction. |
|
| Added precompiles | 0 | None introduced. |
|
| Modified precompiles | 0 | None modified. |
|
| Added system contracts | 0 | None introduced. |
|
| Modified system contracts | 0 | The Shanghai baseline has no system contracts affected by this change. |
|
| EVM Gas rule changes | 0 | No execution-gas accounting rule or parameter changes. The SELFDESTRUCT refund was already removed by EIP-3529, which is in the baseline. |
|
| State-access ordering within opcode execution | 0 | Checking whether the contract was created in this transaction uses transaction-scoped bookkeeping, not a new state access with an ordering rule. No opcode's access or charge order changes. |
Uncertainty: The spec does not say when the 'created in this transaction' check happens relative to the beneficiary access, but there is no gas consequence. |
| Blob gas accounting changes | 0 | No blob-gas changes. |
|
| State gas accounting changes | 0 | No state-gas accounting mechanism or parameter is added or changed. |
|
| New EVM gas refund | 0 | No refund mechanism is introduced. |
|
| New transaction types | 0 | None introduced. |
|
| New or modified transaction validity mechanisms | 0 | No consensus validity change. |
|
| New block / header fields | 0 | None added. |
|
| Encoding changes (RLP/SSZ) | 0 | No schema or codec changes. |
|
| Block syncing changes | 0 | No block decoding or structural validation change. |
|
| New fork activation mechanism | 0 | No activation-specific state transition is needed. |
|
| Engine API changes | 0 | No Engine API change. |
|
| Transition-tool interface changes | 0 | No transition-tool field or mechanism change is required. |
|
| New invariant on pre-existing tests | 0 | Changed post-state values are rework (counted under PAT), not a new assertion. |
|
| New test-framework primitives | 0 | Existing primitives (pre-state accounts, creation-transaction and factory bytecode, blockchain tests with several transactions) are enough; no new abstraction is architecturally required. |
Uncertainty: Helpers for deploy-then-selfdestruct factories would be convenient but are not new primitives. |
| Performance risks | 0 | No new or larger workload needs performance validation. Tracking contracts created in the transaction is bounded bookkeeping. |
|
| Cryptography | 0 | No cryptographic change. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@a3d0763930EIPS/eip-6780.md committed 2023-03-28 · information cutoff 2023-03-30- Rubric
- Checklist revision 3 ·
ethspecs/pm@fe2f793b03 - Evaluator
- Opus 5.5 (
claude-opus-5-5) at high effort, one tool-less call per EIP · isolationbubblewrap_claude_p_no_tools_v1 - Source record
- Frozen research record
research/tasks/10-opus-v3-reassessment/retrospective/outputs/assessments/cancun/eip-6780.yaml· sha256d55b03a42ea9 - Supporting documents supplied with the EIP
supporting/eip-2535.md,supporting/eip-2681.md,supporting/eip-2929.md,supporting/eip-3529.md,supporting/eip-6046.md,supporting/eip-6049.md