拜占庭将军问题:在存在恶意节点(可能发送伪造、矛盾或随机消息)的网络中,如何让所有诚实节点就某一值达成一致,并持续正确运行。

PBFT

  1. 预准备(Pre-prepare)
    主节点广播提案 <view, seq, digest>

  2. 准备(Prepare)
    每个副本收到后,若合法则广播 ⟨prepare⟩ 消息;
    当某节点收集到 2f 个不同prepare(含自己,共 2f+1),就锁定该提案。

  3. 提交(Commit)
    再广播 ⟨commit⟩
    同样收到 2f+1 个 commit 后,节点才执行请求并回复客户端。

Tendermint

HotStuff

Istanbul BFT