区块链小白入门016——区块链分叉是什么?
作者:甜蛋学习区块链
本文原创,转载备注
区块链分叉是什么意思呢?
是像行走的路一样,走到了叉路口了么?
是的,没错,就是这样子,路都是走出来的,看下边的这张图就能很快的理解了,这里本来是有个石板路,通到对面的街道,可是偏有人要踩着草地走过去,我相信刚开始种植上草地的时候,还是没有人去踩的,也许出现这样一个场景,有人要急着赶公交车,就从草地上踩过去了,后面的人看到了,也飞快的踩着草地奔过去,有了第一次的行为,下次同样的人也会做这样的事情,于是,草地上就有了非常明显的踩踏的脚印,后面的人理所当然的就这样走,草都被踩死了,就形成了路,于是,这里就有了个分叉路。
再举个手机升级的例子:我们手机中的APP,经常需要升级,苹果的不会直接在应用里面,更新是在更新的栏目下进行主动选择的更新,而安卓系统的很多都是应用自己弹出来,提示更新,只需要点更新按钮,等待下载进度条完成,点击安装即可,整个过程都是非常简单的,这就是中心化系统软件的升级更新;但是在区块链这样的去中心化系统中,升级并没有那么简单,每一次升级都需要获得社区的一致认可,也就是相当于开一次人民代表大会,如果社区无法达成共识,可能就会造成区块链的分叉。更简单的理解就是有一群人进行了软件升级,而另一群人没有进行软件升级,那么这两群人就是运行在不同规则下的,这就产生了分叉。
比特币的分叉是因为两名矿工在较短的时间内,各自都长得了工作量证明解的时间,两个矿工在各自的候选区块一发现解,即立即传播自己的“获胜”区块到网络中,先是传播给邻近的节点而后传播到整个网络,每个收到有效区块的节点都会将其并入延长区块链。如果该节点在随后又收到了另一个候选区块,而这个区块又拥有同样的父区块,那个这个节点就会将这个区块链接到候选链上。其结果是,一些节点收到了一个候选区块,而另一些节点收到了另一个候选区块,这时两个不同版本的区块链就出现了。
为什么会分叉?
那个石板路为什么会分叉,主要是人的素质问题,还有可能有公交车站设置的问题,如果每个人都爱护小草,就不会踏踩 ;如果公交车站正对着石板路,也不会有这么严重的踏踩。
而APP升级,总有一些人不会升级上来,我以前做产品的时候,如果不是有强制升级,每个版本上都会有用户留存下来,不会更新到最新的版本上,可能是因为关闭了升级提醒,有可能是不习惯新的版本,各种各样的原因都有可能。
而区块链的分叉是因为去中心化的数据结构,所以不同副本之间不能总是保持一致,区块有可能在不同时间到达不同节点,导致节点有不同的区块链视角。
解决的办法是的,每一节点总是选择并尝试延长代表累计了最大工作量证明的区块链,也就是最长的或最大累计难度的链,节点是通过将记录在每个区块中的难度汇总起来,得到建立这个链所要付出的工作量证明的总量。