DPoS共识机制白皮书理解

目录

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是恶意节点,那么有如下

DPoS共识机制白皮书理解_第1张图片

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

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会延续最长的分支进行出块。

DPoS共识机制白皮书理解_第2张图片

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

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

DPoS共识机制白皮书理解_第3张图片

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共识机制白皮书理解)