目录

1.用户组成及关系

2.共识流程

1.正常情况

2.恶意节点多重制造问题

3.网络碎片问题

4.不可篡改的区块

3.思考


DPoS (Delegated Proof of Stake) 股份授权证明机制

文中内容纯属个人理解,可能有不对的地方,欢迎指正。


1.用户组成及关系

用户分为stakeholders(股权人)和producers(制造者)。

  • stakeholders(股权人)是指持有代币的用户。
  • 分布式账本由producers来维护。producers由stakeholders来投票选举出。

producers的数目为奇数个,一般为21个。奇数个的设置方式在网络出现碎片或者出现分叉时会有帮助。

21个producers由stakeholders投票选举出:其中前20个根据得票数目的多少来决定;第21个根据节点得票的概率来抽选。


2.共识流程

我们假设有三个producers:A,B,C来说明normal case 和 abnormal case。

1.正常情况

A,B,C通过round-robin(轮训)或者随机排序的方式进行出块,其中出块间隔为3s。在每一个时间间隔内,只有一个producer来负责生产区块。用户把交易发送给当前的producer,然后由当前的producer负责验证并生成区块,并将区块进行全网广播。

2.恶意节点多重制造问题

假设有最多1/3的节点是恶意节点(也就是说系统的容错率是1/3)。那么这些恶意节点会自己创建多个分支。我们假设B是恶意节点,那么有如下

但是,恶意节点自己创建的分支的增长速度永远赶不上最长分支的增长速度。所以系统中只会有一个最长链。

3.网络碎片问题

1. A B C都是诚实节点

由于网络的连通性可能会导致网络中有多个分支:

当红线作为网络连通性恢复界限,那么网络中会有三个分支(因为我们假设只有三个producers),并且这三个分支的长度一样。轮到B出块,B会选择被更多producers验证过的那条分支,i.e., (A-C-C)而不是(A-A-A)或者(A-B-B)

当绿线作为网络连通性恢复界限,那么网络中会有三个分支,并且有两个分支长度最长且一样(A-C-C)和(A-B-B)。轮到A出块,那么A会选择任意一条分支,从而使得系统中有一条最长的分支。之后的producer会延续最长的分支进行出块。

2 B是作恶节点 A C是诚实节点

在网络连通性恢复的时候,B根据A创建多个分支(A-B)和(A-B1)。在轮到诚实节点C出块时,C会选B或者B1作为接下来出块的基础。这样做会导致系统中只有一个最长链。

4.不可篡改的区块

假设被至少2/3的producers验证过的区块才算是在系统中不能被修改的(增长最快的链)。因为在实际EOS系统中有21个producers,所以21*2/3=14   ->  14+1=15     ->      15*3=45。也就是45秒确认一笔交易。

缺乏法定人数的生产者以及大多数生产者的腐败这两种情况几乎不会出现,因此不在这里赘述。

3.思考

1.为什么容错率是1/3?

答:因为每当作恶节点产生一个区块,就需要至少两个区块来超过它成为最长的链。所以容错率是三分之一

2.为什么是奇数个producers?

奇数个producers能够保证不会出现两部分区块数目相同的分支,以为始终是N和N+1相抵抗。但是更深层次的数学解释我不会。

参考资料:

https://steemit.com/eos/@eosio/eos-io-technical-white-paper#consensus-algorithm--dpos-

https://steemit.com/dpos/@dantheman/dpos-consensus-algorithm-this-missing-white-paper

