主页 > imtoken中国版下载 > 什么是自私挖矿攻击

什么是自私挖矿攻击

imtoken中国版下载 2023-01-17 12:19:37

传统观点认为,比特币的挖矿协议是激励兼容的,可以抵抗少数群体的合谋攻击,激励矿工按照协议规定的方式进行挖矿。比特币挖矿协议之所以能达到这个效果,是因为它基本可以保证矿工可以根据自己的算力占全网算力的比例获得匹配的收益。

激励相容性:在市场经济中,每一个理性的经济人都会有自利的一面,他的个人行为都会按照自利的规则行事;该行为与企业实现集体价值最大化的目标不谋而合。这种制度安排是“激励相容”。

然而,Eyal等学者在文献中表达了不同的观点[2]。他们认为上述传统观点是错误的,比特币挖矿协议不兼容激励。为了证明自己的观点,作者提出了一种挖矿策略,让少数矿池获得比诚实执行挖矿协议更多的收益,这种策略就是“自私挖矿”(Selfish Mining)。

“自私挖矿”攻击是对比特币挖矿和激励机制的攻击。其目的不是破坏比特币的运行机制,而是获得额外的奖励,让诚实的矿工进行无效计算。简而言之,“自私挖矿”攻击的核心思想是,“自私挖矿”矿池(以下简称“恶意矿池”)故意延迟发布其计算出的新区块,并构造私有 Fork,造成链条中的一个叉子。

诚实的矿工将继续基于公共分叉进行挖矿,而恶意矿池将基于他们控制的私人分叉进行挖矿。如果恶意矿池计算出更多的块,他们维护的私有分支的长度自然会领先于公共分支。此时,恶意矿池选择不公开这些新区块,以进一步增加挖矿收益。

但是,由于恶意矿池的算力限制,无法永远保持私有分叉的长度优势。当公共分叉接近私有分叉长度时,恶意矿池将公布新区块并获得这些区块的奖励。此次攻击直接导致诚实矿工之前的计算成为无效计算。

什么叫挖矿行为

当然什么叫挖矿行为,在攻击过程中,“自私挖矿”矿工(以下简称“恶意矿工”)和诚实矿工都有进行无效计算的可能,但诚实矿工浪费的计算量更多,恶意矿工是以收入奖励。此外,为了获得“过度”的挖矿奖励,越来越多“理性”的矿工会转向恶意矿池。

攻击策略和好处

首先,我们假设在初始状态下,公共分支与恶意矿池构建的私有分支长度相同。下面对“自私挖矿”的攻击策略及相应收益进行分析。 (本章图片取自文档[3]或根据[3]中的图片修改。黑色部分代表公共分支,红色部分代表恶意矿池维护的私有分支。红色虚线方块代表私有分支中未发布的区块,红色部分代表恶意矿池维护的私有分支。红色实心方块代表公共区块)

(1)当公有分支长于私有分支时,如果仅仅通过恶意矿工的挖矿努力,私有分支可以赶超公有分支,因为两者之间的总算力差距恶意矿池和全网其他矿工发生的几率很小,因此恶意矿池此时采取的策略是根据公有分支的变化动态更新私有分支,使得两个分支是一样的,然后根据更新后的私有分支继续挖矿,这种情况下恶意矿池无法获利。

(2)当恶意矿工计算出一个新区块,使得私有分叉比公有分叉长1个区块时,恶意矿池会选择不立即发布新区块,而是继续基于私有分叉挖矿。此时有两种可能的情况。

什么叫挖矿行为

a) 在情况 1 中,诚实矿工根据公共分支计算下一个新区块。此时,私有分支失去了长度优势。

b) 在情况 2 中,恶意矿工计算下一个区块,私有分支继续保持相对于公共分支的长度优势。

(3)对于上述情况1,由于私分叉的优势被淘汰,恶意矿池会立即暴露私分叉,两个分叉进入竞争状态,要么分叉可能会赢。之后,所有恶意矿工将继续基于私人分叉挖矿,而诚实矿工将选择其中一个分叉进行挖矿(诚实矿工的选择取决于新区块通知传播的速度)。

