基于Hyperledger Composer的区块链为底层搭建具体的业务网络架构教程 | 程序小兵

基于Hyperledger Composer的区块链为底层搭建具体的业务网络架构教程

采用hyperledger composer部署业务网络的教程,在已经搭建好区块链的基础底层架构后,需要在上面进行具体的业务需求定制,才能发挥区块链解决实际问题的根本需求。因此,搭建业务需求过程中,为了便捷高效,可通过以下4个步骤进行业务逻辑框架的搭建。

  1. 创建业务网络的结构
  2. 定义一个商业网络
  3. 生成业务网络归档
  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

文章目录
  1. 1. 第一步-创建业务网络的结构
  2. 2. 第二步-定义一个商业网络
    1. 2.1. 建模资产,参与者和交易
    2. 2.2. 添加JavaScript事务逻辑
    3. 2.3. 添加访问控制
  3. 3. 第三步-生成业务网络归档
  4. 4. 第四步-部署业务网络
    1. 4.1. 检索正确的凭证
    2. 4.2. 部署业务网络
    3. 4.3. 创建REST服务器
    4. 4.4. 生成一个应用程序
,