如何从其他节点同步状态

How to sync states from other nodes

我按照 QuickStart 主题中的步骤尝试 cordapp-example。但是,我有一个问题,这是我的情况。

  1. 启动 cordapp-example 网络。
  2. 打开浏览器访问PartyA节点。
  3. 甲方发借条给乙方。
  4. 关闭 cordapp-example 网络。
  5. 复制一份……/cordapp-example/kotlin-source/build/nodes/PartyB并保存在某个地方。
  6. 重复步骤1-4。 (现在 PartyA 和 PartyB 的账本上都有 2 个 IOU 状态)。
  7. 将.../cordapp-example/kotlin-source/build/nodes/PartyB替换为第 5 步中的副本。

在这之后,如果我启动 cordapp-example 网络并访问 PartyA 和 PartyB,我将看到 PartyA 有 2 个 IOU 状态,而 PartyB 只有 1 个 IOU 状态。我不确定我需要做什么才能将丢失的 IOU 状态从 PartyA 同步到 PartyB。

所以这里需要理解的是,没有同步特性,因为在流动过程中节点进行交易时状态保持同步;你在这里有效地做的是删除和修改你的世界观。

Corda 不像比特币或以太坊那样是 public 区块链;每个参与者对账本的看法都是主观的,所以如果你删除或丢失了你的数据,你将无法从其他方恢复它。如果你从商业角度考虑这个问题,为什么另一个演员会有任何动机帮助你恢复这些数据?保护您的数据安全只是您在商业世界中进行交易时的责任之一。

我在这里写了一篇关于数据管理的简短博客文章:https://www.corda.net/2017/05/corda-system-failures-data-needs-look-stuff-things-go-wrong/

我有类似的情况,在流的广播步骤中,如果对方不在线,它会无限期地等待。我们是否可以将其作为一个异步过程来执行此操作,其中广播可以启动发送 state/transaction 并在当前节点中提交事务。对方上线后即可收到状态

我也贴在这里了 - Corda: Synchronize multiple Nodes that represent same Party