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

原文地址:https://www.cnblogs.com/qwangxiao/p/10361194.html

时间: 2024-09-28 22:53:37

Hyperledger Fabric 实战(十二): Fabric 源码本地调试的相关文章

十二.jQuery源码解析之.eq().first().last().slice()

eq(index):将集合中的索引为index的元素提取出来. first():返回集合中的第一个元素. .last():防护集合中的最后一个元素. .slice(start[,end]):返回集合中的给定区间段的元素. first()和last()调用eq(),eq()通过slice()实现,slice()通过 .pushStack()实现. 相关源码 285行:用法很奇特,通过一个"+"把可能为字符串的i转换成一个数值. 300~301:先借用数组方法slice()从当前jQuer

Spark机器学习实战 (十二) - 推荐系统实战

0 相关源码 将结合前述知识进行综合实战,以达到所学即所用.在推荐系统项目中,讲解了推荐系统基本原理以及实现推荐系统的架构思路,有其他相关研发经验基础的同学可以结合以往的经验,实现自己的推荐系统. 1 推荐系统简介 1.1 什么是推荐系统 1.2 推荐系统的作用 1.2.1 帮助顾客快速定位需求,节省时间 1.2.2 大幅度提高销售量 1.3 推荐系统的技术思想 1.3.1 推荐系统是一种机器学习的工程应用 1.3.2 推荐系统基于知识发现原理 1.4 推荐系统的工业化实现 Apache Spa

【fabric实战指南二】Fabric v1.0 部署过程原理详解

区块链兄弟社区,区块链技术专业问答先行者,中国区块链技术爱好者聚集地 作者:吴寿鹤 来源:区块链兄弟 原文链接:http://www.blockchainbrother.com/article/18 著权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 编译fabric tools 我们会编译以下几个工具: github.com/hyperledger/fabric/common/configtx/tool/configtxgen github.com/hyperledger/fa

应用程序框架实战十二:公共操作类开发技巧(初学者必读)

本文专门为初学者而写,因为很多初学者可能还不了解公共操作类的作用和封装技巧,大部分有经验的程序员都会把自己所碰到的技术问题整理封装成类,这就是公共操作类.公共操作类往往具有一些通用性,也可能专门解决某些棘手问题.公共操作类是应用程序框架的核心,主要目标是解决大部分技术问题.我将在本文介绍封装公共操作类的要点,供初学者参考. 开发公共操作类的原因 很多初学者会奇怪,.Net Framework提供的API相当易用,为何还要多此一举,进行一层封装呢.下面列举封装公共操作类的一些动机. .Net Fr

ASP.NET MVC4+BootStrap 实战(十二)

最近实在是太忙,没时间写博客,只能夜里等孩子睡着了再写.感觉最近一个月又是在浪费时间,心里万分焦急.感觉自己的技术还不行,但是却没有时间去加强.吉日嘎啦的<程序员你伤不起>一书中讲到要孩子要晚了的坏处,比如自己30岁要的孩子,自己60岁了,孩子都30岁了,可能谁也照顾不上谁.其实我想说的是生早了也同样有坏处,比如现在只能晚上12点后写博客写程序. 好了,不多说了,来点高兴的,第一次也是第一个获得组内季度之星奖杯的我,终于觉得自己这三个月来当Master并且承担Coding任务的艰辛得到了很好的

Linux服务篇之十二:源码包构建LAMP服务器

实验环境:Apache服务器一台.Mysql服务器一台.PHP服务器一台 步骤一:安装Apache服务器 1.安装apr yum install gcc-c++ -y yum -y install epel-release tar zxf apr-1.5.2.tar.gz cd apr-1.5.2 ./configure --prefix=/usr/local/apr;echo $? make && make install;echo $? cd .. 2.安装apr-util yum -

Node.js 切近实战(十二) 之Linux部署

之前的话我们的项目都是跑在windows上,今天我们要将我们的程序跑到linxu机器上.在看linux部署之前,我们先看一下node.js类似于asp.net mvc的过滤器或者叫拦截器.在app.js中我们加入如下代码 var beforeRequest = function (req, res, next) {     if (req.originalUrl == '/'          || req.originalUrl == '/login'          || req.orig

Netty实战十二之WebSocket

如果你有跟进Web技术的最新进展,你很可能就遇到过"实时Web"这个短语,这里并不是指所谓的硬实时服务质量(QoS),硬实时服务质量是保证计算结果将在指定的时间间隔内被递交.仅HTTP的请求/响应模式设计就使得其很难被支持. 实时Web利用技术和实践,使用户在信息的作者发布信息之后就能够立即收到信息,而不需要他们或者他们的软件周期性地检查信息源以及获取更新. 1.WebSocket简介 WebSocket协议是完全重新设计的协议,旨在为Web上的双向数据传输问题提供一个切实可行的解决方

《Android源码设计模式解析与实战》读书笔记(二十二)

第二十二章.享元模式 享元模式是结构型设计模式之一,是对对象池的一种实现.就像它的名字一样,共享对象,避免重复的创建.我们常用的String 就是使用了共享模式,所以String类型的对象创建后就不可改变,如果当两个String对象所包含的内容相同时,JVM只创建一个String对象对应这两个不同的对象引用. 1.定义 采用一个共享来避免大量拥有相同内容对象的开销.使用享元模式可有效支持大量的细粒度对象. 2.使用场景 (1)系统中存在大量的相似对象. (2)细粒度的对象都具备较接近的外部状态,