0.Hyperledger Fabric学习笔记目录

  1. Hyperledger Fabric的安装和体验
  2. 初识Hyperledger Fabric网络节点和交易流程
  3. Hyperledger Fabric 1.0的架构
  4. 构建第一个Hyperledger Fabric网络

1.Hyperledger Fabric的节点类型

前面我们使用docker-composefabric-samples-1.0.6中的basic-network示例快速体验了一下fabric。 当时通过docker ps查看启动了下面几个容器:

1afe407ae5e26        hyperledger/fabric-peer:x86_64-1.0.6      "peer node start"        46 seconds ago      Up 45 seconds       0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp   peer0.org1.example.com
233639c048aa7        hyperledger/fabric-tools:x86_64-1.0.6     "/bin/bash"              48 seconds ago      Up 46 seconds                                                        cli
36f1b776e18a4        hyperledger/fabric-orderer:x86_64-1.0.6   "orderer"                48 seconds ago      Up 46 seconds       0.0.0.0:7050->7050/tcp                           orderer.example.com
4ead19674da34        hyperledger/fabric-couchdb:x86_64-1.0.6   "tini -- /docker-ent…"   48 seconds ago      Up 46 seconds       4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp       couchdb
59117f3913913        hyperledger/fabric-ca:x86_64-1.0.6        "sh -c 'fabric-ca-se…"   48 seconds ago      Up 46 seconds       0.0.0.0:7054->7054/tcp                           ca.example.com

这其中就是Hyperledger Fabric的网络节点。网络节点是区块链通信的主体。这里使用docker-compose启动的basic-network示例运行在一台物理机上,实际上会运行在网络中不同的机器上。

Hyperledger Fabric有如下的网络节点类型:

  • Peer节点:Peer节点是记账节点。Peer节点可以有以下三种角色:
    • 背书节点(Endorse Peer): 背书节点和具体的chaincode绑定,每个chaincode在实例化时会设置背书策略,在chaincode调用时需满足背书策略从背书节点收集足够的签名背书时交易才有效
    • 主节点(Leader Peer):Leader Peer负责和排序节点Orderer进行通信,Leader Peer可通过选举产生
    • 记账节点(普通的Peer):只负责验证交易和记账
  • 排序节点(Orderer):即排序服务节点(Ordering Service Nodek, OSN)接收包含背书签名的交易,完成对交易的排序并打包成区块。目前Hyperledger Fabric的多个Orderer节点连接到Kafka集群利用Kafka的共识功能完成交易的排序和打包。
  • CA节点:即Hyperledger Fabric的证书颁发机构

应用程序需要连接到某一一个Peer节点上与Fabric的网路进行通信,向背书节点提交交易提案(Transaction Proposal),当收集到足够的签名背书时会向排序节点广播交易,多个排序节点需要利用Kafka的共识功能完成交易的排序和打包成区块。

2.认识Hyperledger Fabric的交易流程

前面我们了解了Hyperledger Fabric的网络节点,简单看一下交易流程。各节点提前颁发好证书启动后加入已经创建好的通道(channel),在通道上实例化chaincode发起交易:

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

参考