前置知识
公有区块链(例如比特币和以太坊)的去中心化特性意味着,网络中的参与者必须能够就区块链的共享状态(共享的公共账本、区块以及区块链协议)达成一致。网络节点间的一致共识会形成一条包含经过验证数据(交易)的单一区块链,网络将其断言为正确数据。然而,很多时候,网络中的节点无法就区块链的未来状态达成一致共识。这一事件会导致 分叉(就像实验科学中使用的音叉一样),这意味着理想的“单一”区块链在某个点分裂成两条或多条有效的链。
区块链中的分叉:
简而言之,区块链中的分叉意味着复制代码并对其进行修改,以创建一个新的软件或产品。在开源项目中,分叉非常常见且被广泛使用。因此,像以太坊和比特币这样的加密货币是去中心化和开放的软件,任何人都可以做出贡献。由于它们是开源的,它们依靠社区来提高软件的安全性和可靠性。此外,借助分叉,开源软件可以让用户界面更具互动性且美观,从而有助于在全球范围内获得更多用户。在开源项目中,代码对所有人可见,任何人都可以修改、编辑和访问,这些行为不涉及版权声明。
例如:Tor浏览器是一个开源软件,Linux是使用最广泛的操作系统之一,也是一个开源系统,类似地,比特币和以太坊协议也是开源的。
!image区块链分叉示例
#### 让我们继续前进:
#### 让我们逐一看看不同类型的分叉:
!image分叉的类型
基本上,分叉分为两类,即 代码库分叉 和 实时区块链分叉。然后,实时区块链分叉又进一步分为两部分,即 有意分叉 和 意外分叉。正如你在上图中所看到的,有意分叉又进一步分为两部分,即 软分叉 和 硬分叉。
分叉的类型:
代码库分叉: 在代码库区块链分叉中,你可以复制特定软件的全部代码。让我们以比特币为例,假设你复制了整个区块链代码并根据你的需求进行了修改,比如你减少了区块创建时间,做了一些关键性的更改,创建了一个比比特币更快的软件,并通过完成整个白皮书工作流程,以你自己的名义发布/启动了一个全新的软件。因此,通过这种方式,将从空的空白账本创建一个新的区块链。事实上,许多现在在区块链上运行的“山寨币”都是通过这种方式使用代码库分叉制作的,即它们在比特币的代码中做了一些上下调整,并创建了它们全新的山寨币。
实时区块链分叉: 实时区块链分叉意味着一个正在运行的区块链被进一步分成两部分或两条路径。因此,在实时区块链中,在特定页面之前软件是相同的,从该特定点开始,链被分成两部分。就这种分叉而言,实时区块链分叉的发生可能是因为两个原因:
- 意外分叉 / 临时分叉: 当多个矿工几乎同时挖掘出一个新区块时,整个网络可能无法就选择哪个新区块达成一致。有些人可以接受一方挖掘的区块,从而导致从那时起形成不同的区块链,而其他人可能同意其他可用的替代方案(区块)。这种情况的产生是因为信息在整个区块链网络中传播需要一定的时间,因此关于事件的时间顺序可能存在相互冲突的观点。在这种分叉中,两个或多个区块具有相同的区块高度。当其中一条链消亡(成为孤块)时,临时分叉最终会自动解决,因为大多数全节点选择另一条链来添加新区块并进行同步。 示例(临时分叉 / 意外分叉): 临时分叉经常发生,引发这种分叉的通常事件是多方几乎同时挖掘出一个区块。
- 有意分叉: 在有意分叉中,区块链的规则被改变了,这是在了解软件代码的基础上通过修改实现的。