Vitalik:以太坊协议的未来发展(第一部分)——合并
作者:Vitalik;编译:邓通,金色财经
特别感谢 Justin Drake、Hsiao-wei Wang、@antonttc 和 Francesco 的反馈和审阅。
最初,“合并”是指以太坊协议自推出以来历史上最重要的事件:期待已久且来之不易的从工作量证明到权益证明的过渡。如今,以太坊已经成为一个稳定运行的权益证明系统近两年了,这种权益证明在稳定性、性能和避免中心化风险方面表现非常出色。然而,权益证明仍有一些重要领域需要改进。
我 2023 年的路线图将其分为几部分:改进技术特性,例如稳定性、性能和对较小验证者的可访问性,以及经济变化以应对中心化风险。前者接管了“合并”的标题,而后者成为“祸害”的一部分。
这篇文章将重点讨论“合并”部分:权益证明的技术设计中还有哪些可以改进的地方,有哪些途径可以实现这些改进?
这并不是一份可以对权益证明进行改进的详尽清单;相反,这是一份正在积极考虑的想法清单。
单槽最终性和质押民主化
我们正在解决什么问题?
如今,需要 2-3 个 epoch(约 15 分钟)才能完成一个区块,并且需要 32 ETH 才能成为质押者。这最初是为了在三个目标之间取得平衡而做出的妥协:
最大化可以参与质押的验证者数量(这直接意味着最小化质押所需的最小 ETH)
最小化完成时间
最小化运行节点的开销
这三个目标是相互冲突的:为了实现经济最终性(即攻击者需要销毁大量 ETH 才能恢复最终确定的区块),每次最终确定时,每个验证者都需要签署两条消息。因此,如果您有许多验证者,要么需要很长时间来处理所有签名,要么需要非常强大的节点来同时处理所有签名。
请注意,这一切都取决于以太坊的一个关键目标:确保即使成功的攻击也会给攻击者带来高昂的成本。这就是“经济最终性”一词的含义。如果我们没有这个目标,那么我们可以通过随机选择一个委员会(例如 Algorand 所做的那样)来最终确定每个时隙来解决这个问题。但这种方法的问题在于,如果攻击者确实控制了 51% 的验证者,那么他们可以以非常低的成本进行攻击(恢复最终确定的区块、审查或延迟最终确定):只有委员会中的部分节点可以被检测为参与攻击并受到惩罚,无论是通过削减还是少数软分叉。这意味着攻击者可以多次反复攻击该链。因此,如果我们想要经济最终性,那么基于委员会的简单方法是行不通的,乍一看,我们确实需要全套验证者参与。
理想情况下,我们希望保留经济终结性,同时在两个方面改善现状:
在一个时隙内终结区块(理想情况下,保持甚至减少当前 12 秒的长度),而不是 15 分钟
允许验证者用 1 ETH 进行质押(从 32 ETH 降至 1 ETH)
第一个目标由两个目标证明,这两个目标都可以看作是“使以太坊的属性与(更中心化的)注重性能的 L1 链的属性保持一致”。
首先,它确保所有以太坊用户都能从通过最终确定机制实现的更高级别的安全保障中受益。如今,大多数用户都无法享受这种保障,因为他们不愿意等待 15 分钟;而通过单槽最终确定机制,用户几乎可以在交易确认后立即看到交易最终确定。其次,如果用户和应用程序不必担心链回滚的可能性(除非出现相对罕见的不活动泄漏情况),那么它就简化了协议和周围的基础设施。
第二个目标是出于支持单独质押者的愿望。一次又一次的民意调查反复表明,阻止更多人单独质押的主要因素是 32 ETH 的最低限额。将最低限额降低到 1 ETH 将解决这个问题,以至于其他问题成为限制单独质押的主要因素。
存在一个挑战:更快的确定性和更民主化的质押目标都与最小化开销的目标相冲突。事实上,这个事实就是我们一开始不采用单槽确定性的全部原因。然而,最近的研究提出了一些解决这个问题的可能方法。
它是什么以及它是如何工作的?
单时隙最终性涉及使用在一个时隙内最终确定区块的共识算法。这本身并不是一个难以实现的目标:许多算法(例如 Tendermint 共识)已经以最佳属性实现了这一点。以太坊独有的一个理想属性是 Tendermint 不支持的不活动泄漏,即使超过 1/3 的验证者离线,该属性也允许链继续运行并最终恢复。幸运的是,这个愿望已经得到满足:已经有提案修改 Tendermint 式共识以适应不活动泄漏。
领先的单槽最终性提案
问题最难的部分是弄清楚如何使单槽最终性在验证者数量非常高的情况下发挥作用,而不会导致极高的节点运营商开销。为此,有几种领先的解决方案:
选项 1:暴力破解——努力实现更好的签名聚合协议,可能使用 ZK-SNARKs,这实际上允许我们处理每个插槽中数百万个验证器的签名。
Horn,为更好的聚合协议而提出的设计之一。
选项 2:Orbit 委员会- 一种新机制,允许随机选择的中型委员会负责最终确定链,但以保留我们正在寻找的攻击成本属性的方式。
思考 Orbit SSF 的一种方法是,它开辟了一个妥协选项空间,范围从 x=0(Algorand 式委员会,没有经济最终性)到 x=1(以太坊现状),在中间开辟了点,以太坊仍然具有足够的经济最终性以实现极度安全,但同时我们获得了只需要中等规模的随机验证者样本参与每个时段的效率优势。
Orbit 利用验证者存款规模预先存在的异质性来获得尽可能多的经济最终性,同时仍将给予小型验证者相应的角色。此外,Orbit 使用缓慢的委员会轮换来确保相邻法定人数之间的高度重叠,从而确保其经济最终性仍然适用于委员会轮换边界。
选项 3:两层质押 - 一种机制,其中质押者分为两类,一类的存款要求较高,另一类的存款要求较低。只有存款要求较高的层级会直接参与提供经济最终性。关于存款要求较低的层级究竟有哪些权利和责任,有各种提案(例如,参见 Rainbow 质押帖子)。常见想法包括:
将权益委托给更高层级的权益持有者的权利
随机抽取的较低层级权益持有者证明并需要完成每个区块
生成纳入列表的权利
与现有研究有哪些联系?
实现单槽最终性的途径 (2022):https://notes.ethereum.org/@vbuterin/single_slot_finality
以太坊单槽最终性协议的具体提案 (2023):https://eprint.iacr.org/2023/280
Orbit SSF:https://ethresear.ch/t/orbit-ssf-solo-staking-friendly-validator-set-management-for-ssf/19928
对 Orbit 风格机制的进一步分析:https://notes.ethereum.org/@anderselowsson/Vorbit_SSF
Horn,签名聚合协议 (2022):https://ethresear.ch/t/horn-collecting-signatures-for-faster-finality/14219
大规模共识的签名合并 (2023): https://ethresear.ch/t/signature-merging-for-large-scale-consensus/17386?u=asn
Khovratovich 等人提出的签名聚合协议:https://hackmd.io/@7dpNYqjKQGeYC7wMlPxHtQ/BykM3ggu0#/
基于 STARK 的签名聚合 (2022):https://hackmd.io/@vbuterin/stark_aggregation
Rainbow 质押:https://ethresear.ch/t/unbundling-staking-towards-rainbow-staking/18683
还剩下什么要做?需要权衡什么?
有四种主要可行的路径(我们也可以采用混合路径):
维持现状
Orbit SSF
强力 SSF
具有两层质押的 SSF
(1) 意味着不做任何工作,保持质押原样,但这会使以太坊的安全体验和质押中心化属性变得比本来更糟糕。
(2) 避免“高科技”,并通过巧妙地重新思考协议假设来解决问题:我们放宽了“经济终结性”要求,这样我们就要求攻击成本高昂,但可以接受攻击成本可能比现在低 10 倍(例如,攻击成本为 25 亿美元,而不是 250 亿美元)。人们普遍认为,以太坊今天的经济终结性远远超出了它所需要的水平,它的主要安全风险在其他地方,所以这可以说是一个可以接受的牺牲。
主要的工作是验证 Orbit 机制是否安全并具有我们想要的属性,然后完全形式化并实施它。此外,EIP-7251(增加最大有效余额)允许自愿验证者余额合并,这会立即减少链验证开销,并作为 Orbit 推出的有效初始阶段。
(3) 避免了巧妙的重新思考,而是用高科技强行解决问题。要做到这一点需要在很短的时间内(5-10 秒)收集大量签名(100 万以上)。
(4) 避免了巧妙的重新思考和高科技,但它确实创建了一个两层的质押系统,仍然具有中心化风险。风险在很大程度上取决于较低质押层获得的特定权利。例如:
如果低层级质押者需要将其证明权委托给高层级质押者,那么委托可能会中心化,最终我们就会得到两个高度集中的质押层级。
如果需要对低层级进行随机抽样来批准每个区块,那么攻击者可以花费极少量的 ETH 来阻止最终性。
如果低层级质押者只能制作纳入列表,那么证明层可能仍处于中心化状态,此时对证明层的 51% 攻击可以审查纳入列表本身。
可以组合多种策略,例如:
(1 + 2):添加 Orbit 而不执行单槽最终性。
(1 + 3):使用蛮力技术减少最小存款规模而不执行单槽最终性。所需的聚合量比纯 (3) 情况少 64 倍,因此问题变得更容易。
(2 + 3):使用保守参数执行 Orbit SSF(例如 128k 验证者委员会而不是 8k 或 32k),并使用蛮力技术使其超高效。
(1 + 4):添加彩虹质押而不执行单槽最终性。
它如何与路线图的其他部分互动?
除了其他好处之外,单槽终结性还降低了某些类型的多块 MEV 攻击的风险。此外,在单槽终结性世界中,证明者-提议者分离设计和其他协议内块生产管道需要以不同的方式设计。
暴力策略的弱点是,它们使得缩短槽时间变得更加困难。
单一秘密Leader选举
我们要解决什么问题?
今天,哪个验证者将提出下一个区块是预先知道的。这会产生一个安全漏洞:攻击者可以监视网络,识别哪些验证者对应哪些 IP 地址,并在验证者即将提出区块时对其发起 DoS 攻击。
它是什么?它是如何工作的?
解决 DoS 问题的最佳方法是隐藏哪个验证者将生成下一个区块的信息,至少在区块实际生成之前。请注意,如果我们删除“单一”要求,这很容易:一种解决方案是让任何人都可以创建下一个区块,但要求 randao 揭示小于 2256 / N。平均而言,只有一个验证者能够满足此要求 - 但有时会有两个或更多,有时会有零个。将“保密”要求与“单一”要求结合起来一直是一个难题。
单一秘密领导者选举协议通过使用一些加密技术为每个验证者创建一个“盲”验证者 ID 来解决这个问题,然后让许多提议者有机会对盲 ID 池进行改组和重新盲化(这类似于混合网络的工作方式)。在每个时段,都会选择一个随机的盲 ID。只有该盲 ID 的所有者才能生成有效的证明来提议区块,但没有人知道该盲 ID 对应哪个验证者。
Whisk SSLE 协议
有哪些现有研究的链接?
Dan Boneh 的论文(2020 年):https://eprint.iacr.org/2020/025.pdf
Whisk(以太坊的具体提案,2022 年):https://ethresear.ch/t/whisk-a-practical-shuffle-based-ssle-protocol-for-ethereum/11763
ethresear.ch 上的单一秘密领导者选举标签:https://ethresear.ch/tag/single-secret-leader-election
使用环签名的简化 SSLE:https://ethresear.ch/t/simplified-ssle/12315
还剩下什么要做?需要权衡什么?
实际上,剩下的就是找到并实现一个足够简单的协议,以便我们可以轻松地在主网上实现它。我们非常重视以太坊是一个相当简单的协议,我们不希望复杂性进一步增加。我们看到的 SSLE 实现增加了数百行规范代码,并在复杂的加密中引入了新的假设。找出一个足够有效的抗量子 SSLE 实现也是一个悬而未决的问题。
最终可能会出现这样的情况:只有当我们出于其他原因(例如状态树、ZK-EVM)在以太坊协议的 L1 上引入通用零知识证明机制时,SSLE 的“边际额外复杂性”才会下降到足够低的程度。
另一种选择是根本不理会 SSLE,而是使用协议外的缓解措施(例如在 p2p 层)来解决 DoS 问题。
它如何与路线图的其他部分互动?
如果我们添加证明者-提议者分离 (APS) 机制,例如执行票证,那么执行块(即包含以太坊交易的块)将不需要 SSLE,因为我们可以依赖专门的块构建器。但是,对于共识块(即包含协议消息(例如证明、可能包含列表的部分等)的块),我们仍将受益于 SSLE。
更快的交易确认
我们正在解决什么问题?
以太坊的交易确认时间进一步减少是有价值的,从 12 秒减少到 4 秒。这样做将显著改善 L1 和基于汇总的用户体验,同时使 defi 协议更加高效。它还将使 L2 更容易去中心化,因为它将允许大量 L2 应用程序在基于汇总上工作,从而减少 L2 构建自己的基于委员会的去中心化排序的需求。
它是什么?它是如何工作的?
这里大致有两种技术:
减少时隙时间,例如减少到 8 秒或 4 秒。这并不一定意味着 4 秒的最终性:最终性本质上需要三轮通信,因此我们可以将每轮通信设为一个单独的块,在 4 秒后至少会得到初步确认。
允许提议者在时隙过程中发布预确认。在极端情况下,提议者可以实时将他们看到的交易纳入他们的块中,并立即为每笔交易发布预确认消息(“我的第一笔交易是 0×1234...”,“我的第二笔交易是 0×5678...”)。提议者发布两个相互冲突的确认的情况可以通过两种方式处理:(i)通过削减提议者,或(ii)通过使用证明者投票决定哪一个更早。
有哪些现有研究的链接?
基于预确认:https://ethresear.ch/t/based-preconfirmations/17353
协议强制提议者承诺 (PEPC):https://ethresear.ch/t/unbundling-pbs-towards-protocol-enforced-proposer-commitments-pepc/13879
并行链上的交错周期(2018 年实现低延迟的想法):https://ethresear.ch/t/staggered-periods/1793
剩下要做什么,又有哪些权衡?
目前还不清楚减少时隙时间的实用性。即使在今天,世界上许多地区的质押者也很难足够快地获得证明。尝试 4 秒的时隙时间存在集中验证者集的风险,并且由于延迟,在少数特权地区之外成为验证者是不切实际的。
提议者预确认方法的弱点是它可以大大改善平均情况下的包含时间,但不能改善最坏情况下的包含时间:如果当前提议者运行良好,您的交易将在 0.5 秒内得到预确认,而不是(平均)6 秒内被纳入,但如果当前提议者离线或运行不佳,您仍然需要等待整整 12 秒才能开始下一个时隙并提供新的提议者。
此外,还有一个悬而未决的问题,即如何激励预确认。提议者有动机尽可能长时间地最大化他们的可选性。如果证明者签署了预确认的及时性,那么交易发送者可以将部分费用以立即预确认为条件,但这会给证明者带来额外的负担,并可能使证明者更难继续充当中立的“哑管道”。
另一方面,如果我们不尝试这样做并将最终确定时间保持在 12 秒(或更长),生态系统将更加重视第 2 层制定的预确认机制,跨第 2 层的交互将需要更长的时间。
它如何与路线图的其他部分互动?
基于提议者的预确认实际上依赖于证明者-提议者分离 (APS) 机制,例如执行票证。否则,提供实时预确认的压力可能会对常规验证者造成过于集中的压力。
其他研究领域
51% 攻击恢复
人们通常认为,如果发生 51% 攻击(包括无法通过加密证明的攻击,例如审查),社区将齐心协力实施少数派软分叉,确保好人获胜,坏人因不活动而泄露或被削减。然而,这种对社交层的过度依赖程度可以说是不健康的。我们可以尝试减少对社交层的依赖,使恢复过程尽可能自动化。
完全自动化是不可能的,因为如果是的话,这将算作一个 >50% 容错的共识算法,我们已经知道这类算法的(非常严格的)数学可证明的局限性。但我们可以实现部分自动化:例如,如果客户端审查了客户端已经看到足够长时间的交易,客户端可以自动拒绝接受一条链作为最终确定的,甚至拒绝接受它作为分叉选择的头部。一个关键目标是确保攻击中的坏人至少不能快速获得胜利。
增加法定人数阈值
今天,如果 67% 的质押者支持,区块就会最终确定。有人认为这过于激进。在以太坊的整个历史上,只有一次(非常短暂的)最终失败。如果将这一百分比增加到 80%,那么增加的非最终性时期数量将相对较低,但以太坊将获得安全性:特别是,许多更具争议的情况将导致最终性的暂时停止。这似乎比“错误的一方”立即获胜要健康得多,无论是错误的一方是攻击者,还是客户端有错误。
这也回答了“单独质押者的意义何在”这个问题。今天,大多数质押者已经通过池进行质押,而且似乎不太可能让单独质押者获得高达 51% 的质押 ETH。然而,如果我们努力的话,让单独质押者达到阻止多数派的少数派,特别是如果多数派达到 80%(因此阻止多数派的少数派只需要 21%)似乎是有可能实现的。只要单独质押者不参与 51% 攻击(无论是最终性逆转还是审查),这种攻击就不会获得“干净利落的胜利”,并且单独质押者会积极帮助组织少数派软分叉。
抗量子性
Metaculus 目前认为,尽管误差较大,但量子计算机很可能在 2030 年代的某个时候开始破解密码学:
量子计算专家,例如 Scott Aaronson,最近也开始更加认真地考虑量子计算机在中期内实际工作的可能性。这对整个以太坊路线图都有影响:这意味着目前依赖于椭圆曲线的每个以太坊协议部分都需要某种基于哈希或其他量子抗性的替代方案。这特别意味着我们不能假设我们将能够永远依靠 BLS 聚合的优异特性来处理来自大型验证器集的签名。这证明了在权益证明设计性能假设方面的保守性是合理的,也是更积极地开发量子抗性替代方案的原因。