ubnutu20.4环境下Hyperledger Fabric2.x.x 搭建


一、环境:ubnutu20.4

VMware虚拟机安装Ubuntu20.04详细图文教程(转载)

安装所需工具

换源
在这里插入图片描述

安装小工具

sudo apt-get update   
sudo apt-get install ssh 
sudo apt-get install curl 
sudo apt-get install git 
sudo apt-get install gcc 
sudo apt-get install vim 
sudo apt-get install make 
sudo apt-get install net-tools
sudo apt-get install jq  

安装docker

安装docker(转载)

将当前用户加入docker组

sudo gpasswd -a <用户名> docker
newgrp docker

测试docker命令是否正常使用

docker version

安装docker-compose

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

查看docker、docker-compose版本

docker version
docker-compose version

在这里插入图片描述

在这里插入图片描述

安装go

根据下载的docker版本信息里支持的go版本,下载比它高版本的go。
例如本文安装的docker中go版本为gol.19.8,则:

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

将go解压到/opt/local

sudo tar -C /usr/local -xzf go1.17.1.linux-amd64.tar.gz

设置环境编写,修改profile

sudo vim ~/.profile

在最后插入


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

输入命令载入环境变量

source ~/.profile

使用 go version 查看go是否安装成功
在这里插入图片描述

输入 sudo reboot 重启虚拟机

二、fabric2.x.x 环境搭建

创建目录

sudo mkdir -p $GOPATH/src/github.com/hyperledger 
cd $GOPATH/src/github.com/hyperledger

给GOPATH路径权限

sudo chmod -R 777 $GOPATH 

拉取fabric源码

git clone https://github.com/hyperledger/fabric.git

进入 /opt/gopath/src/github.com/hyperledger/fabric/scripts 目录,下载目录下 ./bootstarp.sh。

./bootstarp.sh

等待下载bin文件和fabric-ca的bin文件,以及拉取镜像。
下载完成后输入 docker images查看拉取的镜像。
在这里插入图片描述

配置go代理

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

在这里插入图片描述

启动测试网络

在fabric-samples代码库的test-network目录中找到启动网络的脚本

cd fabric-samples/test-network

在test-network目录中,运行以下命令删除先前运行的所有容器或工程:

./network.sh down

启动网络

./network.sh up

命令执行成功,将看到已创建的节点
运行以下命令将列出所有正在计算机上运行的docker容器

docker ps -a

创建一个通道

./network.sh createChannel

命令执行成功,界面如下:
在这里插入图片描述

也可以将up 和 createChannel 一起,一步建立网络和创建通道

./network.sh up createChannel

在通道启动一个链码

使用network.sh创建频道后,可以使用以下命令在通道上启动链码:

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

在这里插入图片描述

与网络交互

可以在fabric-samples代码库的bin文件夹中找到peer二进制文件。 使用以下命令将这些二进制文件添加到您的CLI路径:

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

还需要将fabric-samples代码库中的FABRIC_CFG_PATH设置为指向其中的core.yaml文件:

export FABRIC_CFG_PATH=$PWD/../config/

设置环境变量,以允许您作为Org1操作peer CLI:

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":[]}'

命令成功则:
在这里插入图片描述

用你的 CLI 工具来查询账本:

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

如果成功,将看到类似输出:
在这里插入图片描述

使用以下的指令来通过调用 asset-transfer (basic) 链码改变账本上的资产所有者:

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 来运行。设置以下的环境变量来操作 Org2:

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

查询运行在 peer0.org2.example.com asset-transfer (basic) 链码:

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

结果显示 “asset6” 转给了 Christopher:
在这里插入图片描述

关停网络

./network.sh down

该命令将停止并删除节点和链码容器,删除组织加密材料,并从Docker Registry移除链码镜像。 该命令还删除之前运行的通道项目和docker卷。如果您遇到任何问题,还允许您再次运行./ network.sh up。

后续请参考官方文档。

本文内容引用他人文章,如有侵权,请联系作者删除。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值