Hyperledger-Sawtooth:共识如何运作?

Hyperledger-Sawtooth: How consensus work?

设置一个包含 3 个验证器的锯齿网络,每个验证器都连接到一个交易处理器。我正在测试共识机制,所以在我的 TransactionHandler 中对 setState 做了一些有意的混乱。在 2 个处理器中,我在状态中设置了相同的对象,在另一个中,我设置了不同的值。因此,每笔交易都会在验证器中产生不同的状态。
在不同的验证器中有不同的状态可以吗?那么共识在哪里呢?

在我看来,如果发生这种情况,验证节点没有对等。后一个事务将覆盖状态中的前一个事务。 3 个验证器节点需要位于对等网络中。您只在第一个节点中创建一个创世块(块 0)。该节点被复制到锯齿网络中的所有其他节点。

您可以使用 sawnet compare-chains 命令验证所有节点上的创世节点是否相同(并且所有其他节点是否相同)。在链的末端寻找一组不同的块。

我建议开始使用预先构建的配置 Docker 创建锯齿网络。例如,使用此处找到的 sawtooth-default-poet.yaml 文件: https://sawtooth.hyperledger.org/docs/core/nightly/master/app_developers_guide/creating_sawtooth_network.html 基本上你开始 sawtooth-validator -vvv --peering dynamic --seeds tcp://validator-0:8800 --seeds 参数指定初始网络节点和网络与其他对等节点动态对等。