空中更换发动机:Pow 转向 PoS 的攻与防

原文作者:Dr. DODO

原文来源:Mirror

PoW 转向 PoS以太坊主网 Merge 越来越令人期待。4 月 11 日,以太坊完成了网络的第一个影子分叉,启动了一个从 PoW 过渡到 PoS 的合并测试网。9 月 6 日,以太坊 Bellatrix 硬分叉已经激活,主网将于 8 日后进行合并。Bellatrix 将信标链与主区块链相结合,是主网合并前的最后一次升级。

随着主网 Merge 的临近,PoW 分叉、两家稳定币的选择等话题在不断发酵。有一种观点认为,从 PoW 过渡到 PoS 无异于一架民航客机在空中飞行时更换发动机,那么 Merge 带来的共识机制转变究竟有多难?

1、什么是以太坊 Merge?

自采用工作量证明(PoW)共识算法以来,以太坊就一直在寻找更好的算法,以将其打造成一个去中心化、可扩展、安全和节能环保的网络。直到 2017 年,以太坊终于确定了一种混合 PoW /PoS 的系统 —— Casper the Friendly Finality Gadget。

此后的岁月里,以太坊 Merge 一再延迟,其缓慢的工作进度也让很多以太坊的支持者逐渐失去了信心。直到今年 6 月 8 日,以太坊在测试网 Ropsten 上顺利完成了第一次 Merge 彩排。

因此,Merge 可以视为对以太坊的升级,将当前共识机制替换为更加环保、高效和安全的权益证明共识机制。当 Merge 发生时,当前的 PoW 共识机制将被完全弃用,以太坊上的所有区块都将通过 PoS 产生。

2、Merge 如何发生?

Merge 以“最小破坏”原则进行,这使得原来运行的应用客户端可以无感地切换到 PoS。信标链先是作为 PoW 之上的中间层存在,类似第二层共识网络,待到“合并”,将这一层直接作为共识层,并将 PoW 层内的执行相关组件组合到新的共识层,PoW 不复存在。

信标链区块将包含执行层,执行层是当前 PoW 链上区块的合并后等价物。对于最终用户和应用程序开发人员来说,执行层是其与以太坊进行交互的地方。

在以太坊网络上完成的任何交易都不会在这次过渡中丢失 —— The Merge 不会对以太坊网络的数据层产生任何影响。

3、Merge 如何保证安全性?

质押机制

在以太坊的 PoS 中,任何人都可以质押 32 个 ETH 并成为一个验证者 —— 一个参与网络共识算法的节点,负责存储数据、处理交易,并向区块链添加新的区块。最终确定一个区块需要 2/3 的活跃验证者签名,从而保证以太坊的安全。在这个过程中,质押者会获得质押奖励。目前,信标链只允许存入 ETH,至少要等到以太坊主网和信标链合并后才能取回自己质押的 ETH。

当对一个确保数千亿美元资产安全的协议进行大规模修改时,总是存在风险,值得庆幸的是,目前的 PoS 以太坊链信标链自 2020 年 12 月以来一直在运行,没有出过任何故障。

为了保证安全平稳地运行,目前有 4 个独特的客户端实现 PoS 以太坊节点。这意味着,如果 PoS 节点运营商在特定的实施中遇到问题,他们将有能力切换到不同的客户端。

罚没规则

如果一个恶意的行为者试图通过使用大量的验证者来恢复一个已完成的区块(相当于 PoW 中的 “51%攻击”)来篡改底层协议,他们的资金会被罚没 —— 这意味着他们会失去一部分他们所质押的 ETH。这使得攻击变得非常昂贵。这就像一个 PoW 系统,如果你使用挖矿硬件来攻击网络,那么你的硬件就会被摧毁。

在 PoS 网络中,一个提议者挖出新的区块,证明者通过投票赞成这个区块是否成为区块链的一部分。罚没意味着验证者违反了规则,被迫退出。有三种罚没条件:

  • 作为提议者,该节点为一个区块签署了一个以上的信标区块
  • 作为证明者,节点在同一目标上签署了一个以上的证明
  • 作为证明者,节点签署了与历史冲突的证明

如果这些行为中的任何一个被发现,那么该节点将在未来 36 天左右被迫退出信标链。惩罚将在 36 天左右继续发生,直到节点可以退出。惩罚数量将根据网络状况而发生变化。

PoS

难度炸弹

难度炸弹的设计初衷旨在大大增加矿工在网络上验证交易的难度,让挖矿的盈利能力大幅下降,最终,矿工将无法验证区块,以便在期待已久的合并之前打消矿工的积极性。

正如 EthHub 解释的那样:“以太坊的‘难度炸弹’(Difficulty Bomb)是这样一种机制:在预定的区块数上,增加工作证明挖矿算法中谜题的难度,导致出块时间比正常时间长(从而减少矿工的 ETH 奖励)。这种机制随着时间的推移,难度呈指数增长,最终导致‘冰河时代’(Ice Age)—— 即在链上挖矿变得非常困难,以至于停止出块。”

难度炸弹在 2015 年加入到代码中,是合并成为共识层计划的一部分。不过随着以太坊合并的一再推迟,以太坊核心开发者 Andrew Ashikhmin 提议“延迟难度炸弹是最好的选择” 。

PoS

4、Merge的进度如何?

9 月 13 日,据欧科云链数据显示,当前距离以太坊合并仅剩不足 10,000 个区块,预计将于北京时间 15 日上午 10 – 11 点前后启动 Paris 升级。

PoS

值得一提的是,合并过程艰辛曲折。从 2017 年开始,Vitalik Buterin 就提议,要在 2019 年从 PoW 转向 PoS,但出于对难度、安全性等因素的考虑,拖延至今没有完成。其难点主要在于:资金量庞大、涉及的各方利益协调沟通非常繁琐和复杂。

2022 年 3 月 15 日,以太坊合并公共测试网 Kiln 上线,代表它已经成功过渡、升级到完整的 PoS 机制。2022 年 6 月 8 日,以太坊完成了 Merge 的第一次彩排——测试网 Ropsten 顺利完成了合并。Ropsten 于 2016 年推出,是迄今为止运行时间最长的以太坊测试网。据以太坊核心开发者消息,在Ropsten 的合并过程中约有 14% 的验证者出现停机状况,但大多是由于错误的节点配置所导致的,这些问题很快得到解决。此外,在 Ropsten 上的合并被认为近乎完美,并且成为以太坊向 PoS 迁移的重要里程碑。9 月 6 日,以太坊 Bellatrix 硬分叉已经激活,主网将于 8 日后进行合并。Bellatrix 将信标链与主区块链相结合,是主网合并前的最后一次升级。

Merge 后的工作路线是什么?根据以太坊基金会及其核心开发者的披露,总结如下:

  • 2023 年,The Surge(起飞)

合并并不会降低以太坊的 gas 费,但 The Surge 致力于解决以太坊交通拥堵与 gas 高昂的问题。以太坊将切割成 64 个分片,结合 Layer2 的 rollups 技术,理论上 tps 的上限可能是 10 万笔/秒(当前以太坊 tps 约为 13 笔/秒)。

根据以太坊基金会的预估,分片链应该会在 2023 年的某个时间上线,具体取决于合并后的工作进度,这些分片将增强以太坊存储和访问数据的能力,但不会用于执行代码。

  • The Verge(边界)

技术更新,计划从 merkle 树过渡到 verkle 树,可以将它们视为以太坊的数据库,这阶段由于区块数据增大,会反过来验证拓展性和分散网络。

  • ThePurge(清除工作)

清除,意味着并非所有节点都必须永久存储所有历史块。相反,客户端将停止存储超过一年的历史记录。这意味着以太坊对节点的硬件要求会降低,网络的带宽也会降低。

  • TheSplurge(狂欢)

杂项升级,简化以太坊的使用,使其更容易被普通用户访问。

5、PoS 的设计理念如何?

以太坊创始人 Vitalik 曾对 PoS 的设计理念做了解释:密码学是少有的易守难攻(面对攻击时防御者比攻击者更有优势)的技术,就好比进攻城堡比建立城堡容易太多,岛屿防御性更强,但仍难免被攻击。相比起来,一个普通人的密钥却是足够安全的,甚至可以抵御国家级别的攻击。密码朋克理念从根本上说,是利用这种宝贵的非对称性更好地保护个人主权,加密经济是这种思想的延伸,只不过它是保护协调复杂系统的安全性和有效性,而不仅仅是简单的私人信息的完整性和保密性。密码朋克精神的思想继承者应该保持这一基本属性,让破坏比使用或维护的成本高得多。

密码朋克精神不仅仅是一种理想主义,制造防御比攻击更容易的系统也是其中最基本的工程。

然而,仅由社会共识保护的区块链过于低效和缓慢,而且太容易让分歧无休止地持续下去;因此,通过经济手段达成共识,在短期内对保护有效性和安全性方面起到了极其重要的作用。

因为 PoW 的安全性只能来自于区块奖励,而对矿工的刺激只能来自于他们失去未来区块奖励的风险,PoW 是由大量奖励激励运行的系统。PoW 从攻击中恢复是非常困难,Vitalik 不看好这种逻辑,因为它不仅能源消耗巨大,且并未实现密码朋克精神,攻击成本和防御成本是 1:1 的比例,所以不存在防御者优势。

PoS 打破了这种对称性,它不是依靠奖励而是依靠惩罚来保证安全。验证者把钱质押起来,得到些许奖励,以补偿他们锁定资本和维护节点,并采取额外的预防措施,以确保他们的私钥安全,但还原交易的大部分成本来自于惩罚,这些惩罚比他们在此期间得到的奖励大数百甚至数千倍。因此,用一句话高度概括,PoS 不是“安全来自于燃烧电能”,而是“安全来自于投入的经济价值的损失”。

6、PoS 为何是更好的机制?

基于 Vitalik 的观点,总结如下:

1) PoS 以同样的成本提供了更多的安全性

我们分别计算一下 PoS 和 PoW 中,为了获得每天每 1 美元的区块奖励,所需支付的攻击网络的成本是多少。

基于 GPU 的 PoW

攻击者攻击一个网络需要付出的成本是:租用足够的 GPU 功率超越现有矿工。对于每 1 美元的区块奖励,现有的矿工花费接近 1 美元的成本(如果他们花费更多,矿工会因为无利可图而退出,如果他们花费更少,新的矿工可以加入进来并获取高额利润)。因此,攻击网络只需要每天花费超过 1 美元,而且只需要几个小时。

假设攻击 6 小时,租用 6 小时的 GPU,所需耗费的租金成本约为 0.26 美元。随着攻击者获得区块奖励,其成本可能降低到零。

PoS

PoS 的成本主要是资本投入(即被存入的币)与运营节点的运营成本。存入的币不会贬值,当参与者完成质押后,会在一段时间后拿回他们存入的币。因此,参与者愿意为相同数量的奖励支付高得多的资本成本。

假设约 15% 的回报率足以激励人们质押,那么,每天 1 美元的奖励将吸引 2433 美元的存款,用时长达 6.667 年。运营一个节点的硬件和电力成本很小,每个月只需要 100 美元的电费和网络费,但一台千元的电脑可以质押几十万美元的存款。我们可以保守地假设,这些持续的成本是质押总成本的 10%,投入的资本对应的奖励是每天 0.9 美元。

攻击的总成本:0.90 美元/天* 6.667 年= 2189 美元(6.667 年=1 美元/(15% 回报率);2433 美元=1 美元/天x365x6.667,1/0.15=6.667 (return/IRR))

从长远来看,这个成本预计会更高,因为质押变得更有效率,人们变得适应较低的回报率。Vitalik 预计这个数字最终会上升到 10000 美元左右。

为获得如此高的安全水平而产生的唯一“成本”,是在 staking 时不能随意移动你的币。甚至可能的情况是,这些币因为被锁起来会导致币价上升,所以在社区里锁定的、准备进行生产性投资的资金总量保持不变。而在 PoW 中,维持共识的“成本”是电力被大量燃烧。

2)在 PoS 中,攻击更容易恢复

在一个 PoW 网络中,如果你的链遭遇了 51%攻击,你会做什么?到目前为止的历史实践中,唯一的反应是“等到攻击者厌倦”。但这忽略了一种更危险的攻击的可能性,即 spawn camping attack——攻击者会一次又一次地攻击链,其明确的目标是使该链失效。

在 PoW 的网络中,一个持续的攻击者可以很容易地使一个链永久地失去作用。最初的几天里,攻击者的成本可能会变得非常低,诚实的矿工会退出,因为他们没有办法在攻击进行时获得奖励。

在 PoS 的网络中,情况要好得多。对于某些类型的 51% 攻击(特别是恢复已完成的区块),PoS 共识中有一个内置的罚没机制,通过该机制,攻击者的大部分权益会被自动销毁,而不会影响到其他人的权益。第一次攻击链将花费攻击者数百万美元,而社区将在几天内恢复正常。第二次攻击链仍将使攻击者损失数百万美元,因为他们需要购买新币来替换被烧毁的旧币。而第三次将……花费更多的数百万美元。这个游戏是非常不对称的,对攻击者不利。

3)更加节能

PoS 节点的能源效率估计比 PoW 节点高 99%(或更多),所以 PoS 代表了区块链技术在能源效率方面的巨大飞跃。PoW 机制是非常耗能的,为了在网络上产生每个区块,参与者需要使用强大而耗能的 GPU 来解决一个复杂的数学问题,谁先解决了区块,谁就获得了奖励。简单地说,PoW 是一场军备竞赛,如果你比你的竞争对手拥有更多的哈希率,你就更有可能获胜。这种军备竞赛的最终结果是,PoW 矿工以100% 的负荷,每天 24 小时运行尽可能多的 GPU。他们想赚取的区块奖励越多,对电力的需求就越高。

PoS

在 PoS 中,区块提出者是随机选择的,军备竞赛将不再存在,没有必要消耗更多的能量来提高竞争优势,因而不需要像 PoW 那样的能源密集型硬件,任何相对较新的消费类硬件都能够运行操作 32 个ETH 质押节点所需的软件。如果你存入超过 32 个ETH,你将被协议分配到多个“验证者 slots”,但你仍然能够从一台计算机上运行它们,尽管质押的越多,硬件要求就越高。

采用 PoS 机制将更加环境友好化,极大的降低耗电量。十万次 Visa 交易使用 149 千瓦时的能源,以太坊 PoS 十万次交易仅消耗:0.1667 * 4 = 0.667 kWh,相当于 Visa 相同数量的交易所使用能源的0.4%,与以太坊目前的 PoW 网络相比,能源支出减少了 225 倍。

