介绍

当系统提示您更新智能手机上的数字银行应用程序时,您可能甚至不会多想。也许您的手机会在您不知情的情况下自动更新。毕竟,这是一个必要的过程——如果您不安装最新版本的软件,您将面临被拒绝访问其服务的风险。

在开源加密货币中,情况则大不相同。你不需要阅读比特币背后的每一行代码就可以使用它,但拥有这样做的选择权很重要。你看,这里没有等级制度,也没有银行可以随心所欲地推送更新和更改内容。因此,在区块链网络中实现新功能可能是一个挑战。

在本文中,我们将探讨如何在缺乏中央权威的情况下升级加密货币网络。为此,他们使用两种不同的机制:硬分叉和软分叉。


谁在区块链网络中做出决策?

要了解分叉如何工作,首先要了解参与网络决策过程(或治理)的参与者。

在比特币中,你可以大致区分出三个参与者子集——开发者、矿工和全节点用户。这些是真正为网络做出贡献的各方。轻节点(即手机、笔记本电脑等上的钱包)被广泛使用,但就网络而言,它们并不是真正的“参与者”。


开发人员

开发人员负责创建和更新代码。对于典型的硬币,任何人都可以参与此过程。代码是公开的,因此他们可以提交更改供其他开发人员审核。


矿工

矿工是保护网络的人。他们运行加密货币的代码,并投入资源将新区块添加到区块链中。例如,在比特币网络中,他们通过工作量证明来实现这一点。他们以区块奖励的形式获得回报。


全节点用户

全节点是加密货币网络的骨干。它们验证、发送和接收区块和交易,并维护区块链的副本。


您经常会发现这些类别有重叠。例如,您可以是开发人员和完整节点用户,或者矿工和完整节点用户。您可以同时是这三种角色,也可以什么都不是。事实上,我们认为的加密货币用户中有很多并没有承担任何这些角色。相反,他们选择使用轻节点或集中式服务。

从上面的描述中,您可以有力地证明开发人员和矿工应该为网络做出决策。开发人员创建代码——没有他们,您将无法运行软件,也无法修复错误或添加新功能。矿工保护网络——如果没有健康的挖矿竞争,区块链可能会被劫持,或者可能会陷入停顿。

然而,如果这两类人试图强迫网络的其余部分按照他们的意愿行事,那么结果不会太好。对许多人来说,真正的权力集中在完整节点上。这在很大程度上是网络选择加入的功能,这意味着用户可以选择他们正在运行的软件。

开发人员不会闯入你的家,用枪威胁你下载比特币核心二进制文件。如果矿工采取“要么听我的,要么滚蛋”的态度,强迫用户做出不想要的改变,那么用户就会选择滚蛋。

这些团体并不是无所不能的霸主——他们是服务提供商。如果人们决定不使用网络,那么代币就会贬值。价值的损失直接影响矿工(以美元计价时,他们的奖励价值会降低)。至于开发者,用户可以忽略他们。

你看,软件并不是专有的。你可以随意编辑,如果其他人运行你修改后的软件,你们都可以交流。在这种情况下,你可以分叉软件并在过程中创建一个新的网络。


什么是叉子?

软件分叉发生在软件被复制和修改的时候。原始项目仍然存在,但现在它与新项目分开,新项目采取了不同的方向。假设你最喜欢的加密货币内容网站的团队对如何继续存在重大分歧。团队的一部分可能会在不同的域名上复制该网站。但今后,他们会发布与原始内容不同类型的内容。

这些项目有着共同的基础,也有着共同的历史。就像一条路后来一分为二,它们的道路现在永远分道扬镳了。

请注意,这种事情在开源项目中经常发生,并且在比特币或以太坊出现之前就已经发生了很长时间。然而,硬分叉和软分叉之间的区别几乎是区块链领域独有的。让我们进一步讨论一下。


➠ 想要开始使用加密货币?在币安购买比特币!


硬分叉与软分叉

尽管名称相似且最终目的相同,但硬分叉和软分叉却有很大不同。让我们分别了解一下。


