区块链解读:PoW共识机制的51%算力攻击
51%算力攻击目前仅在”PoW“共识机制中存在,因为”PoW“共识机制依赖算力计算获胜,也就是谁算得快,谁的胜率就高。在使用了”PoW“共识机制的区块链网络中,我们称参与计算哈希的所有计算机资源为算力,那么全网络的算力就是100%,当超过51%的算力掌握在同一阵营中时,这个阵营的计算哈希胜出的概率将会大幅度提高。
为什么是51%?51.1%不行吗?当然也是可以的,之所以取51%是为了取一个最接近50%,且比50%达的整数百分比,这样当算力值达到51%后的效果会比50.1%的计算效果更明显。举个例子,如果诚实节点的算力值是50.1%,那么坏节点的算力值就是49.9%。两者的差不算法太大,这样容易导致最终的区块竞争你来我往、长期不分上下。
如果算力资源分散,不是高度集中的,那么整个区块链网络是可信的。然而,当算力资源集中于某一阵营的时候,算力的拥有者就能使用算力资源去逆转区块,导致区块链分叉严重,如下面的例子。
如图是一条区块链目前的状态。一个攻击者想要逆转区块8中的一笔交易,他就会从区块7后面引入一个分叉来使区块8变得无效,在分叉块中设置给某个地址几百或者几千个BTC。不过,由于比特币公链的最长链规则的限制,所有的诚实节点都会遵循最长链规则,将新产生出来的区块链接到最长链的尾部,从而避免攻击者得逞。
某条区块链的状态
当系统出块率比较低且块大小较小时,网路延迟相对于出块时间来讲是比较小的,这样诚实的节点所产生的区块基本上就是顺序的。只要诚实节点的总算力超过50%,攻击者就不能够使它们自己产生的链成为最长链。然而,当诚实节点的总算力不及坏节点的算力时,即坏节点算力总和超过了51%,最长链机制将会被坏节点利用,因此此时坏节点的出块速度整体比诚实节点快,获胜率高,这样坏节点产生的区块将会形成最长链。
此外,如果出块率很高,会使得区块产生的时间和区块在网络上传播的延迟相对变得较小,这样一个新块在产生以后还来不及传播到全网就会有其他的节点产生别的新块,互相竞争剧烈,导致链上分叉情况严重。虽然最终只会有一条最长链,但是出块率越高,块大小越大,分叉的情况就会越严重,最终区块链就会发展成有很多分叉的样子,如图所示。
复杂的分叉情况
基于比特币公链来看(以太坊公链中分叉块有其他处理),大量的分叉会带来两个问题:
- 浪费了网络资源和计算资源,大部分分叉块无效,因为只有最优链中的区块才被认为是有效的。
- 危害了安全性,整个区块链里的最优链变短了,算力分散在不同的分叉链中,这使得攻击者值需要少于51%的算力就可以产生出恶意的最优链。就好比有3个阵营,A阵营有30%算力,B阵营有32%算力,C阵营有38%算力,算力以3大阵营分散在A、B、C上,如果A、B、C各自搞分叉,那么最终C就可以以低于51%的算力(38%的算力)达到控制恶意最优链的目的。
声明:本站所有内容,如无特殊说明或标注,均为采集网络资源,任何内容均不构成投资建议。