前期准备
修改下载源(这里用阿里源,其它国内源自行查找)
#备份配置文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
#编辑配置文件(没有vim可以用gedit)
sudo vim /etc/apt/sources.list
#在配置文件开头添加以下内容
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
#更新一下
sudo apt-get update
sudo apt-get upgrade
安装vim
sudo apt-get install vim
安装git
sudo apt-get install git
安装curl
sudo apt-get install curl
安装wget
sudo apt-get install wget
环境准备
1.go语言环境
安装go1.11以及以上版本
cd ~
-
下载
wget https://golang.google.cn/dl/go1.15.6.linux-amd64.tar.gz
解压
tar -xzf go1.15.6.linux-amd64.tar.gz
移动
sudo mv go /usr/local
创建gopath目录
在home目录下创建go文件夹,用于存放go项目源码。
#配置GO的环境变量
sudo vim ~/.bashrc
或者
sudo gedit ~/.bashrc
#在文末添加以下内容
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
#环境变量生效
source ~/.bashrc
更换Go代理
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
#查看GO版本(若无GO的版本信息,尝试在~/.profile中添加GO路径,操作类似)
cd ~
go version
2.Docker-ce安装
依次执行以下命令进行安装
#卸载旧版本Docker
sudo apt-get remove docker docker-engine docker.io
#安装必要的系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
#安装GPG证书
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt-get update
sudo apt-get install -y docker-ce
启动docker:
sudo service docker start
使docker开机自启动:
sudo systemctl enable docker
检查
docker
将需要使用docker的用户加入docker用户组
sudo groupadd docker
sudo usermod -aG docker $USER
sudo mkdir -p /etc/docker
#编辑/etc/docker/daemon.json
sudo gedit /etc/docker/daemon.json
#在文件中添加以下内容(这里用的阿里云的镜像地址,其它自行百度)
{
"registry-mirrors": [
"https://6kx4zyno.mirror.aliyuncs.com"
]
}
#重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
#查看docker版本
docker version
#授权
sudo chmod -R 777 /var/run/docker.sock
安装Docker-Compose
安装python-pip命令
sudo apt-get install python-pip
错误:
解决:
sudo apt-get install aptitude
sudo aptitude install python-pip (先n后y)
python -m pip install --upgrade pip
然后使用如下命令安装docker-compose:
sudo pip install docker-compose
查看版本:
docker-compose –version
(如果安装docker-compose报错了)
sudo curl -L https://github.com/docker/compose/releases/download/1.27.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
Fabric环境搭建
- 在GOPATH目录下创建Hyperledger目录:
sudo mkdir -p $GOPATH/src/github.com/hyperledger
进入相对应的目录,输入命令:
cd $GOPATH/src/github.com/hyperledger
然后从网上下载fabric源码,执行命令:
首先先给GPATH路径解锁:
sudo chmod -R 777 $GOPATH
下载
git clone https://github.com/hyperledger/fabric.git
如果慢,可以用gitee
git clone https://gitee.com/hyperledger/fabric.git
切换到指定版本版本
cd fabric
git checkout v2.2.1
进入cd scripts目录执行 ./bootstrap.sh
cd scripts
./bootstrap.sh
这时scripts目录里应出现bin,config,fabric-sample三个文件夹
但是我没有出现fabric-sample,于是去Tags · hyperledger/fabric-samples · GitHub官网直接下载对应版本添加到目录里,并且把scripts目录里的bin,config,复制到fabric-sample文件里。
测试网络
cd fabric-samples/test-network
启动测试网络
./network.sh up
使用完测试网络后,可执行以下命令关闭网络:
./network.sh down
链码案例——basic
1、部署链码basic
进入 test-network 目录
cd $GOPATH/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network
执行以下命令:
启动网络
./network.sh up
创建通道(创建成功后默认名称为 mychannel)
./network.sh createChannel
在test-network目录下启动链码:
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
-ccn:为指定链码名称
-ccl:为指定链码语言
网络交互
执行以下命令将 cli 客户端添加到环境变量中:
还需要将 fabric-samples 代码库中的 FABRIC_CFG_PATH 设置为指向其中的 core.yaml 文件:
export PATH=${PWD}/../bin:$PATH
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
CORE_PEER_TLS_ROOTCERT_FILE 和 CORE_PEER_MSPCONFIGPATH 环境变量指向 Org1 的 organizations 文件夹中的的加密材料。
执行以下命令用一些资产来初始化账本:
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":[""]}'
执行成功会返回 Chaincode invoke successful. result: status:200
执行以下指令来查询通道账本中的资产列表:
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"]}'
学习Fabric(一):fabric2.2环境搭建和测试网络-CSDN博客
查询:
peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset6"]}'
- 1
至此测试网络结束,执行关闭网络:
sudo ./network.sh down
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
以前的
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
下载执行脚本,此脚本用来自动化下载 fabric 镜像、程序和测试网运行脚本等工具:
wget https://gitee.com/real__cool/fabric_install/raw/main/bootstrap.sh
给脚本添加执行权限:
$ chmod +x bootstrap.sh
执行脚本,指定下载 v1.4.0 版本的相关工具:
./bootstrap.sh 1.4.4 1.4.4
将这些程序复制到 GOPATH/bin 路径下以供之后的开发使用:
$ cp fabric-samples/bin/* $GOPATH/bin
3. 运行一个简单的 byfn 测试网
fabric-samples 目录下包含多个测试用例,最简单的测试用例即为 first-network 下的 byfn.sh 脚本的测试网络:
cd fabric-samples/first-network
./byfn.sh up
./byfn.sh down
./byfn.sh up报错!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
解决:
用vi打开~./bashrc
vi ~/.bashrc
增加下面的环境变量,保存退出
export PATH=$PATH:$GOPATH/src/github.com/hyperledger/fabric-samples/bin
使环境变量立即生效
source ~/.bashrc