什么是硬分叉?

硬分叉是向后不兼容的软件更新。通常,当节点以与旧节点规则相冲突的方式添加新规则时,就会发生这种情况。新节点只能与运行新版本的其他节点通信。结果,区块链分裂,创建两个独立的网络:一个采用旧规则,一个采用新规则。

Nodes turn blue when they update. The older yellow nodes reject them, while blue ones connect to each other.

节点更新时会变成蓝色。较旧的黄色节点会拒绝它们,而蓝色节点则会相互连接。


因此,现在有两个网络并行运行。它们都将继续传播区块和交易,但它们不再在同一个区块链上工作。所有节点在分叉之前都有相同的区块链(并且该历史记录仍然存在),但之后它们将拥有不同的区块和交易。

blockchain forking at block 600,000.


因为有共享的历史记录,如果你在分叉前持有这些币,你最终会在两个网络上都拥有它们。假设在区块 600,000 发生分叉时你有 5 个 BTC。你可以在区块 600,001 上的旧链上使用这 5 个 BTC,但它们还没有在新区块链的区块 600,001 上使用。假设加密技术没有改变,你的私钥在分叉网络上仍然持有五枚币。

硬分叉的一个例子是 2017 年的分叉,比特币被分成了两个独立的链——原来的比特币 (BTC) 和新的比特币现金 (BCH)。分叉发生在对最佳扩容方法进行大量争论之后。比特币现金支持者希望增加区块大小,而比特币支持者反对这一改变。

增加区块大小需要修改规则。这是在 SegWit 软分叉之前(稍后会详细介绍),因此节点只接受小于 1MB 的区块。如果您创建了一个 2MB 的区块,而该区块在其他方面是有效的,其他节点仍会拒绝它。

只有修改了软件以允许超过 1MB 大小的块的节点才能接受这些块。当然,这会导致它们与以前的版本不兼容,因此只有具有相同协议修改的节点才能通信。


什么是软分叉?

软分叉是一种向后兼容的升级,这意味着升级后的节点仍可与未升级的节点通信。软分叉通常会添加一条与旧规则不冲突的新规则。

例如,可以通过软分叉来实现区块大小的减小。我们再次以比特币为例来说明这一点:虽然区块的大小是有限制的,但区块的大小却没有限制。如果你只想接受小于某个大小的区块,那么你只需要拒绝更大的区块即可。

但是,这样做并不会自动断开您与网络的连接。您仍会与未实施这些规则的节点进行通信,但您会过滤掉它们传递给您的部分信息。

软分叉的一个很好的现实例子是前面提到的隔离见证 (SegWit) 分叉,它发生在比特币/比特币现金分裂后不久。SegWit 是一个更新,它改变了区块和交易的格式,但它的设计非常巧妙。旧节点仍然可以验证区块和交易(格式没有违反规则),但它们就是无法理解它们。一些字段只有在节点切换到较新的软件时才可读,这使它们能够解析更多数据。

Even two years after SegWit activation, not all nodes have upgraded. There are advantages to doing so, but there’s no real urgency since there’s no network-breaking change.


即使在 SegWit 激活两年后,并非所有节点都已升级。这样做有好处,但由于没有发生影响网络的重大变化,因此并不急于升级。


硬分叉与软分叉——哪个更好?

从根本上讲,上述两种分叉的目的不同。有争议的硬分叉会分裂社区,而有计划的硬分叉则允许在大家都同意的情况下自由修改软件。

软分叉是一种更温和的选择。一般来说,由于新更改不能与旧规则相冲突,因此您可以做的事情会受到更多限制。也就是说,如果您的更新可以以保持兼容性的方式进行,则无需担心网络分裂。


结束语

硬分叉和软分叉对于区块链网络的长期成功至关重要。尽管缺乏中央权威,它们仍使我们能够在去中心化系统中进行更改和升级。

分叉使区块链和加密货币能够在开发过程中集成新功能。如果没有这些机制,我们就需要一个自上而下控制的集中式系统。否则,我们将在协议的整个生命周期内都受困于完全相同的规则。