小编Aus*_*art的帖子

在同一个 Corda 流程中创建多个交易有哪些风险?

在 Cordapp 中,我想更新第二条链作为正常交易的一部分。由于数据是在两个不同的状态下由不同的参与者跟踪的,因此这需要在两个事务中完成。

为了讨论的目的,我们有 A 和 B 两方。A 向 B 发起交易 1。收到交易 1 后,B 方启动交易 2 以更新另一个状态。如何确保两笔交易均成功完成?

有两种方法可以解决这个问题:

  1. 启动subFlow事务 2 内联流响应程序。
  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

5
推荐指数
1
解决办法
674
查看次数

标签 统计

corda ×1