延伸阅读
PBFT如何保证安全性与活跃性?
PBFT如何运作?
共识:想说爱你不容易
拜占庭将军问题还没破,拜占庭容错又是什么鬼?
第三阶段:执行(Commit)
「已预备」的将军若决定执行,则发送附有签名的「执行」信息给所有将军;若决定不执行则不发送任何信息。
发出「执行」信息的将军开始「执行」阶段。
各将军若收到3则以上「执行」信息,则执行信息内容,这也代表该提议取得了共识。
执行信息后的将军进入「已执行」状态并将执行结果回报(Reply)给拜占庭君主。
回报后的将军结束这回合,静待下一个提议的到来。
PBFT Commit Phase
可能有些读者比较熟悉下面这个精简版的流程图:
PBFT Process
替换不适任的主导者:视域变换(View-change)
以上的共识形成的过程非常依赖忠诚的主导者,万一主导者是叛徒呢?为了避免不提案的主导者瘫痪所有行动,将军们需要一个轮替机制,也就是视域变换:
每个将军从收到「预备」信息后开始计时,转为「已执行」状态后结束计时。
如果在计时后T时间内未执行信息,则该将军可以发送「变换」(View-change)信息,信息内容包含新的代数(目前代数+1)以及其他重要讯息。
如果主导者未提案,则每个诚实的验证者最终都会因为超时而发出变换信息。
PBFT View-change
新主导者若收到3则以上「变换」信息,则新主导者可以发送「新域」(New-view)信息,信息内容包含新代数、所有具有「已预备证明」且尚未被执行的「就位」信息,以及其他重要讯息。
各验证者收到「新域」信息后,逐一针对尚未执行的「就位」信息进行投票流程。
接下来由新主导者负责接收拜占庭君主的命令。
PBFT New-view
前两个阶段可参阅《PBFT如何运作?》
点击关注币海启行微信公众号,了解更多