超级账本 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 源码

  1. 在mkdir -p ~/go/src/github.com/hyperledger/
  2. cd ~/go/src/github.com/hyperledger
  3. git clone https://github.com/hyperledger/fabric.git
  4. git checkout v2.3.3

三、执行Fabric脚本

在fabric目录下执行脚本 ./scripts/bootstrap.sh
脚本的三个作用:

  1. 下载fabric-samples
  2. Hyperledger Fabric 平台特定二进制文件,在fabric-samples/bin目录下
  3. 下载指定版本的 Hyperledger Fabric docker 镜像



所有文件都已下好,如果网络不行的话就将bootstrap.sh脚本离线保存并执行。


四、启动测试网络

步骤来源于官网教程,具体解析查询官网

  1. cd fabric-sample/test-network 切换到test-network目录下,后续的所有操作都在这里进行。
  2. 运行 sudo ./network.sh down; 删除先前的容器和工程。
  3. 创建一个Fabric 网络。执行 sudo ./network.sh up;该网络由两个peer 节点和order 节点组成。
  4. 创建通道 sudo ./network.sh createChannel
  5. 在通道上部署链码 sudo ./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
  6. 与网络交互

设置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。就可以了。

总结下来差不多就是这些问题了,希望对大家有所帮助。

以上是关于超级账本 Hyperledger Fabric v2.3.3 Test network测试网络踩坑的主要内容,如果未能解决你的问题,请参考以下文章

Hyperledger Fabric 超级账本节点分布和交易流程图

HyperLedger Fabric Introduction——区块链超级账本介绍

区块链之Hyperledger(超级账本)Fabric v1.0 的环境搭建(更新)

超级账本 Hyperledger Fabric v2.3.3 Test network测试网络踩坑

区块链相关论文研读3- 关于超级账本Hyperledger Fabric的性能优化

Hyperledger Fabric启用CouchDB为状态数据库