【区块链科普】什么是区块链分叉?
分叉,常见于洗发露广告,重要程度约等于“干枯”、“毛躁”、“暗哑”。
不好意思串戏了,在区块链的世界里,分叉往往是某一场“战争”的引爆点,一不小心就能掀起加密世界的一场大波澜。
什么是分叉
老规矩,先上百度百科
在区块链中,由矿工挖出区块并将其链接到主链上,一般来讲同一时间内只产生一个区块,如果发生同一时间内有两个区块同时被生成的情况,就会在全网中出现两个长度相同、区块里的交易信息相同但矿工签名不同或者交易排序不同的区块链,这样的情况叫做分叉。
百度百科果然永远都是看不懂的神奇存在。
回忆一下洗发露广告里说的分叉是什么情况:一根完整的头发在发尾的某个位置分出两个发梢。也可以想想成一个人走到某个路口,向左向右向前看,发现都有路,那我们就可以说马路在这个路口分叉了。
类比到区块链世界:一个完整的区块链网络在某个区块分成了两条链。
当然,上述比喻甚至百度百科的解释都是不准确的,因为并非所有分叉都会形成两条链。
实际上,我们可以把分叉视为对区块链网络的更新。
我们在以前的科普文章中提到过,作为去中心化网络,一条区块链中的所有参与者(也可称为“节点”)都需要遵循同一套规则,也就是所谓的共识。共识就像是区块链世界的法律,规范网络所有节点的行为,防止作恶。
现实中的法律不是一成不变的,不符合社会现状的法律就会被修改,比如我们我们经常能在新闻中听到“宪法修正案”。
同样的道理,区块链世界的“法律”也不可能一成不变,当节点意识到共识已经不符合大部分人的利益或实际需要时,就是尝试对共识协议进行调整,而这种调整就需要通过“分叉”来进行。
软分叉 硬分叉
区块链世界的分叉可以分为软分叉和硬分叉。很多科普文章中用是否会分出新链作为区分软分叉和硬分叉的判断依据,这种说法显然是有问题的。
软分叉和硬分叉的区别在于它们的兼容性不同。软分叉是向前兼容的,即升级后新老节点都能正常运行;硬分叉则不向前兼容,所有节点都必须升级,不升级的节点不能正常运行。
我们可以通过子集概念来理解软分叉和硬分叉。
在软分叉中,新规则是旧规则的子集,因此新版本中合法的区块也被旧版本包含在内,同样也是合法的。旧的节点即使不升级也可以验证并接受新节点打包的交易和区块。
而硬分叉则相反,旧规则是新规则的子集,旧版本无法接受新版本创建的区块,会将新版本中的合法区块认为是不合法的。
举个例子,刘邦刚刚攻占关中的时候实行约法三章:杀人偿命、伤人或者盗窃判刑,我们可以把约法三章看作旧版本的协议。
刘邦统一天下后,认为旧协议太过简陋了,将“伤人或盗窃判刑”细化到“伤人判2年、盗窃判一年”,这是新版本的协议。
新版本的协议内容是在旧协议的基础上细化,新版本属于旧版本的子集,因此这次协议的颁布我们可以视为软分叉。即使有的地方还没开始执行新协议,新协议中视为犯罪的“杀人、伤人、盗窃”行为依然会被旧协议视为犯罪。
还有一种可能,刘邦统一天下后不是对约法三章进行细化,而是增加一条“诈骗会被判刑”,将约法三章改成约法四章。
新版本的协议内容是在旧版本的基础上增加,旧版本属于新版本的子集,这次协议的版本可视为硬分叉。如果有的地方还没开始执行新协议,新协议中被视为犯罪的“诈骗”行为在执行旧版本的地区不会得到惩罚,诈骗犯成为真正的法外狂徒。
张三:“约法三章”管不到我~
从名字上我们不难得出这样一个结论,软分叉比硬分叉要“温柔”一些,事实也确实如此。
软分叉有点像旧房改造,业主愿意改自然最好,不愿意改也没什么问题,反正房子都还能住,大家也还在一个社区里;
硬分叉则更像是动迁,旧房会被废除,业主只能住到新房去。当然业主也可以选择当“钉子户”,如果钉子户的数量足够多,社区可以继续运行下去,那么原来的社区就会被分叉成一新一久两个社区。
高楼和平房形成了两个社区
因此,软分叉往往运用在一些协议的改进,而硬分叉一般由重大升级或者黑天鹅事件引发。
区块链历史上影响力较大的分叉有三次:BTC分叉为BTC和BCH、ETH分叉为ETH和ETC、BCH分叉为BCH和BSV,其中BTC和BCH分叉源于社区的发展路线之争,ETH分叉则是由于The DAO被盗这一黑天鹅事件。
这三次分叉都是区块链历史上的标志性事件,它们属于硬分叉,均造成了社区分裂,也都诞生了新链新币种,以后我们会单独为大家介绍。
分叉并不可怕,分叉是对区块链协议的更新,而且绝大多数是不会造成分裂的升级。即使是造成分裂的那些硬分叉,我们也duck不必将其视为洪水猛兽。虽说社区分裂对任何一个区块链网络都是极大的伤害,可若是理念上的矛盾不可调和,分开发展反而能为区块链世界带来更多的可能性。