DPOS共识机制 和EOS1.0和2.0的共识机制

一、DPOS(Delegated Proof of Stake)

委托权益证明,是由POS改进的一种共识机制,类似由股东选取出一个董事会,只有董事会的成员才有权进行代理记账,普通股东无权进行记账。但是普通股东有选举董事会的成员,如果看董事会某成员不顺眼(比如这货侵犯了股东权益),可以把它换掉,这种共识机制的典型应用有BTS和EOS。委托权益证明的优点是可以提高交易速度,不浪费资源(POW需要很多电能,浪费资源),缺点是更容易被攻击,2/3超级节点受到攻击,网络就会被篡改,安全性有待考验,而且董事会是否会联合起来作恶或者为了自身利益牺牲普通股东利益也是一个考验。

POW可参考:https://blog.csdn.net/yangwei256/article/details/83023649

POS可参考:https://blog.csdn.net/yangwei256/article/details/83187106



二到四主要转载改编自https://zhuanlan.zhihu.com/p/34107097

二、DPoS 的诞生

DPoS 是一种区块链的共识算法, 2014年4月由Bitshares 的首席开发者 Dan Larimer (现为EOS CTO)提出并应用。当时Dan观察到比特币系统共识算法POW的一些问题:比如矿池导致算力越来越集中、电力耗费过大等。所以他提出了一种更加快速、安全且能源消耗比较小的算法,这就是后来的DPOS。

三、DPoS的选举机制

在DPoS共识算法中,区块链的正常运转依赖于超级节点,这些超级节点别管得票高低,都是完全等价的,超级节点的主要职责有:

1. 提供一台服务器节点,保证节点的正常运行;

2. 节点服务器收集网络里的交易;

3. 节点验证交易,把交易打包到区块;

4. 节点广播区块,其他节点验证后把区块添加到自己的数据库;

5. 带领并促进区块链项目的发展;

受托人的节点服务器相当于比特币网络里的矿机,在完成本职工作的同时可以领取区块奖励和交易的手续费。

一个区块链项目的受托人个数由项目发起方决定,bts中有101个超级节点,EOS中有21个超级节点。任何一个持币用户都可以参与到投票和竞选受托人这两个过程中。用户可以随时投票、撤票,每个用户投票的权重和自己的持币量成正比。投票和撤票可以随时进行,在每一轮(round)选举结束后,得票率最高的101(eos21)个用户则成为该项目的受托人,负责打包区块、维持系统的运转并获得相应的奖励。注意这里的超级节点一般是奇数,避免出现一半人赞成一半人反对的情况。

三、DPoS的伪代码实现

先来看一下DPoS的伪代码实现:

for round i //分成很多个round,round无限持续
   dlist_i = get N delegates sort by votes //根据投票结果选出得票率最高的N个受托人
   dlist_i = shuffle(dlist_i) //随机改变顺序
   loop //round完了,退出循环
       slot = global_time_offset / block_interval
       pos = slot % N
       if dlist_i[pos] exists in this node //delegate在这个节点
           generateBlock(keypair of dlist_i[pos]) //产生block
       else
           skip

可以看到,在每一轮循环里,系统会重新统计得票排名。在选出最高的N个超级节点里,系统采用先打乱顺序,然后受托人依此生产区块。一轮区块生产完毕后进入下一个周期。

四、知名 DPoS 项目

1. Bitshares

最早应用DPoS机制的项目,其DPoS机制里包含见证人(Witnesses)和受托人(Delegates), 见证人负责区块的打包,受托人负责系统参数的修改。

2. EOS

共识算法我DPoS + BFT, 有21个受托人。

3. Asch

共识算法为DPoS + PBFT, 有101个受托人, 目前正在开放竞选。



EOS的共识机制

概念:

超级节点:指负责收集、打包、验证交易信息到区块中的节点,拥有记账权。

备用节点:考虑日后发展21个超级节点可能不够用,需要社区成员投票增加超级节点,增加候选的节点,即为备用节点

EOS目前有21个超级节点和49个备用节点(20.18.7月),按官方要求,超级节点一台服务器成本目前需要七八十万。之所以是21个超级节点是因为BM在以前的两个项目bts和steemit中探索发现15个超级节点即可维持安全和效率之间的平衡,所以在EOS中它适当增加选取了21个超级节点。

eos1.0采用的是DPOS共识机制,2.0采用Dpos+BFT共识机制

(一)1.0中采用的共识机制,超级及节点轮流记账,每个区块产生后记账权顺延到下一个超级节点中,下一个节点负责打包新的区块,同时确认上一个区块的内容,当某一区块被超过2/3的超级及确认后,即确认为不可逆区块;

(二)2.0BFT是拜占庭容错算法,加上BFT,验证区块时不再按照超级节点顺序延续,而是让出块节点成为主节点,出块后同时向其他20个超级节点进行广播,并获得验证反馈,如果有超过2/3的节点验证通过,则区块即被确认为不可逆区块。引入BFT使EOS区块的确认速度显著提升,目前可以实现0.5s出块的速度,1s实现区块的不可逆转,为避免因出块太快而出现漏块的现象,EOS超级节点按照地理位置分布轮流成为主节点,尽可能减少超级节点间的网络延迟,同时规定每个超级节点连续生产6个块,且至少保证前几个成立。

EOS另一个主要特点是通货膨胀,EOS代币每年按照5%的总量递增,这点是和BTC等传统数字货币不一样的。另外,EOS无交易手续费,用户可以免费转账,超级节点是靠每年增发的EOS激励的。

你可能感兴趣的:(区块链技术)