Corda ReceiveStateAndReflow未接收StatesToRecord参数

Corda ReceiveStateAndReflow未接收StatesToRecord参数,corda,Corda,在Corda中,有一个流提供向另一方发送签名交易的功能 open class SendTransactionFlow(otherSide: FlowSession, stx: SignedTransaction) : DataVendingFlow(otherSide, stx) 以及另一个流,它向另一方发送states和refs: open class SendStateAndRefFlow(otherSideSession: FlowSession, stateAndRefs: List&

在Corda中,有一个流提供向另一方发送签名交易的功能

open class SendTransactionFlow(otherSide: FlowSession, stx: SignedTransaction) : DataVendingFlow(otherSide, stx)
以及另一个流,它向另一方发送states和refs

open class SendStateAndRefFlow(otherSideSession: FlowSession, stateAndRefs: List<StateAndRef<*>>) : DataVendingFlow(otherSideSession, stateAndRefs)
打开类SendStateAndReflow(otherSideSession:FlowSession,stateAndRefs:List):DataVendingFlow(otherSideSession,stateAndRefs)
在接受方一侧,应调用相应的接收方流:

open class ReceiveTransactionFlow @JvmOverloads constructor(private val otherSideSession: FlowSession,
                                                            private val checkSufficientSignatures: Boolean = true,
                                                            private val statesToRecord: StatesToRecord = StatesToRecord.NONE) : FlowLogic<SignedTransaction>()
open类ReceiveTransactionFlow@JVMLowloads构造函数(private val otherSideSession:FlowSession,
private val checksulficientSignatures:Boolean=true,
private val statesToRecord:statesToRecord=statesToRecord.NONE):FlowLogic()

class ReceiveStateAndReflow(private val otherSideSession:FlowSession):FlowLogic()//它使用**StatesToRecord.NONE调用**ReceiveTransactionFlow****
这两个承兑人流程之间的关键区别在于,receivestate和fflow将在承兑人一方解决SignedTransaction,但不会向交易对手记录状态。另一方面:ReceiveTransactionFlow接受StatesToRecord属性,并将状态存储到交易对手的保险库中


问题:什么是ReceiveStateAndReflow不接受StatesToRecord属性的理由?

事实证明,无法设置
StatesToRecord
并没有特别的原因,但有一些棘手的边缘情况需要处理,最终可能会导致CorDapp开发人员陷入混乱他们的保险库

例如:当您强制在vault中存储单个状态时,将不会存储同一事务中的相应输出,从而导致vault中出现实际已使用的未使用状态

通常情况下,这并不重要,因为你无论如何都不能花。但是,这将导致vault查询行为混乱

class ReceiveStateAndRefFlow<out T : ContractState>(private val otherSideSession: FlowSession) : FlowLogic<@JvmSuppressWildcards List<StateAndRef<T>>>() // which invokes **ReceiveTransactionFlow** with **StatesToRecord.NONE**