自私挖矿攻击可行性与相应解决方案

1,891 阅读14分钟

自私挖矿是一种针对比特币等工作量证明(PoW)机制区块链的挖矿策略,简单说就是挖到区块先不公布,而是继续挖矿,然后根据策略择机公布。而这种策略,根据研究者们的探讨,实际上会降低网络验证区块的速度,同时会削弱诚实矿工的盈利能力,而在难度调整之前,这也会对自私矿工本身带来不利影响。

可以说,在这种情况下,自私挖矿相当于是“杀敌一千 自损八百”的“七伤拳”。而只有在难度调整之后,自私挖矿才可能是有利可图的。

由此,我们认为自私挖矿是针对比特币协议的一种攻击方式,这种攻击利用了比特币难度调整公式的缺陷。它在实际情况下虽然难以实现,但较51%攻击而言却是更可行的。对此,研究者CYRIL GRUNSPAN和RICARDO PEREZ-MARCO’提出了一种新的难度调整公式,它虽然无法消除自私挖矿的可能性,但即使是在发生难度调整的情况下,自私挖矿较诚实挖矿也不会具有优势。

btc

论文标题:关于自私挖矿的盈利能力

论文作者:CYRIL GRUNSPAN和RICARDO PEREZ-MARCO’

摘要:我们探讨了比特币网络当中可能存在的自私挖矿策略,并正确评估其攻击成本及盈利能力。预期的攻击持续时间,在很多相关文献中被忽略掉了,但这是关键的。我们证明了,这种策略只有在网络调整难度后才能够盈利。因此,这是一种针对难度调整算法的攻击。我们提出了一种改进协议,可使比特币网络免受自私挖矿攻击的可能。

一、简介

比特币协议[7]的稳定性, 依赖于其规则符合网络参与者的自身利益。它的基本规则之一是,区块一旦得到验证,矿工们就会选择公布它们。而“自私挖矿”则是一种异常的挖矿策略 [5],其中主要的矿工运营者选择扣留挖矿区块,并采取定时策略将其公布,以使网络其余矿工开采的最大数量区块无效。文献[5]的作者毫无根据地称自私挖矿策略会破坏比特币协议 [4],但在实践当中,我们并没有观察到这种现象。

其他研究人员则提出了其它被认为是“最佳的”自私挖矿策略[9]。自私挖矿策略以课程和教科书的形式,呈现在比特币书籍当中,例如 [1](该书籍的第5章内容,被称为“临时扣块攻击”)或者[10]。

然而,这些文献都没有对自私挖矿攻击的成本进行适当的分析,并且,更重要的是,它们忽略了时间考虑。更确切地说,这些论文中使用的马尔可夫模型,从一开始就是存在缺陷的,因为它没有纳入攻击持续时间分析。而本文的主要目标,是实现分析自私挖矿的盈利能力,这是在文献当中没有的。事实证明,在没有难度调整的情况下,这种自私挖矿策略是靠不住的。

二、自私挖矿策略

我们描述了文献[5]中提出的自私挖矿策略。自私矿工通过验证和不广播区块实施攻击,然后继续在这个区块的顶部秘密地进行挖矿。然后这名矿工会如下进行操作:

(1)如果自私矿工的优势是1个区块,当诚实的矿工发现了一个区块,然后自私矿工立即偷偷地广播他已秘密挖到的区块。然后接下来就是一场竞赛,自私矿工在他公布的区块上进行挖矿任务。自私矿工与网络的其它参与者是有充分联系的,因此,诚实网络的0 ≤ γ ≤ 1占比部分会接受他的区块提议,并开始在他的区块上进行挖矿任务。

(2)如果自私矿工的优势是2个区块,当诚实矿工发现了一个区块,然后自私矿工立即偷偷地广播他已秘密挖到的区块。然后,整个网络就会切换到他所在的分叉链。

(3)如果自私矿工的优势大于2个区块,当诚实矿工发现一个区块时,则自私矿工可公布区块,以释放一条子链,与新的诚实区块进行竞争。而自私矿工可在他的秘密链上继续挖矿。

(4)除了(1)之外,自私矿工都可以在他的分叉链上偷偷地进行挖矿。

请注意,如果自私矿工的优势区块大于2,那么在某个时刻,他的优势将等于2个区块(因为我们假设他的算力小于50%,或者其它更有效的攻击是可能的),然后,根据第2点,整个网络最终采用自私矿工提出的分叉链。因此,当他的优势区块总是大于2时,自私矿工所公布的区块,总是会被网络所接受。而第3点则是有些无关的,因为当自私矿工占据优势时,重要的是强迫他验证的区块被纳入到区块链当中。他可以忽略掉诚实矿工的区块验证,除非当区块优势只有2时,然后自私矿工只能释放整个秘密分叉链。

