以太坊为何需要一个动态可用协议 - 共识

这篇文章提出了以太坊下一代共识协议的“两层架构”设计,核心是一个小委员会生产的快速可用链(heartbeat)和独立的终结性机制。重点强调了heartbeat层所需的“动态可用性”特性,解释了其重要性(弹性、抗审查、应用层连续性)以及为何单一协议无法同时实现动态可用性和最终性。文章还探讨了Goldfish协议作为heartbeat层的潜在选择,及其在缩短槽时间、实现后量子密码学兼容性方面的优势。

_作者: Luca Zanolini_

_特别感谢 BenFrancescoJoachimJustinMikhailRobertoThomasYann 提供的反馈。_

我们正在为以太坊的下一个共识协议制定提案。新设计的核心是一个两层架构:一个快速可用的链——心跳——由一个小型随机抽样委员会产生,以及一个独立的最终性机制,它在心跳之后运行,最终确定心跳已产生的区块——关键在于,这两层是完全解耦的,这与当前的 Gasper 设计不同,在 Gasper 中,LMD-GHOST 和 Casper FFG 的交互方式已被证明难以推断。Vitalik 在最近的一篇文章中概述了这一方向。

本文重点介绍第一层——心跳——以及我们认为对其而言应是一个严格要求的属性:动态可用性

为什么动态可用性很重要

以太坊从未下线。经历过合并、客户端错误、云提供商中断——该链持续生产区块。这并非偶然。它是协议如何处理参与度波动的结果,也是下一个共识设计应加强而非妥协的属性。

\ 1306×624 50.8 KB

图 1. 以太坊信标链每日区块提案历史 (来源)。绿色代表已提出区块的插槽,橙色代表错过的插槽,灰色代表孤块。记录的最低提案率约为 90%,发生在 2023 年 5 月共识客户端事件期间。该比率从未接近零。

动态可用性是该属性的正式化:如果协议在当前活跃的权益大部分是诚实的情况下保持安全和活跃,则该协议是动态可用的。不是所有已注册验证者的大多数——而是活跃验证者的大多数。无论有多少验证者处于休眠状态,只要活跃的验证者大部分是诚实的,链就会继续运行。

为什么这应该是一个严格要求?

韧性和自我恢复。 当验证者下线时——由于共识客户端错误、云提供商中断或区域网络中断——一个动态可用的协议会继续生产区块。在常见情况下,恢复很简单:受影响的运营商修复错误,数据中心恢复在线,参与度恢复正常。链从未停止,因此无需重新启动。如果参与度未能恢复——如果大量验证者无限期离线——以太坊有一个备用机制:不活跃泄漏,一种逐步惩罚不活跃验证者的机制,减少其有效权益,直到最终性 gadget 可以恢复操作,而无需带外协调。有一类链——通常是为了吞吐量而优化——隐式地依赖响应迅速的社交层来从极端事件中恢复:链停止,一小群利益相关者协调,验证者同步重启。当去中心化不是主要限制时,这种方法是高效的。它符合以太坊的设计理念。

这些并非假设情景。2023 年 5 月,Prysm 和 Teku 共识客户端(合计运行超过 50% 的验证者)中的错误导致以太坊首次主网不活跃泄漏。2020 年 11 月,Geth 中的一个共识错误导致链分叉,扰乱了 Infura、MetaMask、MakerDAO 和 Uniswap。当多数客户端分叉时,动态可用性确保两个分叉都继续运行。单个运营商可以在网络范围收敛之前很好地识别并切换到正确的链。

抗审查性。 如果一个拥有多数权益的攻击者开始审查,诚实的少数派需要发起反击。动态可用的链允许他们即使只有少量验证者也能开始构建替代分叉,并随着其他人识别情况并加入而发展壮大。

应用层连续性。 DeFi 协议、Rollups 和桥都依赖于一个正常运行的 L1。停滞的基础层会同时冻结可组合的 DeFi(清算无法执行,预言机价格过时,头寸累积无法管理的风险),阻碍 Rollup 操作(批次发布、欺诈证明、有效性证明),并使桥进入模糊状态。这并非理论:在 Solana 2024 年 2 月停机期间,链停止生产区块五小时——DeFi 协议完全无法运行,头寸无法调整,风险累积但没有机制来管理。相比之下,在以太坊 2023 年 5 月的最终性中断期间,区块继续生产,交易正常处理——应用层基本未受影响,因为可用链从未停止。最终结算仍需要最终性层,但操作连续性取决于心跳继续生产区块。

