Corda视图消耗终端中的状态

时间:2018-01-10 20:56:09

标签: rpc corda

有一种简单的方法可以使用CordaRPCOps接口查看终端中的消耗状态吗?似乎默认情况下vaultQuery返回未使用的状态,我无法弄清楚如何使用vaultQueryBy或任何符合条件的东西。

我知道应该有消耗状态,因为我可以用H2看到它们

2 个答案:

答案 0 :(得分:1)

您好,您总是可以编写一个简短的API来公开状态:

在corda现有样本中有/资产样本:

这是您的方案的代码段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
}

答案 1 :(得分:1)

正如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