第九课:扩容问题引发的软硬分叉
一、软硬分叉
上节课我们学习了扩容问题,也留下一个疑问,不同的扩容方案会导致软硬分叉的出现,那什么是软硬分叉呢?我们今天的故事就由此开始了。
为了体现我们的专业性,先为大家放上原文定义:
A permanent divergence in the block chain, commonly occurs when non-upgraded nodes can’t validate blocks created by upgraded nodes that follow newer consensus rules.
硬分叉是区块链发生永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点生产的区块,通常硬分叉就会发生。
A temporary fork in the block chain which commonly occurs when miners using non-upgraded nodes violate a new consensus rule their nodes don’t know about.
软分叉是当新共识规则发布后,没有升级的节点会因为不知道新共识规则下,而生产不合法的区块,就会产生临时性分叉。
其实简单来说,软硬分叉可以想象成是Windows系统升级,win7到win8的升级没有什么区别,大家都能接受,就像软分叉。而win8到win10的升级区别就很大,有的人就会选择用win8而拒绝用win10,这就像硬分叉。
套到实际,就是初始的1.0版本,它的区块出现问题了,程序员进行修改后推出新的1.1版本。使用旧版本1.0的用户能够接受新版本就是软分叉,拒绝接受就是硬分叉。
其实在具体修改的层面上,软分叉和硬分叉本质上是没有区别的,就目前我们看到的已经发生的分叉它们基本都是修改或试图修改交易数据结构或区块数据结构。
从表面看软分叉和硬分叉主要的区别就是新旧节点是否相互兼容。但其实这么说也不是很准确,更正确的说法是:硬分叉的定义是扩宽共识规则,允许做之前禁止的事情,以前无效的交易/区块在硬分叉后会变成有效的。
软分叉是收紧共识规则,禁止之前允许做的事情,以前有效的交易在软分叉后就无效了。这就更好理解为什么硬分叉会有人拒绝。
需要注意一点,软分叉为了做到新节点和旧节点生产的数据完全兼容,是非常困难的,因为本质上是不一样的数据结构大家还要相互认可,而一旦出现有节点拒绝验证不一样的交易或区块,软分叉就会变成硬分叉。
那软硬分叉各有什么优缺点呢?
软分叉可以保证不想升级的人不去升级,而硬分叉必须要求所有旧节点进行升级,否则旧节点就无法识别新节点生产的交易和区块,导致区块链分成两条链。
关于软硬分叉的概念解释就先到这里,下部分我们在继续了解软硬分叉带来的风险。
二、重放攻击
通过上部分我们了解了基本的软硬分叉的概念,那对于普通人来说,如果比特币真的分叉,会存在什么风险呢?最大的风险应该就是“重放攻击“。
什么是“重放攻击”呢?重放也被称为重播、回放,也就是说某个消息或数据重新发送给接收方一次。而重放攻击(Replay Attacks),是计算机世界黑客常用的攻击方式之一,如果接收方在多次接收数据但无法进行有效识别,就会存在重放漏洞。
区块链历史上最著名的重放攻击事件,是在2016年7月以太坊进行硬分叉时发生的事情。以太坊分叉出现了两条链,这两条链上的交易数据结构是一样的,没有什么变化,因此一笔交易在两条链上都是有效的并可以被接受,反之也成立。
使用者在其中一条链上发起的交易,就可以到另一条链上去重新广播,也可能得到确认,从而获得额外的币,具体来说就是第一条链上A给B转100个币,那么在第二条链上也会出现给B转过去100个币的交易。如果你转出的地址不是自己的,那些比特币可能就再也拿不回来了。
当时以太坊的交易平台和用户因为基本都是第一次遇到这样的事情,经验和准备都不足,没有提前做好两条链的分离,因此被许多人利用这个漏洞,造成很大的损失。
那要如何防止重放攻击呢?最简单的方法就是在分叉结束前,不要进行交易,等分叉尘埃落定再说,安全最重要嘛。
好了,今天的内容就到这里了,记得复习哦~我们下期再见。
【版权归钛媒体与链得得所有,未经许可不得转载】
账号合并
经检测,你是“钛媒体”和“商业价值”的注册用户。现在,我们对两个产品因进行整合,需要您选择一个账号用来登录。无论您选择哪个账号,两个账号的原有信息都会合并在一起。对于给您造成的不便,我们深感歉意。
Oh! no
您是否确认要删除该条评论吗?