在Corda中以某种方式删除节点的H2数据库时会发生什么?

时间:2018-10-07 08:54:47

标签: corda

想象A与B和C一起在网络中。A与B有一个共享的事实,与C有一个共享的事实。这两个都位于A的保险柜中。假设A的系统崩溃并且节点的H2数据消失了,那么A如何将这两个事实恢复到其Vault中?

1 个答案:

答案 0 :(得分:0)

如果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