PoS

4)更高的抗审查能力

要成为 PoW 网络的矿工,你需要购买挖矿硬件,需要廉价和可靠的能源,还需要一定技术和能力来运行和维护你的“矿场”。挖矿的头部效应使得小规模的采矿难以与大矿场竞争,而由于大量的电力消耗,中央机构很容易发现矿场,并关闭它们,或胁迫它们参与攻击。而 PoS 质押则可以在一台不起眼的笔记本电脑上完成。

7、PoS 的攻与防

激励层

由于信标链是一个 PoS 区块链,使用以太坊的原生加密货币 ETH 进行保护,那些希望参与验证区块以及识别区块链头部(head)的节点运营商将 ETH 存入以太坊的智能合约中以此获得 ETH 的报酬以运行验证器软件,检查通过对等网络接收到的新区块的有效性,并应用分叉选择算法来识别区块链头部。PoS 以后,节点运营商现在是「验证者」,而验证者有两个主要角色:1)检查新区块并「证明」它们是否有效,2)从总验证器池中随机选择时提出新区块。如果验证者在被询问时未能完成这两项任务中的任何一项,他们就会错过 ETH 支付。还有一些非常难以意外执行,并且表示有恶意意图的操作,例如在同一个 slot 提出多个区块,或在同一个 slot 证明多个区块,这些是「可罚没」的行为,可导致验证器在从网络中移除之前燃烧一定数量的 ETH(最多为 0.5 ETH),这需要 36 天。被罚没的验证器的 ETH 在退出期内会缓慢流失,但在第 18 天,当有更多的验证器同时被罚没时,它们会受到更大的「相关性惩罚」。因此,信标链的激励结构是奖励诚实行为者,并惩罚不良行为者。

分叉选择

分叉选择算法由每个验证器运行,其作用是识别区块链的头部。在完全诚实的验证器及零网络延迟的理想条件下,分叉选择算法实际上是不必要的,因为此时区块链的顶端只有一个区块。然而,在现实当中,一些客户端会比其他客户端更晚接收区块,从而创建了区块链头部的多个版本,并且可能存在一定比例的行为不端的验证器,这些验证器可能在同一个 slot 提议或投票多个区块。这意味着必须要有某种算法来从多个选项中挑选出真正的区块链头部。稍微提一下,信标链也会以固定的间隔使区块链固定不变,这被称为「最终性」(finality)。该过程通过将每个 epoch 中的第一个 slot 视为「检查点」来工作。如果一个检查点从持有存款合约中至少 2/3 总质押 ETH 的验证器那里收集证明(投票),那么它被称为「justified」的。一旦该检查点在其之上有另一个检查点,它就成为「最终」检查点。然后,分叉选择算法只考虑区块链中不合理部分的区块。证明并最终确定区块链的算法称为「Casper FFG」,而分叉选择算法本身被称为 LMD-GHOST(代表「最新消息驱动的最贪婪、最重的观测子树」),这是一种用行话表达的方式,即正确的区块链是累积了最多证明(GHOST)的区块链,并且如果从同一验证器接收到多条消息,则只有最后一条消息才算(LMD)。每个验证器使用此规则评估每个区块,并将最重的区块添加到其规范链中。每个 epoch 时期,验证器需要签署一份证明,该证明包含两条关键信息:「LMD 投票」和「FFG 投票」。LMD 投票是验证器认为区块链头部的区块的根,FFG 投票包含目标检查点和源检查点的区块哈希以及 epoch,其中源检查点是链已经知道的最近正当检查点,而目标检查点是下一个要证明的检查点。因此,信标链的共识算法是 LMD-GHOST 和 Casper FFG 的组合,有时我们也将其称为 Gasper。简单了解了这个背景知识后,我们可以继续研究这个系统可能受到的一些攻击方式。

第 0 层攻击

首先,没有积极参与以太坊(通过运行客户端软件)的个人,可选择针对社交层(第 0 层)来攻击以太坊网络。尽管这些攻击从未真正直接影响任何以太坊软件的执行,但它们会给以太坊带来风险。第 0 层是构建以太坊的基础,因此它代表了一个潜在的攻击面,其后果会波及堆栈的其余部分。以下是我想到的一些例子:

1、跨多个平台发起并持续数月或数年的重大错误信息宣传活动,可能会削弱社区对以太坊路线图、开发团队的信任。这可能会减少愿意参与网络安全的个人数量,降低去中心化和加密经济安全性。

2、针对开发者社区的定向攻击或恐吓,这可能导致开发人员自愿退出,并减缓以太坊的发展,同时更广泛地打击士气。

3、过度热情的监管也可以被视为一种第 0 层攻击,因为它可能会迅速抑制参与和采用。

4、知识渊博但恶意的参与者渗透到开发者社区,其目的是通过减少讨论、延迟关键决策、创建垃圾帖或转移注意力提案等来减缓进度。

5、故意煽动以太坊社区的不满情绪,目的是制造足够的动荡以造成永久性分裂。

6、向以太坊生态系统中的关键参与者行贿以影响决策。

在很多情况下,发动 L0 攻击所需的资金或技术知识很少,这使得对社交层的攻击尤其危险。真正需要的只是时间和恶意的意图,而不是稀缺的资源。思考第 0 层攻击如何成为一次加密经济攻击的倍增器也很有趣。例如,如果审查或最终性逆转是由恶意的多数质押者实现的,那么破坏社交层可能会使带外(out-of-band)社区协调响应更加困难。

防御第 0 层攻击可能并不简单,但可以建立一些基本原则。一是保持以太坊公共信息的整体高信噪比,以太坊由社区的诚实成员通过博客、discord 服务器、带注释的规范、书籍、播客以及 YouTube 创建和传播。Ethereum.org 就是一个很好的例子,特别是他们正在迅速将其广泛的文档和解释文章翻译成多种语言。用高质量的信息和 meme 充斥一个空间,是防止错误信息的有效防御措施(信息缺口是脆弱的)。以太坊社区擅长于此,但长期的第 0 层安全需要持续致力于创建和传播高质量信息。

另一个针对社交层攻击的重要防御措施,是明确的使命声明和治理协议。以太坊将自己定位为智能合约 L1 中的去中心化和安全冠军,同时也高度重视可扩展性和可持续性。无论以太坊社区出现什么分歧,这些核心原则都会受到最低限度的影响。根据这些核心原则评估叙述,并通过 EIP(以太坊改进提案)过程中的连续几轮审查,可能有助于社区区分出好人和坏人,并限制恶意行为者影响以太坊未来方向的范围。

最后,以太坊社区保持开放并欢迎所有参与者,这一点至关重要。一个有看门人、精英主义和排他性的社区,尤其容易受到社交攻击,因为这很容易构建「我们和他们」的叙事。另一方面,一个开放和包容的社区是通过开放的讨论更有效地消除错误信息的社区。部落主义和有毒的最大主义(maximalism)伤害了社区,这会侵蚀第 0 层的安全。以太坊通常有一个非常开放的社区,它欢迎新的参与者,但随着社区规模的扩大,这可能会变得越来越难以维持。对网络安全有既得利益的以太坊社区成员,应将其在线行为和在现实世界中的行为视为对以太坊第 0 层安全的直接贡献,因为正如我们将在本文后面讨论的,强大的社交层是抵御协议攻击的最后一道防线。

攻击者的奖励

第 0 层攻击可能旨在破坏公众对以太坊的信任、使 ETH 贬值、降低以太坊的采用率,并使以太坊容易被其他竞争链超越,或者是削弱以太坊社区,使带外协调 (out-of-band coordination) 更加困难。然而,攻击以太坊网络本身所能获得的好处并不明显。

一个常见的误解是,成功的攻击允许攻击者生成新的 ETH,或从任意账户中提取 ETH。这两种说法都是不可信的,因为添加到区块链的所有交易都由网络上的所有执行客户端执行。它们必须满足有效性的基本条件(例如,交易由发送方的私钥签名,发送方有足够的余额等),否则它们会简单地还原。攻击者实际上可能会针对几种结果发起攻击:重组(reorgs)、双重最终性(double finality)或最终性延迟(finality delay)。

重组是对区块链头部区块的重新排列。在攻击中,这旨在确保包含或排除某些区块,即使它们不在诚实的网络中。这可能允许攻击者进行「双花」,例如,将他们的 ETH 发送到交易所并将其兑现成法定货币,然后重组以太坊区块链以删除这笔交易,这样他们最终能够拿回 ETH 并获得法币。或者,重组可能允许老练的攻击者通过抢先交易(front-running)或尾随式交易(back-running)从其他人的交易中提取价值(MEV),或者重组可能会持续阻止某人或某些组织的交易被包含在规范链中,从而有效地从以太坊网络中对其进行审查。

最极端的重组形式是最终性反转(finality reversion),它可删除或替换先前已经确定的区块。这种情况只有在至少 1/3 质押的 ETH 被销毁时才有可能发生,这种保证被称为「经济最终性」,稍后我们会详细介绍。

双重最终性(Double finality)攻击的可能性很低,但这种情况会很严重,发生时两个分叉能够同时确定区块,从而造成永久性的区块链分裂。这在理论上是可能的,只要攻击者能够掌握 34% 及以上总质押的 ETH,并愿意冒险失去它们。然后社区将被迫进行链外协调,并就遵循哪条链达成共识。稍后我们将详细探讨这些类型的社会协调防御。

最终性延迟(finality delay)攻击会阻止网络达到 Casper-FFG 确定链的必要条件。这将对以太坊的应用层造成极大的破坏,因为在以太坊之上运行的许多应用都依赖于快速最终性来运行。如果对区块链的最终确定性没有高度信心,就很难相信建立在它之上的金融应用。最终性延迟(finality delay)攻击的目的,可能只是为了破坏以太坊,而不是直接获利,除非攻击者部署了一些战略空头头寸。

懒惰和发送相互矛盾的消息(Laziness and Equivocation)

任何人都可以运行以太坊的客户端软件,即使没有运行验证器。人们这样做是因为它提供了区块链的本地副本,可用于非常快速地验证数据,并使交易能够私下提交给以太坊网络,而无需通过中心化的第三方(例如 Infura 或 Quicknode)。然而,不同时运行验证器的节点运营商,就无法参与区块生产或验证。这意味着他们根本不会影响到网络安全。非验证节点运营商攻击信标链的可能性可以忽略不计,除非他们也发起不相关的第 0 层攻击。

要向共识客户端添加一个验证器,用户需要在存款合约中质押 32 ETH。通过一个活跃的验证器,用户开始通过提议和证明新区块来积极参与以太坊的网络安全。在承担这些额外责任的同时,用户以 ETH 的形式获得回报,但这也给他们带来了报复行为的新机会。验证者现在有了发言权,他们可以用于影响区块链的未来内容,他们可以诚实地工作以增加他们的 ETH 储备,或者他们可以冒着风险,尝试操纵这个过程以实现自己的利益。发起攻击的一种方法是累积大比例的质押权益,然后用它来击败诚实的验证者。攻击者控制的质押权益比例越大,他们的投票权也就越大,尤其是在我们稍后将探讨的某些经济里程碑上。然而,大多数攻击者将无法积累足够的 ETH 来实现这种攻击方式,因此他们不得不使用微妙的技术来操纵诚实的大多数人以某种方式行事。

从根本上讲,所有针对信标链的小规模质押攻击(small-stake attacks)都是两种类型的验证器错误行为的细微变化:活动不足(未能证明/提议或延迟执行)或过度活动(在一个 slot 时间段中提议/证明次数过多)。在最普通的形式中,这些行为很容易由分叉选择算法和激励层处理,但有一些聪明的方法可以让这些算法对攻击者有利。目前已经发现了几种这样的技术,主要是仔细协调其消息的时间和传播,以控制整个验证器集的不同子集如何查看区块链的状态,从而控制它们的行为方式。下一节将描述低质押(low-stake)攻击者攻击网络的一些方式,以及如何抵御这些攻击。

小型质押者的攻击

a. 短程重组(Short range re-orgs)

有几篇论文解释了针对信标链的攻击,这些攻击仅使用了一小部分质押的 ETH 来实现重组或最终性延迟攻击。这些攻击通常依赖于攻击者向其他验证器隐瞒一些信息,然后以某种微妙的方式或在某个适当的时候发布它。这些攻击通常旨在从规范链中替换一些诚实的区块。当攻击开始时,这些诚实的区块尚未被创建,这种攻击被称为事前重组(ex ante reorg),而不是事后重组(在这种重组中,攻击者回顾性地从规范链中删除已经验证的区块)。在 PoS 以太坊中,如果不控制 2/3 质押的 ETH(按当前价格计算约为 180 亿美元),事后重组实际上是不可能的。如果攻击者控制的质押权益百分比少于 66%,则攻击者完成事后重组的机会非常低(即使攻击者控制了 65% 的质押权益,他们的成功机会也小于 0.05%)。

PoS

另一方面,可以很好地防止事后重组的相同机制,可以被老练的攻击者在非常特定和不太可能的网络条件下用来创建事前重组。例如,这篇论文展示了攻击验证者如何为特定 slot n + 1 创建和证明区块 (B),但避免将其传播到网络上的其他节点。相反,他们会扣留该已证明的区块,直到下一个 slot n + 2。诚实的验证者为 slot n + 2 提出一个区块(C)。几乎同时,攻击者可以释放他们扣留的区块(B)及其保留的证明,并证明区块(B)是区块链的头部,他们对 slot n + 2 的投票,有效地否认了诚实区块(C)的存在。当诚实区块(D)被释放时,分叉选择算法看到区块(D)建立在区块(B)之上,要比建立在区块(C)之上的区块(D)更重。因此,攻击者成功地使用 1 区块事前重组将 slot n + 2 中的诚实区块(C)从规范链中移除。掌握 34% 质押权益的攻击者有很好的机会在这次攻击中获胜,因为他们的投票给了攻击者首选的分叉 68% 的权重,而诚实分叉的权重为 66%,如此处所述。这意味着他们不需要依靠操纵诚实的验证器来与他们一起投票。不过,理论上,这种攻击可以用更少的质押比例来尝试。Neuder 等人 描述了在 30% 质押比例下的事前重组攻击方式,但后来证明,在控制 2% 比例的质押权益下,这种事前重组攻击也是可行的。

PoS

