前文我们已经详细介绍过“挖矿”的过程,节点完成“工作量证明”算出随机数后即可生成区块并写入区块链,问题来了,如果有两个节点同时解出随机数,都把生成的区块广播到网络中随后写入区块链,必然会导致区块链分叉。那么所有节点就不可能有一本公共的总帐本。
如何确认哪一份才是公认权威的总账本呢?
中本聪在论文《比特币:一种点对点网络中的电子现金》中曾介绍,比特币工作量证明机制的本质是一CPU一票,而最长链包含了最大的工作量,所以“大多数人”的决定就可以表达为最长链。
通俗来讲就是,比特币区块是依靠矿工们不断进行数学运算而产生的,每一个区块都必须引用其上一个区块,因此最长的链也是最难以推翻和篡改的,所以节点永远认为最长链才是有效的区块链,只有在最长链上挖矿的矿工才能够获得奖励,这就是我们常说的比特币最长链原则。
去中心化共识
在挖矿一篇,我们了解节点通过工作量证明来竞争记账,权威的总帐本是怎么达到共识的,由以下四个独立过程相互作用而产生:
1.每个节点(挖矿节点)依据标准对每个交易进行独立验证
2.挖矿节点通过完成工作量证明,将交易记录独立打包进新区块,并广播至网络。
3.每个节点独立的对新区块进行校验并组装进区块链
4.每个节点对区块链进行独立选择,在工作量证明机制下选择累计工作量最大的区块链
共识最终目的是保证比特币不停的在工作量最大的区块链上运转,工作量最大的区块链就是权威的公共总帐本。
最长链的选择
先来一个定义,在一般情况下,**把累计了最多难度的区块链,也是包含最多区块的那个链称为主链。