a) 如果恶意矿工先计算下一个区块,恶意矿池将直接发布私有分叉,并获得两个区块奖励作为收益。

b) 如果下一个区块由诚实矿工基于私有分支挖矿计算,则恶意矿池将奖励第一个区块,诚实矿工将获得第二个区块奖励。

什么叫挖矿行为

c) 如果下一个区块是由诚实矿工基于开放分支挖矿计算的,那么这两个区块的奖励将归计算它们的诚实矿工所有,恶意矿池将一无所获。

(4)对于上述情况2,恶意矿工继续提前计算下一个区块,此时私链建立了两个区块长度的优势,这个优势让恶意矿工更舒服矿池。一个“安全垫”。恶意矿池会选择进一步扩大收益,即推迟这两个新区块的发布,继续挖矿。

a) 接下来,每当诚实矿工计算出一个新区块时,恶意矿池也会发布一个新区块作为响应。如果恶意矿工计算出新区块,恶意矿池将继续保持新区块的私密性。

b) 由于恶意矿池在算力上与其他矿工总和相比处于劣势,其控制的私有分支的长度优势将逐渐变小,直至缩减为1个区块。此时,恶意矿池会立即公布这条私有分支,使其成为当前的合法主链,系统将再次回到只有一个分支的状态。恶意矿池也将因其计算的所有新块而获得奖励。

攻击效果

什么叫挖矿行为

文献中给出了“自私挖矿”攻击的模拟效果,实验背景大致设置如下。首先,作者使用模拟器模拟了1000个节点,这些节点是等概率挖矿的。

这1000个节点中什么叫挖矿行为,有1000个α(α代表“自私挖矿”节点在所有节点中的比例)节点运行“自私挖矿”算法,其他节点诚实运行比特币挖矿协议节点。接下来,假设两个分支处于等长状态,将诚实矿工分为两类,γ 比例的诚实矿工基于私有分支进行挖矿,剩余的 γ 比例诚实矿工基于公共分支进行挖矿。

从图1可以看出,当γ等于0时,即所有诚实矿工都基于公共分支进行挖矿的情况下,如果挖矿收益超过正常执行比特币挖矿的收益协议,恶意矿池至少需要全网算力的1/3左右。

当γ等于0.5时,即诚实矿工一半基于私有分支挖矿,另一半基于公共分支挖矿时,恶意矿池达到“过度”的阈值收入将下降到全网算力的1/4。可以看出,与实施51%攻击的算力要求相比,实施“自私挖矿”攻击的门槛要低很多。

后续研究

什么叫挖矿行为

至此,“自私挖矿”攻击的故事远未结束。此后,为优化和拓展“自私挖矿”策略开展了多项工作。 2016 年,Nayak 等作者在 [4] 中提出了一种新的挖矿策略“顽固”,扩展了“自私挖矿”策略。基于此策略,恶意矿池收益将比使用“自私挖矿”策略增加13.94%。

不仅如此,作者还进一步优化了“stubborn”策略,提出了“the EqualFork Stubborn”和“Trail Stubborn”两个新策略。这两种策略进一步增加了恶意矿池的挖矿收益。

在文献 [5] 中,Carlsten 研究了交易费用对“自私挖矿”策略的影响。参考文献[6]进一步扩展了“自私挖矿”模型,在模型中加入了恶意矿池与诚实社区之间的延迟。基于该模型,作者提出了一种通过监测“孤块”比例来检测“自私挖矿”异常行为的方法。

文献[7]考虑了一个更一般的假设,即利用贝叶斯博弈公式对策略中“自私挖矿”矿工的选择行为进行建模,进一步优化挖矿策略。

总结

随着区块链技术的飞速发展,针对它的攻击数量逐渐增加,“自私挖矿”只是众多攻击中的一种。其他常见的攻击方式包括对区块链网络层的BGP劫持攻击和Eclipse攻击,对POW共识算法和交易过程的平衡攻击和活性攻击,对智能合约的DAO攻击,“GovernMental”攻击等。笔者将为大家分析这些攻击方式。