div#pop_ad { opacity: 0; }
1.比特币 V.S. 比特币现金?
身在链圈,你一定听说过BTC和BCH,ETH和ETC。BTC是比特币,BCH是bitch,哦不,比特现金(Bitcoin Cash);ETH是以太币(Ether),ETC是电子收费通道,哦呸,是以太坊经典(Ethereum Classic)。那么,他们的关系是什么呢?
答案在于分叉。

BCH是比特币区块链分叉出来的,ETC是以太坊分叉出来的。区别是,比特币分叉之后,BTC仍然是主流;以太坊分叉之后,ETH已不是原来的ETH,而是变成了ETC,现在成了“非主流”。这两者都属于硬分叉。
除了硬分叉,还有软分叉。
接下来,我们就详细讲解一下各种分叉是怎么回事。
2.假分叉(False Fork)
这是一个笔者自己杜撰的词,指的是下面这种情况。
想象一下两个矿工A和B同时在一条区块链上挖矿。由于巧合,他们俩在同一个时间点开始挖矿,然后因为他俩的算力一样,那么,很有可能他们俩在同时挖到矿(或者说相隔的时间非常短)。由于是同时挖到的,那么,离矿工A近的那些节点,就会先收到他的挖矿记录,进行确认,然后链接到前面的区块上;同时,离矿工B近的那些节点,就会先确认矿工B的区块。

这时,分叉就开始产生了。在矿工A的区块后面,会跟随一些新的区块,由跟随他的节点产生;对于矿工B同理。由于各节点算力不一样,两条链的增长速度会不一样,直到某个节点发现这个情况。这时,根据规则,这个节点会认可较长的那条链,摒弃较短的那条链(这条链消失),两条链又回归为一条链。分叉消失了。
笔者把这种情况称为假分叉,即由于巧合而产生的不可预测的非真实分叉情况。因为这种“分叉”并不存在共识规则的分野,实质上没有分叉,所以称之为假分叉。
3.软分叉(Soft Fork)
软分叉产生往往是由于系统升级导致的。因为各个节点之间升级软件有时间差(就好比微信发布了新版本,但总有人先更新,总有人动作慢一点,甚至不愿意升级),而在这个时间差之内,挖矿还在继续进行,就会产生两种区块:已升级节点的区块和未升级节点的区块。
为了方便接下来的阐述,我们将升级了新区块链软件的节点称为新节点,未升级的节点称为旧节点。
通过对新版本的软件做一些特殊的修改,新节点产生的区块可以在旧节点不知情的情况下,骗过旧节点,被其认可。而旧节点生产的区块也能被新节点认可。即新、旧节点是相互兼容的,两种节点仍然在同一条链上工作。这种情况并没有在形态上分叉成两条链,但由于存在两种不同的共识规则,所以被命名为软分叉。

当新节点的算力超过50%时,它们就会认为旧节点生产的区块为不合法,逼迫旧节点进行升级。所以说,软分叉是通过新节点对旧节点的欺骗,来逐步完成区块链软件升级的。
通过软分叉实现所有节点的升级,有一个前提:这个区块链系统是“向前兼容(Backforward Compatible)”的,即为我们在前面所说,旧节点的区块能够“认可”新节点的区块,这是通过对新版本软件做特殊处理,以欺骗旧节点实现的:新节点的区块有新的共识规则,但同时要求它包含一些旧节点的共识规则,以方便旧节点识别;而对于新节点有而旧节点没有的共识规则,要求旧节点可以忽略。这种机制,要求在设计整个区块链系统之初,就考虑到后来的多种可能性,以留出兼容新节点的后门。
软分叉方案的实施,是为了保证,在不需要所有节点都升级的情况下,原来的区块链还能够正常运行下去。
4.硬分叉(Hard Fork)
在上面的升级过程中,如果旧版本的节点不能认可新节点的区块,新、旧节点就会在两条不同的区块链上运行,分叉由此产生。并且,因为一部分节点完全不认同另一部分节点的共识规则(往往是旧节点完全不接受新节点的共识规则),两条分叉的链不会合并,会永久继续下去,这就是硬分叉。

以太坊和比特币分叉的故事就是这样。
先说以太坊。2016年,基于以太坊的重要组织DAO(Decentralized Autonomous Organization, 去中心化自治组织),因为黑客的攻击,导致约6000万美元的以太币被盗。这时,以太坊的开发团队,通过修改以太坊区块链的源代码,强行把第192,0000个区块上的资产,转移到一个特定的地址,拿回了被盗的资产。从这个区块开始,一部分人因为是“原教旨主义者”,觉得这个举动违背了区块链不可篡改、不可回滚的精神,不认可这个修改,坚持在旧链上运行,就是现在的ETC;另一部分节点认可“宗教改革”,他们现在运行的链就是ETH。

比特币硬分叉发生在2017年。比特币社区因为对区块扩容的意见不同:一部分不同意扩容,一部分同意扩容,因此,分叉也产生了,即BTC和BCH。其实,比特币后来经过了很多次分叉,现在有比特币黄金(BTG),比特币钻石(BCD),超级比特币(SBTC)等。
5.软分叉 V.S. 硬分叉
从上面的内容我们可以看出,硬分叉是因为一部分节点不愿意改变,选在留在原有的链上工作,而另一部分节点选择形成一条新的链。就好比贝勒爷与合伙人无法达成共识,合伙人只有出去另立山头。
软分叉的做法就聪明一点,通过新共识规则对旧共识规则的欺骗,让两派仍然在原来的链上工作,最后,在合适的时机,逼迫旧节点升级,接受新的共识规则。就好比夫妻俩,一方出轨了,但是骗过了另一方,另一方没有察觉,他们俩还是组成一个完整的家庭,但貌合神离。

6.结语
去中心化的、分布式的系统升级将是未来的主要挑战之一。软、硬分叉都将扮演重要角色。软分叉的方案更加的聪明,能有效防止区块链的实质分叉。但却依赖于软件的向前兼容,依赖于欺骗老版本节点,依赖于老系统里预留的手段或后门。有时,为了实施软分叉,必须要将本来可以简单设计的功能设计得更加复杂,增加了bug的风险,得不偿失。尽管如此,软分叉相比硬分叉还是具有巨大优势,允许缓和升级,降低社区分裂的风险。
添加新手交流群:币种分析、每日早晚盘分析
添加助理微信,一对一亲自指导:YoYo8abc