Ubuntu搭建 Hyperledger Fabric的环境

Ubuntu搭建 Hyperledger Fabric的环境

Hyperledger Fabric 是 The Linux Foundation主办的 Hyperledger项目之一。Hyperledger Fabric 旨在作为开发模块化体系结构的区块链应用程序的基础,以便诸如共识和会员服务等组件可以即插即用。它使用容器技术来托管构成系统应用逻辑的智能合约(也称为链代码)。 简而言之,Hyperledger Fabric是为企业构建的领先的开源、通用区块链结构。

对于区块链的初学者来说,动手敲代码,利用fabric写写链码是对区块链的理解是很有帮助的。有什么问题,可以随时联系我。

1.使用VirtualBox 并在其上搭建好Ubuntu

首先要在网站上下载好VirtualBox,并安装在电脑上,然后下载Ubuntu server 并安装启动。然后在应用中打开终端。在安装完Ubuntu后,需要保证apt source是国内的,不然如果是国外的话会很慢很慢的。在终端中输入

sudo vi /etc/apt/source.list

打开这个 apt的源列表,如果其中看到是us.XXX时候,要注意在命令模式下更改

:%s/us./cn./g

就可以把所有的us.改为cn.了。然后输入:wq即可保存退出。如果是cn.xxx那就没事 。

做完以上步骤后可以更新一下源

sudo apt-get update

2.安装GO

参考官网即可,在终端中输入以下命令,下载并安装

wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz

注意需要配置一下环境变量

vi ~/.profile

添加以下内容:

export PATH=$PATH:/usr/local/go/bin

export GOROOT=/usr/local/go

export GOPATH=$HOME/go

export PATH=$PATH:$HOME/go/bin

编辑保存并退出vi后,记得把这些环境载入:

source ~/.profile

我们把go的目录GOPATH设置为当前用户的文件夹下,所以记得创建go文件夹

cd ~
 mkdir go

3.安装Docker

sudo apt-get update
sudo apt-get install docker

安装完成后检查一下,输入

docker version

是否可出现

如果是出现了以上情况,说明出现了bug。大致意思是

上面的报错大概的意识就是说,docker进程使用Unix Socker 而不是tcp端口,而默认情况下,unixsocker在root权限下才可以访问。

所以需要进行如下调试

sudo groupadd docker

sudo gpasswd -a William docker

newgrp docker

docker ps

检查一下,输入

docker version

4.安装docker-compose

在安装Docker-Compose之前,需要安装Python-pip,运行脚本:

sudo apt-get install python-pip

从国内的进行DaoClound下载,为了速度快接下来从DaoClound安装Docker-compose,运行脚本:

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

5.fabric下载

使用git方式下载

mkdir -p ~/go/src/github.com/hyperledger 
cd ~/go/src/github.com/hyperledger 
git clone https://github.com/hyperledger/fabric.git

由于Fabric一直在更新,所有我们并不需要最新最新的源码,需要切换到v1.0.0版本的源码即可:

cd ~/go/src/github.com/hyperledger/fabric git 
checkout v1.0.0


6. Fabric Docker镜像的下载

这个其实很简单,因为我们已经设置了Docker Hub镜像地址,所以下载也会很快。官方文件也提供了批量下载的脚本。我们直接运行:

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/ source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

这样就可以下载所有需要的Fabric Docker镜像了。由于我们设置了国内的镜像,所以下载应该是比较快的。

下载完毕后,我们运行以下命令检查下载的镜像列表:

docker images


7.启动Fabric网络并完成ChainCode的测试

我们仍然停留在e2e_cli文件夹,这里提供了启动、关闭Fabric网络的自动化脚本。我们要启动Fabric网络,并自动运行Example02 ChainCode的测试,执行一个命令:

./network_setup.sh up


这个做了以下操作:

7.1编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin

7.2基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。

7.3基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。

7.4基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。

7.5在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。

8.手动测试一下Fabric网络

我们仍然是以现在安装好的Example02为例,在官方例子中,channel名字是mychannel,链码的名字是mycc。我们首先进入CLI,我们重新打开一个命令行窗口,输入:

docker exec -it cli bash

运行以下命令可以查询a账户的余额:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

可以看到余额是90:

然后,我们试一试把a账户的余额再转20元给b账户,运行命令:

peer chaincode invoke -o orderer.example.com:7050  --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'

现在转账完毕, 我们试一试再查询一下a账户的余额,

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

没问题的话,应该是只剩下70了。

果然,一切正常。最后我们要关闭Fabric网络,首先需要运行exit命令退出cli容器。关闭Fabric的命令与启动类似,命令为:

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli 
 ./network_setup.sh down


以上便是关于fabric环境的搭建和例子的演示过程,快自己动手写一写吧,有什么问题,随时与我沟通联系。

发布于 2018-09-10

文章被以下专栏收录