如何解决Corda-持续状态V / S线性状态
我们有大约20个与一对一或一对多或多对多关系有关的州。有些州本质上是独立的。 我们如何为这些状态选择b / w持续状态和线性状态。有没有可用的指南。任何指针都会有所帮助。
谢谢。
解决方法
-
LinearState
实现ContractState
。 -
当您的状态随着时间变化时,请使用
LinearState
。如您所知,Corda中的状态是最终状态,因此要模拟状态的更新,请使用具有LinearState
的{{1}},以更新状态,并在输入为状态的情况下制作事务您想要更新,并且输出是一个新状态,它与输入具有相同的linearId
,但其余属性的值(即更新后的值)不同。这样,您可以通过查询统计信息linearId
来跟踪统计信息的演变:linearId
-
由于状态之间存在联系,因此您可能需要使用状态指针;顾名思义,它是指向状态的指针,有两种类型:固定指针和线性指针。前者用于不演化的状态,后者用于演化的状态,因此指针将始终指向该状态的最新版本。在以下参考链接中对此有更多的了解:
根据您提供的信息,添加Adel所说的内容,看来您应该研究QueryableState。
PersistenceState是所有导出到架构的映射状态的超类,该架构确保[StateRef]出现在数据库行中。 (在QueryableState界面内部。您可以通过Command并在IntelliJ中单击QueryableState来查看它)。
QueryableState的要点是通过您自定义的架构将所有内容存储在数据库中。
因此,您似乎正在处理许多关系,如果要通过模式将它们存储到数据库中或仅将它们存储在状态中,则取决于您。我看不到您如何通过LinearStates来表示这些关系。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。