blockchain - 状态演化的架构问题
问题描述
我有一个示例贷款用例,其中有两种状态:
- 发票状态,以及
- 贷款状态。
贷款状态是通过将发票状态作为输入来创建的。
现在,由于 Corda 遵循 UTXO 模型,当我执行默认的保管库查询时,发票状态不会显示,因为它现在已被消耗。
要解决这个问题,有两种可能的方法:
- 要么,我查询所有状态,即已消费和未消费。
- 或者,我可以在 Invoice 状态下保持状态,并将状态标记为在使用 Invoice 以创建 Loan State 后已支付的状态(所以这更像是不断发展的状态,就像比特币一样,余额总是在转移。)。像这样的东西:
任何人都可以推荐正确的架构决策吗?
解决方案
我同意 bartman250。在我看来,第二个例子最有意义,因为它以更明显的方式保持选项开放。
例如,由于某种原因,发票需要重新设置为未付款,因为信用卡上存在拒付,将发票设置为未使用效果很好。
担心它被再次消耗的问题可以通过确保贷款合同只消耗标记为未付的发票来解决。我们对此处的信用证演示中的采购订单执行了非常相似的操作。
将可从保险库中查询为未使用的发票也是默认的查询模式。它还提供了确保我们默认处理最新版本的状态的优势。
推荐阅读
- r - R中的选择性替换字符串
- javascript - 如何在jquery中使用它的id向td添加宽度
- sql - 带有 GROUP BY 的 SQL MIN() 选择其他列
- javascript - 如何在 Discord 中复制 ID 搜索功能?
- python - Keras 对多输入多输出建模:如何确定输入和输出的多或非多场景
- python - 将大型 csv 转换为稀疏矩阵以在 sklearn 中使用
- java - 使用映射对三个字符串数组进行排序
- sql - #SSRS tablix 中的错误,但在 SSRS 的 SQL 端可以
- reactjs - ReactJS - 如何在页面渲染之前生成社交元标记?
- python - Python 'While' 循环冻结了 Ubuntu Linux