EIP-8246: Remove SELFDESTRUCT Burn

Discussion topic for EIP-XXXX

This is a small follow-up to EIP-6780.

EIP-6780 already removed the more common SELFDESTRUCT burn behavior, but it left one last corner case: contracts created in the same transaction can still burn ETH, either by selfdestruct(self) or in a case where they receive ETH again later in the same transaction and then get deleted at finalization.

The problem is that this special case is basically unused, but it still forces special handling in clients, specs, and tests.

I checked mainnet usage with a full replay up to about block 24.95M. The result is:

  • 54 pre-Cancun real self-burns,
  • 2 post-Cancun real burns through the remaining same-tx path,
  • 58 post-Cancun broken-burn attempts, all from one contract, all attempting to burn 1 wei, and all already no-ops under EIP-6780,
  • 0 deferred finalization burns.

So the actual remaining burn behavior is extremely rare, and the only notable post-Cancun activity besides the 2 real burns is one contract repeatedly probing the already-broken path.

The idea here is simple: remove the last path where SELFDESTRUCT can silently destroy ETH, instead of keeping this odd special case forever.

As a side effect, this also removes the last EVM mechanism by which ETH can leave total supply.

Update Log

  • yyyy-mm-dd: initial draft

External Reviews

None as of 2026-05-01.

Outstanding Issues

None as of 2026-05-01.

1 Like

SELFDESTRUCT Burn Events on Ethereum Mainnet

A scan of every block from genesis to ~tip (~24.95M blocks) using an instrumented Erigon EVM that records SELFDESTRUCT-related ETH-destruction events.

Event types

The instrumentation classifies four scenarios:

Tag Meaning Era
BURN (just_created=pre6780) Pre-Cancun: contract calls SELFDESTRUCT(self) with positive balance. Account was always destroyed at tx-end β†’ balance burned. < block 19,426,587
BURN (just_created=true) Post-Cancun: contract created in the same tx calls SELFDESTRUCT(self). EIP-6780 still destroys it β†’ balance burned. The Optimism Burn.sol idiom. β‰₯ block 19,426,587
BROKEN-BURN Post-Cancun: contract calls SELFDESTRUCT(self) but was not created in the same tx. EIP-6780 turns this into a no-op β†’ no burn. β‰₯ block 19,426,587
AFTER-BURN Tx-end finalization destroys a selfdestructed contract whose balance is non-zero (i.e. ETH arrived after SELFDESTRUCT). any era

Caveat: events are logged at opcode time, before tx outcome is known. A small number of entries may correspond to reverted transactions (filterable post-hoc via eth_getTransactionReceipt).


Summary

Type Count Total burned
BURN (pre-Cancun) 54 5.587 ETH
BURN (post-Cancun, just_created) 2 1.529 ETH
BROKEN-BURN (post-Cancun broken) 58 58 wei (1 wei Γ— 58, single contract)
AFTER-BURN 0 β€”

No AFTER-BURN events ever. The β€œETH arrives at a self-destructed account between SD and tx-end” pattern, which Erigon already wires via BalanceDecreaseSelfdestructBurn, has never fired on mainnet across 24.95M blocks.


Pre-Cancun BURN burns

54 distinct events, 49 unique addresses (one repeat-burner). Total burned: 5.587 ETH.

Top burners by aggregate balance

Address TXs Total burned (ETH)
0xad3b67bca8935cb510c8d18bd45f0b94f54a968f 5 3.7355
0xdc8a6ef9a8a4114773e806dc24bb8e7b6f3d92eb 1 0.1111
0x63caa3df88f1732c8edda0c24e0d8e9cbc81eff1 1 0.1610
0x4a20047eea10806907c66da915978c11eccb015f 1 0.1000
0xcea99a910ab4a50225e93b9b96f53ae8f4ceb92d 1 0.1000
0x7b6b181eb1c8ae10efacefea640ac160d2a5aac6 1 0.0991
0xc51bad9fc666adf6e111926452421809f0ddb8b6 1 0.0896
0x0063ef49883cee9b84b164a4ac7d5d4dbea61c99 1 0.0398
0xf1392024d8e132f2ef4d3f4df53581bd65509f3f 1 0.0385
0xe5449e9a4f31c38d926b76f76571e5d0b143ef5d 1 0.0300

Recurring self-burner β€” 0xad3b67bca8935cb510c8d18bd45f0b94f54a968f

