“自私挖矿”有多容易?

 

原文:https://baijiahao.baidu.com/s?id=1593998280365704878&wfr=spider&for=pc

 

“自私挖矿”有多容易?_第1张图片

 

最早听说 "自私挖矿" (Selfish Mining) 的概念是在密歇根大学的加密货币在线课程中。讲师用一整节课的时间介绍了这种攻击的具体实施方法。和其他某些针对区块链和加密货币的攻击不同,自私挖矿不以破坏区块链网络正常运行为目的,而是更纯粹的为了获得更大利润。这一点不同非常重要,因为这个原因,诸如比特币在内的加密货币遇到自私挖矿攻击的可能性要高于其他网络攻击类型,比如常常提到的 51% 攻击。后者虽然危害巨大,但实施者会很少,除了攻击难度较高外,更主要的原因是这类攻击会直接导致该加密货币共识受损、信用崩盘,从而间接导致价格大幅下跌。这对于寄希望于加密货币价格上涨来获益的攻击者而言,反而弊大于利。

自私挖矿则不同。它没有破坏网络原本的共识机制,因此不会导致整个区块链网络信用受到影响而价格下跌。而且,它的攻击难度远低于 51% 攻击。自私挖矿是 “区块扣留攻击” (又称扣块攻击,Block Withholding Attack) 的一种,之所以这样命名,主要是因为这种攻击的具体实施方式就是在某一时间段内扣留新区块不公开,即所谓的 “扣块”。

 

划 划 重 点

- 自私挖矿主要通过扣留区块,拖延公布区块的时间来达成。- 自私挖矿的目的不是破坏加密货币的区块链网络,而是获得更大利润。- 由于攻击门槛相对较低,且收益好,理论上,这种攻击更容易出现。- 避免这种攻击需要改进区块链网络的共识机制。

 

 

“自私挖矿”有多容易?_第2张图片

 

那么,“自私挖矿” 到底是怎么操作的呢?

这种攻击主要由矿工发起。我们以比特币区块链作为例子。简单地说,攻击者挖到新区块后藏起来不公布,其他诚实矿工因为不知道新区块的存在,还是继续在旧区块基础上挖矿。等到攻击者挖到第二枚区块后便会同时公布手中藏着的两枚区块,这时,区块链分叉就出现了。只要攻击者比诚实矿工多挖一枚区块,攻击者所在的分叉就是最长链:根据比特币的共识机制,矿工只在最长链后面挖矿。因此,原本诚实矿工们所在的那条链,因为比攻击者的分叉短,便作废了。此时此刻,攻击者因为挖到了两枚新区块而获得相应收益;而诚实矿工的分叉被废弃,他们什么也得不到。

这种攻击的前提是对于算力(即挖矿速度)的比拼。如同刚才提到的,面对区块链出现分叉情况时(这里的分叉不是日常所说改变共识原则的硬分叉或软分叉,而是在共识原则不变前提下的分叉),最长的那一条链被视作合法链。如果自私挖矿攻击者能够迅速让原本的长链变成短链(即在短时间内发布自己挖到的两枚或多枚区块,让自己所在的区块链分叉变成最长链),那么所有诚实守法的矿工所做的努力都白费了。

 

“自私挖矿”有多容易?_第3张图片

 

以色列学者 Ittay Eyal 在 2014 年的时候就在不同场合提到这种攻击的危险性。他通过论文、公开演讲等形式向大众解释他的理论和分析。根据 Eyal 教授的数学模型推导,进行自私挖矿的攻击者只需要拥有全网 1/3 的算力,就可以保证自己获得更多的收益了。相比 51% 攻击,自私挖矿显得更容易,更有吸引力。

除了算力存在差异,另一个让自私挖矿理论可行的因素是在比特币区块链上面,网络节点和矿工传播最新区块状况时存在时延。这也是 “去中心化” 运行模式在现行计算平台下必然出现的结果。

什么意思呢?为了保证每一个网络节点和矿工都收到最新的转账和区块信息,且通过去中心化的形式达成,最新的转账信息会由网络节点和矿工们 “口口相传” ,一传十,十传百,逐渐将最新信息传遍整个区块链网络。显然,这种传播是循序渐进的,不是一蹴而就的。当自私挖矿的攻击者将自己藏在手里的多枚区块同时发布时,诚实的矿工们可能也刚刚挖出新区块,并且向全网公布。此时,注定有些节点会先收到攻击者的区块更新信息,从而采纳它。对于这些节点来说,诚实矿工的区块来得慢了一步,而且处在短链上,因此被视作不符合区块链共识规则的区块,不会被采纳。正是由于全网广播存在时延,才让自私挖矿的攻击者有机可乘。

这时候会出现一种新的情况:诚实矿工可能会在不知情的情况下选择 “支持” 攻击者所在分叉:即在攻击者发布的区块后面继续挖矿。这是如何出现的呢?当攻击者的长链分叉信息率先传递到某个诚实矿工那里,这个诚实矿工会根据比特币的共识机制,认可该分叉内区块的合法性,并且选择在该长链尾部继续挖矿。这令攻击者处在更为有利的位置上。事实上,出现这种情况,恰恰是由于比特币网络信息传播存在时延所致。

在 Eyal 教授的论文中,也充分考虑了这一点。由于网络传播时延不好计算,Eyal 教授选择用诚实矿工在不知情情况下 “支持” 攻击者分叉的比例作为运算的变量。他把这个比例命名为 γ (希腊字母 gamma) 。 在攻击刚刚开始时,还没有诚实矿工在攻击者的分叉后面挖矿,所以 γ 为 0 。随着攻击持续,γ 值开始上升。

另一方面,Eyal 用希腊字母 α 表示自私挖矿攻击者的算力占全网算力的比例。根据他的推算,即使全网没有一个诚实矿工选择 “支持” 攻击者的分叉,要想通过自私挖矿实现盈利,攻击者也只需要全网 1/3 的算力即可成功。如下图所示,随着 γ 值不断上升,攻击者为保持盈利所需要的最低算力 α 则逐渐下降。

“自私挖矿”有多容易?_第4张图片

至少在理论上,根据 Eyal 教授的演算,自私挖矿是比较容易盈利的。这便给加密货币的研发者提出了新的难题。如果现行的共识机制不进行相应调整,比特币等加密货币会在未来面临更多攻击。

 

- [ THE END ] -

本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。

你可能感兴趣的:(区块链,自私挖矿)