我们将始终假设有N个节点最多有f个恶意节点,其中N = 3f+1。PBFT中有两种模式,即普通共识(简称正常)模式和视图更改模式。正常模式看起来像这样(在区块链中,可以忽略客户端请求和回复)
在一个视图中(一个视图是类似一轮的概念),有3个步骤/阶段:预先准备(或宣布)、准备和提交。
1. 在预准备(宣布)阶段,领导者将向其他节点(称为验证者)广播宣布消息(announce message)(例如,包含最新交易的区块)。当验证者收到宣布消息时,它进入准备阶段。
2. 在准备阶段,在验证者接收到宣布消息之后,它将向每个节点广播准备消息(例如,在blockhash上的签名)。当验证者(包括领导者)收到足够的(即≥2f+1)准备消息时,它将进入提交阶段。
3. 在提交阶段,验证者(包括领导者)将发送提交消息(例如在| blockNum | blockHash |上的签名)当验证者收到足够的(≥2f+ 1)提交消息时。它可以安全地提交区块。这结束了一轮正常的共识过程。