股份授权证明机制 - CybexDex/cybex-node-doc GitHub Wiki
简单的说,DPoS就是由生态系统选举产生的见证人来创建区块。任何股东都可以在CYBEX社区内拉票,只要支持票数超过一定占比,就可以"代表(Delegate)"整个网络。如果节点产生的算力不稳定、出现频繁宕机或其他情况,股东可以随时通过投票让备用节点顶替它们的位置。
如何理解DPoS机制
DPoS符合了利益最大化、成本最小化的设计逻辑,即:
- 持币人投票选举出块节点;
- 最大化持币人的盈利;
- 最小化维护网络安全的费用;
- 最大化网络的效能;
- 最小化运行网络的成本。
如何实现DPoS机制
任何共识机制必须回答的问题包括但不仅限于:
- 谁应该产生下一个更新块来应用于数据库?
- 下一个块何时应该生产?
- 什么交易应该包括在该块?
- 协议的变化如何应用?
- 竞争的交易历史应该如何解决?
在DPoS算法中,所有见证人(节点)是完全等价的,它们的职责主要有:
- 提供一台服务器节点,保证节点的正常运行;
- 节点服务器收集网络里的交易;
- 节点验证交易,把交易打包到区块;
- 节点广播区块,其他节点验证后把区块添加到自己的数据库。
CYBEX的见证人数量由所有股东决定(CYB持有人),每个股东都可以给任意数量的节点投票。当任意节点获得超过1%的票数(占生态系统总量的比例)时,就有资格成为见证人(节点)。每个节点轮流产生区块,每个节点都完成一次出块后,该轮次结束。所有节点将打乱顺序重新开始新的一轮,每轮的顺序都是在执行前确定的。在见证人工作的同时,股东可以随时进行投票和撤票。活跃见证人的名单会在每个维护间隔(1天)内,基于票数统计结果更新一次。
如果某个节点在其时间段内没有生成区块,那么系统会跳过这段时间,由下一个节点生成下一个区块。如果所有节点都没能生成区块,那么CYBEX就会停止运作,股东也无法投票选出新的见证人。这种事件发生的概率很低,为了防止这种情况的出现,股东可以通过投票挑选较多的见证人。
所有人都可以通过观察见证人的参与率来监测网络的健康状况。为了不落选,节点的正常运行时间一般需要维持在99%以上。一旦见证人的参与度低于一定水平,导致交易确认时间延长,CYBEX基于其监控机制,可以在故障发生后1分钟内发现问题。