Fabric交易流程概述

  • 目前基于fabric1.0.6版本学习

    Fabric的交易流程中,主要关键节点参与,Peer节点、Orderer节点、CA节点及client端。

  • Peer节点 :该节点是参与交易的主体,可以说是代表每个参与到链上的成员,他负责储存完整的账本数据即区块链数据,负责共识环节中的执行智能合约,其中所有的Peer节点都维护完整的账本数据称之为Committer,而根据具体的业务划分背书策略时决定哪些Peer.peer有以下角色
1
2
3
背书节点(Endorse Peer): 背书节点和具体的chaincode绑定,每个chaincode在实例化时会设置背书策略,在chaincode调用时需满足背书策略从背书节点收集足够的签名背书时交易才有效
主节点(Leader Peer):Leader Peer负责和排序节点Orderer进行通信,Leader Peer可通过选举产生
记账节点(普通的Peer):只负责验证交易和记账
  • Orderer节点:该节点接受包含背书签名的交易请求进行排序并打包生产新的区块,主体功能便是对交易排序从而保证各Peer节点上的数据一致性,也包含了ACL进行访问控制。目前Hyperledger Fabric的多个Orderer节点连接到Kafka集群利用Kafka的共识功能完成交易的排序和打包。
  • CA节点:该节点负责对加入链内的所有节点进行授权认证,包括上层的client端,每一个节点都有其颁发的证书用于交易流程中的身份识别。
  • client: Fabric对于client端提供了SDK让开发人员可以更容易的对接到区块链内的交易环节,交易的发起便是通过SDK进行。

交易流程图

  • 整个执行流程
  • 1,应用程序创建交易提案并提交给背书节点
  • 2,背书节点模拟执行交易并完成背书签名
  • 3,背书节点将背书签名和模拟交易结果返回给应用程序
  • 4,应用程序需收集足够的交易背书,构建交易请求后发送给排序节点
  • 5,排序节点对交易进行排序并生成区块
  • 6,排序节点生成区块后会广播给通道上不同组织的主节点
  • 7,记账节点从主节点同步区块,验证区块内容并写入区块(所有的Peer节点都是记账节点)

官方图解主要包含4大步骤

  • 步骤1:由client发起一个交易请求,而上图中的背书策略要求Peer1、Peer2及Peer3参与交易,所以client将请求分别发给Pee1、Peer2和Peer3
  • 步骤2:三个Peer接收到交易请求后执行对应的智能合约并对结果进行签名然后分别将输出结果返回给client
  • 步骤3:client收到所有执行结果后打包一并发送到Orderer
  • 步骤4:Orderer将接收到的该次交易在交易池里进行排序并组合打包生成一个新的区块,Orderer将新的区块发送给所有的Peer节点,每个Peer节点接收到新区块后,对其中的每一笔交易结果的签名进行验证是否符合背书策略,以及比对读写集合与本地的版本是否相同,如满足所有条件则将新的区块写入本地账本内完成交易。

应用程序如何掉到fabric

  • 应用程序需要通过通道连接到某一个Peer节点上使用chaincode与Fabric的网路进行通信,向背书节点提交交易提案(fabric java/node/go sdk->chaincode)