0%

Hyperledger Composer安装

由linux基金会主导的超级账本(HyperLeger Fabric)试图为新一代的事务应用创建一种开放的分布式账本标准,支持许可式区块链。

Fabric的开发环境建立在VirtualBox虚拟机上,部署环境可以自建网络,也可以直接部署在BlueMix上,部署方式可docker化,支持用GoJavaScript开发智能合约。它采用PBFT分布式算法,网络编程方面用gRPC来做P2P通讯,使用 Protocol Buffer来序列化要传递的数据结构。在架构设计上,Fabric可能与比特币等区块链产品有所不同,但是上述基本组成部分还是不可或缺的。 在多核时代,Go语言备受喜爱,它可以让你用同步方式轻松实现高并发,特别是在分布式系统、网络编程等领域,应用非常广。所以,在区块链开发领域,也有很多使用Go语言的项目。

Hyperledger

GitHub仓库中的 Fabric源码

Hyperledger Composer

Hyperledger Fabric V1.0环境搭建

流程: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”,双击运行按默认方式安装即可。或者在Win7安装Docker ToolBox自带有Oracle VM VirtualBox。 启动VirtualBox,由于新建虚拟机占用空间较大,调整默认存储位置,如下设置:Vbox>管理>全局设定

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系统安装增强工具(分辨率自动适应窗口大小),如下:

进入Ubuntu系统安装增强工具

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

3. 安装配套软件

Hyperledger开发工具需要

1
2
3
4
5
6
7
8
Operating Systems: Ubuntu Linux 14.04 / 16.04 LTS (both 64-bit), or Mac OS 10.12
Docker Engine: Version 17.03 or higher
Docker-Compose: Version 1.8 or higher
Node: 6.x (note version 7 is not supported)
npm: v3.x or v5.v
git: 2.9.x or higher
Python: 2.7.x
A code editor of your choice, we recommend VSCode.
但在Ubuntu上直接下载如下命令行脚本并运行(需要root权限)就可以了:
1
2
3
curl -O https://hyperledger.github.io/composer/prereqs-ubuntu.sh
chmod u+x prereqs-ubuntu.sh
./prereqs-ubuntu.sh
如果没有curl命令或者命令报错需先安装curl
1
2
apt-get update
apt-get install curl
在安装完成后必须退出用户再重新登录,重启Terminal后npm会自动更新,如果更新不成功需按提示赋予权限后再次重启用户。这样不会再出现npmnode无法运行的情况。

运行Hyperledger Composer和Hyperledger Fabric推荐至少4Gb的内存

4. 安装Hyperledger开发工具

一定要在non-privileged用户(eg non-root)下安装如下开发工具

1
2
3
4
npm install -g composer-cli
npm install -g generator-hyperledger-composer
npm install -g composer-rest-server
npm install -g yo
在安装中因为版本太旧弹出npm WARN可以不用理会

如出现权限错误:

1
2
npm ERR!    path: ...
...
可以通过在root中用chown -R命令赋予用户相关路径的权限来解决:
1
chown -R UserName:UserName Path
如果只运行本地版Playground,运行
1
npm install -g composer-playground
运行Hyperledger Fabric前需清空本地版Playground
1
2
3
docker kill $(docker ps -q)
docker rm $(docker ps -aq)
docker rmi $(docker images dev-* -q)
在文件夹(比如~/fabric-tools)安装zip文件
1
2
3
4
mkdir ~/fabric-tools && cd ~/fabric-tools

curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.zip
unzip fabric-dev-servers.zip
推荐并且默认运行Hyperledger Fabric v1.0版本,如果需要可以显式指定
1
export FABRIC_VERSION=hlfv1
所有脚本都在文件夹~/fabric-tools中。一个典型的Hyperledger Composer使用流程是
1
2
3
4
cd ~/fabric-tools
./downloadFabric.sh
./startFabric.sh
./createComposerProfile.sh
在用户下运行./downloadFabric.sh时可能出现Docker permission denied的错误,可以在root下运行
1
usermod -a -G docker UserName
或在用户进程下通过sudo命令解决
1
sudo usermod -a -G docker $USER
在此之后需要完全退出本用户并重新登录

在开发session结束后

1
2
3
cd ~/fabric-tools
./stopFabric.sh
./teardownFabric.sh
#### 5. 新建Hyperledger Composer Solution 在安装好Hyperledger Composer以后,就可以按Developer Guide商业网络定义(business network definition,BND)。BND依次定义了区块链方案的数据模型(data model)、商业和交易逻辑(business and therein transaction logic)、权限控制规则(access control rules)。

在非root用户下clone一个sample网络:

1
2
git clone https://github.com/hyperledger/composer-sample-networks.git
cp -r ./composer-sample-networks/packages/basic-sample-network/ ./my-network
为了方便可以下载VSCode editor。安装后打开VSCode选择View > Command Palette...输入extensions,选择Extensions:Install Extensions选项。在Search Extensions in Marketplace输入Composer并安装Hyperledger Composer extension

根据实例,依次新建project(my-network),更新package.json文件,更新README.md(说明文档),定义主模型models/sample.cto(可以包括多个文件),编写交易函数lib/sample.js,更新权限控制规则permissions.acl

生成商业网络档案(Business Network Archive)

1
2
cd my-network
npm install
composer archive create命令就在dist文件夹中创建了一个文件my-network.bna

编写Unit Tests(测试),写入test/sample.js文件。然后编写文件features/sample.feature(测试定义文件)。再确认Unit测试通过:

1
npm test
导入Playground并测试。

运行composer-playground的快速方法:

  1. 拉取composer-playground镜像
    1
    docker pull hyperledger/composer-playground
  2. 本地启动镜像
    1
    docker run --name composer-playground -p 8080:8080 -d hyperledger/composer-playground
    然后就可以在浏览器上使用Hyperledger Composer Playground http://localhost:8080/
  3. 结束并关闭容器
    1
    docker rm -f composer-playground

6. 部署到运行中Hyperledger Fabric

可以先试运行composer命令

1
composer
确认为Hyperledger Composer。如果命令不存在,可能是环境变量问题
1
export PATH = $PATH:/安装了composer-cli等工具的路径
将BNA部署到Hyperledger Fabric v1.0上
1
2
cd dist
composer network deploy -a my-network.bna -p hlfv1 -i PeerAdmin -s randomString
确认网络已经部署
1
composer network ping -n my-network -p hlfv1 -i admin -s adminpw
#### 7. 生成并测试REST API 登录服务器,在my-network文件夹中输入
1
composer-rest-server
按如下依次回答问题并设置

REST API generated{:height="100%" width="100%"}

如果运行成功,可以在输出中看到两行网络地址

1
2
Web server listening at: http://localhost:3000
Browse your REST API at http://localhost:3000/explorer
打开浏览器并输入http://localhost:3000/explorer就能看到

LoopBack API Explorer

包括CommoditySystemTrade,Trader

8. 生成Skeleton Web Application

关闭composer-rest-server进程,运行

1
yo hyperledger-composer
可以看到

yo

等待几分钟到应用安装完成,进入新应用目录

1
2
cd my-app
npm start
可以看到composer-rest-server开始运行,Angular打包的网络应用在http://localhost:4200,点击Assets就可以看到存储在Hyperledger Fabric上的Commodity了。