Fabric Dev开发调试模式的搭建过程
在利用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开发调试模式的搭建过程的更多相关文章
- 在 windows 开发 reactNative 的环境 搭建过程 react-native-android
安装的东西挺多的, 从 jdk 到c++环境 到node , python, 各种模拟器 http://bbs.reactnative.cn/topic/10/%E5%9C%A8windows%E4% ...
- thinkphp 框架两种模式 两种模式:开发调试模式、线上生产模式
define(‘APP_DEBUG’,true/false);
- PHP开发调试环境配置
——基于wamp和Eclipse for PHP Developers 引言 为了搭建PHP开发调试环境,我曾经在网上查阅了无数的资料,但没有一种真正能够行的通的.因为PHP开发环境需要很多种软件相互 ...
- Docker搭建disconf环境,三部曲之三:细说搭建过程
Docker下的disconf实战全文链接 <Docker搭建disconf环境,三部曲之一:极速搭建disconf>: <Docker搭建disconf环境,三部曲之二:本地快速构 ...
- Windows下fabric sdk连接Linux上fabric网络的调试过程
上个月刚入职一家公司从事区块链研发工作,选型采用Hyperledger Fabric作为开发平台.团队的小组成员全部采用的是在VirtualBox上面安装桌面版的Ubuntu 16.04虚拟机,开发工 ...
- 基于Visual Studio Code搭建Golang开发调试环境【非转载】
由于对Docker+kubernetes的使用及持续关注,要理解这个平台的原理,势必需要对golang有一定的理解,基于此开始利用业余时间学习go,基础语法看完之后,搭建开发环境肯定是第一步,虽然能g ...
- windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境
windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境 http://rongmayisheng.com/post/windows%E4%B8%8B%E7%94%A ...
- 搭建Hadoop2.5.2+Eclipse开发调试环境
一.简介 为了开发调试方便,本文介绍在Eclipse下搭建开发环境,连接和提交任务到Hadoop集群. 二.安装前准备: 1)Eclipse:Luna 4.4.1 2)eclipse插件:hadoop ...
- 关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态
关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态 由于火狐浏览器没有安装 Adobe Flash Player 19 NPAPI这个插件 安装好了之后就可以直接运行了
随机推荐
- 更改win系统的鼠标样式
一.找一个你心仪的鼠标样式(.cur文件),并放到 C:\Windows\Cursors 目录下 二.打开,控制面板 -> 硬件和声音 -> 鼠标 ,如下图: 三.浏览鼠标目录,找到你存放 ...
- Java多线程学习笔记之三内存屏障与Java内存模型
基本内存屏障 处理器支持那种内存重排序,就会提供能够禁止相应内存重排序的的指令,这些指令就被成为基本内存屏障:StroeLoad屏障.StroeLoad屏障.LoadLoad屏障.LoadStore屏 ...
- 在react中使用intro.js的的一些经验
react逐渐热了起来,但是新的东西毕竟前辈的经验少一些,前段时间自己在react中用到intro.js时,得到的资料甚少,摸索后便将一些心得记录下来了~ 1 intro.js的引入,这一点请看上一篇 ...
- [POI2007]MEG-Megalopolis
传送门:嘟嘟嘟 第一反应是树链剖分,但是太长懒得写,然后就想出了一个很不错的做法. 想一下,如果我们改一条边,那么影响的只有他的子树,只要先搞一个dfs序,为什么搞出这个呢?因为有一个性质:一个节点的 ...
- linux下apache中httpd.conf的ServerAdmin 是设置的什么?
<VirtualHost 127.0.0.1:80> ServerAdmin ******@****.com DocumentRoot /home/aaa/sss ServerName s ...
- Redis未授权漏洞利用方式
总结一下redis未授权拿shell: redis-cli -h ip >info 查看系统类型 Windows: 1.找网站绝对路径 2.config set dir 绝对路径根路径 conf ...
- oracle kill 锁
select object_name as 对象名称,s.sid,s.serial#,p.spid as 系统进程号 from v$locked_object l , dba_objects o , ...
- django表格form无法保存评论排查步骤
初学django项目,在网上找了个blog教程,还是很不错的,这里感谢一下博主https://www.zmrenwu.com/post/2/ 这个项目适合django初学者,是一个完整的blog项目 ...
- 舌尖上的javascript数组和字符串基本操作
Javascript数组基本操作 Javascript中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数,然而这些数字索引在内部被转换为字符串类型,这是因为javascrip ...
- Docker学习2-虚拟化
虚拟化就是由位于下层的软件模块,根据上层的软件模块的期待,抽象(虚拟)出一个虚拟的软件或硬件模块,使上一层软件直接运行在这个与自己期待完全一致的虚拟环境上.从这个意义上来看,虚拟化既可以是软件层的抽象 ...