币圈子-打造专业区块链媒体平台

51%算力攻击是什么?币圈子深度解析51%算力攻击

2019-12-30 21:11:19 | 来源:互联网 | 7822人阅读 | 作者:币圈子
全文导读
51%算力攻击是什么?51%攻击是一个充满着想像力的词,总让人有一种刀光剑影看小说的感觉,但其实很多人对这个词的理解是不太准确的。最常见的理解是按照这个词的字面意思:认为只要算力超过51%,就能对某个系统发动攻击

51%算力攻击是什么?“51%攻击”是一个充满着想像力的词,总让人有一种刀光剑影看小说的感觉,但其实很多人对这个词的理解是不太准确的。最常见的理解是按照这个词的字面意思:认为只要算力超过51%,就能对某个系统发动攻击,这个系统就存在中心化或者被攻破的可能性。

比如,我今天随便查了两篇相关的文章,分别是这么说的:1、当矿池的算力过大,超过全网51%的哈希力,就会发生51%攻击。2、51%攻击,就是有人掌握了全网51%以上的算力之后,就可以像赛跑一样,抢先完成一个更长的、伪造交易的链。

比特币只认最长的链。所以伪造的交易也会得到所有节点的认可,假的也随之变成真的了。这是由比特币的共识机制PoW(工作量证明)决定的。在追究这些说法是不是正确之前,我们先来研究一下到底51%攻击是指什么呢?它的概念又是怎么定义的呢?

事实上,比特币白皮书全文中并没有出现“51%攻击”这个词,不过倒是有过相关的描述,算是最接近对51%攻击的定义了:The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 只要诚实的计算节点在总体上比任何一个攻击群控制更多的计算能力,那么系统就是安全的。从这句话可以推论一下,要想一方的计算能力超过另外一方,最好是一方的算力超过50%,比如达到51%时,那它就肯定比另一方多。

如果诚实节点拥有51%算力,那系统就是安全的;如果作恶节点拥有51%算力,那它就能对另一方发动51%攻击,那系统就是不安全的,我估计51%攻击就是从这里来的。

江卓尔在《天下大义,当混为一——算力战》中有专门提到他的定义:大家都知道 “51%算力攻击”: 1、攻击者通过优势算力,挖掘一条比原链更长的攻击链。 2、攻击链向全网广播后,节点按规则,将接受更长的链,丢弃原链。 下图中的直线链(上面的蓝色链和下面的红色链),表示被中立节点接受的主链。

51%算力攻击是什么?币圈子深度解析51%算力攻击

下面,我将把51%攻击拆成“51%”与“攻击”这两个词来分别讲解。

一、51%的算力不是绝对的

1、即使没有51%的算力,比如只有30%,40%的算力,也能发动“51%攻击”; 并不是超过了51%的算力,就一定会发动51%攻击,只是存在这种可能性。事实上,即使你只有30%的算力,你也有可能连续出5-6个块,也已经可以开始发动很有威胁的“51攻击”了; 即使你有51%的算力,你也有可能半天出不了一个块,而攻击失败,只不过长久看来,你出块的概率等于你算力的权重。如果把节点分为诚实节点、中立节点、作恶节点的话,那么你只需要比诚实节点的算力多即可,而不必一定需要51%的算力。

2、算力只是这场竞赛的一个方面,还有网络传播等方面因素。在出块有先后的情况下,基本上谁先出块谁就有很大概率成为最长链。在同时出块的情况下,谁能更快的传播到51%的网络节点并被接受,并在此基础上进行进一步的扩展和记账,谁就是最长链。从这个角度说,51%指的不仅是算力,更是指网络节点的接受度。 从这个角度说,更重要的不仅是51%算力,而是利用优势算力抢先出块后的“最长链法则”。当然,这些都是对同一条链上的竞争而言; 对于已经分裂成不同的两条链而言,比如BCH和BTC,那么无论其中一条领先多少区块,都没有太大意义。

二、算力竞争本身并不是攻击

这里说的是“51%攻击”,而不是说的“51%竞争”,“51%争夺”。这两者有什么区别呢?竞争是为了从中获益,而攻击是为了摧毁这条链。竞争是合理的,即使你拥有超过51%的算力,只要你在规则允许的范围下,正常出块,正常挖矿,那么这就是正常的竞争,仍然是以谁先出块,谁的链最长为判断标准,不能算攻击。

但是,像在ABC与BSV的算力大战中发生的事,比如BSV最初的宣传就是要“用算力摧毁BCHABC”,“让BCH上两年没有任何交易”(虽然最终都没有达成),这种行为就是明确的攻击,而不是单纯的竞争。一旦51%攻击达成,某条链将被摧毁,攻击方和防守方都会一无所获。这也就是为什么江卓尔说“攻击方不管胜负,必然损失攻击成本,而防御方有防守优势,如果获胜还可以获得挖矿收入作为补偿”的原因。

有人会问,花那么大的代价,摧毁一条链有什么好处呢?一般来说没什么好处,大部分攻击行为都是弊大于利。一般来说,算力越大越会主动维护整个系统,而这也正是比特币系统内置的博弈论发挥作用的地方。但在这个案例中,BSV方希望通过摧毁BCHABC,建立自己的BSV正统,这就是摧毁的意义;这也是他曾经说过最终将通过算力战摧毁BTC,从而统一BTC的原因所在。

三、51%攻击的本质

总结:无论是中本聪还是江卓尔对51%攻击的定义,都没有出现51%这个词,我个人认为,51%攻击的更准确的理解是通过优势算力(并不要求51%)实现对最长链的争夺。毕竟正如白皮书里面最明确的定义:Nodes always consider the longest chain to be the correct one and will keep working on extending it. 最长链胜出,其它节点在这条链基础上扩展。

近期都在说51%攻击,有夸大其词的,也有不屑一顾的,本人认为夸大和看轻都不是正确的,以下是本人对51%攻击的看法,不一定正确,仅供参考,欢迎探讨。

51%攻击是指掌握了比特币全网的51%算力之后,用这些算力来重新计算已经确认过的区块,使块链产生分叉并且获得利益的行为。

一、如何发动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天(在这一点上,比特币天空网的多等几个确认的说法是对的)。

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

六、本文小结

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

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

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

BTC地址:1faVxBp2KmST98p3tJjx2MQP98JLLnF2Q

温馨提示:文章不代表币圈子立场,不构成任何投资建议,谨防风险!本文来源于币圈子网站,转载请注明出处!侵权必究!
相关阅读
扩展阅读