51%攻击

      51%攻击是指掌握了比特币全网的51%算力之后,用这些算力来重新计算已经确认过的区块,就会破坏区块链去中心化的特性,同时也让网络处在几种攻击风险之下,例如自私挖矿,取消所有转账,双花以及随机分叉。

他能够:
1、修改自己的交易记录,这可以使他进行双重支付
2、阻止区块确认部分或者全部交易
3、阻止部分或全部矿工开采到任何有效的区块

但他不能:
1、修改其他人的交易记录
2、阻止交易被发出去(交易会被发出,只是显示0个确认而已)
3、改变每个区块产生的比特币数量
4、凭空产生比特币

5、把不属于他的比特币发送给自己或其他人

一、如何发动51%攻击?

 假定发动51%攻击的人是一个理性的人,攻击的目的为了利益,而不是为了其他,因而攻击者在发动攻击前有两个条件:

1、掌握了比特币全网的51%算力
2、手里持有大量比特币

攻击者发动攻击:


1、把比特币转到交易所或某个机构或个人,卖出所有比特币,并且收到钱、把钱提现到银行帐号(提现目的是为确保收益,也可不用提现)。这个时间越短越好,能大大节省攻击时间。

2、用51%算力从还没向交易所转币的区块开始重新生成区块

比如:向交易所转币的区块为第30万个区块,攻击者就在第29万9999个区块开始重新生成区块。

3、因为攻击者有51%算力,而且假设他能在攻击过程中保证一直51%算力,所以他的攻击一定成功,也就是说他生成的攻击块链一定能追上原块链。

4、当攻击块链的长度超过原块链2个区块,所有的客户端将丢弃原块链,接受攻击块链。至此,51%攻击成功。

二、造成后果

原块链上29万9999个区块之后交易全部作废,有以下影响:

A   29万9999个区块之后没有交易的客户的币数量没有任何影响。
B   29万9999个区块之后转出比特币的人会发现:币回来了。
C   29万9999个区块之后接收到比特币的人会发现:币消失了。
D   最重要的后果是:人们对比特币网络的信心降到冰点,比特币的币值将受到重创。


三、51%攻击方法说明如下


1、这是一种能够获得最大利益的51%攻击方法,因为我们假定攻击者是理性的、为获得利益而攻击,而非一心置比特币于死地而不求任何回报的疯子。

2、无需51%算力就可以发动51%攻击,比如45%算力,有成功可能性,但非确定性成功。有这么一个场景:原块链长度30万,攻击者具备45%算力,从29万9999个区块开始计算,运气好的话,攻击块链延长到30万零2个,而原块链还是30万长度,攻击就成功了。这种攻击影响的区块数量少,如果币数量小,则被发现的可能性很小。目前大家担心的是这种情况。本人认为,虽然连续产出3个区块的可能性不大,但不是没有出现过,ghash.io就出现过连续产出5-6个区块的情况。因而这种非51%攻击的可能性完全存在,比特币世界要时刻监控、密切注意。

3、有人说多等几个确认就能避免51%攻击。这话有严重问题。如果是非51%算力的攻击,多等几个确认是有效的,数量特别大的比特币转帐应该等几天。但是如果是51%算力攻击,就应该知道,如果攻击者能一直保持51%算力,他可以从比特币最近检查点之后的区块开始重新计算,攻击块链能追上原块链,成功只是时间问题。如果攻击花费了1年时间,也要等1年的确认吗,因而这种认识不全面。

4、攻击块链可以隐藏地计算,直到比原块链多两个块链后才放出,按照目前的比特币网络协议,可以马上取代原块链,因而整个攻击可以不为人所知,直至最后一时刻。

四、51%攻击悖论

     我们原先假定发动51%攻击的人是为了利益,我们可以来计算一下攻击者的成本和收益。先回顾一下理解攻击者发动攻击的前提条件:

1、掌握了比特币全网的51%算力
分析第1点,掌握了比特币全网的51%算力,得需要多少钱。全网算力按照100P计算,矿机价格按照1T/8600元计算(这是目前最低的价格)

51P矿机购买费用=100P * 51% * 1024 * 8600元=449,126,400=4.5亿

要布署51P的算力以及发动攻击,我们精力估算额外需要1亿的其他费用和电费,因而计算为5.5亿。

