【问题标题】:What happens when a node's H2 database gets deleted by some means in Corda?当一个节点的 H2 数据库在 Corda 中通过某种方式被删除时会发生什么?
【发布时间】:2018-10-08 17:01:15
【问题描述】:

假设 A 与 B 和 C 在一个网络中。A 与 B 有一个共享事实,与 C 有一个共享事实。这两者都驻留在 A 的 Vault 中。假设 A 的系统崩溃并且节点的 H2 数据消失了,A 如何将这两个事实都恢复到它的 Vault 中?

【问题讨论】:

    标签: corda


    【解决方案1】:

    如果 B 和 C 都愿意与 A 重新共享此信息,则他们都可以调用如下定义的流来将事务及其依赖项重新发送给 A:

    @InitiatingFlow
    @StartableByRPC
    class ShareTransactionHistory(val otherParty: Party, val signedTransaction: SignedTransaction) : FlowLogic<Unit>() {
        @Suspendable
        override fun call() {
            val otherPartySession = initiateFlow(otherParty)
            subFlow(SendTransactionFlow(otherPartySession, signedTransaction))
        }
    }
    
    @InitiatedBy(ShareTransactionHistory::class)
    class ShareTransactionHistoryResponder(val otherPartySession: FlowSession) : FlowLogic<Unit>() {
        @Suspendable
        override fun call() {
            subFlow(ReceiveTransactionFlow(otherPartySession, statesToRecord = StatesToRecord.ONLY_RELEVANT))
        }
    }
    

    然后,A 将自动重新记录交易和任何相关状态。

    但是,请参阅this question 了解恢复过程中的注意事项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-27
      相关资源
      最近更新 更多