精华内容
下载资源
问答
  • 4 月 15 日(星期四)下午 6:12 分左右,柏林硬分叉在主网的 12244000 区块上正式激活。近一周以太坊全网算力均值为502.37 TH/s,平均出块时间13秒。目前已有74.6%的客户端准备就绪。 此次柏林硬分叉主要优化以太坊...

    整理 | 晋兆雨 

    出品 | 区块链大本营 (ID:blockchain_camp)

    头图 | 付费下载于视觉中国  

    继 “缪尔冰川” 升级之后,以太坊再次实施了 “柏林” 升级。

     

    4 月 15 日(星期四)下午 6:12 分左右,柏林硬分叉在主网的 12244000 区块上正式激活。近一周以太坊全网算力均值为502.37 TH/s,平均出块时间13秒。目前已有74.6%的客户端准备就绪。

     

    此次柏林硬分叉主要优化以太坊的主网性能、优化合约,涵盖 Gas 效率、以太坊虚拟机 (EVM) 读取代码方式的更新,以及防止拒绝服务 (DDOS) 攻击等。本次升级将纳入4个新的EIP改进提案:

     

    1. EIP-2565:变更 求模/求幂 运算的 Gas 开销。EIP-2565 提案是对此前的 EIP-198(大数求模求幂运算)的重定价;一开始,EIP-198 为求模求幂运算引入了一个预编译模块,该模块使我们能引入许多需要求模求幂运算的密码学算法,比如 RSA 签名的验证。EIP-2565 降低了该模块的 Gas 开销,使之与执行其它操作的开销相持平。

    2. EIP-2718:标准化的事务信封。该 EIP 引入了一种新的事务类型(transaction type),其本身可以作为一种信封,以更加便利地启用对多种事务类型的支持。

    3. EIP-2929:提高状态访问操作码的 Gas 开销。该 EIP 提高了一笔事务在首次调用 SLOAD、*CALL、BALANCE、EXT* 以及 SELFDESTRUCT 时候的 Gas 消耗量。

    4. EIP-2930:可选的访问列表。该提案背后的理念是:修正由 EIP-2929 对现有合约的破坏作用,并缓解由 EIP-2929 带来的 Gas 消耗量增大问题。

     

    硬分叉到底是什么

     

    一月份才进行了“缪尔冰川” 升级,“柏林”升级又开始了,升级、硬分叉到底是什么?

     

    任何系统都需要“升级”,区块链也一样。在中心化系统中升级软件十分简单,只需要在开发团队上传最新软件,用户下载即可,但是在区块链系统中,“升级”并不是那么简单。因为没有中心化机构,比特币等数字资产的每次代码升级都需要获得社区的一致认可,如果社区无法达成一致,区块链就很可能形成“分叉”。

     

    分叉即区块链发生永久性分歧,在新共识规则发布后,未升级的节点拒绝验证已经升级的节点生产出的区块,已经升级的节点虽然可以验证未升级节点生产出的区块,但是也会按照新的规则行事。因此如果大家各自延续自己认为正确的链,就会分成两条链。

     

    以太坊的第一次分叉其实是受到黑客攻击后的一个解决方法。2016年黑客利用代码漏洞攻击了以太坊上的众筹项目——The DAO,不停地从The DAO 资金池里分离资产。为了避免投资者的资产被转移,以太坊直接选择了硬分叉。分叉之后,形成了两条链,一条为原链(以太坊经典,ETC),一条为新的分叉链(ETH),各自代表不同的社区共识以及价值观。

     

    迭代升级,不断完善

     

    虽然第一次是不得已而为之,但是之后的硬分叉,以太坊都是“蓄谋已久”的。与其坐等他人攻击,不如主动修复不足。自2016年以后,以太坊就多次通过硬分叉的方式进行全系统升级,2019年,被称为“君士坦丁堡”和“圣彼得堡”的两种升级都是以“硬分叉”的方式来实现的。

     

    2020年 12 月 ,以太坊进行了伊斯坦布尔硬分叉升级。时隔不到一月,以太坊又进行了“缪尔升级”?间隔如此之短,升级到底为那般?

     

    根本原因是,以太坊难度炸弹已经启动。

     

    “以太坊难度炸弹” 指的是以太坊所用的工作量证明算法难度调整机制中的一部分,本意是通过通过调整挖出新块的挖矿难度使得网络的出块时间趋于稳定,如果出块时间太短(短于 10 秒)或者太长(长于 20 秒),则该机制会相应提高或降低挖矿难度。

     

    难度炸弹为挖矿难度加入了一个只随区块高度增加而增加、不随出块时间改变而改变的值。该值每 10 万个区块增加一次,永不下降。

     

    一开始难度炸弹增加的难度量很小,因此对出块时间没有明显影响;而且这部分难度量的上升也很缓慢,但它的增长接近指数型增长。所以到了一定时机,它会使网络难度突然增加,出块速度骤减。

     

    2019年,难度炸弹在区块高度达到 860 万时开始显现其影响,平均出块时间显著上升;到了 890 万区块高度时,出块时间上升到 14.3 秒。

     

    ”到了 2020 年 2 月,出块时间可能会上升到 30 秒。这会让整条链变得很慢而且难以使用。”这就是所谓的 “冰河期(Ice Age)”。

     

    解决冰河期问题的一个方法就是硬分叉,来看一下近几年以太坊的挖矿难度变化。

     

    图中显示有两次难度出现明显的指数级增长之后直线下落,这是因为以太坊难度炸弹启动之后难度炸弹炸了,重新降低了挖块难度,这一切就是伴随着硬分叉完成的。

     

    单独进行一次硬分叉升级以推迟难度炸弹,这就是“缪尔冰川”硬分叉的来源。

     

    缪尔冰川能将“难度炸弹”推迟 400 万个区块。随着时间的推迟,这枚难度炸弹预计在未来几年内都不会再次“引爆”。升级取名“缪尔冰川”,也是为了纪念地质学家缪尔,他是准确提出冰川活动概念的第一位学者。

     

    无论如何每次硬分叉升级都代表以太坊的一次优化和完善,据说“柏林升级”将触发以太坊网络功能的重大变化,对此你怎么看?欢迎评论区与我们分享。

    今晚(2021.4.16)19:30,软考工程师备考上分攻略,提升你的复习战斗技巧!
    立即扫码进群,预约直播,拿超级福利大礼包!
    
    
    

    更多阅读推荐

    展开全文
  • 今天上午,以太坊官方发布公告称,将在区块高度 9200000(北京时间 2020 年 1 月 1 日)进行硬分叉升级。本次升级被命名为“缪尔冰川(Muir Glacier)”,具体日期可能会因出块时间以及时区而改变。 为何又要升级?...
  • 解读区块链,软分叉和硬分叉

    千次阅读 2018-04-02 23:35:14
    解读区块链,软分叉和硬分叉 最近在交流群和论坛中经常听到软分叉和硬分叉,起初对这个概念只是简单认为是区块链软件升级后新旧协议造成新旧节点对新的区块认可时的一种分歧,软分叉一般不会产生永久性分叉的链,...
    解读区块链,软分叉和硬分叉 
    最近在交流群和论坛中经常听到软分叉和硬分叉,起初对这个概念只是简单认为是区块链软件升级后新旧协议造成新旧节点对新的区块认可时的一种分歧,软分叉一般不会产生永久性分叉的链,而硬分叉则会产生两条链,如果大多数节点升级到新版本,则旧链存活就看算力的大小的。
    查询了些资料,再次明确下软硬分叉的概念。
    软硬分叉涉及的问题是去中心化节点软件、协议、版本升级的问题,所有在区块链中运行的节点有一样的软件,遵守一样的共识机制、维护同一条链,但是一旦软件、协议、版本升级后,所有节点不可能同一时间都更新到同一版本,这就造成了一部分节点拥有新的共识协议机制,这时候会网络中出现新、老、两种节点。那么在区块生成的时候,新节点产生的区块,老节点就会认为合法或者不合法,老节点产生的区块,新节点也会认为合法或者不合法。在区块链中一直有一个51%算力的临界点,那么我们这里认为新节点的算力是大于50%的。
    这里写图片描述
    首先再对软硬分叉做一个解释:
    软分叉:官方定义: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.(当新共识规则发布后,没有升级的节点会因为不知道新共识规则下,而生产不合法的区块,就会产生临时性分叉。)说实话官方定义感觉有点模糊。
    当整个区块链网络中,系统版本或协议升级后,且和老版本协议不兼容,那么升级后的新节点就无法接受老节点挖出来的全部或者部分区块,因为新节点的算力较大,所以老的节点挖出来的区块没有机会得到认可,老节点产生的区块最终会被认为是短链而被放弃,新老节点始终还是在同一条链上工作,这种情况称作软分叉。新节点要求比老节点严格多。
    硬分叉:官方定义:A permanent divergence in the the block chain, commonly occurs when non-upgraded nodes can’t validate blocks created by upgraded nodes that follow newer consensus rules.(区块链发生永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点生产的区块,通常硬分叉就会发生。)
    当整个区块链网络中,系统版本或协议升级后,且和老版本协议不兼容,未升级的老节点无法接受新节点挖出的全部或者部分区块,导致出现了两条链,假设新节点的算力较大,新节点们在维护一条链,老节点也始终在维护一条他认可的链,如果这时候大多数的节点都开始升级为新版本,那么老节点维护的链能不能存活就看算力有多少了,这就称作硬分叉。
    很明显,最粗浅的理解就是软分叉还是一条链,硬分叉就会分成两条链。
    以太坊和比特币中都出现过分叉的问题,针对现实应用,软分叉和硬分叉在实际应用中有什么优缺点:
    软分叉只有一条链(最简单明了),开始不要求区块链中所有节点统一时间升级,可以允许逐步升级,并且在软分叉过程中不影响系统的稳定性和有效性。但是软分叉又有个前提就是老的未升级节点要能接受新节点产生的区块,这就要求系统要向前兼容(forward compatible,这个和一般我们在用的软件向下兼容是相反的方式,要求新出现的区块对老系统留一个余地,确保兼容),其实让老节点承认新的区块,实际是一种欺骗,让老节点没法察觉实际上发生的变化,这也违背了单点完整性验证。
    以太坊和比特币中都曾出现过软硬分叉的事件:
    The DAO在2016年黑客通过splitDAO函数递归发送模式上的漏洞曾经窃取了360万个以太币,splitDAO函数在执行时最后才修改用户的结余和交易额,如果能够在返回splitDAO处理运算之前,进行多次以太币的操作调用,那么多次递归来持续转移以太币到别的账户。(具体代码分析查看邹均大神的区块链技术指南P210或者网上http://blog.csdn.net/sportshark/article/details/51820008),由于代码漏洞发布后无法修改,DAO求助以太坊,以太坊最初采用软分叉的方式,锁定the DAO账号,不允许发生交易,冻结以太币,这里可以发现软分叉实际上是在以太坊软件上加了约束规则,使得黑客的以太币无法交易,这样不影响以太坊其余的正常交易,不要回滚区块链的数据(回滚影响之大难以想象)。在实施软分叉方案时,在以太坊的每个交易上都会检查DAO相关的地址,如果和DAO有关联就拒绝这个交易,从而锁定所有资金,但是这个方案没有收取交易GAS费用,攻击者一旦以零成本发起大量无效交易,那么这个网络就面临瘫痪,最终各个节点回退了软件版本,软分叉失败,随后实施了硬分叉,下图:
    这里写图片描述
    硬分叉方案在1880000区块把DAO的合约归在另外一个L列表中,在1920000区块,设计一个非常规的状态变更,强行把L所有地址余额转到一个退款地址中,这样众筹的DAO币就可以换回以太币,最终硬分叉成功,上图中1920000区块后面,左边为区块编号,右边为hash值,直线代表新链,节点升级后都在新链上记账,没有升级的节点在旧链记账。
    这里写图片描述
    现在以太坊上为了区分新链-ETH,旧链ETC,两个链除了DAO涉及部分软件代码相同,历史账号分叉前相同,地址和私钥也相同,故都为合法。(当然还有重放攻击,同样参考邹均大神P216)。
    同样在比特币中,出现过软分叉(http://ns2.btckan.com/news/topic/29027 谈国鹏,这位大神还有视频讲解,youku和巴比特都有,可以搜索下。这个文章中写的很详细明,笔者就直接拷贝过来了。)P2SH软分叉升级,P2SH包含在BIP16中,通过软分叉进行升级比特币系统,让比特币在支持P2PKH基础上,再支持一种叫P2SH的标准交易类型。在此之前,比特币已经支持如下的脚本:”OP_HASH160 [20-byte-hash-value] OP_EQUAL”。要花费这样的脚本你只需要把hash值的原数据(preimage)推到(push data)栈上即可。
    P2SH是对以上条件的一种更严格限制,在P2SH模式(新节点)下,你不但需要提供该hash值的原数据,还要保证:
    该原数据是一个可执行的脚本;
    该脚本执行结果返回:true;
    该脚本中不能含有”push data”的操作;
    以及其它的一些限制;
    当支持P2SH的新节点被部署时,新节点的算力>50%(P2SH升级时要求>=55%),系统将处于下面的运行状态中:P2SH交易被转发到老节点时,会被老节点认定为非标准交易(有了新的,或不能理解的OP_CODE),老节点不接受、不打包、不转发;当包含有P2SH交易的区块广播到老节点时,老节点接受区块,并按原有规则验证该P2SH交易,结果通过,因为老的规则只要验证原数据的hash是否相等(显然是相等的);老的节点创建了一个原数据为:123456的脚本输出,并花费该输出。老节点们能够接受。但是广播到新节点时,按新规则(必须是脚本…)则不通过,新节点拒绝接受,认定为非法,不会打包该交易。即使该交易被老节点打包,也会被新节点拒绝。因为新节点控制多数算力,这样的交易将永远无法生效;系统同时维护一条链。
    P2SH的升级细节:
    要求支持P2SH的矿工在其coinbase交易里包含“/P2SH/” 字样;
    2012年2月1日检查之前1个星期内的所有区块(约1000个),如果超过550个包含(约55%)则激活P2SH。
    SegWit软分叉升级
    SegWit主要包含在BIP141-144中,通过软分叉进行升级比特币系统,让比特币支持一系列SegWit的功能集。关于隔离见证的具体内容详见《谈谈区块连(21):比特币之隔离见证》。
    通过软分叉升级需要让老的节点认定新的交易为非标准交易,但同时是合法的。隔离见证是如何做到的呢?答案是:anyone-can-spend的输出交易。
    anyone-can-spend:
    下面是一个anyone-can-spend的例子:
    scriptPubKey: (empty)
    要花费这样的输出,你只需要提供这样的签名脚本:
    scriptSig: OP_TRUE
    隔离见证中将脚本版本(script versioning)和anyone-can-spend完美结合。一个标准的P2WPKH的输出如下:
    scriptPubKey: 0 <20-byte-key-hash> (0x0014{20-byte-key-hash})
    这开头的0在新节点中将是脚本的版本号,在老节点中是一个anyone-can-spend的输出。
    当支持SegWit的新节点被部署时,新节点的算力>50%(SegWit升级时要求>=95%),系统将处于下面的运行状态中:
    SegWit交易被转发到老节点时,会被老节点认定为非标准交易(anyone-can-spend),老节点不接受、不打包、不转发;
    当包含有SegWit交易的区块广播到老节点时,老节点接受区块,并按原有规则验证该SegWit交易,结果通过(因为它是谁都可以花费的);
    老的节点尝试花费SegWit交易,因为它是谁都可以花费的。老节点们能够接受。但是广播到新节点时,按新规则(隔离见证的验证规则)则不通过,新节点拒绝接受,认定为非法,不会打包该交易。即使该交易被老节点打包,也会被新节点拒绝。因为新节点控制多数算力,这样的交易将永远无法生效;
    系统同时维护一条链。
    SegWit的升级细节:
    升级到core 0.13.1及以上的支持SegWit;
    2017年11月如果95%算力支持,则激活SegWit。

    参考网络和区块链技术指南上的讲解,分析了软分叉和硬分叉,期间也看到另外一篇文章,http://www.8btc.com/tan90d97有兴趣的读者可以了解下,这个具体对乱硬分叉交易数据结构作了分析。 

    转载来自:https://blog.csdn.net/sxjinmingjie/article/details/77621311

    展开全文
  • 我们知道,区块链分叉分为两种:硬分叉和软分叉。在解释“硬分叉”和“软分叉”这两个概念之前,先解释“向前兼容”和“向后兼容”这两个概念 向前兼容和向后兼容 向前兼容的英文为:Forwards Compatibility,...

    我们知道,区块链分叉分为两种:硬分叉软分叉。在解释“硬分叉”和“软分叉”这两个概念之前,先解释“向前兼容”和“向后兼容”这两个概念

    向前兼容和向后兼容

    向前兼容的英文为:Forwards Compatibility,Forward有“将来”的含义。因此向前兼容就是指:以前的版本支持现在版本生成的数据,现在的版本支持以后的版本数据。比如你的CD盘可以放在CD光驱播放,也可以放在DVD光驱播放。
    向后兼容的英文为:Backwards Compatibility,Backward有“回头”的意思。所以向后兼容就是指现在的版本可以支持以前的版本数据。比如你的PC的DVD光驱也可以播放CD盘。

    新节点和旧节点

    区块链升级过程中,一部分节点会进行区块链代码升级,本文这里暂称为新节点。一部分节点不愿意进行区块链代码升级,继续运行原有的旧版本的区块链代码,本文这里暂称为旧节点。

    硬分叉和软分叉

    硬分叉:旧节点不能识别新节点产生的区块(旧节点没有向前兼容新节点产生的区块),导致把一条链直接分成了两条完全不同的链,一条是旧链(运行原有的旧版本的区块链代码,由旧节点运行),一条是新链(运行升级后的新版本的区块链代码,由新节点运行)。
    软分叉:新旧节点并存,但是不会影响整个系统的稳定性和有效性。旧节点会兼容新节点(旧节点是向前兼容新节点产生的区块),只是新节点不兼容旧节点而已(即新节点不向后兼容旧节点产生的区块),二者依然可以共存在一条链上

    这里有一篇介绍硬分叉和软分叉的好文:https://www.8btc.com/article/105773,虽然时间比较早,但写得好。看这篇文章最好懂一点技术会更容易看懂。
    敲黑板划重点,软分叉和硬分叉主要区别是:
    新旧节点相互兼容性。软分叉修改数据结构后,新节点生产的交易和区块能够被旧节点验证并接受,硬分叉就不能

    补充一下我个人的一些理解:
    因为旧节点(运行原来升级前的区块链代码的节点)产生的区块不一定能被新节点(运行升级后的区块链代码的节点)验证通过(这是因为新节点的验证条件比旧节点更严格),导致软分叉可能会造成暂时行的链分叉,即旧节点上会产生2条链:
    a) 一条和新节点上的链一模一样,该链上的区块既被旧节点验证通过,又被新节点验证通过
    b) 另一条是包含仅被其它旧节点验证通过,但不被新节点验证通过的区块组成的链

    但由于新节点产生的区块一定能旧节点被验证通过,所以旧节点上和新节点不同的那一条分叉链最终一定会被新节点上的链(即最长的链所取代),所以最终还是会保持一条链发展下去。

    硬分叉的例子


    a) 比特币分叉:一些人开始觉得比特币的区块容量太小,总出现拥堵,于是这些人要求对比特币的区块大小进行升级扩容。有人支持就有人反对,这种对比特币发展的分歧导致了比特币首次硬分叉,旧链上的币仍然是比特币BTC(区块容量达到了8M),新链上的币是BCH(Bitcoin Cash,比特币现金。区块容量达到了8M),有兴趣的同学参考这篇文章: https://new.qq.com/omn/20190808/20190808A0J3NF00.html

    顺便说一下,BCH和BTC最大的区别只是在于区块容量的参数不同,两者分叉前的交易都是一样的,只是交易的币种不一样。可以理解为BCH那条链把分叉前的区块里的交易按照原来的方式重新运行了一遍,只是把币种由原来的BTC换成了BCH。这个可以从区块浏览器里去看一下:

    BTC链第30000个区块的信息:
    https://btc.com/000000000000000082ccf8f1557c5d40b21edabb18d2d691cfbf87118bac7254
    在这里插入图片描述

    BCH链第100个区块的信息:
    https://bch.btc.com/000000000000000082ccf8f1557c5d40b21edabb18d2d691cfbf87118bac7254
    在这里插入图片描述
    可以看出,BTC链第30000个区块的交易和BTC链第300000个区块的交易是一样的,上面的第一笔交易应该是矿工挖出区块的奖励。但矿工地址不一样,这里不清楚是不是BTC和BCH的地址计算方法不一样。

    b) 以太坊分叉:The DAO项目是区块链物联网公司Slock.it发起的一个众筹项目,于2016年5月正式发布,截止到当年6月,The DAO项目募集资金超过1.6亿美元。没过多久,The DAO项目就被黑客盯上了,因为智能合约上的巨大漏洞,导致The DAO项目被转移了市值五千万美元的以太币。
    为了挽回众多投资者的资产并停止恐慌,以太坊创始人V神(Vitalik Buterin)最后提出硬分叉的设想,并最终通过社区的多数投票表决在以太坊第1920000区块完成了硬分叉,回滚了包括被黑客占有的所有以太币。即使以太坊硬分叉成了两条链,依然有部分信仰着区块链不可篡改特性的人留在以太经典这条原链上

    参考文章

    https://blog.csdn.net/badbad_boy/article/details/5815811
    https://www.jianshu.com/p/26ed15380bcf
    https://www.zhihu.com/question/35970198

    展开全文
  • 硬分叉的股市-以太经典(ETC):以太坊(ETH)和以太经典(ETC)是硬分叉的典型案例。The DAO计划基于以太坊职能合约建立一个众筹平台,但被黑客利用智能合约的漏洞转移了市值五千万美元的以太币,为了挽回投资者...
  • 第二种情况下的分叉可以归结为永久性的,虽然升级新协议并不能带来更好的区块奖励,但协议之所以是新的,可能是出于其他方面的考量,所以升级新协议之后的节点,也不会全都降回旧协议,所以就权当认为是硬分叉吧。...

    关注过比特币的人多多少少都知道区块链这个名词,毕竟区块链(BlockChain)是支撑比特币的底层技术,顾名思义,区块链就是一条由一个个区块串联而成的链,如下图所示,每个小框框表示一个区块,区块里包含若干份交易;每个小框框里的数字表示该区块被打包生成的顺序。

    除了创世区块(第一个区块),每个区块都包含上一个区块的哈希值。也就是说,区块1的哈希值会存入区块2里面,区块2的哈希值也会存入区块3里边.……而哈希是种什么东西呢?哈希本质是一个函数,可以简单认为是一种输入不同的数据,会得到不同结果的函数(严格来讲不是如此的,但是这里不用太深究)。

    比特币的这种机制有个非常好的特性:假如一个坏人,恶意去篡改了区块2里的交易,那么区块2就发生变化了,那么区块2的哈希值就会发生变化,区块2的哈希值发生变化了,那么区块3也会跟着发生变化,区块3发生变化,那区块4也会跟着改变...牵一发而动全身,像多米诺骨牌那样,如果你没有足够多的算力的话,想要篡改比特币系统里的数据是不可能的。

    区块链有一种与生俱来的优势:难以篡改,各行各业都需要这样一个数据难以篡改的数据库,所以说,区块链是一种很有前景的技术的。

    下面正式阐述区块链分叉的知识。

    分叉就是指,在某一时刻,链上同时出现了两个都满足要求的不同的区块,如下图:

    这两个7号区块都是合法的,只是因为很巧合刚好在同一时间上挖出两个不同的区块,那么矿工们,都相信这两个区块是合法的,有些矿工会选择在第一个7号区块后继续挖,也有些矿工则是会选择在第二个7号区块后继续挖。随着时间的推移,这两个方向上的链的长度会变得不一样,长的那个就是最终存活的那个,短的那个就会被丢弃,最终仍然只剩下一条链。

     那么什么是软分叉、什么是硬分叉呢?

    所谓软分叉和硬分叉,是软还是硬,看的是分叉的时间是暂时的,还是永久的。

    像上边举的例子,链上只是暂时出现分叉,过了一段时间后,就会回归为一条链了,这种分叉叫做软分叉。

    那么有没有永久性的分叉呢?有!这种永久性的分叉就是硬分叉,而且往往是由于升级底层协议造成的

    但是升级底层协议造成的分叉,并不一定是硬分叉,也可能是软分叉

    区块链(公有链)作为一种去中心化的数据库,需要由许许多多的全节点进行维护,如果底层协议发布新的版本了,所有的矿工都愿意跟随升级,那就不会分叉了。可是现实情况可能是,一部分结点选择了升级协议,一部分结点并不同意升级,那么就会陷入一个很有趣的局面。

    我把升级前、后的协议分成以下4种情况:

    升级后的新协议,认可旧协议下挖出来的区块;旧协议也认可新协议下挖出的区块

    (新认可旧,旧认可新)

    升级后的新协议,认可旧协议下挖出来的区块;旧协议不认可新协议下挖出的区块

    (新认可旧,旧不认可新)

    升级后的新协议,不认可新协议发布之后旧协议再挖出的结点;旧协议也不认可新协议下挖出来的区块

    (新不认可旧,旧也不认可新)

    升级后的新协议,不认可新协议发布之后旧协议再挖出的结点;但旧协议认可新协议下挖出来的区块

    (新不认可旧,旧认可新)
     

     

    先来看第①种情况:升级后的新协议,认可旧协议下挖出来的区块;旧协议也认可新协议下挖出的区块(新、旧互相认可)

    这种情况不会造成分叉,但是区块链里的各个区块是新、旧混杂的,不统一而已。

    第②种情况:升级后的新协议,认可旧协议下挖出来的区块;旧协议不认可新协议下挖出的区块(新认可旧,旧不认可新)

    由于旧协议不认可新协议下挖出的区块,所以红色区块永远不会出现在有绿色区块的链上。

    由于升级后的新协议认可旧协议下挖出来的区块,所以新协议也会在旧协议挖出的区块后边跟着挖,如下图,其中对于新、旧协议来说,第一个分叉的3个绿色区块的那个分支都是无效的,因为新协议认可底下两条链,旧协议只认可最底下那条链,而最上边的那条链均不被新、旧的认可,这意味着那3个绿色的区块白挖了,。

    由于新协议可以在旧协议挖出的区块后继续挖,挖出的区块所在的链的长度,比只跟在绿色的后边挖要长,因此升级新协议,挖出的区块可能并没有得到区块奖励,因此,这种情况下节点升级新协议的动力不大。

    第二种情况下的分叉可以归结为永久性的,虽然升级新协议并不能带来更好的区块奖励,但协议之所以是新的,可能是出于其他方面的考量,所以升级新协议之后的节点,也不会全都降回旧协议,所以就权当认为是硬分叉吧。

    第③种情况:升级后的新协议,不认可新协议发布之后旧协议再挖出的结点;旧协议也不认可新协议下挖出来的区块。(新不认可旧,旧也不认可新)

    这种情况和第②种情况差不多,但分析起来更简单。新节点和旧节点,互相认为对方的链是无效的,各挖各的,这种分叉是永久性的,属于硬分叉。

    第④种情况:升级后的新协议,不认可新协议发布之后旧协议再挖出的结点;但旧协议认可新协议下挖出来的区块。(新不认可旧,旧认可新)

    这种情况比较特殊了。

    因为升级后的新协议,不认可新协议发布之后旧协议再挖出的结点,所以,分叉后会先是变成下图这样:

    但是由于旧协议认可新协议下挖出来的区块,所以,红色区块可能会出现在绿色区块的屁股后边,比如下图:

    然而,升级后的新协议并不认可新协议发布之后旧协议再挖出的结点,所以绿色区块永远不会跟在红色区块屁股后边,如下图:

    或者又如下图这样:

    这意味着什么?

    跟在绿色区块后边的红色区块,由于被新协议不认可旧协议,也就是说1,3,4号链是不被新协议认可,而旧协议认可新协议,可以跟在绿色节点的后边,在绿色的链的基础上挖,但由于区块链只认可最长的那条,所以1,3,4号链也是不被旧协议接受的。这样一来,使用旧协议挖出来的红色区块,可能并没有得到区块奖励。受利益的驱动,这些运行着旧协议的节点,会逐步升级为新协议。

    所以这种情况下的分叉,是暂时性的,是软分叉。

     

    以上仅是一人之言,如果文章有错误之处,还请指出多多包涵。

    各位看官对此有任何看法,可以直言。

    展开全文
  • 2. 硬分叉硬分叉,也叫硬分叉改变,是区块链中一个永久分歧。通常在已按照新的共识规则进行了版本升级的节点产生了新区块时,那些未升级节点无法验证这些新区块时产生硬分叉。 名称 兼容方向...
  • 软分叉和硬分叉硬分叉是指当比特币代码发生改变后,旧节点拒绝接受由新节点创造的区块,不符合原则的区块将被忽略。矿工会按照原则在他们最后验证的区块之后创建新的区块;而软分叉是指旧的节点并不会意识到比特币...
  • 硬分叉和软分叉到底怎么区分?

    千次阅读 2018-07-19 12:02:21
    硬分叉和软分叉到底怎么区分? VR视线 百家号17-10-2003:38 我是马克周,一个对数字加密货币和区块链深感兴趣的撰稿人;热衷编程学习和币价技术分析。 你可以在这里找到我 LinkedIn: ...
  • Grin古灵币第二次硬分叉, Tokenview 浏览器查询Grin最新区块 隐私币Grin和 MimbleWimble协议的开发者已经宣布发布Grin和Grin钱包3.0.0。开发人员在Grin论坛上发布的官方公告显示,Grin和Grin钱包3.0.0已经准备就绪,...
  • 什么是硬分叉?什么是软分叉?什么是共识就?  王会森 关注 2017.07.24 19:17* 字数 7203 阅读 72评论 0喜欢 1 01开始吧 不使用术语还能把事情说明白,那就是真明白了。 比特币是大型网络生物的始祖,可以...
  • 什么是软分叉与硬分叉

    千次阅读 2018-07-19 15:25:26
    什么是软分叉与硬分叉? 发布者: 币学院 发表于: 2018-5-10 15:12 来自: BitarkCommunity 1203 0 分享   经常在新闻和论坛里看到某某币将要进行分叉,到底分叉是什么,怎么产生的,有何影响呢? ...
  • “北京时间2019年3月1日凌晨3:52分,ETH完成了君士坦丁堡硬分叉升级。这场从2018年8月份就开始计划的硬分叉,几经波折,但最终是平稳顺利的。 虽然对比其他主流币种轰轰烈烈的硬分叉,ETH这次硬分叉显得过于平淡,...
  • 今天懒区块来跟大家聊一聊区块链中分叉的问题,经常在某某新闻或者其他地方看到XX币进行了分叉分叉到底是什么,有什么影响,为什么要分叉。区块链中的分叉区块链中的分叉就像我们平时走路一样,本来只有一条路的,...
  • 谈谈两个以太坊硬分叉

    千次阅读 2019-03-03 17:40:58
    点击上方“蓝色字”可关注我们!暴走时评:被称为君士坦丁堡和圣彼得堡的两种升级都将实施“硬分叉”升级,为以太坊软件添加与过去版本不兼容的新规则。两者也将在完全相同的区块数量...
  • 以太坊系列 - 以太坊硬分叉和升级足迹 Olympic | 2015 年 5 月 9 日 以太坊区块链于 2015 年7 月正式公开上线。而在这之前的临门一脚是 Olympic——第 9 个也是最后一个开放的测试网,用以进行概念验证(PoC),让...
  • 2 以太坊硬分叉 2.1 介绍 (待完善) 2.2 与 The DAO 相关的硬分叉 1、硬分叉 北京时间 2016年07月20日 晚9:30 左右,随着币网以太坊矿池挖出了第19200个区块,以太坊的硬分叉出现;随后,硬分叉后的第一个区块也...
  • 第0章 引言 比特币是一套软件,对软件代码进行修改升级就经常会涉及到两个概念,一个叫硬分叉,一个叫软分叉。这到底是什么意思呢?社区里最常见的定义说是对共识的修改。但“共识”具体指的是什么,很难理解。我们...
  • 硬分叉:对比特币协议改变后,部分没有升级的节点无法验证已经升级的节点生产的区块,发生永久性分歧,如果新旧节点始终运行,那就会产生两个不同的虚拟币 软分叉:对比特币协议改变后,协议向后兼容,旧节点能被新...
  • 知识点:什么是硬分叉和软分叉

    千次阅读 2018-07-19 12:28:08
    知识点:什么是硬分叉和软分叉 财务论理 百家号01-2019:00 1、比特币为什么会分叉? 因为:要扩容!通俗来讲,就是扩大区块链的容量。比特币的交易都基于区块链中,区块的大小限制了交易的数量和效率,目前...
  • 上一节我们了解了比特币如何达成最终一致性,其中可能发生的区块链分叉通常是自然发生又自然结束的。比特币目前已有100多项改进提案(详细可见https://github.com/bitcoin/bips),可以看到比特币社区开发者一直在...
  • 比特币的硬分叉现象

    2018-08-28 13:46:26
    比特币的硬分叉现象比特币的硬分叉现象是行内人士非常关注的一个问题,那么什么是“硬分叉”呢?比特币分叉和硬分叉首先我们来看看什么是比特币分叉。比特币是一个大量网络节点共同维护的分布式账本,这些节点维护...
  • 比特币是一套软件,对软件代码进行修改升级就经常会涉及到两个概念,一个叫硬分叉,一个叫软分叉。这到底是什么意思呢?社区里最常见的定义说是对共识的修改。但“共识”具体指的是什么,很难理解。我们还是多实际的...
  • 以太坊的硬分叉

    千次阅读 2018-05-22 22:26:11
    1.太坊中的硬分叉是什么? 硬分叉是一种对以太坊底层协议的改变,为了升级系统来建立新的规则。所有的以太坊客户端都需要被升级;不然他们会被困在一条不被兼容且遵循旧协议的老链。区块链系统的去中心化特性使得...
  • 在北京时间4月15日下午18:00左右(具体是以太坊网络区块高度达到#12244000时),以太坊的柏林(Berlin)硬分叉升级将会发生,这次升级将纳入4个新的EIP改进提案,而其中两个...
  • 第一次硬分叉被称为“拜占庭硬分叉”,实施于2017年10月16日的4,370,000区块。拜占庭硬分叉部署了ZK-Snarks,延期了难度炸弹,调整出块奖励由5ETH降低至3ETH (EIP-649) 等总共8项更新。 “大都会”阶段仅仅是以太...
  • “以太坊创始人V神在推特上介绍了以太坊信标链第一个硬分叉(暂定名为“HF1”)升级提案。V神称,HF1添加了轻客户端支持,简化了规范,提高了效率,并引入了惩罚性较小的不活跃惩罚机制。根据文...
  • 比特币的硬分叉和软分叉  红叶本 关注 2017.10.07 22:46* 字数 668 阅读 104评论 1喜欢 0 知乎上的定义 比特币中的软分叉和硬分叉主要指因比特币协议的突发改变而导致的兼容性的问题。比特币协议发生改变,...
  • 硬分叉与软分叉

    千次阅读 2017-03-10 15:58:23
    比特币是一套软件,对软件代码进行修改升级就经常会涉及到两个概念,一个叫硬分叉,一个叫软分叉。这到底是什么意思呢?社区里最常见的定义说是对共识的修改。但“共识”具体指的是什么,很难理解。我们还是多实际的...
  • 1.8.0是EOS.IO开源以来最重要的版本,将奠定EOS.IO今后通过硬分叉升级快速迭代的基调,也会让整个区块链行业重新审视硬分叉升级的重要性。 (孤矢,EOS 原力创始人) 2019 年年初,一些媒体开始报道 EOS.IO 代码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,529
精华内容 2,211
关键字:

硬分叉