Ubuntu20.04搭建Hyperledger Fabric 2.2.2

AI数据 区块链  收藏
0 / 1320

go语言环境

版本1.16.3

由于apt-get命令安装golang在国内网络环境受限制,推荐手动安装。
前往go语言中文网https://studygolang.com/dl

  • 下载
wget http://go.dev/dl/go1.16.3.linux-amd64.tar.gz

进入下载的压缩包文件所在目录
将压缩包解压至/usr/local/ 目录下

$ sudo tar zxvf go1.16.3.linux-amd64.tar.gz -C /usr/local/

进入/proj/ 目录,新建workspace文件夹作为Golang的工作目录,也可以取别的名字,后面相关的命令和代码替换workspace就行

$ sudo mkdir workspace
$ sudo chmod -R 777 workspace

修改环境变量

$ sudo vim ~/.bashrc

弹出一个记事本,按a进入插入模式,复制后右键粘贴以下内容至记事本内容最上方

export GOROOT=/usr/local/go #GOROOT是系统上安装Go软件包的位置。
export GOPATH=/proj/workspace #GOPATH是工作目录的位置。
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

然后按enter换行,让内容有序一点,按esc,输入:wq即可保存并退出

使用以下命令应用环境变量的更改命令

$ source ~/.bashrc

查看环境变量是否正确

$ export

输出有以下内容

declare -x GOROOT="/usr/local/go"
declare -x GOPATH="/proj/workspace"

验证go是否安装成功

$ go version
# 输出为
go version go1.16.3 linux/amd64
# 设置GOPROXY代理
$ go env -w GOPROXY=https://goproxy.cn,direct
# 设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔
$ go env -w GOPRIVATE=.gitlab.com,.gitee.com
# 设置 GOSUMDB=“sum.golang.google.cn”, 这个是专门为国内提供的sum 验证服务
$ go env -w GOSUMDB="sum.golang.google.cn"

至此Go语言已经安装完成。

安装docker

版本20.10.6

卸载旧版本docker
docker,docker.io,docker-engine都是docker以往的名字
在安装Docker前先将其他任何已有Docker删除,如果你之前系统中没有装过Docker可以跳过这一步

$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install  apt-transport-https  ca-certificates curl  gnupg lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update

往往最新的docker不一定就能适合你的系统,先查看可以安装的版本

$ apt-cache madison docker-ce
$ sudo apt-get install docker-ce=20.10.6 docker-ce-cli=20.10.6 containerd.io
$ docker --version
$ sudo systemctl start docker
$ sudo systemctl enable docker

添加自己的账户到docker组,同样自己的用户名替换尖括号部分,以后用docker就不用sudo了

$ sudo usermod -a -G docker openoker

安装docker-compose

版本1.27.2

$ 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
# 更改docker-compose权限
$ sudo chmod +x /usr/local/bin/docker-compose
# 执行一下docker-compose
$ docker-compose
# 正常会出使用规则,如果报错则
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 查看docker-compose版本
$ docker-compose --version
#显示v1.27.2

安装Fabric

建立用于存放fabric-samples的文件夹,递归建立目录

$ sudo mkdir /proj/workspace/pkg/mod/github.com/hyperledger
$ cd /proj/workspace/pkg/mod/github.com/hyperledger

拉取Fabric v2.2.2 及 Fabric-ca v1.4.9,可能会中断多试几遍,五秒没反应或者出现2.2.2没法拉取就ctrl+c重来。

$ curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.2.2 1.4.9

下载完成后查看docker镜像

$ docker images
hyperledger/fabric-tools          2.2       212bfff67240   2 months ago   436MB
hyperledger/fabric-tools          2.2.2     212bfff67240   2 months ago   436MB
hyperledger/fabric-tools          latest    212bfff67240   2 months ago   436MB
hyperledger/fabric-peer           2.2       0db1edb6ddd8   2 months ago   55MB
hyperledger/fabric-peer           2.2.2     0db1edb6ddd8   2 months ago   55MB
hyperledger/fabric-peer           latest    0db1edb6ddd8   2 months ago   55MB
hyperledger/fabric-orderer        2.2       89cac0d3ab9b   2 months ago   38.5MB
hyperledger/fabric-orderer        2.2.2     89cac0d3ab9b   2 months ago   38.5MB
hyperledger/fabric-orderer        latest    89cac0d3ab9b   2 months ago   38.5MB
hyperledger/fabric-ccenv          2.2       989d60213726   2 months ago   502MB
hyperledger/fabric-ccenv          2.2.2     989d60213726   2 months ago   502MB
hyperledger/fabric-ccenv          latest    989d60213726   2 months ago   502MB
hyperledger/fabric-baseos         2.2       0483f4bff906   2 months ago   6.85MB
hyperledger/fabric-baseos         2.2.2     0483f4bff906   2 months ago   6.85MB
hyperledger/fabric-baseos         latest    0483f4bff906   2 months ago   6.85MB
hyperledger/fabric-ca               1.4       dbbc768aec79   6 months ago   158MB
hyperledger/fabric-ca  	          1.4.9     dbbc768aec79   6 months ago   158MB
hyperledger/fabric-ca            latest    dbbc768aec79   6 months ago   158MB

启动测试网络
进入test-network目录

$ cd fabric-samples/test-network

关闭可能在运行的容器

$ ./network.sh down

创建Fabric网络,该网络由两个peer node和一个orderer node组成,但这个指令不会创建channel

$ ./network.sh up

运行成功则输出以下内容

Creating network "net_test" with the default driverCreating volume "net_orderer.example.com" with default driverCreating volume "net_peer0.org1.example.com" with default driverCreating volume "net_peer0.org2.example.com" with default driverCreating peer0.org2.example.com ... doneCreating orderer.example.com    ... doneCreating peer0.org1.example.com ... doneCreating cli                    ... 
done
CONTAINER ID   IMAGE                               COMMAND             CREATED         STATUS                  PORTS                                            NAMES
1667543b5634   hyperledger/fabric-tools:latest     "/bin/bash"         1 second ago    Up Less than a second                                                    cli
b6b117c81c7f   hyperledger/fabric-peer:latest      "peer node start"   2 seconds ago   Up 1 second             0.0.0.0:7051->7051/tcp                           peer0.org1.example.com
703ead770e05   hyperledger/fabric-orderer:latest   "orderer"           2 seconds ago   Up Less than a second   0.0.0.0:7050->7050/tcp, 0.0.0.0:7053->7053/tcp   orderer.example.com
718d43f5f312   hyperledger/fabric-peer:latest      "peer node start"   2 seconds ago   Up 1 second             7051/tcp, 0.0.0.0:9051->9051/tcp                 peer0.org2.example.com

查看容器列表,可以看到之前network建立时的3个node。

$ docker ps -a

每个node及user在使用Fabric network时需要从属于一个organizaton以参与网络,test network包含两个peer organization,分别是Org1和Org2,以及一个用于维护网络服务次序的orderer organization。

Peers是所有Fabirc network的基本组成,Peers负责保存区块链分类帐并在将交易提交到分类帐之前验证交易。

Peers是智能合约的执行者,智能合约包含了管理区块链分类账上资产的业务逻辑。

test network中,Org1及Org2分别拥有peer0.org1.example.com和peer0.org2.example.com作为其组织内唯一的Peer。

每个Fabric网络还包括Ordering servic