收藏本页
返回顶部

币海首页> 要闻资讯 > 文章

PBFT如何运作?

来源:Medium    Leora 2019-11-21 12:00 星期四
币海网微博
微信扫一扫

PBFT是一个具有拜占庭容错的状态机复制。欲解决拜占庭将军问题,一个直觉的想法就是利用一轮或多轮的投票以获得多数共识。然而,要由谁来发起投票?要投几次票才能确保共识具有安全性与活跃性?PBFT的创新在于三阶段投票的设计,分为「就位」(Pre-prepare)、「预备」(Prepare)、「执行」(Commit)三个阶段。

为了简化问题,我们先做以下的假设:

假设

只有4个将军,最多能容忍1个叛徒(4 = 3f+1,f为能容忍叛徒数量)。

每个将军都有编号(0~3)。

每个将军都能辨识彼此的签名。

每次行动都有一个序列号(Sequence Number)

进攻/撤退会组成一连串按序列号排列的序列,例如:进攻——进攻——防守——进攻…

有一个主导者(Primary)和数个验证者(Validator)。

主导者分成不同代,主导者的代数称为视域(View)。

将军们遵照循环制(Round-robin)轮流担任主导者,例如:第1代主导者由编号1的将军担任,第2代主导者由编号2的将军担任,以此类推;第4代主导者由编号0的将军再度担任。

有将军主动发起轮替的提议时才会轮替主导者,该轮替机制称为视域变换(View-change)。

第一阶段:就位(Pre-prepare)

主导者负责接收拜占庭君主(Client)的进攻/撤退命令(Request);

由主导者负责发起提议,内容包含进攻或撤退(Message)、第几代(View)、第几次进攻(Sequence Number)。

主导者透过信使发送附有自己签名的「就位」信息给其他验证者。

PBFT Pre-prepare Phase

第二阶段:预备(Prepare)

各验证者收到「就位」信息后需决定是否接受主导者的提议,若赞成提议则发送附有自己签名的「预备」信息给所有将军;若不赞成则不发送任何信息。

发出「预备」信息的验证者开始「预备」阶段。

各将军若收到3则以上「预备」信息,则该将军进入「已预备」(Prepared)状态,这些「预备」信息的集合统称为「已预备证明」(Prepared Certificate)

PBFT Prepare

PBFT Prepare Phase

点击关注币海启行微信公众号,了解更多

版权信息
来源:Medium
版权:转载
原文链接:https://www.bihai123.com.cn/news/zhuanlan/69641.html
作者:Juin Chiu
编译发布:Leora
声明:
此文为转载内容,不代表币海启行网的观点和立场,仅供参考。

相关文章

用户评论 (0)

0/140
币海网

区块链行业资讯链媒[币海资讯官网]

  Coypright @币海网 · 前海宏创投资(深圳)有限公司 · 版权所有