区块链中分叉机制

在区块链中我们经常会听到分叉【fork】的概念,今天通过这篇文章来详细的介绍下分叉

什么是分叉

在介绍区块链的分叉机制中,我们以公有链来说明,公有链是去中心化的。任何协议的改变都是代价巨大的,因为全网那么多节点,有的保守有的激进,任何一个提议的提出,不同的节点一定会有不同的意见,这个就是分布式共识难达成的原因。

共识没有达成,就会造成区块链的分叉,而分叉又分为软分叉【soft fork】和硬分叉【hard fork】,下面的例子中会以BTC公有链来说明他们的区别。

硬分叉

比特币协议中规定每一个blockSize的大小是1M,但是1M这个大小可能在交易频繁的时候,显得不够,因此社区提议将这个blockSize从1M提升到4M

这个提议得到了大多数节点的同意,因此大多数节点选择更新了协议,但是有少部分节点不同意,于是就出现了下面的场景

区块链中分叉机制_第1张图片

注:蓝色节点表示大多数节点选择更新成4M

因为大多数节点都更新了,因此他的算力也会更大。下面是少数不同意将blockSize更新成4M的节点,虽说上面的链更长,但是对于不更新的节点来说,他们是非法链,因此他会继续沿着下面这条链继续延伸。

久而久之,就造成了两条独立延伸的链了。

简而言之就是,已经更新协议的节点【4M】是认可不更新协议【1M】的节点,但是不更新协议的节点是不认可更新的节点,于是两条链就彻底分道扬镳了,这就是硬分叉。

软分叉

比特币协议中规定每一个blockSize的大小是1M,现在假设因为某种原因需要将blockSize从1M降低到0.5M

这个提议得到了大多数节点的同意,于是就出现了下面的场景

区块链中分叉机制_第2张图片

注:绿色节点表示大多数节点将1M更新成0.5M

大多数节点将1M更新成了0.5M,因此他是不认可blockSize为1的节点的。但是没有更新成0.5M的节点是认可0.5M节点的,但是他不能往上面的链上追加,只能在下面的链上追加,但是上面的链是合法链,结果就是下面的区块是废弃的,白白浪费了算力。

这个时候没有更新成0.5M的算力的节点就很尴尬,要不退出,要不就更新0.5M,这个过程是持续一小段时间的,因此被称之为软分叉。

 

总结

上面的两个案例中,已经可以看出软分叉和硬分叉的区别了。

硬分叉是,新节点接受兼容老节点,但是老节点不接受新节点,最终的结果就是从此分家,这个典型的案例就是ETC和ETH

而软分叉是一个中间状态,最终的结果是趋向于一条链,软分叉是新节点不兼容老节点,而老节点是接受新节点的,但是没法在新节点的区块上继续扩展,所以只能是退出或者更新

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