(1)将链码放到fabric-samples中的chaincode中:包括hello.go和hello-test.go
(2)打开三个终端,都进入到以下目录中(链码的开发目录): cd ~/gopath/src/github.com/hyperledger/fabric-samples/chaincode-docker-devmode
(3)第一个终端用于启动网络,使用命令:docker-compose -f docker-compose-simple.yaml up
(4)第二个终端用于编译和启动链码
   docker exec -it chaincode bash
   cd hello(存放链码的文件夹)
   go build
   CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./hello(这里是存放链码的文件夹)
   之前都是使用7051,这里使用7052。
   7051端口应该使用在v1.0.0,这里的版本是v1.1.0
(5)第三个终端用于操作链码
   docker exec -it cli bash
   安装链码:peer chaincode install -p chaincodedev/chaincode/hello -n mycc -v 0
   实例化链码: peer chaincode instantiate -n mycc -v 0 -c '{"Args":["str","helloworld"]}' -C myc
   链码查询:peer chaincode query -n mycc -c '{"Args":["get","str"]}' -C myc
     Query Result: helloworld
   调用链码:peer chaincode invoke -n mycc -c '{"Args":["set","str","helloworld111"]}' -C myc
   查询链码:peer chaincode query -n mycc -c '{"Args":["get","str"]}' -C myc
     Query Result: helloworld111

退出

Terminal2和Terminal3用exit命令退出docker。

Terminal 1直接ctrl+c退出,然后再执行

docker-compose -f docker-compose-simple.yaml down

一定要确保容器清理干净。
调试过程

当测试时出错时,如果每次都关闭网络环境退出容器后重新修改代码并编译,过于麻烦。一个简单做法是第一个终端不关,在第二个终端中退出容器,然后进入mychaincode文件夹修改链码并编译后重新进入容器,甚至可以在容器内安装vim并修改编译链码,完成之后在第三个终端中继续调用即可。

测试蛋珠的项目前面的操作是一样的,之后后面的测试操作链码的命令不一样:
docker exec -it cli bash
peer chaincode install -p chaincodedev/chaincode/chaincode006 -n mycc -v 0
peer chaincode instantiate -n mycc -v 0 -c '{"Args":[]}' -C myc
peer chaincode invoke -n mycc -c '{"Args":["initMarble","marble1","blue","35","tom"]}' -C myc
peer chaincode invoke -n mycc -c '{"Args":["initMarble","marble2","red","50","tom"]}' -C myc
peer chaincode invoke -n mycc -c '{"Args":["initMarble","marble3","blue","70","tom"]}' -C myc
peer chaincode query -n mycc -c '{"Args":["readMarble","marble1"]}' -C myc
peer chaincode invoke -n mycc -c '{"Args":["transferMarble","marble2","jerry"]}' -C myc
peer chaincode query -n mycc -c '{"Args":["readMarble","marble2"]}' -C myc
peer chaincode invoke -n mycc -c '{"Args":["deleteMarble","marble2"]}' -C myc
peer chaincode query -n mycc -c '{"Args":["getMarblesByRange","marble1","marble3"]}' -C myc
peer chaincode query -n mycc -c '{"Args":["getHistoryForMarble","marble2"]}' -C myc(得到所有操作过的历史信息)
peer chaincode query -n mycc -c '{"Args":["queryMarblesByOwner","tom"]}' -C myc
   
默认情况下不支持富查询,只需要配置couchdb
chaincode for develop配置CouchDB
修改chaincode-docker-devmode/docker-compose-simple.yaml配置
#peer加入如下配置
environment:
#添加以下内容
-CORE_LEDGER_STATE_STATEDATABASE=CouchDB
-CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb:5984
-CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=
-CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=
depends_on:
  -orderer
  -couchdb

couchdb:
container_name:couchdb
image:hyperledger/fabric-couchdb
#Populate the COUCHDB_USER and COUCHDB_PASSWORD to set an admin user and password
#for CouchDB.This will prevent CouchDB from operating in an "Admin Party" mode.
environment:
  -COUCHDB_USER=
  -COUCHDB_PASSWORD=
ports:
  -5984:5984
正常关闭三个终端,重启三个终端,重新运行之前的步骤

第一个终端关闭网络时出错:docker-compose -f docker-compose-simple.yaml down
启动时也报错:root@shizhan-virtual-machine:~/gopath/src/github.com/hyperledger/fabric-samples/chaincode-docker-devmode# docker-compose -f docker-compose-simple.yaml up
ERROR: yaml.parser.ParserError: while parsing a block mapping
  in "./docker-compose-simple.yaml", line 24, column 5
expected <block end>, but found '<block mapping start>'
  in "./docker-compose-simple.yaml", line 55, column 6
这个错误是由于格式不对,有的关键字没有对齐
但改完格式还报错:root@shizhan-virtual-machine:~/gopath/src/github.com/hyperledger/fabric-samples/chaincode-docker-devmode# docker-compose -f docker-compose-simple.yaml up
ERROR: The Compose file './docker-compose-simple.yaml' is invalid because:
services.peer.ports contains an invalid type, it should be an array
services.peer.environment contains an invalid type, it should be an object, or an array
Unsupported config option for services.peer: 'couchdb'
这里是说:不支持couchdb
我们这里不再使用couchdb,等需要的时候再使用。

