这两个定义不太好理解,有些网上的定义也容易造成曲解。我就用大白话简单的介绍一下。
软分叉是指对共识进行更改后,未升级的节点可以验证已升级的节点产出的区块,并且已升级的节点也可以验证未升级的节点产出的区块。
硬分叉是指对共识进行更改后,未升级的节点拒绝验证已经升级的节点产出的区块,但是已经升级的节点可以验证未升级节点产出的区块。
这里的共识”,指的是区块链的区块格式和交易格式。
硬分叉若是产生争议,有不同人在两个分叉上进行交易,则会诞生2条链,例如以太经典和以太坊的硬分叉。若没有争议,则硬分叉后仍然是一条链,例如这次的Phoenix硬分叉。
软分叉和硬分叉之所以不好理解,是因为有些时候软分叉也会转变为硬分叉。从区块链的设计来说,所有对共识(数据结构)进行的修改都应该是硬分叉,之所以会有软分叉,是因为软分叉对原来定义好的字段进行了重新定义,如多重签名,或对预留字段进行了定义,如比特币的CSV软分叉。可是,软分叉的难度是非常高的,稍有偏差,软分叉就会变成硬分叉,比如比特币的BIP66和Level DB升级。
对于区块链来讲,分叉就是区块链协议的改变。分叉是区块链升级的一种,来弥补之前系统存在的一些不足。因为没有中心化机构,区块链每次升级的时候都要获得社区成员的一直认同,如果社区成员之前发生了意见分歧,就会导致区块链分叉,原有的区块链被一分为二,相应的一个比变成两个币。除了意见分歧外,某些协议的添加、升级,也可能需要通过分叉实现。
根据分叉后的区块链是否兼容旧区块链,分叉又分为“硬分叉”和“软分叉”。
定义:区块链发生永久
硬分叉是对协议的修改,启用了新的交易或区块格式,使得老客户端无法识别,因此要求所有客户端交易服务器以及矿工(节点)都要更新升级。如有节点组继续使用旧软件,而其他节点使用新的软件,便有可能分裂成两种货币。
比如生活中我们乘坐火车去学校,在经过一条笔直道路后如果需要进行其他方向的变道,就需要经过道岔走过一条新钢轨,这条路与原本钢轨方向不同我们就可以称为在原本方向上进行硬分叉。
定义:在新的共识规则发布后,由于软分叉的新规则仍旧符合老的规则,所以,使用旧版本的节点可以验证使用新版本节点所生产出的区块,使用新版本的节点也可以验证使用旧版本节点生产出的区块,两种版本可以兼容。
软分叉是对协议的修改,使得老客户端可以将新的区块识别为合法的区块,所以说软分叉是向后兼容的。新的交易类型经常是以软分叉的方式添加进来,它只需要发送者和接收者以及对应的新客户端能够识别新的交易类型即可。
打个比方,软分叉就是在原有的高速公路上进行修修补补,给原有的公路进行升级,所以软分叉之后呢,原有的汽车还是可以在旧的公路上继续行驶,而且行驶的速度可能也会加快。就可以把这些软分叉看作是对原来的区块链进行一个升级。
硬分叉必须所有节点共同升级,硬分叉修改数据结构后,新节点生产的区块会被旧节点拒绝掉,如果旧节点拒绝升级软件而坚持按照旧数据结构继续矿,就会产生两条链。
软分叉可以不需要所有节点共同升级,修改数据结构后,新节点生产的交易和区块能够被旧节点验证并接受,所以不会出现两条链。
根据上面描述的内容,可以简单理解为分叉后是否产生新的链,产生新的链了就为硬分叉,反之为软分叉!
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.longfuchaju.com//zmt/5709.html