zoukankan      html  css  js  c++  java
  • 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就可以了。

  • 相关阅读:
    怎样处理人际关系中的矛盾
    如何处理人际关系
    Python包含以下函数:
    与他人有效沟通的小技巧
    沟通时容易出现的问题
    如何在工作中提升自己
    第十三周进度报告
    第十二周学习进度
    团队绩效管理
    软件对标分析
  • 原文地址:https://www.cnblogs.com/jiftle/p/14603040.html
Copyright © 2011-2022 走看看