2、要卖掉多少比特币

   到底要卖掉多少比特币才能获得更多的利益呢。至少要获得至少5.5亿的收益,才能在帐面上收支平衡,但要做这么大的攻击,而且攻击后的币值会降低很多,因而一定要非常大的利益才能让攻击者这么做,因而我们按照卖掉比特币能获利20亿估计。

      持有比特币=20亿/4000=50万个比特币

我们假设攻击者以1000元的成本拥有比特币,他原先的买币成本是2.5亿。
如果在短时间卖出50万个比特币,会把价格从4K打到谷底1K-2K了。
我们姑且假定,这是场外交易,对比特币价格没有影响。

3、成功实施51%攻击后的比特币价值

成功实施51%攻击后,我们认为在一段较长的时间内,人们对比特币的信心降低到冰点,比特币的价格会处于较低水平,如500元甚至更低,直至技术永远解决了51%攻击的可能性。

因而,即便攻击者成功实施了攻击,他的50万比特币的价值也将处于一个较低水平=50万 * 500=2.5亿。

4、攻击者的收支估算

攻击者以4K卖掉50万个比特币,获利20亿。

投入=5.5亿矿机+2.5亿比特币=8亿

收益=20亿-2.5亿-8亿+2.5亿=12亿

投入8亿,净收益12亿,这对比特币行业,绝对不是好收益。

5、8亿投资能获得多少收益

目前每天产出3600个比特币,如果一直保持51%算力可得到1836个,每月获得55080个比特币,按照4K计算收益为2亿。
攻击者持有的50万个比特币,当一个季度内比特币价格从4K到6K时,可以多获得10亿收益,这种价格上涨我认为是很正常的。

6、两种投资的收益对比

攻击是一种投资,诚实持币和挖矿也是一种投资。
攻击冒了巨大风险,获得12亿,如果在交易所大量抛售,获利还会更低;
诚实持币和挖矿,没有任何风险,一个季度内轻松获得收益=10亿+6亿=16亿。
我们假定的有理性的人,为了获得更大收益而攻击的人,实际上是不会发动这样的攻击的,这就是51%攻击悖论。
不过,如果是疯子或者国家,不惜血本只为毁灭比特币,我们没有办法阻止,也就没有必要讨论。

五、关于双花和虚花

关于这点已经在微博上说过多次,双花是指把一份币花了两次,且两次交易都被确认至少一次,其中一次交易一定是在孤立块中。目前大家所说的双花是交易可塑性问题:第一次交易不加交易费,被矿池排斥,欺骗某些无需确认的网站入帐后,再把币花到其他地方去。

双花是需要算力来保证的,可以是51%算力,也可以是45%算力,具体情况请看本文的第三部分的第二点,但要再次提醒的是:某个矿池连续产出3个区块,就有可能产生非51%算力的双花攻击,ghash.io出现过连续产出5-6个区块的情况,完全有能力发起这种攻击,因而比特币世界要时刻监控、密切注意。一旦出现孤立块,而且里面的交易输入在接下来几个块中重新出现,那很可能就是双花。我们看到:从今年4月份开始,孤立块出现得越来越多,应该有些情况。不过,我奇怪的是为什么blockchain.info关于孤立块的页面一直有BUG,一直不显示具体的孤立块内容,我10天或半月前向blockchain.info提过BUG,但是到现在为止还没有正常,但愿这是BUG,而非因其他原因而隐瞒数据。防范方法是多等几个确认,大额交易建议等1天(在这一点上,比特币天空网的多等几个确认的说法是对的)。


上文提到的交易可塑性问题,我们可以称之为虚花(这个名称从比特天空网的文章中借用而来,我觉得比较合适),第一次交易未被纳入区块,第二次交易会被纳入区块,这种攻击无需算力,谁都可以发起攻击,接收方的防范也很简单,只需至少一个确认。


那么51%攻击怎么才会发生呢?

情况1:某个矿池算力过大


当矿池的算力过大,超过全网51%的哈希力,就会发生51%攻击。这可不是危言耸听哦,在比特币历史上,就曾经发生过。


在2014年,著名的矿池GHash就超过51%哈希力。不过他们道德品格比较高尚,自己请求将算力减少,并承若不会超过39.99% 的哈希力。在2016年8月,Krypton和Shift,这两个基于以太坊的项目,就遭到了51%攻击。



情况2:有无限的资本


我们常说,不要让贫穷限制了想象力。如果你钱多的花不完,那么你就可以去买足够多的设备,例如所有的矿机和GPU来接管整个区块链网络,发动51%攻击。


