Fabric chaincode调试

一、参考:
https://github.com/hyperledger/fabric-samples/tree/release-1.3/chaincode-docker-devmode
https://hyperledgercn.github.io/hyperledgerDocs/chaincode_developers_zh/#chaincode_7
http://www.zhayujie.com/fabric/chaincode-test.html
但是得注意docker-compose-simple.yaml中peer节点的命令,并将原来的注释掉,不然可能会报错(可能是我fabric的bin命令用的是1.2版本,而此处fabric-samples用的是1.3版本)。
Fabric chaincode调试_第1张图片

二、编写自动化脚本简化调试流程(注意叫脚本的权限)。
1、在终端1执行启动脚本命令./startFabric.sh(目录:fabric-samples/chaincode-docker-devmode)。脚本代码如下

#!/bin/bash
set -e

docker-compose -f docker-compose-simple.yaml up

输出如下表示网络启动成功
在这里插入图片描述
2、在终端2执行链码运行环境脚本./chaincode.sh(目录:fabric-samples/chaincode-docker-devmode)。脚本代码如下

#!/bin/bash
set -e

docker exec -it chaincode ./chaincode.sh

执行完此命令将进入容器chaincode的工作目录(volume映射:./../chaincode:/opt/gopath/src/chaincode),并执行该目录下的./chaincode.sh(目录:fabric-samples/chaincode)。脚本代码如下

#!/bin/bash
set -e

cd mychaincode
go build -o ehr 
CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=ehr:0 ./ehr

输出如下表示链码运行环境搭建成功
在这里插入图片描述
3、在终端3执行链码安装并实例化的脚本./client.sh(目录:fabric-samples/chaincode-docker-devmode)。脚本代码如下

#!/bin/bash
set -e

docker exec cli peer chaincode install -p chaincodedev/chaincode/mychaincode -n ehr -v 0
printf "chaincode installed successfully!\n\n"

docker exec cli peer chaincode instantiate -n ehr -v 0 -c '{"Args":["init","a","100","b","200"]}' -C myc
printf "chaincode instantiated successfully!\n\n"
printf "you can run 'peer chaincode [function]...' to invoke chaincode function!\n\n"

docker exec -it cli bash

执行完此步之后链码ehr((目录:fabric-samples/chaincode/mychaincode/ehr.go)已经安装并实例化成功。
Fabric chaincode调试_第2张图片
实例化过程中会执行链码中的Init函数,在终端2会打印出语句fmt.Printf("")的结果
在这里插入图片描述
链码中的Init函数如下
Fabric chaincode调试_第3张图片
4、终端3调用
调用invoke函数

peer chaincode invoke -n ehr -c '{"Args":["invoke","a","b","10"]}' -C myc

结果
在这里插入图片描述
终端2打印
在这里插入图片描述
调用query函数

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

结果
在这里插入图片描述
终端2打印
在这里插入图片描述
三、修改chaincode再次调试步骤(不用关闭3个终端窗口)
1、先在终端3中执行exit退出容器
在这里插入图片描述
然后再执行脚本./stopFabric.sh关闭网络,脚本代码如下

#!/bin/bash
set -e

docker rm -f $(docker ps -aq)
docker network prune -f
docker volume prune -f

Fabric chaincode调试_第4张图片
2、编写链码,然后按照步骤二执行。

你可能感兴趣的:(区块链)