Code前端首页关于Code前端联系我们

区块链共识算法:分叉的一般介绍和通俗解释

terry 2年前 (2023-09-27) 阅读数 65 #数据结构与算法

简单说一下区块链

我们一般意识形态中的链就是铁链用铁做的。形象地讲,区块链的也可以这样理解,只不过它不是铁做的,而是由具有一定数据结构的块连接而成。这就是最简单的原型

见下图区块链共识算法:整体介绍及分叉的通俗讲解

共识的通俗解释

所谓共识

  • 共识就是我们都同意条款。某物。例如,我们每天开会讨论话题,或者我们可以评估某种动物是否是猫。如果我们用肉眼看它像一只猫,并且符合猫的特征,那么我们就认为它是一只猫。共识就是规则。

    继续我们的会议示例。参加会议的人通过会议谈论解决问题

    获得

    区块链相比,矿工

    参与挖矿通过某种♾方法m)解决了❀❝方法m)
  • 让自己的账本关注 其他备注 账本保持一致。保持账本一致的更深层次意义是保持链上的区块信息一致。

    为什么需要共识?如果没有必要的话可以吗?当然不是,生活中如果没有共识规则,一切都会变得混乱。区块链不再拥有共识规则。每个音符都各司其职,失去了其一贯的含义。

    这两个例子的对应关系如下:

    • 会人 = 挖掘矿工❙会会见❝方法算法)
    • 谈论解决问题 = 根据其他节点的账本制作自己的账本

    如果你不明白节点的概念,首先将我们理解为,一个节点包含很多字符,矿工就是其中之一。 consensus算法目前,区块链很常见的是,节点是按照其他节点的帐户来保留帐户的,方法是:方法如下:

    • PoW,以比特币(BTC)为代表
      • 缺点:
        • 矿池的出现在一定程度上违背了去中心化的初衷,也使得51%攻击成为可能,影响了其安全性。
        • 存在巨大的算力浪费。看看使用大量电力资源的矿池。随着难度的增加,挖到的东西不足以支付电费
    • PoS,以以太坊(ETH)为代表,从PoW转向PoS
      • 缺点:
        • 破坏者攻击网络的成本很低并且可以与代币竞争
        • 此外,拥有大量代币的节点将有更高的概率获得记账权,从而影响网络共识。由少数富裕账户主导,从而失去公正性
    • 以 EOS 为代表的 DPoS
      • 缺点:
        • 选择固定数量的见证人作为记账候选人,可能不适合完全去中心化的场景。网络节点较少的场景下,所选见证人的代表性不强。
    • PBFT拜占庭容错,常用于联盟链
      • 缺点:
        • 不适合公有链,适合联盟链各概念是-计划感知算法,可以意识到的!这是一个概念,而不是详细的代码级实现。

          PoW

          它的全称是:工作量证明。字面意思就是谁做的工作多,谁对事情的影响力就越大。某种程度上,这与现实生活中多劳多得的理念类似。这个例子会和生活中的例子混合在一起,其他的解释就不再困难了。

          比特币为例,比特币挖矿就是计算匹配某个比特币头值的hh 争夺 记账权。这个过程需要很多计算。简单的理解就是,如果你进行大量的计算(工作量大),你就有很大概率获得记账权,也就是矿工挖的区块会被合并到主链上。

          • 区块头,区块链的区块头。你有盒装午餐。食品盒的第一层形状像动物的头,称为头。第一层装的是米,就是头部装载的东西
          • Hash哈希值,是用数学公式计算出来的值
            • Hash函数:Hashcolumn的值:值通过哈希函数得到
            • 。例如加法公式:1 + 2 = 3,则哈希公式: hash(1,2) = 结果❿的哈希值,饭盒的第一层装满了米饭。所以这里的值就是区块头包含的
            • 记账权,即谁开采了区块♿❓的权利是有效的。

            所以。当很多节点挖矿时,每个人都可以挖出一个区块,然后将其广播给其他节点。然后每个节点将根据谁先开采该块来确认该块。内置于链中。

            与现实生活相比,在数学竞赛中,参数设定者就相当于矿工。对于一道题,谁先解决,谁就公布计算过程和答案。它不是由评委来评判,而是由参与者验证。当没有问题时,问题将被宣布为已结束。求解器等相关信息记录在书籍/数据库/网络中。然后继续下一个问题。

            回到比特币挖矿:

            • 问题是计算正确的哈希值
              • 计算哈希值系数变得越来越难计算需要大量的电力资源和大量
            • 计算完成后,告诉其他节点
            • 节点收到消息后,停止手头的计算工作
            • 节点开始验证信息信息有效,当前区块被挖矿,每个节点再次开始挖掘下一个节点。
            • 信息无效,各节点继续自己的计算工作
          • 成功挖出有效区块的节点获得奖励,比特币奖励

          同时解决问题怎么办? ---①答案见下一章。 区块链's Fork

          区块链's Fork

          注意,私有节点不在讨论范围内,所有节点均基于公共节点。分叉的情况是:

          • 硬分叉
            • 发生时,最终的结果必须分裂成两个
            • 术语:旧节点无法识别新区块,为hard分叉
          • 软分叉
            • 发生这种情况时,可以对最终结果进行修正
            • 术语:❙旧节点
          • 被新区块识别软分叉

        现在回答回到上一章的问题---①,①的情况是一种软分叉,即有两个或两个以上的节点同时挖出同一个区块号的区块,然后他们同时广播信息。假设一个是A,另一个是B,那么到A的距离就比较近了。该节点在收到其他消息之前收到了A的信息,并开始确认A所开采的区块的信息,然后将A所开采的区块添加到自己的公链中。同样,距离B比较近的节点会首先处理B挖掘的区块信息,并将其添加到自己的公链中。

        上面的文字对应下面的图片。距离 A 最近的一个是节点 1,距离 B 最近的一个是节点 5区块链共识算法:整体介绍及分叉的通俗讲解

        此时会出现一个链叉。这是由于使用相同的共识算法和共识规则而导致的分叉。 区块链共识算法:整体介绍及分叉的通俗讲解

        遇到这种情况,矿工更善于自我纠错。由于解决问题的能力与矿工的数量成正比,因此两条链的增长率也不同。一段时间后,一条链总会比另一条链长。当矿工发现整个网络中存在更长的链时,他会放弃自己当前的链,将所有新的更长的链复制回来,并基于这条链继续挖矿。所有矿工都是这样运作的,这条链就会成为主链,分叉的链就会被丢弃。 区块链共识算法:整体介绍及分叉的通俗讲解

        硬分叉的出现

        如果区块链软件的共识规则发生变化,并且这个规则变化不向前兼容,那么旧节点无法识别新节点生成的区块,旧节点就无法识别升级时,这个分叉会导致链条一分为二。分叉点之后的链

        以后不会互相影响,节点加入派系后也不再互相广播区块信息。 新节点旧节点将开始在不同的区块链s上运行(采矿❀,❿❝, 验证等)对于简单的例子,如果节点 1.0 版本接收到的区块结构字段为 10,那么节点 2.0 版本将在一年后发布。 2.0会兼容1.0,但是1.0不能接受2.0版本的额外字段。 。

        硬分叉过程:

        • 开发者发布新的节点代码。新的改变了区块链的共识规则,与旧的不兼容,因此节点程序分裂。分叉 (软件分叉)
        • 区块链 网络中的一些节点开始运行新的节点代码。新规则下产生的交易和区块会被老节点拒绝,老节点开始短暂中断与这些发送被自己拒绝的交易和区块的新节点相关联,所以整个区块链网络分叉
        (网络分叉)

      • 新节点的矿工开始根据新规则进行挖矿。老的还是用老的规则,不同的矿工有电脑的力量(挖矿分叉)
      • 终于区块链的整个链分叉出现了。

      举个例子:

      2017年8月1日,比特币现金(BCH)区块链在区块高度478559处成功脱离主链。新的加密货币默认区块大小为8MB,并且可以动态调整区块大小。由于遗留节点仅识别小于1MB的块,因此运行BCH客户端节点生成的块不向前兼容,将被遗留节点拒绝。最后,运行不同客户端的矿工会长时间运行在两个不同的区块链上(BTC和BCH)

      软分叉的出现

      • 不同节点在短时间内挖出相同区块号的区块,这就是上面的示例
      • 由于共识规则的改变,旧节点可以识别新节点生成的区块,旧节点无法被新节点接受
        • 新节点全网算力为大于50%
        • 新节点总网络算力小于等于50%

      第二种软分叉不一定是节点自我纠错。万无一失的解决方案必须依靠手动将节点升级到相同版本。

      1. 全网在新节点的算力大于50%时因为新节点的算力大于50%,所以无论老节点是否升级不是,最长的链肯定会由新的节点生成一条区块链。此外,这条最长的链最终将是双方都认为合法的链。原因就参考了上面提到的最长链复制。可以复制,因为它满足以下几点。
        • 旧节点可以接收新节点,分叉点之后的区块与
          • 旧节点的区块
          • 新节点的区块
        • 新节点最终无法接收旧节点,之后就会总是比旧的长
      2. 新节点在全网的算力小于等于50%时最终无法实现短拷贝和长拷贝的统一。结果是:Fork。原因如下。
        • 旧节点最终会拥有比新节点更长的链
        • 新节点永远无法接受旧节点,也不会复制包含它不能接受的区块的链

      作者:林冠宏♿链接:https://juejin.im/post/5b78f6e46fb9a019e8227162
      来源:掘金
      版权归作者所有。商业转载请联系作者获取授权。非商业转载请注明出处。

    版权声明

    本文仅代表作者观点,不代表Code前端网立场。
    本文系作者Code前端网发表,如需转载,请注明页面地址。

    热门