什么是硬分叉?LAVA PoC2+协议升级硬分叉方案

币牛牛 2020-02-10 18:26:06 来源:币源

为了顺利引入新的PoC2+标准,需要将全节点在共识层面上进行适当改造,也即所谓的分叉。本文为Lava核心开发者团队提出的分叉方案介绍。分叉一般有两种形态,一种是硬分叉,另一种是软分叉。该方案基于区块链的去中心化和社区自治精神,提出了一种由矿工投票激活的硬分叉方案,既有别于传统的硬分叉,也有别于比特币经常采用的MASF(矿工激活软分叉)。



什么是硬分叉?



如果软件/硬件的规则发生改变,并且这种规则改变无法向前兼容。在区块链中,使用旧版本的节点和使用新版本的节点各成体系、无法互相辨认,称为硬分叉。



现实中的例子:



·苹果公司在iPhone 5上使用了Lightning接口,以替代此前的30针Dock接口。iPhone 5以前的手机无法使用新的接口,iPhone 5以后的新手机也无法使用旧的接口。



什么是软分叉?



软分叉一般都是向前兼容的(Forward Compatibility),也可以说是未来兼容。通俗解释就是:旧版本的软件/硬件,可以使用新版本的软件/硬件产生的数据。在区块链上可以理解为旧节点可以验证并接受新节点出的块。



现实中的例子:



·立体声FM广播是向前兼容,它既可以被单声道的老式收音机播放,但没有立体声效果;也可以被新式的立体声收音机播放,具有立体声效果。



软分叉在特殊情况下也可以是向后兼容(Backward Compatibility),也即新版本的软件/硬件,可以使用旧版本软件/硬件产生的数据。在区块链上可以理解为,新节点也可以验证并接受老节点出的块。



现实中的例子:



·Intel的x86指令集CPU是向后兼容的,新款CPU依然可以运行老款CPU的软件,这是由于Intel希望保证老版本CPU有的指令集在新版本中也得以保留。这种只增加不删除的策略,保证了我们换CPU时无需更换相配套的软件。



分叉涉及的技术层面



针对Lava PoC2+ 的分叉方案中,在共识层面需要改动以下几处:



1. 区块头中需要新增一个LAVA挖矿者地址的字段。这种区块头中附带地址用以验证的方式,burst已经使用,其地址即为区块头中的PID。因此LAVA中将以前的PID替换为LAVA专属地址的方法也是该思路的延续。
2. 挖矿相关的一系列接口,包括:Miner请求信息,Miner提交信息后的验证,以及全节点的铸块时校验等。
3.全节点同步其他区块时的验证过程。
4. 全节点重启后读盘时的区块验证过程。
5. 绑定关系数据库升级。



详细分叉方案的分析



1. 向前兼容的软分叉



首先排除该方案。虽然该方案是区块链软分叉首选,但是由于需要修改区块头中的字段,因此就无法满足旧节点能够接收新节点出的区块这一大前提。



2. 向后兼容的软分叉



该方案的实际效果如下图1。根据向后兼容的大前提,由于新节点可以接收并验证老节点出的区块,而旧节点却无法接收新节点出的区块。因此最后新节点逐渐超过旧节点算力达到51%时,两条链分叉。



这虽然保证了分叉的效果,但是也存在相应的问题(如图2),在最初始的网络中,由于旧节点算力占优(51%~100%),而新节点出块始终无法被旧节点接收,因此会存在很大程度上新节点算力的浪费。假设某时刻新节点挖出另一条链与老链分叉,在一段时间后老链的算力和长度会逐渐超过新链,新节点的向后兼容性又使得新链被旧链覆盖,整条新链的算力全都浪费。

3. 传统硬分叉

传统硬分叉方式实际效果如下图3。传统硬分叉是指直接通过更新软件来进行分叉,更新后的软件和原有版本的软件无法互认,因此形成两条独立的区块链。传统的硬分叉若没有得到生态中参与者的同意,容易造成生态的分裂,应当谨慎考虑。

转载请注明来自我爱数字币(www.52szb.com),本文标题: 什么是硬分叉?LAVA PoC2+协议升级硬分叉方案

什么是硬分叉?LAVA PoC2+协议升级硬分叉方案
Top