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