以太坊协议可能的未来 1:The Merge
原文:https://vitalik.eth.limo/general/2024/10/14/futures1.html
特别感谢 Justin Drake、Hsiao-wei Wang、@antonttc、Anders Elowsson 和 Francesco 的反馈和审阅。
最初,“合并”(“The Merge”)指的是以太坊协议自发布以来最重要的事件:期待已久也来之不易的由工作量证明(PoW)向权益证明(PoS)过渡的转变。如今,以太坊的权益证明系统已稳定运行将近两年,在稳定性、性能和避免中心化风险方面表现得非常出色。然而,权益证明仍然存在一些需要改进的重要领域。
我在 2023 年的路线图可以分成几个部分:改进技术特性,例如稳定性、性能和对小型验证者的可访问性,以及为了应对中心化风险而作出的经济变革。前者成为了 The Merge 的主题,而后者成为了 The Scourge 的一部分。
这篇文章将重点讨论 “合并” 部分:权益证明的技术设计还有哪些可以改进的地方,实现这一目标的途径有哪些?
这不是一份关于权益证明可行项的详尽清单,而是一份值得被积极考虑的想法清单。
The Merge: 关键目标
本文中
目前,需要 2-3 个 epoch(15 分钟左右)才能最终对一个区块达成确定性(finalize),且需要 32 ETH 才能成为质押者。最初这是为了在以下三个目标之间取得平衡而做出的妥协:
这三个目标是相互冲突的:为了实现经济最终确定性(意味着:攻击者需要销毁大量 ETH 才能回滚已经最终确定的区块),每次最终确定时,每个验证者都需要签署两条消息。因此,如果存在许多验证者,要么需要很长时间来处理所有签名,要么就需要非常强大的节点来同时处理所有签名。
注意:这一切都取决于以太坊的一个关键目标:确保即使以太坊被攻击,攻击者也需要支付高昂的成本才能成功。这就是 “经济最终性” 的含义。如果我们没有这个目标,那么我们可以通过随机选择一个委员会(如同 Algorand 的做法)确定每个时隙来解决这个问题。但这种方法的问题在于,如果攻击者确实控制了 51% 的验证者,那么他们能以非常低的成本进行攻击(回滚已最终确定的区块、审查或是延迟区块的最终确定):无论是通过罚没(slashing)还是社会化协调软分叉 ,只有他们在委员会中的部分节点可以被检测到参与攻击并受到惩罚。这意味着攻击者可以多次重复攻击该链。因此,如果我们想要经济最终性,那么简单的、基于委员会的方法是行不通的,看起来,我们确实需要所有验证者参与进来。
理想情况下,我们希望保持经济终结性,同时在两个方面改善现状:
关键目标由两个子目标来证明其合理性,而两个子目标都可以理解为 “使以太坊的特性与注重性能的 L1 公链(更中心化的)对齐”。
首先,它确保所有以太坊用户都能真正享受到最终确定性带来的更高安全保障。但现在的情况是:大多数用户都不愿意等 15 分钟 ;如果采用单时隙确认,用户几乎可以在交易确认后立刻最终确定。其次,这种机制简化了协议与相关基础设施,用户与应用不再需要担心链回退(reverting)的可能性,除非遇到非常罕见的 inactivity leak 的情况。
第二个目标则是来自于支持独立质押者的愿望。一次又一次的投票表明,32 ETH 的最低限额是阻止更多人独立质押的主要因素。将最低限额降低到 1 ETH 将解决这个问题,到那个时候,限制个人质押的主要因素就在其他方面了。
这里存在一个挑战:更快的区块最终确定和更民主化质押的目标,但这都与最小化开销的目标相冲突。事实上,这就是我们当初没有采用单时隙最终确定的唯一原因。不过,最近的研究提出了一些解决这个问题的新方法。
它是什么,如何做到的?
单时隙最终性涉及使用一种共识算法来最终确定一个时隙中的区块。这本身并不是一个难以实现的目标 —— 许多算法,例如 Tendermint 共识,已经以最佳性能的方式实现了。以太坊的独特特性需求是 inactivity leaks:即使超过 1/3 的验证器离线,该特性也允许链继续运行并最终恢复,而 Tendermint 不支持这个特性。幸运的是,现在可以满足这个愿望了:已经有提案修改了 Tendermint 共识以适应 inactivity leaks。
一个关于单时隙确定性的先进提案
问题最难的部分是在验证者数量非常多时,单时隙的最终确定性如何正常工作,而不会导致节点的运营商产生极高的开销。
Horn 是为了设计更好的聚合协议而提出的提案之一。
有一种思考 Orbit SSF 的方式:它开辟了折中的空间, 从范围 x=0(Algorand 风格的委员会,没有经济最终确定性)到 x=1(以太坊的现状),Orbit SSF 在其间开辟了中间地带,其中以太坊仍然具有足够的经济最终性,用以确保极其安全;但与此同时,仅需中等规模的随机验证者样本参与每个时隙,我们也获得了效率优势。
Orbit 利用验证者存款规模中预先存在的异质性(heterogeneity:由不同或多样的元素组成的状态或特性)来获得尽可能大的经济最终性,同时仍将给予小型验证者与其匹配的角色。此外,Orbit 使用缓慢的委员会轮换模式,来确保相邻法定人数高度重叠,进而确保了其经济最终性也适用于委员会轮换期间。
有四种主要的可能路径可供选择(我们也可以采取混合路径):
(1)意味着什么都不做并保持原样,但这会使以太坊的安全体验和质押中心化属性比想象的还糟糕。
(2)使用高科技手段暴力解决问题。要做到这一点需要在很短的时间内(5-10 秒)聚合大量签名(100 万+)。可以这样理解这种方法:通过全力接受封装复杂性来最小化系统复杂性。
(3)避免 “高科技”,并通过巧妙地重新思考协议假设来解决问题:我们放宽了 “经济最终确定性” 的要求,那么我们就需要使攻击昂贵,就算攻击成本可能比现在低 10 倍(例如,攻击成本为 25 亿美元,而不是 250 亿美元)也行。人们普遍认为,以太坊如今的经济最终性(的安全水平)远超以其所需,安全风险主要在其他地方,相对来说这是可接受的牺牲。
此处需要做的工作主要是验证 Orbit 机制是否安全、具备我们想要的特性、正式化并实施。此外,EIP-7251(增加最大有效余额)允许自愿验证者进行余额合并(balance consolidation),这将立即减少链验证的开销,并作为 Orbit 的有效初始阶段推出。
(4)避免了巧妙的重新思考和高科技,但它创造了双层质押系统,仍然具有中心化风险。风险在很大程度上取决于低质押层获得的具体权利。例如:
可以组合多种策略,例如:
(1+2):添加 Orbit,但不进行单时隙最终确定。
(1+3):使用强力技术减少最小存款规模,而无需进行单时隙最终确定。所需的聚合量比单纯使用(3)情况少 64 倍,这样一来问题变得更简单了。
(2+3):使用保守参数(例如 128k 验证者委员会而不是 8k 或 32k)执行 Orbit SSF,并使用暴力破解技术使其极其高效。
(1+4):增加彩虹质押而不执行单时隙最终确定。
它如何与路线图中的其他部分互动?
除了其他好处之外,单时隙确定还降低了某些特定类型的多区块 MEV 攻击的风险。此外,在单时隙最终确定性的世界里,需要重新设计证明者-提议者分离(PBS)方案以及其他协议内的区块生产流程。
Brute force 策略的缺点是减少时隙时间这一目标变得更难实现了。
如今,哪个验证者将提出下一个区块是可以提前知道的。这会产生一个安全漏洞:攻击者可以监视网络,确定哪些验证者对应哪些 IP 地址,并在验证者即将提出区块时对其发起 DoS 攻击。
它是什么,如何做到的?
解决 DoS 问题的最佳方法是隐藏哪个验证者将生成下一个区块的信息,至少在区块实际生成之前要隐藏这些信息。注意,如果我们删除 “单一(single)” 这一要求,那么问题就简单了:一种解决方案是让任何人都可以创建下一个区块,但要求 randao 揭示 小于 2^256 / N。平均而言,只有一个验证者能够满足此要求 —— 但有时会有两个或更多,有时会没有。将 “秘密(secrecy)” 要求与 “单一” 要求结合起来一直是一个难题。
单一秘密领袖选举协议通过使用一些加密技术为每个验证者创建一个 “盲” 验证者 ID 来解决这个问题,然后让许多区块提议者有机会对盲 ID 池进行改组和重新盲化(这类似于混合网络的工作方式)。在每个时隙,都会选择一个随机盲 ID。只有该盲 ID 的所有者才能生成有效的证明来提议区块,且没有人知道该盲 ID 对应的是哪个验证者。
Whisk SSLE 协议
现实地说,还需要做的就是找到并实现一个足够简单的协议,以便我们可以轻松地在主网上实现它。我们高度重视保持以太坊协议的简易性,不希望进一步增加复杂性。SSLE 仅用了数百行规范代码,并在复杂的加密中引入了新的假设。如何实现足够有效的抗量子 SSLE 也是一个问题。
最终可能会出现这样的情况:只有当我们出于其他原因(例如状态树、ZK-EVM)大胆尝试并在 L1 的以太坊协议中引入执行通用零知识证明的机制时,SSLE 的 “边际额外复杂性” 才会下降到足够低的水平。
另一种选择是根本不理会 SSLE,而是使用协议外缓解措施(例如在 p2p 层)来解决 DoS 问题。
它如何与路线图的其他部分互动?
如果我们添加证明者-提议者分离(APS)机制,比如执行票证,因为我们可以依赖专门的区块构建器,那么执行区块(例如包含以太坊交易的区块)将不再需要 SSLE。不过,对于共识区块(包含协议消息的区块:比如证明、可能还有纳入列表的一些片段等),我们仍然可以从 SSLE 中受益。
进一步缩短以太坊的交易确认时间(从 12 秒缩短到 4 秒)是有价值的。这样做将显著改善 L1 和基于 rollups 的用户体验,同时使 De-Fi 协议更加高效。它还将使 L2 更易去中心化,因为它将允许大量 L2 应用程序在 based rollups 上运作,从而减少 L2 构建自己的基于委员会的去中心化排序的需求。
它是什么,如何做到的?
这里大致有两种技术:
目前还不清楚缩短时隙时间的可行性。即使在今天,世界上许多地区的质押者也很难以足够快的速度获得证明。4 秒时隙时间的尝试有验证者集中心化的风险,而且由于网络延迟 ,在不具备地理优越性的地区成为验证者将不切实际的。
提议者预确认方法的弱点在于,它可以大大改善平均情况下的纳入时间,但不能改善最坏情况:如果当前提议者运行良好,交易将在 0.5 秒内得到预确认,而不是(平均)6 秒内被纳入。但如果当前提议者离线或运行不佳,仍然需要等待整整 12 秒,才能开始下一个时隙并提供新的提议者。
此外,还有一个悬而未决的问题,即如何激励预确认。提议者有动机尽可能地最大化他们的可选性。如果见证人合时宜地签署预确认,那么交易发送者可以将部分费用以立即预确认为条件,但这会给见证人带来额外的负担,并可能使见证人更难继续充当中立的 “哑管(dumb pipe)”。
另一方面,如果我们不尝试这样做,并将最终确定时间保持在 12 秒(或更长时间),生态系统将更加重视 Layer 2 的预先确认机制,跨 L2 的交互将需要更长的时间。
它与路线图的其他部分如何互动 ?
基于提议者的预确认实际上依赖于证明者-提议者分离 (APS) 机制,例如执行票。否则,提供实时预确认的压力可能会对常规验证者造成过于中心化的压力。
时隙时间到底能有多短还取决于时隙结构,这在很大程度上取决于我们最终实施的 APS、纳入列表等措施。有些时隙结构包含的轮次较少,因此对短时隙时间更友好,但它们在其他地方也做出了让步。
人们通常认为,如果发生 51% 攻击(包括无法通过加密证明的攻击,例如审查),社区将联合起来实施少数派软分叉(minority soft fork),确保好人获胜,坏人被施以 inactivity-leaked 或罚没(slashing)。然而,这种对社会层的过度依赖可以说是不健康的。我们可以尝试让恢复过程尽可能自动化来减少对社会层的依赖。
完全自动化是不可能的,因为如果可以的话,那就相当于一个容错率 >50% 的共识算法,而且我们已经知道这类算法在数学上可证明的(非常严格的)局限性。但我们可以实现部分自动化:例如,一个客户端发现,某个区块链正在审查那些已经被该客户端观察了很长时间的交易,那么该客户端可以自动拒绝接受其作为分叉链的选项。要实现一个关键目标:要确保至少坏人的攻击不能干脆利落地获得胜利。
如今,只要有 67% 的质押者支持,区块就会最终确定。有人认为这种做法过于激进。在以太坊的整个历史上,只发生过一次(非常短暂的)最终确定性失败。如果将这一比例提高到 80%,那么增加的非最终确定性时期数量将相对较低,但以太坊将获得更好安全性:尤其是很多有争议的情况会导致最终确定性的暂停。这似乎比 “错误的一方” 立即获胜要健康得多,无论是错误的一方是攻击者还是客户端。
这也回答了 “独立质押者意义何在” 的问题。如今,大多数质押者已经通过权益池进行质押,让独立质押者质押的 ETH 比例达到 51% 的可能性似乎很小。但是,如果我们努力的话,让少数派的单独质押者达到成为能够阻止多数派的方式似乎是有可能实现的,特别是如果多数派达到 80%(因此阻止多数派的少数派只需要 21%)。只要单独质押者不参与 51% 攻击(无论是最终确定性反转还是审查),这种攻击就不会是 “干净利落地获胜”,并且独立质押者将会有动力帮助组织少数派软分叉。
需要注意的是,投票生效阈值(quorum thresholds)和 Orbit 机制之间存在相互作用:如果我们最终使用 Orbit,那么 “‘21% 的质押者’ 究竟意味着什么?” 将成为一个更复杂的问题,并且在一定程度上取决于验证者的分布情况。
Metaculus 目前认为,尽管误差很大,但量子计算机可能会在 21 世纪 30 年代的某个时候开始破解密码学:
斯科特·阿伦森 (Scott Aaronson) 等量子计算专家最近也开始更加认真地考虑量子计算机在中期内实际工作的可能性。这对整个以太坊路线图产生了影响:这意味着当前依赖于椭圆曲线的每个以太坊协议部分都需要有一些基于哈希或其他抗量子的替代方案。这特别意味着我们不能假设我们将能够永远依靠 BLS 聚合的优异特性来处理来自大型验证器集的签名。这证明了在围绕权益证明设计的性能假设中的保守主义是合理的,也是更积极地开发抗量子攻击替代方案的原因。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!