【发布时间】:2018-03-20 21:12:09
【问题描述】:
我们有一个可查询的状态,用于在系统初始化时存储一些信息,这些状态只发出一次,永不消耗
class DataState implements LinearState, QueryableState {
Party partyA;
Party partyB;
String partyAId;
String partyBId;
String sharedIdentifierNumber;
DataState(Party partyA, Party partyB, String partyAId, String partyBId, String sharedIdentifierNumber) {
this.partyA = partyA;
this.partyB = partyB;
this.partyAId = partyAId;
this.partyBId = partyBId;
this.sharedIdentifierNumber = sharedIdentifierNumber;
}
}
partyA 和 partyAId 必须与实体 A 相关(与 partyB 相同) 一些示例:
new DataState(party1, party2, "00001", "12345", "0001")
new DataState(party3, party1, "05432", "00001", "0022")
new DataState(party2, party1, "12345", "00001", "0123")
我们希望有像地图一样工作的方法:
String retrievePartyId(Party party){}
assertTrue(retrievePartyId(party1).equals("00001"))
Party retrieveParty(String partyId){}
assertTrue(retrieveParty("12345").equals(party2))
我们已经通过使用自定义字段条件查询所有状态并通过迭代进行比较来完成此操作
List<StateAndRef<DataState>>
我们想知道是否有一些有效的方法可以做到这一点,也许在 Corda 中使用一些自定义查询条件。我们认为这与sql column projections 有关。查询接口返回'states(.getStates())' 或聚合结果'(.getOtherResults())' 的列表。我们想知道是否有可能(或计划)从 db 中获取单个列,然后通过 vault 接口过滤重复项,目前我们正在 java 中这样做。
【问题讨论】:
标签: corda