区块链分叉是什么区块链硬分叉与软分叉的区别

当前位置:首页 > 币圈百科 > 区块链分叉是什么区块链硬分叉与软分叉的区别

区块链分叉是什么区块链硬分叉与软分叉的区别

2022-11-12币圈百科350

如何保持区块链账簿的一致性是一个非常重要的问题。所谓岔口,是指记载区块链账簿的节点,账簿共识上有分歧。简单来说,就是全网的账本有两个或两个以上的版本。这时候就要靠所谓的“叉子选择法则”了。通过规则的设计,促使矿工达成共识,选择不同账本中的一个。区块链分叉可以分为自然发生的“暂时分叉”和区块链版本升级导致的“硬分叉”。本文将重点讨论“暂时分叉”的原因和解决方法。

区块链

暂时分叉的原因是什么?PoW?在共识机制中,矿工们会互相竞争解决一个问题,谁先解决谁就拥有下一块的记账权。问题来了。有没有两个矿工同时解决了问题,同时生产出新的区块?

答案是有可能。因为这个问题是随机的,而且网络是异步的,必然会有一些矿工因为同时解决了问题而同时产生新的区块。此时,双方将向网络上的其他节点广播他们的新块以进行验证。在节点验证之后,这些块将被识别为新块。

区块链分叉-分叉原因

以上图为例。节点A(可能在图上标出)挖出块C,节点B(可能在图上标出)挖出块D,广播给网络验证。我们说过,网络的信息在传输中不会同步,会有延迟的可能,所以网络中的状态会变成:

