在 Cordapp 中,我想更新第二条链作为正常交易的一部分。由于数据是在两个不同的状态下由不同的参与者跟踪的,因此这需要在两个事务中完成。
为了讨论的目的,我们有 A 和 B 两方。A 向 B 发起交易 1。收到交易 1 后,B 方启动交易 2 以更新另一个状态。如何确保两笔交易均成功完成?
有两种方法可以解决这个问题:
subFlow事务 2 内联流响应程序。vaultTrack响应已提交的事务 1 并启动subFlowfor 事务 2。以下是选项 1 的一些示例代码:
class CustomerIssueFlowResponder(val otherPartyFlow: FlowSession) : FlowLogic<SignedTransaction>() {
@Suspendable
override fun call(): SignedTransaction {
val signTransactionFlow = object : SignTransactionFlow(otherPartyFlow) {
override fun checkTransaction(stx: SignedTransaction) = requireThat {
val output = stx.tx.outputs.single().data
"This must be an CustomerState." using (output is CustomerState)
}
}
// signing transaction …Run Code Online (Sandbox Code Playgroud) corda ×1