上一篇: 初识区块链----区块链入门术语

区块链系统架构

在这里插入图片描述

API,事件,SDK是fabric对应用层提交的接口服务
  • API
    gRPC接口

  • 事件
    异步通信,链码定义事件,应用程序监听事件,触发动作

  • SDK
    go-sdk
    node.js-sdk
    java-sdk

  • 身份
    对请求的签名验证

  • 账本
    对区块的查询,
    按照区块高度查询
    区块hash查询
    交易id 可以查询区块,一个区块包含n个交易

  • 交易
    交易模拟,交易排序,交易记账
    后续会详细解释交易流程

  • 智能合约
    做智能合约的安装 初始化 升级
    智能合约是 业务声明和定义 交易是对合约的调用

  • 成员服务
    准入控制,ca系统 交易加密,签名等
    注册证书,交易证书

  • 共识服务
    cap原理
    弱化一致性,满足可用性。共识算法保证一致性

  • 链码服务
    docker管理
    每个链码都是独自容器,兼容多种语言,每个需要打包镜像,占用空间 不支持 k8s

节点

  • 客户端节点(应用程序、sdk)需要与peer或者order链接才能生效
  • peer(Anchor/Endorser/Committer)
  1. Anchor 主节点,唯一初始化时候 制定主节点,下线后自动选举

  2. Endorse 背书节点 为交易做担保 与智能合约结合,智能合约制定背书策略

  3. Committer 所有peer都是记账节点,校验区块信息,记录交易

     三者互不排斥,可以同时拥有
    
  • orderer 排序节点
    打包交易,进行排序
    将排序后交易打包成区块

      solo模式 仅一个orderer节点, 开发测试环境  单点故障
      kafka 将交易排序转交给卡夫卡集群。
    
  • ca节点
    鉴定区块链身份是否有效,通过后才能进行交易

网络拓扑

在这里插入图片描述

排序节点与组织的锚节点直接是 gRPC协议
组织内部是 gossip协议

交易流程

在这里插入图片描述

1、 提交交易提案

客户端节点将交易提交至背书节点,背书节点的选择与智能合约相关,智能合约在安装的时候指定背书节点,(某一背书节点因网络或者其他原因无返回时候,会再次提交至另外的背书节点,否则无效。)提交顺序无要求,正常情况下所有背书节点返回结果是一致的,签名不相同

2、 模拟执行提案并签名

背书节点收到交易提交先进行验证校验(格式是否正确,是否已经提交过,签名是否正确,该角色是否有权提交等),通过后由智能合约隔离执行,返回结果后签名并返回客户端(模拟执行,不会产生任何持久化操作。)

3、 返回模拟执行结果

收到结果,先验证,通过后在操作,可以分为查询和写交易:

  • 查询:不会对账本状态产生影响,验证通过后,返回值可以作为下一步业务逻辑判断的依据,此时交易流程即可结束
  • 写交易:客户收集到足够多的背书结果,然后将交易提案,背书结果,签名等生产交易,发送给排序节点进行排序。

4、 提交交易

发送给排序节点

5、 交易排序并结块

确保各背书节点的背书结果都一致(有不一致,排序节点不会发现),按照排序规则进行排序。区块打包。

6、 广播区块

区块广播至各组织的主节点

7、 保存区块状态并更新世界状态

主节点收到广播后,在记账的过程中会验证该交易是否有效,无效标记无效交易(在1.0版本中,无效交易会浪费磁盘空间,不会影响交易状态)

8、 同步区块

主节点将区块同步值其他各节点,记账过程同第7步完全一致

9、 保存区块状态并更新世界状态

同上

下一篇:区块链共识机制与账本存储

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