[x(否定块D,放入隔离块?中)

Team D 最先收到块D的节点会把D识别为新块?(否定块C,放入孤块池)

分叉——最长链共识

此时矿工之间会出现分歧,区块链状态会这样增长

区块链分叉-最长链共识以上图为例,a是B的前一个块,也称为“父块”。这就是所谓的区块链的暂时分叉,在比特币中?PoW算法网络中的共识规则如下:

如果发生分叉,网络上的人会保持两个分支。一旦一个分支的累积工作负载超过另一个分支,在任何情况下,节点都只会在累积工作负载更多的链上工作。

简单来说,C队以C块为母块继续挖矿,D队以D块继续挖矿,哪个队先挖第二块,全网就认为是主链,也就是所谓的“最长链共识”。

区块链分叉-最长链共识2以上图为例。我们假设D组先把E块挖出来,广播到全网让其他节点验证。C队收到E块后,将D块从孤儿池中取出,以D分支为主链(因为C分支已经不是最长的链了),C块成为孤儿。

你可能会奇怪,为什么C队的矿工要乖乖地遵守最长链共识,因为正常情况下,大部分矿工都会选择按照共识规则工作。如果部分矿工选择在较短的分支开采,即使挖出新块,也不会得到大部分矿工的认可,自然得不到奖励。所以,正常情况下,理性的矿工会选择遵循“最长链共识”。

分叉对事务的影响

当发生分叉时,如果在短链块中验证的事务没有被长链验证,会发生什么情况?我们来看看中本聪自己的解释

(图片来源)区块链分叉-节点共识的分歧

如果短链交易不在长链中,会再次放入交易池(内存池)中,等待矿工将其打包到后面的块中,该交易的确认号会重新计算。这就是为什么比特币需要等待六个街区才能完全确认交易,因为一般来说,用户不会知道区块链是否处于分叉状态。如果包含事务A的块在下一个块之后出现并成为孤立块,则事务A除了可能需要重新验证之外,还将面临双花攻击的风险。

至于为什么有六块,这个其实并不是硬性规定。有些交易所只要有两三次确认就能成功进入账户。六次确认代表交易在全网共识中处于安全状态。当然,数字六也是计算出来的。详情请参考比特币白皮书。

硬分岔不适用于“最长链共识”

以上介绍是区块链在自然条件下的暂时分岔。如果由于版本的更新或社区共识的分裂而导致区块链出现“硬分叉”,由于硬分叉本身并不是在自然情况下发生的,且过程涉及矿工的自觉选择,因此不可能单纯通过“最常见的连锁共识”来解决分叉问题。详见下篇《硬叉与软叉》。

区块链是存在于互联网中的大型分布式系统,它存在于每一个网络参与者(矿工)的电脑中。换句话说,一旦区块链需要更新或修改,所有网络参与者必须下载并运行区块链客户端的新版本,区块链系统才能完成版本更新。然而,升级分布式共识系统的难点在于,很难要求网络参与者同时完成更新。只要有参与者不立即更新他们的客户端,网络上就会有不同版本的区块链。换句话说,区块链将会发散。因此,当区块链被更新时,所有系统参与者必须被协调,否则区块链系统的安全性可能受到影响。

升级分布式合意系统的另一个困难是所有网络参与者必须达成合意。如果只有部分矿工同意更新,部分老矿工不同意,矿工之间就会出现共识问题。区块链更新的共识大致有以下四种可能:

新矿工接受老矿工挖的块

新矿工不接受老矿工挖的块

老矿工接受新矿工挖的块

老矿工不接受新矿工挖的块

硬叉[

当系统出现新版本的更新,且与上一版本不兼容时而老矿工不能接受新矿工挖出的全部或部分矿块,区块链将有一个硬叉子。 以比特币为例。如果您更改协议的重要参数,如块大小、挖掘问题的难度或释放块的速度,这些规则中任何一个的更改都可能导致新块不被先前版本的共识规则接受。例如,如果块容量限制在更新后从1MB增加到4MB,运行新版本的矿工将接受4MB块,但运行旧版本的矿工将拒绝它。

社区达成共识蓑衣网小编2022硬分叉与软分叉-硬分叉

在新矿工拥有大部分计算能力的情况下,老矿工有两种选择。第一种是接受更新并升级客户端软件。这种情况意味着社区对版本更新已经达成共识,区块链可以安全顺利地完成更新。

社区无法达成共识

蓑衣网小编2022硬分叉与软分叉-达成共识

如果矿工坚持维护旧版本的系统,区块链将被分裂成两个链条。(在这种情况下,新矿工和老矿工一直无法达成共识。即使接受更新的新矿工51%的计算能力,老矿工还是不愿意接受新版本,所以“最长链共识”不适用。)

如果大多数人选择更新,新版本的计算能力必然更强。剩下的就看老版本的计算能力是否足以支撑一个链条的安全了。如果仍有一定数量的矿工坚持维护旧版本,区块链将分裂成两个链。 当区块链分裂成两条链,每个矿工维护自己的链,就会产生两种不同的硬币(大部分是硬叉,比如以太坊君士坦丁堡的硬叉,矿工愿意接受新版的区块链,矿工之间没有共识就不会分裂)。这就是所谓的“叉币”。例如,比特币社区在2017年的扩张计划的概念上存在分歧,无法达成共识导致了hard。

对于用户来说,这种社区划分的硬叉最让人感动的是可以领取叉币。比如分叉前你钱包里有“1 BTC”,蓑衣网小编2022分叉后你会有“1 BTC +1 BCH”。没有生态系统中所有参与者的同意,存在很大的硬分叉风险,很容易导致生态系统分裂、计算能力分裂以及这种区块链的重放攻击的危险。因此,这是一项极具争议性和危险性的区块链升级技术,所以区块链社区对硬分叉非常谨慎。硬分叉与软分叉-无法达成共识

软分叉

当新矿工的计算能力为51%时,新矿工产生的块不能兼容老矿工产生的块,但老矿工可以兼容新矿工产生的块。

如果用“更严格的规则”更新实现协议修改或添加不影响结构的功能,老矿工会接受新矿工生产的块;相反,因为新矿工认可的协议更严格,所以新矿工会拒绝老矿工生产的砌块。这个时候,一般情况下,老矿工会选择升级,否则他们生产的区块不会被新矿工接受,也不会得到开采奖励。(当遇到意识形态或发展观不同等特殊情况时,还是有可能老矿工会选择不接受新矿工输出的区块,继续维持旧版链条,导致硬分叉甚至分裂。)

以比特币为例。理想情况下,老矿工会意识到他们的区块被拒绝,他们会选择升级。随着越来越多的矿工升级,这将进一步孤立旧版本的区块。在利益的驱动下,会诱导更多的老矿工升级,所以系统可以用温和的方式更新。

例如,社区决定将块大小从当前的1MB限制减少到0.5MB。大多数新矿工将拒绝旧矿工生产的1MB块,并选择其他矿工生产的合格块。硬分叉与软分叉-软分叉

软叉的更新经常发生。比特币一开始没有块大小限制。后来又通过软叉推出了1MB的限制。它还通过soft fork成功添加了一个pay-to-script-hash函数,在不改变结构的情况下增强了代码。这种类型的更新通常只需要大多数矿工升级,其他矿工也会随之升级,这样更可行,破坏性也更小。

总结

与硬分叉相比,软分叉过程中,正常情况下只有一条链,不存在分裂成两条链的风险。而且软分叉并不要求所有矿工同时升级,而是以一种比较温和的方式逐步升级,在软分叉过程中不影响系统的稳定性和有效性。

但是,两者没有区别,只是适用性的问题。如果进行大规模的区块链更新,将不可避免地涉及旧协议不接受的规则。即使我们都知道软叉比硬叉安全,我们也只能选择硬叉来升级区块链。

不过,硬分叉也没必要想得太可怕,因为只要全网矿工对升级有相同的共识,就不会分叉成两个区块链,影响安全。

综上所述,对于区块链升级,重要的不是硬分叉还是软分叉,而是矿工和矿工之间的共识是否一致。这一部分被称为“区块链治理”。共识处理不好,很容易导致革命,这也是区块链升级比传统软件更难的原因。

区块链分叉是什么区块链硬分叉与软分叉的区别 | 分享给朋友: