区块链的硬分叉和软分叉

我们知道,区块链分叉分为两种:硬分叉软分叉。在解释“硬分叉”和“软分叉”这两个概念之前,先解释“向前兼容”和“向后兼容”这两个概念

向前兼容和向后兼容

向前兼容的英文为:Forwards Compatibility,Forward有“将来”的含义。因此向前兼容就是指:以前的版本支持现在版本生成的数据,现在的版本支持以后的版本数据。比如你的CD盘可以放在CD光驱播放,也可以放在DVD光驱播放。
向后兼容的英文为:Backwards Compatibility,Backward有“回头”的意思。所以向后兼容就是指现在的版本可以支持以前的版本数据。比如你的PC的DVD光驱也可以播放CD盘。

新节点和旧节点

区块链升级过程中,一部分节点会进行区块链代码升级,本文这里暂称为新节点。一部分节点不愿意进行区块链代码升级,继续运行原有的旧版本的区块链代码,本文这里暂称为旧节点。

硬分叉和软分叉

硬分叉:旧节点不能识别新节点产生的区块(旧节点没有向前兼容新节点产生的区块),导致把一条链直接分成了两条完全不同的链,一条是旧链(运行原有的旧版本的区块链代码,由旧节点运行),一条是新链(运行升级后的新版本的区块链代码,由新节点运行)。
软分叉:新旧节点并存,但是不会影响整个系统的稳定性和有效性。旧节点会兼容新节点(旧节点是向前兼容新节点产生的区块),只是新节点不兼容旧节点而已(即新节点不向后兼容旧节点产生的区块),二者依然可以共存在一条链上

这里有一篇介绍硬分叉和软分叉的好文:https://www.8btc.com/article/105773,虽然时间比较早,但写得好。看这篇文章最好懂一点技术会更容易看懂。
敲黑板划重点,软分叉和硬分叉主要区别是:
新旧节点相互兼容性。软分叉修改数据结构后,新节点生产的交易和区块能够被旧节点验证并接受,硬分叉就不能

补充一下我个人的一些理解:
因为旧节点(运行原来升级前的区块链代码的节点)产生的区块不一定能被新节点(运行升级后的区块链代码的节点)验证通过(这是因为新节点的验证条件比旧节点更严格),导致软分叉可能会造成暂时行的链分叉,即旧节点上会产生2条链:
a) 一条和新节点上的链一模一样,该链上的区块既被旧节点验证通过,又被新节点验证通过
b) 另一条是包含仅被其它旧节点验证通过,但不被新节点验证通过的区块组成的链

但由于新节点产生的区块一定能旧节点被验证通过,所以旧节点上和新节点不同的那一条分叉链最终一定会被新节点上的链(即最长的链所取代),所以最终还是会保持一条链发展下去。

硬分叉的例子


a) 比特币分叉:一些人开始觉得比特币的区块容量太小,总出现拥堵,于是这些人要求对比特币的区块大小进行升级扩容。有人支持就有人反对,这种对比特币发展的分歧导致了比特币首次硬分叉,旧链上的币仍然是比特币BTC(区块容量达到了8M),新链上的币是BCH(Bitcoin Cash,比特币现金。区块容量达到了8M),有兴趣的同学参考这篇文章: https://new.qq.com/omn/20190808/20190808A0J3NF00.html

顺便说一下,BCH和BTC最大的区别只是在于区块容量的参数不同,两者分叉前的交易都是一样的,只是交易的币种不一样。可以理解为BCH那条链把分叉前的区块里的交易按照原来的方式重新运行了一遍,只是把币种由原来的BTC换成了BCH。这个可以从区块浏览器里去看一下:

BTC链第30000个区块的信息:
https://btc.com/000000000000000082ccf8f1557c5d40b21edabb18d2d691cfbf87118bac7254
区块链的硬分叉和软分叉_第1张图片

BCH链第100个区块的信息:
https://bch.btc.com/000000000000000082ccf8f1557c5d40b21edabb18d2d691cfbf87118bac7254
区块链的硬分叉和软分叉_第2张图片
可以看出,BTC链第30000个区块的交易和BTC链第300000个区块的交易是一样的,上面的第一笔交易应该是矿工挖出区块的奖励。但矿工地址不一样,这里不清楚是不是BTC和BCH的地址计算方法不一样。

b) 以太坊分叉:The DAO项目是区块链物联网公司Slock.it发起的一个众筹项目,于2016年5月正式发布,截止到当年6月,The DAO项目募集资金超过1.6亿美元。没过多久,The DAO项目就被黑客盯上了,因为智能合约上的巨大漏洞,导致The DAO项目被转移了市值五千万美元的以太币。
为了挽回众多投资者的资产并停止恐慌,以太坊创始人V神(Vitalik Buterin)最后提出硬分叉的设想,并最终通过社区的多数投票表决在以太坊第1920000区块完成了硬分叉,回滚了包括被黑客占有的所有以太币。即使以太坊硬分叉成了两条链,依然有部分信仰着区块链不可篡改特性的人留在以太经典这条原链上

参考文章

https://blog.csdn.net/badbad_boy/article/details/5815811
https://www.jianshu.com/p/26ed15380bcf
https://www.zhihu.com/question/35970198

你可能感兴趣的:(区块链)