美文网首页
Hyperledger Fabric 学习三:共识机制

Hyperledger Fabric 学习三:共识机制

作者: 雪飘千里 | 来源:发表于2019-03-07 01:55 被阅读0次

    共识:在Fabric中,共识过程意味着多个Peer节点对于某一批交易的发生顺序、合法性以及它们对账本状态的更新达成一致的观点。

    1、Fabric共识

    Fabric中的共识达成过程为以下三个步骤:

    image.png
    • Endorsement背书:在背书( endorsement )阶段中,背书节点对客户端发来的交易预案进行合法性检验,然后模拟执行链码得到交易结果,最后根据设定的背书逻辑判断是否支持该交易预案。如果背书逻辑决定支持交易预案,它将把预案签名后发回给客户端。

      客户端通常需要根据链码的背书策略,向一个或者多个成员的背书节点发出背书请求。背书策略会定义需要哪些节点背书交易才有效,例如需要5个成员的背书节点中至少3个同意;或者某个特殊身份的成员支持等。客户端只有在收集满足背书策略的支持之后,广播出去的交易才能被视为有效。
      这些背书策略可以由链码在实例化之前来指定。

    • Ordering排序:排序( ordering )阶段就是由排序服务对交易进行排序,确定交易之间的时序关系。排序服务把一段时间内收到的交易进行排序,然后把排序后的交易打包成数据块(区块),再把区块广播给通道中的成员。采用这种方式,各个成员收到的是一组发生顺序相同的交易,从而保证了所有节点的数据一致性。

      Fabric 1.0 中的排序服务支持可插拔的架构,solo模式(测试使用)、Kafka在内的CFT类型后端、BFT类型后端。

      排序服务是共识机制中最重要的一环,所有交易都要通过排序服务的排序才可以达成全网共识,因此排序服务要避免成为网络上的性能瓶颈。

    • Validation验证:validation阶段是确认节点对排序后的交易进行一系列的检验,包括交易数据的完整性检查、是否重复交易、背书签名是否符合背书策略的要求、交易的读写集是否符合多版本并发控制 MVCC ( Multiversion Concurrency Control )的校验等等。

      当交易通过了所有校验之后,将被标注为合法并写入账本中。因为所有的确认节点都按照相同的顺序检验交易,并且把合法的交易依次写入账本中,因此它们的状态能够始终保持一致。

    Fabric建立共识的三个阶段都支持可配置,用户可以实现自己的endorsement、ordering、validation过程。

    2、Fabric共识插件

    Solo:单节点的排序功能,仅适合开发测试中使用。

    Kafka: 基于 Kafka 开源的分布式数据流平台,具有高扩展性和容错能力,适合用在生产系统。需要注意的是,Kafka 只提供了 CFT 类型的容错能力,即仅可对节点的一般故障失效容错,缺乏对节点故意作恶的行为进行容错的能力。

    SBFT: 支持BFT容错的排序实现,开发中。

    3、源码目录

    image.png
    • bccsp : 密码学:加密、签名以及证书
    • bddtests:行为驱动开发
    • common:公共库,包括 错误处理,日志处理,账本存储,等等
    • core:核心库,组件核心逻辑
    • devenv:开发环境,Vagrant
    • docs:相关文档
    • events:事件监听机制
    • examples:例子
    • gossip:最终一致性共识算法,用于组织内部区块同步
    • images:docker镜像打包
    • msp:成员服务管理 member service provider
    • orderer:排序节点入口
    • peer:peer节点入口
    • proposals : 新功能提案
    • protos:grpc(protobuffer + rpc);jsonrpc(json + rpc)

    4、共识插件源码(待补充)

    • 排序接口
    • 基于solo的排序服务
    • 基于kafka的排序服务
    • 自由实现排序服务

    相关文章

      网友评论

          本文标题:Hyperledger Fabric 学习三:共识机制

          本文链接:https://www.haomeiwen.com/subject/rjswuqtx.html