区块链-深入理解比特币共识机制

很多人在看比特币的时候,都可能有这样的困惑:节点通过POW(工作量证明)只是把一些交易打在包里,形成了合法的区块。但是,新生成的区块还需要广播给网络中的其他节点。其他节点是否最终选择该区块作为下一个区块,还不一定(也就是说还没有形成共识)。那为啥POW被大家说成是共识机制呢?

就以比特币为例,详细整理一下区块形成的过程,大致有以下几个步骤:

1)节点从接收到的交易池中,挑选交易列表,生成区块结构。

2)节点使用POW算法,计算出区块中的nonce,满足难度。

3)广播计算好的区块

4)节点接收到别人的区块,增加到自己本地的区块链上。注意,节点在这一刻都认为自己是正确的区块链,但是很有可能和当前网络中的区块链状态不一致。节点和节点间会沟通同步,在一段时间后,会达到一个稳定状态。

比特币6个区块确认,就是一个时间过程。一般来说,6个区块时间,也就是1个小时的时间足够节点间确认当前区块的前面第6个区块(所有节点都能确认)。

可以看出,在上述步骤中,也只是步骤2使用POW算法,真正的共识的形成是在步骤4中,所有节点同步,出现分歧以节点多的一方为准。其实步骤4,就是拜占庭算法(所有人投票,以人数多的一方为准)。

既然是这样,比特币的共识算法就应该是拜占庭算法,为啥很多人说比特币的共识算法是POW呢?

原因很简单,要从整个共识机制的角度来看。拜占庭算法,也就是很多人投票的算法,在人数很多的情况下,很难在短时间内形成共识。那为了快速有效的形成共识,POW算法删选出少量节点,这些少量节点利用拜占庭算法,就能很快形成共识。比特币的设计中,POW的作用是非常大的,可能大家为了简单方便描述比特币的共识机制,约定俗成:比特币的共识机制是POW。

总结一下:比特币的共识机制:POW算法+BFT(拜占庭)算法。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180414G02ZXG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区