一、fabric网络结构(暂时不包括CA)
如上图所示,在fabric网络中,O表示Orderer,P代表Peer,EP代表Endorsing Peer(endorser),CC代表Chaincode以及Client、Channel、Ledger、Transaction,由它们组成了整个网络,下面对每种元素进行介绍:
Client:安装在节点(Peer)处的客户端,可以发起构建channel的请求,也可以创建和发起事务(transaction);它不能直接操作chaincode,必须通过peer。
Peer:从orderer处获取区块用于维护当前状态以及存储在本地的帐本(ledger)。
Transaction:部署事务(Deploy Transaction)用于生成新的chaincode;唤醒事务(Invoke Transaction)用于通过chaincode执行一次操作。
Endorsing Peer:一种特殊的节点,在channel内部署chaincode的时候需定义好备书节点列表;在Client发起事务时,在备书节点上模拟该事务的执行并返回响应。
Orderer:负责维护网络中的多个channgel;负责接收Client通过备书策略后的事务消息,将事务进行排序放入block中,再传递给该channel中的所有peer。
Channel:在网络中的若干个节点中组成的子网,用于隔绝子网与其它节点间的通信和信息共享,Peer可以属于不同的channel。
Orderer System Channel:是网络中创建的第一个channel,channel能有多个,但Orderer System Channel有且只能有一个,它根据配置文件创建,对它具有读权限可以看到所有生成的 channel,不推荐在该channel跑任何应用。
Chaincode:是运行在peer上的一段程序,用于对当前状态或帐本进行读写操作。
Ledger:对channel中所有事务的执行结果的一个有序的、防篡改的记录。
Anchor Peer:属于多个channel的节点。
Leading Peer: channel中负责与orderer通信的节点。
二、网络的构建流程
- 系统开始部署时,会根据channel配置文件自动生成orderer system channel,这是网络中的第一个channel,channel上的节点都是Orderer;
- client发送createChannel消息结某个orderer来创建一个channel,order经过多重认证后生成一个配置模板,并将带有这个新建channel配置的CONFIG事务发送至orderer system channel;
- client通过对orderer轮询channel是否创建成功,若成功,通过该channel发送joinChannel消息邀请相应的节点加入到该channel中;
- client调用installChaincode将chaincode源码存放位置及相关信息告知channel内的所有节点;
- chainCode实例化:client通过channel发送sendInstantiateProposal消息至备书节点,通过channel的备书策略决定是否通过;
- client将备书节点的签名封装在事务消息中,发送至orderer,由orderer封装成block后发送至其它节点,其它节点收到收到block后判断事务的有效性,若有效则完成实例化。
(5,6的执行和事务的处理流程完全一样,将在下一篇里详细讲述)