采用hyperledger composer部署业务网络的教程,在已经搭建好区块链的基础底层架构后,需要在上面进行具体的业务需求定制,才能发挥区块链解决实际问题的根本需求。因此,搭建业务需求过程中,为了便捷高效,可通过以下4个步骤进行业务逻辑框架的搭建。
- 创建业务网络的结构
- 定义一个商业网络
- 生成业务网络归档
- 部署业务网络
通过以上4个步骤,则可完成整个区块链+业务的迭代开发。
第一步-创建业务网络的结构
hyperledger composer的关键概念是商业网络定义(BND),它主要是为区块链网络解决数据类型、事物逻辑和访问控制,要创建一个BND,我们需要创建一个合适的项目结构。最便捷的方法是通过yeoman生成骨架业务网络,这将创建包含业务网络所有的组件的目录:
1、使用Yeoman创建一个骨架业务网络。此命令将需要业务网络名称,说明,作者姓名,作者电子邮件地址,许可证选择和命名空间。
yo hyperledger-composer:businessnetwork
2、输入tutorial-network
网络名称以及所需的描述信息,作者姓名和作者电子邮件。
3、选择 Apache-2.0 作为许可证。
4、选择org.example.mynetwork
作为命名空间。
5、选择 No
当被问及是否生成一个空网络时。
第二步-定义一个商业网络
通过composer 进行商业网络的代码开发
业务网络由资产,参与者,交易,访问控制规则以及可选的事件和查询组成。在前面步骤中创建的骨架业务网络中,有一个model(.cto)
文件,其中将包含业务网络中所有资产,参与者和事务的类定义。骨架业务网络还包含permissions.acl
具有基本访问控制规则的访问控制文档,logic.js
包含事务处理器功能的脚本文件以及package.json
包含业务网络元数据的文件。
建模资产,参与者和交易
第一个要更新的文档是model(.cto)
文件。该文件使用Hyperledger
Composer建模语言编写。模型文件包含每类资产,交易,参与者和事件的定义。它隐含地扩展了建模语言文档中描述的Hyperledger Composer
系统模型。
1、打开org.example.mynetwork.cto
模型文件。
2、用以下内容替换内容:
/**
* 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
}
3、保存您的更改org.example.mynetwork.cto
。
添加JavaScript事务逻辑
在模型文件中,Trade
定义了事务,指定与资产和参与者的关系。事务处理函数文件包含执行模型文件中定义的事务的JavaScript逻辑。
该Trade
交易旨在简单地接受Commodity
正在交易的资产的标识符以及Trader
要设置为新所有者的参与者的标识符。
1、打开 logic.js
脚本文件。
2、用以下内容替换内容:
/**
* 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);
}
3、保存您的更改logic.js
。
添加访问控制
1、替换文件中的以下访问控制规则 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
}
2、保存您的更改permissions.acl
。
第三步-生成业务网络归档
1、使用命令行,导航到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通网络以检查它是否正在响应。
1、要从目录安装业务网络tutorial-network,请运行以下命令:
composer network install --card PeerAdmin@hlfv1 --archiveFile tutorial-network@0.0.1.bna
该composer network install命令需要一个PeerAdmin业务网卡(在这种情况下,预先创建并导入一个网卡)以及.bna定义业务网络的文件路径。
2、要启动业务网络,请运行以下命令:
composer network start --networkName tutorial-network --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card
该composer network start命令需要企业网卡,以及业务网络的管理员身份名称,业务网络的名称和版本以及要创建的文件的名称,以准备将其导入为业务网卡。
3、要将网络管理员标识导入为可用的业务网卡,请运行以下命令:
composer card import --file networkadmin.card
该composer card import命令需要指定的文件名composer network start来创建卡片。
4、要检查业务网络是否已成功部署,请运行以下命令以ping网络:
composer network ping --card admin@tutorial-network
该composer network ping命令需要使用企业网卡来识别要ping的网络。
所有的执行命令,添加到一个
shell
脚本中,其中bless-network
为具体的业务网络的名称,根据不同名字修改,shell
脚本内容如下:
#!/bin/bash
echo "composer archive ..."
composer archive create -t dir -n .
echo "network install..."
composer network install --card PeerAdmin@hlfv1 --archiveFile bless-network@0.0.1
.bna
echo "network start..."
composer network start --networkName bless-network --networkVersion 0.0.1 --netwo
rkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file ne
tworkadmin.card
echo "network import..."
composer card import --file networkadmin.card
echo "network ping..."
composer network ping --card admin@bless-network
创建REST服务器
Hyperledger Composer可以基于业务网络生成定制的REST API。为了开发Web应用程序,REST API提供了一个有用的语言无关抽象层。
1、要创建REST API,请导航到 tutorial-network 目录并运行以下命令:
composer-rest-server
2、输入 admin@tutorial-network 作为名片。
3、选择 决不询问是否在生成的API中使用名称空间时使用名称空间。
4、选择 没有 当被问及是否保护生成的API。
5、选择 是 当被问及是否启用事件发布时。
6、选择 没有 当被问及是否启用TLS安全。
生成的API连接到部署的区块链和业务网络。
总命令为:
composer-rest-server -c admin@tutorial-network -n never -w true
生成一个应用程序
Hyperledger Composer还可以生成针对REST API运行的Angular 4应用程序。
1、要创建您的Angular 4应用程序,请导航至 tutorial-network 目录并运行以下命令:
yo hyperledger-composer:angular
2、选择 是 当被要求连接到运行业务网络时。
3、输入标准package.json问题(项目名称,说明,作者姓名,作者电子邮件,许可证)
4、输入 admin@tutorial-network 为商业网卡。
5、选择连接到现有的REST API
6、输入 http://localhost 为REST服务器地址。
7、输入 3000 用于服务器端口。
8、选择名称空间不被使用
9、然后,Angular generator将为该项目创建脚手架并安装所有依赖项。要运行该应用程序,请导航到您的角度项目目录并运行 npm start 。这将引发一个针对您的REST API运行的Angular 4应用程序 http://localhost:4200 。