首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Hyperledger Composer 基础,第 1 部分 建模和测试您的区块链网络-4

Hyperledger Composer 基础,第 1 部分 建模和测试您的区块链网络-4

测试业务网络模型非常适合用作您将要构建的应用程序的一种蓝图,但除非(在某个时刻)得到某个实际结果,否则事物的模型没什么用。例如,如果您将要建设一栋建筑,那么一栋摩天大楼的一组蓝图就至关重要,但是,除非在某个时刻将它们实际用于建造(实例化)一栋实际建筑,否则它们没多大用处!
返回到业务模型,如果想让该模型变得有用,就需要将其实例化。但这对区块链应用程序意味着什么?
Asset 和 Participant 注册表之前已经看到了针对 Grower 参与者、Shipment                资产等的模型。现在是时候将这些资源实例化了,它们的实例将位于各自的注册表中。所以资产实例位于 Asset 注册表中,参与者实例位于                Participant 注册表中。
Perishable-network 模型包含一个交易,该交易在 lib/logic.js                模块中实现为一个名为 setupDemo() 的 JavaScript 函数,您可以使用该函数实例化模型,并在 Asset                和 Participant 注册表中创建条目。与手动输入模型相比,这提供了让业务网络更快地利用模板正常运行的一种方法。
我不会在这里介绍 setupDemo() 函数,但我想指出它执行的 3 件事:
  • 创建模型中的所有资产和参与者的实例
  • 设置这些实例上的属性值
  • 将实例存储在它们各自的注册表中
鼓励您在编辑器中打开 lib/logic.js 文件并自行查看它。
实例化模型要执行 SetupDemo 交易,请单击 Submit Transaction 按钮,一个类似图 4                的模态对话框将会出现。
图 4. SubmitTransaction - SetupDemo确保 SetupDemo 显示在 Transaction Type 下拉列表中,然后单击                    Submit 按钮。成功执行交易后,您会看到一条告知您结果的简短通知消息。
在左侧 ASSETS 窗格中选择                Grower,它的所有实例都将出现在右侧(图                5)。其他资源也是如此(请自行试验!)。
图 5. 一个 Grower 资产实例
既然已经定义了一个业务网络,以及各自注册表中的资产和参与者,现在可以测试您的网络了。
交易是什么?在本节中,目前我已经介绍了资产和参与者,但业务模型中的交易是什么?它们显示在何处?
首先回答第一个问题:交易表示应用程序的业务逻辑(智能合约或链代码)。setupDemo()                生成的智能合约所执行的业务逻辑规定了以下条件:
  • 船运集装箱内的温度始终保持在 6 摄氏度。如果货物的温度超出商定的范围(+/- 5 度),那么每下降一度,货物的单价(0.50                    美元)就会减少 0.20 美元,每上升一度,则减少 0.10 美元。
  • 如果货物延迟送达,Grower 不会收到货款。
那么这些交易显示在何处呢?交易不会自行实例化,而在 lib/logic.js 中显示为                JavaScript 代码。
图 6 显示了执行合约中的第二条规定(货物延迟则不付款)的智能合约代码(来自 lib/logic.js)。
图 6. 智能合约:货物延迟处罚
返回列表