【发布时间】:2020-11-05 05:08:26
【问题描述】:
我们有线性状态“A”。我们有两个流程,一个用于创建状态“A”,另一个用于使用状态“A”。我们必须编写一个新流程,它将状态“A”的线性 id 作为参数,并返回消耗状态“A”的事务的 SingedTransaction id。我们如何在 Corda 中实现这一点?
【问题讨论】:
标签: corda
我们有线性状态“A”。我们有两个流程,一个用于创建状态“A”,另一个用于使用状态“A”。我们必须编写一个新流程,它将状态“A”的线性 id 作为参数,并返回消耗状态“A”的事务的 SingedTransaction id。我们如何在 Corda 中实现这一点?
【问题讨论】:
标签: corda
应该是这样的,但我不确定您将获得的交易是创建状态还是消费状态的交易;您需要测试以下代码:
// Get the consumed state by its linearId.
QueryCriteria consumedCriteria = new VaultQueryCriteria(Vault.StateStatus.CONSUMED);
LinearStateQueryCriteria linearCriteria = new LinearStateQueryCriteria()
.withExternalId(Collections.singletonList("linearId"));
Page<YourState> results = getServiceHub().getVaultService()
.queryBy(YourState.class, consumedCriteria.and(linearCriteria));
// Get the transaction by its ID.
// This is a simplified example which assumes that only one result is returned,
// you might get multiple results if your state was consumed (updated)
// multiple times.
SecureHash txId = results.getStates().get(0).getRef().getTxhash();
SignedTransaction tx = getServiceHub().getValidatedTransactions().getTransaction(txId);
【讨论】: