自学区块链(八)分叉
硬分叉(hard fork):区块链发生永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点生产的区块,通常硬分叉就会发生。
软分叉(soft fork):是指在区块链或去中心化网络中向前兼容的分叉。向前兼容意味着,当新共识规则发布后,在去中心化架构中节点不一定要升级到新的共识规则,因为软分叉的新规则仍旧符合老的规则,所以未升级的节点仍旧能接受新的规则。
如何理解硬分叉呢?
当我们要加点新的东西,或者更新协议,如BTC提高每个区块的最大交易量,假如从1M提高到4M,大多数节点都同意更新了,但是有少部分的节点不认同,这是一个去中心化的系统,社区意见产生分歧,新节点产生的区块旧节点不认同,但是旧节点产生的区块是符合新节点的要求的,所以这样会分出两条链,旧节点会按照旧协议拓展他的区块链不会接纳新节点产生的区块,只要旧节点不更新那么分叉一直存在。
那如何理解软分叉呢?
我们在原有的协议上加一点限制条件,如更改交易的验证脚本,使得能通过新脚本验证的一定满足旧脚本的需要,但是能通过旧脚本的不一定满足新脚本,这样的话,旧节点是认可新节点产生的区块的,但是新节点不一定认可就节点产生的区块,这种旧节点产生的分叉是临时性的,不会在最长合法链上。并且旧节点产出的出块奖励也会失效,一直在做无用功。所以最终由于利益还是会达成共识的。
硬分叉的一些影响
和软分叉相比还是硬分叉影响大一些,一条链分成两条链,会出现分叉币比如比特币(BTC)和比特币现金(BCH),并且分叉之后会按照原来账户上的币变成同样数目的两种币(因为是一条链分出来的),币分叉时应该原来的币会下跌(如果不跌,等于还赚了另外一种分叉币)。
硬分叉的例子
改变了原比特币网络的区块大小,网络处理速度更快。新旧两个系统分叉成了两条不同的链,如比特币(BTC)和比特币现金(BCH)。在某个时间点,需要所有节点同意升级,不同意分叉的节点则继续留在原比特币链条上。
软分叉的例子
P2SH(pay to script hash)这个功能原来BTC协议中是没有的,通过软分叉加进来的。