我最近在重新学区块链,巩固一下细节,也收集一个“区块链100问”,供小白们使用(大佬可以另找教程),每天更新1-2个。
推特:0x00pluto
实际上,我们可以把比特币系统共识的修改看作是对其软件代码的升级。而升级修改的则是比特币交易的数据结构、生成区块链的格式以及某些新特性等等方面;这一过程中涉及到两个概念,软分叉以及硬分叉。
其中硬分叉指的是,比特币代码发生变化之后,未进行升级的旧节点无法验证已经升级的新节点。为此不符合原规则的区块会被忽略,使用旧节点的矿工按照原规则继续挖矿,区块链发生永久性的分歧。也就是说,如果新规则部署后部分节点未进行升级,区块链将分裂为两条链;就如2016年以太坊为追回The DAO被盗资金而发生的分裂事件。
另一方面,软分叉则是指旧节点并不会意识到代码的变化,并继续接受或者说验证新节点生成的区块。具体来说,软分叉和硬分叉的新节点都可接受由旧节点产生的数据或者代码,就如Windows 10亦兼容Windows XP应用。而软分叉在此基础之上,还可实现“向前兼容”,让旧节点也可以接受新节点产生的区块,从而避免区块链分裂这种情况。
不过要实现新旧节点之间的完全兼容非常困难,所以软分叉的升级空间非常有限,仅可在不增加新字段的情况下进行修改。而相比之下,只需考虑“向后兼容”问题的硬分叉,可塑性更高。