以太坊权益证明 (PoS) 中的重组博弈
Caspar Schwarz-Schilling 介绍了关于以太坊权益证明 (PoS) 中区块重组攻击的研究,涵盖了攻击向量、防御机制以及现有的协议层缓解措施。
Date published: 2022年11月29日
本演讲探讨了在以太坊权益证明 (PoS) 中可能发生的区块重组类型,以及旨在防止这些重组的缓解措施。以太坊基金会稳健激励小组 (Robust Incentives Group) 的研究员 Caspar Schwarz-Schilling 详细讲解了事后 (ex-post) 和事前 (ex-ante) 重组的机制,并比较了工作量证明 (PoW) 和权益证明 (PoS) 之间的安全环境。
本文字稿是 LisCon 发布的原始视频文字稿 (opens in a new tab)的无障碍副本。为了提高可读性,已进行了轻微编辑。
简介与背景 (0:03)
欢迎大家。今天我将讨论在以太坊权益证明 (PoS) 中可能发生的重组。
我最近加入了以太坊基金会,具体来说是稳健激励小组。基本上,我们是一个专注于任何激励机制的研究团队。我长话短说——这次演讲内容很丰富,大家可以在 GitHub 上找到我们的大部分工作成果。
两种类型的重组 (0:44)
今天我想谈谈重组,特别是我想概述在以太坊权益证明 (PoS) 领域中可能发生的两种不同类型的重组。
一方面我们有事后重组 (ex-post reorgs),另一方面有事前重组 (ex-ante reorgs)。请原谅我使用了略显做作的拉丁语命名,但它确实能准确表达意思。
事后重组就是我们谈论重组时通常会想到的那种。攻击者看到一个区块——如果它很有价值,他们可能会尝试重组它。所以在图表中我们看到,区块 N+1 是攻击者想要重组掉的区块,通过在同一个父区块 N 上构建,如果成功的话,区块 N+3 就会构建在区块 N+2 之上。这是常规操作。
现在,事前重组略有不同。其核心在于,攻击者甚至在不知道他们要重组掉哪个区块之前,就需要开始攻击。这大致是如何运作的呢?从宏观层面来看,区块 N+1 构建在 N 之上,但没有立即发布。诚实节点甚至不知道 N+1 的存在,因此他们会继续在 N 上构建。然后通过某种机制,N+1 被发布,N+3 可能会看到 N+1 处于领先地位并在其上构建,从而导致 N+2 实际上被重组掉。
你可能会想,为什么会有人想做这种重组。嗯,因为仍然有最大可提取价值 (MEV) 可以获取。如果运气好,区块 N+2 有大量的 MEV——你可以通过直接复制粘贴该区块的内容来获取它。最坏的情况下,你基本上也有相当于两个时隙 (slot) 的交易可以监听。
工作量证明中的事后重组 (2:49)
在深入探讨事前重组(这是本次演讲的主题)之前,让我简要回顾一下事后重组,特别是从工作量证明 (PoW) 的背景开始。
基本上,这是对老熟人——Georgios 和 Vitalik 写的博客文章的回顾。大家可以直接去读一读,写得非常棒。
简而言之,在以太坊工作量证明 (PoW) 中,事后重组很困难,但并非不可行。拥有 10% 算力的矿工有相对较好的机会连续挖出几个区块,如果激励足够高——想象一下有一个区块包含价值 100 个以太币 (ETH) 的 MEV 可以获取——那么也许 1% 的成功率实际上就足以让人觉得值得尝试去重组。
权益证明中的事后重组 (3:39)
在权益证明 (PoS) 中,情况完全不同。我们谈论的是需要极其庞大的质押量。我将带大家了解一下可能的操作方式,只是为了强调这有多么荒谬的困难。
也许先讲一些基础知识。以太坊权益证明 (PoS) 中的时间以时隙 (slot) 为单位推进。每个时隙长 12 秒。在每个时隙中有两个角色:有一个提议者——确切地说是一个提议者——以及一个由数千名证明者组成的委员会,他们应该对在 P2P 层听到的区块进行证明。他们通过运行分叉选择来确定链的头部,分叉选择基本上是一个以区块树为输入并输出链头部的函数。
如果你听到了一个有效的区块,或者在一个时隙开始 4 秒后——以先到者为准,你就应该对区块进行证明。因此,如果由于某种原因区块 N+1 的提议者离线,并且在时隙开始 4 秒后没有区块,你就会对区块 N 进行证明。如果你按时听到了它,你就会对区块 N+1 进行证明。很简单。
所有这些证明都赋予了区块权重,分叉选择使用这个权重来确定最新的头部是什么。
现在让我们来看看单区块重组。一开始,一切照常——每个人都对区块 N 进行证明,甚至攻击者也是如此。然后 N+1 构建在 N 之上,因为攻击者不想给他们试图重组掉的区块增加权重,所以他们转而对区块 N 进行证明。区块 N 获得了很大的权重,因为攻击者拥有委员会三分之二的席位——这意味着他们需要控制大约整个质押量的三分之二。
三分之一的诚实节点对 N+1 进行了证明,三分之二对 N 进行了证明。现在区块 N+2 来了——显然攻击者将其构建在 N 上,并对自己的区块进行证明。从诚实验证者的角度来看,N+1 在权重上仍然领先,因为 N+1 和 N+2 都继承了区块 N 的全部权重,但 N+1 还有这三分之一的证明,而 N+2 则没有。
如果我们计算一下——区块 N+1 拥有价值三分之一加三分之一的证明,总共是三分之二,而区块 N+2 也有三分之二。为了简单起见,假设平局打破规则有利于攻击者。那么 N+3 将看到 N+2 处于领先地位并在其上构建。
为了让大家了解这些假设有多么荒谬——即使你是一个拥有 65% 质押份额的质押者,在任何给定的时隙中控制委员会三分之二席位的概率也只有 0.05%。这表明并行证明的力量是真实存在的——在以太坊权益证明 (PoS) 中,事后重组极其困难,甚至几乎是不可能的。
事前重组攻击机制 (7:34)
现在我要谈谈事前重组。这种攻击基于 Neuder 等人的一篇论文。我们最近对这种攻击进行了显著改进。我们还为此写了一篇论文,并设法及时将其上传到了 arXiv。
另外提前说一下——别担心,有缓解措施。它们将在合并 (The Merge) 之前被合并到代码中。
事前重组攻击是如何运作的?最初,区块 N——一切照常,每个人都对它进行证明。现在你是 N+1 的提议者。你提议它,并使用单个验证者私下对其进行证明。重要的是,你要保密——你不发布它,也不在 P2P 层上广播它。
结果是诚实节点看不到区块 N+1,所以他们会对区块 N 进行证明。这就是诀窍——你继承了那个权重,而且你实际上不需要去对抗它。
让我们暂时假设零延迟。在时隙 N+2 中,作为攻击者,我们要做的就是同时发布区块 N+1 和私人证明。时隙 N+2 中的诚实验证者需要对一个区块进行证明。从他们的角度来看,他们看到了区块 N+2 和带有这一个私人证明的区块 N+1。如果他们运行分叉选择,他们会发现区块 N+1 的权重高于区块 N+2,因为 N+1 有私人证明,而 N+2 没有。甚至所有诚实的验证者实际上都会对区块 N+1 进行证明。在 N+3 中,显而易见,N+1 将被视为链的头部。
网络延迟与攻击 (10:25)
我假设了零延迟,这显然不是实际情况。延迟是存在的——在 P2P 层上传播区块和消息需要时间。
攻击者仍然能够实施这种攻击的方法是,在 P2P 拓扑结构的不同位置部署大量节点。当诚实的提议者在时隙 N+2 中提议该区块时,你会在传播过程的早期就听到它。因此,你可以从所有这些不同的位置发布你的私人区块,这样大多数人会在听到区块 N+2 之前听到区块 N+1——这意味着他们看到区块 N+1 在权重上领先,并实际上会对它进行证明。
再次强调一下这里发生的事情:我们有一个提议者和一个单一的证明者,成功地完成了一次单区块重组。退一步说,这并不理想。
针对更长重组的平衡策略 (11:42)
如果你想玩点花样,你可以使用平衡策略来完成更长的重组。其核心思想是将诚实委员会分裂成对链的不同视图。
你以这样一种方式发布你的私人区块:大约一半的诚实节点在听到区块 N+2 之前听到你的私人区块和证明——所以他们对你的区块进行证明。对于另一半,你希望他们在对 N+2 进行证明之前听不到你的区块。
现在你有一半的诚实委员会对 N+1 进行证明,另一半对 N+2 进行证明。这有什么帮助呢?诚实委员会现在互相抵消了,而你作为攻击者甚至不需要与他们对抗——这基本上是攻击者梦想成真了。
看下图表:区块 N 一切照常,区块 N+1——同样的情况,你不发布它。诚实验证者对区块 N 进行证明。区块 N+2 出现,你很早就听到了它,然后你发布带有一次证明(即“摇摆票”)的区块 N+1——以这样一种方式:一半的诚实委员会在之前看到它,一半在之后看到它。一半投票给 N+1,另一半投票给 N+2。你实际上想要一个差一票的分裂,使得 N+2 多出一个证明,这样 N+3 就会构建在 N+2 之上,并让重组继续进行。
为了结束两区块重组:区块 N+3 被提议,你很早就听到了它,你发布区块 N+1 和你剩下的两个证明,淹没 P2P 层,这样大多数诚实节点就会投票给区块 N+1——使得它的权重高于区块 N+3,并且 N+4 构建在 N+1 之上。
仔细想想,在这些假设下进行这些重组的成本相对较低。即使你没有完美的分裂,因为 P2P 层非常大,你可以瞄准一个概率分布,使得攻击成本以委员会规模的平方根增长。
提议者提升缓解措施 (15:17)
让我们谈谈缓解措施。基本思路是什么?我们将赋予提议者更多的权力。如果一个有效的区块按时到达,让我们在此时隙期间提升这个区块的权重。在此时隙结束后,我们恢复通常的 LMD-GHOST 评分,一切照常。
因此,如果区块 N+2 按时被提议并且它是有效的,这个区块将获得一个提议者提升——假设是委员会规模的 80%。现在,攻击者这个可爱的小 N+1 证明就起不到作用了。绝对没戏。
平衡策略也不再起作用了,因为你有一个 50/50 的分裂,但提升总是将其推向一个方向。你不可能保持那个 50/50 的分裂。
其核心在于,有了这个缓解措施,攻击者的证明必须与提升竞争,才能说服诚实验证者按照他们的意愿投票。这打破了平衡策略,并基本上完全禁止了所有重组。好消息是——有一个开放的 PR,所以基本上它会在合并 (The Merge) 之前被合并。
关键要点 (16:48)
一些关键要点。我谈到了事后重组和事前重组之间的区别。我简要概述了工作量证明 (PoW) 与权益证明 (PoS) 中重组的不同环境。我向大家展示了如何实施事前重组,但同样重要的是,如何修复它。
如果你对此感兴趣,有一篇论文——更加详细,更加细致。幻灯片将会上传。如果你感兴趣,可以来找我交流,你也可以在 Twitter 上找到我。
希望这对大家来说很有趣。非常感谢。