我正在编写DA Ledger客户端应用程序。之所以进展缓慢,是因为API文档没有说明如何组合提供的服务以在账本上执行简单的创建,读取,更新和删除操作。
例如,没有简单的服务允许客户直接读取给定方的所有联系人。首先,客户需要获取分类帐ID,然后(我认为)包裹ID。等等。有一项服务可以读取有效合约,但是无效合约又如何呢?
拥有一些说明和演示如何将对各种服务的调用组合到(例如)的文档会有所帮助。
我的应用程序是用php编写的。我不一定需要php中的示例,但我只想知道如何使用提供的服务来完成简单的任务。
答案 0 :(得分:1)
阅读给定方的所有合同
DAML分类帐本质上是事件驱动的系统。因此,它不像传统数据库那样提供查询访问。相反,您的应用程序使用TransactionService并将GetTransactionsRequest指定为begin
偏移量来订阅LEDGER_BEGIN。这将为您提供自分类帐启动以来发生的所有Created
和Archived
事件。在您的应用程序中,您可以使用这些事件来建立分类帐的表示形式(内存中或持久性),然后可以方便地进行查询。例如,您可以按合同类型填充字典,为每个Created
事件添加一个条目,并在收到Archived
事件时再次将其删除。
创建合同或行使选择权
有两种方法可以做到这一点:
通过CommandSubmissionService上的Submit
提交创建或执行命令,然后等待CommandCompletionService上的成功或错误消息。注意,接收到这样的命令完成消息仅确认分类帐可以成功接收到该命令。它不会包含该命令的任何效果(创建和存档事件)。您将在上述TransactionService
上再次收到这些邮件。
通过CommandService上的SubmitAndWait
提交创建或锻炼命令。该服务在对服务器端的同步调用中结合了命令提交和完成,因此仅在服务器接受或拒绝命令后才返回。通常,使用这种命令提交方式会更方便,因为它可以处理先前方法中所需的一些异步事件处理。
请注意,您可以从使用上述TransactionService
建立的分类帐表示中获得行使选择权所需的合约ID。