Corda Flow Responder 对方逻辑

Corda Flow Responder counter party logic

基本上,我有启动状态生成交易的流程,涉及 3 方:

甲方 - 我们的身份
乙方 - 应该签
PartyC - 应该签

发起流程创建新状态并构建交易,然后收集其他方的签名。

PartyBPartyC应该自己做具体的业务逻辑验证。
将这些支票放在流量响应器中是否正确,如果不正确 - 将它们放在哪里?
另外,我可以将响应程序代码分开,例如:

override fun call(): SignedTransaction {
    val signTransactionFlow = object : SignTransactionFlow(otherPartySession) {
        override fun checkTransaction(stx: SignedTransaction) = requireThat {
            val output = stx.tx.outputs.single().data
            
            if (otherPartySession.counterParty == output.participantB) {
               // Do checks for PartyB
            }
            
            if (otherPartySession.counterParty == output.participantC) {
               // Do checks for PartyC
            }
        }
    }
    val txId = subFlow(signTransactionFlow).id

    return subFlow(ReceiveFinalityFlow(otherPartySession, expectedTxId = txId))
}

是的,PartyB和PartyC的交易验证应该放在Responder流程中。您提出的解决方案是正确的。 更常见的是,Responder流程也可以拆分到不同的节点,一个在PartyB的节点,一个在PartyC的节点,这样他们就看不到彼此的实现。