前期的环境准备可以按照另一篇博客中构建网络小节之前的步骤来完成,也就是通过bootstrap.sh脚本下载完成相关镜像文件。
运行超级账本需要设置较多的初始化配置,这里为了先有个体验,避免被众多配置搞晕了,就先用fabric-samples工程中已经生成的配置文件来体验fabric的部署安装过程。
先下载fabric-samples文件
git clone https://github.com/hyperledger/fabric-samples.git
进入basic-network目录,利用docker-compose启动容器
[root@master opt]# cd fabric-samples/basic-network/
[root@master basic-network]# docker-compose -f docker-compose.yml up -d
可以用docker ps查看容器启动情况
切换到管理员用户再创建通道和加入通道:
切换环境到管理员用户的MSP,进入peer节点容器peer0.org1.example.com
[root@master basic-network]# docker exec -it -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/[email protected]/msp" peer0.org1.example.com bash
创建通道
root@8bce6cf7abcd:/opt/gopath/src/github.com/hyperledger/fabric# peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx
加入通道
root@8bce6cf7abcd:/opt/gopath/src/github.com/hyperledger/fabric# peer channel join -b mychannel.block
退出peer节点容器peer0.org1.example.com
root@8bce6cf7abcd:/opt/gopath/src/github.com/hyperledger/fabric# exit
进入cli容器安装链码和实例化
[root@master basic-network]# docker exec -it cli /bin/bash
给peer节点peer0.org1.example.com安装链码
root@0c6f50b96708:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode install -n mycc -v v0 -p github.com/chaincode_example02
这一步可能会报下面的错
根据错误可知,是/opt/gopath/src/github.com/chaincode_example02路径下没有需要的chaincode_example02.go文件,通过下面的命令找到了此文件
找到后将此文件复制到/opt/gopath/src/github.com/chaincode_example02路径下即可解决(注意要在cli容器用户下进行复制)
上面这个问题应该是没有配置好环境变量GOPATH的原因,Hyperledger fabric工程必须位于 $GOPATH /src/ github.com/ hyperledger/fabric 路径下。
实例化链码
root@0c6f50b96708:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -v v0 -c '{"Args":["init","a","100","b","200"]}'
链码实例化之后就可以查询初始值了,同样是在cli容器中进行
root@0c6f50b96708:/opt/gopath/src/github.com/chaincode_example02# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
100
调用链码,从“a”转移10到“b”
root@0c6f50b96708:/opt/gopath/src/github.com/chaincode_example02# peer chaincode invoke -C mychannel -n mycc -c '{"Args":["invoke","a","b","10"]}'
2019-01-23 17:43:09.552 UTC [chaincodeCmd] InitCmdFactory -> INFO 001 Retrieved channel (mychannel) orderer endpoint: orderer.example.com:7050
2019-01-23 17:43:09.594 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 002 Chaincode invoke successful. result: status:200
再次查询“a”和“b”的值
root@0c6f50b96708:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
90
root@0c6f50b96708:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
210
下面这个博客是介绍的first-network的运行步骤:https://blog.csdn.net/liruizi/article/details/84998364#commentBox