You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CordApp API/Flow技术问询:如何通过唯一ID及交易哈希查询状态

嘿,针对你在CordApp里查询状态的两个需求,我给你整理了具体的实现方案,结合Corda的核心API来做:

1. 通过唯一ID查询状态(基于LinearState)

你提到的LinearState确实是Corda里用来跟踪有生命周期的状态的核心类型,它自带的linearId(类型为UniqueIdentifier)就是每个状态实例的唯一标识,完全符合“通过唯一ID查状态”的需求。

不管是在Flow内部还是RPC客户端,都可以通过这个linearId来精准查询:

在Flow中查询

利用ServiceHub的vaultService构建查询条件:

// 先把字符串形式的唯一ID转成UniqueIdentifier
val targetLinearId = UniqueIdentifier.fromString("你的linearId字符串")
// 构建查询条件,指定要找的linearId
val queryCriteria = QueryCriteria.LinearStateQueryCriteria(linearId = listOf(targetLinearId))
// 执行查询,指定你的状态类型
val queryResults = serviceHub.vaultService.queryBy<YourLinearStateSubclass>(queryCriteria)
// 提取目标状态(如果存在的话)
val targetState = queryResults.states.firstOrNull()?.state?.data

在RPC客户端查询

如果是外部客户端调用,可以用Corda RPC的queryBy方法:

val targetLinearId = UniqueIdentifier.fromString("你的linearId字符串")
val criteria = QueryCriteria.LinearStateQueryCriteria(linearId = listOf(targetLinearId))
val results = rpcOps.queryBy<YourLinearStateSubclass>(criteria)
val targetState = results.states.firstOrNull()?.state?.data
2. 通过交易哈希(TxHash)查询状态

Corda没有直接提供findStateFromTXhash这种一键方法,但可以通过两步实现:先根据交易哈希找到对应的交易,再提取交易里的输出状态。

在Flow中查询

// 把字符串形式的交易哈希转成SecureHash
val txHash = SecureHash.parse("你的交易哈希字符串")
// 从已验证交易存储中获取交易详情
val transaction = serviceHub.validatedTransactions.getTransaction(txHash) 
    ?: throw IllegalArgumentException("找不到对应哈希的交易")
// 提取交易中所有指定类型的输出状态(如果不需要过滤类型,直接用tx.outputs即可)
val targetStates = transaction.tx.outputsOfType<YourStateType>()
// 取第一个匹配的状态(根据你的业务需求调整)
val targetState = targetStates.firstOrNull()

在RPC客户端查询

val txHash = SecureHash.parse("你的交易哈希字符串")
// 通过RPC获取交易与状态的映射
val stateMapping = rpcOps.stateTransactionMapping(txHash)
// 提取状态数据(注意类型转换)
val targetState = stateMapping?.state?.data as? YourStateType

关于你提到的hash属性

你注意到的状态hash属性,是状态本身的哈希值,用来验证状态的完整性,和交易哈希完全不是一回事,所以不能用它来查询某笔交易对应的状态。

内容的提问来源于stack exchange,提问作者MohamedLEGH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:23:16