一个成功的重组攻击者无法改变历史,但他们可以不诚实地改变未来。他们不需要控制大多数质押的 ETH 就可以做到这一点,尽管他们成功的机会会随着控制质押比例的增加而增加。这种重组攻击可允许他们实现双花或通过 front-running 大额交易来提取 MEV。这种攻击还可以扩展到多个区块,但成功的可能性会随着重组长度的增加而降低。

PoS

b. 弹跳攻击和平衡攻击(Bouncing and Balancing)

更复杂的攻击可以将诚实的验证器集,拆分为对区块链头部有着不同看法的离散小组,这被称为平衡攻击(balancing attack)。在这种情况下,攻击者等待机会提出一个区块,当它到达时,他们会在同一个 slot 中提出两个区块。他们将一个区块发送给诚实验证器集的一半,将另一个区块发送给另一半。分叉选择算法将检测到这种模棱两可的情况,并且区块提议者会被罚没并从网络中弹出,但这两个区块仍然存在,并且将有大约一半的验证器集证明每个分叉。在花费单个验证器罚没成本的情况下,攻击者成功地将区块链一分为二。与此同时,其余的恶意验证器扣留了他们的证明。然后,通过在执行分叉选择算法时有选择地将有利于一个或另一个分叉的证明发布给足够的验证器,他们能够让网络看到任何一个具有最多累积证明的分叉。这可以无限期地继续下去,攻击验证者在两个分叉上保持验证器的平均分配。由于两个分叉都无法吸引 2/3 的绝对多数,所以信标链无法最终确定。攻击验证者控制的质押权益比例越大,在任何给定 epoch 时间段进行攻击的可能性就越大,因为他们越有可能选择验证器在每个 slot 中提议一个区块。即使只控制 1% 的质押权益,发动平衡攻击的机会平均每 100 个 epoch 时期就会出现一次,这并不需要等待太久。

c. 弹跳攻击和平衡攻击的防御措施

弹跳攻击和平衡攻击都依赖于攻击验证器将其证明延迟到某个适当的时刻,以便对网络产生巨大的影响。因此,只有在不太可能的网络同步条件下,并且攻击者通过紧密协调的共谋验证器对消息时间进行非常精细的控制情况下,这种攻击才是可行的。尽管如此,仍然有必要关闭这个攻击向量。为了防止迟到的消息影响共识,与及时收到的消息相比,迟收到的消息的权重可以减少。这被称为提议者权重提升(proposer-weight boosting)方案。

对于弹跳攻击,修复方法是更新分叉选择算法,以便最新的合理检查点只能在每个 epoch 的前 1/3 slot 期间切换到替代链的检查点。这种情况可以防止攻击者保存投票,以便以后部署。针对这些延迟投票攻击的另一种防御措施是,与每个 slot 迟到的投票相比,为及时到达的投票分配更大的权重。

结合起来,这些措施创造了一个场景,在这个场景中,一个诚实的区块提议者在 slot 开始后非常迅速地发出它们的区块,然后大约 1/3 slot(4 秒)的时间段,这个新区块可能会导致分叉选择算法切换到另一条链。在同一截止时间之后,与较早到达的证明相比,来自较慢验证器的证明的权重会较低。这非常有利于快速提议者和验证器确定区块链头部,并大大降低弹跳攻击和平衡攻击的可能性。从本质上讲,这些防御措施可以防止基于大型网络异步性的攻击,即使在上述情况下,也不需要对消息发布进行精细控制。因此,在很大程度上,这些类型的攻击风险,已通过对分叉选择算法的修改得到了缓解,这些修改有利于快速活动并惩罚延迟。

值得一提的是,提议者权重提升(proposer-weight boosting)方案只能抵御「廉价重组」攻击,即攻击者以少量质押权益进行的重组攻击。事实上,在另一种事前重组攻击中,提议者权重提升方案本身可能被更大的质押者玩弄。这篇文章的作者描述了控制 7% 质押权益的攻击者如何战略性地部署他们的投票,以欺骗诚实的验证器在他们的分叉上构建,重组掉一个诚实的区块。投票给对手分叉的诚实验证器会及时投票,以便攻击者从提议者权重提升方案中受益。同样,这种攻击是在假设理想的延迟条件下设计的,而在实际情况下很难满足这种条件。总的来说,攻击者控制的质押权益比例越大,其成功攻击的几率就越大。而更大的质押权益,也意味着更多的风险资本以及更强的经济抑制力。

d. 高级平衡攻击

上面描述的弹跳攻击和平衡攻击依赖于恶意验证器对网络上其他验证器何时收到他们的消息进行非常精细的控制,而这类攻击已通过提议者权重提升(proposer-weight boosting)方案有效地缓解了。但是,研究者还描述了一种额外的攻击,它不依赖于对网络延迟的细粒度控制。在这种情况下,攻击者需要在两个后续 slot 中使用一个提议的验证器(在任何两个 slot 中发生这种情况的概率,都会随着攻击者控制的验证器的的增多而增加)。其中一个对抗性区块提议者在 slot n 中提议一个区块,然后第二个对抗性区块提议者在 slot n+1 中提议一个冲突区块,从而创建一个分叉。由于没有一个区块提议者模棱两可(equivocated),因此不会发生罚没的情况。在这个例子中,我们假设分叉 A 会更有利。攻击者可以知道这一点,攻击者还可以估计网络上一半验证器提交证明所需的时间……来自 slot n 的保留投票可以在大约一半验证器投票的时间点被释放。这些是来自 slot n 的支持分叉 B 的证明。因此,一半的验证器组投票支持分叉 A,因为它们不知道分叉 B 上的额外证明,而另一半投票支持权重更重的分叉 B。在 n+1 中扣留的敌对投票可用于弥补分叉 B 上因发布扣留证明的时间不准确而造成的任何不足。

这种平衡攻击是针对分叉选择算法的理想版本描述的,它比以太坊共识客户端中实际实现的分叉选择算法具有更可预测的证明时间,而在真正的信标链上执行这种攻击,则要困难得多。将攻击者的节点分布在网络拓扑中可以帮助攻击者在一定程度上克服这一问题,因为他们的消息在整个网络中传播的速度要快于来自一个拓扑位置的消息。

还有人提出了一种专门针对 LMD 规则的平衡攻击,尽管有了提议者权重提升(proposer-weight boosting)方案,这种攻击仍被认为是可行的。攻击者通过模糊他们的区块提议,并将每个区块传播到大约一半的网络来建立两条竞争链,从而在分叉之间建立近似平衡。然后,相互勾结的验证器会模棱两可地投票,以使一半的网络首先收到它们对分叉 A 的投票,而另一半网络首先收到它们对分叉 B 的投票。由于 LMD 规则丢弃了第二个证明并且只为每个验证者保留第一个证明,因此一半的网络只会看到 A 的投票而 B 没有投票,另一半网络会看到 B 的投票而 A 没有投票。文章的作者描述了 LMD 规则赋予了攻击对手「非凡的力量」来发起平衡攻击。

这种 LMD 攻击向量,已通过更新分叉选择算法关闭了,以便它完全从分叉选择考虑中丢弃模棱两可的验证器。模棱两可的验证器也可以通过分叉选择算法降低其未来影响。这可以防止上述平衡攻击,同时还可以保持对雪崩攻击(avalanche attacks)的弹性。

e. 雪崩攻击(avalanche attacks)

2022 年 3 月的一篇论文描述了另一种称为雪崩攻击(avalanche attacks)的攻击类型。这篇论文的作者认为,提议者权重提升(proposer-weight boosting)方案无法防止雪崩攻击的某些变体。然而,论文作者也只展示了对以太坊分叉选择算法的高度理想化版本的攻击(他们使用了没有 LMD 的 GHOST)。

要发动一次雪崩攻击,攻击者需要控制多个连续的区块提议者。在每个区块提议 slot 中,攻击者扣留他们的区块,收集它们直到诚实链达到与扣留区块相等的 subtree 子树权重。然后,攻击者释放被扣留的区块,使其最大程度地造成混乱。这意味着,例如,对于 6 个扣留区块,第一个诚实区块 n 与敌对区块 n 竞争创建一个分叉,然后所有 5 个剩余的敌对区块都在 n+1 处与诚实区块竞争。这意味着建立敌对区块 n 和 n+1 的分叉现在吸引了诚实的证明,因为此时诚实链的权重等于敌对链的权重。现在可以对剩余的扣留区块重复此操作,从而允许攻击者阻止诚实的验证器跟随链的诚实头部,直到攻击者模棱两可的区块用完为止。如果攻击者在攻击过程中有更多机会提出区块,他们可以使用这些区块来扩展攻击,这样,越多的验证器参与共谋攻击,攻击持续的时间就越长,并且可以将更多诚实的区块从规范链中移出。

而 LMD-GHOST 分叉选择算法的 LMD 部分减轻了雪崩攻击,LMD 的意思是「最后一条消息驱动」,它指的是每个验证器保存的一个表格,其中包含从其他验证器收到的最新消息。只有当新消息来自比特定验证器表中已存在的 slot 更晚的 slot 时,该字段才会更新。在实践中,这意味着在每个 slot 中,接收到的第一条消息就是它接受的消息,任何附加消息都可以忽略。换句话说,共识客户端使用来自每个验证器最先到达的消息,并且相互矛盾的消息会被简单地丢弃,以防止雪崩攻击。

f. 最终性延迟

首次描述低成本单区块重组攻击的同一篇论文,还描述了一种最终性延迟(也称为「活性失效」)攻击,该攻击依赖于攻击者是 epoch 边界区块的区块提议者。这是至关重要的,因为这些 epoch 边界区块成为了 Casper FFG 用于最终确定链的各个部分的检查点。攻击者简单地扣留他们的区块,直到有足够多的诚实验证器使用其 FFG 投票支持前一个 epoch 边界区块作为当前最终性目标。然后,他们释放扣留的区块,并证明自己的区块,而其余的诚实验证器也会这样做,这样会创建具有不同目标检查点的分叉。如果他们的时间恰到好处,他们将阻止最终性,因为不会有 2/3 的绝对多数证明任何一个分叉。攻击者控制的质押权益比例越小,则时间需要越精确,因为攻击者直接控制的证明越少,攻击者控制提出给定 epoch 边界区块的验证器的几率就越低。

g. 关于长程攻击(long range attacks)的说明

还有一类特定于权益证明(PoS)区块链的攻击,其涉及参与创始区块的验证器在诚实的区块链旁维护一个单独的区块链分叉,最终说服诚实的验证器在很久以后的某个适当时间切换到它。这种类型的攻击在信标链上是不可能的,因为「finality gadget」(直译为确定性小工具)可确保所有验证器定期就诚实链的状态(「检查点」)达成一致。这种简单的机制可以消除对长程攻击者的担忧,因为以太坊客户端根本不会重组最终确定的区块。加入网络的新节点通过找到一个受信任的最近状态哈希(称为弱主观性检查点)并将其用作伪创始区块来构建。这将为进入网络的新节点创建一个「信任网关」,然后它才能开始为自己验证信息。然而,从对等方或区块浏览器或其他地方收集检查点所需的信任,并没有增加隐含在客户端开发团队中的信任,因此主观性是「弱的」。因为根据定义,检查点由网络上的所有节点共享,所以不诚实的检查点是共识失败的症状,那此时,无论如何,带外社会协调必须接管以拯救诚实的验证者。

这一切都表明,要以少量的质押权益成功攻击信标链是非常困难的。这里描述的可行攻击需要一个理想的分叉选择算法,以及可能性极低的网络条件,或者攻击向量已通过客户端软件相对较小的补丁关闭。当然,我们并不能排除零日漏洞在野外存在的可能性,但这确实证明了少数质押权益攻击者要成功实现攻击所需的极高的技术能力,对共识机制的了解以及运气。从攻击者的角度来看,他们最好的选择可能是尽可能多地积累质押的 ETH。

h. 拒绝服务攻击(Denial of Service)

以太坊的 PoS 机制从所有验证器集中选择一个验证器,以作为每个 slot 中的区块提议者。这可以使用一个公共函数进行计算,并且对手有可能在他们的区块提议之前稍微提前识别下一个区块提议者。然后,攻击者可以向区块提议者发起垃圾信息,以防止他们与对等方交换信息。对于网络的其余部分,区块提议者似乎处于离线状态,并且 slot 将简单地变空。这可能是对特定验证者的一种审查形式,以阻止他们向区块链添加信息。攻击者的成本取决于验证者的带宽,这意味着对家庭质押者发起拒绝服务攻击,要比使用工业级硬件和互联网连接的专业人员要便宜得多,这使得业余爱好者更容易受到审查。这个问题有一些变通方法,但这些方案也有利于专业验证者,而不是家庭质押者。例如,运行多个节点并将区块构建与网络通信分开可以提供额外的保护层,因为节点身份和验证者身份是解耦的。节点运行者可能会在短时间内切换身份或重新获取身份,以避免拒绝服务攻击。从长远来看,实施单一秘密 leader 选举(SSLE)或非单一秘密 leader 选举方案可以更有效地缓解验证者审查问题,因为只有区块提议者才能知道他们已经被选中,并且事先不知道他们的选择。所有验证器都将对秘密的承诺提交到一个反复洗牌的池子当中。然后一个随机承诺会被公开选出,只有被选中的验证器才能知道,因为连接已经被混淆了。这项工作尚未实施,但它是一个活跃的研发领域。

验证者控制的质押权益比例大于或等于 33%

将质押 ETH 的控制权分散给更多人,要比集中在少数人的手中更安全。这是因为一个人控制的质押权益越多,其对以太坊共识的影响就越大。当攻击者掌握了足够的质押权益时,本文中提到的所有攻击都更有可能成功,并且可能选择更多的验证器在每个 slot 中提议区块。因此,恶意验证者的目标可能是控制尽可能多的质押 ETH。

33% 的质押 ETH 是攻击者的一个基准,如果其控制的 ETH 超过了这个数量,他们就有能力阻止信标链最终确定,而无需精细控制其他验证器的操作。它们可以简单地一起消失。这是因为要最终确定信标链,必须有 2/3 的质押 ETH 来证明检查点对(pairs of checkpoints)。如果 1/3 或更多的质押 ETH 被恶意证明或未能证明,那么 2/3 的绝对多数就不可能存在。对此的防御措施是信标链的消极惩罚(inactivity leak)机制,这是一种紧急安全措施,它会在信标链 4 个 epoch 时期未能最终确定后触发。消极惩罚(inactivity leak)标识了那些未能证明或证明与大多数人相反的验证器。这些非证明验证器拥有的质押 ETH 会逐渐流失,直到最终它们占总数的比例不到 1/3,这样区块链才能再次 finalize。

