Java Ledger API - вернуть contractId в команде отправки - PullRequest
0 голосов
/ 19 февраля 2019

Есть ли способ автоматически вернуть contractId, сгенерированный такой командой, как:

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

Если нет, какой лучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

простой способ найти искомую транзакцию будет выглядеть примерно так:

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() перед отправкой команды и используете это смещение для подписки на транзакции.

0 голосов
/ 19 февраля 2019

Нет встроенного синхронного вызова API, который возвращает итоговую транзакцию (успешной) отправки команды.Служба команд возвращает только завершение команды (т. Е. Успех / сбой).

Один из способов сделать то, что вы хотите, - использовать поле commandId.Это позволяет отправляющей стороне соотносить подачу команды и полученную транзакцию.Однако вам придется создать оболочку, комбинирующую службы команд и транзакций самостоятельно.

...