You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
EIP-8246 removes the SELFDESTRUCT burn: a contract that self-destructs to itself keeps its balance instead of burning it, and the state handling for accounts marked for destruction changes accordingly.
Why it is not implemented here
grep -rn 'EIP-8246\|8246' --include='*.go' returns nothing in this repository.
core/vm/instructions.go:919-965 still implements the pre-Amsterdam shape (self-destruct to self burns the balance) and core/state/statedb.go has no EIP-8246 path.
Upstream reference
go-ethereum master 7c5069001, checked 2026-10-21.
core/vm/instructions.go:947-965 (the burn is removed under Amsterdam).
core/state/statedb.go:875 (accounts marked for destruction), core/state/statedb_hooked.go:255 (the burn hook removed).
Comment only: fixes the EIP number in the self-destruct comment (8264 -> 8246).
Consumer fix
none upstream
See below.
The consumer this EIP breaks has no upstream fix
Removing the burn changed what a self-destruct-to-self means, and the supply live tracer still counts it as a burn with no fork gate - eth/tracers/live/supply.go:240-242, if vm.OpCode(typ) == vm.SELFDESTRUCT && from == to && value.Cmp(common.Big0) == 1 { call.burn = value }. Upstream has not fixed it: the onEnter path is unconditional, and only the onBalanceChange path is gated by burnsBalance.
Here the matching fix is #2832 / #2833. That makes it a local fix ahead of upstream, not a port, and it must not be described later as "aligned with geth".
Scope
core/vm/instructions.go (SELFDESTRUCT), core/state (destruction and balance handling), plus consensus tests over self-destructing balances.
Dependencies
Interacts with EIP-7708 (transfer and burn logs): upstream notes that EIP-8246 removes the burn the EIP-7708 log would otherwise record, so the two should be decided and landed together.
Split out of #2730, the Amsterdam umbrella - this EIP is not mentioned there. Sibling per-EIP issues for the other unimplemented Amsterdam EIPs exist alongside this one.
Implemented by #2834, merged into dev-upgrade as eae4c6a7f4. Under Amsterdam opSelfdestruct preserves the balance instead of destroying it (core/vm/instructions.go:927) and the state layer reports no burn for it, so the EIP-8246 shape is in place end to end. Closing manually: #2834 targets dev-upgrade, not the default branch, so its Closes #2766 keyword did not take effect.
Activity
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): implement EIP-8246 SELFDESTRUCT burn removal …
feat(core/vm,core/state): EIP-8246 selfdestruct burn removal ethereum…
gzliudan commentedon Oct 28, 2026
Implemented by #2834, merged into
dev-upgradeaseae4c6a7f4. Under AmsterdamopSelfdestructpreserves the balance instead of destroying it (core/vm/instructions.go:927) and the state layer reports no burn for it, so the EIP-8246 shape is in place end to end. Closing manually: #2834 targetsdev-upgrade, not the default branch, so itsCloses #2766keyword did not take effect.[-]core/vm,core/state: implement EIP-8246 SELFDESTRUCT burn removal (amsterdam)[/-][+]implement EIP-8246 SELFDESTRUCT burn removal (amsterdam)[/+]