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 (7)Grandpa协议三“2阶段同步”相关推荐

  1. 波卡链Substrate (7)Grandpa协议一“概念说明”

    1. Grandpa协议 祖先递归继承共同前缀协议(GHOST-based Recursive Ancestor Deriving Prefix Agreement) 区块选择协议:配合出块协议 对链 ...

  2. 波卡链Substrate (7)Grandpa协议四“责任安全机制”

    1. Account Safety 当网络出现分叉的 commit 信息时,Polkadot节点马上采取 Account Safety 的机制. 是一种"弱主观性"安全模式:通过惩 ...

  3. 波卡链Substrate (7)Grandpa协议二“投票”

    1. 投票 1.1 复杂度O(n²) 如果节点数增加一倍,则必须发送四倍数量的消息. 绝对(非概率)安全性的共识协议需要为达成一致的所有内容传递大量消息,需要在参与者之间发送的消息数量与共识协议中的参 ...

  4. 波卡链Substrate (6)Babe协议三“slot leader”

    1. 问题:一个槽有多个Validators,谁来出块? 2. 解决:每个Validator使用VRF(Verifiable Random Function)函数生成一个伪随机值,如果低于阈值,它就成 ...

  5. 波卡链Substrate (7)Grandpa + Babe

    1. BABE 必须建立在 GRANDPA 最终确定的链上. BABE 中最好的链就是由主节点创建的区块最多的链 Grandpa 多个块一次性进行确认 eg. 标有"1"的块是主要 ...

  6. 波卡链Substrate (6)Babe协议一“基本概念”

    1. 盲分配Babe协议(Blind Assignment for Blockchain Extension protocol ) 一种基于槽的算法. 将时间分解为多个纪元,每个纪元都被划分为多个槽s ...

  7. 波卡链Substrate (7)Babe协议五“Epoch纪元更新”

    1. 新的纪元更新时,validors需要更新新的纪元随机值,新纪元的当前有效validators 一个新的validator加入链后,至少要过2个纪元才能参与出块.eg. 第i个纪元的时候就确定了第 ...

  8. 波卡链Substrate (7)Babe协议四“出块签名和验证”

    1. 步骤 step1. slot leader更新本地链C使用新块,并发送新块B发送给其他节点 step2. 签名 slk:当前槽 H(l-1):sLk前一个区块的哈希 d:VRF输出 pi:val ...

  9. 波卡链Substrate (7)Babe协议六“Secondary slot leader”

    1. 问题 由于槽是随机分配,一个插槽可能是空的,有的却有多个.或者说刚才的n个Validators的output都小于阈值.谁来出块? 2. 解决方法 每个插槽可以有一个主要Primary lead ...

最新文章

  1. 太酷啦!我在A4纸上看宫崎骏动画
  2. 【NLP】基于深度学习的文本分类应用
  3. matlab wc wp,数字信号处理MATLAB习题.PDF
  4. linux缓存文件用户权限错误,Laravel运行缓存权限问题
  5. mysql 插入数据 自增长_如何在MYSQL插数据 ID自增
  6. python发邮件实例_python 发送邮件实例
  7. 【python】去除字符串头尾的多余符号
  8. django之路由分组,路由分发,FBV,CBV,ORM框架
  9. 如何对两个大型SQL Server数据库中的数据进行快速估计比较,以查看它们是否相等
  10. Hexo + github 打造个人博客
  11. 洛谷——P1144 最短路计数
  12. 《Perl语言入门》学习笔记
  13. Unity WebView 插件 | 浏览器插件3D WebView 专栏介绍
  14. java POI excel导出自定义分页问题
  15. identifier “ “ is undefined 错误
  16. iOS总结-Runtime篇之用途及面试题的总结一黑魔法Method Swizzling
  17. 加密聊天软件(功能文档)
  18. 摩托车挡板防碎膜-安全骑行好伴侣
  19. 2009年计算机统考考研试题及参考答案
  20. Android SVG矢量资源的使用方法

热门文章

  1. Gogland IDE Run/Debug Configurations 配置说明
  2. 操作系统:进程的三种状态
  3. git推送密码_保护代码完整性(六):在 Git 上使用 PGP
  4. makefile使用宏及用法$(宏标识符) $(cc)_宏编程的艺术
  5. 液冷模块是什么?有什么作用与意义?
  6. python有什么好玩的库_你知道Python很火!那你知道它有哪些好玩的库吗?
  7. openresty完全开发指南_送给你,PBA商业分析指南(全书下载)
  8. Python语言学习之字母G开头函数使用集锦:global用法之详细攻略
  9. Python ML环境搭建与学习资料推荐
  10. oracle pl/sql 中目录的创建