这听起来有点像咱们隔壁的高丽国做的事情,这种情况也被戏称为“金手指攻击”。在发动攻击后,你可以继续通过实行双花或者在链上发布各种欺诈转账,从而摧毁某个币的价值。



情况3:工作量证明中链替换问题


假设现在有人写了个智能合约,其中说矿工需要存入一大笔资金,然后才能加入挖矿。并且在有60%矿工加入之前,你随时可以离开。但是在有60%矿工加入之后,你就必须要在20个区块加在分叉链(红链)上才能离开。


如此,新的链就会越来越强大,因为有60%的矿工都被绑定在新链上,同时原来的链(蓝链)也逐渐被替换掉了。有人或许会问,为啥矿工要遵守这个合约呢?逐利性是根本,并且对于矿工来说,这并无什么风险。


此外就是之前存入的担保资金,使得矿工不得不做。这样地化,就会造成链分叉攻击。



51%攻击会造成什么结果?


简单介绍了51%攻击,接下来咱们聊聊在被攻击之后,到底会发生什么?


结果1:自私挖矿


假设小红和小明是两矿工,他们两人同时解答了对应区块所需要的数学难题。那么问题就在于网络认可谁挖出来的区块。如果网络中有80%的算力选择去挖小红的区块,那么她出块的概率就要比小明高的多。


这样地话,小红的区块就会成功主链的一部分,那么小明的区块就只能被遗弃,不会加到主链上。这时候问题就来了,如果小红始终有51%的哈希力,那么她就能不停地去挖区块,然后将那个块加入到主链上,而且还不需要整个网络的批准。


这就太爽了,小红可以不停偷偷地去挖出区块,而且其他人都不知道。然后拿走所有的挖矿奖励和转账费用。



结果2:转账取消


小红想给小明转账,那么矿工就需要验证她的转账信息,再把信息放到区块里面,这样小明才能收到转账。


这时候假设比特币正在被51%攻击,那么这个区块就会被攻击者挖出,因为他有51%的哈希力。


换句话说,因为这时候他有绝对的权力,他也能够不接受任何区块的任何转账,而这些区块之后是要被放到主链上的。试想下这会怎么样,这意味着比特币网络彻底被摧毁。



结果3:双花现象


矿工最重要的作用之一就是可以防止“双花”现象。其实“双花”也很好理解,就是一笔钱被花了两次,同个币在同一时间被转账了2次。但是矿工就很好地解决了这个问题,因为转账只会在矿工将转账信息放入他们挖出的区块后,才会发生。


假设小明想去同时追小红和小朱,作为diaosi的他表示没什么钱,就想着投机取巧把同一个币同时转给她们。矿工这时候站出来不同意了,只把其中其中一个转账信息放入区块,然后覆盖另外一个,从而防止了“双花”。


不过在51%攻击的情况下,攻击者才是最后将新区块放入区块链上的人,他们完全可以发动 “双花”,将两比转账信息都放入区块中。甚至,还可以将同一个币进行多次转账。 


如果发生“双花”现象,那么这类币的价值就会被严重打压,也会对其造成毁灭性的影响。而且通过链分叉,也会发生“双花”现象。



结果4:随机分叉


“分叉”大家应该都有所了解,毕竟之前比特币分叉的事情弄得沸沸扬扬的。下图中的红链就是从蓝链分叉而来的。设想51%攻击者在区块51中花了20个比特币买了其他数字资产,他们很容易就能在区块50进行分叉,又得到一个区块51。


最神奇的是,在分叉的时候,新的区块51中你也会得到之前区块中的资产。换句话说,51%攻击者在蓝色区块51中会获得等同20比特币的其他数字资产,在红色区块51中还会有20个比特币。这其实也就是分叉导致的“双花”现象。


主链分叉现象(图片来自网络)


而且最可怕的是,在51%攻击下,区块是由攻击者挖出来的,如果别的矿工想要去产生新的区块,那么攻击者可以在你挖出区块前,去分叉新的链,然后在新链基础上继续挖矿。



六、本文小结


1、真正的51%算力攻击一旦发生,后果会很严重,但51%攻击有悖论,使得它事实上难以发生,除非疯子或疯子国家。

2、双花攻击无需51%的算力,ghash.io的45%算力已经具备了双花攻击的条件,事情没有我们想像得那么乐观,比特币世界要重视这个事情。

3、双花和虚花可以多等几个确认来防范,真正的51%算力攻击多等几个确认也难以防范。
展开阅读全文

没有更多推荐了,返回首页