主链的生成-看它如何打败亲兄弟

前文讲到,区块链实际不是一条链,而是一个随时可以分叉的链,中本聪的设计机制必须要从分叉链中选择一条链作为全球矿工共识的主链:

那么到底该选择哪条链作为主链呢?

中本聪规定,累计难度最多的那条件就是主链。什么是累计难度?

所以,每个区块都是有难度值的,每2016个区块的难度都是一样的,每产生2016个区块,难度变一次。

我们可以简单理解为难度就是区块的高度。比如目前有2条链,20012个区块的链、20013个区块的链。对比来看,有20013个区块的链的难度更高,所以矿工会毫不犹豫选择有20013个区块的链。

回到本文中,当全球矿工都处于20010号区块时,难度都是一样的,因为高度一样,所以难度一致。(高度就是指区块代号,比如20012、20013等等。)

当矿工A先收到了浅绿色的区块,在他看来,在20010基础上增加了一个区块,所以算上浅绿色区块,链上总难度目前是最大的,于是此时认为浅绿色区块这条链是主链,并开始计算浅绿色区块后面的20012号区块的数学题:

紧接着,又收到了深绿色和红色的20011号区块,但由于目前已经认为浅绿色是最大难度的链,于是把浅绿色作为主链,把深绿色、红色的链作为备用链:

此时矿工A顺利产出黄色区块,由于是自己产出的,并且目前仍没收到别人发过来的区块,于是将黄色区块链接在浅绿色区块后面,并且此时连接上黄色区块的这条链的难度最大,于是矿工A仍然认为此链(白-浅绿-黄)为主链:

在自己将黄色区块添加到浅绿色后面并广播给其它矿工时,突然收到了和黄色区块相同代号(20012号)的黑色区块,黑色区块里写明它的父区块是深绿色区块,于是矿工A将它挂在深绿色后面作为备用链:

当矿工A在努力计算20013号数学题时,突然收到了网络中传过来的白色20013号区块:

于是矿工A毫不犹豫停止了计算20013号区块,并查看了白色20013号区块的父区块,发现是黑色20012号区块,于是立即将白色20013挂在黑色20012后面,并开始计算20014号数学题。此时,主链已经不是下方“白-浅绿-黄”链条了!而是被共识成“白-深绿-黑-白”链条了:

这就是全球所有矿工如何从多条链中选择一条作为主链的思考过程。

矿工之间虽然不认识,但通过这样的方式,完全可以保证全球所有矿工的比特币主链几乎都保持是一致的。

如果当你看完这篇文章,仍有不懂的地方,请在下方留言,我会尽量解答你的困惑。

关注【通俗易懂区块链】,学懂区块链

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180127G0DZ9X00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券