Hyperledger Fabric V1.0 环境搭建 - 个人文章 - SegmentFault

标签: hyperledger fabric v1 | 发表时间:2017-07-08 22:02 | 作者:
出处:https://segmentfault.com

学习区块链技术有段时间了,刚好晚上有空把超级账本子项目fabric v1.0部署运行及开发环境的搭建过程整理下,编写的内容主要参照官方文档。由于fabric项目目前还处于孵化阶段,正式版本预计5月份才会到来。近期官方示例和文档也频繁更新中,本文内容主要基于源码中 “examples” 和 “devenv” 来完成fabric入门示例的快速部署运行和统一开发环境的搭建。

一、 入门示例部署

流程:WIN主机 -> VBox -> Ubuntu -> Docker -> Fabric Example

准备:VirtualBox 5.1.8、Ubuntu 16.04 LTS、Git 2.12.2、Go1.8、Docker CE17、Pip2

步骤:

1、 安装 VirtualBox

官方下载安装包“VirtualBox-5.1.18-114002-Win.exe”,双击运行按默认方式安装即可,由于新建虚拟机占用空间较大,调整默认存储位置,如下设置:Vbox>管理>全局设定

2、 安装 Ubuntu

官方下载Ubuntu桌面版IOS镜像“ubuntu-16.04.2-desktop-amd64.iso”,进入VBox点击新建按钮,弹出窗口名称输入“hyperledger”,类型选择“Linux”版本选择“Ubuntu (64-bit);继续下一步,内存大小输入4096MB,默认方式点击下一步,创建,下一步,下一步,虚拟硬盘输入30GB然后点击创建,虚拟机配置基本设置好了。接下来设置光盘启动安装系统,回到Vbox主界面选中刚新建的“hyperledger”项目后点击设置,界面如下:

选择磁盘弹出窗口选择刚下载好的ISO镜像,点击OK回到主界面点击启动,接下来就是Ubuntu系统安装过程了,安装过程按提示安装即可。最后进入Ubuntu系统安装增强工具(分辨率自动适应窗口大小),如下:

Vbox增强工具安装好重启系统,接下来工作主要在是Terminal下操作,建议启用root用户来安装后续工具软件。(sudo passwd更改root密码,后续直接su 就可切换至root用户了)

3、 安装Git

$ apt-get update                                                            
$ apt-get install git

4、 安装Go

$ wget https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz    
$ tar -C /usr/local -xzf go1.8.linux-amd64.tar.gz                        
$ vi /etc/profile                                                        
追加内容                                                                    
export GOROOT=/usr/local/go                                                
export PATH=$PATH:$GOROOT/bin                                            
$ source /etc/profile

5、 安装Pip

$ apt-get install python-pip

6、 安装DockkerDocker Compose

1) 安装Docker

$ apt-get install \                                                        
    apt-transport-https \                                                
    ca-certificates \                                                    
    curl \                                                                
    software-properties-common                                            
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg \                    
    | sudo apt-key add -                                                    
$ add-apt-repository \                                                    
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \            
   $(lsb_release -cs) \                                                    
   stable"                                                                
$ apt-get update                                                            
$ apt-get install docker-ce

// 测试,正确结果将返回“Hello from Docker!”等信息

$ docker run hello-world

2) 安装Docker-compose

$ pip install docker-compose>=1.8.0

7、 部署示例hackfest

1) 创建工作目录

$ mkdir -p /opt/workspace/hackfest                                        
$ cd /opt/workspace/hackfest

2) 下载示例代码

$ curl -L https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sfhackfest/sfhackfest.tar.gz -o sfhackfest.tar.gz 2> /dev/null;  tar -xvf sfhackfest.tar.gz

解压后文件目录如下:

├── ccenv
│   └── Dockerfile
├── channel_test.sh
├── docker-compose-gettingstarted.yml
├── sfhackfest.tar.gz
├── src
│   └── github.com
└── tmp
    ├── ca
    ├── orderer
    ├── peer0
    ├── peer1
    ├── peer2
    └── peer3

3) 使用Docker构建应用网络

