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

时间:2017-08-22 07:23:50

标签: corda

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

1 个答案:

答案 0 :(得分:0)

假设您有一个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的引用可以为空。因此,您可以想象一个工作流程,您最初创建一个&#34;无效&#34; StateB - 一个没有引用使其有效的交易的人 - 然后通过一个与关联的StateB输出StateB的交易来演变SignedTransaction,使其成为&#34;有效&#34; StateB