fabric简介

fabric简介

fabric简介_第1张图片

Fabric架构的核心包括三部分:
  • Identity - 身份管理
  • Smart Contact - 智能合约
  • Ledger及Transactions - 账本和交易
1.身份管理
  • 用户身份
    • order节点
      • 对交易排序,打包
    • peer节点
      • 存储账本
      • 需要安装链代码,处理客户端请求,管理账本数据
    • 客户端
      • 对账本数据进行读写操作

fabric网络中的每一类用户,可以有一个或多个,每个节点都有属于自己的证书(秘钥对),不同角色的节点有不同权限

2.账本管理
  • 对于程序员来说对账本的操作就是调用对应API
  • 对于fabric来说需要对账本进行管理
    • 账本组成
      • 区块链
        • 所有的交易的集合,交易的历史记录
      • 世界状态
        • 用户的最新状态
        • 存储在账本的默认数据库中
          • 账本在peer节点上,这个节点上有默认的数据库,levelDB
            • 数据存储格式:键值对
              • key:value
                • key:字符串
                • value:字符串
3.交易管理
  • 部署交易
    • 根据实际的业务需求来发链代码
    • 把链代码安装到peer节点上
  • 调用交易
    • 客户端节点发起的,将请求发送给peer节点
    • peer节点收到请求后,通过智能合约的逻辑处理,最终实现账本数据的读写操作
4.智能合约(链代码)

智能合约不仅是封装信息并使整个网络保持简单的关键机制,还可以通过编写它们以允许参与者某些方面的交易自动执行。

例如,可以编写智能合约来规定运输物品的成本,其中运费根据物品到达的速度而变化。根据双方同意并写入分类账的条款,当收到物品时,适当的资金会自动转手。

智能合约支持的语言:

  • Java(最早支持,后来不支持,1.4又支持)
  • node.js
  • go
基础概念
节点
  • peer节点
    • 存储账本
    • 安装智能合约
    • 接收并处理客户端请求
    • 运行在docker容器中,
    • 镜像:hyperledger/fabric-peer
    • 分为四个角色(后面详细介绍)
  • 客户端节点
    • 连接peer节点、order节点
    • 发送请求给peer节点
    • 镜像:hyperledger/fabric-tools
  • orderer节点
    • 对交易排序
      • 为什么要排序
        • 解决双花问题
      • 使用排序算法
        • solo==>>用于测试环境(队列模型,先进先出,后进后出)
        • kafka==>>工作环境中使用(分布式的消息处理系统)
    • 对交易打包
      • 得到了区块
        • 频率==>>在搭建fabric网络时候,手动设置的
    • 镜像:hyperledger/fabric-orderer
Peer、Ledger和 ChainCode

fabric简介_第2张图片

  • N-区块链网络
  • P1-P3:3个peer节点,共同处于一个网络中
  • S1:智能合约(链码)
  • L1:账本,每个peer节点上都有账本

账本和智能合约:

  • 在peer上
  • 账本是先天存在的
  • 智能合约是后天的,程序员安装上去的
  • 每个peer节点上都有智能合约,对账本进行管理
    fabric简介_第3张图片
  • 一个peer节点上可以有多个账本(加入到了不同的通道中)
  • 一个peer上可以安装多个智能合约
    • 账本1–合约1
    • 账本2–合约1、2
  • 智能合约业务逻辑处理,项目中有多个模块,模块之间关联性不大,可以将每个模块的逻辑单独封装,每个模块对应一个链码,举例:装修公司
    • 改水电
    • 刷墙
    • 贴地砖
    • 吊顶
通道==>>channel

用来隔离数据的, 用户在不同的通道中, 使用的数据是不同的, 而且数据不共享, 理解为群

通道是由共识服务(ordering)提供的一种通讯机制,将peer和orderer连接在一起,形成一个个具有保密性的通讯链路(虚拟),实现了业务隔离的要求
fabric简介_第4张图片

  • N:区块链网络
  • C:通道,区块链网络中通道,可以一到多个,至少一个
  • P1,P2:peer节点,加入到同一个通道中
    • P1,P2节点上的账本数据是相同的
  • L1:账本
  • S1:智能合约(链码)
  • A:客户端,访问属于通道C中的peer节点
  • 结论
    • peer节点如果要共享数据,必须要加入到同一个通道
    • 加入到同一个通道的节点上的账本数据是相同的
    • P1和P2上的智能合约可以不同(比如卖家和买家就不同)
    • 对peer节点上账本数据的操作,是通过客户端完成的
      • 发送查询请求
      • 交易请求
组织

fabric中的组织是通过职能划分的, 每个组织中可以有很多用户
fabric简介_第5张图片

  • N: 区块链网络
  • C: 通道
  • P1-P8: peer节点
    • 加入到了同一个通道
    • 节点上的账本数据是相同的
      • 对其中某一节点的账本数据修改, 数据会自动同步到其他节点的账本上
  • Org1-Org4: 组织
  • A1-A4: 客户端
    • 不同的组织的客户端不同, 不同组织处理的业务逻辑不同
交易流程

fabric简介_第6张图片

  1. 客户端发送请求到peer节点
  2. peer节点收到请求, 通过安装的智能合约对请求进行处理
  3. peer将处理 的结果发送给客户端 -> 客户端拿到了请求的结果
  4. 以上三步只是进行交易的模拟, 账本数据并没有被修改
  5. 客户端收集到了所有参与交易的节点的回复
    1. 有一部分同意
    2. 有一部分不同意
  6. 客户端将交易请求和模拟交易的结果发送给orderer节点
  7. orderer将得到的数据进行排序打包
  8. orderer将打包的数据发送给peer节点
    1. 得到区块的peer对其中的交易进行校验
    2. 因为有一部分模拟结果失败了, 因此交易失败
      • 失败: 账本数据数据是不会被修改的
    3. 校验没问题
      • 修改账本数据
  9. peer将校验的结果发送给客户端
账本

fabric简介_第7张图片
账本分两部分:

  • 世界状态
    • 最后一个交易完成之后的状态
    • 通过key:value结构存储数据
  • 区块链
    • 所有交易的历史记录
  • 世界状态的变更是通过读区块链数据来完成的
    fabric简介_第8张图片
    区块链中的数据:

第一个区块:创始(世)区块

  • 不存储数据
  • 存储通道节点信息
  • 第一个节点以后存储的是交易信息

H1 - Hn: 区块头

  • 上一个区块的哈希
  • 当前区块的哈希

D1 - Dn: 数据块

T1 - Tn: 交易

img-Cgc7WLLG-1562243617497)]

区块链中的数据:

第一个区块:创始(世)区块

  • 不存储数据
  • 存储通道节点信息
  • 第一个节点以后存储的是交易信息

H1 - Hn: 区块头

  • 上一个区块的哈希
  • 当前区块的哈希

D1 - Dn: 数据块

T1 - Tn: 交易

你可能感兴趣的:(fabric)