“大家好,我是区块君,今天来跟大家聊聊区块链中的分叉。”
在区块链那么火爆的时代里,与区块链相关的词条最多的就是去中心,其次就是分叉了。什么是分叉?用最简单的话来说,分叉就是区块链的软件更新;从我们最早拥有第一台电脑时候一直到现在的智能手机,软件更新就是常有的事情。Windows操作系统都已经从95更新到现在的Win10,QQ的版本都已经更新了不知道多少次。但是大家有没有想过,为什么分叉这个概念以前从来没有听说过,为什么软件的更新到了区块链世界里就变成了分叉呢?
大家可以想一下,你现在所用的软件如果需要更新会发生什么情况?比如说你的QQ版本需要更新,你首先会看到提示对不对。
Figure1. APP Updates Page
然后这时候你有两种选择,一种是更新,一种是不更新。一般来说,大家都会选择更新,因为软件的新版本往往会比旧的版本更好,比如说会加入更多的功能,修复了一些bug,或者软件的速度更快啦。
那如果选择不更新会怎么样?
什么都不会改变对不对?你还是继续用你的QQ,并且你用的这个软件还是叫QQ。其实我们所有用的软件包括QQ都是中心化的,就是所谓的主从式架构。关于中心化与去中心化的探讨,我在之前的文章里有写过,有兴趣的话你们可以再回去看之前文章,链接在文末。
而比特币属于去中心化+区块链,相当于每一台计算机都存储了所有交易数据的拷贝,而那些交易数据是以区块链的结构存储在计算机里的。所以这里包含了几大特征非常特殊:
每台计算机都存了一条区块链的拷贝
所有新的交易会被打包在一起放在一个新的区块里面,然后通过某个计算机把这个区块广播出去
一个新区块只有获得网络中一定数量的计算机的肯定,才可以被记录在链上
一旦区块被记录在链上,它就是永远存在的,无法篡改和删除
假如说我是比特币团队的一员,我发现了我们程序里面的一个明显的安全漏洞。这时候我们决定要升级,但是升级以后产生的新区块必须要经过全网一定数量节点的认可才能被记录在链上,这个就是比特币共识机制的根本。所以为了让新的区块可以被广播并且成功记录上去,我们就必须要更新区块的产生和验证协议,并且鼓励所有的矿工去升级自己的挖矿程序来来使用这个新协议。就好比我们改善了游戏规则,弥补了漏洞,让不法分子没有钻空子的可能,但是这个新规则必须要绝大多数玩家都认可才行。去中心化的世界就是如此一个民主的机制,它遵从少数服从多数。一般如果要更新的话,我们要设置一个开始的时间节点,这个节点我们通过区块长度来控制。比如说我们决定再第41578个区块的时候,可以允许升级版本的区块被记录进去。由于整个社群里面的矿机不会在同一个时间更新软件,它会有先后,所以会发现有些矿机用的是新版本的挖矿程序,有些用的还是老的。所以就会导致有时候产生新版本的区块,有些时候还是旧版本的。而前41578个区块还是老版本,这些区块都是不能动的,所以新版本的区块自然会分叉出去。关于分叉有两种情况。
第一种:新规则是旧规则的子集,相当于我们在旧规则上面改进,让它变得更加严格。这样的话新版本的区块也会被老的矿机软件所验证,但是新的软件肯定无法验证旧版的区块。比如说我开了家素食主义餐厅,我现在把这个餐厅改成全素主义。那之前的老客户肯定是可以接受餐厅的新食谱的,反过来肯定不行。这种情况被成为软分叉。
如下图所示:
Figure 2. 软分叉示意图(作者自绘)
所以软分叉严格意义上不能算作分叉,因为即使程序不升级,它也可以接受新版本的区块。这种像前兼容的特性,使新版本和旧版本可以记录在一条链上。在比特币程序里有这样的逻辑,如果前1000个区块(包括当前最新的区块)中有95%以上都是新版本的,那程序默认这条新规则已经达成广泛共识,所有旧版本的区块不会再被再被记录再链上。这样也变相迫使其余5%的矿工来更新自己的程序,最终实现全网的软件升级。一般软分叉所提出的新规则都是于所有矿工有益的,所以大家都会有动力去升级。
第二种:新旧规则水火不容。在这种情况下如果挖矿程序不升级的话,是无法验证新版本的区块的。所以旧版本的那条链会永远存在,新版本的区块会单独分叉出去,这种情况叫硬分叉。
如下图所示:
Figure 3. 硬分叉示意图(作者自绘)
在这种情况下新版本区块产生的挖矿奖励就不能再叫比特币了。因为如果还叫比特币的话,两条分叉上的交易历史记录永远无法同步,那大量的交易历史数据就会缺失,所以要换个新名字才说得通。像比特币现金BCH,就是比特币的硬分叉。有趣的是,这两条叉都是由同一个链分出来的,由于区块的不可篡改性,所以在分叉之前的交易记录在两条分支上都是有默认有效的。也就是说如果你在分叉前拥有一定数量比特币的话,你可以同等地拿到一样数量的分叉币,相当于白送的钱。
一般硬分叉都是要打破原有规则的范式,或者说新的规则有很大的争议,无法达到全网矿工的一致认可。所以原来的那条链会永远存在下去,也就是说这两种加密货币会一直存在。这个新规则与旧规则背后其实代表的是两大矿工阵营的意见向左,为了让自己信仰的加密货币存在下去,他们必须相互争夺算力资源。区块君认为,硬分叉会分散大量的算力,造成资源的浪费,所以不到万不得已最好不要玩“硬”的。同时这也是去中心化的一大弊端,因为软件升级的权力掌握在矿工自己的手里,并且区块链的结构导致它的可扩展性非常差,所以它的软件创新和更新的效率是远远低于中心化软件的。这也是为什么现在鲜有那些杀手级的去中心化应用的原因,因为创造一个应用是不可能一步到位的,都是在一个雏形之上慢慢进行改进,最终趋近于完美。
区块君:现从事某著名数字货币联合创始人,之前为花旗集团信用衍生品交易部门,负责CVA,CCAR项目的技术总监.
领取专属 10元无门槛券
私享最新 技术干货