首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一般的区块链小白都不知道:区块链的扩容与分叉

学 区 块 链

来 听 话 F M

区块链本身就是一个具有争议性的话题,区块链的分叉和扩容也让很多人产生了分歧,今天就带大家了解一下什么是区块链分叉?什么又是区块链的扩容?

语音解读区块链:

以下是中文笔记

什么是区块链分叉?

在中心化系统中升级软件十分简单,在应用商店直接点击“升级”即可。但是在区块链等去中心化系统中,“升级”并不是那么简单,甚至可能一言不合造成区块链分叉。

数字货币网络中,负责记录数字货币交易信息的矿工,每隔一段时间会将这段时间内的交易信息打包成一个区块,然后放在链上,已获得一定数量的货币奖励,这就是挖矿的过程。

简单说,分叉就是指区块链在进行“升级”时发生了意见分歧,从而导致区块链分叉。因为没有中心化机构,数字资产每次代码升级都需要获得社区的一致认可,如果社区无法达成一致,区块链很可能形成分叉。

假设一种情况,你和我两个人同时在挖矿,争夺下一个区块的记账权利。经过漫长的计算,我们同时算出了结果,都开始打包这个区块,由于我们都拥有记账权,这样一来分叉就出现了。我们两个打包好的区块,是平行的关系,都是基于上一个区块算出的结果,都是正确的。

以比特币为例,2017年7月,为了解决比特币区块链拥堵问题,一些比特币爱好者提出了bitcoin cash分叉方案,导致比特币区块链一分为二。

根据分叉后的区块链是否能兼容旧区块链,分叉又分为“硬分叉”和“软分叉”。

硬分叉,是指当比特币代码发生改变后,旧节点拒绝接受由新节点创造的区块。不符合原规则的区块将被忽略,矿工会按照原规则,在他们最后验证的区块之后创建新的区块。而软分叉是指旧的节点并不会意识到比特币代码会发生改变,并继续接受由新节点创造的区块。矿工们可能会在他们完全没有理解,或者验证过的区块上进行工作。

软分叉和硬分叉都"向后兼容",这样才能保证新节点可以从头验证区块链。向后兼容是指新软件接受由旧软件所产生的数据或者代码,比如说Windows 10可以运行Windows XP的应用。而软分叉还可以"向前兼容"。向前兼容是指旧软件可以接受由新软件所产生的数据以及代码,打个比方,如果你用Word 2013保存的文档,假如仍然可以用Word 2011打开,就是一种“向前兼容”。

这就是区块链的分叉了,那区块链的扩容又是什么呢?

其实最早中本聪创建比特币时,是没有区块大小限制的,但由于一个数据结构的限制,区块最大能达到33M,而不是现在的1M。但最早的时候比特币很便宜,只要花很少的钱,比如几美元,就可以发出非常多的垃圾交易,恶意地把区块数据撑大,撑满你的硬盘。所以中本聪加了一个1M区块限制(1M大概能容纳1000条左右的交易信息),中本聪加的这个限制是临时的,并给出了未来扩容的安排。更大的区块限制可以分阶段进行,比如:

当 区块高度(blocknumber) > 115000 时,

区块上限(maxblocksize)=更大的限制。

这段代码可以提早很多写在某个版本中,这样到指定区块高度,这段代码起作用时,不含有此代码的旧版本早就被淘汰了。当我们接近截止区块高度时,我将在旧版本上显示一个告警,以保证旧版本用户知道他们必须升级了,但后来在区块接近满时,却没有按中本聪的计划走下去,扩容到更大的区块,要解释清楚为什么会发生这样的情况,我们得先解释一下比特币开发团队是怎么回事:

最早的比特币是由中本聪开发的,中本聪隐退后,比特币的开发维护任务由中本聪传给了加文(Gavin),加文(Gavin)觉得自己独裁不好,又把代码权限分权给了其它4名开发,后来又有其它开发加入,发展成现在的Core开发团队。 但后来,Core开发团队内部关于要不要按中本聪的计划,移走1M限制,产生了分歧。多数开发人员觉得不应该移除这个限制,部分觉得应该移除这个限制。 矛盾激化的结果,就是Gavin,Jeff等支持移除1M限制的开发人员,被赶出Core团队,被删除了代码权限。 然后这些开发人员,包括一些新的,支持移除1M限制的开发人员,建立了XT、Classic、BU等开发团队。 我们说的这些开发团队的关系,很类似于一个国家里多政党的关系,互相竞争,并且说服用户选举他们作为执政党。也就是说就比特币的扩容,其实很早之前,比特币的核心开发团队就已经在争议了,也经过了比较激烈的人事斗争。我们理解其实这些核心开发者也是为了比特币的发展好。

对于普通人来说,如果比特币真的分叉,最大的风险就是“重放攻击”。

什么是“重放攻击”呢?这个事情是在2016年7月以太坊进行硬分叉的过程中发生的事情,当时交易平台和用户因为基本都是第一次遇到这样的事情,经验和准备都不足,因而受损失不少。举个例子,如果比特币分裂为一种或多种比特币,我们姑且先把它叫比特币1/比特币2/比特币3等,用户账户内同时存在这3种对应数量的所有分裂的比特币,每条链上的地址和私钥生产算法相同,交易格式也完全相同,导致在其中一条链上的交易在另一条链上很可能是完全合法的。所以使用者在其中一条链上发起的交易,就可以到另一条链上去重新广播,也可能得到确认。这就是“重放攻击”。简单来说,在你转账比特币1的时候,你的比特币2/比特币3也可能同时被转走,如果你转出的地址不是自己的,那些比特币2/比特币3可能就再也拿不回来了。

对于用户来说,要防止重放攻击,其实也很简单。你该怎么做呢?

方法一:在分叉尘埃落定之前,不要转账比特币。在分叉落定之后,可以将比特币分别转到属于自己的两个不同的地址,直到两个资产彻底分离完成为止,之后再进行比特币转账。但是这个方法可能需要消耗大量的时间和手续费。

方法二:将自己的比特币放进靠谱的钱包或交易平台。这些有技术实力的平台会自发的运营去帮你处理好分叉过程中的可能会遇到的各种问题。如果将自己的比特币存在仅支持分叉后部分比特币的钱包里,将可能面临分叉后产生的其他部分比特币无法使用的损失。

这场区块链的分叉大戏还未结束,扩容挑战也在继续,下一期我们将讲到《什么是公有链、私有链、联盟链?》

——听话FM《区块链小白到高手的秘籍》

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180313G1CVP800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券