这些观点背后有一个统一原则

尽可能多地向人们提供关于链未来状态的信息。

这与较短的最终确认时间优于较长的最终确认时间、以及最终性优于纯概率确认的原则相同。当最终性中断时,动态可用的链提供关于未来可能状态的部分但有用的信息。停滞的链则无法提供任何信息。

BFT 假设的世界并非以太坊所处的世界

你听说过的大多数共识协议——PBFTTendermintHotStuff——都假设存在一组固定且可靠的活跃验证者。在这种模型下,安全性是可证明的,但如果太多验证者离线(通常大约 \ge \frac{1}{3}≥13),活跃性通常会失效。这种权衡是不可避免的。

以太坊有数千个独立运营的节点,即使是激励良好的运营商也会离线:升级、云和 ISP 事件、硬件故障、配置错误、普通人为错误。设计一个需要“近乎完美的参与”才能保持活跃性的协议,是在为不存在的世界而设计。

休眠模型认真对待(某些方面的)真实世界:诚实的验证者可以处于活跃或休眠状态,并且这种状态可以随时间变化。在这种情况下,如果当前活跃的权益的大多数是诚实的,则协议是动态可用的,它保持安全和活跃。休眠的验证者不计入任何故障预算——无论是拜占庭式故障还是崩溃故障。这在实践中很重要:现实世界的停机事件已将参与度推低至约 33%(图 10),这个水平将超出任何将离线验证者视为故障的协议的容错能力。

换句话说:

只要实际活跃的大部分权益是诚实的,以太坊就应该继续生产一个连贯的链。

你无法避免两层拆分

有人可能会问:为什么不构建一个既动态可用又提供最终性的单一协议呢?换句话说:为什么我们需要一个尾随的最终性机制呢?答案是这不可能。

可用性-最终性困境——CAP 定理的一种区块链特定形式——证明没有单一协议可以同时保证:

  • 动态参与下的活跃性:即使活跃验证者集合波动,链也会持续增长。
  • 网络分区下的安全性:一旦交易被确认,即使网络暂时分裂,也无法回滚。

换句话说,动态可用的协议必须假定同步性。

BFT 协议实现了分区安全性,但在参与度下降时会停滞。最长链协议,例如比特币的共识协议,实现了动态可用性,但只提供概率性确认——并且必须假定同步性才能做到这一点。 没有协议可以同时做到这两点。这是一个根本性的限制。

架构上的含义是直接的:任何旨在永不停止提供不可逆最终性的协议都必须具有动态可用组件。心跳层不是一种优化——它是不可行性结果强加的结构性必要性。

从属性到协议

说心跳必须是动态可用的,仍然没有说明应该使用什么协议。这个要求排除了现成的 BFT(在动态参与下会停滞),但也排除了 LMD-GHOST 的简单适应。虽然 Gasper 在实践中在不同的参与水平下运行良好,但 LMD-GHOST 无法被证明是动态可用的:Neu、Tas 和 Tse 证明了在同步模型中违反 LMD-GHOST 安全性和活跃性的对抗策略,而随后的补丁并未弥补这一差距。根据定义,协议仅在其在休眠模型中满足安全性和活跃性时才是动态可用的——这些攻击的存在意味着 LMD-GHOST 未达到此标准。

Goldfish 旨在弥补这一差距。它是一个提议投票协议——结构上更接近 BFT 而不是最长链——通过以下方式实现动态可用性:

  • 恒定的预期确认延迟:确认时间不随目标安全级别而增长。这是与最长链协议的关键区别。
  • 重组弹性:诚实提案者提出的区块保证保留在规范链中。此属性在 LMD-GHOST 中不存在,它消除了一类攻击,这些攻击一直困扰着以太坊当前的分叉选择规则。
  • 子抽样:协议可以通过每个插槽约 256 个随机选择的验证者委员会运行,使每个插槽的通信量相对于总验证者集保持 O(1)O(1)。
  • 可组合性:Goldfish 可以作为潮汐协议中的可用链组件,与最终性 gadget 配对。

这在实践中带来了什么:插槽时间

