区块链杂谈---dpos

时间:2024-04-13 19:32:12

最新在研究 EOS高吞吐量的杀手锏BFT-DPoS, 之前有分别简单的介绍dposbft,但是那都是概念的简单介绍,

如果不深入了解的话可能对dpos产生很多偏见误解。本章先来重点讲述下dpos,后面会有文章介绍bft和 BFT-DPoS。


本章目的:

    1. 深入了解dpos的工作机制原理

    2.  恶意攻击节点的惩罚机制

    3. 优点

    1. 什么是 DPoS

DPoS 即 Delegated Proof of Stake 译为股份授权证明。 最早于2013年由比特股Bitshares提出,目的为解决PoW和PoS机制的不足。

2. DPoS 基本原理

对于PoS机制的加密货币,每个节点都可以创建区块,并按照个人的持股比例获得“利息”。DPoS是由被社区选举的可信帐户(受托人,得票数排行前101位)来创建区块。为了成为正式受托人,用户要去社区拉票,获得足够多用户的信任。用户根据自己持有的加密货币数量占总量的百分比来投票。DPoS机制类似于股份制公司,普通股民进不了董事会,要投票选举代表(受托人)代他们做决策。

这101个受托人可以理解为101个矿池,而这101个矿池彼此的权利是完全相等的。那些握着加密货币的用户可以随时通过投票更换这些代表(矿池),只要他们提供的算力不稳定,计算机宕机、或者试图利用手中的权力作恶,他们将会立刻被愤怒的选民门踢出整个系统,而后备代表可以随时顶上去。

3.  DPos的处理机制

PoS 股份授权证明机制引入了“受托人”的角色。

DPoS 的运作机制如下:

  1. 所有持币者先选出受托人负责签署区块:选举过程比较类似由股东会选举出董事会(101人代表),代替股东会做出日常营运决策。授权董事会后,决策会更有效率 (相较于PoW每10分钟产生一个区块,DPoS每3秒钟即可产生一个区块。)

  2. 与PoW相同,DPoS的规则也是最长链胜出。其中每个受托人必须按照生产排程,轮流产生区块,拿一间工厂作为比方,假设排程排定A、B、C分别轮早、中、晚班生产,A在晚上是无法刷门禁卡进入厂房生产的,同样地,C在早班时段也是无法进厂房的。

    区块链杂谈---dpos

  3. 今天有一些恶意的节点生产了分叉区块,假设A、C都是诚实的节点,只有B节点是恶意的,由于B产生区块的速度(每9秒只能产生1个)慢于A、C合力产生区块的速度(每9秒产生2个),根据最长链胜出的规则,诚实的节点还是会胜出。

    区块链杂谈---dpos

  4. 同理,因为一个节点要产生重复两个区块的速度必定慢于诚实区块产生的速度,所以根据最长链胜出的规则,诚实的节点还是会胜出。

    区块链杂谈---dpos

  5. 如果今天A、B、C三个受托人的网络有段时间是碎片化、各自为政的呢?在短期内的确有可能三链并行,但一旦网络连结恢复,短链自然会向最长的链回归。

    区块链杂谈---dpos

因为受托可签署人数为奇数,所以两大派系势均力敌僵持不下的情况不会维持太久,最终势必会有其中一方的链更长。

4. 对恶意节点的惩罚

注册成为候选受托人需要支付一笔保证金,就像是参与民意代表选举前缴纳的保证金一样,一般来说担任受托人约两周后才可达到损益平衡,这促进了受托人的稳定性,确保至少会挖满两周的矿。

惩罚机制为:不按排程产生区块的节点将在下一轮被投票剔除,也会被没收之前缴纳的保证金。

DPoS是效率较PoW和PoS更高、产生区块的速度更快;

虽然恶意的节点将在下一轮投票被踢出,但单个恶意区块在短期仍有可能是有效的状态。

短期虽然可能存在恶意区块,但长期下来,可以透过受托人的自主选择来回归链条的有效性

假定现在总共有3个受托人A、B、C,D加入排程后,只要确认之前的区块中,有2/3以上个受托人遵循的链是哪条就可以了。


5. 优点

    

  1. 能耗更低。DPoS机制将节点数量进一步减少到101个,在保证网络安全的前提下,整个网络的能耗进一步降低,网络运行成本最低。

  2. 更加去中心化。目前,对于比特币而言,个人挖矿已经不现实了,比特币的算力都集中在几个大的矿池手里,每个矿池都是中心化的,就像DPoS的一个受托人,因此DPoS机制的加密货币更加去中心化。PoS机制的加密货币(比如未来币),要求用户开着客户端,事实上用户并不会天天开着电脑,因此真正的网络节点是由几个股东保持的,去中心化程度也不能与DPoS机制的加密货币相比。

  3. 更快的确认速度。每个块的时间为10秒,一笔交易(在得到6-10个确认后)大概1分钟,一个完整的101个块的周期大概仅仅需要16分钟。而比特币(PoW机制)产生一个区块需要10分钟,一笔交易完成(6个区块确认后)需要1个小时。点点币(PoS机制)确认一笔交易大概也需要1小时。


好了本章结束,下章见 go 实现简单的dpos。