Corda查看终端中已消耗的状态

4
有没有一种简单的方法可以使用CordaRPCOps接口在终端中查看已消耗的状态?似乎vaultQuery默认返回未消耗的状态,我无法弄清如何使用vaultQueryBy或带条件的任何内容。
我知道应该存在消耗的状态,因为我可以在H2中看到它们。
2个回答

2

你可以编写一个简短的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
}

0

如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,这是一个抽象类。目前在shell中没有办法指定您希望使用哪个具体的QueryCriteria子类。

我在这里提出了一个问题:https://github.com/corda/corda/issues/2351


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接