Corda 如何识别持有在 vaultquery 中找到的每个状态的帐户
Corda How to identify the Account holding each state found in the vaultquery
我们使用帐户并且状态与它们相关联。
在研究每种状态时,我们使用 vaultService 和 externalIds 来检索每个帐户的状态。
示例:
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)))
我知道我可以像上面那样在 externalIds 上传递一个列表,但是我可以从返回的每个状态中识别帐户吗?
我考虑过将帐户 ID 存储在各州,但这不是 Corda 的建议。
KeyManagementBackedAccountService
有很多有用的函数,包括 accountInfo(owningKey: PublicKey)
,参见 here。
- 如果
holder
是PublicKey
类型;你可以传递它的值并得到相关的 AccountInfo
.
- 如果
holder
是AbstractParty
类型;你可以通过 holder.owningKey
.
KeyManagementBackedAccountService
有其他函数可以通过 name
或 UUID
.
得到 AccountInfo
顺便说一句,您可以在查询中使用 group by
;因此返回的结果可以按帐户的 UUID
分组,这样你可以 运行 accountInfo(owningKey)
每组一次。请参阅使用 group by
here 的示例(搜索 groupByColumns
)。
我们使用帐户并且状态与它们相关联。
在研究每种状态时,我们使用 vaultService 和 externalIds 来检索每个帐户的状态。
示例:
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)))
我知道我可以像上面那样在 externalIds 上传递一个列表,但是我可以从返回的每个状态中识别帐户吗?
我考虑过将帐户 ID 存储在各州,但这不是 Corda 的建议。
KeyManagementBackedAccountService
有很多有用的函数,包括 accountInfo(owningKey: PublicKey)
,参见 here。
- 如果
holder
是PublicKey
类型;你可以传递它的值并得到相关的AccountInfo
. - 如果
holder
是AbstractParty
类型;你可以通过holder.owningKey
.
KeyManagementBackedAccountService
有其他函数可以通过 name
或 UUID
.
AccountInfo
顺便说一句,您可以在查询中使用 group by
;因此返回的结果可以按帐户的 UUID
分组,这样你可以 运行 accountInfo(owningKey)
每组一次。请参阅使用 group by
here 的示例(搜索 groupByColumns
)。