当前的以太坊插槽结构需要聚合约 30000 个证明。由于这超出了单个子网的传播能力,证明在到达全球网络之前会经过多个聚合轮次。正如 Vitalik 观察到的:

\text{aggregation time} \approx \log_C(\text{validator count})aggregation time≈logC(validator count)

其中 CC 是每个子网的容量(数百到数千个签名),聚合时间以网络轮次衡量,每轮大约需要 \DeltaΔ。当完整的验证者集处于关键路径上时,每个插槽需要 3\Delta3Δ 到 4\Delta4Δ。

具有约 256 个子抽样验证者的动态可用协议适合单个子网广播。不需要聚合轮次。这完全消除了聚合开销,只剩下区块传播和委员会投票的时间在关键路径上。

最终性仍然涉及完整的验证者集,但它与动态可用组件并行进行,脱离关键路径。两层不争夺相同的延迟预算。

近期益处:后量子就绪和后量子心跳

向后量子密码学过渡是以太坊的一个持续关注的问题。一个主要障碍是签名聚合:以太坊目前依赖 BLS 签名,可以高效且轻松地聚合,但没有后量子签名方案能以实际大小提供可比的聚合属性。

一个具有小规模子抽样委员会的动态可用心跳解决了这个问题。每个插槽约有 256 个验证者,签名根本不需要聚合——它们可以简单地连接起来。后量子签名大小因方案而异;对于每个签名约 3 KB 的方案,256 个签名总计约 768 KBleanMultisig——一个针对 XMSS 签名聚合和递归的最小 zkVM——可以进一步压缩:早期基准测试显示,聚合超过一千个签名,证明大小在 300-500 KB 范围内,接近简单连接的成本。这些结果目前依赖于一个推测性的安全假设;可证明安全的参数正在开发中。

这意味着后量子心跳——一个使用后量子签名运行的动态可用协议——可以比完整的后量子解耦协议更早部署,后者还需要为最终性层的完整验证者集进行后量子签名聚合。心跳与最终性的解耦使得这种增量部署路径成为可能:首先将心跳升级到后量子,然后随着后量子聚合技术的成熟,单独处理最终性层的签名。

如果没有这种解耦,后量子迁移将成为一个全有或全无的问题:在拥有一个可扩展到完整验证者集的 PQ 聚合方案之前,你无法升级以太坊的签名——这是一个活跃的研究领域。两层架构将其转变为两个独立的问题,其中一个(约 256 个连接签名)目前可以通过现有方案解决

我们正在构建什么

目标架构:

  1. 心跳:一个动态可用协议(Goldfish/ RLMD-GHOST 家族),每个插槽约有 256 个随机抽样验证者——足够小以使用连接的后量子签名运行,从而使后量子心跳成为早期的部署里程碑。
  2. 尾随最终性 gadget:一个独立的机制,使用完整的活跃验证者集,最终确定心跳的链头。

这两层是完全解耦的。这带来了快速插槽、选择最终性机制的灵活性、不活跃泄漏期间的清晰分离,以及相对于 Gasper 而言的降低的复杂性。

关于最终性层的详细处理将在后续文章中。


  1. 我们指的是区块生产,而非最终性。最终性曾暂时中断——最显著的是在 2023 年 5 月共识客户端事件期间——但链从未停止生产区块。每日区块提案图表显示,即使在这次事件中,超过 90% 的插槽收到了提案区块。这是客户端多样性(Lighthouse、Nimbus 和 Lodestar 未受 Prysm/Teku 错误影响)和动态可用性(协议继续使用保持活跃的验证者生产区块,而不是因为总参与度低于绝对阈值而停止)的共同结果。↩︎

  2. 我们使用“活跃”一词,其含义与休眠模型中的相同:如果验证者积极参与协议,则它处于活跃状态,否则处于休眠状态。这是一个协议级别的概念,与网络连接性不同。↩︎

  3. \DeltaΔ 表示任何两个诚实验证者之间网络消息传递时间的假定上限。↩︎

  4. 精确的插槽结构取决于协议。例如,Goldfish 使用 3\Delta3Δ 插槽(提案、投票缓冲、投票)或 4\Delta4Δ(如果实施快速确认)。↩︎

  • 原文链接: ethresear.ch/t/why-ether...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
以太坊中文
以太坊中文
以太坊中文, 用中文传播以太坊的最新进展