在Corda中,如果响应者拒绝交易,响应者如何将消息传递回发起者流?

时间:2018-03-01 14:38:14

标签: corda

假设我有以下流对:

    创建交易的
  • Initiator
  • Responder,接受或拒绝签署交易

如果运行Responder流的节点拒绝签名,他如何将拒绝原因传回运行Initiator流的节点?

1 个答案:

答案 0 :(得分:1)

运行Responder流的节点需要抛出FlowExceptionFlowException是一种特殊的异常类型,当您希望对方可以看到异常消息时,它应该在流中抛出。

所以在Responder中,你可以写:

val signTransactionFlow = object : SignTransactionFlow(otherPartyFlow) {
    override fun checkTransaction(stx: SignedTransaction) {
        val counterparty = otherPartyFlow.counterparty
        throw FlowException("I refuse to trade with $counterparty")
    }
}

return subFlow(signTransactionFlow)

Initiator中,您可以选择处理异常:

try {
    val fullySignedTx = subFlow(CollectSignaturesFlow(partSignedTx, setOf(otherPartyFlow), GATHERING_SIGS.childProgressTracker()))
} catch (e: FlowException) {
    logger.error(e.message)
    TODO("Handle error.")
}