title: ubuntu下搭建区块链 (Hyperledger Fabric)
date: 2020-01-04 19:50:36
tags: 区块链
category: 教程
博主环境:华为云Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-165-generic x86_64)
**使用root用户登录 **
1、安装Golang环境 1.1下载golang下载
wget https://studygolang.com/dl/golang/go1.9.linux-amd64.tar.gz
安装
tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
1.2配置go的环境变量
打开配置文件
vim ~/.bashrc
修改文件(在下面加入)
GOROOT=/usr/local/go
GOPATH=~/go
PATH=$GOPATH/bin:$PATH
如果配置过其他的环境,java什么的,PATH加到后面就行
PATH=JAVAHOME/bin:JAVA_HOME/bin:JAVAHOME/bin:ZK_HOME/bin:GOPATH/bin:GOPATH/bin:GOPATH/bin:PATH
保存退出(esc,输入:wq)
source .bashrc
新建 go的目录GOPATH
mkdir go
2、下载docker
2.1安装docker
安装必要的一些系统工具
apt-get update
安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
写入软件源信息
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
更新并安装 Docker-CE
apt-get -y update
apt-get -y install docker-ce
查看是否安装完成,显示当前的docker版本
docker version
注销并重新登录,然后添加阿里云的Docker Hub镜像
mkdir -p /etc/docker
修改文件
vim /etc/docker/daemon.json
加入
"registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
保存退出,重启docker
systemctl daemon-reload
systemctl restart docker
2.2 Docker-Compose的安装
要安装Python-pip:
sudo apt-get install python-pip
然后是安装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
3、Fabric源码下载
3.1 github上clone 下载源代码
我们可以使用Git命令下载源码,首先需要建立对应的目录,然后进入该目录,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(这个喜欢用哪个版本都可以,我看网上1.0.0多一点,就用了这个)
cd ~/go/src/github.com/hyperledger/fabric
git checkout v1.0.0
3.2 Fabric Docker镜像的下载
下载
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
下载完毕后,检查下载的镜像列表:
执行命令:docker images
4、编译cryptogen
编译生成 cryptogen之前我们需要安装一个软件包,否则编译时会报错
apt install libtool libltdl3-dev
Fabric提供了专门编译cryptogen的入口,我们只需要运行以下命令即可:
cd ~/go/src/github.com/hyperledger/fabric
make cryptogen
运行后系统返回如下结果即代表编译成功了
build/bin/cryptogen
CGO_CFLAGS=" " GOBIN=/home/studyzy/go/src/github.com/hyperledger/fabric/build/bin go install -tags "" -ldflags "-X github.com/hyperledger/fabric/common/tools/cryptogen/metadata.Version=1.0.0" github.com/hyperledger/fabric/common/tools/cryptogen
Binary available as build/bin/cryptogen
5 、修改文件运行区块链
切换路径
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
修改 /etc/resolv.conf 配置,将 options ********** 内容注释掉,作者修改后的内容如下
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
127.0.0.1
# options timeout:2 attempts:3 rotate single-request-reopen
执行启动命令,它会启动一个 mychannel 的channel
./network_setup.sh up mychannel
进入到docker 的shell 中
docker exec -it cli bash
查看a 用户有多少余额
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","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的余额,就变为70元
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
关闭e2e_cli 的demo服务
exit
关闭 myChannel
./network_setup.sh down myChannel
到此,fabric 环境的搭建和演示就结束了。