Vitalik Buterin提出了对Ethereum进行简化的愿景,他将这个计划称为“The Purge”。这一举措的核心是在Dencun硬分叉期间实施EIP-6780,它显著降低了SELFDESTRUCT操作码的功能。这一举措是Ethereum协议简化的更广泛努力的一部分,旨在使其更简单和更安全。
EIP-6780的核心在于大幅减少SELFDESTRUCT操作码的功能,除非合约源自同一笔交易,否则限制了其清除合约和擦除代码和存储的能力。尽管在协议规范中看起来并不是向简化迈出的一大步,但它显著减轻了实现的负担,通过强制执行两个新规则:限制在一个区块内可更改的存储槽的数量,并确保如果合约以代码开始一个事务或区块,它将以相同的方式结束。
在这一变化之前,Ethereum的情况更加混乱。合约可以利用SELFDESTRUCT在一个区块内清除无限数量的存储槽,这给Verkle树的潜在实现带来了复杂性,并使客户端实现需要额外的高效处理代码。合约还可以自我毁灭,然后立即以不同的代码重生,给账户抽象钱包中的交易验证带来了安全隐患。通过EIP-6780的引入,这些挑战得到了解决,简化了Ethereum客户端和其他基础设施的构建。
Ethereum的清理工作正在进行中
Ethereum对简化的追求并不止于EIP-6780。例如,Geth最近通过停止对预合并(工作量证明)网络的支持,裁剪了数千行代码。另一个改进是正式确认“空账户”不再是一个问题,这要归功于EIP-161引入的过去修复。此外,Dencun升级引入了一个18天的存储窗口,大大减少了Ethereum节点的存储需求。
重点还转向预编译 – 这些是专为复杂密码学而设计的特殊合约,标准的EVM代码无法高效处理。尽管它们在启用ZK-SNARK应用方面取得了成功,但像RIPEMD-160、Identity、BLAKE2和MODEXP等某些预编译在今天很少使用。它们的应用有限,再加上它们引入的共识漏洞,导致它们有可能被移除或用EVM代码替代,尽管这将增加燃料开销。
另一个重要的简化步骤是EIP-4444,解决了节点无限期存储所有历史区块的不可持续做法。通过引入blob并设置存储时间,EIP-4444旨在减轻节点的存储负担,使更多用户能够操作节点,并通过扩展增强Ethereum的去中心化。
改革Ethereum的日志机制也正在考虑中。传统日志对于去中心化应用来跟踪链上事件至关重要,但存在效率低下的问题,导致大多数应用程序依赖于集中式服务。提出的解决方案包括废弃布隆过滤器并简化LOG操作码,以促进更高效、去中心化的日志检索方法的发展,利用ZK-SNARKS和可逐步验证的计算。
最后,通过采用SimpleSerialize(SSZ)来彻底改变Ethereum的数据存储和访问方法。这一过渡旨在取代过时的RLP和Merkle Patricia树,承诺提供一系列优势,如更清晰的规范、更短和有界的Merkle证明,以及消除复杂的位扭曲代码。向SSZ过渡代表着统一Ethereum的加密数据结构的重要一步,为未来打下基础,未来可以通过一个单一的、适用于所有Ethereum的SNARK友好的哈希函数。