区块链分叉是链条延伸产生的支链 可分为硬分叉与软分叉

2019-10-24 19:00:00
来源: 腾讯

  【摘要】 什么是分叉?树木生长过程中会在主干周围横生一根根枝条,多数枝条会比较细小,但有些枝条异常粗壮可以将主干分为几根枝干,这便是树木的分叉。区块链的分叉和树木也有些类似。区块链

什么是分叉?

树木生长过程中会在主干周围横生一根根枝条,多数枝条会比较细小,但有些枝条异常粗壮可以将主干分为几根枝干,这便是树木的分叉。区块链的分叉和树木也有些类似。区块链是由一个个区块首尾相连构成的一条链条,就像人的脊椎一样,在整个链条延伸过程中会产生一些短小的支链,也会产生一些较长的支链将原有的主链分为几条支链,这便是区块链的分叉。

为什么会分叉?

树木分叉的原因我们都容易理解,那么区块链为什么会分叉?要了解区块链分叉的原因,首先要从矿工挖矿讲起,在 什么是btc——「币全101」之5 中已经介绍过每一个矿工(节点)在“挖矿”成功后会对会对全网进行广播,验证成功后将被作为新的区块接在区块链末端。

互联网世界信息的传播同样需要一些时间,同时对于“挖矿”这项工作也存在着竞争,基于此,假设有一条区块链长m,最后一块区块为b在某一时刻,矿工Karan先挖出了区块Ca,并立即向全网进行广播。恰巧此时矿工Dexter挖出了区块Cb。但他离Karan比较远还未收到区块ca的信息,所以他立即开始对全网广播Cb。

于是,这时全网便有两个新区块在传播,这两个区块都能被成功验证且都指向前置区块b。由于信息传播需要一定的时间,不同节点会先后收到不同的区块信息,所以他们会以不同的区块(Ca或Cb)作为前置区块来维护新的链条,自此产生了chain a与chain b两条分叉,两条分叉在m+1个区块之前都共用同一根链条。这便是区块链的分叉。

但是分叉后又会产生一个新的问题,难道两条链都是主链吗?这就要看各个节点对不同链条的认可度,一旦多数节点都选择chainb这条链条,那么chain b 的长度便会远超chain a,chain a便会被舍弃,不再有意义。Chain a上面的区块也将成为孤块。

分叉的种类?

上述的分叉是基于区块链的分布式计算技术产生的,无法避免,因而往往被称为自然分叉。

相对于自然分叉,有一些分叉则是由人为干预产生的。随着区块链技术的发展,各种数字通证都需要升级。但是这些数字通证的设计导致其协议或者规范的升级难以实现,因为系统上的不同参与者对于如何升级有不同的看法,协调起来十分困难。这时候,他们就会被分为新旧版本两个派别,分叉便会产生。这种分叉,可以称为升级分叉。

按照区块链对新规则的兼容情况,升级分叉又可以分为硬分叉与软分叉。

硬分叉升级有一个特点,即旧的区块按照新规范仍然能被验证通过,但新区块不能被旧的规范所认可。所以想要通过硬分叉进行升级就要获取大部分节点的同意,否则他们将会以旧的规范继续维护链条,新规范这条支链便会被舍去。一旦大部分节点接受了新的规范,旧规范后续的支链就会被舍去,未接受的节点则会被迫进行规范升级。判断节点是否同意的标准是看大部分新区块是按旧规则产生的还是按新规则产生的。

软分叉不是真正意义上的分叉,而是一种双向兼容的规范设计。软分叉要求旧的区块能够被升级的节点理解,又要求未升级的节点能够理解新区块。这在某种意义上来说是一种细微的调整,与硬分叉的改动幅度相比微乎其微。

通俗点讲,硬分叉与软分叉的区别就像一个修理工去修理交通工具。他学的是修汽车的方法,现在去修理电动自行车,对他来说并不会有什么问题。而如果他学的是如何修电动自行车,现在让他去修理电动三轮车没问题,但是修理汽车便不行了,同样他会修理电动三轮车便也可以修理电动自行车。从可以修自行车到可以修汽车便是硬分叉,后者技术兼容了前者的技术。而从修自行车到修理三轮车便可看作软分叉,前后技术虽有细微差别但基本互通。