[区块链]基于Ubuntu搭建超级账本Fabric

折腾一天的最终结果:

在这里插入图片描述

一、前言

  1. 本文主要参考:
  • https://blog.csdn.net/Geomancerest/article/details/84315390
  • https://blog.csdn.net/so5418418/article/details/78355868
  1. 遇到问题参考:
  • go1.9安装参考:https://blog.csdn.net/so5418418/article/details/78355868
  • Docker-Compose的安装:https://blog.csdn.net/so5418418/article/details/78355868
  • UTC [msp] GetDefaultSigningIdentity -> DEBU 018 Obtaining default signing identity fatal error: unexpected signal during runtime execution [signal SIGSEGV: segmentation violation code=0x1 addr=0x63 pc=0x7f57b5f12259]问题参考:https://blog.csdn.net/qq_30505673/article/details/82557109
  • 安装指定版本Docker:https://blog.csdn.net/liqi_q/article/details/83030737

二、开始搭建

1、操作系统
华为云 Ubuntu 16.04 server 64bit

2、安装go语言环境
通过第一步系统安装完成后,建议先apt update && apt upgrade一下。
因为本人使用golang1.9版本安装成功,这里以安装golang1.9为例:
安装go
通过命令行直接安装(注意指定版本,否则版本可能会偏低)
sudo apt install golang-1.9
配置环境变量
编辑当前用户的环境变量:

vim ~/.profile

添加以下内容:

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

添加完成后:wq保存退出,如图
在这里插入图片描述
让环境变量配置立即生效
source ~/.profile
终端输入(任意目录下):go version,如图则表示环境变量配置成功:
在这里插入图片描述
另外可以通过终端输入:go env。查看go的环境变量配置

在这里插入图片描述
go环境安装完成

3、Docker安装
更新apt包索引:

sudo apt-get update

我参照已有博客搭建,所以指定了docker版本,首先列出可用的版本:

apt-cache madison docker-ce

在这里插入图片描述
选择要安装的特定版本,第二列是版本字符串,第三列是存储库名称,它指示包来自哪个存储库,以及扩展它的稳定性级别。要安装一个特定的版本,将版本字符串附加到包名中,并通过等号(=)分隔它们:(5:18.09.03-0ubuntu-xenial为版本号)

sudo apt-get install docker-ce=5:18.09.0~3-0~ubuntu-xenial

验证docker

查看docker服务是否启动:

systemctl status docker

在这里插入图片描述
若未启动,则启动docker服务:

sudo systemctl start docker

然后修改当前用户的权限(xxx是你自己的当前用户名)

sudo usermod -aG docker XXX

然后重启docker服务(最好是注销系统重新登录…)

sudo systemctl daemon-reload
sudo systemctl restart docker

最后docker version 查看安装配置是否成功,成功如图:

在这里插入图片描述
docker安装成功-…(这里可以看到docker基于的go版本是1.10.4,所以之前安装的go版本应该可以采用这个版本,有机会尝试一下吧)

4、安装Docker-Compose
Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。通过运行以下指令逐步安装:

sudo apt install python pip

这一步安装的pip版本应该很低,所以需要更新pip

sudo pip install --upgrade pip

这一步会更新pip没问题,但是会出现一个新的问题,就是pip不能用了。。下面是解决办法,错误当时没有记录,只记录了解决方法(pip在用Pycharm更新时好像也会有这个问题):

vim /usr/bin/pip

修改后的文件内容应该是这个样子:
在这里插入图片描述
OK,这时候我们已经可以正常使用pip了,终端输入以下指令:sudo pip install docker-compose==1.8.0 即可。

官方建议是安装1.8.0以上版本,安装完后可以更新一下(apt update && apt upgrade)

5、下载Fabric源码
通过前面几步,我们已经把运行工具都准备好了,下面开始正式下载使用了。。。

希望你还记得安装go环境是自己建立的GOPATH哦,,,因为接下来的文件我们需要保存在哪儿,,建议终端输入:go env查看一下GOPATH。

//在GOPATH下建立多级目录
mkdir -p $GOPATH/src/github.com/hyperledger
cd $GOPATH/src/github.com/hyperledger
//用git命令下载完整源码
git clone https://github.com/hyperledger/fabric.git
//因为我们搭建基础环境,不需要最新的代码,所以我们切换到1.0.0版本
cd $GOPATH/src/github.com/hyperledger/fabric
git checkout v1.0.0

Fabric源码就下载好了。

6、下载需要的docker镜像

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

然后这一步会需要一点时间,因为有很多镜像需要下载,全部下载完成后会显示有那些镜像,镜像如图所示:
在这里插入图片描述

7、启动Fabric网络
在e23_cfi目录下执行:./network_setup.sh up 耐心等待一小会即可启动网络,如图:
在这里插入图片描述
看到这个界面就说明我们的努力有效果了,Fabric网络已经通了 。。。。

三、测试Fabric网络

这里有官方提供的小例子,在官方例子中,channel名字是mychannel,链码的名字是mycc。
首先进入CLI,然后重新打开一个命令行窗口,输入:

docker exec -it cli bash

这时用户为root@748dafdc900b,在/opt/gopath/src/github.com/hyperledger/fabric/peer目录下,运行以下命令可以查询a账户的余额:

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

可以看见余额为:90

下面我们可以进行转账操作,操作为invoke ,由a转b 50:

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","50"]}'

现在转账完毕, 我们试一试再查询一下a账户的余额,重复之前的查询指令,结果为:
结果正确,a的余额只有40了。
最后,我们需要关闭Fabric,这里先使用exit命令退出cli容器。
exit
然后类似于启动指令:

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

到这,我们整个Fabric的环境已经测试完毕!!去做研究或者开发吧!!!

发布了84 篇原创文章 · 获赞 23 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_36254699/article/details/103317481