Corda:如何使用附件参考之前的交易?

如果我说只有当事务B对前一个事务A有一些引用时,事务B才有效,那么我可以将事务A的状态属性/合同代码包含在事务B中的附件中吗? 该附件如何被引用,以及将从何处检索? 事务B的参与节点是否能够查看事务A的内容进行验证?

假设你有一个StateB ,只有在给定事务的引用的情况下才有效。 然后,您可以在StateB类型的SignedTransaction定义一个字段来保存引用。

在Kotlin:

 class StateB(val txRef: SignedTransaction?) : ContractState { override val participants: List<AbstractParty> get() = listOf() override val contract: TemplateContract get() = TemplateContract() } 

在Java中:

 class StateB implements ContractState { SignedTransaction txRef; StateB(SignedTransaction txRef) { this.txRef = txRef; } public SignedTransaction getTxRef() { return txRef; } @NotNull @Override public Contract getContract() { return new TemplateContract(); } @NotNull @Override public List<AbstractParty> getParticipants() { return ImmutableList.of(); } } 

SignedTransaction的引用是可空的。 因此,您可以想象一个工作流,您最初创建一个“无效的” StateB – 一个没有引用一个使其有效的事务的引用,然后通过一个输出带有相关的SignedTransactionStateB的事务来StateB SignedTransaction ,使其成为“有效“ StateB