

硬分叉是指,当决定对区块链网络内软件升级时,有些节点接受升级,有些节点不接受。
来源:贝壳手表CCT
初识软硬分叉
上期我们介绍了什么是区块链分叉,当全网的节点遵循着相同的约定——工作量证明时,少数服从多数,分叉即使发生也只是暂时的,区块链最终会选择一条链走下去。那么,有没有全网节点遵循不同约定的时候呢?如果有,区块链又将怎样延伸呢?这就是我们今天要学习的软分叉和硬分叉。
软硬分叉问题是节点的软件、协议以及版本的升级问题,为了方便理解,我们可以把它和手机APP更新类比。最初,全网的节点运行着相同的软件,遵循着相同的共识(比如POW工作量证明),在同一条链上工作。如果此时有一部分节点的软件升级了(这部分节点的算力超过全网算力的50%),它们开始运行新的版本,遵循新的共识,这时候就存在两种节点,旧节点:未升级软件,遵守旧约;新节点:已升级软件,遵守新约。
网络中同时存在新旧两种节点的时候,就会出现四种不同的情况:
1、新版本兼容旧版本;
2、新版本不兼容旧版本;
3、旧版本兼容新版本;
4、旧版本不兼容新版本。
其实简单的理解就是,存在的两种不同的版本对彼此接受与否。
硬分叉特点
硬分叉是指,当决定对区块链网络内软件升级时,有些节点接受升级,有些节点不接受,未升级的旧节点不兼容(承认)新节点产生的区块,两种节点就没法一起玩下去了。因此硬分叉会采用强制(硬)升级,这个升级需要在某一时间确定,不同意升级的节点(旧节点)进入旧链,同意升级(新节点)的进入新链,这样一条链就被分成了两条,新旧节点分别在自己认为正确的链上工作。

软分叉特点
软分叉是指当整个区块链系统软件升级时,有部分节点未及时升级,这就使得系统中存在两种节点。此时,未升级节点(旧节点)兼容(承认)新节点产生的区块,升级节点(新节点)也兼容(承认)旧节点产生的区块。兼容性很好,在相当长的时间里,旧节点可以选择不升级,新旧区块共存。在软分叉中,没有真正的分成两条链,只是在区块链中存在两种区块:新区块和旧区块。等到所有节点都完成升级之后,分叉就消失了。
与硬分叉相比,软分叉总是一条链,没有分叉的风险,而且软分叉的升级不是必须在某一时间完成,不影响系统的稳定性和有效性。但是软分叉需要老节点能够接受新节点创建的区块,总是要欺骗老节点,让老节点察觉不出已经发生的变化。
文章声明:本文为MarsBit专栏作者作品,版权归作者所有,不代表MarsBit观点。