有一种简单的方法可以使用CordaRPCOps接口查看终端中的消耗状态吗?似乎默认情况下vaultQuery返回未使用的状态,我无法弄清楚如何使用vaultQueryBy或任何符合条件的东西。
我知道应该有消耗状态,因为我可以用H2看到它们
答案 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。