区块链自私挖矿攻击剖析

阅读量    230374 |   稿费 200

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

 

0x01 Introduction

区块链的安全性是由一连串的密码散列难题建立的,该难题由被称为矿工的匿名参与者大规模网络解决。PoW的安全性受到算力集中化趋势的挑战。开采比特币区块是随机的,使用最新一代的ASIC芯片平均需要10年以上的时间。因此,区块链矿工在战略上形成了矿池,每轮都有更大的机会解决难题。通过适当地分配挖矿奖励,他们可以获得稳定的收入率。带来的问题是少数矿池占据了全球算力的绝大部分,使区块链系统处于被巨型矿池或联合矿池推翻的风险中。传统观点认为,只要没有矿工控制总算力的51%,PoW是安全的。但是,矿工可以自由选择自私挖矿方案,而不是遵循标准的比特币协议。

本文研究了有关区块链安全性的一个基本问题,即存在多个行为异常的矿池如何影响自私挖矿的获利能力。每个自私的矿工都有一个私人链并寻找机会将其公开,以获取与其算力(哈希率,Hashrate )不相称的更多奖励。

当存在多个自私矿工时,自私挖矿会变得更容易获利吗?自私矿工应等待几轮才能获利?前一个子问题的目的是弄清楚每个自私的矿工是否需要较小的哈希率阈值来获得比诚实矿工更多的回报。后者重视自私挖矿过程中的瞬态行为,并考虑了挖矿难度调整。

 

0x02 System Model

考虑一个具有两个行为异常的矿池Alice和Bob以及一个诚实的矿池Henry的区块链挖矿系统。他们竞争解决密码难题以挖掘有效区块,从而获取类似比特币的奖励。采用工作量证明共识,并且区块的挖掘是无状态的:矿工发现区块的概率与他当前的哈希率成正比,但与整个区块链网络的当前哈希率成反比。区块链系统可动态调整密码难题的难度,以便以固定的平均速率(例如,比特币中平均每10分钟一个区块)生成新区块。我们将“回合”定义为处理一次攻击的时间,矿工的收入是指他在最长链中所开采的区块的预期比例。

用α1,α2和αh分别表示Alice,Bob和Henry的哈希率,即α1+α2+αh=1。用γ1(或γ2)表示在Alice(或Bob)与Henry之间的分叉中,诚实的矿工在Alice(或Bob)发布的链之后进行挖矿的可能性。用θ1和θ2分别表示诚实的矿工在三方分叉平局中选择在Alice和Bob各自链之后挖掘的概率。当区块链系统创建一个新块时,由于指数分布掘区间的无记忆性,它以概率为αi被矿池i开采, ∀i ∈ {1, 2, h}。

Alice(Bob)可能会强迫Henry浪费自己的计算策略,从而有策略地发布自己的区块。当Alice和Bob都是自私的矿工时,两个私人链之间的互动变得更加复杂,因为他们都不知道对方的行为。接下来将展示每个矿工可能遇到的所有不同状态。

 

0x03 Selfifish Mining Mode

Alice维护私有链,Bob维护私有链,Henry维护公共链。Alice和Bob都不知道对方的角色。我们假设所有矿工在起点被表示为“ 0”,开始就在同一条公共链上工作。Alice和Bob将私有链的长度保留为私人信息,所有人都能观察到公共链的长度。

挖掘过程包括以下两种情况:

•公共链挖矿示例:Henry总是在公链之后开采。如果公共链比Alice或Bob的私人链长,那么也会在公共链上进行挖掘。
•私人链挖矿示例:如果Alice(Bob)发现了新区块并且私人链现在比公共链更长,那么他将继续在他上开采自己的私链。

发布过程比挖掘过程更为复杂。Henry一挖到区块就会广播,而Alice或Bob将根据公链的长度决定是否发布他们的区块:

•放弃示例:Alice(Bob)放弃了私人链,并且如果公共链较长,则在公共链之后的挖矿。如果Alice或Bob发布更长的链,Henry也会放弃其公共链。
•规避风险发布示例:Alice(Bob)将他私下开采的区块向公众发布,这是因为担心新区块被其他人开采所带来的损失,并担心其私有链的主要优势不超过两个块。
•连锁反应示例:当Alice(Bob)向公共发布自己的链并更新其长度时,将立即触发其他私人链的发布。

连锁反应示例是放弃示例和避免风险发布示例的结合,连锁反应的存在使公链的演变复杂化。假设Alice发布了自己的私人区块以淘汰当前的公共链,在建立了新的公共链之后,Bob可能会发布其私人链以立即使Alice的失效。

 

0x04 Tie-breaking Logic

共识要求公共链是最长链,一个关键问题是,当公共链的长度与Alice(Bob)相同时,公共链将如何发展。总的来说,每个矿工都在自己的链上工作,当Henry挖掘一个新的区块时,就会触发Alice或Bob的发布行为。我们在此说明私有链和公共链的演变,其中Ak,Bk和Hk表示第k个区块分别属于Alice,Bob和Henry。私人链块为灰色,公共链块为白色

