• 区块链--Bitcoin共识机制


    中心化和去中心化

    • 中心化模式:

      • 优点:效率高
      • 缺点:中间层次太多(组织层次连接)
    • 去中心化模式:

      • 缺点:效率低
      • 优点:没有中间层次(各个个体之间网状连接)
    • Q1: 如何设置一个规则让大规模无序的对象可以有序的完成意见事情,并且保证公正,公平? 这个就是需要制定一个共识机制。

    中国古老的区块链项目(打麻将)
    请四位美女定时周期性的单独为游客表演节目!

    -Q1 决定谁为游客表演节目?
    -Q2 为什么要给游客表演节目?(有什么好处)

    • 制定游戏规则(共识机制):四个美女通过打麻将的方式来决定谁来位游客表演节目--谁先胡牌谁为游客表演节目(所有人都承认的胡牌方式);表演节目后,能获得一定的奖励;

    共识特点:
    1. 四个人一组,谁先通过游戏规则(麻将的胡牌方式),谁就拥有记账权--表演节目。
    2. 不可篡改--如果某人没有胡牌却想要说服其他三人承认自己胡牌,这种作弊的方式获取的代价太大;
    3. 工作量证明。 大家都要花费时间大牌,都有可能胡牌,从而得到表演的机会,获得奖励;
    4. 去中心化。 每个人都可以是庄,完全是点对点。
    5. 每一轮只有一个庄家胡牌,下一轮就会有新的竞争,成为新的庄家;
    6. 每一次胡牌为游客表演节目,就是产生一个区块的过程。

    • 共识就是所有人遵守一个规则。

    比特币共识机制

    • 不断有转账交易发送到比特币网络中
    • 每个矿池都会收集所有交易记录,然后在头上加上一个正确的nonce(这个数据就叫一个区块Block),计算整个区块数据的hash,要满足一个规则(pow)
    • 如果正确计算出来了,就通知其他矿池确认,其他矿池确认无误后加入自己的区块列表中(区块链)

    拜占庭将军共识机制

    原型: 在中世纪,拜占庭帝国拥有巨大的财富,周围零帮垂涎已久。但拜占庭城池坚固,固若金汤,没有一个单独的邻邦能够成功乳清,任何单个的邻邦入侵都会失败,同时也有可能被其他邻邦乘机入侵。 所以要想入侵拜占庭帝国,至少需要一半以上邻国同时进攻才有可能成功!
    然而, 如果其中的一个或几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭,于是每一个邻国都很小心,不敢轻易相信邻国!

    拜占庭问题:

    • 假如拜占庭周围有6个邻国,编号0到6

    • 任何单独一个邻国都没法消灭拜占庭帝国

    • 只有大于等于4个领过一起才可以消灭拜占庭帝国(51%以上)

    • 6 个城邦大王不能坐在一起开会讨论

    • 6个邻国的势力相当

    • 6个邻国之间只能通过信使来进行通讯

    • 6个邻国都想打败拜占庭帝国瓜分财富

    • 6个邻国都想利益最大化

    问题

    • 设计一个规则让6个邻国都相互信任,形成一个可信的通信方式
    • 如果攻破,财富如何分配

    思考?

    • 对于拜占庭问题来说,假如邻国总数(节点总数)为N,叛变的邻国数(不可信节点|出错节点)为F,则当M>=3F+1,问题才解决(才能攻破拜占庭帝国), 如F=1,M=4 . 如何算出来的

      ## 实例
      - 设置:进攻命令为1, 按兵不动为0
      - 假设有四个将军: A,B,C,D
      	- 其中有叛将和忠将
      	- 4个将军相互发送消息给对方,最终来判断是否进攻
      
      • 假如A,C,D是忠将,B是叛将。 如下图相互通信过程

        • 最终A,C,D进攻
      • 假如叛将是A,忠将是BCD, 如下图

        • 最终BCD也会共识,是否是进攻

    战国七雄问题(比特币)

    • - 故事描述: 秦国有祖传的2100万BTC
      - 周边的6个国家都想去抢比特币,一次能抢50BTC,于是故事就来了
      
    • 故事描述: 秦国有祖传的2100万BTC

    • 周边的6个国家都想去抢比特币,一次能抢50BTC,于是故事就来了

    • 任何单独一个国家都没法消灭拜占庭帝国

    • 只有大于等于4个领过一起才可以消灭拜占庭帝国(51%以上)

    • 6 个国家大王不能坐在一起开会讨论

    • 6个国家只能通过信使来进行通讯

    • 6个国家都想抢BTC,并且越多越好

    -- 设计一套规则让0-6个大家都相互相信,形成一个可信的网络

    -- 如果抢到BTC如何分配

    故事是这样的开始的
    因为是无需的:所以任何国王都可以发布消息告诉别国什么时间去抢币,这样的结果就是,会乱成一锅粥,最后商量到一个方案

    • 工作量证明(提高提按成本)
      1. 6个国家都派出一个选手约定一个地方来进行校场比武(工作量证明过程)
      2. 谁比武胜出了,就谁发出指令什么时候去抢秦国BTC
      3. 谁比武胜出了,抢的50个BTC就归哪一个国家所有

    然后循环下一次比武

    • 比武的目的是为了本次抢50BTC临时公平选出中心
    • 比武只是方式(工作量证明方式),目的是为了选择一个中心(领导)
    • 比武的过程争夺领导权(BTC记账权)和BTC奖励
    • 去中心化不是去掉中心,而是人人都有可能成为中心(工作量证明)

    比特币成功解决了拜占庭问题

    • 拜占庭问题之所以难解: 任何时候系统中都有可能存在多个提案(因为提问成本很低),并且要完成最终的一致性确认过程十分困难,容易受到干扰。但是一旦确认,即为最终确认

    • 设置工作量证明(proof of work)机制,让所有参与的节点都可以公平公正的在某个时间段成为中心,有领导权/记账权,限制了一段时间的提问个数(增加了提问成本,需要通过比武)

    • 全网胜出的节点可以记账同时获得奖励,需要其它节点确认,保证了一致性

    • 造假成本提高(比如麻将的造假,这样会浪费自己的宝贵赢钱机会)

    • 设置了工作量证明,让系统慢下来,反而有助于让分布式去中心化的系统一致性协调,从而解决达到共识机制

    • 工作量证明,比特币以Hash碰撞挖矿,麻将是以浪费时间,校场比武以输赢看似无用的东西来决出一段时间的中心,是去中心化协调必须的一种方式

    • 其他的工作量证明方式,Pow, Pos, DPos等,目的都是为了增加提按成本

  • 相关阅读:
    Django使用Redis进行缓存详细流程
    celery
    1.单例模式(Singleton)
    python自带工具pdb进行调试
    九,DRF JWTRBAC
    python实现常量类
    Django 信号机制
    Django REST Framework
    nginx
    产品规格书书写规范
  • 原文地址:https://www.cnblogs.com/failymao/p/9788738.html
Copyright © 2020-2023  润新知