区块链学习——HyperLedger-Fabric v0.6环境搭建详细过程


v0.6 的架构相对简单,适合作为实验或学习来使用。

一.环境准备

一台云服务器(笔者使用的是阿里云的1核-2GB内存)
Go语言环境
Docker安装
docker-compose安装

二.环境搭建

2.1 更新yum

保证我们安装的软件包都是最新版本的;升级所有包同时也升级软件和系统内核

yum -y update

2.2 安装GO语言环境

2.2.1 下载tar包,上传到服务器

 Go官方网站:https://golang.org/dl/ (国外网站你懂的)
 Go中文网:https://studygolang.com/dl (推荐)

2.2.2 或者直接使用yum命令安装,不过版本可能不是最新的;
    yum install go -y
2.2.3 笔者是使用第一种方式安装的

 下载后上传至/usr/local目录下
 解压:tar -zxvf go1.13.5.linux-amd64.tar.gz
 配置环境变量:vim /etc/profile 在文件开头添加如下内容:

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

 重新加载配置文件使之生效:source /etc/profile
 使用go env命令验证:

2.3 安装Docker

2.3.1 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
2.3.2 设置为阿里云的源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.3.3 查看Docker版本并安装
yum list docker-ce --showduplicates | sort -r
yum install docker-ce-17.12.0.ce

2.3.4 启动docker以及设置开机自启动

 启动:systemctl start docker
 设置开机自启动:systemctl enable docker
 验证docker是否安装成功:docker version

2.4 安装docker-compose

docker-compose是支持通过模板脚本批量创建Docker容器的一个组件

2.4.1 安装python-pip软件包
yum install python-pip -y
2.4.2 查看并升级pip的版本

 查看下载的版本:pip --version
 升级:pip install --upgrade pip

2.4.3 下载docker-compose

 查看最新版本信息:https://github.com/docker/compose/releases
 下载:pip install docker-compose==1.21.0(下载最新版1.25.0报错,只好往前兼容了)

 运行docker run hello-world命令运行官方用例测试是否安装成功

docker简单命令:
    查看正在运行中的容器:`docker ps`
    查看所有容器:`docker ps -a`
    删除所有容器:`docker rm -f $(docker ps -aq)`
    查看镜像:`docker images`
    删除所有镜像:`docker rmi -f $(docker images -q)`

三.下载镜像

3.1 下载v0.6的镜像

docker pull yeasy/hyperledger-fabric:0.6-dp \
docker pull yeasy/hyperledger-fabric-peer:0.6-dp \
docker pull yeasy/hyperledger-fabric-base:0.6-dp \
docker pull yeasy/blockchain-explorer:latest \
docker tag yeasy/hyperledger-fabric-peer:0.6-dp hyperledger/fabric-peer \
docker tag yeasy/hyperledger-fabric-base:0.6-dp hyperledger/fabric-baseimage \
docker tag yeasy/hyperledger-fabric:0.6-dp hyperledger/fabric-membersrvc

 查看下载的镜像:docker images

3.2 使用Git下载docker-compose 模板

 安装Git:yum install git -y
 下载docker-compose模板(这一步笔者下载很慢,等着就完事)

git clone https://github.com/yeasy/docker-compose-files

四.启动与部署

4.1 noops模式

4.1.1 以noops模式启动:单节点模式,默认没有使用共识机制,用于快速测试
docker run --name=vp0 \
    --restart=unless-stopped \
    -it \
    -p 7050:7050 \
    -p 7051:7051 \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e CORE_PEER_ID=vp0 \
    -e CORE_PEER_ADDRESSAUTODETECT=true \
    -e CORE_NOOPS_BLOCK_WAIT=10 \
    hyperledger/fabric-peer:latest peer node start

4.1.2 部署

 进入已经启动的vp0节点:docker exec -it vp0 bash
 获取fabric的实例链码进行部署:

peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'

 (参数:-p:指定获取链码的源地址; -c:源码初始化(设置a和b的初始资产值))
 将返回的chaincode的唯一标识设置为变量(注:你返回的唯一标识跟我的肯定不一样)

4.1.3 查询

 查询a的余额:

peer chaincode query -n ${zzm} -c '{"Function": "query", "Args": ["a"]}'

4.1.4 调用

 调用chaincode进行转账(a向b转账20元)

peer chaincode invoke -n ${zzm} -c '{"Function": "invoke", "Args": ["a", "b", "20"]}'

 再查询a的余额

4.2 pbft模式

4.2.1 进入下载的docker-compose目录(找到你之前下载的位置,我的是直接在根目录下)
cd docker-compose-files/hyperledger_fabric/v0.6.0/pbft/

 查看一下这个目录中的文件

 解释一下这几个文件,分别代表不同的启动模式

4-peers-with-explorer.yml:4个节点且带web服务
4-peers-with-membersrvc-explorer.yml:4个节点且带成员服务和web服务
4-peers-with-membersrvc.yml:4个节点且带成员服务
4-peers.yml:4个节点
explorer.yml:web服务基础配置文件
membersrvc.yml:成员服务基础配置文件(即需要权限认证)
peer.yml:节点基础配置文件
4.2.2 启动只有4个节点的fabric网络
docker-compose -f 4-peer.yml up

 随即系统会打印启动日志

Creating pbft_vp0_1 ... done
Creating pbft_vp2_1 ... done
Creating pbft_vp1_1 ... done
Creating pbft_vp3_1 ... done
...
4.2.3 再打开一个终端,查看运行中的docker容器
docker ps


 在上图中可以看到启动的时候自动创建了容器,并且pbft_vp0_1节点的端口号7050被映射到centos的7050
 进入pbft_vp0_1节点

docker exec -it pbft_vp0_1  bash

 接下来的步骤还是继续上面的4.1.2~4.1.4,命令如下:

部署链码:peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'
查询a账户的余额:peer chaincode query -n ${zzm} -c '{"Function": "query", "Args": ["a"]}'
设置zzm变量为链码返回的唯一标识:zzm="ee5b24a1f17c356dd5f6e37307922e39ddba12e5d2e203ed93401d7d05eb0dd194fb9070549c5dc31eb63f4e654dbd5a1d86cbb30c48e3ab1812590cd0f78539"
a转账给b20元:peer chaincode invoke -n ${zzm} -c '{"Function": "invoke", "Args": ["a", "b", "20"]}'
查询a的余额为80元:peer chaincode query -n ${zzm} -c '{"Function": "query", "Args": ["a"]}'
查询b的余额为220元:peer chaincode query -n ${zzm} -c '{"Function": "query", "Args": ["b"]}'

 详细结果如下图:


最后呢,说明一下,作者也是刚入坑的小白,这篇文章也就是记录一下原始搭建的过程,方便以后查看。如果对你有帮助的话,非常荣幸,如果有不对的地方,欢迎留言指正!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值