本文介绍了以太坊分叉选择规则的重要性,阐述了其在工作量证明与权益证明中对链重组的影响,并探讨了可能对去中心化金融(DeFi)协议造成的攻击风险。文章深度分析了以太坊2.0合并后如何增强网络安全,以及采用不同区块生产模式(如Gasper和Tendermint)对重组攻击合理性的影响,最后提供了一些关键的应对策略。
近期讨论了矿工采用一种假设的修改版以太坊客户端的可能性,该客户端允许他们基本上接受贿赂以在链上进行短时间的重组(进行此类贿赂的主要用例是攻击DeFi协议)。
在这篇文章中,我们解释了在ETH2合并之后,这种攻击向量将更难执行。
一个分叉选择规则 是一个函数,由客户端评估,它以所见的区块和其他消息集作为输入,并输出“ 规范链”给客户端。分叉选择规则是必需的,因为可能会有多个有效链可供选择(例如,如果同时发布两个具有相同父节点的竞争块)。
重组是一个事件,其中一个曾经属于规范链的区块不再归属于规范链,因为一个竞争区块将其抹去。最终性是一个情况,分叉选择规则如此强烈地偏向某个区块,以至于在数学上不可能(或者至少经济上不切实际)对该区块进行重组。
在某些分叉选择规则中(例如Tendermint),重组是无法发生的;分叉选择规则简单地通过附加任何通过BFT共识最终确定的区块来扩展现有链。在其他分叉选择规则中,重组非常频繁。
在像以太坊这样的工作量证明区块链中,我们通常看到“最长链规则”(更准确地说是“最高总难度链规则”)。这意味着当客户端被展示两个区块链时,它会选择具有最高总难度的那一个(即该链上所有区块难度的总和)。
假设为了例子,区块的难度可以为100或110,想象以下场景:
你可以看到情况是如何发展的。如果一个新块4a到达并声明3a为父块,分叉选择规则将再次切换回第一条分叉,如此循环下去。
短时间的重组由于延迟而时常发生。矿工A和矿工B可能同时找到一个有效块,但由于区块在p2p网络中的传播方式,网络的一部分将首先看到A的区块,另一部分则看到B的区块。如果两个区块具有相同的难度,将会出现平局,客户端要么随机选择,要么选择最先被看到的区块。通常情况下,当某第三个矿工C在A的区块或B的区块上构建一个区块时,平局最终得以打破,而另一个区块则被遗忘。偶尔,运气不佳可能导致出现2-5区块的重组。超过这个数量的重组几乎总是由于极端的网络失败、客户端错误或恶意攻击。
短时间的重组并不是致命的,但它们仍对网络具有一些重要的负面影响:
在最坏的情况下,频繁的重组可能会完全使区块链的结算保证失效并阻止其进展。通常,块生产者的“激励兼容”策略应该是延长最长链。但是,如果某个特定区块的后状态极具吸引力(即有非常高的费用或者只有通过在该区块之后直接构建区块才能提取的MEV)会怎样呢?这个问题在过去的没有区块奖励的比特币和自私挖矿的背景下得到了探讨,并且今天正以以太坊生态系统中的DeFi相关MEV为背景进行探讨。
在这些情况下,试图“窃取”费用或MEV的动机很大,因为竞争而不是延长规范链的顶端。在下面的示例中,区块1的后状态极具吸引力,而区块2a已经被挖掘。然而,不是一个而是三个区块生产者选择在区块1上挖掘,而不是区块2a(为了获得在区块1之后暴露的任何MEV),这可能扩展到任意数量的参与方。
出于明显的原因,这种模式为恶意的51%攻击打开了大门。我们称参与这种重组挖矿策略的矿工为“短视理性”,因为这样做的决定在短期内可能是合理的。然而,他们对ETH有明确的(抵押者)或隐含的(矿工)多头头寸(因为费用和区块奖励以ETH计价),这意味着任何减少用户对以太坊信任的攻击都会损害他们自己的最佳利益,因而在长期中并不理性。
在中本聪的PoW中,区块在分叉选择中是“串行化”的。首先,挖掘出一个块,此时一个单独的竞争块可能会重组该块。如果该块生存下来并成为规范链的一部分,在(平均)13秒后,某个其他矿工在其上构建一个第二个区块。此时,需要一条包含两个竞争块的链来进行重组。随着更多区块在其上构建,重组链的难度将继续增加,但速度缓慢。
以太坊信标链实施了一种名为Gasper的PoS协议,同时具有名为LMD-GHOST的分叉选择规则。与中本聪的PoW相反,在区块生产期间有两个角色:
每12秒会有一个“时隙”,它表示提议一个区块的机会。对于每个时隙,一个洗牌算法返回一个由约1/32的验证者组成的委员会,其中1个验证者是提议者,其他人是见证者。见证者随后以并行方式对他们认为是规范链一部分的区块进行投票。由于委员会是随机生成的,攻击者无法集中他们的验证者于一个特定的时隙。
目前,信标链有196k个验证者,这意味着每个时隙的委员会规模为6125。因此,就算是单区块重组也是非常困难的,因为一个仅控制少数验证者的攻击者没有办法击败数千个诚实见证者的多数。
为了获取一些直观的例子,假设我们有2个时隙和24个验证者,其中9个是恶意的。验证者被分成两个委员会,由于随机洗牌,敌对者不太可能控制他们被分配给的任何组的超过50%。
更正式地说,拥有p%股份的恶意行为者控制一个N验证者规模委员会超过50%的概率遵循二项分布(其中k = N/2):
计算各种股份值的概率,我们得到了以下表格:
我们现在理解到,直接进行重组要求攻击者控制接近50%的所有验证者。
如果攻击者拥有~25-49%的见证者,仍然可以进行更微妙的攻击(参见这篇论文或这里以获取简要摘要)。然而,有已知的解决方案可以为这些攻击提供无意识的修复,提高安全性,接近不条件的50%。
最后,长重组是不可能的,因为所有超过两个时代的区块被视为“最终确认”,即不可能在它们之前回退。如果攻击者造成两个相互冲突的区块被最终确认(例如,通过控制67%的股份),系统需要回归依赖社会干预来恢复。
现在我们已经看到了不同分叉选择规则下重组的运作方式,值得通过一个简单的博弈论示例来分析何时矿工或验证者运行执行重组以获利的软件是有意义的。
我们可以以收益矩阵非正式地描述每种情境,其中“缺损”意味着“下载并使用实现重组的软件”。这些收益是“短视”的,不考虑长期后果。
在工作量证明的最长链中,短距离重组可以通过概率,即使是少量验证者集也能够进行。永远会有偶尔出现的后状态极具吸引力的区块,以至于即使1-10%的成功率也是值得尝试与这些区块的现有子块进行竞争。
矿工可以是一个中型池,寄希望于他们可以连续找到接下来的2-3个区块,或者他们可以将部分收入发送到一个“任何人都可以主张”的合约,以贿赂其他运行相同软件的矿工来在他们的链上构建,并帮助其超越现有的规范链。
因此,一些矿工可能会被引诱运行重组客户端。
在Gasper中,1-64个时隙的重组是可能的,但要求攻击者控制整个验证者集的大部分(因为他们无法将股份集中到一个特定的时隙,因此他们需要足够大,以在他们希望攻击的时隙范围内被随机选择到足够的股份)。除非其他大量验证者也同时采纳重组挖矿软件,否则重组挖矿软件的采纳是无用的。
因此,如果51%的验证者即使持有微弱的利他主义或懒惰,运行重组挖矿软件就不会是一个稳定的均衡。
在Tendermint中,故事更为简单:重组是不可能的,任何对单时隙最终权的违反都将使1/3以上的验证者遭到削减。类似于Gasper的情况,这也意味着运行重组挖矿软件的任何人都不是一个稳定的均衡。
正如我们上面所看到的,虽然“重组geth”的采用在所有情况下都是可能的,但基于某种平行见证的分叉选择规则具有比中本聪分叉选择中的均衡更加稳定的诚实均衡。
在以太坊的背景下,最有效的预防措施是进一步加快合并的工作,尤其是迅速实现可信用的能力进行“紧急合并”,将链转为PoS。急于进行合并将具有高风险,可能会破坏基础设施,但如果许多矿工开始重组攻击链,那么可信的承诺仍然进行将使对这种行为的激励不再一致。
靠近合并的时间是最大风险的时候,因为矿工们仍然掌控系统,但他们的时间范围在缩短。然而,有两个因素可以减轻这种风险:
合并后,重组验证将不再成为问题,因为单个见证者或小组见证者无法自行重组一个区块。成功进行重组攻击需要解决得到大量验证者同时上线的协调难题。然而,仍然存在一些小风险。如果希望进一步提高安全性,以太坊可以进一步调整分叉选择规则,提升重组攻击的要求至50%的理论最大值,或找到直接转向单时隙最终权共识的方法。
致谢:感谢Dan Robinson、Anish Agnihotri、Kevin Pang、Dave White和MEVIntern对草稿的评论。
- 原文链接: paradigm.xyz/2021/07/eth...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!