什么是分叉?
在软件开发领域,分叉是个很常见的术语,表示“复制并修改”。其主要针对软件升级,即对旧版本软件代码进行复制修改,升级至新版本。新旧软件会形成不同的版本号,具体功能也会存在一定差异。在区块链领域,分叉一般又被称为区块链分叉,类同上述软件分叉含义,区块链分叉是指对区块链软件或协议进行升级。
分叉是怎样运行的?
以比特币为例,比特币分叉就是指比特币软件或协议升级。我们都知道,比特币协议实际上就是一个软件,由复杂的代码构建而成。各个节点要参与运行比特币网络,都需要下载比特币客户端。类似于微信、淘宝等软件每隔一段时期就要升级一个版本,比特币协议不定期也需要升级版本,以修补漏洞、提升系统性能、完善协议功能。
而不同于微信、淘宝等软件升级只需腾讯和阿里公司团队决定并实施,比特币分叉,即比特币协议升级则需要比特币整个社区共同决定。具体而言,比特币协议升级是由比特币开发人员、比特币矿工、比特币全节点用户共同参与决策和实施。
开发人员主要负责创建和更新代码。如果没有人创建更新代码,用户将无法参与软件运行。不过,这里需要注意的是,虽然比特币是开源的,其代码对所有人都是公开可用的,任何人都可以复制、创建和更新代码,但创建更新代码并不等同于协议升级。比特币开发人员创建更新代码均需提交其他开发人员审核,且最终代码部署实施需要整个比特币社区共同决策。
比特币矿工主要负责维护比特币网络安全运行,并投入计算资源产出新区块。比特币全节点用户则主要负责验证、发送和接收区块及交易,并储存和维护比特币区块链完整的数据副本。比特币矿工和比特币全节点用户是比特币协议升级的主要参与者和实施者。开发人员提交或更改比特币协议代码,均需获得矿工和全节点用户的投票表决。
总而言之,比特币分叉需要比特币开发者、矿工和全节点用户三方共同参与决策与执行,但凡一方未就升级达成一致,均可能导致分叉失败,更有甚者可能造成区块链的永久性分裂(这里的分裂不等同于短暂性分叉)。
两种常见的分叉方式
(一)硬分叉
硬分叉是指一种不支持向后兼容的软件升级方式,升级后的节点不可以与未升级的节点进行交互。硬分叉升级要求所有节点均进行升级,如若不升级,节点将不能使用新版本软件。一句话概括即为:旧区块不兼容新区块。
譬如,比特币2017年围绕区块扩容的升级就是一次典型的硬分叉升级案例。
在该案例中,升级前,旧规则规定区块容量最大为1MB,也就是说,所有矿工均接受和验证上限为1MB的区块。升级后,新规则规定区块容量最大可为8MB。这意味着,升级后的矿工可接受和验证上限为8MB的区块。换句话说,如果有矿工生产出了8MB的区块,在旧规则中是不会被承认的,但在新规则中则完全没有问题。因此,如果一名矿工想要验证来自其他矿工产出的8MB区块,其必须升级到新规则。
理想情况下,硬分叉升级所有矿工应该在同一时刻升级软件。但现实情况是,并非所有节点矿工都同意升级。于是,一部分选择升级的矿工将按照新规则继续挖矿;另一部分坚持不升级的矿工则不能参与到新规则中,仍继续按照旧规则运行。这部分未升级节点所产出的区块将被保留在原有的单独的链上,和已升级节点产出区块组成的新链分道扬镳。至此,原区块链一分为二,发生永久性分裂,也就是我们现在所看到的BTC链(旧链)和BCH链(新链)。
不过需要说明的是,并不是所有硬分叉都会造成一条链的永久性分裂。一般而言,只要硬分叉升级部署前已基本达成共识,由于网络状况差异等造成区块链暂时性分叉,在未升级节点及时部署升级后,均可以得到修复(暂时性分叉的链由于未获得多数节点支持将被废弃)。
硬分叉的优缺点
硬分叉的优点主要表现在:对于区块链整体而言,硬分叉升级可以增加更多系统性能、技术探索的可能性,促进区块链升级优化,且在升级执行速率和系统性能提升上,有较为明显的优势。此外,硬分叉带来区块链潜在永久性分裂的风险对于一部分交易者而言,可能会是好事,这意味着交易者有可能会获得分叉币的收益。
与此同时,硬分叉的缺点主要表现在:升级过程中,不能保证所有节点都在一条链上运行,会增加系统的不稳定性和社区分裂的风险。此外,硬分叉所涉及的协议大改动可能会无形中增加节点的运行成本。
总体来说,硬分叉升级方式较为激进。因为一旦采用硬分叉升级,需要区块链网络全部节点就升级达成共识,才能保证最终升级成功。否则,可能会造成整个区块链的永久性分裂。一般在涉及对区块链协议或软件做重大调整或更改时,譬如区块链协议整体路线升级、协议软件出现重大漏洞亟待修补等,会采用这种升级方式。不过也有些特例,人们会利用硬分叉直接创建新链和新币。譬如LTC链。
(二)软分叉
与硬分叉相反,软分叉则是一种支持向后兼容的软件升级方式,升级后的节点可以与未升级的节点进行交互。和硬分叉不同的是,采用软分叉,用户不升级,仍然可以使用新版本,只不过使用新版本中包含的新功能可能会受到限制。一句话概括即为:旧区块兼容新区块。当年的比特币SegWit隔离见证升级则是典型的软分叉案例。
软分叉的优缺点
软分叉的优点主要有以下两点:
1.软分叉可保证所有节点总是在同一条链上运行,可有效降低区块链和社区分裂的风险。
2.软分叉不要求所有节点同一时间升级,而是允许逐步升级,且不会影响分叉过程中的系统稳定性。
软分叉的缺点主要集中在以下两点:
1.为了实施软分叉,有时会将简单功能的设计复杂化,从而增加了系统bug风险。
2.软分叉设计前提是旧版本节点总是能够接受新版本节点,一些新功能或变化对于未升级的旧版本节点来说很难被感知,某种程度上违背了单点完整验证的原则。
总体来讲,软分叉的升级方式较为平稳。新的升级规则不会和旧规则发生冲突,只是在原有的规则之上添加实现某些新限制。用户可以按照兼容的方式实施升级,且升级过渡较为缓和,用户一般不会有较为明显的使用体验变化。
分叉会产生什么影响?
区块链分叉意味着对区块链协议规则做调整修改,目的多为提升区块链网络性能,维护整个网络安全运行。其成功与否往往会对区块链整体发展产生重大影响。若区块链协议所有节点及社区成员均对分叉达成共识,分叉得以顺利部署实施,则区块链网络将按预期提升性能,长远来看将推动网络整体发展。
同时,需要强调的是,硬分叉和软分叉都是区块链协议升级的方式,无论是选择其中哪一种,部署分叉前,分叉方案均需要参与网络运行的各方达成一致,并就升级过程中可能遭遇的各种问题做好准备,才能保证分叉顺利实施。