Hyperledger Composer(3)

上述内容定义了组成该区块链解决方案不同组件所需的类型(Type)。为了测试我们的区块链解决方案,我们会创建这些类型的实例,并将其存储在注册机构(Registry)内,注册机构是Hyperledger Composer中另一个重要概念。我们将向机动车、机动车清单、成员,以及拍卖商等注册机构中填入数据,并可提交上文提到的两类事务。所有实例和事务数据均将通过区块链存储和访问,这样便可被网络中的参与者共享和信任。解决方案的开发者可以通过访问控制列表决定哪些参与者可以看到哪些资产。

为区块链汽车拍卖解决方案建模

Hyperledger Composer的所有组件均可下载并本地运行,此外还有一个在线版本的“试验场”,无需安装任何软件即可使用。如果希望从本地副本着手尝试,可参阅Hyperledger Composer文档页提供的快速上手指导;如果希望使用在线试验场,可直接访问Hyperledger Composer Playground页面

首次启动试验场并关掉欢迎界面后,会看到类似下图所示的界面(与其他正在活跃开发的项目一样,这个界面后续可能有所改动)。

(点击放大图像)

Hyperledger Composer

页面左侧显示了组成区块链项目的所有文件:

一个About文件 – Markdown格式的说明文件,试验场默认将显示该文件的内容。

一个Model文件 – 定义了项目中涉及的资产、参与者,以及事务。

一个Script文件 – 以JavaScript实现的事务逻辑。

一个Access Control List – 决定了哪些参与者可以看到哪些资产。

一个Add按钮 – 必要时可向项目中添加额外的文件。

一个Deploy按钮 – 可将对项目文件的改动应用给当前已连接的区块链实例或模拟器。

Import功能可将试验场的内容替换为指定的其他内容。

Export功能可将整个解决方案打包为一个文件,并转移到其他环境中使用。

界面右侧的主区域显示了所选文件的编辑器或查看器。此外页面顶部的Define/Test选项卡可供我们在开发或测试模式之间切换。最后,页面右上角可供我们(在本地版本中)模拟另一个区块链用户的身份,连接至自己的线上区块链实例,或开始在Web浏览器中模拟。在线版试验场目前仅支持模拟器模式。

首先我们需要将试验场窗口中的文件替换为汽车拍卖应用所需的文件。此处打算使用预创建的范例。如果要开发自己的网络,通常最好导入范例模板,以此为基础着手进行。

点击“Import/Replace”按钮。首先需要通过GitHub进行身份验证,随后将直接通过在线代码库下载可用的范例。如果愿意,也欢迎大家贡献自己设计的网络。随后选择“carauction-network”并点击Deploy,这样即可用Car Auction项目的文件替换试验场中的默认文件。

选中Model文件(model/org.acme.vehicle.auction.cto)可查看有关资产、参与者,以及事务的定义。同理,Script文件(lib/logic.js)包含了两个事务类型的JavaScript实现。

重要的是,只需要50行简单的特定领域语言代码以及100行JavaScript,我们就可以定义实现区块链解决方案所需的全部元素。

测试区块链汽车拍卖解决方案

单击试验场顶部的“Test”选项卡,即可与参与者和资产注册机构交互,并能将事务提交至区块链。该选项卡下显示的一切内容都是从Model文件动态推导的。

首先在Member注册机构创建几个参与者:为他们分配一定的初始金额(这里是通过最简单的整数实现的),以及用于进行唯一性区分的邮件地址,当然还有姓名。

随后在Vehicle注册机构创建一辆机动车:VIN(机动车识别号)是一种具备唯一性的标识字符串,初始所有者可以是已创建完成的某个所有者的邮件地址(因为模型已将邮件地址定义为唯一标识符)。

最后创建一个Vehicle Listing:为其分配一个唯一的清单ID,填入底价和描述信息。此时的状态应该是“FOR_SALE”,建议清空报价数组("offers" : [])。Vehicle字段应包含所创建机动车的VIN字符串,因为模型已将VIN字段定义为唯一标识符。

注册机构设置完毕后,即可通过提交事务的方式为该机动车添加报价。单击“Submit Transaction”,选择事务类型为“Offer”并填写竞标价格、列表(上文输入的唯一列表ID)以及成员(出价的参与者对应的邮件地址)。这会导致Offer事务相关联的JavaScript开始运行,将新的报价添加到相关清单的报价数组中。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13688.html