// 构建示例的Docker镜像,此镜像将从Docker Hub镜像库下载:

$ docker-compose -f docker-compose-gettingstarted.yml build

// 通过Docker-compose构建应用网络

$ docker-compose -f docker-compose-gettingstarted.yml up –d

执行后会产生6个Docker容器,3个peer、一个order、一个cli、一个ca。可能通过以下命令查看:

$ docker ps

// 进入客户端,确保channel已创建并且已加入peers

$ docker exec -it cli bash
$ more results.txt

看到以上结果,说明示例已部署成功,接下来通过CLI端进行资产转移测试。

8、 CLI测试

1) 进入cli容器

$ docker exec -it cli bash

2) 创建新的channel(myc2)

$ CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050                         
$ peer channel create -c myc2

执行后将产生一个创始块myc2.block

3)将channel分别加入到3个peer

$ CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 CORE_PEER_ADDRESS=peer0:7051 peer channel join -b myc2.block
$ CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 CORE_PEER_ADDRESS=peer1:7051 peer channel join -b myc2.block
$ CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 CORE_PEER_ADDRESS=peer2:7051 peer channel join -b myc2.block

4)部署chaincode,初始化资产a,b的值分别为100,200

$ CORE_PEER_ADDRESS=peer0:7051 CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer chaincode deploy -C myc2 -n mycc -p github.com/hyperledger/fabric/examples -c '{"Args":["init","a","100","b","200"]}'

5) 调用invoke命令,资产a向b转移10单位数据

$ CORE_PEER_ADDRESS=peer0:7051 CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer chaincode invoke -C myc2 -n mycc -c '{"function":"invoke","Args":["move","a","b","10"]}'

6)查询a和b当前的值

$ CORE_PEER_ADDRESS=peer0:7051 CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer chaincode query -C myc2 -n mycc -c '{"function":"invoke","Args":["query","a"]}'

$ CORE_PEER_ADDRESS=peer0:7051 CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer chaincode query -C myc2 -n mycc -c '{"function":"invoke","Args":["query","b"]}'

从查询结果看出a,b之间资产已成功转移

7)清理并关闭容器

$ docker-compose -f docker-compose-gettingstarted.yml down

至处已完成hackfest示例部署运行,Fabric项目的examples目录下还有其它演示案例,运行原理基本相似,如“e2e_cli”。Hyperledger官方已将编译好的镜像上传到Docker Hub仓库中,示例都是基于仓库的镜像通过docker-compse进行容器编排运行的。

二、 开发环境搭建

Fabric项目开发环境使用Vagrant运行Ubuntu镜像,从而启动Docker容器部署运行应用。这样使得不同平台(如MacOSX,Windows,Linux)开发人员拥有了一致的开发体验。

流程:WIN|MAC主机 -> Vagrant -> VBox -> Ubuntu -> Docker

准备:VirtualBox 5.1.8、Vagrant1.9.3、Git 2.12.2、Go1.8

步骤:

1、 安装 VirtualBox

官方下载安装包“VirtualBox-5.1.18-114002-Win.exe”,双击运行按默认方式安装即可,由于新建虚拟机占用空间较大,可整默认存储位置,如下设置:Vbox>管理>全局设定

2、 安装Vagrant

官方下载安装包“vagrant_1.9.3.msi”,双击按默认方式安装即可。注意安装之前确保Vbox已安装好。

3、 安装Git

官方下载安装包“Git-2.12.2-64-bit.exe”,双击按默认方式安装即可。

4、 安装Go

官方下载安装包“go1.8.windows-amd64.msi”,双击按默认方式安装即可。安装完后需要在系统变量PATH中追加 “;c:\Go\bin”。

5、 下载源码

1) 创建项目目录

E:/ GoProjects/src/github.com/hyperledger

2) 下载github源码

git clone https://github.com/hyperledger/fabric.git                        
git clone https://github.com/hyperledger/fabric-ca.git

CMD目录结构如下:

6、 启动Vagrant

cd E:\GoProjects\src\github.com\hyperledger\fabric\devenv                

vagrant up

