Corda-持续状态V / S线性状态

问题描述

我们有大约20个与一对一或一对多或多对多关系有关的州。有些州本质上是独立的。 我们如何为这些状态选择b / w持续状态和线性状态。有没有可用的指南。任何指针都会有所帮助。

谢谢。

解决方法

  1. LinearState实现ContractState

  2. 当您的状态随着时间变化时,请使用LinearState。如您所知,Corda中的状态是最终状态,因此要模拟状态的更新,请使用具有LinearState的{​​{1}},以更新状态,并在输入为状态的情况下制作事务您想要更新,并且输出是一个新状态,它与输入具有相同的linearId,但其余属性的值(即更新后的值)不同。这样,您可以通过查询统计信息linearId来跟踪统计信息的演变:

    linearId
  3. 由于状态之间存在联系,因此您可能需要使用状态指针;顾名思义,它是指向状态的指针,有两种类型:固定指针和线性指针。前者用于不演化的状态,后者用于演化的状态,因此指针将始终指向该状态的最新版本。在以下参考链接中对此有更多的了解:

,

根据您提供的信息,添加Adel所说的内容,看来您应该研究QueryableState。

PersistenceState是所有导出到架构的映射状态的超类,该架构确保[StateRef]出现在数据库行中。 (在QueryableState界面内部。您可以通过Command并在IntelliJ中单击QueryableState来查看它)。

QueryableState的要点是通过您自定义的架构将所有内容存储在数据库中。

因此,您似乎正在处理许多关系,如果要通过模式将它们存储到数据库中或仅将它们存储在状态中,则取决于您。我看不到您如何通过LinearStates来表示这些关系。