Playground 教程

在这个手把手教程中,我们将通过建立一个业务网络,定义我们的资产、参与者和交易,以及通过创建一些参与者和资产来测试我们的网络,并提交交易来将资产的所有权从一个更改为另一个。

第一步:打开Hyperledger Composer Playground

打开Composer Playground。你应该看到“ 我的业务网络”屏幕。“ 我的业务网络”页面显示了你可以连接到的业务网络的摘要,以及可用于连接的身份。现在不要担心这个问题,因为我们要建立自己的网络。

第二步:创建一个新的业务网络

接下来,我们要从头开始创建一个新的业务网络。一个业务网络有几个定义的属性; 一个名字和一个可选的描述。你也可以选择在现有模板上建立新的业务网络,或导入自己的模板。

  1. 点击在Web浏览器标题下部署一个新的业务网络开始。

  2. 新的业务网络需要一个名字,让我们叫它tutorial-network

  3. 你也可以选择输入业务网络的说明。

  4. 接下来我们必须选择一个我们基于的业务网络,因为我们要从头构建网络,点击空白业务网络

  5. 现在我们的网络已经定义好了,点击部署

视频

第三步:连接到业务网络

现在我们已经创建并部署了业务网络,你应该会看到一个名为admin的新业务网络卡片,用于你的钱包中的业务网络 tutorial-network。钱包可以包含业务网络卡片以连接到多个部署的业务网络。

连接到外部区块链时,业务网络卡片代表连接到业务网络所需的一切。它们包括连接详细信息、身份认证材料和元数据。

要连接到我们的业务网络,请点击我们业务网络卡下面的现在连接

视频

第四步:添加一个模型文件

正如你所看到的,我们现在处于“ 定义”选项卡中,在部署和测试(使用测试选项卡)业务网络之前,此选项卡是创建和编辑业务网络定义文件的地方。

当我们选择一个空的业务网络模板时,我们需要定义我们的业务网络文件。第一步是添加一个模型文件。模型文件定义了我们业务网络中的资产、参与者、交易和事件。

有关我们建模语言的更多信息,请查看我们的文档

  1. 点击添加一个文件按钮。

  2. 点击模型文件,然后点击添加

  3. 删除模型文件中的代码行并用以下替换:

    1. /**
    2. * My commodity trading network
    3. */
    4. namespace org.acme.mynetwork
    5. asset Commodity identified by tradingSymbol {
    6. o String tradingSymbol
    7. o String description
    8. o String mainExchange
    9. o Double quantity
    10. --> Trader owner
    11. }
    12. participant Trader identified by tradeId {
    13. o String tradeId
    14. o String firstName
    15. o String lastName
    16. }
    17. transaction Trade {
    18. --> Commodity commodity
    19. --> Trader newOwner
    20. }

    这个领域模型定义了一个资产类型Commodity和单个参与者类型Trader以及一个用于修改商品所有者的交易类型Trade

第五步:添加一个交易处理器脚本文件

现在已经定义了领域模型,我们可以定义业务网络的交易逻辑。Composer使用JavaScript函数为一个业务网络表达逻辑。当一个交易提交处理时这些函数会自动执行。

有关编写交易处理函数的更多信息,请查阅我们的文档

  1. 点击添加文件按钮。

  2. 单击脚本文件,然后单击添加

  3. 删除脚本文件中的代码行并替换为以下代码:

    1. /**
    2. * Track the trade of a commodity from one trader to another
    3. * @param {org.acme.mynetwork.Trade} trade - the trade to be processed
    4. * @transaction
    5. */
    6. function tradeCommodity(trade) {
    7. trade.commodity.owner = trade.newOwner;
    8. return getAssetRegistry('org.acme.mynetwork.Commodity')
    9. .then(function (assetRegistry) {
    10. return assetRegistry.update(trade.commodity);
    11. });
    12. }

这个函数只是简单地改变一个商品的owner属性,根据一个传入的Trade交易的newOwner属性。然后它将修改后Commodity持久化到资产库中,用于存储Commodity实例。

第六步:访问控制

访问控制文件定义了业务网络的访问控制规则。我们的网络很简单,所以默认的访问控制文件不需要编辑。基本文件给予了当前参与者networkAdmin业务网络和系统级操作的完全访问权限。

