用于创建Hyperledger Composer解决方案的开发人员教程
本教程将引导您从头开始构建Hyperledger Composer区块链解决方案。在几个小时的时间内,您将能够从破坏性区块链创新的想法,到针对真正的Hyperledger Fabric区块链网络执行交易,以及生成/运行与区块链网络交互的示例Angular 2应用程序。
本教程概述了可应用于您自己的用例的技术和资源。
注意:本教程是针对在Hyperledger Fabric v1.2上运行的Ubuntu Linux上构建的最新Hyperledger Composer编写的,其中引用了下面的内容并测试了Mac环境。
先决条件
在开始本教程之前:
- 设置您的开发环境
- 安装编辑器,例如VSCode或Atom
第一步:创建业务网络结构
Hyperledger Composer的关键概念是业务网络定义(BND)。它定义了区块链解决方案的数据模型,事务逻辑和访问控制规则。要创建BND,我们需要在磁盘上创建合适的项目结构。
最简单的入门方法是使用Yeoman生成器创建骨架业务网络。这将创建一个包含业务网络的所有组件的目录。
-
使用Yeoman创建骨架业务网络。此命令将需要业务网络名称,描述,作者姓名,作者电子邮件地址,许可证选择和命名空间。
yo hyperledger-composer:businessnetwork
-
输入
tutorial-network
用于网络名称,以及描述,作者姓名和作者电子邮件的所需信息。 -
选择
Apache-2.0
作为许可证。 -
选择
org.example.mynetwork
作为命名空间。 -
选择
No
当被问及是否生成空网络时。
第二步:定义业务网络
业务网络由资产,参与者,事务,访问控制规则以及可选的事件和查询组成。在前面步骤中创建的骨架业务网络中,有一个model(.cto
)文件,其中包含业务网络中所有资产,参与者和事务的类定义。骨架业务网络还包含permissions.acl
具有基本访问控制规则的访问控制()文档,logic.js
包含事务处理器功能的脚本()文件以及package.json
包含业务网络元数据的文件。
建模资产,参与者和交易
要更新的第一个文档是model(.cto
)文件。此文件使用Hyperledger Composer建模语言编写。模型文件包含每类资产,事务,参与者和事件的定义。它隐含地扩展了建模语言文档中描述的Hyperledger Composer系统模型。
-
打开
org.example.mynetwork.cto
模型文件。 -
用以下内容替换内容:
/** * My commodity trading network */ namespace org.example.mynetwork asset Commodity identified by tradingSymbol { o String tradingSymbol o String description o String mainExchange o Double quantity --> Trader owner } participant Trader identified by tradeId { o String tradeId o String firstName o String lastName } transaction Trade { --> Commodity commodity --> Trader newOwner }
-
保存您的更改
org.example.mynetwork.cto
。
添加JavaScript事务逻辑
在模型文件中,Trade
定义了一个事务,指定了与资产和参与者的关系。事务处理器函数文件包含用于执行模型文件中定义的事务的JavaScript逻辑。
该Trade
交易旨在简单地接受Commodity
正在交易的资产的标识符,以及Trader
要设置为新所有者的参与者的标识符。
-
打开
logic.js
脚本文件。 -
用以下内容替换内容:
/** * Track the trade of a commodity from one trader to another * @param {org.example.mynetwork.Trade} trade - the trade to be processed * @transaction */ async function tradeCommodity(trade) { trade.commodity.owner = trade.newOwner; let assetRegistry = await getAssetRegistry('org.example.mynetwork.Commodity'); await assetRegistry.update(trade.commodity); }
-
保存您的更改
logic.js
。
添加访问控制
-
替换文件中的以下访问控制规则
permissions.acl
:/** * Access control rules for tutorial-network */ rule Default { description: "Allow all participants access to all resources" participant: "ANY" operation: ALL resource: "org.example.mynetwork.*" action: ALLOW } rule SystemACL { description: "System ACL to permit all access" participant: "ANY" operation: ALL resource: "org.hyperledger.composer.system.**" action: ALLOW }
-
保存您的更改
permissions.acl
。
第三步:生成业务网络存档
现在已经定义了业务网络,它必须打包到可部署的业务网络archive(.bna
)文件中。
-
使用命令行,导航到
tutorial-network
目录。 -
从
tutorial-network
目录中,运行以下命令:composer archive create -t dir -n .
运行该命令后,将tutorial-network@0.0.1.bna
在tutorial-network
目录中创建一个名为的业务网络存档文件。
第四步:部署业务网络
创建.bna
文件后,可以将业务网络部署到Hyperledger Fabric实例。通常,需要来自Fabric管理员的信息来创建PeerAdmin
标识,具有向对等方安装链代码以及在composerchannel
通道上启动链代码的权限。但是,作为开发环境安装的一部分,PeerAdmin
已经创建了标识。
安装业务网络后,即可启动网络。为获得最佳实践,应创建新标识以在部署后管理业务网络。此身份称为网络管理员。
检索正确的凭据
一个PeerAdmin
有正确的凭据业务网络卡已为开发环境安装的一部分创建的。
部署业务网络
将业务网络部署到Hyperledger Fabric需要将Hyperledger Composer业务网络安装在对等方,然后可以启动业务网络,并且必须创建新的参与者,身份和关联的卡作为网络管理员。最后,必须导入网络管理员业务网卡才能使用,然后可以ping通网络以检查它是否正在响应。
-
要安装业务网络,请从
tutorial-network
目录中运行以下命令:composer network install --card PeerAdmin@hlfv1 --archiveFile tutorial-network@0.0.1.bna
该
composer network install
命令需要PeerAdmin业务网卡(在这种情况下,一个已经预先创建并导入),以及.bna
定义业务网络的文件路径。 -
要启动业务网络,请运行以下命令:
composer network start --networkName tutorial-network --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card
该
composer network start
命令需要业务网卡,以及业务网络的管理员标识的名称,业务网络的名称和版本以及要创建的文件的名称,可以作为业务网卡导入。 -
要将网络管理员标识导入为可用的业务网卡,请运行以下命令:
composer card import --file networkadmin.card
该
composer card import
命令需要指定的文件名composer network start
才能创建卡。 -
要检查业务网络是否已成功部署,请运行以下命令来ping网络:
composer network ping --card admin@tutorial-network
该composer network ping
命令需要业务网卡来识别要ping的网络。
第五步:生成REST服务器
Hyperledger Composer可以基于业务网络生成定制的REST API。为了开发Web应用程序,REST API提供了一个有用的语言中立抽象层。
-
要创建REST API,请导航到
tutorial-network
目录并运行以下命令:composer-rest-server
-
输入
admin@tutorial-network
作为卡名。 -
选择 决不当被问及是否在生成的API中使用名称空间时,请使用名称空间。
-
选择 没有 当被问及是否保护生成的API时。
-
选择 是 当被问及是否启用事件发布时。
-
选择 没有 当被问及是否启用TLS安全性时。
生成的API连接到已部署的区块链和业务网络。
第六步:生成骨架角度应用程序
Hyperledger Composer还可以生成针对REST API运行的Angular 4应用程序。
-
要创建Angular 4应用程序,请导航至
tutorial-network
目录并运行以下命令:yo hyperledger-composer:angular
-
选择 是 当被要求连接到运行的业务网络时。
-
输入标准
package.json
问题(项目名称,描述,作者姓名,作者电子邮件,许可证) -
输入
admin@tutorial-network
用于商业网卡。 -
选择“ 连接到现有REST API”
-
输入
http://localhost
用于REST服务器地址。 -
输入
3000
用于服务器端口。 -
不使用选择命名空间
然后,Angular生成器将为项目创建脚手架并安装所有依赖项。要运行该应用程序,请导航到角度项目目录并运行 npm start
。这将启动针对您的REST API运行的Angular 4应用程序 http://localhost:4200
。
注意:Yo Angular应用程序生成器旨在基于简单和基本的业务网络模型定义(例如trade-network
此处的网络模型)生成框架Web应用程序。在Writing Web Applications中查看更多Angular生成器