EIP-6780
EIP-6780 是一项以太坊改进提案,它限制了 SELFDESTRUT 操作码的功能。该操作码之前允许合约自毁并擦除其代码和存储。现在,它仅适用于在同一交易中创建的合约。这确保了更清晰、更易于管理的状态,增强了长期稳定性和安全性,同时仍然允许合法使用该功能。 [2][3]
概述
EIP-6780 - “仅在同一交易中 SELFDESTRUCT” 修改了 SELFDESTRUCT 操作码的功能,为未来 以太坊 应用程序中使用的 Verkle Tree 架构做准备。SELFDESTRUCT 操作码是一个强大的工具,允许智能合约删除自身,并将剩余资金发送到指定的地址。这类似于简化以太坊的内部管理实践,以实现更顺畅的网络运行。[1]
目前,以太坊应用程序使用 Merkle Tree 架构,并且 SELFDESTRUCT 操作码可用于对帐户状态进行重大更改,例如删除代码和存储。但是,当未来的以太坊应用程序中使用 Verkle Tree 架构时,将不容易修改或删除帐户,因为 Verkle Tree 架构将每个帐户存储在与根帐户不连接的不同帐户密钥中。 因此,EIP-6780 提出了对 SELFDESTRUCT 操作码功能的修改。根据 EIP-6780,修改后的 SELFDESTRUCT 操作码在使用时将不再具有更改或删除帐户的能力,并且仅用于将 ETH 转移给调用者,除非在 智能合约 创建的同一交易中调用 SELFDESTRUCT。
主网上存在一些合约,目前使用 SELFDESTRUCT 来限制谁可以与合约发起交易。通过在同一交易中销毁合约,这样就没人有机会调用它。[5]
虽然 EIP-6780 没有直接简化规范,但它通过以下方式显着改进了实现:
- 限制每个区块的存储编辑:这有助于 Verkle 树的实现并简化客户端开发。
- 保证代码持久性:这加强了帐户抽象钱包中的交易验证,防止 DoS 漏洞。
- 这些新的不变性为进一步简化铺平了道路,可能导致将来完全删除 SELFDESTRUCT。[3]
作者
- Guillaume Ballet
- Vitalik Buterin
- Dankrad Feist