【得得课堂】声讯早班车:扩容问题引发的软硬分叉

1877 天前
1267

音频选自《精通区块链·基础版


一、软硬分叉

 硬分叉是区块链发生永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点生产的区块,通常硬分叉就会发生。

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

其实简单来说,软硬分叉可以想象成是Windows系统升级,win7到win8的升级没有什么区别,大家都能接受,就像软分叉。而win8到win10的升级区别就很大,有的人就会选择用win8而拒绝用win10,这就像硬分叉。

套到实际,就是初始的1.0版本,它的区块出现问题了,程序员进行修改后推出新的1.1版本。使用旧版本1.0的用户能够接受新版本就是软分叉,拒绝接受就是硬分叉。

其实在具体修改的层面上,软分叉和硬分叉本质上是没有区别的,就目前我们看到的已经发生的分叉它们基本都是修改或试图修改交易数据结构或区块数据结构。

从表面看软分叉和硬分叉主要的区别就是新旧节点是否相互兼容。但其实这么说也不是很准确,更正确的说法是:硬分叉的定义是扩宽共识规则,允许做之前禁止的事情,以前无效的交易/区块在硬分叉后会变成有效的。

软分叉是收紧共识规则,禁止之前允许做的事情,以前有效的交易在软分叉后就无效了。这就更好理解为什么硬分叉会有人拒绝。

需要注意一点,软分叉为了做到新节点和旧节点生产的数据完全兼容,是非常困难的,因为本质上是不一样的数据结构大家还要相互认可,而一旦出现有节点拒绝验证不一样的交易或区块,软分叉就会变成硬分叉。

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

二、重放攻击

通过上部分我们了解了基本的软硬分叉的概念,那对于普通人来说,如果比特币真的分叉,会存在什么风险呢?最大的风险应该就是“重放攻击“。

什么是“重放攻击”呢?重放也被称为重播、回放,也就是说某个消息或数据重新发送给接收方一次。而重放攻击(Replay Attacks),是计算机世界黑客常用的攻击方式之一,如果接收方在多次接收数据但无法进行有效识别,就会存在重放漏洞。

区块链历史上最著名的重放攻击事件,是在2016年7月以太坊进行硬分叉时发生的事情。以太坊分叉出现了两条链,这两条链上的交易数据结构是一样的,没有什么变化,因此一笔交易在两条链上都是有效的并可以被接受,反之也成立。

使用者在其中一条链上发起的交易,就可以到另一条链上去重新广播,也可能得到确认,从而获得额外的币,具体来说就是第一条链上A给B转100个币,那么在第二条链上也会出现给B转过去100个币的交易。如果你转出的地址不是自己的,那些比特币可能就再也拿不回来了。

当时以太坊的交易平台和用户因为基本都是第一次遇到这样的事情,经验和准备都不足,没有提前做好两条链的分离,因此被许多人利用这个漏洞,造成很大的损失。

那要如何防止重放攻击呢?最简单的方法就是在分叉结束前,不要进行交易,等分叉尘埃落定再说,安全最重要嘛。

文字版的内容就到这里了,想看完整版,点击下面链接进入课程,每天五分钟,跟华楠小姐姐学习区块链~

课程链接:http://www.chaindd.com/askcourse/3119258%20

购买后如何听课

1.下载链得得App,打开“发现”页面,点击《精通区块链》

2.下载链得得App,在首页添加得得FM频道,即可查看课程分享和更多精彩内容

3.保存下方二维码,打开微信扫码,关注链得得微信公众号(ChainDD),进入课程