使用开发模式dev测试链码相关推荐

  1. 开发环境DEV 测试环境UAT 生产环境PROD

    开发环境DEV 测试环境UAT 生产环境PROD, 三个环境也可以说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境 开发环境: DEV (developme ...

  2. springboot项目根据不同的环境启动不同的配置,如开发环境dev,测试环境sit,生产环境application...

    在项目开发中,会有多个环境,如在开发环境开发完,然后在测试环境测试,最后到生产环境,每个环境的配置是不一样的,如数据库配置:还好spring提供了一个管理配置的方式: 转载于:https://www. ...

  3. 4.4 开发模式下的测试:简化我们对链码的测试过程

    4.4 开发模式下的测试:简化我们对链码的测试过程 原创kevin-hf(ID不是微信) 最后发布于2019-02-26 16:48:19 阅读数 180  收藏 展开 目标 熟练掌握链码的 dev ...

  4. 基于区块链/Hyperledger Fabric的商品交易溯源系统开发模式搭建

    搭建该项目的开发模式主要有链码的开发模式和前后端的开发模式. 以下内容暂时没有核验,可能有bug 链码开发模式 窗口1:开启dev组件 cd /home/real/project/fabric-sam ...

  5. 开发环境、测试环境、生产环境、UAT环境、仿真环境论述

    开发环境.测试环境.生产环境.UAT环境.仿真环境论述 三个环境也可以说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境: 开发环境(DEV) 测试环境(UA ...

  6. 敏捷开发模式下如何更好的进行测试

    最近CTO组建了一个敏捷开发团队,团队人员包括  PM.设计.开发.测试角色,主要由PM来主导团队走向,因为以前并没有参加过敏捷开发的经验,对敏捷开发做了简单理解后,参考了前人的一些意见,总结出在 敏 ...

  7. 法国敏捷开发与敏捷测试模式

    [本文未经作者同意,不得以任何形式转载或发布,本文作者版权归作者所有,若转载此文,请联系QQ 252413619,以前授权转载本博客文章的公司,若转载此文,请再与本人联系,谢谢,麻烦啦!] 作为一名有 ...

  8. MBD开发模式下的XIL仿真测试

    MBD开发模式下的XIL仿真测试 "想了解MBD模式下的MIL.SIL.PIL.HIL吗?"--虹科 汽车从一个发动机加上几个轮子的简单形态发展到如今机械与电子高度融合的复杂整体, ...

  9. 写好测试,提升应用质量。涨薪分分钟!!!(二)之单元测试下开发模式、技术框架选择

    目录: 四. 单元测试下开发模式.技术框架选择 单元测试是按照测试范围来划分的.TDD.BDD 是按照开发模式来划分的.因此就有各种排列组合,这里我们只关心单元测试下的 TDD.BDD 方案. 在单元 ...

最新文章

  1. Dubbo基础专题——第四章(Dubbo整合Nacos分析细节点)
  2. 刘知远 陈慧敏:流言止于“智”者——网络虚假信息的特征与检测
  3. python staticmethodclassmethod
  4. EIGRP协议邻居详解及故障实战分析
  5. GitLab 安装笔记
  6. CRecordset类
  7. 如何用手机打开dcm格式图片_如何防止自己的图片被盗用?这 4 招教你优雅加水印...
  8. 02 ARM11 时钟初始化后的跑马灯程序
  9. Linux利用list_head结构实现双向链表
  10. 博文视点大讲堂第12期、第13期讲座文件下载
  11. 数据结构与算法之美-队列
  12. Windows Server 2012 之部署Windows Server 更新服务(1)
  13. angularJs模版注入的两种方式
  14. Snagit--高难度、多功能截图,有了它截图不求人!
  15. 英伟达驱动更新记录_英伟达更新驱动最好的方式 - 卡饭网
  16. 软件工程预测模型之COCOMO
  17. 每日一学18——凉鞋的简易有限状态机
  18. Python3正则表达式:match函数
  19. 服务器端获取签名直传OOS
  20. 【支付宝】支付 系统繁忙,请稍后再试(ALIN10146)

热门文章

  1. 第一章 引论(数据库系统原理)
  2. 228-非对称加密之RSA
  3. 全球PML_V2陆地蒸散发与总初级生产力数据
  4. vue图片裁剪固定尺寸/vue-cropper的使用
  5. http://bbs.859e.com/forum.php,[15.04.05][战团1.161+][因斯维尔的抉择][1.5032]
  6. 苹果电脑mp3转gif_Mac/OSX上超级好用的视频剪切,视频截图,视频转换GIF动画的工具...
  7. 解决java.math.BigDecimal divide方法运算结果为无限小数问题
  8. python资源全汇总—中文版
  9. 搜索下载资源方式方法
  10. yeelink服务器稳定吗,一步步教你使用云端服务器yeelink远程监控