接下来,就是本文的重点,如何使用编译出来的可执行程序及相关工具,来搭建一个 fabric 区块链网络,并实现链码的部署以及测试。
分别在五台虚拟机中创建目录/etc/hyperledger/fabric,以下的命令 全部在该目录下执行,并且需要设置 fabric 网络执行的环境变量:
$FABRIC_CFG_PATH=/etc/hyperledger/fabric
1. 配置 fabric 网络用户拓扑关系

Crypto-config.yaml
该配置文件,包含一个 orderer 节点,以及两个 peer组织,两个 peer 组织又分别包含了两个 peer 节点。
cryptogen generate --config=./crypto-config.yaml --output ./crypto-config
执行命令后,会在当前目录下生成文件夹 crypto-config,包含节点用户的秘钥以及证书文件。
2. 配置Orderer 节点的启动创世区块,新建通道交易的相关配置

configtx.yaml
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock genesis.block
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx testchannel.tx -channelID testchannel
configtxgen –profile TwoOrgsChannel
–outputAnchorPeersUpdate ./Org1MSPanchors.tx –channelID testchannel –asOrg Org1MSP
configtxgen –profile TwoOrgsChannel
–outputAnchorPeersUpdate ./Org2MSPanchors.tx –channelID testchannel –asOrg Org2MSP
genesis.block、testchannel.tx、Org1MSPanchors.tx、Org2MSPanchors.tx
3. 设置虚拟机 Hosts 文件
由于 fabric 网络启动相关的配置文件中,与网络地址相关的信息都是填写的域名,所以需要在 hosts 文件中配置域名与 ip 的对应关系,在我们这次的测试环境中处理 orderer 节点,其他的4个 peer 节点的虚拟机都需要配置相关的 hosts 信息:
10.121.60.1 orderer.test.com
10.121.60.2 peer0.org1.test.com
10.121.60.3 peer1.org1.test.com
10.121.60.4 peer0.org2.test.com
10.121.60.5 peer1.org2.test.com
其中域名是根据 cryprto-config.yaml 的配置信息得来,后续的配置文件会详细说明
4. 配置 orderer 启动环境
在 orderer 节点的虚拟机配置 orderer 节点启动相关配置信息 orderer.yaml,并保存在/etc/hyperledger/fabric 目录下。相关配置文件内容见附件
从 cypto-config 文件夹下,拷贝 orderer 节点的秘钥以及证书文件至 fabric 启动环境变量目录下:
cp –r ./crypto-config/ordererOrganizations/test.com/orderers/orderer.test.com/msp ./
cp –r ./crypto-config/ordererOrganizations/test.com/orderers/orderer.test.com/tls ./
根据前文的操作,fabric 网络 orderer 节点的执行环境目录下必须有以下文件及文件夹:
./crypto-config、./msp、./tls、orderer.yaml、genesis.block
启动 orderer 节点:orderer start
5. 配置 peer 启动环境
在 peer 节点的虚拟机配置 peer 节点启动相关配置信息 core.yaml,并保存在/etc/hyperledger/fabric 目录下。相关配置文件内容见附件。
从 crypto-config 文件夹下,拷贝 peer 节点的秘钥以及证书文件至 fabric 启动环境变量目录下:
cp –r ./crypto-config/peerOrganizations/org1.test.com/peers/peer0.org1.test.com/msp ./
cp –r ./crypto-config/peerOrganizations/org1.test.com/peers/peer0.org1.test.com/tls ./
注意标记部分应该在对应的目录下拷贝对应的文件信息(可以参考 hosts 配置信息的内容区分)
根据前文的操作,fabric 网络 peer 节点的执行环境目录下必须有以下文件及文件夹:
./crypto-config.tx、./msp、./tls、core.yaml、channel.tx 、 core.yaml、
Org1MSPanchors.tx(.2虚拟机)、
Org2MSPanchors.tx(.4虚拟机)
启动 peer 节点:peer node start
注意,拷贝 msp、tls 文件夹的动作可以不需要操作,只需要在对应的 orderer.yaml 以及 core.yaml 配置文件中设置相应的路径即可,这里为了能够与附件中的配置信息一致,故把相应的秘钥与证书文件拷贝至fabric 网络执行环境变量的目录下
6. 创建应用通道
设置相应环境变量(根据相应环境修改配置)**
CORE_PEER_LOCALMSPID=”Org1MSP”
CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config \
/peerOrganizations/org1.test.com/users/Admin@org1.test.com/msp
执行命令创建应用通道
peer channel create
-o orderer.test.com:7050
-c testchannel
-f ./channel.tx
--tls true
--cafile /etc/hyperledger/fabric/crypto-config
/ordererOrganizations/test.com/orderers
/orderer.test.com/msp/tlscacerts
/tlsca.test.com-cert/pem
命令执行成功以后,会在当前目录下生成 应用通道的创世区块testchannel.block 文件,只有使用该文件,才可以加入对应的应用通道。使用 scp命令分发至其他3台 peer 节点虚拟机的 fabric 网络执行环境变量下(/etc/hyperledger/fabric)。
7. 加入应用通道
执行命令加入应用通道:
peer channel join –b testchannel.block
命令执行成功后,会看到提示信息:
Peer joined the channel!
加入应用通道的peer 节点虚拟机都可以通过终端命令查看加入的通过信息,如图:

加入通道
8. 更新锚节点配置
执行命令更新负责代表组织与其他节点通信的锚节点:
peer channel update
-o orderer.test.com:7050
-c testchannel
-f ./Org1MSPanchors.tx
--tls true
--cafile /etc/hyperledger/fabric/crypto-config
/ordererOrganizations/test.com/orderers
/orderer.test.com/msp/tlscacerts
/tlsca.test.com-cert/pem
锚节点负责代表组织与其他组织中的节点进行 Gossip 通信。