初识Hyperledger Fabric网络节点和交易流程
📅 2018-03-09 | 🖱️
0.Hyperledger Fabric学习笔记目录 #
- Hyperledger Fabric的安装和体验
- 初识Hyperledger Fabric网络节点和交易流程
- Hyperledger Fabric 1.0的架构
- 构建第一个Hyperledger Fabric网络
1.Hyperledger Fabric的节点类型 #
前面我们使用docker-compose
和fabric-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发起交易:
- 应用程序创建交易提案并提交给背书节点
- 背书节点模拟执行交易并完成背书签名,
- 背书节点将背书签名和模拟交易结果返回给应用程序
- 应用程序需收集足够的交易背书,构建交易请求后发送给排序节点
- 排序节点对交易进行排序并生成区块
- 排序节点生成区块后会广播给通道上不同组织的主节点
- 记账节点从主节点同步区块,验证区块内容并写入区块(注:所有的Peer节点都是记账节点)