区块与共识(二):冲突解决及51%攻击

如果两个节点同时解题成功,怎么办?

答:两个解题者都会迅速地把自己的区块广播出去,这样网络上的节点就收到了两个符合要求的区块:A和B,这时候怎么办?办法就是两个暂时都留着,然后大家继续开始解下一道题以获取下一个区块,有的节点会在A区块的基础上去求解下一个区块,有的会按照B去求解。

这样,就出现了两条链:A链和B链,但是没关系,过一段时间后,两条链总会出现长短,比如A链新产生了3个区块,B链才1个,那么,大家都会选择最长的那条链,这样共识又达成了。

所以,比特币发出去之后,并不是被1个区块打包就万事大吉了,一般都要经过6个区块的时间,也就是要经过6次确认,才比较安全。 好了,这就是比特币的共识方案,叫做POW(工作量证明:Proof of Work),其中区块做为记账权分割的单位,起着至关重要的作用。

现在,我们把交易图,嵌入到区块里来看看,就是下面这样子(暂省略了区块里的一些其他信息)。
这里写图片描述

建议童鞋们对图默记一下比特币里的两种连接:
1、交易连着交易;
2、区块连着区块。

比特币的这套方案完美无瑕吗?肯定不是,世界上没有绝对完美的东西。其实它有一个隐患,也就是大家经常听到的51%攻击。 因为记账权最终由算力决定,所以如果一个人或组织掌握了50%以上的算力,他就可以垄断记账权,这个时候他就可以做恶。

具体怎么做呢?

我们上面说了一般要产生6个新区块才能确认一笔交易,作恶者可以先把一笔比特币花掉,比如他转了1千个比特币给A,买了一套别墅。一方面他等着别人解题产生新区块,这样等到第6个区块产生之后,A确认自己收到了这1千个比特币,然后把房子过户给了他;另一方面,他也利用自己的强大算力开始解题产生新区块,同时他又构造了一笔交易,把这1千个比特币转给自己的另外一个地址,然后再把这笔交易打包到自己产生的区块中。因为他拥有了51%的算力,所以他产生新区块的速度会比其他节点更快,但是他的新区块暂时不发布出去。等到其他节点产生了6个新区块时,他产生了7个,这时候他已经收到了房子,然后再把自己的7个新区块广播出去,然后其他节点看到他的链条更长,就都会以他的为准,这样,整个网络就认可了他的1千个比特币转给了他自己。这时候,他实现了双花。

那么,这种情况发生的可能性大吗? 其实不大。因为比特币的奖赏机制,当一个人拥有了50%以上的算力时,如果他诚实地工作,长远来看获得的收益会比作恶获得的多。事实上,当今比特币网络的算力已经集中到屈指可数的几个大矿池中,有好几次,当某个矿池的算力接近50%时,那个矿池都会主动削减算力以避嫌,可见奖赏机制之有效。 最后说几句。虽然算力已经中心化,但我们仍然认为,比特币是一个更偏向为去中心化的系统。因为这个算力中心能作的恶,仅仅就是把自己花掉的比特币拿回来,而不能滥发比特币,这就跟银行这种能滥发货币的中心化系统截然不同。这就类似于0611那篇里提到的,当年互联网在网络层已经中心化的情况下,整个互联网还是偏去中心化一样(后来万维网C/S模式的崛起,才让互联网中心化)。

猜你喜欢

转载自blog.csdn.net/lianquan_cn/article/details/81947950