This thread is to discuss EIP-6780, which is another attempt at getting rid of the SELFDESTRUCT
opcode in order to pave the road for statelessness.
This particular EIP preserves the opcode when SELFDESTRUCT
is executed in the same transaction that a contract was deployed. This is possible because all the created storage can be held in memory during that time, so the problem of not knowing which storage to delete when it is dispersed as described in the current verkle implementation does not occur.
The reason for this is that contracts exist on mainnet that currently use SELFDESTRUCT
to limit who can initiate a transaction with a contract – by destroying the contract in the same transaction so nobody has a chance to call it (one example of such a usage is Pine finance. This can be preserved using EIP-6780.
A previous attempt to preserve more functionality was EIP-6046, which however is deemed unsafe because it does not clear storage on SELFDESTRUCT
and some contracts do depend on it. There is also EIP-6190, which implements full SELFDESTRUCT
functionality in a stateless-compatible way using contract versioning. However, it is currently judged to be more complex to implement then the variant proposed here.