联系hashgameCONTACT hashgame
地址:广东省广州市
手机:13988889999
电话:020-88889999
邮箱:admin@qq.com
查看更多
Rhashgamehashgame
你的位置: 首页 > hashgame

HASH GAME - Online Skill Game ET 300Vitalik:以太坊协议可能的未来—ThPurge

发布时间:2025-03-17 19:32:12  点击量:

  HASH GAME - Online Skill Game GET 300

HASH GAME - Online Skill Game GET 300Vitalik:以太坊协议可能的未来—The Purge

  按:本文为以太坊创始人Vitalik近期发表的“以太坊协议的未来发展”系列文章的第五部分“Possible futures of the Ethereum protocol, part 5: The Purge”,第四部分见“Vitalik:以太坊的未来The Verge”。第三部分见“Vitalik:以太坊The Scourge阶段的关键目标”,第二部分见“Vitalik:The Surge阶段以太坊协议应该怎么发展”,第一部分见“以太坊PoS还有哪些可以改进”。以下为第五部分全文:

  为了使以太坊能够长期维持下去,我们需要对这两种趋势施加强大的反压力,随着时间的推移减少复杂性和臃肿。但与此同时,我们需要保留区块链的一大关键属性:持久性。你可以把 NFT、交易调用数据中的情书或包含一百万美元的智能合约放在链上,进入一个山洞十年,出来后发现它仍然在那里等着你阅读和互动。为了让 dapp 放心地完全去中心化并删除升级密钥,他们需要确信他们的依赖项不会以破坏它们的方式升级——尤其是 L1 本身。

  如果我们专心致志,在这两种需求之间取得平衡,在保持连续性的同时尽量减少或扭转膨胀、复杂性和衰退,是绝对可能的。生物体可以做到这一点:虽然大多数生物体会随着时间推移而衰老,但幸运的是少数生物体不会衰老。即使是社会系统也可以拥有极长的寿命。在一些情况下,以太坊已经取得了成功:工作量证明已经消失,SELFDESTRUCT 操作码基本消失,信标链节点已经存储旧数据最多六个月。以更普遍的方式为以太坊找到这条道路,并朝着长期稳定的最终结果迈进,这是以太坊长期可扩展性、技术可持续性甚至安全性的终极挑战。

  这为我们存储历史记录的方式开辟了很多选择。一个自然的选择是每个节点仅存储一小部分数据的网络。这就是 torrent 网络几十年来的工作方式:虽然网络总共存储和分发数百万个文件,但每个参与者只存储和分发其中的几个。也许违反直觉,这种方法甚至不一定会降低数据的稳健性。如果通过降低节点运行成本,我们可以实现一个拥有 100,000 个节点的网络,其中每个节点随机存储 10% 的历史记录,那么每条数据将被复制 10,000 次 —— 与每个节点存储所有内容的 10,000 个节点网络的复制因子完全相同。

  剩下的主要工作涉及构建和集成一个具体的分布式解决方案来存储历史记录 —— 至少是执行历史记录,但最终也包括共识和 blob。最简单的解决方案是 (i) 简单地引入现有的 torrent 库,以及 (ii) 一个名为 Portal 网络的以太坊原生解决方案。一旦引入其中任何一个,我们就可以启用 EIP-4444。EIP-4444 本身不需要硬分叉,但它确实需要一个新的网络协议版本。因此,同时为所有客户端启用它是有价值的,因为否则客户端可能会因连接到其他节点而出现故障,这些节点期望下载完整的历史记录但实际上并没有实现。

  无需满足这些目标,问题也很容易解决。例如,您可以让每个状态对象还存储一个计数器来记录其到期日期(可以通过销毁 ETH 来延长,这可以在读取或写入时自动发生),并有一个循环遍历状态以删除过期状态对象的过程。但是,这引入了额外的计算(甚至存储要求),并且肯定不能满足用户友好性要求。开发人员也很难推理涉及存储值有时重置为零的极端情况。如果您将到期计时器设为合约范围内,这在技术上使开发人员的工作变得更容易,但会使经济变得更加困难:开发人员必须考虑如何将持续的存储成本“转嫁”给他们的用户。

  这些提案之间的主要区别是:(i)我们如何定义“最近”,以及(ii)我们如何定义“块”?一个具体的提案是 EIP-7736,它建立在为 Verkle 树引入的“茎叶”设计之上(尽管与任何形式的无状态树兼容,例如二叉树)。在这种设计中,彼此相邻的标头、代码和存储槽存储在同一个“茎”下。存储在茎下的数据最多可以是 256 * 31 = 7,936 字节。在许多情况下,账户的整个标题和代码以及许多密钥存储槽都将存储在同一个主干下。如果给定主干下的数据在 6 个月内未被读取或写入,则不再存储数据,而是只存储对数据的 32 字节承诺(“存根”)。未来访问该数据的交易将需要“复活”数据,并提供与存根核对的证明。

  由于激励因素,这更加棘手:攻击者可以通过将大量数据放入单个子树并每年发送单个交易来“更新树”,从而迫使客户端永久存储大量状态。如果使更新成本与树大小成比例(或更新持续时间与树大小成反比),那么有人可能会通过将大量数据放入与他们相同的子树中来伤害另一个用户。可以尝试通过根据子树大小使账户间隔动态化来限制这两个问题:例如,每个连续的 2^16 = 65536 个状态对象可以被视为一个“组”。然而,这些想法更复杂;基于词干的方法很简单,并且可以协调激励措施,因为通常词干下的所有数据都与同一个应用程序或用户相关。

  基于地址周期的设计是解决此问题的最佳方法。我们有一个不断增长的状态树列表,而不是用一棵状态树存储整个状态,并且任何读取或写入的状态都会保存在最新的状态树中。每周期(想想:1 年)添加一次新的空状态树。较旧的状态树是固定的。完整节点只需要存储最近的两棵树。如果状态对象在两个周期内未被触及并因此落入过期树,它仍然可以被读取或写入,但交易需要为其证明 Merkle 证明 —— 一旦这样做,副本将再次保存在最新的树中。

  使这一切对用户和开发人员友好的一个关键思想是地址周期的概念。地址周期是地址的一部分的数字。一个关键规则是,地址周期为 N 的地址只能在周期 N 期间或之后读取或写入(即当状态树列表达到长度 N 时)。如果您要保存新的状态对象(例如,新合约或新的 ERC20 余额),如果您确保将状态对象放入地址周期为 N 或 N-1 的合约中,那么您可以立即保存它,而无需提供之前没有任何内容的证明。另一方面,对旧地址周期中的任何状态添加或编辑都需要证明。

  一个重要的点是,无论是否实施依赖于地址格式更改的状态到期方案,最终都必须解决地址空间扩展和收缩的难题。今天,大约需要 2^80 个哈希才能产生地址冲突,对于资源极其丰富的参与者来说,这种计算负荷已经是可行的:GPU 可以进行大约 2^27 个哈希,因此运行一年可以计算 2^52 个,因此世界上所有约 2^30 个 GPU 可以在约 1/4 年的时间内计算出冲突,而 FPGA 和 ASIC 可以进一步加速这一过程。未来,此类攻击将对越来越多的人开放。因此,实施完整状态到期的实际成本可能没有看起来那么高,因为无论如何我们都必须解决这个非常具有挑战性的地址问题。

  安全性、可访问性和可信中立性的关键先决条件之一是简单性。如果协议美观且简单,则出现错误的可能性就会降低。它增加了新开发人员能够加入并使用它的任何部分的机会。它更有可能是公平的,并且更容易抵御特殊利益。不幸的是,协议与任何社会系统一样,默认情况下会随着时间的推移变得更加复杂。如果我们不想让以太坊陷入日益复杂的黑洞,我们需要做以下两件事之一:(i)停止进行更改并使协议僵化,(ii)能够实际删除功能并降低复杂性。中间路线,即对协议进行较少的更改,同时随着时间的推移至少消除一点复杂性,也是可能的。本节将讨论如何减少或消除复杂性。

  一个基本已经完成的例子,可以作为如何处理其他问题的蓝图,即删除 SELFDESTRUCT 操作码。SELFDESTRUCT 操作码是唯一可以修改单个块内无限数量的存储槽的操作码,需要客户端实现更大的复杂性以避免 DoS 攻击。该操作码的最初目的是实现自愿状态清除,允许状态大小随着时间的推移而减少。实际上,很少有人最终使用它。该操作码被削弱,只允许在 Dencun 硬分叉中在同一笔交易中创建的自毁账户。这解决了 DoS 问题,并允许显著简化客户端代码。将来,最终完全删除该操作码可能是有意义的。

  进行这种功能简化的主要权衡是 (i) 我们简化的程度和速度与 (ii) 向后兼容性。以太坊作为一条链的价值在于它是一个平台,您可以在其中部署应用程序并确信它在多年后仍能正常工作。与此同时,也有可能将这一理想发挥得太过,用威廉·詹宁斯·布莱恩的话来说,“将以太坊钉在向后兼容性的十字架上”。如果整个以太坊中只有两个应用程序使用某个功能,其中一个多年来没有用户,而另一个几乎完全没有使用,并且总共获得了 57 美元的价值,那么我们应该删除该功能,如果需要,可以自掏腰包向受害者支付 57 美元。

【返回列表页】

顶部

地址:广东省广州市  电话:020-88889999 手机:13988889999
Copyright © 2018-2025 哈希游戏(hash game)官方网站 版权所有 非商用版本 ICP备案编: