【发布时间】:2019-08-06 20:39:58
【问题描述】:
TL;DR - 当一个副本被杀死时,具有 4-5 个公证节点的 BFT 集群会停止。
我运行了notary demo,Raft 集群(有 3 个公证节点)表现如预期 - 当我杀死领导者时,会有选举,公证集群继续提供可靠的服务。
我希望在运行 BFT 集群(有 4 个公证节点)时也会发生同样的事情 - 杀死其中一个副本不应阻止集群提供可靠的公证服务。但是,会发生以下情况:
1) 启动 BFT 公证集群
2) 我无法使用 gradlew samples:notary-demo:notarise 对 10 笔交易进行公证
3) 停止集群中的一个副本
4) 尝试使用gradlew samples:notary-demo:notarise对 10 笔交易进行公证
5) 等待几分钟,没有任何反应(交易未经公证)
6) 所有剩余的副本终端不断填充re-connecting to replica 1 at /127.0.0.1:11010
为了安全起见,我决定在集群中添加另一个公证节点。但是,没有任何变化 - 有 5 个公证节点,杀死其中一个会使集群停止运行。
我查看了how BFT SMaRt works,但据我所知,只要有足够的工作副本 (N >= 3f + 1),它应该能够容忍任何故障(包括崩溃停止)。
这里有什么我遗漏的吗?我期望的行为是否不合理 - 具有 4-5 个公证节点的 BFT 集群能够容忍 1 个节点死亡?还是 Corda 的问题?
【问题讨论】:
标签: corda fault-tolerance notary