波卡链Substrate Grandpa协议三“2阶段同步”
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了波卡链Substrate Grandpa协议三“2阶段同步”相关的知识,希望对你有一定的参考价值。
1. 预投票pre-vote+预执行pre-commit
step0. 假设当前是第r轮,一个voter 在(r-1)轮完成后,并且收集完之前所有轮投票的情况下可以进行第r轮投票
step1. 如果v是primary,广播上一轮r-1轮的Estamete(pre-vote_V(r-1,v), pre-commit_C(r-1,v))
(Estimate包含了所有本可以在r轮最终确定却实际上没有被最终确定的区块的信息)
step2. 等待网络延迟2T后,每个验证器为它理想的最高区块广播“预投票”pre-vote(如果绝大多数验证者是诚实的,这个区块应该扩展主广播的链)
step3. 每个验证器根据一组pre-vote计算可以最终确定的最高块。等待网络延迟2T或者确定没有更好的区块后,将结果广播出去(pre-commit);
- g(V(r−1,v)) ≥ B >(V(r-1,v),C(r-1,v))
- pre-commit消息内容的创建方式:通过组合pre-vote的一致同意者(可能是多个)
step4. 当v接收到足够的 pre-commit 的消息能够确认区块后就会形成 commit 的消息,一般认为大于 2/3 就可以被确认了。结果也可能是null。
T:网络传播消息时间
v:投票者
r:当前轮数
g():寻找前面的共同祖先function
vote 投票内容:signed(区块哈希, r, type of vote)
以上是关于波卡链Substrate Grandpa协议三“2阶段同步”的主要内容,如果未能解决你的问题,请参考以下文章
波卡链Substrate Grandpa协议四“责任安全机制”