第1.2-1.5节的四个配置文件完成之后,这四个配置文件放在“CardChain/artifacts/channel”文件夹下,然后进入该文件夹,按步骤执行一下命令即可运行一个Fabric网络。
- 生成密钥文件
$ cryptogen generate --config=crypto-config.yaml
- 生成orderer创世块
$ configtxgen -profile OrdererOrg --outputBlock orderer.genesis.block
- 启动orderer节点(需要在另外一个终端中执行)
$ orderer start
- 启动peer节点(需要在另外一个终端中执行)
$ peer node start
- 创建通道提案文件
$ configtxgen -profile TxChannel -outputCreateChannelTx fabricchannel.tx -channelID fabricchannel
- 创建锚节点通知提案
$ configtxgen -profile TxChannel -outputAnchorPeersUpdate OrgAMSPanchors.tx -channelID fabricchannel -asOrg OrgAMSP
- 设置环境变量,创建Channel的组织的编号。必须和core.yaml中保持一致。
$ export CORE_PEER_LOCALMSPID=OrgAMSP
- 设置环境变量,执行创建channel的用户账号。路径需要根据第1步中生成的文件修改。
$ export CORE_PEER_MSPCONFIGPATH=/home/stone/go/src/github.com/stone-ch/CardChain/artifacts/channel/crypto-config/peerOrganizations/orga.cardchain.com/users/Admin@orga.cardchain.com/msp
- 创建Channel创世块
$ peer channel create -o 127.0.0.1:7050 -c fabricchannel -f fabricchannel.tx
- 加入Channel
$ peer channel join -b fabricchannel.block
- 通知锚节点
$ peer channel update -o 127.0.0.1:7050 -c fabricchannel -f OrgAMSPanchors.tx
- 安装链码。-p后边的路径是相对$GOPATH/src目录下的路径。该命令会自动寻找目录下代码的main入口。
$ peer chaincode install -n cc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/example02/cmd/
- 实例化链码
$ peer chaincode instantiate -o 127.0.0.1:7050 -C fabricchannel -n cc -v 1.0 -c '{"Args":["init","a","100","b","200"]}'
- 查询链码。正常情况下会返回a的余额,即100。
$ peer chaincode query -C fabricchannel -n cc -c '{"Args":["query","a"]}'
- 链码执行交易。交易之后可以再查询,就可以看到账户余额的变化了。
$ peer chaincode invoke -o 127.0.0.1:7050 -C fabricchannel -n cc -c '{"Args":["invoke","a","b","1"]}'
执行过程中,经常遇到的问题就是配置证书文件的路径有误,以及和configtx.yaml中MSPID对应不上。
多想想其中的相关关系,多踩踩坑才能真正理解这个系统。
至此,基本的Fabric环境搭建就完成了,下一步就需要编写链码了。