如何使用Hyperledger在区块链上创建应用程序
我们将使用Hyperledger Composer构建数字银行。
在开始之前,您需要确保所使用的机器配备了必需的配置。您可能需要下载某些先决条件并设置基本的开发环境。以下是执行此操作的链接。在开始开发应用程序之前,请执行以下步骤,否则,您肯定会遇到愚蠢的错误。
首先安装Hyperledger Composer,然后安装开发环境。
安装环境时,无需启动Playground。
确保docker正在运行,并且在运行./startFabric.sh时将花费几分钟。所以要耐心点。
现在您的机器已经准备就绪,我们可以开始编码了!
1.概述您的业务网络
业务网络定义(BND)由数据模型,事务逻辑和访问控制规则组成。数据模型和访问控制规则以特定域的语言编码(非常容易掌握)。交易逻辑将使用JavaScript进行编码。
要创建BND,我们需要在磁盘上创建合适的项目结构。我们将使用Yeoman创建一个基本的业务网络。要创建项目结构,请打开您的终端并运行以下命令:
$ yo hyperledger-composer
这将引发一系列问题,如下所示。您将需要使用箭头键浏览答案。
在您喜欢的文本编辑器中打开该项目。我正在使用Visual Code。文件结构如下所示:
删除test / logic.js的内容。我们暂时不会使用它。
2.编制我们的业务网络(models / test.cto)
首先,我们将定义models / test.cto。它包含业务网络中所有资产,参与者和交易的类定义。该文件是用Hyperledger Composer建模语言编写的。
namespace test
asset Account identified by accountId
participant Customer identified by customerId
transaction AccountTransfer {--> Account from--> Account too Double amount}
帐户是一种由accountId唯一标识的资产。每个帐户相链接的客户谁是所有者的帐户。帐户具有余额属性,该属性指示帐户随时拥有多少资金。
客户是一个由customerId唯一标识的参与者。每个客户都有firstName和lastName。
AccountTransfer是可能发生的交易,以从一个帐户多少钱要转账存储。
3.编制业务网络(lib / logic.js)
在此文件中,我们将在JavaScript中添加事务逻辑。
/*** Sample transaction* @param accountTransfer* @transaction*/
function accountTransfer(accountTransfer)
accountTransfer.from.balance -= accountTransfer.amount;accountTransfer.to.balance += accountTransfer.amount;
return getAssetRegistry('test.Account').then (function (assetRegistry) ).then (function () ).then(function (assetRegistry) );
}
@param accountTransfer是我们放在文件顶部的装饰器,用于将交易与我们的JavaScript函数链接在一起。然后,我们验证资金所在的帐户中是否有足够的资金。否则,将引发错误。然后,我们对帐户余额执行基本的加法和减法。
此时,最重要的步骤是在区块链上进行更新。为此,我们调用资产的getAssetRegistry API,即Account。然后,我们为分配资金的帐户和接收资金的帐户更新检索到的assetRegistry。
4.生成业务网络存档(BNA)
现在已经定义了业务网络,必须将其打包到可部署的业务网络存档(
.bna
)文件中。
4.1 在您的终端中导航到测试银行应用程序。
4.2 运行以下命令:
$ composer archive create -t dir -n .
这将在测试银行文件夹中创建一个.bna文件。
5.在结构上部署业务网络存档文件
5.1 安装Composer运行时
$ composer runtime install --card PeerAdmin@hlfv1 --businessNetworkName test-bank
5.2 部署业务网络
$ composer network start --card PeerAdmin@hlfv1 --networkAdmin admin --networkAdminEnrollSecret adminpw --archiveFile test-bank@0.0.1.bna --file networkadmin.card
(确保您位于测试银行文件夹中)。
5.3 将网络管理员身份导入为可用的商务网卡
$ composer card import --file networkadmin.card
5.4 要检查业务网络是否已成功部署,请运行以下命令ping网络:
$ composer network ping --card admin@test-bank
6.公开RESTful API
要从命令行创建RESTful API,请运行以下命令:
$ composer-rest-server
这将引发很多问题。
现在,将浏览器指向http:// localhost:3000 / explorer。
您将看到区块链API。
现在让我们添加两个客户。
让我们添加一个名为Niharika Singh的客户:
我们得到一个200的响应码。
现在,我们将以类似的方式添加名为Tvesha Singh的客户。
要检查是否正确添加了它们,请获取它们。
您将在响应正文中看到两个客户。
现在,我们添加链接到这两个客户的2个帐户。
通过这种方式添加账户。现在,获取它们以检查是否正确添加了它们。
现在让我们将75从Niharika转移到Tvesha。
让我们通过获取帐户信息来检查余额是否已更新。
Niharika现在有25,而Tvesha有125。
7.有角前端
要自动创建Angular脚手架,请在test-bank文件夹中运行以下命令:
$ yo
这将问多个问题。
这将需要几分钟。
导航到银行应用程序。
$ npm start
这将启动Angular服务器。
Angular文件结构的创建如下:
将浏览器指向http:// localhost:4200。那就是魔术发生的地方!您会看到以下屏幕:
现在,转到右上角的“资产”,然后点击“账户”。
这些是我们创建的确切账户。
因此,现在您可以尝试一下。
您已经准备好前端和后端!
在localhost:3000上发生的所有事务都反映在localhost:4200上,反之亦然。而这一切都在区块链上。
Scan QR code with WeChat