2022-02-08 14:54:10
从宏观上来看,分叉指的是区块链在进行“升级”时发生了意见分歧,从而导致区块链分叉。而区块又是由一个又一个区块组成,所以分叉的概念也可以说是当开发者在新项目中采用与原来不一致的共识机制,在这个时候就有可能发生分叉。目前市场中存在硬分叉和软分叉,这两个概念有着很大的区别,如果是新手投资者的话可能还不清楚,那么,硬分叉与软分叉有什么区别?下面211Coin小编就给大家分析一下硬分叉与软分叉区别。
硬分叉
编程分叉主要有两种类型:硬分叉与软分叉。
硬分叉是对旧版本的无效协议进行更改。假如旧版本持续运行,它们最终将使用与新版本不同的协议与数据。这会导致严重的混淆与可能的错误。
在比特币里,需要硬分叉来更改像是区块大小、解决加密难题的难度、新增额外信息之限制等定义参数。任何对这些规则的更改,都可能造成区块被新协议接受但被旧版本拒绝,并可能导致严重问题──甚至有可能造成资金的损失。
举例来说,假如区块的大小限制由1 MB增加到4 MB,一个2 MB大小的区块将能被运行新版本的节点所接受,但会被运行旧版本的节点所拒绝。
也就是说,2 MB大小的区块通过某一更新后节点的验证并新增到区块链中。假若下一个区块是需要被运行旧版协议的节点所验证的呢?该节点会试图新增这个区块,但它会侦测到最新的这个区块并没有通过验证。因此,它将忽视该区块,并将新验证结果附加到前面一区块。突然间,你有了两个区块链,其中一条同时含有旧与新版本协议的区块,另一条仅包含旧版本协议的区块。哪条链的增长较快取决于哪些节点可以获得下一区块的验证,并且最终可能还会有额外的分裂。两条(或更多的)链是可以无限平行增长的。
这是一个硬分叉,它可能是混乱的,也可能充满着风险,因为在新区块中花费的比特币可能会再次花费在旧区块里(因为运行旧版本协议的商户、钱包与用户无法侦测到无效的新代码支出)。
唯一的解决方法是放弃其中一个分支转而支持某一分支,这涉及一些矿工的损失(交易本身是不会丢失的,它们只会被重新分配)。或者,所有节点都需要在同时切换到较新的版本,而这在分散的、广泛传播的系统内是不容易达到的。
或者,比特币会分裂,这已经发生了。(哈啰,比特币现金)
软分叉
软分叉仍然可以与旧版本一同运行。
举例来说,假如以限缩规则的方法更改协议,实现表层修改或添加不影响结构的功能,则旧版本的区块将能接受新版本区块。但反过来则行不通:新的、较为严格的版本将拒绝旧版本的区块。
在区块链中,理想状态下,矿工发现它们的区块被拒绝,就会自行升级。随着越来越多矿工完成升级动作后,拥有主要新区块协议的链会变得越来越长,会更加孤立旧版本的区块,这又能让更多矿工进行升级动作,并且系统会自动纠正。由于旧的和更新后的节点都接受新区块,因此新版本的区块协议最终将获胜。
举例来说,当社区决定将区块大小从现有的1 MB限制缩限到0.5 MB。运行新版本区块协议的节点将拒绝1 MB大小的区块,并且会建构在前一个区块上(如果它是使用新版本的代码进行挖矿),可能会导致暂时的分叉。
这是一个软分叉,并且已经发生过好多次。最初,比特币并没有区块小的限制,是通过软分叉将1 MB的大小限制引入的,因为新规则比旧规则更为“严格”。而可以在不改变结构的情况下强化代码的pay - to - script - hash功能,也是通过软分叉成功增加的。这类型的修正通常仅需要大部分的矿工进行升级,便可以让该分叉变得更可行,也降低了破坏性。
软分叉并不会带来困扰硬分叉的双花风险(double-spend risk),因为运行旧节点的商家与用户将能同时读取新旧版本的区块协议。
以上内容就是对硬分叉与软分叉有什么区别?这个问题的讲解,想要完全搞清楚硬分叉和软分叉的关系,就得先清楚,什么情况下才会进行分叉,矿工在区块链通过挖矿能产生新的区块,但是当遇到算力相当的矿工的时候,平台一时间无法做出判断,从而在全网中就出现了两个长度相同、区块里的交易信息相同、但矿工签名不同或者交易排序不同的区块链。这样的情况,就叫区块链分叉,之后也会根据自身的实际需求分叉出硬分叉和软分叉。
201