Corda如何识别持有Vault查询中找到的每个状态的帐户

Corda如何识别持有Vault查询中找到的每个状态的帐户,corda,Corda,我们使用帐户,并且状态与帐户关联 在研究每种类型的状态时,我们使用vaultService和ExternalId来检索每个帐户的状态 示例: serviceHub.vaultService.queryBy(contractStateType=State::class.java, criteria=QueryCriteria.VaultQueryCriteria(externalIds=listOf(accountId))) 但通常情况下,应用程序会从帐户列表中请求数据,是否可以从帐户列表中检索状

我们使用帐户,并且状态与帐户关联

在研究每种类型的状态时,我们使用vaultService和ExternalId来检索每个帐户的状态

示例:

serviceHub.vaultService.queryBy(contractStateType=State::class.java, criteria=QueryCriteria.VaultQueryCriteria(externalIds=listOf(accountId)))

但通常情况下,应用程序会从帐户列表中请求数据,是否可以从帐户列表中检索状态并标识每个返回状态所属的帐户

serviceHub.vaultService.queryBy(contractStateType=State::class.java, criteria=QueryCriteria.VaultQueryCriteria(externalIds=listOf(accountId1,accountId2)))

我知道我可以像上面那样传递ExternalID列表,但是我可以从返回的每个状态中识别帐户吗


我曾考虑在美国存储帐户ID,但这不是Corda的建议。

KeyManagementBackedAccountService
有许多有用的功能,包括
accountInfo(owningKey:PublicKey)
,请参阅

  • 如果
    持有人
    属于
    公钥类型
    ;您可以传递其值并获取相关的
    AccountInfo
  • 如果
    持有人
    属于
    抽象方
    ;您可以传递
    holder.owningKey

KeyManagementBackedAccountService
具有通过
name
UUID
获取
AccountInfo
的其他功能


顺便说一句,您可以在查询中使用
groupby
;因此,可以根据帐户的
UUID
对返回的结果进行分组,这样您就可以对每个组运行
accountInfo(owningKey)
一次。参见使用
groupby
(搜索
groupByColumns
)的示例。

当您要检查持有者时,是否考虑到州政府有存储持有者的属性?我这样说是因为我所在的州没有持有者财产。我没有把它放在这里,因为它可以通过ExternalID恢复。从文档()中,我认为不需要帐户Id或代表持有人的抽象方。我错了?我需要一个持有者来识别吗?如果你没有添加一个表示谁是所有者/持有者的属性(不管你怎么称呼它),你怎么知道一个国家属于某个账户?阅读自项目开始以来,我发现不识别账户持有者很奇怪,但我依赖于我发送给你的链接。你说得对,非常感谢。