Могу ли я найти состояние с txhash? Я хочу что-то вроде этого: val state = rpcOps.findStateFromTXhash (txhash)
Я обнаружил, что существует тип состояния, называемый linearState, у которого есть свойство linearId. Также есть свойство hash, но я не знаю, что я ищу.
В ваших потоках вы можете использовать getServiceHub (). LoadState (), здесь вы можете передать securehash, чтобы получить свое состояние. не уверен, что мы можем сделать что-то подобное прямо из объекта CordaRpcConnection.
У вашего состояния будет linearId, если это тип линейного состояния. Вы можете легко найти свое состояние, используя linearId. прочтите здесь. Я бы порекомендовал вам прочитать больше о штатах, чтобы увидеть, что лучше всего соответствует вашим требованиям. Ссылка на сайт
Нет операции 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
}
}