(三)Hyperledger Fabric 1.1安装部署-chaincode测试

环境搭建完毕,需要的工具和镜像安装完毕,就可以进行chaincode测试了,接下来参考官方教程运行first-network。

 进入first-netwok:

cd first-network

first-network的文件结构如下

在first-network目录下有两个自动化脚本byfn.sh和eyfn.sh,这两个脚本的启动顺序是先执行byfn.sh再执行eyfn.sh(eyfn.sh不是必须的,eyfn.sh的作用稍后再介绍)。
byfn.sh的执行格式为:./byfn.sh (up|down|restart|generate|upgrade)
执行参数说明:

up:启动
down:清除网络
restart:重新启动
generate:生成证书及创世块
upgrade:将网络从1.0升级到1.1

-c:用于指定channelName,默认值"mychannel"
-t:CLI timeout时间,默认值10
-d:延迟启动,默认值3
-f:使用指定的网络拓扑结构文件,默认使用docker-compose-cli.yaml
-s:指定使用的数据库,可选 goleveldb或couchdb
-l:指定chaincode使用的语言,可选golang 或node
-i:指定镜像tag,默认 "latest"
详细参数可通过./byfn.sh help查看。

 

启动first-network网络:
因为测试chaincode不需要其他辅助的功能,只要将网络启动即可。

./byfn.sh up

执行过程如下

遇到提示输入“y”。

最终看到输出上面的信息,证明启动成功。
first-network会生成1orderer+4peer+1CLI的网络结构,整个网络包括2个org。
输入命令

docker ps

列出所有已启动的容器。

整个网络的启动执行了以下操作:
1、生成创世区块、通道、每个组织的msp等信息,保存在channel-artifacts文件夹中,配置信息对应configtx.yaml文件。
2、生成orderer和peer使用的公私钥和证书等信息,保存在crypto-config文件夹中,配置信息对应crypto-config.yaml文件。
3、创建channel、加入channel、为通道的每个组织设置锚节点,安装chaincode,实例化chaincode,查询chaincode,调用chaincode等操作。

添加组织:
eyfn.sh脚本提供了增加组织的功能,启动./eyfn.sh up会安装jq,等待时间稍长一些。

执行成功后,使用docker ps查看已启动的容器,会发现已经添加了org3。

手动测试chaincode:
测试chaincode,需要先进入到cli容器,后续的操作都在容器内进行。

docker exec -it cli bash

按照官方给出的,有a和b两个账户,查看a账户的余额。

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

a账户的余额是80。
查看b账户的余额

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'

b账户的余额是220
下面做以下转账测试,把b账户的钱转给a账户20。

peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","b","a","20"]}'

再分别查看a和b的账户,a的账户变为100,b的账户变为200。

整个网络测试完毕,使用exit退出容器。接下来就可以进行下一步的学习了。

posted @ 2018-04-12 20:53 *七秒钟记忆* 阅读(...) 评论(...) 编辑 收藏