我有一个关于基于UUID检索未消耗状态的查询。
val uuid = linearId.toUUID()
val queryCriteria = QueryCriteria.LinearStateQueryCriteria(
linearId = listOf(uuid))
return services.vaultQueryBy<ContractState>(queryCriteria).states
问题陈述:一个ObligationState
,由2个参与者的借方和贷方组成,从不同的交易过渡到不同的生命周期。但是在某个时候
uuid
的未使用状态时,它返回了0条记录。在公证数据库上
node_notary_commit_log
╒════════════════╤══════════════════════════╕
│ transaction_id │ consuming_transaction_id │
╞════════════════╪══════════════════════════╡
│ Transaction A │ Transaction B │
├────────────────┼──────────────────────────┤
│ Transaction B │ Transaction C │
╘════════════════╧══════════════════════════╛
在借款人/贷方数据库上
vault_states
╒════════════════╤════════════════════╕
│ transaction_id │ consumed_timestamp │
╞════════════════╪════════════════════╡
│ Transaction A │ T │
├────────────────┼────────────────────┤
│ Transaction B │ T+1 │
├────────────────┼────────────────────┤
│ Transaction C │ null │
╘════════════════╧════════════════════╛
vault_linear_states
缺少交易C
╒════════════════╤══════╕
│ transaction_id │ uuid │
╞════════════════╪══════╡
│ Transaction A │ XYZ │
├────────────────┼──────┤
│ Transaction B │ XYZ │
╘════════════════╧══════╛
obligation_states
模式表
╔════════════════╤══════════╤═══════════╗
║ transaction_id │ linearId │ lifecycle ║
╠════════════════╪══════════╪═══════════╣
║ Transaction A │ XYZ │ foo ║
╟────────────────┼──────────┼───────────╢
║ Transaction B │ XYZ │ bar ║
╚════════════════╧══════════╧═══════════╝
P / S这是带有PostgreSQL的Corda 3.0。