由linux基金会主导的超级账本(HyperLeger Fabric
)试图为新一代的事务应用创建一种开放的分布式账本标准,支持许可式区块链。
Fabric
的开发环境建立在VirtualBox
虚拟机上,部署环境可以自建网络,也可以直接部署在BlueMix
上,部署方式可docker
化,支持用Go
和JavaScript
开发智能合约。它采用PBFT
分布式算法,网络编程方面用gRPC来做P2P
通讯,使用
Protocol
Buffer来序列化要传递的数据结构。在架构设计上,Fabric
可能与比特币等区块链产品有所不同,但是上述基本组成部分还是不可或缺的。
在多核时代,Go
语言备受喜爱,它可以让你用同步方式轻松实现高并发,特别是在分布式系统、网络编程等领域,应用非常广。所以,在区块链开发领域,也有很多使用Go
语言的项目。
Hyperledger
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>管理>全局设定
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. 安装配套软件
Hyperledger
的开发工具需要:
1
2
3
4
5
6
7
8Operating 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.1
2
3curl -O https://hyperledger.github.io/composer/prereqs-ubuntu.sh
chmod u+x prereqs-ubuntu.sh
./prereqs-ubuntu.shcurl
命令或者命令报错需先安装curl
1
2apt-get update
apt-get install curlnpm
会自动更新,如果更新不成功需按提示赋予权限后再次重启用户。这样不会再出现npm
和node
无法运行的情况。
运行Hyperledger Composer和Hyperledger Fabric推荐至少4Gb的内存
4. 安装Hyperledger开发工具
一定要在non-privileged用户(eg non-root)下安装如下开发工具
1
2
3
4npm install -g composer-cli
npm install -g generator-hyperledger-composer
npm install -g composer-rest-server
npm install -g yonpm WARN
可以不用理会
如出现权限错误: 1
2npm ERR! path: ...
...chown -R
命令赋予用户相关路径的权限来解决:
1
chown -R UserName:UserName Path
1
npm install -g composer-playground
1
2
3docker kill $(docker ps -q)
docker rm $(docker ps -aq)
docker rmi $(docker images dev-* -q)~/fabric-tools
)安装zip文件 1
2
3
4mkdir ~/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.zip1
export FABRIC_VERSION=hlfv1
~/fabric-tools
中。一个典型的Hyperledger
Composer使用流程是 1
2
3
4cd ~/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
3cd ~/fabric-tools
./stopFabric.sh
./teardownFabric.sh
在非root用户下clone一个sample网络: 1
2git clone https://github.com/hyperledger/composer-sample-networks.git
cp -r ./composer-sample-networks/packages/basic-sample-network/ ./my-networkVSCode
选择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
2cd my-network
npm installcomposer archive create
命令就在dist
文件夹中创建了一个文件my-network.bna
编写Unit
Tests(测试),写入test/sample.js
文件。然后编写文件features/sample.feature
(测试定义文件)。再确认Unit测试通过:
1
npm test
运行composer-playground的快速方法:
- 拉取composer-playground镜像
1
docker pull hyperledger/composer-playground
- 本地启动镜像 然后就可以在浏览器上使用
1
docker run --name composer-playground -p 8080:8080 -d hyperledger/composer-playground
Hyperledger Composer Playground
http://localhost:8080/ - 结束并关闭容器
1
docker rm -f composer-playground
6.
部署到运行中Hyperledger Fabric
可以先试运行composer
命令 1
composer
Hyperledger Composer
。如果命令不存在,可能是环境变量问题
1
export PATH = $PATH:/安装了composer-cli等工具的路径
1
2cd dist
composer network deploy -a my-network.bna -p hlfv1 -i PeerAdmin -s randomString1
composer network ping -n my-network -p hlfv1 -i admin -s adminpw
my-network
文件夹中输入 1
composer-rest-server
{:height="100%" width="100%"}
如果运行成功,可以在输出中看到两行网络地址 1
2Web server listening at: http://localhost:3000
Browse your REST API at http://localhost:3000/explorerhttp://localhost:3000/explorer
就能看到
![LoopBack API Explorer](https://hyperledger.github.io/composer/assets/img/tutorials/developer/lb_explorer.png)
包括Commodity
,System
,Trade
,Trader
8. 生成Skeleton Web Application
关闭composer-rest-server
进程,运行 1
yo hyperledger-composer
![yo](https://hyperledger.github.io/composer/assets/img/tutorials/developer/composer-yo-generator.png)
等待几分钟到应用安装完成,进入新应用目录 1
2cd my-app
npm startcomposer-rest-server
开始运行,Angular打包的网络应用在http://localhost:4200
,点击Assets就可以看到存储在Hyperledger
Fabric上的Commodity了。