【发布时间】:2018-10-08 17:01:15
【问题描述】:
假设 A 与 B 和 C 在一个网络中。A 与 B 有一个共享事实,与 C 有一个共享事实。这两者都驻留在 A 的 Vault 中。假设 A 的系统崩溃并且节点的 H2 数据消失了,A 如何将这两个事实都恢复到它的 Vault 中?
【问题讨论】:
标签: corda
假设 A 与 B 和 C 在一个网络中。A 与 B 有一个共享事实,与 C 有一个共享事实。这两者都驻留在 A 的 Vault 中。假设 A 的系统崩溃并且节点的 H2 数据消失了,A 如何将这两个事实都恢复到它的 Vault 中?
【问题讨论】:
标签: corda
如果 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 了解恢复过程中的注意事项。
【讨论】: