区块链科普:什么是硬分叉与软分叉?

btc268.com 2019-09-20 03:52:16 来源:区块链资讯
硬分叉与软分叉定义硬分叉的定义:区块链发生永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点生产的区块,通常硬分叉就会发生。

  硬分叉是指比特币区块格式或交易格式(这就是广泛流传的“共识”)发生改变时,未升级的节点拒绝验证已经升级的节点生产出的区块,不过已经升级的节点可以验证未升级节点生产出的区块,然后大家各自延续自己认为正确的链,所以分成两条链。

  

  软分叉的定义:当新共识规则发布后,没有升级的节点会因为不知道新共识规则下,而生产不合法的区块,就会产生临时性分叉。

软分叉是指比特币交易的数据结构(这就是被广泛流传的“共识”)发生改变时,未升级的节点可以验证已经升级的节点生产出的区块,而且已经升级的节点也可以验证未升级的节点生产出的区块。硬分叉和软分叉都是对数据结构的修改

  硬分叉和软分叉都是需要对“共识”,也就是对区块链数据结构/交易数据结构格式进行的修改。

  所谓的硬分叉需要修改的“共识”就是指的是修改区块数据结构格式,或修改交易数据结构格式。所谓的软分叉需要修改的“共识”就是指修改区块数据结构格式,或修改交易数据结构格式。

在具体修改的对象层面上,软分叉和硬分叉是完全没有区别的,就目前止我们看到的所有的已经发生的,和计划发生的分叉都是这样子,它们都修改或试图修改交易数据结构,或区块数据结构。目前发生的,或计划发生的硬分叉和软分叉都绝对不会去修改交易历史记录。

  所以说软分叉和硬分叉在修改“共识”层面上本质上是没有区别的。

两者主要区别是新旧节点相互兼容性硬分叉修改数据结构后,新节点生产的区块会被旧节点拒绝掉,如果旧节点拒绝升级软件而坚持按照旧数据结构继续挖矿,那比特币就会产生两条链。

  

  硬分叉不向前兼容

  软分叉修改数据结构后,新节点生产的交易和区块能够被旧节点验证并接受,硬分叉就不能。

  而软分叉因为没有升级的节点能接受新节点生产的新数据,所以不会出现两条链。但软分叉为了做到新节点和旧节点生产的数据完全兼容,那是非常难的,因为本质上是不一样的数据结构大家要相互认,一旦出现有节点拒绝验证不一样的交易或区块,那就会变成硬分叉。

  

  软分叉向前兼容

软分叉需要保证完美的兼容性就要求达到以下两种情况:
1. 升级过的节点接受没有升级的节点生产的交易和区块(向后兼容);

  2. 没有升级的节点接受升级过的节点生产的交易和区块(向前兼容)。

对比软分叉和硬分叉的优缺点软分叉可以保证不想升级的人不去升级,这种不想升级的需求在现实生活中其实是很常见的。软分叉的升级空间有限,因为目前的比特币交易数据结构和区块数据结构所有字段都已经详细定义好了,你想保证向前兼容,就不可能增加新的字段,否则旧节点就会拒绝你。

  

  就包括软分叉就无法重新定义区块数据结构里的“区块大小”这个字段,也就是软分叉永远实现不了对1M区块的突破。而且这种极端复杂的兼容性稍微出点错,就会新旧节点不兼容,即导致硬分叉。这个事情已经发生过一次了。

  硬分叉必须要求所有旧节点进行升级,否则旧节点就无法识别新节点生产的交易和区块,导致区块链分成两条链。

  

硬分叉的升级空间则要大很多,因为硬分叉只要考虑能够接受以前旧节点生产的交易和区块就可以了,硬分叉不需要考虑旧节点是否会接受新节点生产的交易和区块。那硬分叉就可以对交易数据结构和区块数据结构更大胆的修改。最后,比特币交易数据结构和区块数据结构都有一个字段叫“版本号”,意义是“明确这笔交易或区块参照的规则”。这意味着中本聪是希望使用硬分叉来修改这些规则,就是说如果我们要修改规则,那就重新定义版本号。但软分叉在不修改“版本号”的前提下,却修改了规则。联系我们

  官网:www.biben.com

  邮箱:[email protected]

微博:weibo.com/[email protected]必本搜索

  

  

  

转载请注明来自我爱数字币(www.52szb.com),本文标题:区块链科普:什么是硬分叉与软分叉?

区块链科普:什么是硬分叉与软分叉?
Top