首先让我们清除混乱,我不是在指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
状态。
List<StaticPointer>
状态中使用Page
到Book
状态,但是我觉得这增加了很多我不需要的复杂性和额外功能,认为这可能还需要在Page
上存储BooksNode
状态以解决这些指针,我不想这样做。 Book
状态(即String pagesTxId
)会简单得多。这样,当我在BooksNode
上调用流时,它可以在PagesNode
上调用子流,该子流将具有以下内容:List<StateAndRef<Page>> pages = this.getServiceHub().getValidatedTransactions()
.getTransaction(SecureHash.parse(pagesTxId)).getCoreTransaction()
.outRefsOfType(Page.class);
我认为方法2更加简单易行。
您还有其他想法吗?