在文献[5]中,作者们假设了γ占比始终保持不变。这是不准确的,因为γ取决于网络新区块被挖掘的时间,因此它是无法保持不变的。但在[5]中所运用的马尔可夫链模型,就需要假设γ是不变的,因此,这些作者提出了这种假设。这种分析是不准确的。但是,更重要的是,他们没有核算这种攻击的成本。对于这样的流氓策略而言,计算盈利能力是十分重要的。时间分析对于估计盈利能力而言,也是至关重要的,但这些作者也都选择了忽略。

三、自私挖矿vs诚实挖矿的盈利能力

3.1. 文献中的盈利能力。大多数关于自私挖矿策略的文章,都没有考虑挖矿成本因素,或只是含蓄地进行了表达。在 文献[5]中,这个因素干脆被忽略掉了。而在 文献[3]等文章当中,我们可以看到令人惊讶的陈述:

成本。每个矿工m都有可配置的参数Cm, 即表示矿工m进行挖矿任务的成本(即电力)。对于我们的模拟结果而言,我们总是设置Cm = 0,因为我们不会看挖矿的这方面。

显然,如果挖区块没有任何能源成本的话,任何人都可尝试逆转比特币交易的历史,并尝试双花攻击,也不会有尊重比特币协议的经济激励。能源成本使得伪造区块链是昂贵的,这是比特币安全的基础!

其他作者,如[2],则以以下方式来描述自私挖矿:

“自私挖矿确实在短期内会减少攻击者的收入,但它确实会大大减少其他人的收入,因此中立节点就有动力加入攻击者的联盟,以增加自己的收入。最终,攻击者的联盟将扩大到50%以上的规模,可能会使攻击者对网络造成很大的控制影响力。”

换句话说,根据这种解释,一个损失钱的矿工会被攻击吸引,然后加入到另一个损失钱矿工的队伍当中。而这仅仅是因为攻击者矿工损失的钱更少,所以攻击者能够说服那些诚实矿工!撇开诚实矿工无法确切知道双方盈利能力差异这一事实不谈,这种天真的情景,可以说是令人难以置信的。

从这个角度来看,自私挖矿仅仅是作为控制网络的51%攻击的一种预备行为。实际更可能的结果是,诚实矿池会注意到某些矿工在做自私挖矿,他们将采用明显的防御策略,并开始自己的自私挖矿,这会使网络停滞不前。这个结果对于所有人而言都会是不利的。纳什均衡的一种形式正在发挥作用,这避免了上述描述的场景。

除了这些创造性的解释之外,文献中的真正缺乏的,是对自私挖矿攻击成本的正确核算和理解,以及适当的时间分析。

3.2 挖矿成本。为了正确评估自私挖矿盈利能力的关键思路,是将其与诚实挖矿的盈利能力进行对比。我们假设矿工从事挖矿业务,是因为运营成本(设备和能源),是可由新生成的比特币区块奖励+交易费用得到补偿的。

因此,如果算力是以满负载运行的,单位时间的挖矿成本与策略是无关的。所以我们就有了CS = CH,其中CS 和 CH是自私挖矿以及诚实挖矿策略每单位时间的挖矿成本。我们表示C0 = CS = CH. 请注意,此成本不仅独立于策略,但也表示挖到的区块,会还是不会被网络所接受。

3.3 收益和损失。我们的目标是评估损益情况(PnL),并对比自私挖矿和诚实挖矿的PnL。损益(PnL)的算法是收入R减去成本C:

PnL = R − C .我们采取一种保守,但足够的设置,其中区块奖励被减少到(b > 0) 新生成的比特币(因此,我们不考虑交易费用)。除非另有说明,我们假设我们没有接近奖励减半,所以奖励b是保持不变的。

对于任何业务而言,重要的是每单位时间的P nL,而不是每区块解决或被网络接受的P nL。值得注意的是,每区块或每单位时间的P nL是不相等的,这是由于采用的自私挖矿策略,延迟了网络中区块的验证速度。

3.4 每单位时间的损益。一种不间断的攻击策略,如自私挖矿,包括了一系列连续的“攻击周期”。

在自私挖矿的情况下,它是当自私矿工和诚实矿工都在同一区块链上进行工作时发生的。自私矿工的目标是利用他们秘密挖取的区块链。如果,一开始,诚实矿工找到了新区块,则进入一个新的周期。如果自私矿工成功建立了优势,然后周期会持续至诚实矿工追赶上进度,并强迫自私矿工释放他们秘密挖取到的区块。然后开始新的循环。对于这种具有重复效应的策略游戏,每单位时间的渐进P nL ,P nLt∞ ,是可以进行评估的。而这是下列定理当中的内容。

P1

p2

p3p4p5p6p7p8p9p10p11p12p13p14p15p16p17p18p19p20p21

六、阻止自私挖矿的提案

6.1. 问题的根源。基本上,这种攻击利用了难度调整规则。当前的比特币协议低估了网络中的实际算力,由于其仅考虑了被纳入(官方)区块链的区块。 在存在自私矿工的情况下,孤块会不断增长,大量诚实算力会丢失。网络用于验证的平均时间会增加。在2016个区块之后,自动完成的难度调整会无视孤块的生产。尽管网络总算力是保持不变的,但新的难度会低于应有的水平,并且区块验证时间会减少。所以,单位时间的自私挖矿收入会增加,并使得攻击变得有利可图。

