美文网首页Fabric程序员区块链hyperledger fabric
Hyperledger fabric: 使用dev模式调试链码(

Hyperledger fabric: 使用dev模式调试链码(

作者: 司青玄 | 来源:发表于2018-04-20 16:31 被阅读68次

    fabric的链码开发是比较痛苦的,主要是调试起来特别繁琐。在不使用dev模式的情况下,写好chaincode之后不能在本地测试,必须将代码部署到docker, 然后再install,instantiate,这样peer节点会在新的容器中启动你的chaincode。更可怕的是,你只能通过docker logs查看chaincode日志,没有任何办法调试,只能靠打日志的方式debug。更更可怕的是,每当你修改完golang代码后,你都要重新再跑一遍上面的这些流程

    使用dev模式启动peer节点虽然还是需要安装、初始化链码,但区别在于你只需要执行一次这个步骤就可以了,并且chaincode可以运行在本地(比如直接在IDE启动),这样就允许我们使用IDE的调试功能。此外,当修改了代码后,直接在IDE中编译运行就能看到修改后的chaincode了。

    要使用dev模式,首先修改运行peer的容器的启动命令,添加--peer-chaincodedev参数,例如在docker-compose.yaml中:

    command: peer node start --peer-chaincodedev=true
    

    然后要注意将7052端口映射到宿主机端口:

    ports:
          - 7052:7052
    

    这个端口就是我们在本地启动chaincode连接peer节点时使用的端口。注意,这里使用的是fabric 1.1版本,如果是1.0版本,这个端口是7051,可以通过修改core.yaml文件调整默认端口。
    接下来,登陆cli容器,向往常一样install, instantiate链码:

    peer chaincode install -n 链码名 -v 1 -p xxx.com/xxxapp
    peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n 链码名   -v 版本号 -c '{"Args":[""]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
    

    上面命令中的-P(背书策略)根据实际情况进行调整。

    下一步我们准备在IDE中直接运行chaincode。在此之前要先配置两个环境变量:

    CORE_PEER_ADDRESS=127.0.0.1:7052
    CORE_CHAINCODE_ID_NAME=链码名:版本号
    

    然后就可以启动链码了,调试效率大大提升。

    相关文章

      网友评论

      • _Danniel_:很多小白会搭建了tls通讯的网络,然后按照你的方式,发现容器外的链码无法连接到peer。这是因为小白一般还未能注意到容器外的链码还没有配置tls相关。
        故,
        建议你在文头写上:建议先将 联盟链网络 设置为 非tls通讯模式。
        dev模式,建议在非tls通讯模式下
      • IT人故事会:加油哦!

      本文标题:Hyperledger fabric: 使用dev模式调试链码(

      本文链接:https://www.haomeiwen.com/subject/tlhzkftx.html