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