Fabric相关组件以及工具介绍:
- orderer 共识节点。为交易排序,并生成区块 ;
- peer共识节点。为交易背书,并记录区块信息 ;
- cryptogen用于生成区块链网络中相应用户的相关证书文件 ;
- configtxgen 用于生成区块链系统链码的创世区块、新建通道的配置文件、以及组织中锚节点的配置文件;
-couchdb peer节点状态数据库用的是couchdb,每个peer节点对应一个couchdb节点;
-ca 为Hyperledger Fabric行使证书机构的功能,每个组织一个ca服务器;
部署内容:
- 生成MSP证书
工具:cryptogen
配置文件:crypto-config.yaml
命令:$ cryptogen generate --config=./crypto-config.yaml
生成文件:
crypto
-config文件夹下有ordererOrganizations和
peerOrganizations文件夹
使用:peer、ca和orderer节点需要部署
位置:./crypto-config
- 生成创世区块
工具:configtxgen
配置文件:configtx.yaml
命令:$ configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
生成文件:genesis.block
使用:peer和orderer节点需要部署
位置:./channel-artifacts
- 生成Channel配置区块
工具:configtxgen
配置文件:configtx.yaml
命令:$ configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel
生成文件:
channel.tx
使用:peer和orderer节点需要部署
位置:./channel-artifacts
- 更新锚节点(AnchorPeers)
工具:configtxgen
配置文件:configtx.yaml
命令:$ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
命令:$ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $mychannel -asOrg Org2MSP
...
生成文件:
Org1MSPanchors.tx/Org2MSPanchors.tx/...
使用:peer和orderer节点需要部署
位置:./channel-artifacts
cryptogen 证书生成工具:
文件crypto-config.yaml这个文件定义了有多少个orderer和peer组织,每个组织有多少个peer;
为组织和属于这些组织的组件生成一组证书和密钥。
每个组织都配置了唯一的根证书(ca-cert),它将特定组件(peers和orders)绑定到该组织。
通过为每一个组织分配唯一的CA证书,模仿一个经典的网络,这个网络中的成员将使用自己的证书颁发机构。Hyperledger Fabric中的交易和通信是通过存储在keystore中的实体的私钥签名,然后通过公钥手段进行验证(signcerts)。
命令:cryptogen generate --config=./crypto-config.yaml
configtxgen 配置交易生成器:
文件configtx.yaml,这个文件描述了通道有多少个组织加入,以及排序服务属性、区块大小等等;
用于创建4个配置文件:
order的创世区块文件(genesis block),
channel的通道交易配置文件(channel configuration transaction),
以及每个peer组织的锚节点配置文件(anchor peer transactions)。
关于crypto-config.yaml中的多个peer组织
将Peer节点分为多个组织管理。一个组织由多个Peer节点组成。
每个组织中的第一个节点(peer0节点)作为锚节点与其他组织进行通信,所有节点通过域名都可以相互访问。
例子:
Fabric网络中包括一个Orderer节点和四个Peer节点,以及一个管理节点。
四个Peer节点分属于同一个管理域(example.com)下的两个组织Org1和Org2,这两个组织都加入同一个应用通道(business-channel)中。
每个组织中的第一个节点(peer0节点)作为锚节点与其他组织进行通信,所有节点通过域名都可以相互访问。
configtx.yaml
配置文件定义了整个网络中的相关配置和拓扑结构信息。
该配置文件定义了两个模板:TwoOrgsOrdererGenesis和TwoOrgsChannel。
创建创世区块
其中前者TwoOrgsOrdererGenesis可以用来生成Ordering服务的初始区块文件。
命令:$ configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./orderer.genesis.block
所生成的orderer.genesis.block需要复制到Orderer节点上(与Orderer配置中ORDERER_GENERAL_GENESISFILE指定文件路径一致,默认放到/etc/hyperledger/fabric路径下),在启动Orderering服务时进行使用。
TwoOrgsChannel生成Channel配置区块,以及peer各组织的锚节点的更新。
通道交易配置文件:
命令:$ configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel
通道上各组织锚节点配置文件
peer各组织的锚节点的更新(假设有两个org):
命令:$ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
命令:$ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
锚节点:各组织的peer节点通过锚节点与其他组织的peer节点或者orderer节点通信。