首页 > 解决方案 > 状态演化的架构问题

问题描述

我有一个示例贷款用例,其中有两种状态:

贷款状态是通过将发票状态作为输入来创建的。

在此处输入图像描述

现在,由于 Corda 遵循 UTXO 模型,当我执行默认的保管库查询时,发票状态不会显示,因为它现在已被消耗。

要解决这个问题,有两种可能的方法:

  1. 要么,我查询所有状态,即已消费和未消费。
  2. 或者,我可以在 Invoice 状态下保持状态,并将状态标记为在使用 Invoice 以创建 Loan State 后已支付的状态(所以这更像是不断发展的状态,就像比特币一样,余额总是在转移。)。像这样的东西:

在此处输入图像描述

任何人都可以推荐正确的架构决策吗?

标签: blockchaincorda

解决方案


我同意 bartman250。在我看来,第二个例子最有意义,因为它以更明显的方式保持选项开放。

例如,由于某种原因,发票需要重新设置为未付款,因为信用卡上存在拒付,将发票设置为未使用效果很好。

担心它被再次消耗的问题可以通过确保贷款合同只消耗标记为未付的发票来解决。我们对此处的信用证演示中的采购订单执行了非常相似的操作。

将可从保险库中查询为未使用的发票也是默认的查询模式。它还提供了确保我们默认处理最新版本的状态的优势。


推荐阅读