消极惩罚(inactivity leak)机制的目的是让信标链再次实现最终确定,而攻击者也会失去一部分质押的 ETH。假设没有可罚没的攻击,并且攻击验证器只是未能证明,它们的不活动分数被更新,这向网络的其余部分表明该验证器将在每个 epoch 时期受到惩罚,直到它们的不活动分数返回为零。当消极惩罚(inactivity leak)机制处于活动状态时,每个 epoch 的不活动验证器分数会增加 4,而活动验证器分数会减少 1。一旦消极惩罚(inactivity leak)机制停用(并且信标链再次最终确定),所有活动验证器的不活动分数都会降低。对于不活跃时间较长的验证器来说,这需要更长的时间,因为它们有更多的不活跃分数要消耗。而持续的不活动状态,会更慢消耗不活跃分数。对于一个离线 100 个 epoch 的验证器,它的不活动分数将达到 400 左右,而惩罚大小的计算公式为:

不活动分数 * 验证器余额/(不活动分数偏差 x 不活动惩罚商)

inactivity_score * validator_balance/(inactivity_score_bias x inactivity_penalty_quotient)

其中不活动分数偏差(inactivity score bias)是在每个 epoch 时期增加验证器分数的数字,不活动惩罚商(inactivity penalty quotient)是将非证明验证器的余额减少到其初始值大约 60% 所用时间的平方,设置的时间大约为 37.5 天。这意味着攻击者通过未能证明来阻止最终性的时间越长,他们质押权益被燃烧的越多。Upgrading Ethereum 展示了一个图表,该图表估计了始终处于脱机状态的验证器在短时间(100 个 epoch,大约 13.5 小时)消极惩罚期间和之后验证器余额的减少情况。在 135 个 epoch 时期之后,验证器的余额从 32 ETH 降至 31.996 ETH,损失了 0.004 ETH。而要让一个攻击者控制 33% 的 ETH 质押权益,他们必须运行大约 144,000 个 验证器,每个验证器至少持有 32 ETH。这意味着他们延迟信标链最终确定性的攻击,将至少花费 0.004 x 144000 = 576 ETH。按当前市场价计算,这大约相当于 109 万美元。花掉近 100 万美元的成本,将信标链的最终确定性推迟半天,这对信标链本身的长期影响很小。

当然,更持久的消极惩罚要更加昂贵,事实上,惩罚的幅度会呈二次方的速度增加,直到信标链再次开始最终确定。攻击者进行最终性延迟攻击的确切成本,取决于他们的初始余额、他们保持离线的时间以及重新获得最终性所需的时间。然而,最重要的是,即使验证器没有被罚没,33% 的验证器持续不活动也是极其昂贵的。

假设以太坊网络是异步的(即消息发送和接收之间存在延迟),控制 34% 总质押权益的攻击者可能会引发双重确定性(double finality)攻击。这是因为攻击者在被选为区块生产者时可以模棱两可,然后与其掌握的所有验证器进行双重投票。这创造了一种区块链分叉的情况,其中每个分叉都有 34% 质押的 ETH 投票支持。每个分叉只需要 50% 的剩余验证器投票支持两个分叉,从而得到绝对多数的支持,在这种情况下,两条链都可以最终确定(因为 34% 的攻击者验证器 + 剩余 66% 的一半 = 每个分叉 67%)。每个竞争区块都必须由大约 50% 的诚实验证器接收,因此只有当攻击者能够在一定程度上控制消息在网络上传播的时间时,这种攻击才可行,这样他们才能将一半诚实验证器推到每条链上。这也是为什么这种攻击需要网络异步的原因——如果所有节点都立即收到消息,它们将立即知道这两个区块,并通过拒绝较早接收的区块来处理模棱两可的问题。攻击者必须销毁其全部质押的权益(今天 1400 万质押 ETH 中的 34%)以实现这种双重确定性(double finality)攻击,因为他们 34% 的验证器将同时进行双重投票,而这是一种具有最大相关性惩罚的可罚没攻击。防御这种攻击的代价,只是销毁 34% 总质押 ETH 的巨大成本。

而从这种攻击中恢复过来,需要以太坊社区进行带外(out-of-band)协调并同意遵循其中一个分叉,而忽略另一个分叉。与这种社会支持相关的复杂性,我们将在后面讨论。

攻击者控制的质押权益比例大约为 50%

理论上,在一个恶意验证者控制的质押 ETH 比例达到 50% 的情况下,他可以将以太坊区块链分裂成两个大小相等的分叉。与前面描述的平衡攻击类似,攻击者可通过为同一个 slot 提出两个区块来仅使用他们的一个验证器。然后,攻击者不需要通过仔细传输消息来操纵一半的网络,而只需使用其全部 50% 的质押权益与诚实的验证器集进行相反的投票,从而维持两个分叉并防止最终确定性。在四个 epoch 时期之后,两个分叉上的消极惩罚(inactivity leak)机制将激活,因为每个分叉都会看到其一半的验证器无法证明。每个分叉都会泄露验证器集的另一半质押权益,最终导致两条链以代表 2/3 绝对多数的不同验证器完成。在这一点上,唯一的选择就是依靠社区恢复,稍后我们会提到。然而,考虑到诚实验证器数量、网络延迟等变化,一组敌对的验证者似乎不太可能始终精确地控制总质押权益的 50% 比例,但也许有一种方法,攻击者可以利用略高于 50% 的质押权益,动态调整其在每个 slot 中的投票比例,以保持两个分叉之间的完美平衡。虽然成功攻击的风险,无疑会随着攻击者掌握的质押 ETH 比例的大小增加而增加,但与 50% 的质押权益相关的攻击向量,似乎不太可能被成功利用,发动此类攻击的巨大成本以及较低的成功率,对理性的攻击者而言似乎是一个很强的抑制因素。

而当攻击者控制的质押权益占到 51% 以上,则其可以控制分叉选择算法。在这种情况下,攻击者将能够以多数投票作证,让他们有足够的控制权来进行短期重组,而无需欺骗诚实的客户端。控制 51% 的质押权益不允许攻击者改变历史,但他们有能力通过将多数投票应用于对其有利的分叉,或将区块重组来影响未来。诚实的验证器会效仿,因为它们的分叉选择算法也会将攻击者喜欢的链视为最重链,因此该攻击链可以最终确定。这使攻击者能够审查某些交易,进行短程重组,并通过重新排序对其有利的区块来提取最大 MEV。与工作量证明(PoW)链一样,51% 攻击也是非常有问题的。针对该问题的防御手段就是多数质押权益的巨大成本(目前略低于 190 亿美元),攻击者会面临巨大的风险,因为社交层可能会介入,并采用诚实的少数派分叉,从而使攻击者的质押权益大幅贬值。

攻击者控制的质押权益比例大于或等于 66%

控制 66% 或更多比例质押 ETH 的攻击者可以确定其首选链,而无需强制任何诚实的验证器。攻击者可以简单地投票选择他们喜欢的分叉,然后最终确定它,仅仅是因为他们可以不诚实的绝对多数进行投票。作为绝对多数的质押者,攻击者将始终控制最终区块的内容,其拥有花费、回滚和再次花费的权力,他还能审查某些交易并随意重组区块链。通过购买额外的 ETH 以控制 66% 质押比例,而不是 51%,攻击者实际上购买了事后重组和最终性反转的能力(即改变过去并控制未来)。当前控制 66% ETH 质押权益的成本约为 250 亿美元,这里唯一的防御措施是退回到社交层来协调采用替代分叉。在下一节中,我们会更详细地探讨这一点。

第 0 层:最后一道防线

当区块链的编码防御被破坏,并且攻击者能够最终确定不诚实的区块链时会发生什么?

这种情况可能会以多种方式出现,最明显的是,当攻击者控制多数质押权益,并且可以简单地通过他们自己的投票或 51% 以上诚实验证器的额外证明来完成。凭借控制 34% 质押比例的 ETH,以及对网络上消息传递的一些控制权,攻击者可以最终确定两个分叉。在某些情况下,重组链可能由于消极惩罚(inactivity leak)机制而最终确定。如果攻击者成功将验证器集划分为两个分叉,则消极惩罚(inactivity leak)机制将在两个分叉上激活,那么问题就变成了,诚实或不诚实的验证者会首先重新获得最终确定性吗?如果诚实的验证者首先确定,那么诚实链就会变成规范链,网络上所有客户端的分叉选择算法都会接受该链最终确定的部分,然后以太坊又回到了诚实玩家的控制之下。但如果不诚实的验证者设法确定了区块链,那么以太坊社区将处于非常困难的境地。规范链在其历史中会包含不诚实的部分,而诚实的验证者最终会受到惩罚。

不太可能发生的情况是永久性的网络分裂,其中一个分叉上的验证器不知何故不知道对方分叉上的对应方。这会创建出两个独立确定的分叉链,每个分叉都会泄露另一组验证器的质押权益。然后这两条链永远不会重新组合在一起,因为它们将有不同的最终检查点。来自主导客户端的漏洞(而不是攻击),也可能导致损坏但最终确定的链。在以太坊的执行层方面,go-ethereum (Geth) 客户端占到了主导地位,超过 85% 的节点运行了该客户端。而在共识层方面,Prysm 客户端目前占到了主导地位,在持续的社区活动之后,其占比才下降到 50% 左右。而主导执行客户端或共识客户端中的漏洞,可能会停止最终确定性或导致最终确定的数据不正确。在 Kiln 测试网上,Prysm 中的一个漏洞影响了区块生产,这无关紧要,因为节点在四个不同的客户端中的份额大致相等,但如果是在主网,那么有超过 66% 的客户端会遇到相同的错误。因此,会有几条通往不诚实的最终确定链的路线,尽管它们的概率非常低。它们都需要在质押 ETH 上投入巨资,或者对验证器集进行非常复杂的操作,截至目前,只有在理想条件下才证明是可行的,并且这些攻击都通过软件更新得到了缓解。然而,我们不能排除万一的情况,那么,最终的解决方案就是依靠社交层(第 0 层)。

以太坊 PoS 共识机制的优势之一是,社区在面对攻击者时可以采用一系列防御策略。最小的响应可能是强制将攻击者的验证器从网络中退出,而不会受到任何额外的惩罚。而攻击者要重新进入网络,必须加入一个激活队列,以确保验证器集逐渐增长。例如,添加足够的验证器以使质押的 ETH 数量翻倍大约需要 200 天,在攻击者可尝试另一次 51% 攻击之前,有效地为诚实验证器带来了 200 天的应对时间。当然,社区也可以决定更严厉地惩罚攻击者,比如取消过去的奖励,或燃烧掉攻击者的部分(最高 100% 的)质押资本。

无论对攻击者施加何种惩罚,社区还必须共同决定不诚实的区块链(尽管是编码到以太坊客户端中的分叉选择算法所青睐的区块链)是否实际上无效,并且社区应该建立在诚实的替代链上。诚实的验证器可以集体同意构建在社区认可的以太坊分叉之上,例如,在攻击开始之前可能已经分叉了规范链,或者强行移除了攻击者的验证器。诚实的验证器将被激励在该分叉链上构建,而建立在以太坊上的交易所和应用可能更喜欢在诚实链上,并会跟随诚实的验证器进入诚实的区块链。然而,这将是一个极其混乱的治理挑战。一些用户和验证者无疑会因为切换回诚实链而输掉资金,攻击后验证的区块交易可能会被回滚,从而扰乱应用层,这完全冲击了倾向于相信「代码就是法律」的用户。此外,一些用户,甚至可能是机构用户,他们会通过精明或机缘巧合的方式从不诚实的区块链中获益,并可能反对分叉以保护他们的收益。有人呼吁社区对超过 51% 的质押攻击进行应对演练,以便能够快速执行合理的协调缓解措施。Vitalik 在 ethresear.ch 以及 Twitter 上都进行了一些有益的讨论。

治理已经是一个复杂的话题,而对于以太坊社区来说,对不诚实的最终链进行第 0 层紧急响应无疑会是一个挑战,但在以太坊的历史上,这已经发生了两次。最终,即使我们拥有如此惊人的技术堆栈,如果最坏的情况发生,社区的参与者也必须协调出一条出路。

PoS

写在最后

以上我们探讨了以太坊合并到权益证明(PoS)共识机制后,攻击者可能会采用的一些攻击信标链的方式。总体而言,攻击者控制的质押 ETH 比例越多,其攻击的成功机会就越大,因为他们的质押权益可以转化为投票权,以此用来影响未来区块的内容。而随着攻击者控制的质押 ETH 比例增大,其能够实现的破坏力就越大:

1、33%:延迟最终性

2、34%:导致双重最终性

3、51%:审查,控制区块链的未来

4、66%:审查,控制区块链的过去与未来

还有一些更复杂的攻击方式,它们只需要控制少量的质押 ETH,但这些攻击要求攻击者对消息时间的精细控制,以使诚实的验证器集对他们有利。

总体来看,尽管存在这些潜在的攻击向量,但信标链的风险很低,甚至要低于工作量证明的等效链。这是因为攻击者为了用投票权压倒诚实的验证器,需要将质押 ETH 的巨大成本置于风险之中。内置的「胡萝卜加大棒」激励层可以防止大多数的恶意行为,尤其是对于低质押的攻击者。更微妙的弹跳攻击和平衡攻击也不太可能成功,因为真实的网络条件使得很难实现对特定验证器子集的消息传递进行精细控制,并且客户端团队已经用简单的补丁快速关闭了已知的弹跳攻击、平衡攻击以及雪崩攻击向量。

而 34%、51% 或 66% 攻击可能需要社区协调才能解决。虽然这对社区来说可能是痛苦的,但社区在带外响应的能力对攻击者来说是一个强大的抑制因素。以太坊社交层是最终的后盾,一次技术上成功的攻击仍可能被同意采用诚实分叉的社区所扼杀。最终,攻击者和以太坊社区之间会有一场竞赛,如果进行得足够快,用于 66% 攻击花费的 250 亿美元可能会被一次成功的社交协调攻击所抹杀。

对于攻击者来说,有利可图的可能性会很低,这足以起到有效的威慑作用。这就是为什么维持一个价值观一致的凝聚力社会层,对于加密投资而言是如此重要的原因。

责任编辑:Felix

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2022年9月16日 下午12:51
下一篇 2022年9月16日 下午5:51

