栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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安装
    • 2. docker安装
    • 3. docker-compose安装
  • 二、fabric环境部署
    • 1. 创建文件夹(路径自行创建)
    • 2. 进入到新创建的路径下拉取fabric源码
    • 3. 下载fabric镜像及二进制文件
    • 4. 启动fabric测试环境
    • 5. 部署链码
    • 6. 链码交互
    • 7. 关停测试环境
    • 8.记录此次环境搭建中遇到的问题:

一、基础环境准备 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版本进行了改动,将链码作为外部服务运行,通过本文中写到的设置环境变量方式即可在容器外操作链码。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/450309.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号