分布式一致性协议三部曲-PBFT源码分析

TenderMint PBFT协议交互流程

    Tendermint是一个基于PBFT(实用拜占庭容错)的共识机制,是Cosmos跨链协议的核心模块。PBFT是一种去中心化的一致性协议,非常类似Paxos,推荐先看笔者这篇文章【分布式一致性协议三部曲-深入理解一致性协议】,由该文可知,PBFT和Paxos交互的对应关系如下,我们再次预习下。

Paxos交互图如下

 

分布式一致性协议三部曲-PBFT源码分析_第1张图片

 

PBFT是通过广播进行的,因而上述交互可以缩减

 

分布式一致性协议三部曲-PBFT源码分析_第2张图片

 

进而可以简化为如下交互

 

分布式一致性协议三部曲-PBFT源码分析_第3张图片

 

上述流程更名后就变为

 

分布式一致性协议三部曲-PBFT源码分析_第4张图片

 

对应的详细交互图如下: 

 

分布式一致性协议三部曲-PBFT源码分析_第5张图片

 

    接下来我们通过源码来分析这些交互流程

 

PBFT源码分析

Propose

   节点生成新区块时发起Propose,  Propose会广播proposeMessage消息, 该消息由Proposer发起。

分布式一致性协议三部曲-PBFT源码分析_第6张图片

 

Provote

   收到propose且block信息已收集好,就会广播provote投票

    • 由于Proposer有本地的区块,一般会很快发出Prevote消息, 相当于proposer无需接收一个proposeMessage才发起prevote,其他节点是要接收到proposeMessage才会。

分布式一致性协议三部曲-PBFT源码分析_第7张图片

 

  • 其他节点,收到proposeMessage且收到完整区块信息后才会广播provote消息

 

分布式一致性协议三部曲-PBFT源码分析_第8张图片

分布式一致性协议三部曲-PBFT源码分析_第9张图片

分布式一致性协议三部曲-PBFT源码分析_第10张图片

 

Precommit

  • 收到2/3 prevote会进入precommit

收到vote

分布式一致性协议三部曲-PBFT源码分析_第11张图片

收到2/3票进入precommit

分布式一致性协议三部曲-PBFT源码分析_第12张图片

在precommit会添加lockedBlock

分布式一致性协议三部曲-PBFT源码分析_第13张图片

 

  • 收到其他人的Precommit

 

分布式一致性协议三部曲-PBFT源码分析_第14张图片

 

Commit

  • 收到2/3 precommit会进入commit

分布式一致性协议三部曲-PBFT源码分析_第15张图片

分布式一致性协议三部曲-PBFT源码分析_第16张图片

    到了commit已经变为不可逆,但是理论上将commit广播给更多人可以加快区块同步, 但是并没有主动广播commit。pBFT里commit传播是通过区块同步实现的,进入commit的validator会propose新区块,然后其他节点收到它的propose后在provote之前会先同步到proposer的高度,这就相当于同步了commit信息。

lockedBlock的四种场景

    lockedBlock是pBFT的一个核心逻辑,类似Paxos的Promise已有Accepted的value。

  • 当节点收到超过2/3的prevote消息, 节点会进入precommit状态并发出precommit消息, 该高度的区块被锁定(类似Paxos的Accepted状态)

分布式一致性协议三部曲-PBFT源码分析_第17张图片

 

  • 已经有lockedBlock, 在收到下一轮的Propose时prevote时推荐这个locked区块,类似Paxos的promise阶段返回已Accepted的value

分布式一致性协议三部曲-PBFT源码分析_第18张图片

 

  •  新的一轮Propose, 如果新的proposer收到过一个节点的Locked Block, 直接更新Round并使用该Locked Block, 不会提议新的Block。

分布式一致性协议三部曲-PBFT源码分析_第19张图片

 

  • 未收到2/3 prevote的节点在新一轮的新block上产生了新的2/3的provotes, 那没办法只有承认新round, 新block。

分布式一致性协议三部曲-PBFT源码分析_第20张图片

 

超时处理逻辑

分布式一致性协议三部曲-PBFT源码分析_第21张图片

分布式一致性协议算是一个比较复杂的系统,需要多思考讨论,欢迎文章下面留言讨论


系列文章:

【分布式一致性协议三部曲-深入理解一致性协议】

【分布式一致性协议三部曲-从paxos幽灵复现看Raft实现原理】

【分布式一致性协议三部曲-PBFT源码分析】

所有的码客文章,都在这里,欢迎长按关注

分布式一致性协议三部曲-PBFT源码分析_第22张图片

你可能感兴趣的:(分布式系统,区块链)