相关推荐

空中更换发动机:Pow 转向 PoS 的攻与防

星期五 2022-09-16 12:51:52

PoW 转向 PoS以太坊主网 Merge 越来越令人期待。4 月 11 日,以太坊完成了网络的第一个影子分叉,启动了一个从 PoW 过渡到 PoS 的合并测试网。9 月 6 日,以太坊 Bellatrix 硬分叉已经激活,主网将于 8 日后进行合并。Bellatrix 将信标链与主区块链相结合,是主网合并前的最后一次升级。

随着主网 Merge 的临近,PoW 分叉、两家稳定币的选择等话题在不断发酵。有一种观点认为,从 PoW 过渡到 PoS 无异于一架民航客机在空中飞行时更换发动机,那么 Merge 带来的共识机制转变究竟有多难?

1、什么是以太坊 Merge?

自采用工作量证明(PoW)共识算法以来,以太坊就一直在寻找更好的算法,以将其打造成一个去中心化、可扩展、安全和节能环保的网络。直到 2017 年,以太坊终于确定了一种混合 PoW /PoS 的系统 —— Casper the Friendly Finality Gadget。

此后的岁月里,以太坊 Merge 一再延迟,其缓慢的工作进度也让很多以太坊的支持者逐渐失去了信心。直到今年 6 月 8 日,以太坊在测试网 Ropsten 上顺利完成了第一次 Merge 彩排。

因此,Merge 可以视为对以太坊的升级,将当前共识机制替换为更加环保、高效和安全的权益证明共识机制。当 Merge 发生时,当前的 PoW 共识机制将被完全弃用,以太坊上的所有区块都将通过 PoS 产生。

2、Merge 如何发生?

Merge 以“最小破坏”原则进行,这使得原来运行的应用客户端可以无感地切换到 PoS。信标链先是作为 PoW 之上的中间层存在,类似第二层共识网络,待到“合并”,将这一层直接作为共识层,并将 PoW 层内的执行相关组件组合到新的共识层,PoW 不复存在。

信标链区块将包含执行层,执行层是当前 PoW 链上区块的合并后等价物。对于最终用户和应用程序开发人员来说,执行层是其与以太坊进行交互的地方。

在以太坊网络上完成的任何交易都不会在这次过渡中丢失 —— The Merge 不会对以太坊网络的数据层产生任何影响。

3、Merge 如何保证安全性?

质押机制

在以太坊的 PoS 中,任何人都可以质押 32 个 ETH 并成为一个验证者 —— 一个参与网络共识算法的节点,负责存储数据、处理交易,并向区块链添加新的区块。最终确定一个区块需要 2/3 的活跃验证者签名,从而保证以太坊的安全。在这个过程中,质押者会获得质押奖励。目前,信标链只允许存入 ETH,至少要等到以太坊主网和信标链合并后才能取回自己质押的 ETH。

当对一个确保数千亿美元资产安全的协议进行大规模修改时,总是存在风险,值得庆幸的是,目前的 PoS 以太坊链信标链自 2020 年 12 月以来一直在运行,没有出过任何故障。

为了保证安全平稳地运行,目前有 4 个独特的客户端实现 PoS 以太坊节点。这意味着,如果 PoS 节点运营商在特定的实施中遇到问题,他们将有能力切换到不同的客户端。

罚没规则

如果一个恶意的行为者试图通过使用大量的验证者来恢复一个已完成的区块(相当于 PoW 中的 “51%攻击”)来篡改底层协议,他们的资金会被罚没 —— 这意味着他们会失去一部分他们所质押的 ETH。这使得攻击变得非常昂贵。这就像一个 PoW 系统,如果你使用挖矿硬件来攻击网络,那么你的硬件就会被摧毁。

在 PoS 网络中,一个提议者挖出新的区块,证明者通过投票赞成这个区块是否成为区块链的一部分。罚没意味着验证者违反了规则,被迫退出。有三种罚没条件:

  • 作为提议者,该节点为一个区块签署了一个以上的信标区块
  • 作为证明者,节点在同一目标上签署了一个以上的证明
  • 作为证明者,节点签署了与历史冲突的证明

如果这些行为中的任何一个被发现,那么该节点将在未来 36 天左右被迫退出信标链。惩罚将在 36 天左右继续发生,直到节点可以退出。惩罚数量将根据网络状况而发生变化。

PoS

难度炸弹

难度炸弹的设计初衷旨在大大增加矿工在网络上验证交易的难度,让挖矿的盈利能力大幅下降,最终,矿工将无法验证区块,以便在期待已久的合并之前打消矿工的积极性。

正如 EthHub 解释的那样:“以太坊的‘难度炸弹’(Difficulty Bomb)是这样一种机制:在预定的区块数上,增加工作证明挖矿算法中谜题的难度,导致出块时间比正常时间长(从而减少矿工的 ETH 奖励)。这种机制随着时间的推移,难度呈指数增长,最终导致‘冰河时代’(Ice Age)—— 即在链上挖矿变得非常困难,以至于停止出块。”

难度炸弹在 2015 年加入到代码中,是合并成为共识层计划的一部分。不过随着以太坊合并的一再推迟,以太坊核心开发者 Andrew Ashikhmin 提议“延迟难度炸弹是最好的选择” 。

PoS

4、Merge的进度如何?

9 月 13 日,据欧科云链数据显示,当前距离以太坊合并仅剩不足 10,000 个区块,预计将于北京时间 15 日上午 10 – 11 点前后启动 Paris 升级。

PoS

值得一提的是,合并过程艰辛曲折。从 2017 年开始,Vitalik Buterin 就提议,要在 2019 年从 PoW 转向 PoS,但出于对难度、安全性等因素的考虑,拖延至今没有完成。其难点主要在于:资金量庞大、涉及的各方利益协调沟通非常繁琐和复杂。

2022 年 3 月 15 日,以太坊合并公共测试网 Kiln 上线,代表它已经成功过渡、升级到完整的 PoS 机制。2022 年 6 月 8 日,以太坊完成了 Merge 的第一次彩排——测试网 Ropsten 顺利完成了合并。Ropsten 于 2016 年推出,是迄今为止运行时间最长的以太坊测试网。据以太坊核心开发者消息,在Ropsten 的合并过程中约有 14% 的验证者出现停机状况,但大多是由于错误的节点配置所导致的,这些问题很快得到解决。此外,在 Ropsten 上的合并被认为近乎完美,并且成为以太坊向 PoS 迁移的重要里程碑。9 月 6 日,以太坊 Bellatrix 硬分叉已经激活,主网将于 8 日后进行合并。Bellatrix 将信标链与主区块链相结合,是主网合并前的最后一次升级。

Merge 后的工作路线是什么?根据以太坊基金会及其核心开发者的披露,总结如下:

  • 2023 年,The Surge(起飞)

合并并不会降低以太坊的 gas 费,但 The Surge 致力于解决以太坊交通拥堵与 gas 高昂的问题。以太坊将切割成 64 个分片,结合 Layer2 的 rollups 技术,理论上 tps 的上限可能是 10 万笔/秒(当前以太坊 tps 约为 13 笔/秒)。

根据以太坊基金会的预估,分片链应该会在 2023 年的某个时间上线,具体取决于合并后的工作进度,这些分片将增强以太坊存储和访问数据的能力,但不会用于执行代码。

  • The Verge(边界)

技术更新,计划从 merkle 树过渡到 verkle 树,可以将它们视为以太坊的数据库,这阶段由于区块数据增大,会反过来验证拓展性和分散网络。

  • ThePurge(清除工作)

清除,意味着并非所有节点都必须永久存储所有历史块。相反,客户端将停止存储超过一年的历史记录。这意味着以太坊对节点的硬件要求会降低,网络的带宽也会降低。

  • TheSplurge(狂欢)

杂项升级,简化以太坊的使用,使其更容易被普通用户访问。

5、PoS 的设计理念如何?

以太坊创始人 Vitalik 曾对 PoS 的设计理念做了解释:密码学是少有的易守难攻(面对攻击时防御者比攻击者更有优势)的技术,就好比进攻城堡比建立城堡容易太多,岛屿防御性更强,但仍难免被攻击。相比起来,一个普通人的密钥却是足够安全的,甚至可以抵御国家级别的攻击。密码朋克理念从根本上说,是利用这种宝贵的非对称性更好地保护个人主权,加密经济是这种思想的延伸,只不过它是保护协调复杂系统的安全性和有效性,而不仅仅是简单的私人信息的完整性和保密性。密码朋克精神的思想继承者应该保持这一基本属性,让破坏比使用或维护的成本高得多。

密码朋克精神不仅仅是一种理想主义,制造防御比攻击更容易的系统也是其中最基本的工程。

然而,仅由社会共识保护的区块链过于低效和缓慢,而且太容易让分歧无休止地持续下去;因此,通过经济手段达成共识,在短期内对保护有效性和安全性方面起到了极其重要的作用。

因为 PoW 的安全性只能来自于区块奖励,而对矿工的刺激只能来自于他们失去未来区块奖励的风险,PoW 是由大量奖励激励运行的系统。PoW 从攻击中恢复是非常困难,Vitalik 不看好这种逻辑,因为它不仅能源消耗巨大,且并未实现密码朋克精神,攻击成本和防御成本是 1:1 的比例,所以不存在防御者优势。

PoS 打破了这种对称性,它不是依靠奖励而是依靠惩罚来保证安全。验证者把钱质押起来,得到些许奖励,以补偿他们锁定资本和维护节点,并采取额外的预防措施,以确保他们的私钥安全,但还原交易的大部分成本来自于惩罚,这些惩罚比他们在此期间得到的奖励大数百甚至数千倍。因此,用一句话高度概括,PoS 不是“安全来自于燃烧电能”,而是“安全来自于投入的经济价值的损失”。

6、PoS 为何是更好的机制?

基于 Vitalik 的观点,总结如下:

1) PoS 以同样的成本提供了更多的安全性

我们分别计算一下 PoS 和 PoW 中,为了获得每天每 1 美元的区块奖励,所需支付的攻击网络的成本是多少。

基于 GPU 的 PoW

攻击者攻击一个网络需要付出的成本是:租用足够的 GPU 功率超越现有矿工。对于每 1 美元的区块奖励,现有的矿工花费接近 1 美元的成本(如果他们花费更多,矿工会因为无利可图而退出,如果他们花费更少,新的矿工可以加入进来并获取高额利润)。因此,攻击网络只需要每天花费超过 1 美元,而且只需要几个小时。

假设攻击 6 小时,租用 6 小时的 GPU,所需耗费的租金成本约为 0.26 美元。随着攻击者获得区块奖励,其成本可能降低到零。

PoS

PoS 的成本主要是资本投入(即被存入的币)与运营节点的运营成本。存入的币不会贬值,当参与者完成质押后,会在一段时间后拿回他们存入的币。因此,参与者愿意为相同数量的奖励支付高得多的资本成本。

假设约 15% 的回报率足以激励人们质押,那么,每天 1 美元的奖励将吸引 2433 美元的存款,用时长达 6.667 年。运营一个节点的硬件和电力成本很小,每个月只需要 100 美元的电费和网络费,但一台千元的电脑可以质押几十万美元的存款。我们可以保守地假设,这些持续的成本是质押总成本的 10%,投入的资本对应的奖励是每天 0.9 美元。

攻击的总成本:0.90 美元/天* 6.667 年= 2189 美元(6.667 年=1 美元/(15% 回报率);2433 美元=1 美元/天x365x6.667,1/0.15=6.667 (return/IRR))

从长远来看,这个成本预计会更高,因为质押变得更有效率,人们变得适应较低的回报率。Vitalik 预计这个数字最终会上升到 10000 美元左右。

为获得如此高的安全水平而产生的唯一“成本”,是在 staking 时不能随意移动你的币。甚至可能的情况是,这些币因为被锁起来会导致币价上升,所以在社区里锁定的、准备进行生产性投资的资金总量保持不变。而在 PoW 中,维持共识的“成本”是电力被大量燃烧。

2)在 PoS 中,攻击更容易恢复

在一个 PoW 网络中,如果你的链遭遇了 51%攻击,你会做什么?到目前为止的历史实践中,唯一的反应是“等到攻击者厌倦”。但这忽略了一种更危险的攻击的可能性,即 spawn camping attack——攻击者会一次又一次地攻击链,其明确的目标是使该链失效。

在 PoW 的网络中,一个持续的攻击者可以很容易地使一个链永久地失去作用。最初的几天里,攻击者的成本可能会变得非常低,诚实的矿工会退出,因为他们没有办法在攻击进行时获得奖励。

在 PoS 的网络中,情况要好得多。对于某些类型的 51% 攻击(特别是恢复已完成的区块),PoS 共识中有一个内置的罚没机制,通过该机制,攻击者的大部分权益会被自动销毁,而不会影响到其他人的权益。第一次攻击链将花费攻击者数百万美元,而社区将在几天内恢复正常。第二次攻击链仍将使攻击者损失数百万美元,因为他们需要购买新币来替换被烧毁的旧币。而第三次将……花费更多的数百万美元。这个游戏是非常不对称的,对攻击者不利。

3)更加节能

PoS 节点的能源效率估计比 PoW 节点高 99%(或更多),所以 PoS 代表了区块链技术在能源效率方面的巨大飞跃。PoW 机制是非常耗能的,为了在网络上产生每个区块,参与者需要使用强大而耗能的 GPU 来解决一个复杂的数学问题,谁先解决了区块,谁就获得了奖励。简单地说,PoW 是一场军备竞赛,如果你比你的竞争对手拥有更多的哈希率,你就更有可能获胜。这种军备竞赛的最终结果是,PoW 矿工以100% 的负荷,每天 24 小时运行尽可能多的 GPU。他们想赚取的区块奖励越多,对电力的需求就越高。

PoS

在 PoS 中,区块提出者是随机选择的,军备竞赛将不再存在,没有必要消耗更多的能量来提高竞争优势,因而不需要像 PoW 那样的能源密集型硬件,任何相对较新的消费类硬件都能够运行操作 32 个ETH 质押节点所需的软件。如果你存入超过 32 个ETH,你将被协议分配到多个“验证者 slots”,但你仍然能够从一台计算机上运行它们,尽管质押的越多,硬件要求就越高。

