fabric2.2版本 单机测试环境搭建

​说明:
1. fabric版本:v2.2.3
2. centos版本: v7.9
3. go版本: 1.16.9
4. docker版本: 20.10.10
5. docker-compose版本: 1.26.2

官方Fabric测试网络搭建文档:https://hyperledger-fabric.readthedocs.io/zh_CN/release-2.2/test_network.html#

一、基础环境准备

1. go安装

安装go可以选择在线安装与离线安装
(1) 在线安装方式(本文采用这种方式)

wget https://studygolang.com/dl/golang/go1.16.9.linux-amd64.tar.gz
tar -zxvf go1.16.9.linux-amd64.tar.gz 

打开配置文件:

vim /etc/profile

配置环境变量:

export PATH=$PATH:/usr/local/go/bin 
export GOROOT=/usr/local/go 
export GOPATH=$HOME/go 
export PATH=$PATH:$HOME/go/bin

运行命令使环境变量生效

source /etc/profile

验证是否安装成功

go version

在这里插入图片描述
显示go版本号即是安装成功

(2) 离线安装方式
安装包下载地址:https://golang.google.cn/dl/

tar -zxvf go1.16.9.linux-amd64.tar.gz 

2. docker安装

docker同样可以选择在线安装与离线安装
(1) 在线安装方式(本文采用这种方式)

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh

(2) 离线安装方式
安装包下载:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
安装教程:https://blog.csdn.net/hr787753/article/details/93098329
(3) 安装完成之后查看docker服务状态并启动

sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl restart docker

验证docker是否安装成功:

docker version

在这里插入图片描述
显示docker版本号即是安装成功

3. docker-compose安装

下载docker-compose二进制文件:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
mv /root/docker-compose  /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

验证docker-compose是否安装成功:

docker-compose version

在这里插入图片描述
显示docker-compose版本号即是安装成功

二、fabric环境部署

1. 创建文件夹(路径自行创建)

mkdir -p /root/go/src/github.com/hyperledger

2. 进入到新创建的路径下拉取fabric源码

git clone https://gitee.com/jessyl/fabric.git

进入fabric目录切换版本号:

cd fabric/
git branch -a
git checkout release-2.2

在这里插入图片描述

3. 下载fabric镜像及二进制文件

cd scripts/

在这里插入图片描述
执行脚本文件:./bootstrap.sh
:执行bootstrap.sh脚本可能会需要很长一段时间,并且镜像源在国内被墙了,可能最终还是下载失败(有时候脚本多执行几次可能会成功)。

如果下载失败可采取下面这种方法(镜像与二进制文件分开下载):
(1) 镜像下载与fabric-samples 目录下载
修改bootstrap.sh脚本文件,把脚本中的pullBinaries函数注释掉:

vim bootstrap.sh

在这里插入图片描述
执行修改后的脚本文件:./bootstrap.sh
在这里插入图片描述
脚本执行完后会拉取fabric镜像及fabric-samples 目录:
在这里插入图片描述
在这里插入图片描述
这里我在执行完脚本后在fabric-sample/bin目录下就有了二进制文件(没有fabric-ca的二进制文件,后面的测试中我也没去下载)
(2) 二进制文件下载
最先执行bootstrap.sh脚本失败的时候,显示的有需要下载的二进制文件的版本以及下载路径
在这里插入图片描述
可以根据日志中的路径下载或者根据下文的链接下载:
https://github.com/hyperledger/fabric/releases/tag/v2.2.3
https://github.com/hyperledger/fabric-ca/releases
在这里插入图片描述
把下载好的两个压缩包放到fabric-samples/bin目录下并解压
解压:

tar -zxvf hyperledger-fabric-linux-amd64-2.2.3.tar.gz
tar -zxvf hyperledger-fabric-ca-linux-amd64-1.5.0.tar.gz

4. 启动fabric测试环境

进入到test-network目录

cd fabric-samples/test-network/

在这里插入图片描述
执行启动脚本:

./network.sh up

如图所示即环境搭建成功
在这里插入图片描述
创建通道:

./network.sh createChannel

如图所示即是创建通道成功
在这里插入图片描述

5. 部署链码

./network.sh deployCC

我在执行此命令的时候报错了:
在这里插入图片描述
错误提示需要指定链码的名称、链码路径、链码语言
所有我又执行如下命令:

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

嘿嘿~ 又报错了。。。
在这里插入图片描述
错误提示链码文件中的依赖包拉取失败

百度查询文档得到如下解决方案(设置GOPROXY代理):

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

再次执行命令:

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

嘻嘻~ 直接成功了 呱唧呱唧_
在这里插入图片描述

6. 链码交互

在test-network目录进行操作
将二进制文件(fabric-samples/bin/目录下)添加到CLI路径:

export PATH=${PWD}/../bin:$PATH

设置成功后即可使用二进制文件命令:
在这里插入图片描述

将fabric-samples代码库中的FABRIC_CFG_PATH设置为指向core.yaml(fabric-samples/config/目录下)文件:

export FABRIC_CFG_PATH=$PWD/../config/

设置org1下的peer的环境变量(需操作哪个组织下的peer就设置哪个peer的环境变量)

export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export 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":[]}'

执行成功如下:
在这里插入图片描述
通过命令查看账本中的资产列表:

peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'

在这里插入图片描述
账本资产转账:

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":"TransferAsset","Args":["asset6","Christopher"]}'

在这里插入图片描述
查看转账后的资产:
设置Org2下peer的环境变量:

export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:9051

查看资产:

peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset6"]}'

在这里插入图片描述

7. 关停测试环境

./network.sh down

8.记录此次环境搭建中遇到的问题:

问题描述:

Error: error getting endorser client for query: endorser client failed to connect to localhost:7051: failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp 127.0.0.1:7051: connect: connection refused"

解决方案:
这里是我自己疏忽没有仔细阅读官方文档,我还是按照 fabric1.4版本那种操作思维去操作fabric2.2版本的测试环境,就是通过docker exec -it cli bash命令进入到docker容器内操作链码。fabric2.2版本进行了改动,将链码作为外部服务运行,通过本文中写到的设置环境变量方式即可在容器外操作链码。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值