虽然你可以有多个模型或脚本文件,但在任何业务网络中只能有一个访问控制文件。

有关访问控制文件的更多信息,请查看我们的文档

第七步:部署更新后的业务网络

现在我们有模型、脚本和访问控制文件,我们需要部署和测试我们的业务网络。

点击更新将更新部署到我们的业务网络。

视频

第八步:测试业务网络的定义

接下来,我们需要测试我们的业务网络,创建一些参与者(本例中是交易者)、创建了一个资产(一个商品),然后使用我们的Trade交易改变商品的所有权。

点击测试标签开始。

视频

第九步:创建参与者

我们应该添加到业务网络的第一件事是两个参与者。

1.确保左边选择了交易者选项卡,然后点击右上角的“ 创建新参与者 ”。

2.你可以看到交易者参与者的数据结构。我们需要一些容易识别的数据,所以删除那里的代码并粘贴下面的代码:

   {
     "$class": "org.acme.mynetwork.Trader",
     "tradeId": "TRADER1",
     "firstName": "Jenny",
     "lastName": "Jones"
   }

3.点击新建创建参与者。

4.你应该能够看到你创建的新交易者参与者。我们需要另一个交易者来测试我们的Trade 交易,所以创建另一个交易者,但这次使用以下数据:

   {
     "$class": "org.acme.mynetwork.Trader",
     "tradeId": "TRADER2",
     "firstName": "Amy",
     "lastName": "Williams"
   }

在继续之前,确保两个参与者都存在于交易者视图中!

视频

第十步:创建一个资产

现在我们有两个交易者参与者,我们需要一些交易。创建资产与创建参与者非常相似。我们正在创建的商品我有一个所有者属性,表明它属于tradeIdTRADER1交易者

1.点击资产下的商品标签,然后点击创建新资产**

2.删除资产数据并将其替换为以下内容:

   {
     "$class": "org.acme.mynetwork.Commodity",
     "tradingSymbol": "ABC",
     "description": "Test commodity",
     "mainExchange": "Euronext",
     "quantity": 72.297,
     "owner": "resource:org.acme.mynetwork.Trader#TRADER1"
   }

3.创建此资产后,你应该能够在商品选项卡中看到它。

视频

第十一步:在参与者之间转移商品

现在,我们有两个交易者和一个用于交易的商品,我们可以测试我们的Trade交易。

交易是Hyperledger Composer业务网络中所有变化的基础,如果你想在本教程后践行自己的尝试,请尝试从我的业务网络屏幕创建另一个业务网络,并使用更高级的业务网络模板。

测试Trade交易:

1.点击左侧的提交交易按钮。

2.确保交易类型是Trade

3.将交易数据替换为以下内容,或者仅更改细节:

   {
     "$class": "org.acme.mynetwork.Trade",
     "commodity": "resource:org.acme.mynetwork.Commodity#ABC",
     "newOwner": "resource:org.acme.mynetwork.Trader#TRADER2"
   }

4.点击提交

5.通过展开资产数据部分,检查我们的资产已经改变所有权从TRADER1TRADER2。你应该看到,所有者被列为resource:org.acme.mynetwork.Trader#TRADER2

6.要查看我们业务网络的完整交易记录,请点击左侧的所有交易。这里是每个被提交的交易的清单。你可以看到,我们使用用户界面执行的某些操作,如创建Trader参与者和商品资产,被记录为交易,即使它们没有在我们的业务网络模型中定义为交易。这些交易被称为“系统交易”,对所有业务网络都是通用的,并在Hyperledger Composer运行时中定义。

视频

注销业务网络

现在交易已经成功运行,我们应该退出业务网络,在一开始的我的业务网络屏幕上退出。

在屏幕的右上方是一个标有admin的按钮。这将列出你的当前身份,去登出,单击admin打开下拉菜单,然后单击我的业务网络

接下来是什么?

你已完成最初的Hyperledger Composer Playground教程,你可能需要使用其他示例或模板开始构建自己的业务网络。

你可能想要尝试开发者教程,获取你的本地开发环境设置,生成REST API和框架Web应用程序。

或者,你可以运行本地连接到Hyperledger Fabric的实例的Hyperledger Composer Playground