5 events across pre-Cancun β†’ Cancun-ish (Sep 2023 β†’ Mar 2024):

Block Tx Balance (wei)
18,272,451 0x9a4ab67842837330172f8ea941ed28a6d9048389a1081539dbf955f7e6956432 12,328,015,721,895
18,463,574 0x6b307f4fcb93cc6100c77b69aa465994545dac160269b4d973233f7fb90ede4f 9,472,928,213,301,832
18,562,839 0xaca7f8d936ecef3acd2b5c5b8c6f990f9e782fe77b6d2f6d0fa568d2fbfffaf2 305,631,223,625,230
18,725,959 0xe44e3c02b5ca32ace158e2f7cac68e4d846d0ce05c5d2b803da2e9b387ce77e4 2,496,441,496,821,259
19,420,875 0x61915de12a69fabaf458e54621fe046300a7fc789ff2d9d5196b1fe1c681518e 3,723,261,702,728,140,777

The block 19,420,875 burn is 3.72 ETH β€” the largest single self-burn in our dataset. Less than 6,000 blocks before Cancun. Etherscan: https://etherscan.io/address/0xad3b67bca8935cb510c8d18bd45f0b94f54a968f

Same-block clusters (likely batch operations)

Block Burns Notes
8,255,796 4 Same tx 0xcb2567b6e736... β€” single batch tx hitting 4 contracts
8,255,780 3 Same tx 0x0f8df0f46a00...
8,255,832 3 Same tx 0x721546c6f5f0...
18,263,721 3 Three separate txs, each a 1-wei burn (test pattern)

Full pre-Cancun list