采用 PoS 机制将更加环境友好化,极大的降低耗电量。十万次 Visa 交易使用 149 千瓦时的能源,以太坊 PoS 十万次交易仅消耗:0.1667 * 4 = 0.667 kWh,相当于 Visa 相同数量的交易所使用能源的0.4%,与以太坊目前的 PoW 网络相比,能源支出减少了 225 倍。

PoS

4)更高的抗审查能力

要成为 PoW 网络的矿工,你需要购买挖矿硬件,需要廉价和可靠的能源,还需要一定技术和能力来运行和维护你的“矿场”。挖矿的头部效应使得小规模的采矿难以与大矿场竞争,而由于大量的电力消耗,中央机构很容易发现矿场,并关闭它们,或胁迫它们参与攻击。而 PoS 质押则可以在一台不起眼的笔记本电脑上完成。

7、PoS 的攻与防

激励层

由于信标链是一个 PoS 区块链,使用以太坊的原生加密货币 ETH 进行保护,那些希望参与验证区块以及识别区块链头部(head)的节点运营商将 ETH 存入以太坊的智能合约中以此获得 ETH 的报酬以运行验证器软件,检查通过对等网络接收到的新区块的有效性,并应用分叉选择算法来识别区块链头部。PoS 以后,节点运营商现在是「验证者」,而验证者有两个主要角色:1)检查新区块并「证明」它们是否有效,2)从总验证器池中随机选择时提出新区块。如果验证者在被询问时未能完成这两项任务中的任何一项,他们就会错过 ETH 支付。还有一些非常难以意外执行,并且表示有恶意意图的操作,例如在同一个 slot 提出多个区块,或在同一个 slot 证明多个区块,这些是「可罚没」的行为,可导致验证器在从网络中移除之前燃烧一定数量的 ETH(最多为 0.5 ETH),这需要 36 天。被罚没的验证器的 ETH 在退出期内会缓慢流失,但在第 18 天,当有更多的验证器同时被罚没时,它们会受到更大的「相关性惩罚」。因此,信标链的激励结构是奖励诚实行为者,并惩罚不良行为者。

分叉选择

分叉选择算法由每个验证器运行,其作用是识别区块链的头部。在完全诚实的验证器及零网络延迟的理想条件下,分叉选择算法实际上是不必要的,因为此时区块链的顶端只有一个区块。然而,在现实当中,一些客户端会比其他客户端更晚接收区块,从而创建了区块链头部的多个版本,并且可能存在一定比例的行为不端的验证器,这些验证器可能在同一个 slot 提议或投票多个区块。这意味着必须要有某种算法来从多个选项中挑选出真正的区块链头部。稍微提一下,信标链也会以固定的间隔使区块链固定不变,这被称为「最终性」(finality)。该过程通过将每个 epoch 中的第一个 slot 视为「检查点」来工作。如果一个检查点从持有存款合约中至少 2/3 总质押 ETH 的验证器那里收集证明(投票),那么它被称为「justified」的。一旦该检查点在其之上有另一个检查点,它就成为「最终」检查点。然后,分叉选择算法只考虑区块链中不合理部分的区块。证明并最终确定区块链的算法称为「Casper FFG」,而分叉选择算法本身被称为 LMD-GHOST(代表「最新消息驱动的最贪婪、最重的观测子树」),这是一种用行话表达的方式,即正确的区块链是累积了最多证明(GHOST)的区块链,并且如果从同一验证器接收到多条消息,则只有最后一条消息才算(LMD)。每个验证器使用此规则评估每个区块,并将最重的区块添加到其规范链中。每个 epoch 时期,验证器需要签署一份证明,该证明包含两条关键信息:「LMD 投票」和「FFG 投票」。LMD 投票是验证器认为区块链头部的区块的根,FFG 投票包含目标检查点和源检查点的区块哈希以及 epoch,其中源检查点是链已经知道的最近正当检查点,而目标检查点是下一个要证明的检查点。因此,信标链的共识算法是 LMD-GHOST 和 Casper FFG 的组合,有时我们也将其称为 Gasper。简单了解了这个背景知识后,我们可以继续研究这个系统可能受到的一些攻击方式。

第 0 层攻击

首先,没有积极参与以太坊(通过运行客户端软件)的个人,可选择针对社交层(第 0 层)来攻击以太坊网络。尽管这些攻击从未真正直接影响任何以太坊软件的执行,但它们会给以太坊带来风险。第 0 层是构建以太坊的基础,因此它代表了一个潜在的攻击面,其后果会波及堆栈的其余部分。以下是我想到的一些例子:

1、跨多个平台发起并持续数月或数年的重大错误信息宣传活动,可能会削弱社区对以太坊路线图、开发团队的信任。这可能会减少愿意参与网络安全的个人数量,降低去中心化和加密经济安全性。

2、针对开发者社区的定向攻击或恐吓,这可能导致开发人员自愿退出,并减缓以太坊的发展,同时更广泛地打击士气。

3、过度热情的监管也可以被视为一种第 0 层攻击,因为它可能会迅速抑制参与和采用。

4、知识渊博但恶意的参与者渗透到开发者社区,其目的是通过减少讨论、延迟关键决策、创建垃圾帖或转移注意力提案等来减缓进度。

5、故意煽动以太坊社区的不满情绪,目的是制造足够的动荡以造成永久性分裂。

6、向以太坊生态系统中的关键参与者行贿以影响决策。

在很多情况下,发动 L0 攻击所需的资金或技术知识很少,这使得对社交层的攻击尤其危险。真正需要的只是时间和恶意的意图,而不是稀缺的资源。思考第 0 层攻击如何成为一次加密经济攻击的倍增器也很有趣。例如,如果审查或最终性逆转是由恶意的多数质押者实现的,那么破坏社交层可能会使带外(out-of-band)社区协调响应更加困难。

防御第 0 层攻击可能并不简单,但可以建立一些基本原则。一是保持以太坊公共信息的整体高信噪比,以太坊由社区的诚实成员通过博客、discord 服务器、带注释的规范、书籍、播客以及 YouTube 创建和传播。Ethereum.org 就是一个很好的例子,特别是他们正在迅速将其广泛的文档和解释文章翻译成多种语言。用高质量的信息和 meme 充斥一个空间,是防止错误信息的有效防御措施(信息缺口是脆弱的)。以太坊社区擅长于此,但长期的第 0 层安全需要持续致力于创建和传播高质量信息。

另一个针对社交层攻击的重要防御措施,是明确的使命声明和治理协议。以太坊将自己定位为智能合约 L1 中的去中心化和安全冠军,同时也高度重视可扩展性和可持续性。无论以太坊社区出现什么分歧,这些核心原则都会受到最低限度的影响。根据这些核心原则评估叙述,并通过 EIP(以太坊改进提案)过程中的连续几轮审查,可能有助于社区区分出好人和坏人,并限制恶意行为者影响以太坊未来方向的范围。

最后,以太坊社区保持开放并欢迎所有参与者,这一点至关重要。一个有看门人、精英主义和排他性的社区,尤其容易受到社交攻击,因为这很容易构建「我们和他们」的叙事。另一方面,一个开放和包容的社区是通过开放的讨论更有效地消除错误信息的社区。部落主义和有毒的最大主义(maximalism)伤害了社区,这会侵蚀第 0 层的安全。以太坊通常有一个非常开放的社区,它欢迎新的参与者,但随着社区规模的扩大,这可能会变得越来越难以维持。对网络安全有既得利益的以太坊社区成员,应将其在线行为和在现实世界中的行为视为对以太坊第 0 层安全的直接贡献,因为正如我们将在本文后面讨论的,强大的社交层是抵御协议攻击的最后一道防线。

攻击者的奖励

第 0 层攻击可能旨在破坏公众对以太坊的信任、使 ETH 贬值、降低以太坊的采用率,并使以太坊容易被其他竞争链超越,或者是削弱以太坊社区,使带外协调 (out-of-band coordination) 更加困难。然而,攻击以太坊网络本身所能获得的好处并不明显。

一个常见的误解是,成功的攻击允许攻击者生成新的 ETH,或从任意账户中提取 ETH。这两种说法都是不可信的,因为添加到区块链的所有交易都由网络上的所有执行客户端执行。它们必须满足有效性的基本条件(例如,交易由发送方的私钥签名,发送方有足够的余额等),否则它们会简单地还原。攻击者实际上可能会针对几种结果发起攻击:重组(reorgs)、双重最终性(double finality)或最终性延迟(finality delay)。

重组是对区块链头部区块的重新排列。在攻击中,这旨在确保包含或排除某些区块,即使它们不在诚实的网络中。这可能允许攻击者进行「双花」,例如,将他们的 ETH 发送到交易所并将其兑现成法定货币,然后重组以太坊区块链以删除这笔交易,这样他们最终能够拿回 ETH 并获得法币。或者,重组可能允许老练的攻击者通过抢先交易(front-running)或尾随式交易(back-running)从其他人的交易中提取价值(MEV),或者重组可能会持续阻止某人或某些组织的交易被包含在规范链中,从而有效地从以太坊网络中对其进行审查。

最极端的重组形式是最终性反转(finality reversion),它可删除或替换先前已经确定的区块。这种情况只有在至少 1/3 质押的 ETH 被销毁时才有可能发生,这种保证被称为「经济最终性」,稍后我们会详细介绍。

双重最终性(Double finality)攻击的可能性很低,但这种情况会很严重,发生时两个分叉能够同时确定区块,从而造成永久性的区块链分裂。这在理论上是可能的,只要攻击者能够掌握 34% 及以上总质押的 ETH,并愿意冒险失去它们。然后社区将被迫进行链外协调,并就遵循哪条链达成共识。稍后我们将详细探讨这些类型的社会协调防御。

最终性延迟(finality delay)攻击会阻止网络达到 Casper-FFG 确定链的必要条件。这将对以太坊的应用层造成极大的破坏,因为在以太坊之上运行的许多应用都依赖于快速最终性来运行。如果对区块链的最终确定性没有高度信心,就很难相信建立在它之上的金融应用。最终性延迟(finality delay)攻击的目的,可能只是为了破坏以太坊,而不是直接获利,除非攻击者部署了一些战略空头头寸。

懒惰和发送相互矛盾的消息(Laziness and Equivocation)

任何人都可以运行以太坊的客户端软件,即使没有运行验证器。人们这样做是因为它提供了区块链的本地副本,可用于非常快速地验证数据,并使交易能够私下提交给以太坊网络,而无需通过中心化的第三方(例如 Infura 或 Quicknode)。然而,不同时运行验证器的节点运营商,就无法参与区块生产或验证。这意味着他们根本不会影响到网络安全。非验证节点运营商攻击信标链的可能性可以忽略不计,除非他们也发起不相关的第 0 层攻击。

要向共识客户端添加一个验证器,用户需要在存款合约中质押 32 ETH。通过一个活跃的验证器,用户开始通过提议和证明新区块来积极参与以太坊的网络安全。在承担这些额外责任的同时,用户以 ETH 的形式获得回报,但这也给他们带来了报复行为的新机会。验证者现在有了发言权,他们可以用于影响区块链的未来内容,他们可以诚实地工作以增加他们的 ETH 储备,或者他们可以冒着风险,尝试操纵这个过程以实现自己的利益。发起攻击的一种方法是累积大比例的质押权益,然后用它来击败诚实的验证者。攻击者控制的质押权益比例越大,他们的投票权也就越大,尤其是在我们稍后将探讨的某些经济里程碑上。然而,大多数攻击者将无法积累足够的 ETH 来实现这种攻击方式,因此他们不得不使用微妙的技术来操纵诚实的大多数人以某种方式行事。

从根本上讲,所有针对信标链的小规模质押攻击(small-stake attacks)都是两种类型的验证器错误行为的细微变化:活动不足(未能证明/提议或延迟执行)或过度活动(在一个 slot 时间段中提议/证明次数过多)。在最普通的形式中,这些行为很容易由分叉选择算法和激励层处理,但有一些聪明的方法可以让这些算法对攻击者有利。目前已经发现了几种这样的技术,主要是仔细协调其消息的时间和传播,以控制整个验证器集的不同子集如何查看区块链的状态,从而控制它们的行为方式。下一节将描述低质押(low-stake)攻击者攻击网络的一些方式,以及如何抵御这些攻击。

小型质押者的攻击

a. 短程重组(Short range re-orgs)

有几篇论文解释了针对信标链的攻击,这些攻击仅使用了一小部分质押的 ETH 来实现重组或最终性延迟攻击。这些攻击通常依赖于攻击者向其他验证器隐瞒一些信息,然后以某种微妙的方式或在某个适当的时候发布它。这些攻击通常旨在从规范链中替换一些诚实的区块。当攻击开始时,这些诚实的区块尚未被创建,这种攻击被称为事前重组(ex ante reorg),而不是事后重组(在这种重组中,攻击者回顾性地从规范链中删除已经验证的区块)。在 PoS 以太坊中,如果不控制 2/3 质押的 ETH(按当前价格计算约为 180 亿美元),事后重组实际上是不可能的。如果攻击者控制的质押权益百分比少于 66%,则攻击者完成事后重组的机会非常低(即使攻击者控制了 65% 的质押权益,他们的成功机会也小于 0.05%)。

PoS

另一方面,可以很好地防止事后重组的相同机制,可以被老练的攻击者在非常特定和不太可能的网络条件下用来创建事前重组。例如,这篇论文展示了攻击验证者如何为特定 slot n + 1 创建和证明区块 (B),但避免将其传播到网络上的其他节点。相反,他们会扣留该已证明的区块,直到下一个 slot n + 2。诚实的验证者为 slot n + 2 提出一个区块(C)。几乎同时,攻击者可以释放他们扣留的区块(B)及其保留的证明,并证明区块(B)是区块链的头部,他们对 slot n + 2 的投票,有效地否认了诚实区块(C)的存在。当诚实区块(D)被释放时,分叉选择算法看到区块(D)建立在区块(B)之上,要比建立在区块(C)之上的区块(D)更重。因此,攻击者成功地使用 1 区块事前重组将 slot n + 2 中的诚实区块(C)从规范链中移除。掌握 34% 质押权益的攻击者有很好的机会在这次攻击中获胜,因为他们的投票给了攻击者首选的分叉 68% 的权重,而诚实分叉的权重为 66%,如此处所述。这意味着他们不需要依靠操纵诚实的验证器来与他们一起投票。不过,理论上,这种攻击可以用更少的质押比例来尝试。Neuder 等人 描述了在 30% 质押比例下的事前重组攻击方式,但后来证明,在控制 2% 比例的质押权益下,这种事前重组攻击也是可行的。

PoS

