使用开发模式dev测试链码

(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,等需要的时候再使用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值