Hyperledger Fabric 实战(十二): Fabric 源码本地调试
借助开发网络调试 fabric 源码本地调试
准备工作
IDE Goland
Go 1.9.7
fabric-samples 模块 chaincode-docker-devmode
fabric 源码
步骤
添加本地域名
127.0.0.1 peer
127.0.0.1 orderer
用 ide 打开 $GOPATH 下的fabric源码目录
在源码目录下添加 dev-network
把 sampleconfig 下的所有文件复制到 dev-network
修改 core.yaml 中 fileSystemPath = fabric源码目录下dev-network/production/peer(绝对路径)
修改 orderer.yaml 中 Location = fabric源码目录下dev-network/production/orderer(绝对路径)
在 dev-network 新建 config,并复制 fabric-samples 模块 chaincode-docker-devmode下的 myc.tx 和 orderer.block
1,接着调试网络,用debug模式运行 order 下的 main.go 文件 并添加配置,绝对路径的地方相对修改,然后运行
Environment:
ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
ORDERER_GENERAL_GENESISMETHOD=file
ORDERER_GENERAL_GENESISFILE=fabric源码目录下dev-network/config/orderer.block(绝对路径)
ORDERER_GENERAL_LOCALMSPID=DEFAULT
ORDERER_GENERAL_LOCALMSPDIR=fabric源码目录下dev-network/msp(绝对路径)
FABRIC_CFG_PATH=fabric源码目录下dev-network(绝对路径)
2,接着调试网络,用debug模式运行 peer 下的 main.go 文件 并添加配置,绝对路径的地方相对修改,然后运行
Program arguments:
node start --peer-chaincodedev=true -o 127.0.0.1:7050
Environment:
CORE_PEER_LOCALMSPID=DEFAULT
CORE_PEER_ID=peer
CORE_PEER_MSPCONFIGPATH=fabric源码目录下dev-network/msp(绝对路径)
CORE_PEER_ADDRESS=127.0.0.1:7051
FABRIC_CFG_PATH=fabric源码目录下/dev-network(绝对路径)
3,接着调试网络,用debug模式运行 peer 下的 main.go 文件 并添加配置,绝对路径的地方相对修改,然后运行
Program arguments:
channel create -c myc -f fabric源码目录下dev-network/config/myc.tx(绝对路径) -o 127.0.0.1:7050
Environment:
CORE_PEER_LOCALMSPID=DEFAULT
CORE_PEER_ID=cli
CORE_PEER_MSPCONFIGPATH=fabric源码目录下dev-network/msp(绝对路径)
CORE_PEER_ADDRESS=127.0.0.1:7051
FABRIC_CFG_PATH=fabric源码目录下/dev-network(绝对路径)
4,接着调试网络,用debug模式运行 peer 下的 main.go 文件 并添加配置,绝对路径的地方相对修改,然后运行
Program arguments:
channel join -b myc.block
Environment:
CORE_PEER_LOCALMSPID=DEFAULT
CORE_PEER_ID=cli
CORE_PEER_MSPCONFIGPATH=fabric源码目录下dev-network/msp(绝对路径)
CORE_PEER_ADDRESS=127.0.0.1:7051
FABRIC_CFG_PATH=fabric源码目录下/dev-network(绝对路径)
5,接着调试网络,用debug模式运行 peer 下的 main.go 文件 并添加配置,绝对路径的地方相对修改,然后运行
Program arguments:
chaincode install -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -n mycc -v 1.0
Environment:
CORE_PEER_LOCALMSPID=DEFAULT
CORE_PEER_ID=cli
CORE_PEER_MSPCONFIGPATH=fabric源码目录下dev-network/msp(绝对路径)
CORE_PEER_ADDRESS=127.0.0.1:7051
FABRIC_CFG_PATH=fabric源码目录下/dev-network(绝对路径)
6,打开终端
cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
编译chaincode
go build -o chaincode_example02 接着运行
CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:1.0 ./chaincode_example02
7,接着调试网络,用debug模式运行 peer 下的 main.go 文件 并添加配置,绝对路径的地方相对修改,然后运行
星际文件系统(InterPlanetary File System,缩写IPFS)是一个旨在创建持久且分布式存储和共享文件的网络传输协议,它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。
准备两台 centos7 虚拟机,设置并网络连通
192.168.1.210
192.168.1.211
到 https://github.com/ipfs/go-ipfs 下在安装包 https://www.fengshen157.com/ github.com/ipfs/go-ipfs/releases/tag/v0.4.18
go-ipfs_v0.4.18_linux-amd64.tar.gz
下载并安装密钥创建工具
go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
将在 $GOPATH/bin/ipfs-swarm-key-gen 和 go-ipfs_v0.www.michenggw.com 4.18_linux-amd64.tar.gz 复制到两台虚拟机里
两台虚拟机安装ipfs
解压
tar -zxvf go-ipfs_v0.4.18_linux-amd64.tar.gz
移动文件
cd go-ipfs && sudo mv ipfs /usr/local/bin/ipfs
初始化IPFS节点(无需在内网寻找相邻节点)
ipfs init
在 192.168.1.210 虚拟机里创建共享密钥,同一个IPFS私链内的所有节点必须共享同一个密钥才能加入。
创建密钥:
./ipfs-swarm-key-gen > /root/.ipfs/swarm.key
创建完密钥放在了自己的ipfs默认配置文件夹下面(~/.ipfs/)
并清除所有缺省启动节点
ipfs bootstrap rm all
在 192.168.1.211 里清除所有缺省启动节点
ipfs bootstrap rm all
将 192.168.1.210 创建的 /root/.ipfs/swarm.key 复制到 192.168.1.211 的 /root/.ipfs/ www.dasheng178.com swarm.key
在 192.168.1.211 添加 192.168.1.210 为默认节点
ipfs bootstrap add /ip4/192.168.1.210/tcp/4001/ipfs/QmRBWWrTwd7d1QCKEjcLdGgZAvSKtSNgZdQznzF58RBwZ2
两台虚拟机启动IPFS节点
ipfs daemon &
查看peer
ipfs swarm peers
输出日志,成功
/ip4/192.168.1.210/tcp/4001/ipfs/QmRBWWrTwd7d1QCKEjcLdGgZAvSKtSNgZdQznzF58RBwZ2
Hyperledger Fabric 实战(十二): Fabric 源码本地调试的更多相关文章
- Alink漫谈(二十二) :源码分析之聚类评估
Alink漫谈(二十二) :源码分析之聚类评估 目录 Alink漫谈(二十二) :源码分析之聚类评估 0x00 摘要 0x01 背景概念 1.1 什么是聚类 1.2 聚类分析的方法 1.3 聚类评估 ...
- Hyperledger Fabric 实战(十): Fabric node SDK 样例 - 投票DAPP
Fabric node SDK 样例 - 投票DAPP 参考 fabric-samples 下的 fabcar 加以实现 目录结构 . ├── app │ ├── controllers │ │ └─ ...
- Java并发编程原理与实战十二:深入理解volatile原理与使用
volatile:称之为轻量级锁,被volatile修饰的变量,在线程之间是可见的. 可见:一个线程修改了这个变量的值,在另一个线程中能够读取到这个修改后的值. synchronized除了线程之间互 ...
- 十二.jQuery源码解析之.eq().first().last().slice()
eq(index):将集合中的索引为index的元素提取出来. first():返回集合中的第一个元素. .last():防护集合中的最后一个元素. .slice(start[,end]):返回集合中 ...
- SpringBoot实战(十二)之集成kisso
关于kisso介绍,大家可以参考官方文档或者是我的博客:https://www.cnblogs.com/youcong/p/9794735.html 一.导入maven依赖 <project x ...
- Python核心技术与实战——十二|Python的比较与拷贝
我们在前面已经接触到了很多Python对象比较的例子,例如这样的 a = b = a == b 或者是将一个对象进行拷贝 l1 = [,,,,] l2 = l1 l3 = list(l1) 那么现在试 ...
- Netty实战十二之WebSocket
如果你有跟进Web技术的最新进展,你很可能就遇到过“实时Web”这个短语,这里并不是指所谓的硬实时服务质量(QoS),硬实时服务质量是保证计算结果将在指定的时间间隔内被递交.仅HTTP的请求/响应模式 ...
- Node.js实战(十二)之Stream
Stream 是一个抽象接口,Node 中有很多对象实现了这个接口.例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出). Node.js,Str ...
- kubernetes实战(十二):k8s使用helm持久化部署redmine集成openLDAP
1.基本概念 此次安装的有Jenkins.Gitlab.Redmine,我公司目前使用的是独立于k8s集群之外单独部署的Jenkins等服务,此文章会介绍三种服务基于k8s的部署方式,之后集成之前部署 ...
随机推荐
- 我们一起学习WCF 第二篇WCF承载多个接口
前言:现在王大叔养了大批猪,赚了很多钱.但是最近发现养鸡也可以赚很多钱,他就像扩展业务开始养鸡.又过两年他发现市场对狗的需求量很大,他开始养狗.那么他改怎么做呢,不可能去修改猪住的地方把鸭子和狗放里面 ...
- OpenCL入门:(三:GPU内存结构和性能优化)
如果我们需要优化kernel程序,我们必须知道一些GPU的底层知识,本文简单介绍一下GPU内存相关和线程调度知识,并且用一个小示例演示如何简单根据内存结构优化. 一.GPU总线寻址和合并内存访问 假设 ...
- dotweb now released to Version 1.5
dotweb released to Version 1.5!!https://github.com/devfeel/dotweb What's new? 重要:go版本适配升级为1.9+ New f ...
- MindMaster安装教程以及激活破解教程
原文地址:https://www.jianshu.com/p/16d2fc7d8e45 第一.激活必须首先断网 第二.运行安装程序,安装完成后先不要打开 第三.把Cracks文件夹下的文件复制到软件安 ...
- 「日常训练」 Fire!(UVA-11624)
与其说是训练不如说是重温.重新写了Java版本的代码. import java.util.*; import java.math.*; import java.io.BufferedInputStre ...
- itchat个人练习 语音与文本图灵测试例程
背景介绍 itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. 使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人. 官方文档参考https://itchat ...
- Selenium2+python自动化-CSS定位语法
前言 一些人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css的 ...
- Siki_Unity_3-16_3D数学基础
Unity 3-16 3D数学基础 任务0-1:课程介绍 课程大纲: 1. 3D数学介绍 2. Unity中的几种坐标系: 全局坐标系.屏幕坐标系等 坐标系间的坐标转换:比如屏幕坐标转换到世界坐标 3 ...
- spark重点知识
1 scala 2 spark rdd 3 sprak core 4 性能优化 5 spark sql 6 spark streaming 掌握程度-精通的理解:
- mysql 无法启动,错误1067,进程意外终止
在做项目启动mysql数据库时,经常出现 这个错误,今天总结一下 //查看了网上很多的方法,都不适用,但或许对你适用.ps:网上只提供了怎么解决这个问题,但是没有将怎么去发现问题,对症下药才是王道.而 ...