规避风险发布:下图中显示了Alice的私有链的规避风险发布。在Henry为公共链挖掘新区块之后,Alice仅比Henry领先一个块。由于Alice担心会输掉竞争,因此她公开发布自己的私人块,从而使Henry的公共链失效,因此Alice和Henry都成为了新的最长链上的矿工。

平局打破方案:如果Alice的私人链仅比Henry领先一个块,Henry可能会赶上她,Alice立即发布她的私人块以与Henry竞争。因此,下图中存在两个相同长度的公共链。由于只有一条公共链能胜出,因此需要考虑打破平局规则。

第一种情况是Alice和Henry的公共链长度相同,而Bob的私人链长度为0或很长。因此,我们只需要解决Alice和Henry之间的关系。所有矿工都可以在A1区块后开采,而Bob和Henry可以在H1区块后开采。延长最长的公共链有五种可能性,而较短的将被淘汰。我们忽略了Bob和Henry之间的平局,因为可以用相同的方式来分析。

对于Alice和Bob各自隐藏一个私人区块的情况,他们将在Henry找到新区块之后立即发布其私人链。如下图中存在三个竞争的公共链,Alice一定会在A1之后挖矿,而Bob肯定会在B1之后挖矿。Henry不知道哪个链是恶意分叉的,因此他可以在每个公共链上挖矿,还有五种可能的情况。规避风险的发布以及两个平局打破的方案构成了私有和公共链的所有动态。

连锁反应发布:接下来将介绍使私人和公共链的演变复杂化的连锁反应版本。连锁反应发布由一系列规避风险发布和打破平局方案组成。下图说明了触发连锁反应现象的示例。在阶段1,Alice的私人链包含四个区块,而Bob的私人链和Henry的公共链的长度为0。在阶段2的平局解决之后,较长的公共链包含两个区块B1和H2,而较短的是孤立的。Bob挖掘了一条从B3到B8的新私人链,而Henry在第4阶段H2之后继续挖掘了一个区块。Alice发布了自己的私人区块,以避免失去与Henry竞争的风险。现在,新的公共链从A4块开始。接下来,阶段5和6构成了Alice和Henry之间的新一轮平局打破方案,将公共链扩展到了A7块。但是,发布A7会触发Bob发布从B3到B8的所有私有块。回顾所有挖矿阶段时,我们发现获胜分支会来回切换,从而使自私挖矿的分析变得极为复杂。

 

0x05 Finite State Machine

A.稳态分析

在此制定一个有限状态机来描述私有链和公共链的演变。上图显示出了当私有链的最大长度为2(即N = 2)时的状态机。我们将状态定义为由Alice,Bob和Henry的长度组成的三元组。箭头表示相应的状态转换,关联的值表示转换概率。例如,所有向(0,0,0)的转换都意味着分叉的链会化为一致的公共链,并且新一轮的自私挖矿开始了。用Pijk表示(i,j,k)的稳态分布。用R1(或R2,Rh)表示由Alice(或Bob,Henry)挖掘的有效块的平均数量。使用标准方法,我们获得Ri如下:

当N很大(例如三个或四个)时,有限状态机变得更加复杂。由于篇幅所限,将仅给出N = 4的近似结果,如下。

注意在建模中不考虑N> 4的情况。除了它们的复杂性之外,过大的N可能会导致许多连续的孤立块,因此可以很容易地检测到自私挖矿。最后,模拟结果确认了在N = 4时获利阈值的收敛性,即N = 4与足够大的N之间的差很小。

B、瞬态分析

比特币系统的哈希率呈指数增长,有必要研究攻击的瞬时行为。在一个难度调整回合内进行建模,并探索回合数与攻击者的哈希率之间的关系。

为了更好地描述,我们定义了绝对收入和相对收入的概念。 首先,Alice,Bob和Henry的相对收入是其收入占总收入的比例,即

由于忽略了交易费和其他因素的影响,因此矿工只能从已发布的区块中获取收入。基于此将绝对收益定义为每单位时间获得的有效块数。在比特币系统中,我们以10分钟为单位时间。

通过状态机,在第i个调整间隔(例如难度调整回合)中,最长的公共链将出现ni个块,并且在一个攻击回合中完全挖掘出来mi个块(例如从阶段(0,0,0)回到阶段(0,0,0))。此外,使用Ti表示第i个调整间隔中花费的总时间。考虑到计算能力的变化,用Si表示整个系统的哈希率,mathi和ti分别表示在第i个调整间隔内开采一个块所花费的理论时间和实际时间。以Alice为例,我们可以得到以下方程式:

下式说明在第一个困难调整回合间,它的花费时间是T1。

在第一阶段之后,系统将调整难度以满足每十分钟开采一个区块的需求。可以在第i个周期中获得新的平均块生成时间。Alice的绝对收入可以表示为下式:

 

0x06 Result