一个成功的重组攻击者无法改变历史,但他们可以不诚实地改变未来。他们不需要控制大多数质押的 ETH 就可以做到这一点,尽管他们成功的机会会随着控制质押比例的增加而增加。这种重组攻击可允许他们实现双花或通过 front-running 大额交易来提取 MEV。这种攻击还可以扩展到多个区块,但成功的可能性会随着重组长度的增加而降低。

PoS

b. 弹跳攻击和平衡攻击(Bouncing and Balancing)

更复杂的攻击可以将诚实的验证器集,拆分为对区块链头部有着不同看法的离散小组,这被称为平衡攻击(balancing attack)。在这种情况下,攻击者等待机会提出一个区块,当它到达时,他们会在同一个 slot 中提出两个区块。他们将一个区块发送给诚实验证器集的一半,将另一个区块发送给另一半。分叉选择算法将检测到这种模棱两可的情况,并且区块提议者会被罚没并从网络中弹出,但这两个区块仍然存在,并且将有大约一半的验证器集证明每个分叉。在花费单个验证器罚没成本的情况下,攻击者成功地将区块链一分为二。与此同时,其余的恶意验证器扣留了他们的证明。然后,通过在执行分叉选择算法时有选择地将有利于一个或另一个分叉的证明发布给足够的验证器,他们能够让网络看到任何一个具有最多累积证明的分叉。这可以无限期地继续下去,攻击验证者在两个分叉上保持验证器的平均分配。由于两个分叉都无法吸引 2/3 的绝对多数,所以信标链无法最终确定。攻击验证者控制的质押权益比例越大,在任何给定 epoch 时间段进行攻击的可能性就越大,因为他们越有可能选择验证器在每个 slot 中提议一个区块。即使只控制 1% 的质押权益,发动平衡攻击的机会平均每 100 个 epoch 时期就会出现一次,这并不需要等待太久。

c. 弹跳攻击和平衡攻击的防御措施

弹跳攻击和平衡攻击都依赖于攻击验证器将其证明延迟到某个适当的时刻,以便对网络产生巨大的影响。因此,只有在不太可能的网络同步条件下,并且攻击者通过紧密协调的共谋验证器对消息时间进行非常精细的控制情况下,这种攻击才是可行的。尽管如此,仍然有必要关闭这个攻击向量。为了防止迟到的消息影响共识,与及时收到的消息相比,迟收到的消息的权重可以减少。这被称为提议者权重提升(proposer-weight boosting)方案。

对于弹跳攻击,修复方法是更新分叉选择算法,以便最新的合理检查点只能在每个 epoch 的前 1/3 slot 期间切换到替代链的检查点。这种情况可以防止攻击者保存投票,以便以后部署。针对这些延迟投票攻击的另一种防御措施是,与每个 slot 迟到的投票相比,为及时到达的投票分配更大的权重。

结合起来,这些措施创造了一个场景,在这个场景中,一个诚实的区块提议者在 slot 开始后非常迅速地发出它们的区块,然后大约 1/3 slot(4 秒)的时间段,这个新区块可能会导致分叉选择算法切换到另一条链。在同一截止时间之后,与较早到达的证明相比,来自较慢验证器的证明的权重会较低。这非常有利于快速提议者和验证器确定区块链头部,并大大降低弹跳攻击和平衡攻击的可能性。从本质上讲,这些防御措施可以防止基于大型网络异步性的攻击,即使在上述情况下,也不需要对消息发布进行精细控制。因此,在很大程度上,这些类型的攻击风险,已通过对分叉选择算法的修改得到了缓解,这些修改有利于快速活动并惩罚延迟。

值得一提的是,提议者权重提升(proposer-weight boosting)方案只能抵御「廉价重组」攻击,即攻击者以少量质押权益进行的重组攻击。事实上,在另一种事前重组攻击中,提议者权重提升方案本身可能被更大的质押者玩弄。这篇文章的作者描述了控制 7% 质押权益的攻击者如何战略性地部署他们的投票,以欺骗诚实的验证器在他们的分叉上构建,重组掉一个诚实的区块。投票给对手分叉的诚实验证器会及时投票,以便攻击者从提议者权重提升方案中受益。同样,这种攻击是在假设理想的延迟条件下设计的,而在实际情况下很难满足这种条件。总的来说,攻击者控制的质押权益比例越大,其成功攻击的几率就越大。而更大的质押权益,也意味着更多的风险资本以及更强的经济抑制力。

d. 高级平衡攻击

上面描述的弹跳攻击和平衡攻击依赖于恶意验证器对网络上其他验证器何时收到他们的消息进行非常精细的控制,而这类攻击已通过提议者权重提升(proposer-weight boosting)方案有效地缓解了。但是,研究者还描述了一种额外的攻击,它不依赖于对网络延迟的细粒度控制。在这种情况下,攻击者需要在两个后续 slot 中使用一个提议的验证器(在任何两个 slot 中发生这种情况的概率,都会随着攻击者控制的验证器的的增多而增加)。其中一个对抗性区块提议者在 slot n 中提议一个区块,然后第二个对抗性区块提议者在 slot n+1 中提议一个冲突区块,从而创建一个分叉。由于没有一个区块提议者模棱两可(equivocated),因此不会发生罚没的情况。在这个例子中,我们假设分叉 A 会更有利。攻击者可以知道这一点,攻击者还可以估计网络上一半验证器提交证明所需的时间……来自 slot n 的保留投票可以在大约一半验证器投票的时间点被释放。这些是来自 slot n 的支持分叉 B 的证明。因此,一半的验证器组投票支持分叉 A,因为它们不知道分叉 B 上的额外证明,而另一半投票支持权重更重的分叉 B。在 n+1 中扣留的敌对投票可用于弥补分叉 B 上因发布扣留证明的时间不准确而造成的任何不足。

这种平衡攻击是针对分叉选择算法的理想版本描述的,它比以太坊共识客户端中实际实现的分叉选择算法具有更可预测的证明时间,而在真正的信标链上执行这种攻击,则要困难得多。将攻击者的节点分布在网络拓扑中可以帮助攻击者在一定程度上克服这一问题,因为他们的消息在整个网络中传播的速度要快于来自一个拓扑位置的消息。

还有人提出了一种专门针对 LMD 规则的平衡攻击,尽管有了提议者权重提升(proposer-weight boosting)方案,这种攻击仍被认为是可行的。攻击者通过模糊他们的区块提议,并将每个区块传播到大约一半的网络来建立两条竞争链,从而在分叉之间建立近似平衡。然后,相互勾结的验证器会模棱两可地投票,以使一半的网络首先收到它们对分叉 A 的投票,而另一半网络首先收到它们对分叉 B 的投票。由于 LMD 规则丢弃了第二个证明并且只为每个验证者保留第一个证明,因此一半的网络只会看到 A 的投票而 B 没有投票,另一半网络会看到 B 的投票而 A 没有投票。文章的作者描述了 LMD 规则赋予了攻击对手「非凡的力量」来发起平衡攻击。

这种 LMD 攻击向量,已通过更新分叉选择算法关闭了,以便它完全从分叉选择考虑中丢弃模棱两可的验证器。模棱两可的验证器也可以通过分叉选择算法降低其未来影响。这可以防止上述平衡攻击,同时还可以保持对雪崩攻击(avalanche attacks)的弹性。

e. 雪崩攻击(avalanche attacks)

2022 年 3 月的一篇论文描述了另一种称为雪崩攻击(avalanche attacks)的攻击类型。这篇论文的作者认为,提议者权重提升(proposer-weight boosting)方案无法防止雪崩攻击的某些变体。然而,论文作者也只展示了对以太坊分叉选择算法的高度理想化版本的攻击(他们使用了没有 LMD 的 GHOST)。

要发动一次雪崩攻击,攻击者需要控制多个连续的区块提议者。在每个区块提议 slot 中,攻击者扣留他们的区块,收集它们直到诚实链达到与扣留区块相等的 subtree 子树权重。然后,攻击者释放被扣留的区块,使其最大程度地造成混乱。这意味着,例如,对于 6 个扣留区块,第一个诚实区块 n 与敌对区块 n 竞争创建一个分叉,然后所有 5 个剩余的敌对区块都在 n+1 处与诚实区块竞争。这意味着建立敌对区块 n 和 n+1 的分叉现在吸引了诚实的证明,因为此时诚实链的权重等于敌对链的权重。现在可以对剩余的扣留区块重复此操作,从而允许攻击者阻止诚实的验证器跟随链的诚实头部,直到攻击者模棱两可的区块用完为止。如果攻击者在攻击过程中有更多机会提出区块,他们可以使用这些区块来扩展攻击,这样,越多的验证器参与共谋攻击,攻击持续的时间就越长,并且可以将更多诚实的区块从规范链中移出。

而 LMD-GHOST 分叉选择算法的 LMD 部分减轻了雪崩攻击,LMD 的意思是「最后一条消息驱动」,它指的是每个验证器保存的一个表格,其中包含从其他验证器收到的最新消息。只有当新消息来自比特定验证器表中已存在的 slot 更晚的 slot 时,该字段才会更新。在实践中,这意味着在每个 slot 中,接收到的第一条消息就是它接受的消息,任何附加消息都可以忽略。换句话说,共识客户端使用来自每个验证器最先到达的消息,并且相互矛盾的消息会被简单地丢弃,以防止雪崩攻击。

f. 最终性延迟

首次描述低成本单区块重组攻击的同一篇论文,还描述了一种最终性延迟(也称为「活性失效」)攻击,该攻击依赖于攻击者是 epoch 边界区块的区块提议者。这是至关重要的,因为这些 epoch 边界区块成为了 Casper FFG 用于最终确定链的各个部分的检查点。攻击者简单地扣留他们的区块,直到有足够多的诚实验证器使用其 FFG 投票支持前一个 epoch 边界区块作为当前最终性目标。然后,他们释放扣留的区块,并证明自己的区块,而其余的诚实验证器也会这样做,这样会创建具有不同目标检查点的分叉。如果他们的时间恰到好处,他们将阻止最终性,因为不会有 2/3 的绝对多数证明任何一个分叉。攻击者控制的质押权益比例越小,则时间需要越精确,因为攻击者直接控制的证明越少,攻击者控制提出给定 epoch 边界区块的验证器的几率就越低。

g. 关于长程攻击(long range attacks)的说明

还有一类特定于权益证明(PoS)区块链的攻击,其涉及参与创始区块的验证器在诚实的区块链旁维护一个单独的区块链分叉,最终说服诚实的验证器在很久以后的某个适当时间切换到它。这种类型的攻击在信标链上是不可能的,因为「finality gadget」(直译为确定性小工具)可确保所有验证器定期就诚实链的状态(「检查点」)达成一致。这种简单的机制可以消除对长程攻击者的担忧,因为以太坊客户端根本不会重组最终确定的区块。加入网络的新节点通过找到一个受信任的最近状态哈希(称为弱主观性检查点)并将其用作伪创始区块来构建。这将为进入网络的新节点创建一个「信任网关」,然后它才能开始为自己验证信息。然而,从对等方或区块浏览器或其他地方收集检查点所需的信任,并没有增加隐含在客户端开发团队中的信任,因此主观性是「弱的」。因为根据定义,检查点由网络上的所有节点共享,所以不诚实的检查点是共识失败的症状,那此时,无论如何,带外社会协调必须接管以拯救诚实的验证者。

这一切都表明,要以少量的质押权益成功攻击信标链是非常困难的。这里描述的可行攻击需要一个理想的分叉选择算法,以及可能性极低的网络条件,或者攻击向量已通过客户端软件相对较小的补丁关闭。当然,我们并不能排除零日漏洞在野外存在的可能性,但这确实证明了少数质押权益攻击者要成功实现攻击所需的极高的技术能力,对共识机制的了解以及运气。从攻击者的角度来看,他们最好的选择可能是尽可能多地积累质押的 ETH。

h. 拒绝服务攻击(Denial of Service)

以太坊的 PoS 机制从所有验证器集中选择一个验证器,以作为每个 slot 中的区块提议者。这可以使用一个公共函数进行计算,并且对手有可能在他们的区块提议之前稍微提前识别下一个区块提议者。然后,攻击者可以向区块提议者发起垃圾信息,以防止他们与对等方交换信息。对于网络的其余部分,区块提议者似乎处于离线状态,并且 slot 将简单地变空。这可能是对特定验证者的一种审查形式,以阻止他们向区块链添加信息。攻击者的成本取决于验证者的带宽,这意味着对家庭质押者发起拒绝服务攻击,要比使用工业级硬件和互联网连接的专业人员要便宜得多,这使得业余爱好者更容易受到审查。这个问题有一些变通方法,但这些方案也有利于专业验证者,而不是家庭质押者。例如,运行多个节点并将区块构建与网络通信分开可以提供额外的保护层,因为节点身份和验证者身份是解耦的。节点运行者可能会在短时间内切换身份或重新获取身份,以避免拒绝服务攻击。从长远来看,实施单一秘密 leader 选举(SSLE)或非单一秘密 leader 选举方案可以更有效地缓解验证者审查问题,因为只有区块提议者才能知道他们已经被选中,并且事先不知道他们的选择。所有验证器都将对秘密的承诺提交到一个反复洗牌的池子当中。然后一个随机承诺会被公开选出,只有被选中的验证器才能知道,因为连接已经被混淆了。这项工作尚未实施,但它是一个活跃的研发领域。

验证者控制的质押权益比例大于或等于 33%

将质押 ETH 的控制权分散给更多人,要比集中在少数人的手中更安全。这是因为一个人控制的质押权益越多,其对以太坊共识的影响就越大。当攻击者掌握了足够的质押权益时,本文中提到的所有攻击都更有可能成功,并且可能选择更多的验证器在每个 slot 中提议区块。因此,恶意验证者的目标可能是控制尽可能多的质押 ETH。

33% 的质押 ETH 是攻击者的一个基准,如果其控制的 ETH 超过了这个数量,他们就有能力阻止信标链最终确定,而无需精细控制其他验证器的操作。它们可以简单地一起消失。这是因为要最终确定信标链,必须有 2/3 的质押 ETH 来证明检查点对(pairs of checkpoints)。如果 1/3 或更多的质押 ETH 被恶意证明或未能证明,那么 2/3 的绝对多数就不可能存在。对此的防御措施是信标链的消极惩罚(inactivity leak)机制,这是一种紧急安全措施,它会在信标链 4 个 epoch 时期未能最终确定后触发。消极惩罚(inactivity leak)标识了那些未能证明或证明与大多数人相反的验证器。这些非证明验证器拥有的质押 ETH 会逐渐流失,直到最终它们占总数的比例不到 1/3,这样区块链才能再次 finalize。

