上证指数 3457.75 0.39%
|
深证成指 10476.29 0.11%
|
恒生指数 24072.28 -0.87%
|
纳斯达克 20167.07 -0.99%
|
日经225指数 39986.33 -1.24%
|
Leora 站内编辑
569 文章
365877 阅读
首页  >  要闻 >  区块链 >  正文
申请成为签约作者 >
PBFT如何运作?
2019年11月21日 04: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

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

声明: 本文由入驻币海编者上传,观点仅代表编者本人,不代表币海财经赞同其观点或证实其描述,请自行判断。
延伸阅读
PBFT如何执行?
   Relay Bits        2019/11/22 00:00
拜占庭将军问题还没破,拜占庭容错又是什么鬼?
   Leora        2019/11/21 00:00
从货币到可信任货币,钱,到底是什么?(上)
   Aries        2019/10/14 08:52
每日科普:长程攻击(下)
   Aries        2019/10/12 07:30
Facebook加密货币项目Libra白皮书正式发布
   币海独步者        2019/06/18 10:00