Vagrant将根据devenv目录下的配置文件Vagrantfile,自动完成很多任务:

1) 从Vagrant官方下载基础镜像“hyperledger/fabric-baseimage”,此镜像已安装好了fabric项目运行环境相关软件;

2) 将当前工作目录自动挂载到Ubuntu镜像下的gopath目录,这样主机维护的代码自动同步到虚拟机运行环境中。而不同平台开发人员可以根据自己的喜好使用任意IDE维护工作目录的代码。

3) 执行shell定义的各种批量任务,包括Vbox管理、Ubuntu运行都在命令行中进行控制。

Vagrant启动完后,fabric的基础开发运行环境已配置好,接下来获取ssh配置信息:

7、 SSH远程登录

由于vagrant在windows环境下vagrant ssh不能直接进去,可以根据上面的ssh配置信息通过Xshell等软件远程登录:



点击导入按钮选择之前生成的ssh密钥:

E:/GoProjects/src/github.com/hyperledger/fabric/devenv/.vagrant/machines/default/virtualbox/private_key

成功安装登录后的界面如下:

8、 编译源码

进入fabric工程目录,执行make命令:make dist-clean all



由于编译过程需要下载很多相关软件及Docker镜像,第一次编译过程特别耗时,中间还可能存在网络被墙问题,需要针对性去解决,成功编译后将产生如下镜像文件:



同时在build目录下产生如下可执行程序:

源码编译完成,开发运行环境基本就搭建好了,接下来可以在宿主机器上工作目录(WINDOWS/MAC/LINUX)使用自己喜爱的IDE开发智能合约chaincode业务逻辑,ca成员认证管理,web控制台等,部署到VM中Docker中运行,通过端口映射在宿主机直接使用等。

三、 疑问?

1、 下载外网的软件很慢,经常出现timeout或无法访问问题?

很多原因是网络服务在国内被封了,Google生态相关的服务尤其明显,建议使用VPN或翻墙软件, 如Shadowsocks。

2、 Docker镜像下载特别慢,经常中断?

建议使用国内免费Docker镜像加速服务,国内的网易、DaoCloud和阿里云等提供的下载速度可以达1M/S以上,阿里云镜像加速可访问:https://dev.aliyun.com

3、 Go语言开发工具选择?

目前可选的工具有liteIDE(国产)、Visual Studio Code、GoSubmlime、Goclipse等,从体验来看个人更倾向Gogland的IDE,它是Jetbrains公司近期推出的EAP版,使用过IDEA、WebStorm都知道该公司的出来的IDE都是精品。

4、 启动Docker-compose部署fbric服务时出现grpc连接超时问题?

Vbox下注意虚拟机操作系统网络设置是否为桥接模式,另外可以排查下是否是DNS解析问题引起的。

5、 Vbox不能安装64位Linux系统?

检查电脑CPU是否支持虚拟化技术,BOIS设置是否开启虚拟支持。

6、 Windows10系统安装Docker套件后,Vbox不能启动?

Docker套件安装完后默认会开启Windows10自带的虚拟技术,此时Vbox使用的CPU支持虚拟技术将无法使用。因此WIN10下两软件默认不兼容。

7、 目前项目坑太多,习惯折腾就好 >> 哈哈~~~

相关 [hyperledger fabric v1] 推荐:

Hyperledger Fabric V1.0 跳坑玩耍

- - SegmentFault 最新的文章
       最近有个项目需要用到超级账本的概念,随后在网上查阅相关的信息. 最后相中了 Fabric作为实验玩耍的目标. 要玩就要玩最新的啦,所以舍弃了v0.6的版本,但是截至这篇文章摸出来,v1.0还处于alpha阶段. 以下环境的搭建步骤很大一部分来自于 hyperledger-fabric.readthedocs.io,英语好的同学也可以直接看那边的教程.

Hyperledger Fabric 核心概念

