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 源碼本地調試