怎么样使用超级账本创建一条区块链
在本文中,我们将讲述如何使用Hyperledger Composer创建数字银行。这个数字银行将有用户和账户,最终,你也可以在区块链上转移资金和记录所有交易。同时,我们还将公开一个RESTful API,这样即使一个不知道区块链是什么的人也可以围绕它构建一个漂亮的用户界面(UI)。我们还将在Angular中创建这个应用程序的UI。
我很高兴能与您分享这份循序渐进的指南。所以让我们马上开始吧!
当我第一次写这段代码时,我遇到了很多很多错误。但我认为那很好,因为它教会了我很多。错误是不可或缺的。我认为错误和曲折会让事情变得更好。这几乎让我失去理智,但却是黑客生涯中不可或缺的一部分。
在开始之前,您需要确保您使用的机器配备了所需的配置。你可能需要下载一些必要的软件,设置一个基本的开发环境。下面的链接可以告诉你怎么做。在您开始开发应用程序之前,请遵循这些步骤,否则您肯定会遇到愚蠢的错误。
首先安装Hyperledger Composer。然后安装开发环境。
安装开发环境时不需要启动游乐场。
当你跑的时候。/startFabric.sh,确保docker也在运行。这个过程需要几分钟才能完成,请耐心等待蓑衣网小编2022。
现在设备已经安装好了,可以开始编码了!第一步:勾勒出你的商业网络。
我们对业务网络(BND)的定义包括数据模型、交易逻辑和访问控制规则。数据模型和访问控制规则是用特定领域的语言编写的(很容易跟上)。交易逻辑将用javascript编码。
要创建BND,我们需要在磁盘上创建一个适当的项目结构。我们将使用约曼创建一个基本的商业网络。要创建项目结构,请打开终端并运行以下命令:
$ yo hyperledger-composer
这将遇到一系列问题,如下所示。你需要使用方向键来浏览答案。
蓑衣网小编2022使用您最好的文本编辑器打开此项目。我在这篇文章中使用了可视代码。下图是这个文件结构的风格:
删除test/logic.js中的内容我们现在不需要。
步骤2.1:编写业务网络代码(models/test.cto)首先,我们将定义models/test.cto .它包含了业务网络中所有资产、参与者和事务的类定义。该文件是用Hyperledger Composer建模语言编写的。namespace test由accountId标识的资产帐户{ o String accountId-Customer owner o Double balance }由customerId标识的参与者客户{ o String customerId o String first name o String last name }交易转移{-Account from-Account too Double amount }Account是唯一对应于Account id的资产。每个帐户都与客户相关,客户是帐户的所有者。通过账户余额属性,可以随时显示该账户持有的资金量。客户是与accountId唯一对应的参与者。每个顾客都有名字和姓氏。账户转账是账户之间的往来交易。金额存储转移资金的金额。第2.2步:编写业务网络代码(lib/logic.js)在这个文件中,我们将在javascript中添加事务逻辑。 /***示例事务* 蓑衣网小编2022 @param {test。account transfer } account transfer * @ transaction */函数account transfer(account transfer){ if(account transfer . from . balance account transfer . to . balance){ throw new Error('资金不足');} account transfer . from . balance-=account transfer . amount;account transfer . to . balance=account transfer . amount;返回getAssetRegistry('test。帐户)。then(function(asset registry){ return asset registry . update(account transfer . from);}).然后(function(){ return getAssetRegistry(' test。账户’);}).then(function(asset registry){ return asset registry . update(account transfer . to);});}@ param { test . Account Transfer }帐户转帐是我们放在该文件顶部的装饰模式,用于将该交易与我们的JavaScript函数连接起来。然后我们核实资金所在的账户有足够的资金。否则,程序将抛出一个错误。然后,我们对账户余额进行基本的加减运算。此时,最重要的步骤是更新区块链上的内容。为此,我们将调用我们的资产(即Account)的getAssetRegistry API。然后,我们为接收资金的账户和发放资金的账户更新检索到的资产注册。第三步:生成业务网络档案(bna)定义好业务网络后,必须将其打包成可部署的业务网络档案(。bna)文件。步骤3.1:导航到终端中的题库应用程序。步骤3.2:运行以下命令:$ composer archive create-t dir-n .这将在test-bank文件夹中创建一个. bna文件。步骤4:在结构上部署业务网络存档文件。
步骤4.1:安装composer运行时 $ composer运行时安装-card peer admin @ hlf v1-business network name test-bank步骤4.2:部署业务网络$ composer网络启动-card peer admin @ hlf v1-network admin admin-networkAdmin enroll secret adminpw-archive file test-bank @ 0 . 0 . 1 . bna-file network admi n . card
(确保进入test-bank文件夹)
步骤4 步骤4.4:检查业务网络是否已成功部署,请运行以下命令行ping此网络:
$ composer network ping-card admin @ test-bank
步骤5:公开一个RESTful API要从命令行创建一个RESTful API,请运行以下命令
现在使用浏览器打开http://localhost:3000/explorer
,您将看到您漂亮的区块链API。
现在让我们添加两个客户。
首先,让我们添加一个名为Niharika Singh的客户:
我们得到了200个响应代码。
现在我们将以类似的方式添加一个名为Tvesha Singh的客户。
要检查它们是否添加正确,请获取它们。
您将在回复正文中看到两个客户。
现在,让我们添加与这两个客户相关的两个帐户。
以这种方式添加帐户。现在,检查您是否通过获取帐户成功添加。
现在让我们把75从尼哈里卡转到特维沙。
通过获取账户信息来看看余额是否更新。很好,成功了。尼哈里卡现在有25个,而特维沙有125个。步骤6: Angular Front End要自动创建Angular scaffold,请在test-bank文件夹中运行以下命令:
$ yo
这将涉及多个问题。
这需要几分钟。
进入银行app。$ NPM startAngular server将启动。
Angular文件结构如下:用浏览器打开http://localhost:4200。神奇就发生在这里!你会在屏幕上看到以下内容:
现在通过界面右上方输入资产,点击账户。
这些是我们创建的帐户。 现在你可以自己试试了。准备好你的前后端!发生在localhost:3000上的所有事务都将反映在localhost:4200上,反之亦然。一切都在区块链。