6.2. 一个新的难度调整公式。为了减轻这种攻击,一种想法是在难度调整公式中加入孤块数量的因素。这可通过矿工们来实现,即指示他们挖到的区块中存在“uncle”(通过包含它们的区块头,及对等节点中继这些数据)

只要诚实矿工发出信号就足够了。节点就不需要广播整个孤块,而只是广播它们的区块头。这有可能会激励矿工在他们的区块中纳入uncle存在证明(通过一个规则,在两个具有相同高度区块之间竞争的情况下,节点应该始终广播拥有最多工作量证明的区块,即包含最多uncle存在证明的区块)。根据[11],这一规则在诚实矿工与自私矿工发生竞争时,它也是对诚实矿工有利的。在n0 = 2016 区块验证周期结束后,难度调整的新公式将会是

p22

其中n’是在这段时间内挖到的孤块总数,而Sn0是网络用于验证n0区块的时间 (并使用公式Sn0 = Tn0-T1,其中Ti表示区块 i区块头的时间戳。)

6.3. 分析公式 . 设 ω 是在τ0= 600秒时间段内被观察到的孤块平均数。所以,平均而言,每τ0时间,都会有ω孤块和(1 – ω)非孤块。只有最后一个会被添加到官方区块链。网络用于增加区块链的时间为

p23

七、结论

自私挖矿是一种减慢网络并减少挖矿难度的一种技巧。这种攻击会削弱诚实矿工的盈利能力,而在难度调整之前,这也会对自私矿工本身带来不利影响。而只有在难度调整之后,自私挖矿才会变得有利可图。自私挖矿是针对比特币协议的一种攻击,但很多相关文献中的论点没有正确地证明这种攻击的合理性。他们缺乏对攻击成本和每单位时间的损益进行适当的分析。

为了比较不同挖矿策略的盈利能力,我们就需要计算它们的周期平均长度和收入比率,这是本文中提到的新概念。

这种攻击利用了难度调整公式的缺陷。用于更新挖矿难度的参数,应该是衡量网络的实际算力。而当前的参数,在存在自私矿工的情况下,是不再适用的。我们提出了一个公式,通过考虑这一点来纠正这种生产孤块的异常现象。我们建议,协议应指定官方区块链包含的是最多工作量证明(带有最多uncle存在证明)的区块。如果这一拟议公式得到采用,虽然它不会消除自私挖矿的可能性,但即使是在发生难度调整的情况下,自私挖矿较诚实挖矿也不会具有优势。因此,这会使得个人激励措施与协议规则保持一致,而这符合比特币最初成立时的意图[7]。

参考文献

[1] J. Bonneau, E. Felten, S. Goldfeder, A. Miller , A. Narayanan. Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction, Princeton University Press, NJ, USA, 2016.

[2] V. Buterin. Selfish mining: a 25% attack against the bitcoin network, bitcoinmagazine.com/ articles/selfish-mining-a-25-attack-against-the-bitcoin-network-1383578440, 2013.

[3] M. Carlsten, H. Kalodner, A. Narayanan , S. M. Weinberg. On the instability of bitcoin without the block reward, Proc. ACM SIGSAC Conf. Comp. and Comm. Sec., p.154-167, NY, 2016. 14 C. GRUNSPAN AND R. PEREZ-MARCO ´

[4] I. Eyal, E. G. Sirer. Bitcoin is broken, hackingdistributed.com/2013/11/04/bitcoin-is-broken/ (accessed 1/2018), 2013. [5] I. Eyal, E. G. Sirer. Majority is not enough: bitcoin mining is vulnerable, Int. Conf. Financial Cryptography and Data Security, Springer, p.436-454, 2014.

[6] C. Grunspan and R. P´erez-Marco. Double spend races. ArXiv:1702.02867, 2017.

[7] S. Nakamoto. Bitcoin: a peer-to-peer electronic cash system. Bitcoin.org, 2008.

[8] S. Ross. Introduction to Probability Models 10th Edition. Academic Press Inc, 2012

[9] A. Sapirshtein, Y. Sompolinsky , A. Zohar, Optimal selfish mining strategies in bitcoin, International Conference on Financial Cryptography and Data Security, Springer, p.515-532, 2016.

[10] R. Wattenhofer. Distributed Ledger Technology: The Science of the Blockchain, 2nd Ed., Create Space Independent Publishing Platform, 2017.

[11] R. Zhang, B. Preneel. Publish or perish: a backward-compatible defense against selfish mining in bitcoin. In Topics in Cryptology – The Cryptographers Track at the RSA Conference 2017, Springer, p.277-292, 2017.

原文:https://arxiv.org/pdf/1805.08281.pdf
作者:CYRIL GRUNSPAN 和 RICARDO PEREZ-MARCO
编译:洒脱喜
稿源(译):巴比特资讯(http://www.8btc.com/selfish-mining-profitability)