HyperLedger Fabric实战:基础环境构建
Posted yindarui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HyperLedger Fabric实战:基础环境构建相关的知识,希望对你有一定的参考价值。
1. 简介
本文档说明了HyperLedger Fabric 1.4.0版本的区块链网络搭建所需的基本环境组件以及安装流程,最后再记录了安装过程中可能会遇到的一些问题,采用的操作系统为ubuntu 18.04。
具有参考价值的网站:
- Hyperledger Fabric的官方文档:https://hyperledger-fabric.readthedocs.io/en/latest/;
- HyperLedger的官网,里面还有其他的配套组件:https://www.hyperledger.org/。
2. 基础环境构建
2.1 组件清单
HyperLedger Fabric的依赖环境较多,且对版本有一定的要求,本次安装使用了如下的组件:
名称 | 版本 | 描述 |
---|---|---|
操作系统 | Ubuntu 18.04 | 基础环境 |
docker | 17.06.2-ce或更高 | Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 |
Docker-compose | 1.1.14或更高 | Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。 |
Go | 1.13.x | 运行的基本SDK |
NodeJS | 8.9或更高(Version 9全部不支持),Version10从10.15.3后继续支持 | 运行的基本SDK |
npm | 5.x | npm 是 javascript 世界的包管理工具,并且是 Node.js 平台的默认包管理工具。通过 npm 可以安装、共享、分发代码,管理项目依赖关系。 |
python | 2.7.x | 运行的基本SDK |
curl | latest | 远程获取资源,通常系统自带 |
ssh | latest | 远程控制服务器 |
2.2 组件安装过程
基于上述的内容,我们开始安装这些组件:
2.2.1 SSH
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
# 安装SSH服务器
sudo apt install openssh-server
# 安装SSH客户端
sudo apt install openssh-client
# 配置SSH
sudo vim /etc/ssh/ssh_config
# 在配置文件中,把如下的内容的注释删除掉
PasswordAuthentication yes
PermitRootLogin yes
# 重启ssh服务
sudo /etc/init.d/ssh restart
2.2.2 安装docker
docker作为整个超级账本运行的基础环境,其安装是重中之重,也是问题最多的步骤。如果你之前安装了docker且版本不适用,卸载的过程参考如下的教程:https://www.cnblogs.com/shiningrise/p/14775654.html。
# 更新安装包
sudo apt-get update
# 安装apt依赖包
sudo apt-get install \\
apt-transport-https \\
ca-certificates \\
curl \\
gnupg-agent \\
software-properties-common
# 添加Docker的官方GPG秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 设置稳定版仓库
sudo add-apt-repository \\
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \\
$(lsb_release -cs) \\
stable"
# 安装docker-ce
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 查看docker版本
docker -v
# 设置开机启动docker
sudo systemctl enable docker
#运行docker自带的helloworld程序
sudo docker run hello-world
# 添加当前用户到docker组,这样当前用户就可以直接操作docker命令
# 列出自己的用户组,确认自己在不在 docker 组中
sudo groups
# 没有则新增docker组
sudo groupadd docker
# 把当前用户加入到docker组中
sudo gpasswd -a $USER docker
# 重启docker服务
sudo service docker restart
2.2.3 安装docker-compose
docker compose它使用单个YAML文件来编排所有Docker容器和配置,使用docker compose我们可以快速构建多个容器,部署网络等。
# 安装docker-compose到/usr/local/bin/docker-compose,其中-o是指定的输出文件位置
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 为docker-compose启动设置权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证docker-compose版本
sudo docker-compose --version
2.2.4 安装go
Go是Fabric运行的基本环境之一。
# 准备go语言安装位置
cd /opt
sudo mkdir golang
cd golang
# 使用wget下载go语言,不推荐使用高版本的
sudo wget https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
# 安装gzip
sudo apt-get install gzip
# 解压缩,如果没有安装gzip需要提前安装
sudo tar -zvxf go1.10.3.linux-amd64.tar.gz
# 配置go的环境变量
sudo vim /etc/profile
# 添加如下内容:
export GOPATH=/opt/gopath
export GOROOT=/opt/golang/go
export PATH=$GOROOT/bin:$PATH
# 使配置文件生效
source /etc/profile
# 查看go是否安装成功
go version
# 结果如下
go version go1.10.3 linux/amd64
2.2.5 git安装
git是一个分布式的版本控制工具,我们可以使用git管理一个项目,并在不同的版本之间进行切换,同时,还可以使用git在远程的仓库中拉取需要的文件。
sudo apt-get install git
2.2.6 安装npm与NodeJS
Node.js简单的说 Node.js 就是运行在服务端的 JavaScript,是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。在本项目中,它也是HyperLedger Fabric的基本环境之一。
NPM是随同Node.js一起安装的包管理工具,能解决Node.js代码部署上的很多问题,常见的使用场景有以下几种:
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
- 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
# 更新安装包
sudo apt update
# 安装npm
sudo apt-get install npm
此时,安装的Node.js并不是我们指定的版本,可能存在冲突的情况。此时我们可以使用Node.js提供的工具来切换不同版本的Node.js。
# 利用n来管理NodeJS版本
sudo npm install -g n
# n来下载node版本
sudo n lts 长期支持
sudo n stable 稳定版
sudo n latest 最新版
sudo n 8.9.4 直接指定版本下载
# 切换版本
sudo n 8.9.4
# 重新打开一个终端查看版本
node -v
#此时版本为:
v8.9.4
2.2.7 安装Python
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python也是Fabric的基本支撑环境之一。注意:Fabric支持的Python版本为python2。
# 更新安装包
sudo apt update
#安装python2.7
sudo apt install python2.7
#检查python版本
python
#显示结果:
Python 2.7.17
学习Hyperledger Fabric 实战联盟链
第1章 区块链技术基础
本章介绍了区块链技术的相关基础技术要点,纯技术理论角度阐释区块链底层相关概念及所用技术
第2章 Hyperledger Fabric入门
本章简单介绍了Hyperledger组织相关的区块链框架及工具,以及Fabric相关的项目介绍,并搭建了第一个Fabric区块链网络,让大家能够快速体验区块链的魅力
第3章 Hyperledger Fabric系统架构
本章概括了Fabric的体系架构,包括服务组件,网络拓扑以及Fabric的典型交易流程,让大家对Fabric先有一个整体的概念
第4章 Hyperledger Fabric共识排序
本章详细介绍了Fabric的排序节点相关内容,包括可插拔的交易排序机制,临时区块分发及多通道数据隔离等。并带领大家阅读相关的源代码
第5章 Hyperledger Fabric账本存储
本章介绍了Fabric账本如何保存状态及如何持久化,重点学习了交易读写集的生成及验证。并从世界状态、区块存储、历史状态索引等角度分别概述了一个Peer节点是如何将接收到的临时区块持久化到本地数据库中
第6章 Hyperledger Fabric智能合约(链码)
章简单介绍了智能合约的概念,学习了链码的生命周期、链码的交互流程以及系统链码等概念内容。最后学习了链码编程的方法以及编码过程中的一些禁忌,然后带领大家从配置文件开始一步一步的搭建Fabric的开发测试网络,并将智能合约章节编写的错误示范链码部署到区块链上,帮助大家更深刻的认识链码以及理解Fabric的网络拓扑...
第7章 资产交易平台实战
本章带领大家实战区块链上的资产交易平台,需求分析从零开始提炼业务实体以及交互方法,链码编写将整理好的需求按照套路套用到合约框架中,接着把链码部署到上一章搭建好的网络中,最后编写一个外部应用程序调用SDK与区块链进行交互。课程中保留大量的坑,给大家提供在遇到错误时排错的方法...
第8章 课程总结
课程总结
下载地址:百度网盘下载
以上是关于HyperLedger Fabric实战:基础环境构建的主要内容,如果未能解决你的问题,请参考以下文章
实战:区块链hyperledger fabric 初体验 - 4:钻石交易展示平台