最近以太坊团队宣布发布以太坊2.0,正式对EOS宣战,从以太坊发布之初,该团队就宣布将项目的发布分为四个阶段,各个阶段之间以硬分产的方式进行转换。那到底什么是硬分叉,什么是软分叉,它们二者又有什么区别。
一、硬分叉和软分叉
当我们想对平台中涉及到交易的数据结构、生成区块链的格式以及某些新特性等等方面进行升级时,需要考虑是否要兼容到原有的旧代码和架构。
硬分叉指的是,代码发生变化之后,未进行升级的旧节点无法验证已经升级的新节点。
为此不符合原规则的区块会被忽略,使用旧节点的矿工按照原规则继续挖矿,区块链发生永久性的分歧也就是说,如果新规则部署后部分节点未进行升级,区块链将分裂为两条链;就如2016年以太坊为追回The DAO被盗资金而发生的分裂事件。
软分叉则是指旧节点并不会意识到代码的变化,并继续接受或者说验证新节点生成的区块
就如Windows 10亦兼容Windows XP应用,软分叉可实现“向前兼容”,让旧节点也可以接受新节点产生的区块,从而避免区块链分裂这种情况。
看起来软分叉比硬分叉要更牛一些,但在实际的生产环境中,软分叉是更难实现的,仅可在不增加新字段的情况下进行修改。所以要想实现全方面彻底的升级只能使用“向后兼容”的硬分叉。
二、硬分叉的产物ETC
在2016年7月份早些时候进行的以太坊区块链硬分叉旨在将被黑客盗窃的The DAO资金转移到一个由投资者掌控的账户,并让旧的交易记录被历史遗忘。大多数以太坊开发者都参与了这次逆转,交易所、创业公司和该生态系统中的其他成员也参与了。一连几天,该项目恢复了常态。
Ethereum Classic(ETC)是以太坊进行硬分叉后原有旧链,其坚持Ethereum Classic(ETC)作为一个世界网络计算机不能关停、不可改变智能合约的信念,任何的分叉只能是改进平台的漏洞而不能救助失败的合约以及其它的利益。坚信免于审查的平台能够得到每个人的信任。
但是并非所有人都想将旧的交易记录忘记。于是一小部分矿工继续使用原来的区块链,以此作为一种抗议,他们将硬分叉描述为是对The DAO这个废弃项目的抽资行为。于是Ethereum Classic(ETC)就诞生了。
三、分叉中重放保护
为了防止网络进行硬分叉时,有黑客借机进行攻击,因为理论上来说两条链历史交易、地址、私钥以及余额都是相同的,黑客可以利用二条链进行重复交易。
重放保护保护方案通过添加随机数、时间戳,或者流水号等等方法,在两条链间形成保护,让一条链上的事务在另一条链上无效被识别,以确保两条数据共享链保持独立运行状态,并防止两链间出现相互多次识别的情况。
领取专属 10元无门槛券
私享最新 技术干货