DPoS 的诞生
DPoS (Delegated Proof of Stake) 股份授权证明机制,是一种区块链的共识算法, 2014年4月由Bitshares 的首席开发者 Dan Larimer (现为EOS CTO)提出并应用。当时Dan观察到比特币系统共识算法POW的一些问题:比如矿池导致算力越来越集中、电力耗费过大等。所以他提出了一种更加快速、安全且能源消耗比较小的算法,这就是后来的DPOS。DPOS是一种基于投票选举的共识算法,有点像民主大会,持币人选出几个代表节点来运营网络,用专业运行的网络服务器来保证区块链网络的安全和性能。DPOS机制中,不需要算力解决数学难题,而是由持币者选出谁说生产者,如果生产者不称职,就有随时有可能被投票出局,这也就解决了POS的性能问题。
DPoS是PoS的一种,继承了PoS的部分优缺点。EOS和Dash的设计有些类似,是”代议制”,普通PoS是直接民主,人类历史证明,代议制要比直接民主来的好,但在币的治理上是否也是如此,还需要时间观察。Dash作为MasterNode币种,治理相对来说在PoS币种中是比较成功的,而对EOS的治理观点则是两极分化的。相比普通PoS,DPoS的中心化程度急剧提升.
DPoS的选举机制
在DPoS共识算法中,区块链的正常运转依赖于受托人(Delegates),这些受托人是完全等价的。受托人的职责主要有:
1. 保证节点的正常运行;
2. 收集网络里的交易;
3. 节点验证交易,把交易打包到区块;
4. 节点广播区块,其他节点验证后把区块添加到自己的数据库;
5. 带领并促进区块链项目的发展;
受托人的节点服务器相当于比特币网络里的矿机,在完成本职工作的同时可以领取区块奖励和交易的手续费。
一个区块链项目的受托人个数由项目发起方决定,一般是101个受托人。任何一个持币用户都可以参与到投票和竞选受托人这两个过程中。用户可以随时投票、撤票,每个用户投票的权重和自己的持币量成正比。投票和撤票可以随时进行,在每一轮(round)选举结束后,得票率最高的101(一般为101,也可以是其他数字,具体由区块链项目方决定)个用户则成为该项目的受托人,负责打包区块、维持系统的运转并获得相应的奖励。
选举的根本目的,是通过每个人的投票选举出社区里对项目发展和运行最有利的101个用户。这101个用户的服务器节点既可以高效维护系统的运转,而他们也会贡献自己的能力促进区块链项目的发展,这有点类似于我国的’人民代表’制度(但是周期更短、效率更高)。通过这种方式,既达到了去中心化的选举共识,又保证了整个系统的运行效率和减少能源浪费。
在DPOS机制下,算法要求系统做三件事:
第一,随机指定生产者出场顺序;
第二,不按顺序生产的区块无效;
第三,每过一个周期洗牌一次,打乱原有顺序;
而且,DPOS允许所有矿池每三秒钟轮换一次,并且其他人已被安排在后续进程中,于是,没有人可以在预设位置外生产区块。如果一个块生产者这么做了,就可能被投票出局。
这意味着,生产者之间没有争夺,也不会遗漏区块,每三秒会有一个区块
POW机制和POS机制虽然都能有效地解决记账的一致性共识问题,但是现有的比特币POW机制纯粹依赖算力,导致专业从事挖矿的矿工群体似乎已和比特币社区完全分隔,某些矿池的巨大算力俨然成为另一个中心,这与比特币的去中心化思想冲突。
POS机制虽然考虑到了POW的不足,但依据权益结余来选择,会导致首富账户的权力过大,可能支配记账权。
股份授权证明(Delegated Proof of Stake, DPOS)的出现正是基于解决POW机制和POS机制的这类不足。
DPOS与POS原理相同,主要区别在于节点选举若干代理人,由代理人验证和记账。其合规监管、性能、资源消耗和容错性与PoS相似。类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。
BitShares社区首先提出了DPoS机制。
比特股是一类采用DPOS机制的密码货币,它期望通过引入一个技术民主层来减少中心化的负面影响。
比特股引入”见证人”的概念,见证人可以生成区块。每个持股人都可以投票选举见证人,得到总票数前N(通常为101)的候选者可以当选见证人。见证人的候选者名单每个维护周期(1天)更新一次。
见证人随机排列,每个见证人按序有2秒的权限时间生成区块,若见证人在给定时间内无法生成区块,区块生成权限交给下一个时间片对应的见证人。
DPoS这种设计使得区块生成更快捷,也更节能。投票选出的N个见证人的权利对等,如果它们宕机或者作恶,持股人可以随时投票更换见证人。
DPOS机制涉及如下几个问题:
1. 持有股票
直接在交易平台上购买比特股即可。
2. 成为代表
成为一名代表,你必须在网络上注册你的公钥,分配到一个32位的特有标识符,该标识符会被每笔交易数据的”头部”引用。
3. 授权选票
每个钱包有一个参数设置窗口,在该窗口里用户可以选择一个或更多的代表,并将其分级。
一般情况下,用户不会创建特别以投票为目的的交易,因为那将耗费他们一笔交易费。但在紧急情况下,某些用户可能觉得通过支付费用这一更积极的方式来改变他们的投票是值得的。
4. 保持代表诚实
每个钱包将显示一个状态指示器,让用户知道他们的代表表现如何。
如果他们错过了太多的区块,那么系统将会推荐用户去换一个新的代表。如果任何代表被发现签发了一个无效的区块,那么所有标准钱包将在每个钱包进行更多交易前要求选出一个新代表。
5. 抵抗攻击
在抵抗攻击上,因为前100名代表所获得的权力权是相同的,每名代表都有一份相等的投票权,并且,如果当前记账节点不记账则由下一个记账人记账。
因此,无法通过获得超过1%的选票而将权力集中到一个单一代表上,毕竟,同时收买100个代表的难度很大。
因为有100名代表,可以想象一个攻击者很难对每名轮生产区块的代表依次进行拒绝服务攻击。
而且,由于事实上每名代表的标识是其公钥而非IP地址,使得确定拒绝服务攻击目标更为困难,这种特定攻击的威胁很容易被减轻。
6. 代表竞选
比特股还设计了另外一类竞选,代表竞选。
选出的代表拥有提出改变网络参数的特权,包括交易费用、区块大小、见证人费用和区块区间。
若大多数代表同意所提出的改变,持股人有两周的审查期,这期间可以罢免代表并废止所提出的改变。
这一设计确保代表技术上没有直接修改参数的权力以及所有的网络参数的改变最终需得到持股人的同意。
DPOS机制遵从如下几条基本原则:
1.持股人依据所持股份行使表决权,而不是依赖挖矿竞争记账权。
2.最大化持股人的盈利。
3.最小化维护网络安全的费用。
4.最大化网络的效能。
5.最小化运行网络的成本 (带宽、CPU等)。
所以,概括来看:
1.DPOS机制相比于POS大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。
2.在一定程度上解决拒绝服务攻击和潜在作恶节点联合作恶问题。
3.但是,DPOS机制还是依赖于代币,然而很多商业应用是不需要代币存在的。
4.另外,DPOS并没有解决首富作恶的问题。
参考资料:
[1] 邹均,区块链技术指南[M].北京:机械工业出版社,2017