我可以找到带有txhash的州吗?我想要这样的东西:val state = rpcOps.findStateFromTXhash(txhash)
我发现有一种名为linearState的状态具有linearId属性。还有一个哈希属性,但我不知道它是否是我搜索的内容。
答案 0 :(得分:1)
在你的流程中,你可以在这里执行getServiceHub()。loadState(),你可以传入securehash来获取你的状态。不确定我们是否可以直接从CordaRpcConnection对象执行类似的操作。
如果它是一种线性状态,你的状态将有一个linearId。您可以轻松地使用linearId搜索您的州。 阅读here。 我建议你阅读更多关于各州的信息,看看哪种最符合你的要求。 Link
答案 1 :(得分:0)
在给定事务ID的情况下,没有RPC操作来加载事务的状态。
但是,您可以编写一个流程来执行此操作,如下所示,然后通过RPC:
调用此流程@InitiatingFlow
@StartableByRPC
class GetStatesFromTransactionFlow(val transactionID: SecureHash) : FlowLogic<List<ContractState>>() {
@Suspendable
override fun call(): List<ContractState> {
val signedTransaction = serviceHub.validatedTransactions.getTransaction(transactionID)
if (signedTransaction == null) {
throw FlowException("Transaction does not exist in node's transaction storage.")
}
val ledgerTransaction = signedTransaction.toLedgerTransaction(serviceHub)
val inputs = ledgerTransaction.inputs.map { it.state.data }
val outputs = ledgerTransaction.outputs.map { it.data }
return inputs + outputs
}
}