- - 陶陶技术博客
区块链是一个透明的,基于不可变模式的去中心化系统,核心就是一个分布式账本,记录网络上发生的所有交易. 区块链网络主要有三种类型:公共区块链、联盟区块链,以及私有区块链;我们熟知的比特币、以太坊这些数字货币其实就是属于公共区块链平台;. 而今天要介绍的 Fabric 则是属于联盟链类型的;Fabric是一个企业级的分布式账本技术平台,也是目前应用最广泛的区块链项目.

Hyperledger Fabric 2.x 环境搭建

- - 陶陶技术博客
区块链网络的核心是分布式账本,在这个账本中记录了网络中发生的所有交易信息. Hyperledger Fabric是一个是开源的,企业级的,带权限的分布式账本解决方案的平台. Hyperledger Fabric由模块化架构支撑,并具备极佳的保密性、可伸缩性、灵活性和可扩展性. Hyperledger Fabric被设计成支持不同的模块组件直接拔插启用,并能适应在经济生态系统中错综复杂的各种场景.

Hyperledger Fabric V1.0 环境搭建 - 个人文章 - SegmentFault

- -
学习区块链技术有段时间了,刚好晚上有空把超级账本子项目fabric v1.0部署运行及开发环境的搭建过程整理下,编写的内容主要参照官方文档. 由于fabric项目目前还处于孵化阶段,正式版本预计5月份才会到来. 近期官方示例和文档也频繁更新中,本文内容主要基于源码中 “examples” 和 “devenv” 来完成fabric入门示例的快速部署运行和统一开发环境的搭建.

Hyperledger Fabric 1.0,基于区块链的分布式账本

- - 开源中国社区最新新闻
由 Linux 基金会发起创建的开源区块链分布式账本 —— Hyperledger Fabric,已经迎来了 1.0 版本. 该项目着重于性能和可靠性,以及推动区块链和分布式账本技术的跨行业协作. Hyperledger Fabric 可用于全球供应链管理、金融交易、资产账和去中心化的社交网络等场景,但无意以此来构建一种加密货币.

[原]区块链开源实现hyperledger fabric架构详解

- - 陶辉的专栏
hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM、Intel、各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量. 本文中我们依次讨论:区块链的共通特性、fabric核心概念、fabric的交易执行流程. 本文来源于笔者欲对公司部分业务上链而进行培训的PPT,故图多文字少,不要怕太长.

Fabric批量远程执行操作

- - CSDN博客推荐文章
最近有个需求就是要在一个集群的多个机器上运行一些命令,比如启动、停止服务,运行一些脚本收集一些数据等,于是找到了python的一个框架Fabric. Fabric是一个Python库,用于简化使用SSH的应用程序部署或系统管理任务. 它提供的主要功能包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能,如提示用户输入、中止执行等.

配置 fabric 穿越跳板机

- - 膘叔
在转这篇文章的时候,我觉得 很懒,所以我几乎没有排版就直接ctrl+c,ctrl+v就过来了. 下面是正文,链接来源是:https://mozillazg.com/2013/12/python-fabric-gateway.html. 说实话,跳板机给研发的日常工作添加了些许麻烦. 幸好 fabric 提供了穿越跳板机的功能,使跳板机不再影响我们的工作.

Nikon 1 初代降临,来个 J1 及 V1 动手玩(影片)

- han - Engadget 中国版
经过一个下午的等待,我们终于有机会玩到 Nikon 两部全新的 EVIL 相机 - J1 及 V1. 官方宣布香港将与美国同步,于 10 月 20 日发售,但没有公布售价及有关详情. (参考美国的价格,J1 + 10-30mm 镜头套装售价为 US$649.95,约 4150 元人民币 ;而 V1 相同的镜头套装售价则是 US$899.95,约 5750 元人民币).

步步高 vivo 智能机 V1 首张定妆照公布

- starry heavens - Engadget 中国版
终于看到真容了,步步高的智能手机 V1 定妆照亮相,这款机子以女性为主打对象,一些界面设计我们已经提前看到,可惜这次官方图依然没有公布具体的规格配置,从效果图可以看到后置了 500 万像素摄像头,带 LED 补光灯,后底部是一个 SRS 音效标识. 而第一款新品 V1 的工程机将在今天(9 月 26 日) 2011 北京国际通信展上亮相.