54 events sorted by block
Block Address Tx Balance (wei)
1,605,122 0x1f78775c8260df084f9a0e5fbdf06487b875ac4d 0xa070eb02b338e5ba164da035fb3572904b05e2b4c9a46ba994fd3d6739f8fb07 2,000,000,000,000,000
2,857,542 0x351619539ea6739f67a8765a66d428a4ba005443 0x5bd5c8294b302b2ebacd60cd96509c3da1c674982683d981b0beb734c57b9d24 1
2,857,690 0x0403b5665eb8221ebd35ba3a51795643a70456d6 0x7d6672f44c24b4df794745620d87d7fe793a00cf1a08d172b38929d41f241859 1
2,905,200 0x07c181b89a379bb2dc612f2712ed0bb4c2d76bf1 0x91f52e1e529e09bb4325a1b57141eee55c64c2b350d65510da5ce4a42afe8428 1
4,227,075 0x4a20047eea10806907c66da915978c11eccb015f 0x99ff1eddd81c3e61790f82aeb46b0ec10780892da63be6a7b7ef00d6a70e4faf 100,000,000,000,000,000
5,064,729 0x034e01e44b6671fd5899623e3544c94d43fff433 0xd2befe3398bd56c54e4d57c97c199aa23fdc1297a4abc4b511ca6066f23a1154 1
5,149,568 0x7b6b181eb1c8ae10efacefea640ac160d2a5aac6 0x8b72f8ca16b77dbd8dc2f1f2a5b0340d50701e21ccb5152d54fdc4d6eeeb3591 99,058,928,000,000,000
5,236,978 0xe5449e9a4f31c38d926b76f76571e5d0b143ef5d 0x1b16ce851353f714bebb87b1b735f3d9fba4fe7e7b1e19016637b978fb1a1cb7 30,000,000,000,000,000
5,331,499 0x8905c87b11507a243bbf57a17718d55f4c8a497c 0xffa71a7485ffaae208860a15d0910fabec8fe9a40ee907665257bb57c7ab831b 42
6,185,231 0x47440b537e3df8090134c79731773ad584319ed5 0xa56e813dc76ed8f955310a62b018f9fc9412f1fffe2ef1dc834987755eafcf49 6,966,444,079,057,750
7,280,254 0x000000000073b6eeb97a1b007fa833561b10be1e 0x9606506b68766f0d77212d044ac3f21f5a1f30d0b4838ebff561f9fb01874b3b 1
7,393,637 0x91d6e0901d466be83eaaf10b7f522c0a08acf83f 0x6bf7defd6734d48a8bd0aa342b2a8251ad61ed209677d67135bd517fd103befb 385,000,000,000
7,449,010 0x0526aacd250c3a3afabf7c28d50fb9f1e00e2d64 0x3d498e05ad7bccb3cf60e6cf29a36206f1f771de83cd93bdabb619aad54d879c 998,001,000,000,000
7,725,234 0xdc8a6ef9a8a4114773e806dc24bb8e7b6f3d92eb 0x04f65f3bc8cd7f20558fc8d7228b857c6346a7badf51513c1f2d88c7d1b36b55 111,075,000,000,000,000
7,839,789 0x0e532f97012693945bc073068a7d94501fc37dc5 0xb45cfb50031c368ec29bf63d0219efd3f09664a9afd2767ef02f17db094091a4 1,133,851,125,347,242
8,183,094 0xaa84c2f2531b8fde1913b5a260af514797b4b751 0x113287e858eb307ef10d6df36d4d169dbbb4d00182f50ae2aad3f2c53ab401ac 1
8,255,780 0x60b93a05d59e9aa540214cd64c8e3ccfe1720ea0 0x0f8df0f46a00240f3bc97f16470bad3d75fe3af128fd15120b9f2d932036ad5c 2
8,255,780 0x81a4b448c0605fb491f1b0870735521cb692a110 (same tx) 1
8,255,780 0xc62c614df45b59fd7076e571b350df059bdd8645 (same tx) 3
8,255,796 0x35d82bf3e304f48d6c6fb7a4f1e93ffe6aba9cf2 0xcb2567b6e736a94bb5b2cc77b66708c98b327228d61def5fefe2cdcc2599232a 2
8,255,796 0x724b842bf9f5b86b031ce9086214f4ca023d7d20 (same tx) 3
8,255,796 0x9291e582dc61194dc492264cd72c0aa560023125 (same tx) 1
8,255,796 0xe921717a84a600752ac2480d761808c1eb2a6b96 (same tx) 1
8,255,832 0x1497392a8f94933ffc08baa9ee1f9e5b598e4dee 0x721546c6f5f0de5309c215e4e5f65493eee9f96bebf023becc1d07cafd345ac4 2
8,255,832 0x69cf39c045e07a7f24f56517ceda566d60508a25 (same tx) 1
8,255,832 0x8c6ecebca681aafec16e1442452fbd597247f28f (same tx) 1
8,708,043 0x0c62f6b6a46f049e9ac59bf3bd4f6d1a6c3d45c5 0x12b56c95fab7d9f04ea76e0381a59edc80dafa99a2c207784ab0ea84611ab167 15,000,000,000,000,000
8,915,876 0x0d6405e84bde6744ccd936ea6b936458aa6499ed 0xebfc570cd8a2914c13ae127ec8a46d788a2a4d7733e97ae5a2c218972d7f033c 2,829,922,277,722,000
8,927,585 0x33d95bf689fc509bf16f86f78e7d853f68c5a601 0xf7910c204f8a3a6eb8c4590421f993349276b5d0a98c1fe1eda3e90498ee83e5 9,980,039,920,159,000
8,927,894 0x0f7ddc56b7727d7031d9cf5e48bfc0575881f9bd 0x56ac5ceaf659aae05a5783529d2c70dfbc161fbef90999edb5cff4e83fec96e6 19,940,179,461,615,000
8,927,909 0x0063ef49883cee9b84b164a4ac7d5d4dbea61c99 0x4b0b25732bb40465c8619ff0083452bc8c077704762b27ef0d69c3b689050dbf 39,840,637,450,199,000
8,928,110 0xc51bad9fc666adf6e111926452421809f0ddb8b6 0xd339589c3431a53107f8a55618250c099d20d8608bdbd850e6524c6150c1db57 89,552,238,805,970,000
8,976,947 0xf1392024d8e132f2ef4d3f4df53581bd65509f3f 0x91e1848d4c94eb634df22c5619b2af93630ba3ee020f076a2358cd17bcf17c2b 38,502,835,984,095,000
9,463,100 0xf43f9358ddd12a6d264db1ff4eb2894dc83cc057 0x07e0c2889b013bf76a1eca7a584098f96637740bd4d980822b8563442b66fb06 1
10,628,145 0xa73747cbc0a89c3d88ff7e388d0399e7fa84a424 0xb66faf79fda97d86f30a8a789340d7ca00a433c1063082811017c56f24566bd1 1
10,628,390 0xf2bf605070af4e7e1b0263d65487353d8a08cfc2 0xfa31fa18624bee64c103cad6f5cfcac4f985d39f23b21e2e4db0a3fccc3d2ccb 10,000,000,000,000,000
12,584,753 0x03d80c3e137fdcfb8b40b2e49def40a36b4bf76e 0x0b2afda602766db97cca8810485d233e27a9a73d5c37f7a387dc6b8e12121790 999,000,000,000,000,000
12,716,219 0xc326af5d2699b6554b5ed11cfc5829e373ae6284 0x5f711ae6b12f6c5ffdcda0d14d71f7fbd25b8f0d95a3572a10b1d75b6cf868a6 999,000,000,000,000
14,822,395 0x8c65eab6760b7d942b2db9cf8ef800d50d6cdf68 0x55746d11fd163c599d7288eab42d6beb20cddfb39696da35cb57231f761ae51c 1,000,000,000,000
15,647,577 0x093a47cf28d56c3bc34f96f933ad7a1f0a28c792 0x3f508c22450ce3dcdc292f2ab47b52cb9188a44fdd86e02d3e80d08a66be7cc3 11,451,419,198,100,000
15,976,465 0xbe78d705f18b7230adae1804ef313a86e9f6b0bb 0x3bab7b8cfaa3ec87438474cce00404fab02eae8cb99a956e237564bc52f15ad5 100,000
16,520,637 0xcea99a910ab4a50225e93b9b96f53ae8f4ceb92d 0x47faad1f417a2495ee2cccf067da3f548a1b2570f50eaa61767618818da17d3b 100,000,000,000,000,000
16,629,253 0x63caa3df88f1732c8edda0c24e0d8e9cbc81eff1 0xe017c4904259edc606b7cfc9d711d1abedfd841dfe5d15e2dc4feb90ca806470 161,000,000,000,000,000
17,845,523 0x000000000dc840d0283e62e17aeebf1e21cf3450 0xec1fecab0d71fe9ad08b3b88f769d1aad1a7413075b6cb3840bd5fbdfd617d36 13,624,058,815
18,263,721 0x5f515f6c524b18ca30f7783fb58dd4be2e9904ec 0x6a1735d522fa402167e0e69e390d2dfb210b679e718312dba608776d1195cb94 1
18,263,721 0x8d8404f8cca4c8834ca3cab1e54887ae47724bee 0x4599e7fdc3c282c4fd557181223587c3055300adcfbba7f35e6288f0e2ae9686 1
18,263,721 0xe37e799d5077682fa0a244d46e5649f71457bd09 0x90c14e76a2b061929ae7b6f79c4f36249f8de9a2046422912375dff073f4659d 1
18,272,451 0xad3b67bca8935cb510c8d18bd45f0b94f54a968f 0x9a4ab67842837330172f8ea941ed28a6d9048389a1081539dbf955f7e6956432 12,328,015,721,895
18,463,574 0xad3b67bca8935cb510c8d18bd45f0b94f54a968f 0x6b307f4fcb93cc6100c77b69aa465994545dac160269b4d973233f7fb90ede4f 9,472,928,213,301,832
18,562,839 0xad3b67bca8935cb510c8d18bd45f0b94f54a968f 0xaca7f8d936ecef3acd2b5c5b8c6f990f9e782fe77b6d2f6d0fa568d2fbfffaf2 305,631,223,625,230
18,725,959 0xad3b67bca8935cb510c8d18bd45f0b94f54a968f 0xe44e3c02b5ca32ace158e2f7cac68e4d846d0ce05c5d2b803da2e9b387ce77e4 2,496,441,496,821,259
18,820,882 0xb01f8f528702d411d24c9bb8cc0e2fff779ec013 0x8e8f7d58b0a6666dc59c37799fc48876327c5f1785530045e94d4395444dc8c6 2,467,839,662,764,357
19,420,875 0xad3b67bca8935cb510c8d18bd45f0b94f54a968f 0x61915de12a69fabaf458e54621fe046300a7fc789ff2d9d5196b1fe1c681518e 3,723,261,702,728,140,777

