超级账本Hyperledger-Fabric本地编译与安装 

来源于杨保华等《区块链-原理、设计与应用》

本地编译安装部署超级账本Fabric网络。

超级账本Fabric基于Go语言实现,本地编译推荐配置Golang1.7或更高版本的环境。下面将讲解如何编译生成fabric-peer、fabric-orderer和fabric-ca等组件的二进制文件,以及如何安装一些配置和开发相关的工具。

1 操作系统 
常见的 Linux发行版(包括Ubuntu、Redhat、CentOS等)和 MacOS等都可以原生支持Fabric偏译和运行。

Linux内核3.10+版本,支持64位环境。

作为 Fabric节点 ,物理内存建议至少为2GB。

如果有较多的链码则需要更多容器,预留足够的硬盘空间(一般建议20GB或更多)以存储区块文件。

在生产环境中对性能和稳定性要求高的场景下,甚至预留更多的物理资源。

下面将默认以 Ubuntu16.04操作系统为例进行操作。

2 环境配置 
(1)安装Go语言环境 
Go语言环境可以自行访问 golang.org网站下载二进制压缩包安装。注意不推荐通过包管理器安装,版本往往比较旧。

如下载Go1.8.5版本:

https://golang.org/doc/install?download=go1.8.5.linux-amd64.tar.gz

下载完成后,解压目录,并移动到GO_ROOT为/ usr / local/: 
$ tar -xvf go1.8.linux-amd64.tar.gz 
$ sudo mv go /usr/local

安装完成后记得配置 GOPATH环境变量: 
export GOPATH=/home/BlockChain/Go 
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

此时,可以通过 go version命令验证安装是否成功: 
$ go version 
go version go1.8 linux/amd64

(2)安装依赖包 
编译 Fabric相关代码,需要一些依赖包,可以通过如下命令安装: 
$ sudo apt-get update&& apt-get install -y libsnappy-dev zlib1g-dev libbz2-dev libltdl-dev libtool

(3)安装Docker 
Fabric网络目前依赖 Docker服务作为链码容器的支持,因此即使是本地环境运行Fabric网络,也需要在Peer节点上安装 Docker环境。推荐使用1.12或者更新的版本。 
Linux操作系统下可以通过如下命令来快速安装 Docker最新版: 
$ curl -fsSL https://get.docker.com/ | sh 
 
3 获取代码 
目前, Fabric代码的官方仓库在社区的 Gerrit上,并实时同步到 Github仓库中,读者可以从任一仓库中获取代码。 
首先,将 Fabric代码按照Go语言推荐方式进行存放,创建目录结构并切换到该目录,如下命令所示: 
$ mkdir -p $GOPATH/src/github.com/hyperledger 
$ cd $GOPATH/src/github.com/hyperledger

通过如下命令可以获取 fabric-peer和fabric-orderer组件编译所需要的代码,两者目前在同一仓库中: 
$ git clone http://gerrit.hyperledger.org/r/fabric

默认情况下,会下拉获取带有完整历史的仓库,这个过程取决于网络速度,可能需要较长时间。读者也可以通过 --single-branch -b master --depth1命令选项来指定只获取master分支最新的提交代码,如下命令所示: 
$ git clone --single-branch -b master --depth 1 http://gerrit.hyperledger.org/r/fabric

fabric-ca组件则在另外一个仓库中,同样,可以通过如下命令获取:

$ sit clone http://gerrit.hyperledger.org/r/fabric-ca

4 编译安装 fabric-peer组件 
通过如下命令手动编译并安装 fabric-peer到$GOPATH/bin下。日前 fabric处于1.0.0大版本阶段,因此指定相关版本号为1.0.0: 
$ cd $GOPATH/src/github.com/hyperledger/fabric 
$ ARCH=x86_64 
$ BASEIMAGE_RELEASE=0.3.1 
$ PROJECT_VERSION=1.0.0 
$ LD_FLAGS="-X github.com/hyperledger/fabric/common/metadata.Version=${PROJECT_VERSION}\ 
  -X github.com/hyperledger/fabric/common/metadata.BaseVersion=${BASEIMAGE_RELEASE}\ 
  -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric \ 
  -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger \ 
  -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger" 
$ CGO_CFLAGS=" " go install -1dflags "$LD_FLAGS -linkmode external -extldflags '-static -1pthread' " \ 
  github.com/hyperledger/fabric/peer

