环境搭建完毕,需要的工具和镜像安装完毕,就可以进行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退出容器。接下来就可以进行下一步的学习了。

最新文章

  1. Atitit Server Side Include  ssi服务端包含规范 csi  esi
  2. 块级元素 Vs 内联元素
  3. php基础21:上传文件
  4. CF 149D Coloring Brackets 区间dp ****
  5. 如何查看lib文件的导出函数
  6. 解决 placeholder 垂直不居中,偏上的问题
  7. 使用cnblogs.com的用户体验和提出来的建议
  8. URAL题解—不断跟新中
  9. Android的计量单位px,in,mm,pt,dp,dip,sp
  10. iOS 7 新版微信 URL 不支持跳转 App Store 的解决方案
  11. 【清橙A1084】【FFT】快速傅里叶变换
  12. iOS实现文件上传功能模块
  13. 树莓派的.bashrc和.bash_aliases文件
  14. 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法(转)
  15. 抓包工具Wireshark的使用
  16. 使用mybatis从mysql里进行模糊查询的编码问题
  17. WEB消息推送-原理篇
  18. hive升级遇到的几个小问题
  19. 2 jmeter常用功能介绍-测试计划、线程组
  20. 【刷题】BZOJ 2134 单选错位

热门文章

  1. redis之禁用保护模式以及修改监听IP
  2. Alpha事后诸葛亮(阳光普照队)
  3. android与JS交互,互相调用方法,跳转到网页
  4. Hello Shader之Hello Trangle
  5. Kafka学习之路 (一)Kafka的简介
  6. Odoo Model内容详解
  7. kubernetes 垃圾回收机制
  8. mysql insert插入的3种方法
  9. CSS grid layout
  10. HDU 3861 The King’s Problem(tarjan缩点+最小路径覆盖:sig-最大二分匹配数,经典题)