首页 » 比特币软分叉和硬分叉的来龙去脉
By Published On: 31 5 月, 2022Categories: 区块链Tags: , ,

软件由于方案优化、BUG修复等原因进行升级是一种非常常见的现象。如手机应用等传统软件,升级非常简单,只需厂商发布,用户接 受升级即可。但是对于比特币这种去中心化的系统,升级是非常困难 的,需要协调网络中每个参与者。软件升级意味着运行逻辑的改变, 但是在比特币中,升级必然会导致不同节点在一定时间内运行不同的版本,于是就会产生分叉。

分叉主要包含软分叉硬分叉两种。如果比特币升级后,新的代 码逻辑向前兼容,即新规则产生的区块仍然会被旧节点接受,则为软 分叉;如果新的代码逻辑无法向前兼容,即新产生的规则产生的区块无法被旧节点接受,则为硬分叉。

软分叉

软分叉由于向前兼容,新旧节点仍然运行在同一条区块链上,并不会产生两条链,对整个系统影响相对较小。到目前为止,比特币发生过多次软分叉,如BIP-34,BIP-65,BIP-66,BIP-9等。其中比特币改进建议(Bitcoin Improvement Proposal, BIP)指的是比特币社区成员针对比特币提出的一系列改进建议,这些改进建议的具体内容感兴趣的读者可以通过访问BIP的网站(1)自行查阅。

此处以BIP-34为例,简单说明软分叉的过程。在旧版本中,存在一个无意义的字段“coinbase data”,矿工不会去验证该字段的内容。BIP-34升级的新版本则要求该字段必须包含区块高度,同时将版本信息由“1”修改为“2”。该升级共包含三个阶段。

第一个阶段:矿工将版本号修改为“2”,此时所有矿工验证区块时,按照旧的规则验证,即不关心“coinbase data”字段内容,所有矿工不论以新规则还是旧规则打包区块,均可以被整个网络接受。

第二阶段:如果最新产生的1 000个区块中,版本号为“2”的区块个数超过75%时,则要求版本号为“2”的矿工必须按照新的规则打包区 块,升级的矿工收到 版本号为 “2”的区块时 , 只会接受“coinbase data”字段包含区块高度的区块,对于版本号为“1”的区块,仍然不校验该字段并接受。

第三阶段:如果最新产生的1 000个区块中,版本号为“2”的区块个数超过95%,则升级的矿工只接受版本号为“2”的区块,并会对“coinbase data”字段进行校验,版本号为“1”的区块则不被接受,以此来逼迫剩余少量矿工进行升级。

软分叉虽然对系统的影响较小,但是为了保证向前兼容,不能新增字段,只能在现有数据结构下修改,即可升级的内容非常有限。同时,因为这些限制,软分叉一般升级方案比较复杂,复杂的方案往往更容易产生BUG,并且可维护性很差。

硬分叉

硬分叉相比软分叉则会“暴力”很多,由于不向前兼容,旧版本矿工无法验证新版本的区块而拒绝接受,仍然按照旧的逻辑只接受旧版本矿工打包的区块。而新版本产生的区块则会被新版本矿工接受,因此新版本矿工保存的区块会和旧版本矿工保存的区块产生差别,即会形成两条链。

硬分叉修改余地很大,方案设计比较简单,但是如果整个网络中有两种不同的意见,就会导致整个生态的分裂。当前比特币影响最广泛的硬分叉事件即为2017年8月1日的硬分叉,比特币由一条链分叉产生一条新的链“比特现金(Bitcoin Cash, BCH)”。

这次硬分叉的起因是开发者与矿工在比特币扩容方案上的分歧。比特币区块大小为1MB,按照每10分钟一个区块的速度,全球每秒只能完成大约7笔交易。比特币发展初期,1MB的区块足够打包出块间隔内产生的所有交易,但是在比特币如此火爆的今天,这种处理速度显然达不到要求。一笔交易往往需要等待数个小时甚至更久,当前比特币网络已经有大约几十万交易排队等待打包确认。比特币交易可以支付手续费(不强制要求),由于矿工逐利的属性,矿工在打包区块时,往往会选择手续费更高的交易打包。这意味着,如果不想排队,则需要支付更高的手续费,以期望获得优先处理权。而过高的手续费显然违背了比特币的设计初衷。

为了解决以上问题,经过社区讨论,最终形成了两个改进方案,分别是扩容方案和隔离见证方案。扩容方案的想法比较直接,既然现在因为区块太小而导致交易处理速度低下,那就直接扩大区块的容量,使其能容纳更多的交易。原来1MB不够用,那么就扩成2MB、8MB,甚至直接扩到32MB。隔离见证方案的想法是,将交易分为两部分,一部分是交易信息,另一部分是见证信息,这两部分信息分开进行处理。好比一辆车太小,要搭车的人太多,于是让车上所有人将背包和行李放在另一辆跟着的货车上,这样原来的车就可以容纳更多的人了。

支持扩容方案的主要是矿工们。矿工们认为交易的高效才是最重要的,这样才能体现比特币的世界货币价值。矿工的利益来源于挖矿,如果比特币交易处理吞吐量较低,用户为使自己的交易尽早得到打包处理会倾向于向矿工提供更高的手续费,矿工因此可以获得超额手续费,其短期收益是增加的。

但长期来看,只有比特币价格维持上涨,挖矿的收益才会持续提升。因而,从长远考虑,扩容是必须的,毕竟只有比特币交易更加顺畅,入场人数增多,资金盘越来越大,矿工的收益才会获得显著增长。采用扩容方案,矿工可以在每个区块中包含更多的交易,从而获取更多的手续费,然而若使用隔离见证的扩容方案,小额的交易将不通过区块确认,矿工的手续费收益会大幅降低,因此矿工更倾向于支持扩容方案。

隔离见证方案的支持者主要是比特币开发团队的部分核心成员。他们认为,扩容方案是一个“扬汤止沸”的方案,毕竟不可能无限制地对区块的容量进行扩大。同时,区块的变大会使得挖矿的门槛提高,从而降低普通矿工的参与度,导致比特币系统的去中心化程度减弱。

2016年2月和2017年3月,争议双方两次进行商讨,希望双方各退一步,接受一个折中的方案,该方案中,区块容量将会被扩大到2MB,同时也对比特币部署隔离见证的方案。但是,由于期间有参与方反悔或者反对,导致最终没有达成共识,这也给“硬分叉”埋下了伏笔。

在2017年8月1日,比特大陆投资的矿池ViaBTC团队,采用比特大陆提出的UAHF(用户激活的硬分叉)方案,挖出了第一个区块,对比特币区块链进行了硬分叉。自此,与比特币竞争的分叉币比特币现金诞生。比特币现金区块链的区块容量达到了8MB,且没有采用隔离见证方案。