当然,用户也可以使用源码中的 Makefile来进行编译。这种方式下,需要自动从Dockerhub上获取包括基础镜像在内的依赖文件,花费时间可能稍长。相关命令如下所示: 
$ cd $GOPATH/src/github.com/hyperledger/fabric 
$ make peer

5 编译安装 fabric-orderer组件 
通过如下命令手动编译并安装 fabric-orderer到$GOPATH/bin下: 
$ cd $GOPATH/src/github.com/hyperledger/fabric 
$ ARCH=X86_64 
$ BASEIMAGE_RELEASE=0.3.1 
$ PROJECT_VERSION=1.0.0 
$ LD_FLAGS="-X github.com/hyperledger/fabric/common/metadata.Version=${PROJECT_VERSION} \ 
  -X github.com/hyperledger/fabric/common/metadata.BaseVersion=${BASEIMAGE_RELEASE} \ 
  -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric \ 
  -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger \ 
  -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger" 
$ CGO_CFLAGS=" " go install -1dflags "$LD_FLAGS -linkmode external -extldflags '-static -1pthread'" \ 
  github.com/hyperledger/fabric/orderer 
同样,使用源码中的 Makefile来进行编译的命令如下: 
$ cd $GOPATH/src/github.com/hyperledger/fabric 
$ make orderer

6 编译安装fabric-ca组件 
可以通过如下命令编译并安装fabric-ca 相关组件到$GOPATH/bin下: 
$ go install -ldflags " -linkmode external -extldflags '-static -lpthread'" github.com/hyperledger/fabric-ca/cmd/..

7 编译安装辅助工具 
Fabric中提供了一系列辅助工具,包括cryptogen(生成组织结构和身份文件)、configtxgen(生成配置区块和配置交易)、configtxlator(解读配置信息)等,可以通过如下命令快速编译和安装: 
# 编译安装 cryptogen 
$ PROJECT_VERSION=1.0.0 
$ CGO_CFLAGS=" " \ 
    go install -tags "" \ 
    -1dflags "-X github.com/hyperledger/fabric/common/tools/cryptogen/metadata.Version=${PROJECT_VERSION}"\ 
    github.com/hyperledger/fabric/common/tools/cryptoge 
# 编译安装 configtxgen 
$ PROJECT_VERSION=1.0.0 
$ CGO_CFLAGS=" " \ 
   go install -tags "nopkcs11" \ 
   -1dflags "-X         
   github.com/hyperledger/fabric/common/configtx/tool/configtxgen/metadata.Version= 
         ${PROJECT_VERSION}"  \ 
   github.com/hyperledger/fabric/common/configtx/tool/configtxge 
# 编译安装 configtxlator 
$ PROJECT_VERSION=1.0.0 
$ CGO_CFLAGS=" " \ 
   go install -tags "" \ 
   -1dflags "-X github.com/hyperledger/fabric/common/tools/configtxlator/metadata.Version= 
         ${PROJECT_VERSION}" \ 
    github.com/hyperledger/fabric/common/tools/configtxlato

8 获取chaintool 
chaintool可以协助用户对链码进行打包和部署,方便链码的开发测试,用户可以通过如下命令进行快速安装: 
$ curl -L https://github.com/hyperledger/fabric-chaintool/releases/download/v0.10.3/chaintool > /usr/local/bin/chaintool 
$ chmod a+x /usr/local/bin/chaintool

9 安装Go语言相关工具 
Fabric 代码由Go语言构建,开发者可以选择安装如下的Go语言相关工具,以方便开发和调试: 
$ go get github.com/golang/protobuf/protoc-gen-go \ 
   && go get github.com/kardianos/govendor \ 
   && go get github.com/golang/lint/golint \ 
   && go get github.com/x/tools/cmd/goimports \ 
   && go get github.com/onsi/ginkgo/ginkgo \ 
   && go get github.com/axw/gocov/... \ 
   && go get github.com/client9/misspell/cmd/misspell \ 
   && go get github.com/Aleksi/gocov-xm

10 示例配置 
sampleconfig目录下包括了一些示例配置文件,可以作为参考基础进行编写。将它们复制到默认的配置目录(/etc/hyperledger/fabric)下: 
$ cd $GOPATH/src/github.com/hyperledger/fabric/sampleconfig 
$ cp configtx.yaml /etc/hyperledger/fabric 
$ cp core.yaml /etc/hyperledger/fabric 
$ cp orderer.yaml /etc/hyperledger/fabric

