在利用Fabric开发Chaincode的时候,调试Chaincode显得尤为不方便,因为Chaincode正常应该运行在Docker容器中,每次修改Chaincode后想要使其更改生效必须得对Chaincode进行升级重新实例化,给我们的开发调试带来了很大的不便。下面给大家介绍一下如何启动并利用Dev模式来开发调试Chaincode。

1、从github上clone Hyperledger Fabric的源代码到本地,切换进入fabric目录,执行如下命令make可执行文件

make release

将$GOPATH/src/github.com/hyperledger/fabric/release/linux-amd64/bin加入 ~/.profile 中,执行 source ~/.profile 生效

2、启动orderer

ORDERER_GENERAL_GENESISPROFILE=SampleDevModeSolo orderer
ORDERER_GENERAL_GENESISPROFILE=SampleDevModeSolo nohup orderer >/dev/null 2>&1 & #后台启动

3、启动peer

peer node start --peer-chaincodedev=true
nohup peer node start --peer-chaincodedev=true >/dev/null 2>&1 & #后台启动

4、用configtxgen工具生成通道交易配置文件用于创建通道

configtxgen -channelID ch1 -outputCreateChannelTx ch1.tx -profile SampleSingleMSPChannel
configtxgen -channelID ch2 -outputCreateChannelTx ch2.tx -profile SampleSingleMSPChannel

5、创建通道ch1和ch2

peer channel create -o 127.0.0.1:7050 -c ch1 -f ch1.tx
peer channel create -o 127.0.0.1:7050 -c ch2 -f ch2.tx

6、加入通道

peer channel join -b ch1.block
peer channel join -b ch2.block

7、自此,peer跟orderer就已经建立了关系,可以启动我们要调试的链码了

cd examples/chaincode/go/chaincode_example02
go build -o example02
CORE_PEER_ADDRESS=10.0.2.15:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./example02
  
注意:在dev模式下,CORE_PEER_ADDRESS这个参数不能用127.0.0.1,而应该用启动peer时候实例化Gossip所对应的ip地址
2018-06-21 03:48:21.626 UTC [gossip/gossip] start -> INFO 01b Gossip instance 10.0.2.15:7051 started 否则会在启动链码的时候报错,具体报错信息如下:
2018-06-21 03:52:43.648 UTC [shim] SetupChaincodeLogging -> INFO 002 Chaincode (build level: ) starting up ...
2018-06-21 03:52:46.654 UTC [shim] userChaincodeStreamGetter -> ERRO 003 context deadline exceeded error trying to connect to local peer

8、在peer上安装注册要调试的Chaincode

peer chaincode install -n mycc -v 0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

9、在peer上实例化Chaincode

peer chaincode instantiate -n mycc -v 0 -c '{"Args":["init","a","","b",""]}' -o 127.0.0.1:7050 -C ch1
peer chaincode instantiate -n mycc -v 0 -c '{"Args":["init","a","","b",""]}' -o 127.0.0.1:7050 -C ch2

10、测试调用Chaincode

peer chaincode invoke -n mycc -c '{"Args":["invoke","a","b",""]}' -o 127.0.0.1:7050 -C ch1
peer chaincode invoke -n mycc -c '{"Args":["invoke","a","b",""]}' -o 127.0.0.1:7050 -C ch2

11、测试查询Chaincode

peer chaincode query -n mycc -c '{"Args":["query","a"]}' -o 127.0.0.1:7050 -C ch1
peer chaincode query -n mycc -c '{"Args":["query","a"]}' -o 127.0.0.1:7050 -C ch2

以上就是Fabric Dev模式下开发调试Chaincode的基本步骤,如果我们调试的Chaincode本地做了修改,只需要将第7步中修改过后的Chaincode重新编译,然后重新启动。直接调用即可生效,而无需再次对peer侧的Chaincode进行升级实例化等操作,会大大提高我们开发调试Chaincode的效率,希望能够对大家有所帮助。

