zoukankan      html  css  js  c++  java
  • 区块链技术栈-共识机制

    共识机制

      所谓共识,就是指大家都打成一致的意思。在生活中也有许多需要达成共识的场景,比如开会讨论,双方或多方签订一份协议,在区块链系统中,每个节点必须要做的事情就是让自己的账本跟其他节点保持一致,如果是在传统的软件结构中,这几乎就不是问题,因为一个中心服务器的存在,也就是所谓的主库,其他从库向主库看齐就好,在实际生活中,很多事情人们也是按照这逻辑来的。比如企业老板发布了一个通知,员工照着做,但是区块链是一个分布式的对等网络结构,在这个结构中没有哪个节点是“老大”,一切都要商量着来,在区块链系统中,如何让每一个节点通过一个规则将各自节点的数据保持一致是一个很核心的问题,这个问题的解决方案就是制定一套共识算法。

      共识算法其实就是一种规则,每个节点都按这个规则去确认各节点的数据,我们暂且抛开算法的原理,先来想一想在生活中我们会如何解决这个问题,假设一群人开会,这群人没有一个领导,大家各抒己见,到最后如何统一一个最终的结果出来呢?实际处理的时候,我们一般在某个时间段选出一个人来发表意见,那个负责汇总大家的内容,然后发布完整的意见,其他人投票表决,每个人都有机会来汇总表达,最后票数最多的按最终意见,这种思路就是一种共识算法了,然而在实际过程中,如果人数多并数量是确定的,那还好处理些,如果人数很多并且数量不可确定,那么很难让每个人去发表意见再投票了,这样效率太低了,我们需要一个机制选出一个代表的人,在共识算法中就是筛选出具有代表性的节点。

      如何筛选呢?其实就是设置一组条件,就像我们筛选运动员一样,给一组指标让大家完成,谁能更好的完成指标,谁就有机会被选上。在区块链系统中,存在着多种这样的筛选方案,比如PoW(Proof of Work)工作量证明、PoS(Proof of Stake)权益证明、DPoS(Delegate Proof of Stake)委托权益证明、PBFT(Practical Byzantine Fault Tolerance)实用拜占庭容错算法等,各种不同的算法,其实就是不同的游戏玩法,这里暂且不进行算法的过程详述,大家只要知道这些都是一些筛选算法就行了。区块链系统就是通过这种筛选算法或者共识算法来使用网络中各个节点的账本数据打成一致的。

  • 相关阅读:
    LoginStatus 如何指向不同的登陆地址以及“invalid FORMATETC”
    不排序和可以重复Key的SortedList。
    一个新样式
    如何给另一个桌面的程序发送消息?
    Html使用自定义光标的一点需要注意的小问题。
    用stream.Read不能完整读取内容的问题。
    全国天气预报代码(转帖)
    Access处理DISTINCT的Bug?
    asp.net和asp运行结果不同?
    学习枚举类型/FlagsAttribute属性
  • 原文地址:https://www.cnblogs.com/gslblog/p/8846208.html
Copyright © 2011-2022 走看看