原文标题:《Time, slots, and the ordering of events in Ethereum Proof-of-Stake》
原文作者:Georgios Konstantopoulos、Mike Neuder,Paradigm
原文编译:wesely
4 月 2 日,一名恶意的以太坊网络参与者利用 mev-boost-relay 中的漏洞窃取了一位 MEV 搜索者的 2000 万美元(请参阅 Flashbots 的事后分析)。在接下来的几天里,开发人员通过发布五个补丁来解决这个 bug,并结合现有的网络延迟和验证器策略,在 4 月 6 日导致以太坊网络出现短暂不稳定期。重新组织对于网络健康是不利的,因为它会降低区块生产率并减少结算保证。
本文旨在探讨 mev-boost 和共识之间相互作用、揭示以太坊权益证明机制中微妙之处,并列举一些可能前进方向。我们受到搜索者遭受攻击和网络暂时不稳定事件所启发。
什么是 mev-boost?为什么重要?
mev-boost 是由 Flashbots 和社区设计的协议,旨在缓解最大可提取价值(MEV)对以太坊网络造成负面影响。
mev-boost 中有三个角色:
Relays - 相互信任拍卖商将提案人连接到区块构建者。
Builders - 构建区块以最大化自己和提案人的 MEV 的复杂实体。
Proposers - 以太坊权益证明验证器。
每个区块的大致事件序列是:
Builders 通过从用户、搜索者或其他(私有或公共)订单流中接收交易来创建一个区块。
Builders 将该区块提交给 Relay。
Relays 证该区块是否有效,并计算它向提案人支付多少费用。
Relay 向当前时隙的提案人发送「blinded」头部和付款价值。
提议人评估他们收到的所有出价,并签署与最高付款相关联的 blinded 头部。
提议人将此已签名头部发送回中继站点。
该区块由中继使用其本地信标节点发布并返回给提议方。奖励通过在该区块内进行交易和区块奖励分配给构建者和提议方。
Relay 是一种相互信任的第三方,促进了来自于 proposer 的对于 block space 公平交换以及来自 builder 的 transaction sequencing for MEV extraction。Relay 保护 builders 免受 MEV 偷窃,其中 proposers 复制 builder transactions 来获取 MEV 而不是分配给发现它的 searcher/builder。Relay 保护 proposers 确认 builder 区块有效性、代表 proposer 每个时隙处理数百个区块,并确保 proposer 支付的准确性。
mev-boost 是关键的协议基础设施,因为它使所有提案人都能够民主地访问 MEV,而无需与构建者或搜索者建立信任关系,这有助于以太坊的长期去中心化。
以太坊的分叉选择规则和 mev-boost
在我们深入攻击和响应之前,我们先来看一下以太坊的权益证明(PoS)机制及其相关的分叉选择规则。分叉选择规则允许网络就链头达成共识。根据《合并后以太坊重组》:
分叉选择规则是一个函数,由客户端评估,它将已经看到的区块和其他消息作为输入,并向客户端输出「正式链」是什么。需要分叉选择规则是因为可能有多个有效的链可供选择(例如,在同时发布具有相同父级的两个竞争区块时)。
关于分叉选择规则较少知道的一个方面是它与时间的关系,这对区块生产有重大影响。
插槽和子插槽周期
在以太坊 PoS 中,时间被划分为 12 秒增量称为插槽。PoS 算法随机指定验证器获得该插槽提议一个区块;此验证器被称为提议者。在同一插槽中,其他验证器被指派任务:通过应用 fork-choice 规则投票支持他们本地视图中链头所在位置上最新版本的区块。12 秒间隔被分为三个阶段,每个阶段消耗 4 秒。
在插槽中发生的事件如下所示,其中 t= 0 表示插槽开始。
在插槽中最关键的时刻是在 t= 4 的认证截止时间。如果一个认证验证器在认证截止时间之前没有看到一个块,他们将会投票给链上先前接受的头部(根据分支选择规则)。越早提出一个块,它就有更多的时间传播,因此它积累了更多的见证(因为更多的验证器在认证截止日期之前看到了它)。
从网络健康角度来看,块发布的最佳时间是 t= 0 (由规范指定)。然而,由于随着时间推移块价值单调递增,建议者有动机延迟发布他们的区块以允许更多 MEV 积累。请参阅权益证明中计时游戏和这个讨论以获取进一步细节。
历史上,在认证期限之后甚至靠近插槽结束时建议者仍可以发布区块,只要下一个验证器在构建其后续插槽区块之前观察到该区块即可。这是父级区块继承重量和分支选择规则在叶节点处终止导致没有延迟发表区块带来负面影响。为了帮助推动理性行为(延迟区块发布)朝着诚实行为(按时发布)的方向发展,「诚实重组」被实施。
提案者提升和诚实的重组
两个新概念被引入到共识客户端中,对证明截止日期具有关键影响。
提案者提升(PR)- 试图通过授予提案者相当于完整证明权重 40 %的分叉选择「提升」来最小化重组平衡攻击。重要的是,这种增强只持续一个时隙。
诚实的重组(PR)- 采用了提议人增强并允许诚实的建议人使用它来强制重新组织具有低于 20 %认证权重的块。这在 Lighthouse 和 Prysm 中实现(自 v 4.0-Capella 发布以来)。此更改是可选项,因为它是由建议人做出的本地决策,并且不会影响验证器行为。因此,没有协调努力将其同时推出到所有客户端,也没有与任何特定硬分叉相关联。
请注意,在某些特殊情况下避免进行诚实性重新排序:
在纪元边界块期间
如果链条未完成
如果链头不是从重新排序块之前的时隙获取
条件 3 确保诚实性重新排序仅从链中删除单个块,这作为断路器使得链能够在极端网络延迟期间继续生成块。这也反映了提案人对其网络视图的信心降低,因为他们不能再确定其提议者增强块将被视为规范。
下面的图表演示了诚实行为如何改变以实施重新组织策略。
在这种情况下,让 b 1 代表一个晚到的区块。由于延迟,b 1 仅具有第 n 个槽位 19 %的证明权重。剩余 81 %的证明权重分配给父区块 HEAD,因为许多验证者在认证截止日期之前没有看到 b 1 。
如果没有诚实的重新组织,在第 n+ 1 个时隙中提议者将 b 1 视为链头并构建子区块 b 2 。尽管它只有 19 %的证明权重,但提议者不会努力重新组织 b 1 。在第 n+ 1 个时隙期间,b 2 具有提议者增强功能,并且假设它按时交付,则通过积累该时隙大部分认证而成为规范。
通过诚实地重新组织,情况就大不相同了。现在第 n+ 1 个时间段的提案人发现对于 b 1 的 19% 认证权重低于重新组织阈值, 因此他们以 HEAD 作为 b 2 的父级来构建一个新区块,并强制性地进行了重新组织 b 1. 当我们达到 n + 1 时间段的认证截止日期时, 诚实验证器将比较 b 2 (40% 来自提案人增强)与 b 1 (19% )相对权重。所有客户端都执行提议人增强,因此 b 2 将被视为链头,并将积累时隙 n+ 1 的认证。
针对解绑攻击的中继和信标节点修复
在 4 月 2 日的解绑攻击中,提议者利用了一个中继漏洞,通过向中继发送无效的签名头来进行攻击。随后几天,中继和核心开发团队发布了许多软件补丁以减轻重复攻击的风险。五个主要变化如下:
1.Relay 更改:
检查数据库是否存在已知恶意提议者(仅由超声波中继在生产环境下使用,并已被删除)。
检查该时段内是否已将完整块传递给 P2P 网络。
在发布块之前引入 0-500 ms 范围内的统一随机延迟(从所有接力器移除)。
2.信标链节点更改(仅适用于接力信标链节点):
广播信标块之前验证其有效性。
在发布块之前检查网络上是否有等价物。
这些变化的组合导致共识不稳定,而大部分验证器现在都使用上述诚实重组策略进一步加剧了这种情况。
未预料到的后果
以上 5 个更改每一个都会增加接力区块发布热路径上的延迟时间,从而增加了接力区块可能会超过证明截止期限而被广播的概率。下图显示了这五个检查的顺序以及引入延迟如何导致块发布超过证明截止期限。
在实施这些检查之前,签名头到达时间显著晚于 t= 0 (例如 t= 3 )通常不会出现问题。中继开销非常低,因此会在 t= 4 之前发布块。
然而,随着这五个补丁引入的延迟时间增加,中继现在可能部分负责延迟广播。让我们看一下以下假设情况下的区块发布。
中继在 t= 3 时从提议者处接收到已签名的头部。到了 t= 4 ,中继仍在执行检查,因此广播发生在证明截止期之后。在这种情况下,提议者发送已签名头部晚和中继引入一些额外的延迟相结合导致错过了证明截止期。如果没有诚实重组,则这些块很可能会进入链上。如我们在图 2 中所看到的那样,随后插槽的诚实提议者不会故意重新组织由于时间太晚而被拒绝的块。然而,在有诚实重组的情况下,错过证明截止期意味着该块将被下一个提议者重新组织。
因此,在攻击后几天内,分叉块数量急剧增加。
Metrika 2 周的数据显示,在最糟糕的情况下,一个小时内有 13 个区块(4.3 %)被重新组织,这比正常情况多了约 5 倍。随着中继推出各种变化,分叉块数量的急剧增加变得明显起来。由于中继操作员和核心开发人员做出了巨大的社区努力,一旦理解了影响,许多更改就被撤销,并且网络恢复到健康状态。
截至今天,最有用的更改是信标节点块验证和在广播之前进行等价检查。恶意提议者不能再通过向中继发送无效头部并确保中继信标节点在发布之前不看到等价块来执行攻击。尽管如此,该中继仍然容易受到 Mev-boost 和 ePBS 中介攻击所呈现的更普遍等价攻击的影响。
那么我们该怎么办呢?
在这篇文章中,我们强调了 mev-boost 的工作原理以及它对以太坊共识的重要性。我们还详细介绍了与时间相关的 Ethereum 分叉选择规则中一些不太为人知的方面。通过使用拆分攻击和开发者的响应作为案例研究,我们强调了分叉选择规则中与时间相关的方面潜在脆弱性及其对网络稳定性的影响。
鉴于此,研究界应评估什么是「可接受」的重新组织数量,并考虑普遍情况下等价攻击所带来的风险,以确定是否需要实施缓解措施。
此外,目前正在积极探索多个未来方向:
实现「headlock」以保护 mev-boost 免受等价攻击。这也需要更改共识客户端软件并可能需要进行规范更改以延长证明截止期。
增加针对 mev-boost 软件的漏洞赏金计划数量和可见度。
扩展模拟软件以探索子时隙定时如何影响网络稳定性。这可以用于评估如何通过调整证明截止期来减少重新组织。
优化中继上的块发布路径以减少不必要的延迟。这已经在研究中了。
认识到 mev-boost 是核心协议功能,并将其吸收到共识客户端中,即 enshrined-PBS(ePBS)。两个时隙的 ePBS 容易受到等价攻击的影响,因此实现「headlock」仍然是一种选择。
增加基于延迟和证明截止期问题的更多 hive 和 / 或规范测试。
通过构建中继规范的其他实现来鼓励中继客户端多样性。
考虑调整等价惩罚措施,但请记住,在极大 MEV 机会存在时,即使完全削减 32 ETH 也可能无法阻止恶意行为。
总体而言,我们对 MEV 和 mev-boost 生态系统周围重新激发起来的能量感到兴奋。通过拆分攻击和缓解措施,我们已经了解了延迟、mev-boost 和共识机制之间关键关系;我们希望协议能够持续强化。
非常感谢 Bert Miller、Danny Ryan、Alex Stokes、Francesco D’Amato、Michael Sproul、Terence Tsao、Frankie、Joachim Neu、Chris Hager、Matt Garnett、Charlie Noyes 和 samczsun 对本文的反馈,以及 Achal Srinivasan。