参与者节点处于 Draining 模式时的 FinalityFlow 行为
FinalityFlow behavior when a participant’s node is in Draining Mode
网络:
- 甲方、乙方、丙方、公证人
场景:
PartyB的节点进入draining模式
PartyA执行交易,PartyB和PartyC是
参与者(不是签名者)
结果:
- 甲方完成交易,获得公证人签名并
将状态保存在其保险库中。
- 不会通知乙方交易(预期)
- PartyC 不会 收到交易通知(惊喜!)
学习:
我假设因为 PartyC 在 getParticipants() 中列在 PartyB 之后,所以它必须等到 PartyB 重新上线后才能接收交易。这是不幸的,因为PartyB的节点挂了,PartyC受到了惩罚。
问题:
这只是Corda开源版本的限制吗? Corda Enterprise 会以同样的方式运行吗?
想法:
可能有必要明确告知您的 CorDapp 用户这种现象,因为它造成了由网络上其他节点引起的信息不对称的情况。
这是 Corda Open Source 的一个限制。 Corda Enterprise 的 FinalityFlow(直到 4.x)在公证后将交易发送给所有节点,并并行执行解析以提高性能。在 Corda Open Source 中,它是按顺序完成的。
网络:
- 甲方、乙方、丙方、公证人
场景:
PartyB的节点进入draining模式
PartyA执行交易,PartyB和PartyC是 参与者(不是签名者)
结果:
- 甲方完成交易,获得公证人签名并 将状态保存在其保险库中。
- 不会通知乙方交易(预期)
- PartyC 不会 收到交易通知(惊喜!)
学习:
我假设因为 PartyC 在 getParticipants() 中列在 PartyB 之后,所以它必须等到 PartyB 重新上线后才能接收交易。这是不幸的,因为PartyB的节点挂了,PartyC受到了惩罚。
问题:
这只是Corda开源版本的限制吗? Corda Enterprise 会以同样的方式运行吗?
想法:
可能有必要明确告知您的 CorDapp 用户这种现象,因为它造成了由网络上其他节点引起的信息不对称的情况。
这是 Corda Open Source 的一个限制。 Corda Enterprise 的 FinalityFlow(直到 4.x)在公证后将交易发送给所有节点,并并行执行解析以提高性能。在 Corda Open Source 中,它是按顺序完成的。