在父状态中存储对其他状态的引用的最佳实践是什么?

时间:2019-11-12 17:08:50

标签: corda

首先让我们清除混乱,我不是在指Reference States(定义如下):

A reference input state is a ContractState which can be referred to in a transaction by the contracts of input and output states but whose contract is not executed as part of the transaction verification process and is not consumed when the transaction is committed to the ledger but is checked for “current-ness”.

假设我有以下情况:
1.我有2个节点:存储BooksNode状态的Book和存储PagesNode状态的Page
2. BooksNode开始创建Book状态的流程。
3.该流在PagesNode上调用子流,该子流创建了多个Page状态。

Book状态下存储对创建的Page状态的引用的最佳方法是什么?
我的目标是使BooksNode拥有一个流程,该流程将获取Book状态,然后从Page获取相关的PagesNode状态。

  1. 我想到了在List<StaticPointer>状态中使用PageBook状态,但是我觉得这增加了很多我不需要的复杂性和额外功能,认为这可能还需要在Page上存储BooksNode状态以解决这些指针,我不想这样做。
  2. 然后,我认为仅存储由创建页面子流返回的事务ID(处于Book状态(即String pagesTxId)会简单得多。这样,当我在BooksNode上调用流时,它可以在PagesNode上调用子流,该子流将具有以下内容:
List<StateAndRef<Page>> pages = this.getServiceHub().getValidatedTransactions()
                .getTransaction(SecureHash.parse(pagesTxId)).getCoreTransaction()
                .outRefsOfType(Page.class);

我认为方法2更加简单易行。
您还有其他想法吗?

0 个答案:

没有答案