作为开发具有模块化架构的应用程序或解决方案的基础,Hyperledger Fabric实现了组件(如共识、成员服务)的即插即用。Hyperledger Fabric利用容器技术来托管称为“链码”的智能合约,其中包含系统的应用程序逻辑。
一、准备工作
1. 检查操作系统:uname -a
2. 安装所需工具(git, curl, docker, docker-compose, golang)
(1)安装git
sudo apt update
sudo apt install git
验证git是否安装成功:git --version
(2)安装curl
sudo apt install curl
(3)安装docker
sudo apt update
sudo apt install docker.io
查看docker是否安装成功:docker --version
(4)安装docker-compose
sudo apt install docker-compose
查看docker-compose是否安装成功:docker-compose --version
(5)安装golang
① 下载golang
sudo wget https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
② 解压go1.10.3.linux-amd64.tar.gz文件(使用-C来指定压缩路径)
sudo tar -zxvf go1.10.3.linux-amd64.tar.gz
③ 配置环境变量
cd /etc
sudo chmod +w profile
sudo vim profile
在profile文件中添加以下环境变量:
export GOPATH=$HOME/go
export GOROOT=/home/fabric/golang/go
export PATH=$GOROOT/bin:$PATH
使用source profile命令,使得添加环境变量后的配置文件生效。
查看golang是否安装成功:go version
注意:Fabric 1.0.0版本要求Golang 1.7以上版本,Fabric 1.1.0版本要求Golang 1.9以上版本,Fabric 1.2.0版本要求Golang 1.10以上版本。
二、安装Hyperledger Fabric
1. 下载fabric-samples
① 在/home目录下创建一个fabric目录:
sudo mkdir fabric && cd fabric
② 新建文件bootstrap.sh并授予777权限
sudo touch bootstrap.sh
sudo chmod 777 bootstrap.sh
将https://github.com/hyperledger/fabric/blob/master/script/bootstrap.sh中的内容复制、保存到bootstrap.sh文件中后退出。
③ 执行bootstrap.sh
sudo ./bootstrap.sh 1.2.0
如果遇到下载完成之后,没有fabric-samples目录的情况时,不要慌,重新再执行一遍sudo ./bootstrap.sh 1.2.0命令即可;对于已下载的镜像文件,第二次执行sudo ./bootstrap.sh 1.2.0命令时不会重复下载。
2. 配置环境变量
① 切换到/home/用户名目录下,打开.bashrc文件
cd /home/zhangqingqing zhangqingqing为用户名
ls -a
vim .bashrc
② 添加Fabric的环境变量(/home/fabric/fabric-samples为fabric-samples所在目录)
export PATH=/home/fabric/fabric-samples/bin:$PATH
③ 使得配置文件.bashrc生效
source .bashrc
此时,Hyperledger Fabric安装成功~~~
三、测试Hyperledger Fabric网络环境
Hyperledger Fabric网络环境的构成较为复杂,由N个节点组成一个分布式网络,每个节点都有自己的实体身份标识;而且Hyperledger Fabric可以通过通道将一个网络分割成不同的私有子网,从而实现不同账本之间数据的隔离性。所以,我们在使用Hyperledger Fabric之前,必须先构建所需的网络环境。
1. 测试Hyperledger Fabric环境
① byfn.sh脚本中可以使用的命令
up: 启动
down: 清除网络
restart: 重新启动
generate: 生成证书及创世区块
upgrade: 将网络从1.1.x升级到1.2.x
-c: 用于指定channelName,默认值“mychannel”
-t: CLI timeout时间,默认值10
-d: 延迟启动,默认值3
-f: 使用指定的网络拓扑结构文件,默认使用docker-compose-cli.yaml
-s: 指定使用的数据库,可选goleveldb/couchdb
-l: 指定chaincode使用的语言,可选golang/node
-i: 指定镜像tag,默认“latest”
2. 使用自动化脚本的方式构建第一个Hyperledger Fabric网络环境
① 生成证书和密钥(并实现引导服务启动及配置通道所需的一系列配置文件)
sudo ./byfn.sh -m generate
命令执行成功后,会生成1个Orderer + 4个Peer + 1个CLI的网络结构,4个Peer包含在2个Org中。
② 启动网络(确认Hyperledger Fabric网络环境是否能够正常工作)
sudo ./byfn.sh -m up
命令执行成功后,出现上图类似内容时,则代表网络启动且测试成功~~~
③ 关闭网络(防止后期启动网络时造成的冲突错误)
sudo ./byfn.sh -m down
注意:使用byfn.sh脚本关闭网络后,将关闭容器,且删除加密文件,并从Docker Registry中删除链码图像。