DPoS共识机制白皮书理解相关推荐

  1. EOS入门(8)---浅谈EOS的DPOS共识机制

    EOS入门(8)---浅谈EOS的DPOS共识机制  光_武 关注 2018.03.17 14:13 字数 3873 阅读 1534评论 1喜欢 2 本文参考汤强公众号的一篇文章坐看邻国领袖打高尔夫球 ...

  2. POW,POS,DPOS共识机制简单介绍

    区块链技术的诞生基于共识机制,所谓的共识,简单来理解,即打成共识一致的观点,随着技术的发展与演变,我们听到了越来越多的共识,例如:POS,DPOS,POW,Pool验证池,POC,POR等共识算法机制 ...

  3. Pow,Pos,Dpos共识机制比较

    1.工作量证明(pow) 简述: 理论上每个计算机都拥有可以参与计算获得挖矿的机会,正因为这样拥有更多算力的机器则拥有更大机会找到哈希值获得奖励.挖矿难度相同,算力决定出块的概率.拥有百分之51的算力 ...

  4. 美图DPOS共识机制ETH节点网络启动和测试

    源码 https://github.com/meitu/go-ethereum 节点网络启动 1.简单测试起见,需要将节点最大验证器数修改为最小数 consensus/dpos/dpos.go max ...

  5. 3-12 董事会体制:DPOS共识机制(股份授权代表机制)

    体验指导 先进行投票: 再连续点击"记账"按钮: 同步练习

  6. EOS共识机制——DPoS代理权益证明

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链共识机制与它的演进,是由于区块链式去中心化而且分布式的系统,必须要有一套放诸四海皆准类似宪法的规则,来规范如何证明 ...

  7. [区块链]DPoS(委托权益证明机制)官方共识机制详解——BTS、EOS

    写在前面 官方原文即解析 Delegated Proof-of-Stake Consensus ------------ 委托权益证明的共识一个强大而灵活的共识协议一个具有高鲁棒性,的灵活协议共识 一 ...

  8. 区块链去中心化的生命之源:“DPOS(委托权益证明)共识机制”

    区块链去中心化的生命之源:"DPOS(委托权益证明)共识机制" 原创2018-04-24[水伯]战略忽悠局政委水伯 移动网络时代唯一壁垒就是认知,周二有约给思想洗澡让认知破壁! D ...

  9. BM与V神再次交锋 EOS针对DPOS BFT共识机制做出改进

    本文翻译自BM在Medium的文章,比较了当前的几种主流共识算法,论述了在DPOS在拜占庭容错机制下... 本文翻译自BM在Medium的文章,比较了当前的几种主流共识算法,论述了在DPOS在拜占庭容 ...

最新文章

  1. ArrayAdapter requires the resource ID to be a TextView
  2. 简单的BMCP位图图片压缩算法
  3. 5G研发大幕开启 终端硝烟已燃
  4. JAVA成员变量为什么不能在类体中先定义后赋值
  5. 美团面试动态规划——整数拆分
  6. QT的QStackedLayout类的使用
  7. python时间函数详解_Python:Numpy库基础分析——详解datetime类型的处理
  8. PV、UV、UIP、VV、CPC、CPM、RPM、CTR指的是什么?
  9. cdcqの省选膜你赛
  10. PHP5与MySQL数据库操作
  11. Java lang3的 StringUtils.isNumeric(str)不能识别负数和小数
  12. mysql pxc启动_Percona XtraDB Cluster(PXC) 无法正常启动
  13. 关于 stl的内存分配的深浅拷贝
  14. 新加坡政府开放数据门户网站
  15. 我与我的专业计算机作文500字,我和学校作文500字(精选5篇)
  16. 网络流——最大流问题
  17. 904. 水果成篮(c++)
  18. 服务器端无微信第三方平台事件传入,致使粉丝关注、公众号自动回复失效
  19. springboot的log4j2日志不打印,且控制台不输出!!!
  20. 用Python写个爬虫小程序,给女朋友每日定时推送睡前小故事

热门文章

  1. MySQL配置文件无法生效、错误日志无法打印、my.cnf权限644无法启动、主从复制配置失效各式配置文件疑难杂症最终解决办法
  2. Templates在setting中设置所在目录
  3. 我们都应具备的五种理财思维
  4. 微信公众号H5页面中获取openId
  5. Network error:Connection timed out Linux工具无法连接网络?重启网卡即可
  6. VsCode使用Ctrl+S保存代码自动格式化Html/Css/JS
  7. 生活在美国:最常有用的英语口语900句
  8. 阿里云DataWorks学习——数仓架构设计
  9. Java中多态的好处和弊端
  10. JAVA基础(十三)