什么是51%攻击?

在上篇文章(http://www.javashuo.com/article/p-uvikgbew-cp.html)发出后,有人提出一个疑问“若是其中一我的是正确的,其余人联合搞欺诈,是要怎样的条件”。这篇文章就来聊聊这个问题。api

 

ll本文内容依旧翻译自Authorito Capital CEO的博文《WTF is The Blockchain?》和《Who Owns Blcockchain》,略有删减。网络

ll原文连接:区块链

https://medium.com/@mohitmamoria/who-owns-the-blockchain-9b3af7a2ab76加密

https://hackernoon.com/wtf-is-the-blockchain-1da89ba19348.net

 

在上篇文章中,咱们把区块链假设为一个帐本,每一个区块就是每页帐本页,当一页帐本页记满账的时候,就须要把它用“密码”(哈希值)封印起来,并把这页内容存到一个文件夹中。翻译

 

如今想象一下,在这个文件夹中已经存有5页内容了,全部的页面都被一个“封印密码”封印起来。若是我回到第二页,修改了其中一些交易数据,来使我得到利益,会怎样?封印密码会让全部人发现交易的不一致性,对不对?若是我为已修改的内容从新算一个封印密码,并将其标记在页面上,又会怎样呢?blog

 

这有个小把戏保护封印密码不被修改游戏

 

还记得我以前告诉你们的吗?有两个盒子,一个盒子里包含数字20893,另外一个盒子是空的,等待玩家计算一个数值,使得两个盒子里的内容相加,得出咱们要求的结果。开发

 

实际上,计算区块链的封印密码更为复杂,它须要三个盒子而不是两个盒子。这三个盒子中的两个已提早包含内容,其中一个盒子包含本页中的全部交易列表,另外一个盒子包含前一页通过“魔法机器”(哈希加密)加工后输出的结果,第三个盒子要装的是玩家本身计算得出的封印密码。当三个盒子中都装满东西,并输入进机器中时,从机器右边输出的结果必须知足咱们预设的条件。get

区块链中这个巧妙的“小把戏”,可以确保每一页的密封都须要依靠它的前一页。所以,若是有人想修改已经被封印起来的某页内容,他就必须修改这页以前的全部页面内容和封印密码,以保证链条的一致性和连续性。

 

在上篇文章的最开始,咱们假设有10个玩家,若是这些玩家中的某我的试图欺骗你们,修改某页帐本中的内容,他就不得不修改不少页的内容并从新计算这些页面上的封印密码。咱们都知道计算封印密码有多难!从他修改的那页开始,他就得在网络中从新创建另一条链。可是这条链永远追不上另外9我的维护的那条诚实的链的,由于一我的的工做能力和速度是赶不上9我的合在一块儿的工做能力和速度的。所以,保证了最长的那条链是“诚实的”链。所以,在这局游戏中,1个不诚实的家伙是打不过9个诚实的玩家的,他是不可能修改为功的。

若是不是一我的,而是六我的变得不诚实呢?

 

这种状况,用专业术语来讲就是“51%攻击”。

 

若是网络中的大部分人变得不诚实并欺骗网络中的其余人时,那这个区块链协议就会面临失败。虽然这几乎不可能发生,但咱们也要知道区块链系统的脆弱之处,它是创建在“群体中的大多数老是诚实的”假设之上的。

 

所以,在区块链中,若是一我的能掌握系统51%的算力,他就能重写区块链中的数据,从而让本身获利。

 

“系统中51%的算力”是什么意思?

系统中的玩家为记帐和计算“封印密码”所花费的CPU耗能和电力,就是咱们所说的算力。

 

如何解决这个问题

 

如今已经有人提出一些解决办法,好比不依靠电脑算力的“权益证实(proof of stake)”方法。权益证实是指系统中的玩家不用解决数学难题来算出“封印密码”,而是将他们手中持有的币做为赌注压在他们提出的解决方案上。若是大部分人都赞成这个方案,那这个玩家就能获得奖励。若是大部分人不一样意,那这个玩家以前押注的币就会被从他的钱包扣除。这个方法引入了惩罚方案。

 

但这个方法也存在问题。虽然不诚实的家伙会受到惩罚,但也会致使系统中的玩家“富者更富,穷者更穷”。若是我此次赢得了赌注并获得奖励,下次会押上更多的币,再次赢得赌注和奖金,再押入更多的资产。循环往复,最后,区块链中的大部分资产就会汇集到不多的人手中。若是掌握了多数财富的这几我的想要改写区块链,那他们就能办到。

 

不管何种状况,只要少数几我的掌握了区块链,那么区块链中的大多数人就处于风险之中。

 

在Twitter上有一段Vitalik和其余人的对话:

Bug Spencer:银行指定规则和核心开发者指定规则有什么不一样吗?这二者都要依靠他人。

Vitalik Buterin:若是你发现JP Morgan滥用权力欺骗了你,你和其余对JP Morgan不满意的客户会分离出一个“JP Morgan经典”吗?

 

Vitalik的观点是:若是一个区块链中有对其规则不满意的用户,那这些用户能够分离出来从新建立一个分叉的链,就像以太经典区块链和以太坊区块链同样。

 

这个方法虽然不彻底适用,但也是一个方法。

 

还有更好的方案吗?确定会有,毕竟有那么多的区块链爱好者在为之付出。若是你有更好的方法或对区块链有更棒的观点,欢迎投稿给咱们。

相关文章
相关标签/搜索