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 @   jiftle  阅读(863)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
历史上的今天:
2020-03-31 使用registry搭建docker私服仓库
2017-03-31 开源的截图工具
点击右上角即可分享
微信分享提示