时间:2023-06-18|浏览:199
用戶喜愛的交易所
已有账号登陆后会弹出下载
小编提醒大家,国产公链项目NULS团队账户在2019年12月23日凌晨遭遇黑客攻击,丢失了200万枚NULS。为了解决这个问题,NULS团队决定在878000区块高度进行硬分叉处理。硬分叉之后,未进入市场的NULS将会被永久冻结,也就是相当于被销毁了。
大家都知道,以太坊曾经发生过TheDAO合约漏洞攻击事件,采用了硬分叉,最终分叉出了ETC(以太经典)和ETH。这两个币种都成为了全球前20的加密币种,是硬分叉的经典案例。
那么,什么是区块链的分叉呢?什么是软分叉?什么是硬分叉?他们之间的区别又是什么呢?本文将为大家解答这些问题。
为什么会发生分叉?就像我们使用的普通应用程序一样,有些应用要求我们强制升级,否则就无法继续使用。而有些应用则可以选择性升级,只是无法使用一些最新的功能。
区块链最大的特点就是去中心化,区块之间相连构成一条链,分布式记账,没有中心。但由于这些特性的存在,不同的区块之间的版本无法保持一致。比如,区块2发布了新的版本,增加了一些新的数据。有些用户升级了版本,但有些没有。此时软件仍在不断打包,导致出现了两条不同的区块链,这就是分叉的原因。
总的来说,区块链分叉是由于版本不一致和区块链的去中心化特性共同导致的结果。
例如,在程序员开发过程中,可能需要开发新的需求,比如圣诞节加个圣诞帽什么的,需要增加一个圣诞帽的图片网络地址。关于接口的实现可能会有两种方案。第一种是兼容模式,在原接口上加了一个字段,客户端只需判断这个字段是否为空,然后去显示圣诞帽。第二种是非兼容模式,开发了一个新的接口,不再维护原来的接口,导致APP不升级的用户进入个人主页就闪退,因为使用了废弃的接口。
在区块链领域,也可以根据新版本节点和老版本节点之间的兼容性分别细分分叉的情况。
1、新版本节点认可老版本节点发出的区块/交易合法
新版本节点认可老版本节点,也就是兼容了老版本,能接受老版本发出的区块数据。但反过来,老版本不一定能兼容新版本。比如开发老版本时就预料到这个情况,留了一个备用的字段,只是没用到。后来新版本就使用了这个字段,也就是两者的数据结构依然一致,这种情况是能兼容的。这种情况将导致区块链中的节点数据同时包含新老区块。
2、新版本节点认为老版本节点发出的区块/交易不合法
从上述分析可知,老节点可能接受新节点的区块,但新节点不接受老节点的区块信息。这意味着老节点可能包含新节点的信息,但新节点却与老节点没有关系,相当于新开了一条链。
软、硬分叉
以上讨论新版本节点和老版本节点之间的关系,换个角度就是老节点是否能够识别新节点产生的区块信息。
1、软分叉
老节点能接受新节点挖出的新区块,矿工继续原来的操作,链仍是同一条。简单来说,软分叉向前兼容。
2、硬分叉
新版本的软件无法兼容旧版本。由于老节点无法接受新节点挖出的区块链,导致新区块链产生。一条链成为不相干的两条链,一条是新的,一条是旧的。简单来说,硬分叉不向前兼容。
问答
看了上面的概念,我们来回答几个问题以加深了解。
1、为什么TheDAO事件和NULS被黑客攻击后都采用了硬分叉?
软分叉向前兼容,也就是新的区块还会接受旧的区块信息,旧版本的资产可以在新版本上消费,这无法实现冻结黑客资产的目的。由于硬分叉后,被盗资产就可以转移到一个新地址,财产损失可降至最小。
2、分叉的优缺点
区块链本身具有去中心化、不可篡改等特性,分叉实际上是新增一个方案,违背了区块链本身的特性。这也是TheDAO事件中ETH变成ETC和ETH的原因:双方各执一词。有人认为要尊重区块链的本质并否认修改,有人支持遵守法规。从另一个角度来看,区块链的发展还较为初级,有很多东西需要完善,分叉是一种较好的完善方式,也无可厚非。最后,我们认为,分叉有时候是必要的,也无需太过固执和神话区块链的不可篡改性。