Fabric Dev开发调试模式的搭建过程的更多相关文章

  1. 在 windows 开发 reactNative 的环境 搭建过程 react-native-android

    安装的东西挺多的, 从 jdk 到c++环境 到node , python, 各种模拟器 http://bbs.reactnative.cn/topic/10/%E5%9C%A8windows%E4% ...

  2. thinkphp 框架两种模式 两种模式:开发调试模式、线上生产模式

    define(‘APP_DEBUG’,true/false);

  3. PHP开发调试环境配置

    ——基于wamp和Eclipse for PHP Developers 引言 为了搭建PHP开发调试环境,我曾经在网上查阅了无数的资料,但没有一种真正能够行的通的.因为PHP开发环境需要很多种软件相互 ...

  4. Docker搭建disconf环境,三部曲之三:细说搭建过程

    Docker下的disconf实战全文链接 <Docker搭建disconf环境,三部曲之一:极速搭建disconf>: <Docker搭建disconf环境,三部曲之二:本地快速构 ...

  5. Windows下fabric sdk连接Linux上fabric网络的调试过程

    上个月刚入职一家公司从事区块链研发工作,选型采用Hyperledger Fabric作为开发平台.团队的小组成员全部采用的是在VirtualBox上面安装桌面版的Ubuntu 16.04虚拟机,开发工 ...

  6. 基于Visual Studio Code搭建Golang开发调试环境【非转载】

    由于对Docker+kubernetes的使用及持续关注,要理解这个平台的原理,势必需要对golang有一定的理解,基于此开始利用业余时间学习go,基础语法看完之后,搭建开发环境肯定是第一步,虽然能g ...

  7. windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境

    windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境   http://rongmayisheng.com/post/windows%E4%B8%8B%E7%94%A ...

  8. 搭建Hadoop2.5.2+Eclipse开发调试环境

    一.简介 为了开发调试方便,本文介绍在Eclipse下搭建开发环境,连接和提交任务到Hadoop集群. 二.安装前准备: 1)Eclipse:Luna 4.4.1 2)eclipse插件:hadoop ...

  9. 关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态

    关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态 由于火狐浏览器没有安装 Adobe Flash Player 19 NPAPI这个插件 安装好了之后就可以直接运行了

随机推荐

  1. django中url 和 path 的区别

    django中 url 和 path 都是配置路径,有什么不同? django.urls path django.conf.urls  url path 与 url 是两个不同的模块,效果都是响应返回 ...

  2. Django有关的所有命令

    1. Django的安装 pip install django ==1.11.11 pip install -i yuan django==1.11.11 2. 创建项目 django-admin s ...

  3. js 小数计算时出现多余的数据

    根据资料显示:是由于十进制换算成二进制,处理后,再由二进制换算成十进制时,造成的误差. 得出:所以(0.1+0.2)!=0.3 而是=0.30000000000000004的结果 解决方法: 参考:h ...

  4. FZU Monthly-201903 获奖名单

    FZU Monthly-201903 获奖名单 冠军: 黄海东 S031702647 一等奖: 林闽沪 S131700309 陈华能 S221701416 二等奖: 鲍子涵 S031702646 吴少 ...

  5. js中获取url后面的参数值

    方法: //获取url路径?号后面的参数值.function GetRequest() { var url = location.search; //获取url中"?"符后的字串 ...

  6. Python2.7-argparse

    argparse模块,用于方便地编写用户友好的命令行接口,可以自动生成帮助信息,用法信息和错误处理 1.模块对象 1.1 ArgumentParser 对象 1.1.1 初始化构建类:Argument ...

  7. Windows上安装并启动visdom

    windows上安装visdom$ conda install visdomCollecting package metadata: ...working... doneSolving environ ...

  8. nodeSelector + deamonset

    DaemonSet 配置文件的语法和结构与 Deployment 几乎完全一样,只是将 kind 设为 DaemonSet. 选择运行节点:当指定.spec.template.spec.nodeSel ...

  9. ansible-playbook如何判断并中断执行

    - fail: msg="Bailing out. this play requires 'bar'"       when: bar is not defined 我的需求是当某 ...

  10. 1-关于单片机通信数据传输(中断发送,大小端,IEEE754浮点型格式,共用体,空闲中断,环形队列)

    补充: 程序优化 为避免普通发送和中断发送造成冲突(造成死机,复位重启),printf修改为中断发送 写这篇文章的目的呢,如题目所言,我承认自己是一个程序猿.....应该说很多很多学单片机的对于... ...