Post-Cancun broken burns β€” BROKEN-BURN

58 events, all from a single contract: 0x6550f9a4bd878a384625f62ad5aab1fe7c3412de.

Every event burns exactly 1 wei, all spread across ~200k blocks just after Cancun (block 19,481,732 β†’ 19,680,384, March 21 β†’ April 2024). This contract repeatedly invokes selfdestru ct(self) on itself but is not created in the same tx β€” under EIP-6780 these are no-ops. Reads as a probe / regression test running against post-Cancun mainnet.

Etherscan (shows every selfdestruct call from this contract): https://etherscan.io/address/0x6550f9a4bd878a384625f62ad5aab1fe7c3412de

No other address triggers BROKEN-BURN in our dataset. The post-Cancun world is, in practice, free of this pattern modulo this single probe.


Post-Cancun real burns β€” BURN (just_created=true)

The EIP-6780-compatible burn path: contract created in same tx + immediate SELFDESTRUCT(self). Optimism’s Burn.sol library uses exactly this pattern; on mainnet only 2 events in
the entire post-Cancun range:

Block Tx Address Balance
24,101,526 0xed66125771c89d68a953e078c7d48168d38c6979b24cfa21d0d2c9f5f46e596d 0x5768c6379f70d1fa4b12a5d0de940f35ebadd425 1.5206 ETH
24,297,537 0x02ab8696abceec2b9b5bc158e108672f545cc759f8c69d9b0971e2fa52462d6b 0xc326af5d2699b6554b5ed11cfc5829e373ae6284 0.00845 ETH

