解密区块链、软分叉和硬分叉
最近,软分叉和硬分叉的声音经常在交流小组和论坛上听到。起初,这一概念被简单地认为是区块链软件升级后识别新旧节点的区别。分叉通常不会产生永久分叉链,而硬分叉会产生两个链。如果大多数节点升级到新版本,旧链的生存取决于计算能力的大小。
查询了一些资料后,我又明确了硬分叉和软分叉的概念。
硬分叉和软分叉所涉及的问题是分散的节点软件、协议和版本升级。区块链上运行的所有节点都有相同的软件,遵循相同的共识机制,维护相同的链,但一旦软件、协议和版本升级,所有节点都不能更新到相同的版本。与此同时,一些节点也产生了新的共识协议机制。此时,网络和旧的节点将出现在网络中。然后,当块产生时,新节点产生的块将被旧节点视为合法或非法,而旧节点产生的块将被新节点视为合法或非法。区块链一直有51%的计算能力临界点,
首先,让我们解释一下软硬分叉:
软分叉:官方定义:区块链分叉发生在使用非节点矿工违反节点不知道的新规则时。在共识规则下,如果产生非法区块,就会出现临时分叉。)说实话,官方的定义感觉有点模糊。
当整个区块链网络的系统版本或协议升级与旧版本协议不兼容时,由于新节点高于旧节点,升级后的新节点无法接受旧节点挖出的全部或部分块。因此,旧节点挖出的块没有机会识别,旧节点产生的块最终将被视为短链并被废弃。新旧节点总是在同一条链上工作。这种情况被称为软分叉。新节点比旧节点更严格。
硬分叉:官方定义:区块链A,发生在非节点无法按照更新规则创建块的情况下。节点无法验证升级节点产生的块,通常会发生硬分叉。
在整个区块链网络中,系统版本或协议升级后,与旧版本的协议不兼容。未升级的旧节点不能接受新节点挖掘的全部或部分块,导致两个链的出现。节点的计算能力非常大。新节点正在维护一条链,旧节点一直在维护他认可的链。如果大多数节点开始升级到新版本,旧节点维护的链还能生存吗?根据计算能力,这被称为硬分叉。
显然,最肤浅的理解就是软分叉还是一条链,硬分叉会分成两条链。
软分叉和硬分叉在实际应用中有哪些优缺点:
软分叉只有一条链(最简单、最清晰)。硬分叉将修改区块链。一开始,区块链中的所有节点都不需要同时升级,可以在不影响区块链稳定性和有效性的响区块链的稳定性和有效性。然而,软分叉的另一个前提是,旧的未升级节点必须能够接受新节点产生的块,这要求系统前向兼容(前向,这是我们通常使用的相反方式),要求新块为旧系统留出空间,以确保兼容性)。事实上,让旧节点识别新块实际上是一种欺骗,使旧节点无法检测到实际变化,
以太坊和比特币都有软硬分叉:
2016 年,The DAO 黑客通过函数递归发送模式窃取了 360 万 ETH。该功能仅在执行结束时修改用户余额和交易金额。操作呼叫,然后多次交付,并不断将以太币转移到其他账户。(具体代码分析见邹军神区块链技术指南P210或网上),由于代码漏洞发布后无法修改,DAO转向以太坊,最初用软分叉锁定DAO账户,不允许即将发生。交易,冻结以太,这里可以发现软分叉实际上是对以太软件的限制,使黑客以太不能交易,所以不影响以太的其他正常交易,不要回滚区块链数据(回滚的影响难以想象)。在实施软分叉计划时,将在以太坊的每笔交易中进行检查和 DAO 相关地址。如果是 DAO 相关交易将被拒绝,以锁定所有资金。然而,该计划不收取交易 GAS 成本。如果以零成本发起大量无效交易,将导致网络瘫痪。最后,每个节点将回滚软件版本,软分叉失败,然后执行硬分叉,如下图所示:该方案不收取交易 GAS 成本。如果以零成本发起大量无效交易,它会导致网络瘫痪。最后,每个节点将回滚软件版本,软分叉失败,然后执行硬分叉,如下图所示:该方案不收取交易 GAS 成本。如果以零成本发起大量无效交易,将导致网络瘫痪。最后,每个节点将回滚软件版本,软分叉失败,然后执行硬分叉,如下图所示:
硬分叉方案DAO另一份合同放在18.8万块L在链表中,1920000区块设计了一个非常规的状态变化L所有地址的余额强行转移到退款地址,以便众筹DAO货币可以兑换成ether,硬分叉成功。上图1.92万元后,左边是块,右边是哈希值,直线代表新链。节点升级后,将记录在新链上。未升级的节点将记录在旧链中。
现在,为了区分新链——ETH,旧链ETC,两条链除了DAO此外,软件代码相同,分叉前历史账户相同,地址与私钥相同,因此合法。(当然,还有重放攻击,也可以参考邹军大神P216)。
同样,比特币中也有软分叉(谭国鹏,大神也有视频讲解,优酷和巴比特都有,可以搜索。这篇文章非常详细,作者直接复制。..)P2SH软分叉升级,BIP16包含P2SH,比特币支持通过软分叉升级比特币系统P2PKH在此基础上,支持一为P2SH标准交易类型。在此之前,比特币支持以下脚本:[20-byte-hash-value]”。要使用这样的脚本,您只需要将哈希值的原始 data() 推送到(推送数据)堆栈。