◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
常见的理解是“硬分叉和老版本软件不兼容、软分叉和老版本兼容”。
这个定义严格来讲是不准确的,但是很多地方已经在用了,只能说各位需要注意。
硬分叉的定义是扩宽共识规则,允许做之前禁止的事情,以前无效的交易/区块在硬分叉后会变成有效的;
软分叉是收紧共识规则,禁止之前允许做的事情,以前有效的交易在软分叉后就无效了。
软/硬分叉是共识规则的改变,和链分叉/链重组完全是两码事;
这两对概念的关系类似于“红烧/清蒸”与“烧糊/夹生”。
不当部署的软/硬分叉都有可能导致链分叉/链重组。
所以,可以想见:
硬分叉之后,几乎一定会产生让老节点拒绝接受的区块,所以,硬分叉会破坏前向兼容性;
软分叉之后,产生的新区块肯定是老节点也愿意接受的,前向兼容性得以保留。
修正无限刷币漏洞是软分叉,因为老版本软件实际上执行了允许刷币的规则,新版本软件禁止刷币,但是产生的区块仍然符合老版本软件的规则。
参考文章: