Corda 在终端查看消费状态
Corda view consumed states in terminal
有没有一种简单的方法可以通过CordaRPCOps接口在终端中查看消费状态?似乎默认情况下 vaultQuery returns 未使用状态,我无法弄清楚如何使用 vaultQueryBy 或任何符合条件的东西。
我知道应该有消耗状态,因为我可以用 H2 看到它们
你好,你总是可以写一个简短的 API 来公开状态:
corda 现有样本中有 /asset 样本:
这里有一段代码片段 api 适用于您的场景:
@GET
@Path("asset")
@Produces(MediaType.APPLICATION_JSON)
fun getAssets(): List<StateAndRef<ContractState>> {
val consumedCriteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.CONSUMED)
return services.vaultQueryBy<ContractState>(consumedCriteria).states
}
正如 Ricky 所说,你必须提供一个 API 或编写一个客户端通过 RPC 与你的 CorDapp 对话(例如 https://github.com/corda/cordapp-example/blob/release-V1/kotlin-source/src/main/kotlin/com/example/client/ExampleClientRPC.kt)。
理论上,run vaultQueryByCriteria contractStateType: com.example.state.IOUState, criteria: { Vault.StateStatus.CONSUMED }
可以工作。但是,在vaultQueryByCriteria
中,criteria
参数是QueryCriteria
类型,是一个抽象class。 shell 目前无法指定您想使用 QueryCriteria
的哪个具体子 class。
我在这里提出了一个问题:https://github.com/corda/corda/issues/2351。
有没有一种简单的方法可以通过CordaRPCOps接口在终端中查看消费状态?似乎默认情况下 vaultQuery returns 未使用状态,我无法弄清楚如何使用 vaultQueryBy 或任何符合条件的东西。
我知道应该有消耗状态,因为我可以用 H2 看到它们
你好,你总是可以写一个简短的 API 来公开状态:
corda 现有样本中有 /asset 样本:
这里有一段代码片段 api 适用于您的场景:
@GET
@Path("asset")
@Produces(MediaType.APPLICATION_JSON)
fun getAssets(): List<StateAndRef<ContractState>> {
val consumedCriteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.CONSUMED)
return services.vaultQueryBy<ContractState>(consumedCriteria).states
}
正如 Ricky 所说,你必须提供一个 API 或编写一个客户端通过 RPC 与你的 CorDapp 对话(例如 https://github.com/corda/cordapp-example/blob/release-V1/kotlin-source/src/main/kotlin/com/example/client/ExampleClientRPC.kt)。
理论上,run vaultQueryByCriteria contractStateType: com.example.state.IOUState, criteria: { Vault.StateStatus.CONSUMED }
可以工作。但是,在vaultQueryByCriteria
中,criteria
参数是QueryCriteria
类型,是一个抽象class。 shell 目前无法指定您想使用 QueryCriteria
的哪个具体子 class。
我在这里提出了一个问题:https://github.com/corda/corda/issues/2351。