借助开发网络调试 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 源码本地调试的更多相关文章

  1. Alink漫谈(二十二) :源码分析之聚类评估

    Alink漫谈(二十二) :源码分析之聚类评估 目录 Alink漫谈(二十二) :源码分析之聚类评估 0x00 摘要 0x01 背景概念 1.1 什么是聚类 1.2 聚类分析的方法 1.3 聚类评估 ...

  2. Hyperledger Fabric 实战(十): Fabric node SDK 样例 - 投票DAPP

    Fabric node SDK 样例 - 投票DAPP 参考 fabric-samples 下的 fabcar 加以实现 目录结构 . ├── app │ ├── controllers │ │ └─ ...

  3. Java并发编程原理与实战十二:深入理解volatile原理与使用

    volatile:称之为轻量级锁,被volatile修饰的变量,在线程之间是可见的. 可见:一个线程修改了这个变量的值,在另一个线程中能够读取到这个修改后的值. synchronized除了线程之间互 ...

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

    eq(index):将集合中的索引为index的元素提取出来. first():返回集合中的第一个元素. .last():防护集合中的最后一个元素. .slice(start[,end]):返回集合中 ...

  5. SpringBoot实战(十二)之集成kisso

    关于kisso介绍,大家可以参考官方文档或者是我的博客:https://www.cnblogs.com/youcong/p/9794735.html 一.导入maven依赖 <project x ...

  6. Python核心技术与实战——十二|Python的比较与拷贝

    我们在前面已经接触到了很多Python对象比较的例子,例如这样的 a = b = a == b 或者是将一个对象进行拷贝 l1 = [,,,,] l2 = l1 l3 = list(l1) 那么现在试 ...

  7. Netty实战十二之WebSocket

    如果你有跟进Web技术的最新进展,你很可能就遇到过“实时Web”这个短语,这里并不是指所谓的硬实时服务质量(QoS),硬实时服务质量是保证计算结果将在指定的时间间隔内被递交.仅HTTP的请求/响应模式 ...

  8. Node.js实战(十二)之Stream

    Stream 是一个抽象接口,Node 中有很多对象实现了这个接口.例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出). Node.js,Str ...

  9. kubernetes实战(十二):k8s使用helm持久化部署redmine集成openLDAP

    1.基本概念 此次安装的有Jenkins.Gitlab.Redmine,我公司目前使用的是独立于k8s集群之外单独部署的Jenkins等服务,此文章会介绍三种服务基于k8s的部署方式,之后集成之前部署 ...

随机推荐

  1. C#:在AnyCPU模式下使用CefSharp

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述如何在AnyCPU模式下使用CefSharp 因为在某些情况下,不得不用AnyCPU,但是CefS ...

  2. 安装centos minimal 版本后安装setup包(linux)

    网络配置好后,输入命令 yum install setuptool,安装过程有两个确认,输入Y即可

  3. jenkens其实是代码上传工具

    Jenkins 持续集成使用教程 用 jenkins 有什么好处 通过规范化来完成,简单,繁琐,浪费时间的重复工作 规范化工作,以免出现低级错误 实现随时随地任何人一键构建 ...... 安装 jen ...

  4. 解决Sublime Text 3中文显示乱码(tab中文方块)问题

    博客分类:  Sublime   一.文本出现中文乱码问题 1.打开Sublime Text 3,按Ctrl+-打开控制行,复制粘贴以下python代码,然后回车运行. 2. 复制并粘贴如下代码: P ...

  5. Java EE平台介绍(译)

    Java EE平台介绍 2.1 企业应用总览 这一部分将对企业应用及其设计和开发进行简单介绍. 就像之前说的,Java EE 平台是为了帮助开发者开发大规模.多层次.可伸缩.服务可靠.网络安全的应用而 ...

  6. 技本功丨利用 Atomic 构建 React 项目工作流,so easy!

    近日刷微博,#2018年结婚率创新低#荣登热门话题NO.1,沪浙最不积极. 生活压力越大,缺爱的人也越来越多...据本萌的不完全观察,程序猿虽然是压力加成的职业,在袋鼠云还是有不少早早脱了单.至于,脱 ...

  7. 《Learning scikit-learn Machine Learning in Python》chapter1

    前言 由于实验原因,准备入坑 python 机器学习,而 python 机器学习常用的包就是 scikit-learn ,准备先了解一下这个工具.在这里搜了有 scikit-learn 关键字的书,找 ...

  8. “Hello World!”团队第七次Scrum立会

    "Hello world!"团队召开第七次Scrum立会.博客内容: 1.会议时间 2.会议成员 3.会议地点 4.会议内容 5.Todo list 6.会议照片 7.燃尽图 一. ...

  9. Firefox必备的24款web开发插件

    from: 软件过滤: 排序:收录时间 | 浏览数 网页开发FireFox插件 Firebug Firebug是Firefox下的一款开发类插件,现属于Firefox的 五星级强力推荐插件之一.它集H ...

  10. hdu 5524

    由于是完全二叉树,所以我们可以预先知道整棵树的形状,因此可以判断根节点的两个子节点哪个是满二叉树,哪个不是满二叉树(必然是一边满,一边不满),对于满的子节点,我们可以直接求出它的不同子树的个数,也就是 ...