这里是王团长区块链学院,与最优秀的区块链人一起成长!今天给大家讲讲分叉。
一般来说,在区块链上同一时间内只会产生一个区块,但如果在相同时间,出现两个区块同时被生成的情况,全网中就会出现两条长度相同、包含的交易信息相同但由不同的矿工签名或者交易排序不同的区块链,这样的情况叫做分叉。
分叉可能由于矿工遵从不同共识规则、矿工争夺记账权等原因造成。
一、矿工遵从不同共识规则引发的分叉
以比特币为例,2017年7月,为了解决比特币区块链拥堵问题,一些比特币爱好者提出了bitcoin cash(BCH)分叉方案,但是社区又有一部分矿工不支持,所以就导致比特币区块链一分为二。
从软件的角度来讲,就是系统升级,在中心化系统中,升级比较简单,中心一次更新,全网同步;但在区块链等非中心化系统中,“升级”并不是那么简单,甚至可能一言不合就造成区块链分叉。
矿工遵从不同共识规则引发的分叉是指区块链在进行“升级”时发生了意见分歧,从而导致原有的区块链一分为二。因为没有中心化机构,比特币等数字资产每次代码升级都需要获得比特币社区的一致认可,如果比特币社区无法达成一致,区块链很可能形成分叉。
二、矿工争夺记账权引发的分叉
以比特币挖矿为例,基于工作量证明机制,矿工通过求解数学难题获得记账权,创建新区块,并把区块链接到链上。
但是,如果两个矿工同时解出了题,获得了记账权,这该怎么办呢?虽然两个矿工得到的答案都是对的,但由于每个矿工生成的区块包含的交易数据不一样,所以实际上生成的区块是不一样的。
在下一轮挖矿过程中,由于距离问题,不同矿工看到这两个区块的先后顺序是不同的,各个矿工会分别把最先看到的区块复制到自己的账本上,即链接到本地区块链上,然后再开始新一轮的挖矿。这样一来,就会出现分叉的两条链。
对于由于争夺记账权导致的分叉,分叉后得到的两条链的算力是有差别的,这种差别随着生成的区块越来越多,会越明显,最终,两条链会出现一长一短的情况,而长的那条链就成为了主链,短的链就消失了。
尽管区块链是基于一套严格的制度和规则,但仍然避免不了各种主观和客观的因素导致分叉的产生。
想要了解更多的区块链知识,可以关注我们的公众号:王团长区块链日记,与最优秀的区块链人一起成长!