Fabric2.0 使用开发模式(dev 模式)测试

Fabric支持开发模式,在开发者模式下,调试智能合约比较方便。但是这仅仅适用Fabric1.4,链码安装在peer节点上。

Fabric2.0虽然保留了开发者模式,但是链码容器独立运行,作为独立的Docker容器,这种模式就不一定灵光了。

本文目的是记录下探索Fabric链码调试方法过程的尝试及错误排查,最终的结果是没有成功。

结论是,链码尽管可能需要调试但是链码开发者模式并不适用。

建议: 链码编写过程中小心点儿,搭建本地测试网络,进行合约测试,没有问题再部署到生产网络。

 

一、测试环境

deepin 20.1

 

二、依赖条件

1. 克隆仓库到本地:   https://github.com/hyperledger/fabric-samples.git

 

三、调试环境搭建

 1. 测试网络搭建(第1个shell窗口)

1. 切换到如下目录 cd chaincode-docker-devmode

执行如下命令,启动docker容器

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

以上命令实现了,启动如下4个容器:

 orderer   --排序节点,交易排序
peer         --对等节点,账本存储
cli              --链码交互容器
chaincode    --链码容器,运行链码

 

 执行完成,容器如下:

 

 

 

2. 编译链码并运行(第2个shell窗口)

 (1)执行 docker exec --user root -it chaincode sh,进入容器

  (2) ls 查看目录,abstore是我们要使用合约的目录

切换到目录/opt/gopath/src/chaincode/abstore/go

 编译报错 go build -o abstore

原因,国内网络环境问题,需要设置go proxy代理
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

然后再次执行go build -o abstore,编译成功。

执行 go mod vendor,项目依赖迁移到工程目录vendor下。

 

 

 

 

运行链码

CORE_CHAINCODE_ID_NAME=mycc:0 CORE_PEER_TLS_ENABLED=false ./abstore -peer.address peer:7052

 启动链码服务。

 

2. 链码交互测试容器(第3个shell窗口)

 (1)执行 docker exec -it cli bash,进入容器

peer chaincode install -p /opt/gopath/src/chaincodedev/chaincode/sacc -n mycc -v 0

 

报错如下,原因还是go proxy需要设置下。

 

再次安装 peer chaincode install -p /opt/gopath/src/chaincodedev/chaincode/sacc -n mycc -v 0

2021-04-01 01:34:27.264 UTC [chaincode.platform.util] WriteFileToPackage -> DEBU 231 Writing file to tarball: src/vendor/google.golang.org/grpc/vet.sh
2021-04-01 01:34:27.264 UTC [chaincode.platform.util] WriteFileToPackage -> DEBU 232 Writing file to tarball: src/vendor/modules.txt
2021-04-01 01:34:27.652 UTC [msp.identity] Sign -> DEBU 233 Sign: plaintext: 0AC4070A5C08031A0C08A3C694830610...7FBFFC0E0000FFFF578D45CD00688B01
2021-04-01 01:34:27.652 UTC [msp.identity] Sign -> DEBU 234 Sign: digest: C917D88A1FB2335A5B89DC8ACE6FDA0A2DF60382684432E62DE0C0C3B94635DC
2021-04-01 01:35:35.005 UTC [chaincodeCmd] submitInstallProposal -> INFO 235 Installed remotely: response:<status:200 payload:"OK" >

实例化 peer chaincode instantiate -n mycc -v 0 -c '{"Args":["a","10"]}' -C myc

报错

Error: error getting channel (myc) orderer endpoint: error bad proposal response 500: Requested function GetChannelConfig not found.

 

探索到此为止,进行不下去了。。。。

 

猜测原因:可能是Fabric2.0的链码实例化步骤去掉了,或修改了规则。 总之教程不适用了。

测试版本 Fabric 2.3.0

 

参考文章: https://blog.csdn.net/weixin_43839871/article/details/107002767

 

 

四、常见问题

 1. cli容器启动失败

1. 切换到如下目录 cd chaincode-docker-devmode

 

 cli容器日志 docker logs cli

 

出现以上问题,说明docker目录有残留。执行docker-compose -f docker-compose-simple.yaml down -v ,然后重新docker-compose -f docker-compose-simple.yaml up就可以了。

 

posted @ 2021-03-31 18:18  jiftle  阅读(797)  评论(0编辑  收藏  举报