参加2018 AI开发者大会,请点击↑↑↑
营长之前写的教程类文章,大多是与以太坊智能合约、DApp开发等有关的实战文,受读者厚爱,大多还是比较喜欢的。
最近有不少读者在后台留言,希望营长写一些关于联盟链 Hyperledger Fabric 的实战教程,恰好营长最近在研究联盟链,趁着周末,就写一写吧。
在本文中,营长会手把手带你,基于 Fabric 和 Python 语言创建一个具有交易数字资产(球星卡)功能的区块链网络。虽然像是功能不全的区块链“淘宝”,但整个开发流程,还是非常有趣的!
还等什么?来实战吧!
作者 | Haardik
编译 | kou、Guoxi
你能学到什么?
通过学习本教程,你将学会创建一个具有交易数字资产(球星卡)功能的区块链网络,在这其中,拥有棒球、足球和板球球星卡的不同交易方之间能够进行互相交易。
为实现上述功能,你需要做:
建立一个 REST API 服务器,以帮助执行客户端调用;
编写一个 Angular 4 应用程序;
调用 REST API,实现 Angular 4 与区块链网络的交互。
最终效果图是这样的...
通过前后端交互,球星卡成功交易
本教程共6部分,根据自己需要,选择跳读吧,准备好了吗?开始!
Hyperledger Fabric 及相关应用程序简介
安装依赖包、工具和 Fabric 运行环境 Fabric runtime
创建和部署区块链业务网络
测试区块链业务网络
生成 REST API 服务器
生成调用 REST API 的 Angular 应用程序
1、Hyperledger Fabric及相关应用程序简介
Hyperledger开发环境概述
Hyperledger Fabric 是一个开源的区块链框架,可以用来创建私有区块链(许可区块链)业务网络,在网络中每个成员的身份和角色都被其他成员所知。
我们要构建的区块链网络将以 Fabric 作为后端,客户端应用程序作为前端。目前软件开发工具包(SDK)支持使用 Node.js 和 Java 来构建客户端应用程序,未来很快就会支持 Python 和 Golang。
Hyperledger Composer 是一组基于 JavaScript 的工具和脚本,可简化Hyperledger Fabric 网络的创建过程。通过这些工具,我们可以生成区块链的业务网络存档(business network archive,BNA)。
Composer 包含以下3个组件:
业务网络存档(BNA)
Composer Playground(用户界面)
Composer REST 服务器
业务网络存档 - Composer 允许用户打包不同的文件并生成一个存档,存档可以在 Fabric 中部署为区块链业务网络。要生成这个存档,需要以下4个文件:
网络模型 - 网络中所存资源的说明。这些资源包括资产,参与者和交易。我们稍后会详细讲述它们的细节。
业务逻辑 - 交易功能的逻辑。
访问控制 - 定义网络中不同参与者权限的各种规则,包括但不限于定义参与者可以控制的资产。
查询文件(可选的) - 可以在网络上运行的一组查询操作,我们可以简单地将其理解为 SQL 的查询功能。
Composer Playground 是一个基于 Web 的用户界面,主要用于区块链业务网络的建模和测试。Playground 使用浏览器的本地存储来模拟区块链网络,因此它非常适合简单的概念证明建模。
同时,如果用户在本地运行了 Fabric 运行环境并在其中部署了区块链网络,此时 Playground 可以用来与区块链网络进行交互。在这种情况下,Playground 并没有模拟区块链网络,而是直接与本地 Fabric 运行环境通信。
Composer REST 服务器是一个允许用户根据业务网络定义生成相应 REST API 服务器的工具。生成的 REST API 供客户端应用程序使用,帮助用户在区块链网络中整合非区块链的应用程序。
2、安装依赖包,工具和Fabric运行环境
1)安装依赖包
在深度了解了将要建立的区块链网络后,现在你可以动手开发了。但在开始编程前,请确保你的系统上已安装了所需的依赖包。
Hyperledger 官方文档中列出的依赖包有以下4个:
Docker Engine 和 Docker Compose
Node.js 和 NPM
Git
Python 2.7.x
Hyperledger 贴心地为 Ubuntu 用户提供了一个 bash 脚本,用来简化安装依赖包的过程。因而 Ubuntu 用户只需要在终端中运行以下命令:
1curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh
2chmod u+x prereqs-ubuntu.sh
3./prereqs-ubuntu.sh
而 Mac 用户必须手动安装上述工具,一定确保不落下任何一个依赖包,防止出现 bug。
2)安装工具来简化开发过程
在终端运行以下命令,并确保在运行 npm 命令时没有使用管理员权限 sudo。
1npm install -g composer-cli
2npm install -g composer-rest-server
3npm install -g composer-playground
4npm install -g yo generator-hyperledger-composer
composer-cli 是唯一必不可少的依赖包,其余的并不是核心组件,但在接下来的开发中它们非常有用。
3)安装本地 Hyperledger Fabric 运行环境
1mkdir ~/fabric-dev-servers
2cd ~/fabric-dev-servers
3curl -O https://raw.githubusercontent.com/hyperledger/composer-
4tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz
5tar -xvf fabric-dev-servers.tar.gz
6export FABRIC_VERSION=hlfv12
7./downloadFabric.sh
8./startFabric.sh