$ cp msp/config.yaml /etc/hyperledger/fabric

11 未完待续

。。。

超级账本Hyperledger-Fabric本地编译与安装(来源于区块链-原理、设计与应用)相关推荐

  1. 超级账本Hyperledger Fabric的使用

    原文地址:超级账本Hyperledger Fabric的使用 说明 网易云课堂:HyperLedger Fabric手动部署教程的视频讲解 超级账本HyperLedger Fabric手动部署教程的文 ...

  2. 利用Hyperledger Fabric开发你的第一个区块链应用

    利用Hyperledger Fabric开发你的第一个区块链应用 本文示例源于fabric-samples中的fabcar https://github.com/hyperledger/fabric- ...

  3. 区块链超级账本Hyperledger Fabric架构说明

    翻译自:http://hyperledger-fabric.readthedocs.io/en/latest/arch-deep-dive.html 边学习边翻译,很多地方还不明白,请对照原文学习,转 ...

  4. Hyperledger Fabric 1.0发布:基于区块链的开源分布式账本

    由 Linux 基金会发起创建的开源区块链分布式账本 -- Hyperledger Fabric,已经迎来了 1.0 版本.该项目着重于性能和可靠性,以及推动区块链和分布式账本技术的跨行业协作.Hyp ...

  5. 超级账本(Hyperledger Fabric)源码分析之一:总览

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 一.编译 1.环境准备 需要提前在linux或者mac机器上安装如下软件 1)Go,注意设置好gopath(笔者安装的是 ...

  6. 区块链相关论文研读3- 关于超级账本Hyperledger Fabric的性能优化

    这是2019年6月发表在顶会Sigmod上面的论文,论文题目为<Blurring the Lines between Blockchains and Database Systems: the ...

  7. 超级账本hyperledger fabric第五集:共识排序及源码阅读

    一.共识机制 达成共识需要3个阶段,交易背书,交易排序,交易验证 交易背书:模拟的 交易排序:确定交易顺序,最终将排序好的交易打包区块分发 交易验证:区块存储前要进行一下交易验证 二.orderer节 ...

  8. hyperledger fabric v2.4环境搭建及区块链项目开发

    基础环境配置,不再详细描述:学习交流可联系博主. 安装go 安装docker 安装docker-compose 清空历史docker images docker system prune --all ...

  9. 超级账本HyperLedger的cello项目的部署和使用

    原文地址:超级账本HyperLedger的cello项目的部署和使用 说明 应用场景 源码 master安装 workder安装(docker) 参考 说明 cello是一个用来部署.管理fabric ...

最新文章

  1. JSP、EL和JSTL-学习笔记02【MVC】
  2. c++------------提取文件中的信息
  3. os.environ详解
  4. 分步表单如何实现 html_HTML表单入门的分步指南
  5. 模型压缩 相关文章解读
  6. 拿下阿里投资 回血的网易云音乐能成功突围吗?
  7. 数论(Mathmatics)总结[1]
  8. 2016.10.26
  9. 【ArcGIS|空间分析】第七届全国大学生GIS技能大赛——上午
  10. 快速了解德国TRINAMIC运动控制芯片(TMC电机驱动芯片)
  11. 树莓派4b IO引脚输出模式异常
  12. Java SSM 项目实战 day09 SSMAOP日志
  13. win10计算机语言超清壁纸,适合win10励志超清壁纸欣赏
  14. 让财务流程自动化的5大理由
  15. 曼达洛人对机器人的评价_我们请来了五位星战粉,来一起听听他们对于《曼达洛人》第一季的感想吧...
  16. vue货币过滤器以及路由参数的使用
  17. 各大平台免费接口,非常适用
  18. java常见的面试题
  19. 【学习笔记】人工智能导论
  20. Opencv2.4学习::边缘检测(4)Roberts算子

热门文章

  1. 集成Google广告的一点错误
  2. android_Android Google地图:添加天气数据
  3. 【LeetCode69】x的平方
  4. 并发系列三:证明分代年龄、无锁、偏向锁、轻量锁、重(chong)偏向、重(chong)轻量、重量锁
  5. 再白也能学会的C-C语言的前世今生
  6. 计算机开机自检是如何工作的
  7. 牛客网错题集合之字符串(一)
  8. DeFi之道访谈:如何参与Web3?哪些细分赛道值得关注?
  9. SSE实现后端向前页面推送实时数据,是长链接不是连接一次就断开
  10. 帆软两台服务器文件同步,同步帆软代码