结论 A:当比特币系统中有多个攻击者时,攻击者的最低获利阈值会降低,系统安全性也会降低。

当系统中只有一个攻击者时,若γ1=γ2= 1/2,则攻击者的获利阈值为25%。以Alice为例,考虑γ1=γ2= 1/2,θ1=θ2= 1/3的情况。根据上式(10),我们可以得出,当Alice的哈希率为16%时,Bob的获利阈值可以达到理论最小值:21.06%。当Alice的哈希率小于16%时,方程式(10)的导数大于0,这意味着Bob的阈值相对于Alice的哈希率会单调递减。当Alice的哈希率大于16%时,则方程式(10)的导数小于0,这意味着Bob的阈值相对于Alice的Hashrate呈单调递增。

下图蓝色曲线代表理论结果,红色点代表实验结果。三个红色点代表三种情况:N是2,3和4。我们可以观察到,当Alice的哈希率大约为16%时,Bob的阈值可以最小。通过计算和模拟,如果Alice和Bob拥有相同的哈希率,则当N为2、3和4时,攻击者的获利阈值分别为27%,23%和22%。它表明,当有两个攻击者时,他们可以采用策略来成功进行攻击,而攻击者的总哈希率不到25%。

结论 B:以Bob为例,如果N不大于4,则Bob的最低获利阈值与N之间存在负相关,而他的收入与N正相关。

在比特币系统中,无论是一个攻击者还是两个攻击者,获利阈值将随着N的增长而收敛。如下图,当攻击者只有一个(situation 1)时,随着N的增加,阈值收敛到25%。当攻击者可以拥有5个以上的私有块时,收敛过程将趋于平稳。当系统中有两个攻击者时(situation 2),N和阈值之间的关系与一个攻击者一致,并且收敛过程也更快。当N为4时,达到收敛平衡,获利阈值为21.48%。当Alice拥有25%(situation 3)和30%(situation 4)的哈希率时,Bob的获利阈值也将是一个收敛过程。

这是因为在不破坏系统正常运行的情况下,Henry的哈希率占了多数。基于此前提,在现实世界中攻击者拥有多个私人区块并且始终处于领先地位的可能性很小。隐藏更多私人区块确实可以增加攻击者的收入吗,但是较长的私有链很容易暴露出攻击者的身份,因为较长的私有链可以使其在发布时更加容易与普通块区分开来。另一方面,如果不知道其他攻击者的存在,则若N越大,丢失所有私人区块的风险就会增加。为了保险起见,攻击者可能选择在一定程度上披露私有区块的数量,以获得相应的收入。此外,这种策略还可以排除双花的影响。

基于上述原因,最好在私有链的长度达到4时发布所有私有块,然后开始下一轮攻击。 有人提出如果设置区块的时效性可以有效地抵制自私挖矿攻击,但阈值的收敛性证明该方法在当前的比特币系统中无效,这是因为在当前系统中默认使用需要确认6个有效区块的交易,不幸的是阈值可能在六个区块之前达到收敛。

结论 C:为了确保攻击能够正常进行,必须满足αh> max {α1,α2}。

作为反例,如果Alice的哈希率最高,并且对私有链的长度没有限制,则Alice可以尽可能长地隐藏其私有链。在攻击过程中的大多数情况下,她可以保持领先地位,这将导致Alice的私有链成为唯一有效链。在这种情况下,Bob和Henry将选择停止挖掘以减少损失。可以推测在这种情况下,Alice的收入可能接近100%,而她的攻击实际上变得毫无意义,这种攻击类似于51%的攻击。结果也证明了这一点,在下图中当Alice的哈希率是45%、Bob的哈希率是25%、Henry的哈希率是35%时得到了situation 1。当Alice的哈希率是45%、Bob的哈希率是35%、Henry的哈希率是25%时得到situation 2。这表明攻击者的私人链越长,他可以获得的利益就越大。只要一个攻击者的哈希率最高,就可能发生这种情况,而不管其他矿工拥有多少哈希率。

结论 D:攻击者将在第一个难度调整回合中失败,无论攻击者的哈希率如何。但他可能会在几个回合后获利,这与攻击者哈希率有关。

假设两个攻击者具有相同的哈希率,如下图。在允许的误差范围内,相对收入和绝对收入相等。因此可以相信相对收入和绝对收入在代表利益方面起着相同的作用。

由方程式(15)得出,当Alice的哈希率更高时,她可以更早获得非法收入。当攻击者的哈希率较小时,要花很长时间才能获利,这意味着在实际系统中执行攻击有些困难。如果总哈希率有所增加,还可以使用此公式来计算何时停止攻击才能获得最大收益。

 

0x06 Conclution

本文研究了区块链系统中多矿池如何影响自私挖矿的获利能力。通过建立马尔可夫链模型来描述攻击者和诚实矿工的行为,可以获得实际最小获利阈值为21.48%。因为考虑到难度调整而对瞬态过程进行建模,发现获利时间与攻击者的挖矿能力之间的负相关关系。

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多