超级账本 Hyperledger Fabric v2.3.3 Test network测试网络踩坑
Posted Buliang_C
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超级账本 Hyperledger Fabric v2.3.3 Test network测试网络踩坑相关的知识,希望对你有一定的参考价值。
文章目录
前言
最近在学习使用Fabric联盟链,并测试了官网的 Fabric test network
。Fabric环境的配置大概梳理个流程就不赘述了,很多篇文章都有详细记录。这篇文章主要记录使用Test network测试网络的时候遇到的一些问题。
一、环境准备
环境准备
docker :20.10.11
docker-compose :1.25.0
go version :1.17.3
node version :14.18.2
二、拉取Fabric V2.3.3 源码
- 在mkdir -p ~/go/src/github.com/hyperledger/
- cd ~/go/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
git checkout v2.3.3
三、执行Fabric脚本
在fabric目录下执行脚本 ./scripts/bootstrap.sh
脚本的三个作用:
- 下载fabric-samples
- Hyperledger Fabric 平台特定二进制文件,在fabric-samples/bin目录下
- 下载指定版本的 Hyperledger Fabric docker 镜像
所有文件都已下好,如果网络不行的话就将bootstrap.sh脚本离线保存并执行。
四、启动测试网络
cd fabric-sample/test-network
切换到test-network目录下,后续的所有操作都在这里进行。- 运行
sudo ./network.sh down
; 删除先前的容器和工程。 - 创建一个Fabric 网络。执行
sudo ./network.sh up
;该网络由两个peer 节点和order 节点组成。
- 创建通道
sudo ./network.sh createChannel
- 在通道上部署链码
sudo ./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
- 与网络交互
设置fabric环境变量
1
export PATH=$PWD/../bin:$PATH
2export FABRIC_CFG_PATH=$PWD/../config/
3export CORE_PEER_TLS_ENABLED=true
4export CORE_PEER_LOCALMSPID="Org1MSP"
5export CORE_PEER_TLS_ROOTCERT_FILE=$PWD/organizations/peerOrg anizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
6export CORE_PEER_MSPCONFIGPATH=$PWD/organizations/peerOrg anizations/org1.example.com/users/Admin@org1.example.com/msp
7export CORE_PEER_ADDRESS=localhost:7051
运行以下命令以使用资产初始化分类帐:
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride
orderer.example.com --tls --cafile
$PWD/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
-C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles $PWD/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
–peerAddresses localhost:9051 --tlsRootCertFiles $PWD/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
-c ‘“function”:“InitLedger”,“Args”:[]’
出现这个代表成功了!
-> INFO 001 Chaincode invoke successful. result: status:200
五、遇到的问题
Q: 下载Fabric镜像的时候,特别慢,时不时还卡住。
A: docker设置阿里云镜像,加速fabric镜像下载。
Q: 在部署链码之前,先去fabric-samples/asset-transfer-basic/application-go目录下,下载好所需的所有依赖到vendor目录下。
A: sudo go mod vendor
Q: 部署链码的时候会下载go的依赖,如果为切换源的话会导致下载不下来。
A: 切换 go 代理。go env -w GOPROXY=https://goproxy.cn,direct
Q:Error: failed to normalize chaincode path: failed to determine module root: exec: “go”: executable file not found in $PATH
A:这个问题应该是出现在部署链码那里。原因出在管理员下sudo go找不到,导致fabric在root权限下执行的时候找不到go命令。sudo go
会出现command not found
。这时候就需要 配置 /etc/sudoers 文件中的 Defaults secure_path 这一项。将 /usr/local/go/bin
目录加入进去。
Q:Cannot run peer because error when setting up MSP of type bccsp from directory /home/buliangc/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp: KeyMaterial not found in SigningIdentityInfo
A: 这个问题也应该是出现在与网络交互那里。这个问题具体解决方案,首先在test-network路径下执行su root。在root下面先重新执行一遍暴露所有环境变量,否则会提示找不到peer命令,再重新执行这一大段invoke。就可以了。
总结下来差不多就是这些问题了,希望对大家有所帮助。
以上是关于超级账本 Hyperledger Fabric v2.3.3 Test network测试网络踩坑的主要内容,如果未能解决你的问题,请参考以下文章
Hyperledger Fabric 超级账本节点分布和交易流程图
HyperLedger Fabric Introduction——区块链超级账本介绍
区块链之Hyperledger(超级账本)Fabric v1.0 的环境搭建(更新)
超级账本 Hyperledger Fabric v2.3.3 Test network测试网络踩坑