在 Corda 中,如果响应者流拒绝交易,他们如何将消息传递回发起者流?
In Corda, how can a responder flow pass a message back to the initiator flow if they reject a transaction?
假设我有以下流对:
Initiator
,谁创建了交易
Responder
,接受或拒绝签署交易
如果 Responder
流节点 运行 拒绝签名,他如何将拒绝的原因传递回 Initiator
流节点 运行?
节点运行 Responder
流需要抛出一个FlowException
。 FlowException
是一种特殊的异常类型,当您希望异常的消息对交易对手可见时,应该在流中抛出它。
所以在 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.")
}
假设我有以下流对:
Initiator
,谁创建了交易Responder
,接受或拒绝签署交易
如果 Responder
流节点 运行 拒绝签名,他如何将拒绝的原因传递回 Initiator
流节点 运行?
节点运行 Responder
流需要抛出一个FlowException
。 FlowException
是一种特殊的异常类型,当您希望异常的消息对交易对手可见时,应该在流中抛出它。
所以在 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.")
}