Java 账本 API - return 提交命令中的 contractId

Java Ledger API - return contractId in submit command

有没有办法自动 return 由如下命令生成的 contractId

client.getCommandSubmissionClient().submit(...).blockingGet();

如果不是,最好的方法是什么?

没有内置的同步 API 调用 returns 一个(成功的)命令提交的结果事务。命令服务仅returns命令完成(即success/fail)。

一种方法是使用 commandId 字段。它允许提交方关联命令提交和结果事务。但是,您必须自己构建一个结合命令和事务服务的包装器。

查找您正在寻找的交易的简单方法如下:

client.getTransactionsClient()
  .getTransactions(LedgerOffset.LedgerBegin.getInstance(), new FiltersByParty(Collections.singletonMap(party, NoFilter.instance)), false)
  .filter(t => "MyCommandId".equals(t.getCommandId))
  .singleOrError()
  .blockingGet()

请注意,这里我们正在阅读 LedgerBegin。通常,您会在提交命令之前通过 client.getTransactionsClient().getLedgerEnd() 请求分类帐结束,并使用该偏移量订阅交易。