Tendermint之共识逻辑

图示

流程描述

Validators:所有参与共识的节点

Proposer:出块节点

以高度n,round 0共识为例

1 所有的Validators在New Height(高度n,round 0)处等待开始,timeout或者tx到来的时候进入Propose阶段

2 Propose阶段

Proposer打包区块,并广播给其他Validators,然后进入Prevote阶段

其他Validators等待接收区块,收到区块后进入Prevote阶段,或者一定时间内没收到区块也进入Prevote阶段

3 Prevote阶段

这个阶段不区分Proposer了,所有Validators处理都一样

如果有有效区块则针对blockID(block的hash)投票,如果没有有效区块则针对nil投票即可

然后一直等待接收其他Validators的Prevote投票

a:如果收到了针对同一blockID或者nil的+2/3的投票,进入Precommit阶段

b:如果收到了+2/3节点的投票但是大家未达成一致,起一个timeout,如果在timeout内未收到针对同一blockID或者nil的+2/3的投票,也进入Precommit阶段

4 Precommit阶段

a:如果Prevote阶段有+2/3对同一blockID或者nil的投票,那么针对这个blockID或者nil投Precommit的vote

b:如果Prevote阶段没有+2/3对同一个blockID或者nil的投票,那么针对nil投Precommit的vote

然后一直等待接收其他Validators的Precommit投票

a:如果收到了针对同一blockID的+2/3的投票,进入commit阶段

b:如果收到了+2/3节点的投票但是大家未达成一致,起一个timeout,如果在timeout内未收到针对同一blockID的+2/3的投票,那么重新对高度n进行共识,round会加1,proposer也会进行更换,谨防高度n round 0的Proposer是拜占庭节点

5 Commit阶段

保存共识的block,调用abci让app更新世界状态。

然后启动对高度n+1的共识

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值