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

    共识机制

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

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

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

  • 相关阅读:
    redisTemplate写哈希表遇到的坑
    embedded-redis在单元测试中的使用
    使用Standford coreNLP进行中文命名实体识别
    字符编码和文件编码
    Elasticsearch提示low disk watermark [85%] exceeded on [UTyrLH40Q9uIzHzX-yMFXg][Sonofelice][/Users/baidu/Documents/work/soft/data/nodes/0] free: 15.2gb[13.4%], replicas will not be assigned to this node
    nginx.conf常用配置解析
    使用nginx搭建文件下载服务器
    lua连接数据库操作示例代码
    spring常见注解说明
    lua相关库安装常见问题
  • 原文地址:https://www.cnblogs.com/gslblog/p/8846208.html
Copyright © 2011-2022 走看看