2

TL;DR - 当一个副本被杀死时,具有 4-5 个公证节点的 BFT 集群会停止。

我运行了公证人演示,Raft 集群(有 3 个公证人节点)表现如预期 - 当我杀死领导者时,会有选举,公证人集群继续提供可靠的服务。

我希望在运行 BFT 集群(有 4 个公证节点)时也会发生同样的事情——杀死其中一个副本不应阻止集群提供可靠的公证服务。但是,会发生以下情况:

1)启动BFT公证集群

2)我可以使用 10 笔交易进行公证gradlew samples:notary-demo:notarise

3) 停止集群中的一个副本

4) 尝试使用 10 笔交易进行公证gradlew samples:notary-demo:notarise

5)等待几分钟,没有任何反应(交易未经公证)

6)所有剩余的副本终端不断填充re-connecting to replica 1 at /127.0.0.1:11010

为了安全起见,我决定在集群中添加另一个公证节点。但是,没有任何变化——有 5 个公证节点,杀死其中一个节点会使集群停止运行。

我研究了 BFT SMaRt 的工作原理,但据我所知,只要有足够的工作副本(N >= 3f + 1),它就应该能够容忍任何故障(包括崩溃停止)。

我在这里缺少什么吗?我期望的行为是否不合理 - 具有 4-5 个公证节点的 BFT 集群能够容忍 1 个节点死亡?还是 Corda 的问题?

4

1 回答 1

0

在这种情况下很难知道问题出在哪里,因为这里没有太多信息,但是 corda repo 最近更新了这个示例,因此可能值得尝试重新访问该项目以查看它现在是否正常工作。

这是最近 4.5 版本公证演示的链接:

https://github.com/corda/corda/tree/release/os/4.5/samples/notary-demo

于 2020-05-20T21:48:53.420 回答