自 mev-boost 中理解活性风险

在过去的几天里,mev-boost 一直是社区中的热门讨论话题。我们想要通过这次机会强调和教育使 mev-boost 可能成为一个可合并的 PBS 解决方案的设计和信任假设。

首先,必须注意的是,关于发现新问题或信任假设的报告是错误的。这篇报告中讨论的所有内容都是 mev-boost 的已知特性,也都在最初的 mev-boost 研究帖中讨论过。每一个问题都有一个已知的、被接受的缓解措施,且正在共识客户端中实施。合并和 mev-boost 都将在预定的时间线推出。你可以在 boost.flashbots.net 的 mev-boost 登陆页面上持续关注每个共识客户端和节点运营商的准备状态。

话已至此,让我们深入了解一下 mev-boost 的设计、信任假设和为什么选择它们,以及我们如何减轻以太坊的活性风险。

区块扣留攻击

为了帮助你跟上节奏,mev-boost 是验证者能够运行的中间件,以将其区块搭建外包给区块搭建者市场。在搭建者和验证者之间存在“中继器”,负责推动双方之间的丝滑交易。该中继器保护搭建者不将任何有关区块的信息泄露给验证者,并且保证甚至小型验证者也能参与进搭建者市场。同时,中继器保护验证者不会接收无效的区块,对验证者出价过高,或完全没有。(更多有关此请详见“为何选择这项设计?”)

中继器能够与一个或多个搭建者连接,我们希望会有两种变体。一个连接多个搭建者的中继器将集合他们的出价(一个有趣的事实:在之前的迭代里,我们称其为搭建者聚合器或搭建者池)。中继器能够看见被搭建者提交的所有区块,确认其有效性和它们该支付验证者多少钱。之后,中继器只会将最高的有效出价提交给验证者来签名。

在验证者能够接收来自中继器的出价之前,他们需要建立 mev-boot 并将中继器添加至他们的 mev-boost 配置。它将为验证者提供在所有的中继器中胜出的出价。一个验证者可以和少数聚合了所有的搭建者的中继器连接,而且许多人可能都将这么做。其他验证者可能和很多中继器连接。

如果 mev-boost 在配置里没有中继器,或者所有的中继器都下线了,那么信标节点(BN)将总是退回到从公共的内存池建设一个区块。所以我们知道风险不是所有的中继器都下线。那么风险是什么?

  • 整个网络连接到同一个中继器(不一定是唯一的),并且
  • 该中继器是出价最高的中继器,因此其区块被验证者选中,并且
  • 该中继器发送区块头以进行签名(= 它没下线)但在接收验证者签名后,并未将最终的区块发布至网络。

这种情况下,这同一个的中继器将一直向验证者推荐区块,而这些验证者将一直签名这些区块,然后没有区块将被发布。结果会是一连串的空槽。不生产区块的网络通常被称作一个活性问题。(这与 DDOS 攻击不同,因为受影响的节点仍然履行其所有其他网络职责,如发布证明、八卦信息等。)

这种故障可以通过一个漏洞或者一个恶意中继发生。如果是漏洞,我们希望中继器意识到它们的问题并迅速地解决,或者整个下线。因此,更需要防范的情况是恶意中继发起的故意扣留攻击。

必须强调的是,一个扣留攻击能够立即连带造成整个网络的活性问题。这是因为一个恶意中继器可以对其出价撒谎,保证它永远会被所有与其登记的验证者选择。例如,想象一个恶意中继器人为地出一个比诚实的中继者更高的数字。

这种攻击对中继器来说是免费的,因为其永远不需要发布区块并向验证者支付,然而所有受影响的验证者都错过了他们的提名时段。

重要的是,我们并不担心10%的网络连接了一个故障的中继器,而只有当一个故障的中继器过于受欢迎,从而为整个网络带来了系统性风险的时候才忧虑。老话说得好,如果10%的验证者错过了它们的时段,这是它们自己的问题。而如果100%的验证者错过了它们的时段,这就是以太坊的问题。

映射解空间

那么,假设一个受欢迎的中继器正在扣留区块。系统要如何恢复?根据第一原则,当以下任一步骤发生时,系统就会恢复。

  1. 验证者从他们的 mev-boost 配置中移除故障中继器(或者直接把 mev-boost 整个关掉),或者
  2. 其他中继器出价高于故障中继器,或者
  3. 故障中继器完全下线,或者
  4. 故障中继器开始重新发布区块

