首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用超级账本创建一条区块链

我们在这篇文章中将讲述如何使用超级账本Composer创建一个数字银行。这个数字银行会有用户和账户,并且在最后,你还将能够在区块链上转移资金和记录所有交易。我们同时还将公开一个RESTful API,从而即使一个不知道什么是区块链的人,也可以在它周围建立一个漂亮的用户界面(UI)。我们还将在Angular中创建这个应用的UI。

我非常兴奋能和你分享这个一步步的指南。所以我们马上开始吧!

当我第一次编写这个代码时,我遇到了错误,很多很多。但我认为那很好,因为这让我学到了很多东西。错误是必不可少的。我认为错误和曲折会使事情变得更好。这几乎使我失去理智,但这对一个黑客的生涯来说是不可或缺的一部分。

在开始之前,您需要确保所使用的机器配备了所需的配置。您可能需要下载某些必备软件并设置一个基本的开发环境。下面的链接可以告诉你怎么做。在开始开发应用程序之前,请遵循这些步骤,否则您肯定会遇到愚蠢的错误。

首先安装超级账本Composer。然后安装开发环境。

安装开发环境时不需要启动Playground。

当你运行./startFabric.sh时,确保docker也正在运行。这个过程需要几分钟完成,请耐心等待。

设备现在已经安装好了,我们就可以开始编码了!

步骤1:概述您的业务网络。

我们的业务网络定义(BND)包括数据模型、交易逻辑和访问控制规则。数据模型和访问控制规则是用特定领域的语言编写的(很简单就能跟上)。交易逻辑将用javascript编码。

要想创建一个BND,我们需要在磁盘上创建一个合适的项目结构。我们将使用Yeoman创建一个基本的业务网络。若要创建项目结构,请打开终端并运行以下命令:

这将遇到一系列问题,如下所示。你需要使用你的方向键来在答案中进行导航。

使用你最擅长的文本编辑器中打开这个项目。本文中我使用的是Visual Code。下图便是这个文件结构的样式:

删除test/logic.js中的内容。我们现在用不到它。

步骤2.1:编写业务网络代码(models/test.cto)

首先,我们将定义models/test.cto。它包含业务网络中所有资产、参与者和交易的类定义。这个文件是以超级账本Composer建模语言编写的。

Account(账户)是一种与accountId独一无二地相对应的资产。每一个Account都与Customer(客户)相连,Customer是账户的owner(所有者)。Account具有balance(余额)属性,可以随时显示这个Account所持有的资金多少。

Customer是一个与accountId独一无二地相对应的参与者。每一个Customer都有firstName(名)和lastName(姓)。

AccountTransfer是在Account中从tofrom之间发生的交易。Amount则存储的是转移的资金多少。

步骤2.2:编写业务网络代码(lib/logic.js)

在这个文件中,我们将在javascript中添加交易逻辑。

@param accountTransfer是我们放在这个文件顶端来将这笔交易与我们的JavaScript函数连接在一起的装饰模式。然后我们验证资金所在的账户是否有足够的资金。否则,程序将抛出错误。然后,我们对帐户的余额进行基本的加减。

此时,最重要的一步是更新区块链上的内容。

对此,我们将调用我们资产(也就是Account)的getAssetRegistry API。然后我们为收取资金的账户和发出资金的账户update(更新)被检索到的assetRegistry

步骤3:生成业务网络存档 (BNA)

业务网络被定义过后必须打包到一个可部署的业务网络存档(.bna)文件。

步骤3.1:导航到终端中的test-bank App中。

步骤3.2:运行以下命令:

这将在test-bank文件夹中创建一个.bna文件。

步骤4:在Fabric上部署业务网络存档文件。

步骤4.1:安装composer runtime

步骤4.2:部署业务网络

$ composer network start –card PeerAdmin@hlfv1 –networkAdmin admin –networkAdminEnrollSecret adminpw –archiveFile test-bank@0.0.1.bna –file networkadmin.card

(确保你进入了test-bank文件夹)

步骤4.3:导入网络管理员身份作为可用的业务网络卡片

步骤4.4:检查业务网络是否已成功部署,请运行以下命令行ping这个网络:

步骤5:公开一个RESTful API

要从命令行创建RESTful API,请运行以下命令:

$ composer-rest-server

这会产生很多问题。

现在使用浏览器打开http://localhost:3000/explorer

您将看到您漂亮的区块链API。

现在让我们添加两个客户(Customer)。

首先,让我们添加一个叫Niharika Singh的客户:

我们得到了200个响应代码。

现在我们将以类似的方法添加一位叫Tvesha Singh的客户。

若要检查是否正确添加了它们,请获取(GET)它们。

你会在响应体中看到两个客户。

现在,让我们添加两个与这两个客户相关的帐户(account)。

以这种方式添加账户。现在,通过获取账户来检查你是否添加成功。

现在让我们从Niharika向Tvesha转账75。

让我们通过获取帐户信息看看余额是否更新了。

太棒了,成功了。Niharika现有有了25,而Tvesha有125。

步骤6:Angular前端

要自动创建Angular脚手架,请在test-bank文件夹中运行以下命令:

这将涉及多个问题。

需要几分钟。

进入 bank-app。

Angular服务器将启动。

Angular文件结构如下所示:

使用浏览器打开http://localhost:4200。魔法就在这里发生!你会在屏幕上看到以下内容:

现在通过界面右上部进入Assets并点击Account。

这些便是我们创建的账户。

现在你自己动手可以尝试一下了。

准备好你的前端和后端!

所有发生在localhost:3000上的交易都将反应在localhost:4200上,反之亦然。而这全都在区块链上。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180312A18G9W00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券