daml - 通过 Java 或 JavaScript 以外的语言使用 DAML Ledger API

标签 daml

我想编写一个与 DAML 账本交互的应用程序,但从 SDK 0.11.3 开始,唯一记录的绑定(bind)是针对 Java 和 JavaScript 的。

有没有办法使用其他语言的 Ledger API?

最佳答案

Ledger API是通过gRPC公开的一组服务,它使用 Protocol Buffers作为自己的接口(interface)定义语言。

作为 SDK 一部分记录的绑定(bind)构建在 gRPC 生成的代码之上,以提供更多功能和更惯用的 API。

您仍然可以直接使用 gRPC 生成与 Ledger API 交互所需的代码。从 gRPC 1.15.1 开始,支持的语言(和/或平台)包括:

  • C++
  • Java
  • Python
  • ruby
  • C#
  • Node.js
  • Android Java
  • Objective-C
  • PHP
  • 飞镖

以下是所有语言创建示例项目的通用步骤。如果您已经有一个项目,并且想要添加绑定(bind)不可用的语言的绑定(bind),请跳至步骤 4。

  1. 为您的项目创建一个新目录并 cd 进入该目录

    mkdir daml-project && cd daml-project
    
  2. 为 DAML 模型创建一个目录并将模型放入其中。现在,一个空模型就可以了(您可以稍后放置您选择的模型)。

    mkdir daml && echo -e "daml 1.2\nmodule Empty where" > daml/Empty.daml
    
  3. 创建包含以下内容的项目描述符(da.yaml 文件):

    project:
      sdk-version: 0.11.3
      name: daml-project
      source: daml/Empty.daml
    version: 2
    
  4. 运行以下命令将 Ledger API gRPC 服务定义添加到您的项目中:

    da add ledger-api-protos
    

此时,目录 protobuf 应该已添加到您的项目中。您可以使用这些文件以 gRPC 支持的语言之一生成与 Ledger API 的绑定(bind)。

gRPC official documentation 描述了如何为您的目标语言生成代码的过程。 .

关于daml - 通过 Java 或 JavaScript 以外的语言使用 DAML Ledger API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54881601/

相关文章:

daml - 如何提取党的名称?

daml - 如何访问一个选择的多个返回参数

node.js - 数字 Assets Node.js 绑定(bind) : syntax for expressing 'time' type variable

java - 开始使用 Ledger API

daml - 如果 Daml 共享相同的账本或从 1.18.0 版本的 postgreSQL 开始,Daml 如何能够维护各方之间的隐私?

daml - DAML场景下,如何复用getParty?

daml - 如何断言某个场景中的契约(Contract)处于非事件状态(已存档)?

java - InvalidProtocolBufferException 尝试获取主模块包 ID