消极惩罚(inactivity leak)机制的目的是让信标链再次实现最终确定,而攻击者也会失去一部分质押的 ETH。假设没有可罚没的攻击,并且攻击验证器只是未能证明,它们的不活动分数被更新,这向网络的其余部分表明该验证器将在每个 epoch 时期受到惩罚,直到它们的不活动分数返回为零。当消极惩罚(inactivity leak)机制处于活动状态时,每个 epoch 的不活动验证器分数会增加 4,而活动验证器分数会减少 1。一旦消极惩罚(inactivity leak)机制停用(并且信标链再次最终确定),所有活动验证器的不活动分数都会降低。对于不活跃时间较长的验证器来说,这需要更长的时间,因为它们有更多的不活跃分数要消耗。而持续的不活动状态,会更慢消耗不活跃分数。对于一个离线 100 个 epoch 的验证器,它的不活动分数将达到 400 左右,而惩罚大小的计算公式为:

不活动分数 * 验证器余额/(不活动分数偏差 x 不活动惩罚商)

inactivity_score * validator_balance/(inactivity_score_bias x inactivity_penalty_quotient)

其中不活动分数偏差(inactivity score bias)是在每个 epoch 时期增加验证器分数的数字,不活动惩罚商(inactivity penalty quotient)是将非证明验证器的余额减少到其初始值大约 60% 所用时间的平方,设置的时间大约为 37.5 天。这意味着攻击者通过未能证明来阻止最终性的时间越长,他们质押权益被燃烧的越多。Upgrading Ethereum 展示了一个图表,该图表估计了始终处于脱机状态的验证器在短时间(100 个 epoch,大约 13.5 小时)消极惩罚期间和之后验证器余额的减少情况。在 135 个 epoch 时期之后,验证器的余额从 32 ETH 降至 31.996 ETH,损失了 0.004 ETH。而要让一个攻击者控制 33% 的 ETH 质押权益,他们必须运行大约 144,000 个 验证器,每个验证器至少持有 32 ETH。这意味着他们延迟信标链最终确定性的攻击,将至少花费 0.004 x 144000 = 576 ETH。按当前市场价计算,这大约相当于 109 万美元。花掉近 100 万美元的成本,将信标链的最终确定性推迟半天,这对信标链本身的长期影响很小。

当然,更持久的消极惩罚要更加昂贵,事实上,惩罚的幅度会呈二次方的速度增加,直到信标链再次开始最终确定。攻击者进行最终性延迟攻击的确切成本,取决于他们的初始余额、他们保持离线的时间以及重新获得最终性所需的时间。然而,最重要的是,即使验证器没有被罚没,33% 的验证器持续不活动也是极其昂贵的。

假设以太坊网络是异步的(即消息发送和接收之间存在延迟),控制 34% 总质押权益的攻击者可能会引发双重确定性(double finality)攻击。这是因为攻击者在被选为区块生产者时可以模棱两可,然后与其掌握的所有验证器进行双重投票。这创造了一种区块链分叉的情况,其中每个分叉都有 34% 质押的 ETH 投票支持。每个分叉只需要 50% 的剩余验证器投票支持两个分叉,从而得到绝对多数的支持,在这种情况下,两条链都可以最终确定(因为 34% 的攻击者验证器 + 剩余 66% 的一半 = 每个分叉 67%)。每个竞争区块都必须由大约 50% 的诚实验证器接收,因此只有当攻击者能够在一定程度上控制消息在网络上传播的时间时,这种攻击才可行,这样他们才能将一半诚实验证器推到每条链上。这也是为什么这种攻击需要网络异步的原因——如果所有节点都立即收到消息,它们将立即知道这两个区块,并通过拒绝较早接收的区块来处理模棱两可的问题。攻击者必须销毁其全部质押的权益(今天 1400 万质押 ETH 中的 34%)以实现这种双重确定性(double finality)攻击,因为他们 34% 的验证器将同时进行双重投票,而这是一种具有最大相关性惩罚的可罚没攻击。防御这种攻击的代价,只是销毁 34% 总质押 ETH 的巨大成本。

而从这种攻击中恢复过来,需要以太坊社区进行带外(out-of-band)协调并同意遵循其中一个分叉,而忽略另一个分叉。与这种社会支持相关的复杂性,我们将在后面讨论。

攻击者控制的质押权益比例大约为 50%

理论上,在一个恶意验证者控制的质押 ETH 比例达到 50% 的情况下,他可以将以太坊区块链分裂成两个大小相等的分叉。与前面描述的平衡攻击类似,攻击者可通过为同一个 slot 提出两个区块来仅使用他们的一个验证器。然后,攻击者不需要通过仔细传输消息来操纵一半的网络,而只需使用其全部 50% 的质押权益与诚实的验证器集进行相反的投票,从而维持两个分叉并防止最终确定性。在四个 epoch 时期之后,两个分叉上的消极惩罚(inactivity leak)机制将激活,因为每个分叉都会看到其一半的验证器无法证明。每个分叉都会泄露验证器集的另一半质押权益,最终导致两条链以代表 2/3 绝对多数的不同验证器完成。在这一点上,唯一的选择就是依靠社区恢复,稍后我们会提到。然而,考虑到诚实验证器数量、网络延迟等变化,一组敌对的验证者似乎不太可能始终精确地控制总质押权益的 50% 比例,但也许有一种方法,攻击者可以利用略高于 50% 的质押权益,动态调整其在每个 slot 中的投票比例,以保持两个分叉之间的完美平衡。虽然成功攻击的风险,无疑会随着攻击者掌握的质押 ETH 比例的大小增加而增加,但与 50% 的质押权益相关的攻击向量,似乎不太可能被成功利用,发动此类攻击的巨大成本以及较低的成功率,对理性的攻击者而言似乎是一个很强的抑制因素。

而当攻击者控制的质押权益占到 51% 以上,则其可以控制分叉选择算法。在这种情况下,攻击者将能够以多数投票作证,让他们有足够的控制权来进行短期重组,而无需欺骗诚实的客户端。控制 51% 的质押权益不允许攻击者改变历史,但他们有能力通过将多数投票应用于对其有利的分叉,或将区块重组来影响未来。诚实的验证器会效仿,因为它们的分叉选择算法也会将攻击者喜欢的链视为最重链,因此该攻击链可以最终确定。这使攻击者能够审查某些交易,进行短程重组,并通过重新排序对其有利的区块来提取最大 MEV。与工作量证明(PoW)链一样,51% 攻击也是非常有问题的。针对该问题的防御手段就是多数质押权益的巨大成本(目前略低于 190 亿美元),攻击者会面临巨大的风险,因为社交层可能会介入,并采用诚实的少数派分叉,从而使攻击者的质押权益大幅贬值。

攻击者控制的质押权益比例大于或等于 66%

控制 66% 或更多比例质押 ETH 的攻击者可以确定其首选链,而无需强制任何诚实的验证器。攻击者可以简单地投票选择他们喜欢的分叉,然后最终确定它,仅仅是因为他们可以不诚实的绝对多数进行投票。作为绝对多数的质押者,攻击者将始终控制最终区块的内容,其拥有花费、回滚和再次花费的权力,他还能审查某些交易并随意重组区块链。通过购买额外的 ETH 以控制 66% 质押比例,而不是 51%,攻击者实际上购买了事后重组和最终性反转的能力(即改变过去并控制未来)。当前控制 66% ETH 质押权益的成本约为 250 亿美元,这里唯一的防御措施是退回到社交层来协调采用替代分叉。在下一节中,我们会更详细地探讨这一点。

第 0 层:最后一道防线

当区块链的编码防御被破坏,并且攻击者能够最终确定不诚实的区块链时会发生什么?

这种情况可能会以多种方式出现,最明显的是,当攻击者控制多数质押权益,并且可以简单地通过他们自己的投票或 51% 以上诚实验证器的额外证明来完成。凭借控制 34% 质押比例的 ETH,以及对网络上消息传递的一些控制权,攻击者可以最终确定两个分叉。在某些情况下,重组链可能由于消极惩罚(inactivity leak)机制而最终确定。如果攻击者成功将验证器集划分为两个分叉,则消极惩罚(inactivity leak)机制将在两个分叉上激活,那么问题就变成了,诚实或不诚实的验证者会首先重新获得最终确定性吗?如果诚实的验证者首先确定,那么诚实链就会变成规范链,网络上所有客户端的分叉选择算法都会接受该链最终确定的部分,然后以太坊又回到了诚实玩家的控制之下。但如果不诚实的验证者设法确定了区块链,那么以太坊社区将处于非常困难的境地。规范链在其历史中会包含不诚实的部分,而诚实的验证者最终会受到惩罚。

不太可能发生的情况是永久性的网络分裂,其中一个分叉上的验证器不知何故不知道对方分叉上的对应方。这会创建出两个独立确定的分叉链,每个分叉都会泄露另一组验证器的质押权益。然后这两条链永远不会重新组合在一起,因为它们将有不同的最终检查点。来自主导客户端的漏洞(而不是攻击),也可能导致损坏但最终确定的链。在以太坊的执行层方面,go-ethereum (Geth) 客户端占到了主导地位,超过 85% 的节点运行了该客户端。而在共识层方面,Prysm 客户端目前占到了主导地位,在持续的社区活动之后,其占比才下降到 50% 左右。而主导执行客户端或共识客户端中的漏洞,可能会停止最终确定性或导致最终确定的数据不正确。在 Kiln 测试网上,Prysm 中的一个漏洞影响了区块生产,这无关紧要,因为节点在四个不同的客户端中的份额大致相等,但如果是在主网,那么有超过 66% 的客户端会遇到相同的错误。因此,会有几条通往不诚实的最终确定链的路线,尽管它们的概率非常低。它们都需要在质押 ETH 上投入巨资,或者对验证器集进行非常复杂的操作,截至目前,只有在理想条件下才证明是可行的,并且这些攻击都通过软件更新得到了缓解。然而,我们不能排除万一的情况,那么,最终的解决方案就是依靠社交层(第 0 层)。

以太坊 PoS 共识机制的优势之一是,社区在面对攻击者时可以采用一系列防御策略。最小的响应可能是强制将攻击者的验证器从网络中退出,而不会受到任何额外的惩罚。而攻击者要重新进入网络,必须加入一个激活队列,以确保验证器集逐渐增长。例如,添加足够的验证器以使质押的 ETH 数量翻倍大约需要 200 天,在攻击者可尝试另一次 51% 攻击之前,有效地为诚实验证器带来了 200 天的应对时间。当然,社区也可以决定更严厉地惩罚攻击者,比如取消过去的奖励,或燃烧掉攻击者的部分(最高 100% 的)质押资本。

无论对攻击者施加何种惩罚,社区还必须共同决定不诚实的区块链(尽管是编码到以太坊客户端中的分叉选择算法所青睐的区块链)是否实际上无效,并且社区应该建立在诚实的替代链上。诚实的验证器可以集体同意构建在社区认可的以太坊分叉之上,例如,在攻击开始之前可能已经分叉了规范链,或者强行移除了攻击者的验证器。诚实的验证器将被激励在该分叉链上构建,而建立在以太坊上的交易所和应用可能更喜欢在诚实链上,并会跟随诚实的验证器进入诚实的区块链。然而,这将是一个极其混乱的治理挑战。一些用户和验证者无疑会因为切换回诚实链而输掉资金,攻击后验证的区块交易可能会被回滚,从而扰乱应用层,这完全冲击了倾向于相信「代码就是法律」的用户。此外,一些用户,甚至可能是机构用户,他们会通过精明或机缘巧合的方式从不诚实的区块链中获益,并可能反对分叉以保护他们的收益。有人呼吁社区对超过 51% 的质押攻击进行应对演练,以便能够快速执行合理的协调缓解措施。Vitalik 在 ethresear.ch 以及 Twitter 上都进行了一些有益的讨论。

治理已经是一个复杂的话题,而对于以太坊社区来说,对不诚实的最终链进行第 0 层紧急响应无疑会是一个挑战,但在以太坊的历史上,这已经发生了两次。最终,即使我们拥有如此惊人的技术堆栈,如果最坏的情况发生,社区的参与者也必须协调出一条出路。

PoS

写在最后

以上我们探讨了以太坊合并到权益证明(PoS)共识机制后,攻击者可能会采用的一些攻击信标链的方式。总体而言,攻击者控制的质押 ETH 比例越多,其攻击的成功机会就越大,因为他们的质押权益可以转化为投票权,以此用来影响未来区块的内容。而随着攻击者控制的质押 ETH 比例增大,其能够实现的破坏力就越大:

1、33%:延迟最终性

2、34%:导致双重最终性

3、51%:审查,控制区块链的未来

4、66%:审查,控制区块链的过去与未来

还有一些更复杂的攻击方式,它们只需要控制少量的质押 ETH,但这些攻击要求攻击者对消息时间的精细控制,以使诚实的验证器集对他们有利。

总体来看,尽管存在这些潜在的攻击向量,但信标链的风险很低,甚至要低于工作量证明的等效链。这是因为攻击者为了用投票权压倒诚实的验证器,需要将质押 ETH 的巨大成本置于风险之中。内置的「胡萝卜加大棒」激励层可以防止大多数的恶意行为,尤其是对于低质押的攻击者。更微妙的弹跳攻击和平衡攻击也不太可能成功,因为真实的网络条件使得很难实现对特定验证器子集的消息传递进行精细控制,并且客户端团队已经用简单的补丁快速关闭了已知的弹跳攻击、平衡攻击以及雪崩攻击向量。

而 34%、51% 或 66% 攻击可能需要社区协调才能解决。虽然这对社区来说可能是痛苦的,但社区在带外响应的能力对攻击者来说是一个强大的抑制因素。以太坊社交层是最终的后盾,一次技术上成功的攻击仍可能被同意采用诚实分叉的社区所扼杀。最终,攻击者和以太坊社区之间会有一场竞赛,如果进行得足够快,用于 66% 攻击花费的 250 亿美元可能会被一次成功的社交协调攻击所抹杀。

对于攻击者来说,有利可图的可能性会很低,这足以起到有效的威慑作用。这就是为什么维持一个价值观一致的凝聚力社会层,对于加密投资而言是如此重要的原因。

责任编辑:Felix