浏览以上针对故障中继器的“防御措施”,很清楚的是第3条和第4条在故障中继器的控制范围内,而第2条是在其他中继器的控制范围内。但对于我们这些验证者,我们只关心当意识到中继器故障时可以让我们移除它们的解决办法。

在这片解空间,有两类:本地和全球解决方案。本地解决方案是最简单的——验证者(或者说他们的 mev-boost)能够跟踪一个中继器最近的情况表现。如果一个中继器误传了致富信息或者没有发布区块,验证者能够自动移除这个中继器。但这个解决方案有一个本地信息的问题。这个解决方案保护单一的验证者免受不良中继器的影响,但下一个验证者对这个不良中继器并不知情。一个本地解决方案可能对Coinbase、Lido、Binance、Kraken等等来说已经足够,因为它们控制了许多验证者,以至于他们的“本地”对网络的“全球”来说是一个很好的近似值——但对较小的验证者来说,就没有什么帮助了。这些验证者需要知道中继器在之前其他验证者的时段上表现如何。

看起来我们需要一个全球解决方案。在全球解决方案中,验证者查看网络的全球历史(而不仅仅是他们自己的)来移除中继器。社区在合并之前正在建立两个全球解决方案。

第一个解决方案是一个由信任的第三方运作的中继监控器。该监控关注中继器的全球情况表现,能够向验证者发送信息,类似于“请现在移除中继器x”。因此,如果任何中继器犯了错,所有连接了中继监控器的验证者将更新他们的配置。这条路径有任何其他新的风险吗?我们可以回顾一下,一个空的 mev-boost 配置意味着验证者会退回到本地区块生产。所以中继监控器只能暂时从验证器的配置中移除中继器,而不是任何新的中继器,或者导致验证者错过任何时段。

第二个解决方案,,由 Alex Stokes 在电话中介绍,是一个所谓的断路器。它的工作原理类似于中继监控器,但不依赖第三方服务。断路器是信标节点的一部分。它查看网络的本地视图,如果节点在连续的y个错过的时段中看到x个,它将断开与搭建者网络的连接,并返回到本地生产区块。关于选择一个好的x数字有一些细微的差别,因为一个小数字会允许一个大型的验证者故意错过时段,以触发网络其他部分的断路器并关闭他们的 mev-boost。一个大的数字可能会导致连续错过许多时段。

以上以及更多不太成熟的解决方案正在 GitHub issue 中讨论。最终,Enshrined PBS 将完全摒弃中继器,但这已经是后话了。

为何选择这项设计?

由于 mev-boost 中使用的“提交-披露”方案,中继器可能无法做到在做出获胜出价后释放区块。这种攻击载体从一开始就是已知的,它是一个经过计算的选择。但为什么会选择它呢?

代替方案将是继续使用 Flashbots 的 pre-PoS 设计,我们称之为“PBS 阶段1”。在这个系统中,区块搭建者以明文方式向验证者发送完整的区块,验证者必须向区块搭建者开放一个对 DOS 敏感的 RPC.

那个设计的优点是验证者可以一直查看该区块,以验证那个区块是有效的,以及其该向验证者支付多少。如果没有搭建者及时发送区块,验证者可以退回到本地区块搭建,此时不会有错过哪怕一个时段的风险。

但缺点是去爱搭建者需要相信验证者不会从他们那里偷 MEV,以及验证者需要相信区块搭建者不会对他们进行 DoS 攻击。不幸的后果是,只有相互信任的验证者和搭建者能够参与进 PBS 市场。

因此,虽然这种设计有很好的应对区块扣留攻击的特性,但它会完全切断单干者对 MEV 的提取。经过与以太坊社区和其他主要利益相关者的公开讨论,这一成本被认为太高,我们最终选择了一个可以囊括它们的设计。

总结

我希望这篇帖子帮助你对 mev-boost 的信任假设有了一定框架,为什么会选择它们,以及什么缓解措施将用于避免以太坊的活性风险。中继监控器将为合并准备就绪。断路器正在开发,一些共识客户端已经将它们执行了。再加上验证者实行良好的中继卫生(在进一步的缓解措施到位之前只使用受信任的中继器,为他们的时段设置停机监控),我认为我们在合并中处于有利地位。

参考文献


原文作者:Hasu

原文地址:

翻译:龙犄角


译文首稿完成于22年8月8日

Marsbit 而翻译

Subscribe to 龙犄角
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.