以太坊协议的未来发展:清理之路(The Purge)以太坊面临的挑战之一是,默认情况下,任何区块链协议的膨胀和复杂性都会随着时间的推移而增加。这主要体现在两个方面:1. 历史数据:任何交易和任何历史时刻创建的账户都需要由所有客户端永久存储,并由任何与网络完全同步的新客户端下载
以太坊协议的未来发展:清理之路(The Purge)
以太坊面临的挑战之一是,默认情况下,任何区块链协议的膨胀和复杂性都会随着时间的推移而增加。这主要体现在两个方面:
1. 历史数据:任何交易和任何历史时刻创建的账户都需要由所有客户端永久存储,并由任何与网络完全同步的新客户端下载。这会导致客户端负载和同步时间随着时间的推移而不断增加,即使链的容量保持不变。
2. 协议功能:添加新功能比删除旧功能容易得多,导致代码复杂性随着时间的推移而增加。
为了使以太坊能够长期维持下去,我们需要对这两种趋势施加强大的反压力,随着时间的推移减少复杂性和臃肿。但与此同时,我们需要保留区块链的一大关键属性:持久性。你可以把NFT、交易调用数据中的情书或包含一百万美元的智能合约放在链上,进入一个山洞十年,出来后发现它仍然在那里等着你阅读和互动。为了让dapp放心地完全去中心化并删除升级密钥,他们需要确信他们的依赖项不会以破坏它们的方式升级——尤其是L1本身。
清理之路 (The Purge) 是以太坊路线图中2023年的一部分,其目标是解决上述问题,在保持连续性的同时,尽量减少或扭转膨胀、复杂性和衰退。
清理之路:主要目标
清理之路的目标主要包括:
1. 减少客户端存储要求:通过减少或消除每个节点永久存储所有历史记录的需求,甚至可能最终声明通过消除不需要的功能来降低协议复杂性。
2. 历史数据过期:这解决了由于历史数据不断累积导致的客户端负载和同步时间增加的问题。
3. 状态数据过期:这解决了即使我们消除了客户端存储历史记录的需求,客户端的存储需求仍将继续增长的问题,因为状态不断增长。
4. 功能清理:这解决了协议随着时间推移变得越来越复杂的问题,其目标是通过删除不必要的旧功能来降低协议复杂性。
历史数据过期
问题:
截止撰写本文时,完全同步的以太坊节点需要大约1.1TB的磁盘空间用于执行客户端,另外还需要几百GB的空间用于共识客户端。其中绝大部分是历史数据:有关历史区块、交易和收据的数据,其中大部分都是多年前的数据。这意味着即使gas限制根本没有增加,节点的大小每年也会增加数百GB。
解决方案:
由于每个块通过哈希链接(和其他结构)指向前一个块,因此对当前达成共识就足以对历史达成共识。只要网络对最新块达成共识,任何历史块、交易或状态(账户余额、随机数、代码、存储)都可以由任何单个参与者提供,并附带Merkle证明,并且该证明允许任何其他人验证其正确性。
实现方式:
- 利用以太坊节点组成的对等网络以分布式方式存储旧数据。
- 使用纠删码来提高稳健性,同时保持复制因子不变。
- 重新使用用于blob数据的纠删码,并将执行和共识块数据也放入blob中。
研究:
- EIP-4444:https://eips.ethereum.org/EIPS/eip-4444
- Torrents和EIP-4444:https://ethresear.ch/t/torrents-and-eip-4444/19788
- Portal网络:https://ethereum.org/en/developers/docs/networking-layer/portal-network/
- Portal网络和EIP-4444:https://github.com/ethereum/portal-network-specs/issues/308
- Portal中SSZ对象的分布式存储和检索:https://ethresear.ch/t/distributed-storage-and-cryptographically-secured-retrieval-of-ssz-objects-for-portal-network/19575
权衡:
- 如何努力使“此前”历史数据可用。
- 最严谨的方法将涉及保管证明,要求每个权益证明验证者存储一定比例的历史记录,并定期通过加密方式检查他们是否这样做。
- 更温和的方法是为每个客户端存储的历史记录百分比设定一个自愿标准。
与路线图其他部分的互动:
减少历史存储要求对于使节点运行或启动变得极其简单至关重要,甚至比无状态更重要。以太坊节点在智能手表上运行且只需几分钟即可设置的愿景只有在同时实现无状态和EIP-4444的情况下才能实现。
状态数据过期
问题:
即使我们消除了客户端存储历史记录的需求,客户端的存储需求仍将继续增长,因为状态不断增长:账户余额和随机数、合约代码和合约存储。用户可以支付一次性费用,永远给现在和未来的以太坊客户端带来负担。
解决方案:
引入一种机制,使状态对象随着时间的推移自动过期,但要确保其效率、用户友好性和开发者友好性。
实现方式:
- 部分状态过期:将状态分成块,每个人都永久存储“顶层映射”,其中哪些块是空的或非空的。每个块中的数据仅在最近访问过的情况下才会存储,并提供“复活”机制。
- 基于地址周期的状态过期:使用一个不断增长的状态树列表,并在每个周期添加一个新的空状态树,较旧的状态树是固定的。完整节点只需要存储最近的两棵树。
研究:
- 区块链租用费:https://github.com/ethereum/EIPs/issues/35
- Regenesis:https://ethresear.ch/t/regenesis-resetting-ethereum-to-reduce-the-burden-of-large-blockchain-and-state/7582
- 以太坊状态大小管理理论:https://hackmd.io/@vbuterin/state_size_management
- 无状态和状态过期的几种可能路径:https://hackmd.io/@vbuterin/state_expiry_paths
- 部分状态过期提案EIP-7736:https://eips.ethereum.org/EIPS/eip-7736
- 地址空间扩展文档原始提案:https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485
- Ipsilon评论:https://notes.ethereum.org/@ipsilon/address-space-extension-exploration
- 博客文章评论:https://medium.com/@chaisomsri96/statelessness-series-part2-ase-address-space-extension-60626544b8e6
- 如果我们失去碰撞阻力会发生什么:https://ethresear.ch/t/what-would-break-if-we-lose-address-collision-resistance/11356
权衡:
- 如何在状态过期方案中平衡效率、用户友好性和开发者友好性。
- 如何解决地址空间扩展和收缩的难题,以确保向后兼容性。
与路线图其他部分的互动:
执行状态到期可能會使从一种状态树格式到另一种状态树格式的转换变得更容易,因为不需要转换过程。
功能清理
问题:
协议随着时间的推移变得越来越复杂,这会降低安全性、可访问性和可信中立性。
解决方案:
删除不必要的旧功能,降低协议复杂性。
实现方式:
- 删除SELFDESTRUCT操作码。
- RLP→SSZ转换。
- 删除旧交易类型。
- LOG改革。
- 最终取消信标链同步委员会机制。
- 数据格式协调。
- 删除信标链委员会。
- 删除混合字节序。
- 简化gas机制。
- 删除预编译。
- 删除gas可观察性。
- 静态
声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!(Email:[email protected])