Note: the second address 0xc326af5d... also appears in the pre-Cancun dataset at block 12,716,219 (0.000999 ETH burn) β€” a contract that has been used for self-burns on both sides o
f the fork.

The first event at block 24,101,526 burns 1.52 ETH (the only β€œlarge” post-Cancun real burn). Worth verifying status via tx receipt β€” opcode-time logging means a reverted tx would still a
ppear here.


AFTER-BURN β€” deferred burns at tx end

Zero events ever recorded.

The pattern (a contract selfdestructs, then ETH arrives at the now-marked-for-destruction address later in the same tx, which then gets burned at tx-end finalization) is theoretically
possible but does not appear to have happened on Ethereum mainnet across all 24.95M blocks executed.

Erigon already wires the BalanceDecreaseSelfdestructBurn tracing hook for exactly this case (in IntraBlockState.updateAccount), so the absence of events is robust β€” it’s not an instr
umentation gap.


Method

Custom Erigon build with three log points:

  1. opSelfdestruct (pre-Cancun handler) β€” emit on self == beneficiary && balance > 0.
  2. opSelfdestruct6780 (post-Cancun handler) β€” classify as BURN (newContract case) or BROKEN-BURN (otherwise) per ClassifySDBurn.
  3. IntraBlockState.updateAccount β€” emit AFTER-BURN alongside the existing BalanceDecreaseSelfdestructBurn hook firing site.

Replay across the entire 0 β†’ 24.95M block range via integration stage_exec_replay with 16 parallel workers. Read-only against frozen snapshots; total replay wall-clock ~50 hours on Zen
3.

The instrumentation patch lives on a throwaway erigon branch β€” see PR https://github.com/erigontech/erigon/pull/20828.

Known caveats

  • Reverted transactions: opcode-time logging means a tx that calls SELFDESTRUCT and then reverts still produces a log line. Filter the dataset against eth_getTransactionReceipt(tx). status for canonical burned-only views.
  • Duplicate entries from earlier instrumentation runs (zero tx-hash entries before the fix in historical_trace_worker.go) are excluded from the counts above.

Context: EIP-7708 (ETH transfers as logs)

EIP-7708 (active from the Amsterdam fork onward in Erigon) emits a synthetic
Transfer log for every EVM-level ETH movement and a Burn log for ETH that
leaves circulating supply. Mapped onto the events in this study:

Event EIP-7708 emits a log?
BURN (real burn at SELFDESTRUCT time, post-Cancun newContract self-burn) :white_check_mark: Burn log emitted by opSelfdestruct6780
AFTER-BURN (deferred burn at tx-end finalization with non-zero residual) :white_check_mark: Burn log emitted by LogSelfDestructedAccounts post-tx
BROKEN-BURN (post-Cancun no-op self-SD) :cross_mark: no log β€” nothing actually moves or disappears

Pre-Cancun BURN events are in scope of the same opcode path but EIP-7708 only
activates from Amsterdam onwards, so historical pre-Cancun burns wouldn’t be
retroactively logged.

Total post-Cancun events EIP-7708 would log as Burns

In the post-Cancun range observed by this study (block 19,426,587 β†’ ~24.95M):

  • 2 BURN events
  • 0 AFTER-BURN events
  • Total: 2 EIP-7708 Burn log emissions would have occurred (had Amsterdam been active throughout post-Cancun history).

The 58 BROKEN-BURN events from 0x6550f9... are explicitly not counted β€”
EIP-7708 (correctly) treats them as no-ops and emits nothing for them.

2 Likes