区块链芝士 什么是硬分叉和软分叉
硬分叉是一种不支持向后兼容的软件升级方式。通常,这些情况发生在节点以与旧节点的规则冲突的方式添加新规则时。新节点只能与运行新版本的软件节点进行交互。结果,区块链发生了分裂,生产出两个单独的网络:一个按照旧规则运行,一个则按照新规则运行。
因此,现在有两个网络并行运行。他们将继续产生区块和交易,但不再在同一区块链上工作。在区块链网络达到分叉区块之前,所有节点都具有相同的区块链(并且历史记录仍然存在),但是这之后它们将具有不同的区块和交易。
由于存在相同的历史记录,因此如果您在分叉之前持有代币,那么您将在这两个网络上同时获得代币。假设在600,000区块高度发生分叉时,您手里有5 BTC。您可以选择在区块高度到达600,001时,在原始区块链上将这5 BTC花费掉,但是在新产生的区块链上并不会记录这笔在600,001区块高度的消费。假设加密方式没有发生变化,那么在新的分叉网络上您的私钥中仍然会存在这5个代币。
软分叉是支持向后兼容的软件升级方式,升级后的节点仍可以与未升级的节点进行交互。软分叉的升级方式通常是向程序中新添加了一条规则,该规则也不会与之前的旧规则发生冲突。
例如,可以通过软分叉来实现区块大小的下调。让我们再次以比特币为例,说明这一点:比特币网络中对区块大小的上限是有限制的,但对区块大小的下限是没有限制的。如果您只想接受特定大小以下的区块,则只需拒绝大于该数值的区块即可。
但是,这样做并不会让您与网络自动断开连接。您仍然可以与未执行这些规则的节点进行交互,但是会过滤掉它们传递给您的一些信息。
隔离见证(SegWit)就是一个很充分的案例,它是在比特币和比特币现金拆分之后不久发生的。隔离见证是一种更改了区块和事务格式的更新,而且它的设计方式较为巧妙。旧节点仍然可以验证区块和交易(格式不违反规则的),但对于某些字段来说,他们无法读取。只有当节点升级到较新的版本后,某些字段才可读,才能够正确解析其他数据。甚至在隔离见证激活后的两年多时间里,也没有完成所有节点的升级。这样做也是有很多好处的,比如网络不会发生中断的情况、升级也没有那么紧迫。
从本质上说,这两种类型的分叉作用各不相同。具有争议的硬分叉升级,会将社区一分为二,但是有计划的硬分叉升级可以让所有参与者自由的选择是否修改程序。软分叉则是较为平稳的选择。一般来说,由于新的升级不会与之前的规则发生冲突,因此您只能实施某些限制。也就是说,如果您可以按照兼容的方式实施升级,就无需担心网络碎片化的风险。