借助开发网络调试 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