前言
最近在学习使用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环境变量
1export 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。就可以了。
总结下来差不多就是这些问题了,希望对大家有所帮助。
|