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

一.环境准备

一台云服务器(笔者使用的是阿里云的1核-2GB内存)

Go语言环境

Docker安装

docker-compose安装

二.环境搭建

更新yum

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

yum -y update

安装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命令验证:

安装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-18.03.1.ce

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

 启动:systemctl start docker

 设置开机自启动:systemctl enable docker

 验证docker是否安装成功:docker version

安装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)`

三.下载镜像

下载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

使用Git下载docker-compose 模板

 安装Git:yum install git -y

 下载docker-compose模板(这一步笔者下载很慢,等着就完事)

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

四.启动与部署

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的余额

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

 详细结果如下图:


区块链学习——HyperLedger-Fabric v0.6环境搭建详细教程的更多相关文章

  1. Hyperledger fabric 1.4 环境搭建(一)

    Hyperledger fabric 1.4 环境搭建(一) 1.更换下载源 更换apt的下载源,因为官方下载源很慢,需要更换到国内的镜像站 1.1.进入/etc/apt/目录 cd etc/apt ...

  2. Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程)(转载)

    win7(win10也适用)系统安装GPU/CPU版tensorflow Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程) 目录 2.配置 ...

  3. 区块链学习——HyperLedger-Fabric v1.0环境搭建详细教程

    相对与v0.6版本来说,1.0版本改变较大,此处不多说,只是将小白自己搭建1.0环境的过程分享给大家.希望对大家能有所帮助! 这一篇可能对前面的环境搭建会写的有些粗略,如有疑问,可阅读上一篇V0.6版 ...

  4. 基于docker的 Hyperledger Fabric 多机环境搭建(上)

    环境:ubuntu 16.04 Docker  17.04.0-ce go 1.7.4 consoul v0.8.0.4 ======================================= ...

  5. [区块链] 带你进入Bitcoin开发 - 环境搭建

    学习完区块链枯燥乏味的.高深的.必备的基础知识后,终于可以走上开发之路了!真是迫不及待啦!之后博客更新主要放在区块链的开发上,相信这才是大多数同学更加感兴趣的地方!学习过程从最经典的区块链鼻祖-比特币 ...

  6. 基于docker的 Hyperledger Fabric 多机环境搭建(下)

    Docker环境部署见上一篇博客:http://www.cnblogs.com/cnblogs-wangzhipeng/p/6994541.html. 我们部署分布式容器服务后就要在上面部署Fabri ...

  7. [新手教程]windows 2003 php环境搭建详细教程(转)

    对于windows服务器的php环境配置一直是是新人朋友的难题,也难倒了很多高手.这里分享一个新手教程,给那些建站新人使用.本教程来自朋友吴文辉的博客,欢迎大家有时间可以访问他的博客:吴文辉博客htt ...

  8. LNMP环境搭建详细教程

    之前有一篇博客写的是LAMP的环境搭建,今天来详细介绍一下另外一个模式——LNMP=Linux+Nginx+MySQL+PHP. 一.在Linux系统下nginx的安装过程,先到http://ngin ...

  9. Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程)

    目录 前言 第一步:安装Anaconda 1.下载和安装 2.配置Anaconda环境变量 第二步:安装TensorFlow-GPU 1.创建conda环境 2.激活环境 3.安装tensorflow ...

随机推荐

  1. python 学习路程(一)

    好早之前就一直想学python,可是一直没有系统的学习过,给自己立个flag,从今天开始一步步掌握python的用法: python是一种脚本形式的语言,据说是面向废程序员学习开发使用的,我觉得很适合 ...

  2. alpha week 2/2 Scrum立会报告+燃尽图 01

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9798 一.小组情况 队名:扛把子 组长:迟俊文 组员:宋晓丽 梁梦瑶 韩昊 ...

  3. windows系统与SQL SERVER 2008数据库服务性能监控分析简要

    软件系统性能测试体系流程介绍之windows系统与SQL SERVER 2008数据库服务性能监控分析简要 目前大部分测试人员对操作系统资源.中间件.数据库等性能监控分析都是各自分析各自的监控指标方式 ...

  4. PHP安装sodium加密扩展

    1.为什么会用到sodium加密扩展? 最近在做微信服务商相关的开发,主要用的的接口为微信小微商户进件接口.在请求相关接口中,需要对一些敏感字段进行加密,加密过程见https://pay.weixin ...

  5. Java线程池实现

    电脑的CPU资源是有限的,任务的处理速度与线程数量之间并不是正相关.当线程数量过多,CPU要频繁的在不同线程切换,反而会引起处理性能的下降.线程池中最大的线程数,是考虑多种因素来事先设定的,比如硬件的 ...

  6. 【Android - 自定义View】之View的工作过程简介

    View的工作过程分为三个过程: View的measure过程: View的layout过程: View的draw过程. 我们知道,一个Activity就是一个窗口,这个窗口中包含一个Window.一 ...

  7. MYSQL远程连接速度慢的解决方法

    在局域网内连接其他机器的MYSQL,发现速度慢的很,不知道什么原因,总有几秒的延迟. 后来在网上发现解决方法,my.ini里面添加 [mysqld]skip-name-resolveskip-gran ...

  8. 如何在VMware下通过挂载系统光盘搭建本地yum软件仓库

    1.打开自己VMware软件中的虚拟机 2.输入用户名root密码登陆进去 3.打开 应用程序----收藏-----终端 4.首先回到根目录,输入cd ..(中间有空格) 5.创建一个名称为swlaa ...

  9. Spring Cloud第二篇 | 使用并认识Eureka注册中心

    ​ 本文是Spring Cloud专栏的第二篇文章,了解前一篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 ​​ 一.Sprin ...

  10. pom父工程dependencyManagement中的jar包在子工程中不写版本号无法引入的问题

    1.遇到的问题:  本人用的idea,然后在导入别人的项目的时候,pom文件中没有报错了,但是在maven栏目中jar包却一直报红,是因为我没写版本的原因吗?不对呀,我的父工程下已经写了springb ...