专栏首页申龙斌的程序人生分叉Fork【区块链生存训练】

分叉Fork【区块链生存训练】

8月1日20:20,Bitcoin Cash(前身是Bitcoin ABC)要给比特币的区块链来个硬分叉,虽然支持它的矿工的算力并不大,但也会闹出个BCC新币来,不管它了,持币者凭空多了一种币也挺高兴的。

前一篇在介绍“重放攻击”时,画了下面这张图,分叉这个概念看似并不难理解,与道路的分叉很像,一条主路是BTC→BTC1,另一条路是BCC,注意这里的BTC1只是我为了区分8月1日之前的BTC而起的新名字,并没有这个币。BCC和BTC的观点不一致,谁也说服不了谁,最后分道扬镳,分别在各自的区块链上挖矿。

分叉也有叫分裂(Split)的,但更常见的还是Fork,因为软分叉简称为SF(Soft Fork),硬分叉简称HF(Hard Fork)。至于什么是硬分叉,什么是软分叉暂时先不管,先来仔细看看分叉是如何形成的。

比特币系统中矿工们想写入一个新区块,非常不容易,需要完成工作量证明PoW,也就是要做一道计算量非常大的算术题,这道题说简单不简单、说难也不太难,平均10分钟就有矿工计算出来,然后发布一个新区块。

如图a所示,假设黑点是分布在世界各地的节点,大黑点代表矿工节点,小黑点代表普通的钱包节点,真实世界里的节点比这多得多,而且连接关系也不是按照地理位置相连的,这里为了形象化地说明分叉进行了大量简化(本图借鉴了《精通比特币》中的思路,但我进行了简化和改进)。

左下角为区块链,最新产生出来的区块高度为478129(我写此文的最新高度),这个区块已经在整个世界的网络中进行了广播,并且全网都认可了这个区块。

图a 区块链世界的通常情况

世界这么大,有些事就是非常凑巧,假设两个矿工(矿工A、矿工B)几乎同时完成了工作量证明PoW,分别向比特币网络上广播他们的成果。由于大家所处的位置不同,网络连接不同,有些节点先收到A广播出来的区块,有些节点先收到B广播出来的区块,这时候就出来了临时分叉。

如图b,节点A附近的收到了478130的蓝色区块,节点B附近收到编号也是478130的红色区块,其它的那些仍是黑色的节点尚未完成同步。

图b 两个矿工几乎同时都找到新块

随着时间的推移,它们很快就分化为蓝色阵营或者红色阵营(图c),蓝色阵营承认蓝色的478130区块,红色阵营承认红色的478130区块。再强调一遍,实际情况并不与地理位置相关,这里只是让分裂或分叉看得更形象。

图c 区块链世界分为两个阵营

不管收到了蓝色区块还是红色区块,矿工们可没有闲着,因为矿场要交巨额的电费,挖不出比特币,矿场就要关门。此时,假设红色阵营的矿工C,挖出了478131区块(用黑色标记),立刻通知全世界。它附近的节点并不傻,只认最长的链,马上变为黑色阵营(图d)。

图d 在红色阵营里又有新块产生

随着时间的推移,如果这段时间内没有矿工计算出新答案,则全网很快就承认右侧的链为主链。这时候整个世界又和平了(图e),最新的区块高度为478131,蓝色的478130区块被孤立了,明智的矿工不会基于它再做工作,马上在最长的链上投入算力,开始下一轮的计算。

图e 区块链世界又回归和平,蓝块被孤立

区块链上的临时分叉很常见,但工作量证明PoW的计算量太大,在最长的链上进行计算是非常明智的,经过一段时间后大家就会达成共识,主链旁的小叉叉慢慢会被大家遗忘的。

明白了分叉的基本原理后,就比较容易理解51%攻击的概念了,下次再讲。软分叉、硬分叉的概念也要慢慢展开了。

小结:

  • 区块链世界里的临时分叉很常见
  • 两个矿工几乎同时挖到新块时,会产生临时分叉
  • 由于挖新块要耗费巨大的计算量,明智的矿工会在最长链上挖矿,大家很快会找到一条共认的主链

--- END ---

本文分享自微信公众号 - 申龙斌的程序人生(slbGTD)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 区块链上存证,只需这四步

    区块链里的信息具有不可篡改性,比如中本聪在创世区块中写的一段话:“The Times 03/Jan/2009 Chancellor on brink of se...

    申龙斌
  • 区块链技术在数字油田的应用构想

    2018年8月18日,我在北京昌平参加智能数字油田开放论坛,本文为我在大会上做的一次报告的主要内容。以前两次会议内容回顾:

    申龙斌
  • 想写一本给C#程序员看的区块链书籍

    普通人在短时间内很难理解这些概念,但程序员们相当有优势,他们有计算机理论知识,理解这些概念相对容易一些。

    申龙斌
  • 区块链是什么(下)?凭什么他可以记账,共识机制有话说

    上篇《区块链是什么?读完这篇文章你就掌握70%区块链入门》的末尾有个问题:区块链网络上的陌生人出于什么承认区块的有效性?他们为什么愿意苦哈哈地帮助记账?现在,我...

    互链脉搏
  • 埃森哲量化分析八大投行数据—区块链价值到底几何?

    大数据文摘
  • 世界8大区块链友好国

    根据我们网站的名称,我们已经知道密码不在[区块]链中。跟据CoinDesk比特币价格指数显示,加密货币市场现在价值3000亿美元,比特币目前的交易价格在13,0...

    林纾燊
  • 网易首发区块链游戏导航,是什么鬼?

    区块链游戏,相信大家也不陌生了,国内有名的比如百度的莱茨狗,360的区块猫,小米的加密兔等等... 首先区块链游戏最大的特点就是去中心化。对于游戏来讲,最大的一...

    区块链领域
  • 区块链安全如何保证?公有私有哪家强?

    区块链,比特币背后的分布式账本技术,日后可能会被证明比它支持的货币更有价值,但这种价值必须建立在安全的基础上。当我们开始将该技术付诸实践时,一定要确保我们设置的...

    静一
  • 区块链众筹的创想N次方

    近两年区块链逐渐成为热门话题,不断在媒体、学术和金融界出现。国内外大量的知名企业纷纷加入针对区块链研究的社区和联盟,争取在区块链技术爆发之前,了解区块链技术,应...

    用户1310347
  • 区块链初学者指南

    IT派 - {技术青年圈} 持续关注互联网、大数据、人工智能领域 ? 我并不明白为什么人们会觉得要理解区块链会有点难,而我也想知道为什么自己并没有。那是在 ...

    IT派

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动