区块链分叉

我们在接触区块链的时候,肯定会经常听到分叉,有时候还会听到软分叉,硬分叉。那么这些概念都是什么意思呢?分叉又是如何产生的呢?

 

一个区块链系统,不管是比特币以太币还是瑞波币系统,他们其实都是一个软件。那我们来看,在刚一开始的时候呢,所有的节点运行同样版本的软件,遵循着同样的共识协议,维护着同样的一条区块链(blockchain)。然后呢有一天,区块链软件有了新的版本,这时,有一部分节点会选择升级为新的软件版本,那,新的软件生成的区块,能不能被旧的软件认可呢?当然结果无非两种,一种是旧软件认可新区块,一种是旧软件不认可新区块。这两种情况,历史上都发生过,我们分别来看两个例子。

 

第一个例子,我们看下图:

 

这是比特币中的记录一笔交易的数字格式,称作交易的数据格式,也就是说我们用这样的一个格式,就可以明确的表示一笔交易了。

 

我们来看上面红字加粗的那个字段,原来这个地方他是没有被明确定义的,也就是没有被使用,在中本聪刚发布的比特币系统里,虽然预留了这么一个字段,但是没有使用。后来呢,在2016年,社区想在这个字段上做点手脚,把它利用起来,利这4个字节的空间呢,在比特币区块链上创造了用于支付的智能合约功能。这其实就是比特币软件的一次升级了。

那由于这种未明确定义的字段在旧版本的比特币完整节点上就不会被仔细验证,所以怎么样呢,所以选择升级软件的节点按照定义过的规则生产的新区块,仍然是可以被旧版本的节点验证通过的。

 

但这显然不是长远之计,因为这种字段就这么一个,你用了一次,哪以后就没有了。

 

我们在来看第二个例子。同样发生在2016年,以太坊软件进行了一次比较大的改动,由于改动大,所以新软件生成的区块不能通过旧软件的验证。对于这种情况,最好是大家都能选择升级新的软件。但是实际情况是,这次改动并未获得所有人的认可,有些人选择不升级软件。那最终的结局是怎么样呢?就是新版本和旧版本各自为政,各自生成各自的区块链,这样,本来同属一条的区块链,在尾端就分叉成了两条,也就是我们现在看到的ETH和ETC。

 

上面的两个例子,其实就分别是软分叉和硬分叉的例子,大概或许已经能明白了,我再总结一下:

软分叉:当系统中出现了新版本的软件(或称协议),而旧软件能接受新软件的区块,新老双方从始至终都工作在同一条链上,这称为软分叉。

硬分叉是指:当系统中出现了新版本的软件(或称协议),并且和前版本软件不能兼容,老软件节点无法接受新软件节点挖出的全部或部分区块(认为不合法),导致同时出现两条链。尽管新节点算力较大,比如99%的算力为新节点,1%的老节点依然会维护着不同的一条链,因为新节点产生的区块老节点实在是无法接受(尽管它知道网络上99%的节点都接受了),这称为硬分叉。

 

从上面的概念大家可以看出,其实,只有硬分叉才会导致区块链被分叉成两条链。所以刚开始的时候,分叉就是指硬分叉,后来才引入了软分叉这个概念,区分成我们现在经常听到的软分叉和硬分叉。

 

软分叉不要求所有节点同一时间升级,允许逐步升级,且并不影响软分叉过程中的系统稳定性和有效性;可以保证不想升级的人不去升级,这种不想升级的需求在现实生活中其实是很常见的。

软分叉的升级空间有限,因为目前的比特币交易数据结构和区块数据结构所有字段都已经详细定义好了,你想保证向前兼容,就不可能增加新的字段,否则旧节点就会拒绝你。所以软分叉的升级空间补束缚在对现有字段的重新定义。就包括软分叉就无法重新定义区块数据结构里的“区块大小”这个字段,也就是软分叉永远实现不了对1M区块的突破。而且这种极端复杂的兼容性稍微出点错,就会新旧节点不兼容,即导致硬分叉。这个事情已经发生过一次了。

 

硬分叉必须要求所有旧节点进行升级,否则旧节点就无法识别新节点生产的交易和区块,导致区块链分成两条链。

 

硬分叉的升级空间则要大很多,因为硬分叉只要考虑能够接受以前旧节点生产的交易和区块就可以了,硬分叉不需要考虑旧节点是否会接受新节点生产的交易和区块。那硬分叉就可以对交易数据结构和区块数据结构更大胆的修改。

 

最后,我们会看到,交易数据结构和区块数据结构中都有一个字段叫“版本号”,意义是“明确这笔交易或区块参照的规则”。这意味着原本是希望使用硬分叉来修改这些规则,就是说如果我们要修改规则,那就重新定义版本号。但软分叉在不修改“版本号”的前提下,却修改了规则。软硬分叉涉及到的问题是去中心的化的节点软件、协议、版本升级的问题。是一个非常重要且值得讨论的问题。所以如果我们有机会去开发一条区块链,或者选择投资一条区块链的时候,分叉问题就是我们需要提前考虑的一个重要问题。

 

 

想了解更多?关注我们就够了。

公众号:ipfscom
微信(Q):18191727
Q群:71789361
微信扫一扫,加入知识星球

猜你喜欢

转载自blog.csdn.net/angciyu/article/details/81911982