带有 Raft 协议的 Hyperledger Fabric:交易如何打包成块?

问题描述

所以我确实理解 Raft 协议的概念。
但在 Hyperledger Fabric Ordering Service 的用例中,我很挣扎。

目前我的理解:
当对等方提出并认可交易时,应用程序将其转发到排序服务。 Raft 领导节点收到此交易并将其写入他的日志,然后将其发送给他的跟随节点,这些跟随节点也更新他们的日志。

我不明白的地方:

  • 块在哪里以及如何创建?
  • 是否所有节点都创建一个块并检查大多数节点是否相同?

我在某处读到,leader 调用了 Blockcutter 方法,然后将生成的 Block 提交给本地 Raft 有限状态机(这是什么?)。

解决方法

对每笔交易都进行一轮共识太浪费了。取而代之的是,Raft 领导者将多个交易聚合到一个批次中,然后使用块切割器对象从该批次中创建一个块。

然后,Raft 领导者发起一轮共识,通过 Raft 协议将区块复制给所有追随者。