您好,您总是可以编写一个简短的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 }
正如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 你想用。
run vaultQueryByCriteria contractStateType: com.example.state.IOUState, criteria: { Vault.StateStatus.CONSUMED }
vaultQueryByCriteria
criteria
QueryCriteria
我在这里提出了一个问题: https://github.com/corda/corda/issues/2351 。