BitShares官方dpos概述的英文介绍:http://docs.bitshares.org/bitshares/dpos.html
关于BitShares的DPoS共识的概述请参考:股份授权证明(DPOS)概述
关于BitShares的DPoS共识的详细介绍请参考:BitShares的DPoS共识
关于BitShares的DPoS共识的竞争链共识补充说明请参考:DPOS共识算法 - 缺失的白皮书
关于BitShares的DPoS共识之代码实现概述请参考:BTS的DPoS共识之代码实现概述
1. 股份授权证明(DPoS)
股份授权证明(DPoS: Delegated Proof of Stake)是一种保护加密货币网络的新方法。 DPOS试图解决在比特币上的传统的工作量证明(PoW:Proof of Work)系统出现的,以及在Peercoin和NXT上的权益证明(PoS: Proof of Stake)系统出现的问题。 DPOS实现了一个技术民主层来抵消中心化的负面影响。
2. 背景
DPoS通过使用证人(通常称为代表)减轻了中心化导致的潜在负面影响。 总共有N个证人(witness)签署了这些区块,这些证人由那些使用网络进行每次交易的节点进行投票选出。 通过使用一种去中心化的投票流程,DPOS在设计上比同类系统更民主。 DPOS并没有彻底消除对信任的需求,而是要确保那些代表整个网络的受信任的签名区块的人节点要正确无误和没有偏见。 此外,每个被签名的块必须有一个先前区块的被可信任节点签名的证明。 DPOS不需要等待一定数量的不可信节点验证交易之后才能确认交易。
通过减少确认的要求,DPoS算法大大提高了交易的速度。 通过网络(投票)决定,通过特意将信任托付给最可信的潜在区块签名节点,通过剔除不必要的人为障碍(encumbrance)来加快区块签名过程。 与PoW和POS相比,DPOS允许将更多的交易包含在一个区块中。 DPOS技术使得加密货币技术在交易处理速度上可以与像Visa和万事达这样的中心化结算系统在同一个级别上竞争。 这些结算系统管理着世界上最流行的电子支付系统。
在DPoS中仍然存在中心化现象,但它是受到控制的。 与其他保护加密货币网络的方法不同,DPOS系统中的每个客户端都有能力决定信任谁,而不是信任那些资源集中最多的节点。 DPOS让网络获得一些中心化的大量优势,同时又保持一定的去中心化。 DPoS通过公平选举过程使得任何人都有可能成为大多数节点委托的代表。
3. DPoS背后的理性逻辑
- 给股东一种将投票委托给一个关键节点的方法(这种节点不控制货币,以便他们可以挖* 矿)
- 最大化股东获得的分红
- 最大限度地减少保证网络安全所支付的金额
- 最大限度地提高网络的性能
- 最大限度地降低运行网络的成本(带宽,CPU等)
3.1 股东拥有控制权
DPOS的基本特征是股东仍然保留了控制权。 如果股东保持控制,那么系统是去中心化的。 由于投票可能存在缺陷,当涉及到公司的共同所有权时,DPoS是唯一可行的方法。 幸运的是,如果你不喜欢运营公司的人,你可以卖掉(你的股份),这种市场反馈会导致股东比公民投票更理性。
每个股东都可以投票选择某节点代替他们来签署区块(如果您愿意,也可以作为代表)。 任何能获得1%或更多选票的节点都可以加入董事会。所有的代表组成“董事会”,代表以轮流(round-robin)的方式获得轮次(turn)。如果其中一名董事错过了他们的轮次,客户会自动将改变他们的投票剔除他。 最终,这些董事将被退出董事会,其他人将加入。董事会成员会收到少量代币作为奖励,用来激励在线时间和参与竞选。每一个董事还必须支付一笔小额的保证金,其数量相当于他们生产一个区块而收取的平均工资的100倍。 为了盈利,董事必须超过99%的在线时间。
3.2 矿池挖矿作为授权工作量证明
那和比特币有什么不同呢? 使用比特币,用户必须选择一个矿池,每个池通常具有10%或更多的哈希算力。 这些矿池的运营者就像矿工委任的代表。 比特币希望用户在矿池间切换以避免算力过度中心化,但总体而言五个主要池控制网络,并且如果其中一个矿池出了问题,就需要用户进行手动干预。 如果一个矿池出现故障,那么直到它恢复之前,区块的生产率都会等比例地下降。由哪个矿池挖矿成为了一个政治问题。
3.3 不随机从所有用户中选择代表的理由
- 普通用户大部分时间不在线。
- 攻击者将获得与其股份成比例的控制权,而没有任何同等节点复审。
- 由于没有挖矿,以去中心化的方式生成随机数是不可能的,因此攻击者可以控制随机数的生成。
4. 可扩展性
假设每笔交易的验证成本(validation cost)和手续费(fee)都是固定的,那么实现去中心化的数量也是有限的。 假设验证成本恰好等于手续费,则网络完全中心化,只能负担得起一个验证节点。 假设手续费是验证成本的100倍,网络可以支付100个验证节点。
绿色是收入,黄色是利润,蓝色是成本
像Nxt和Peercoin那样的系统,如果他们打算让每个人都能成为验证者并且按比例赚取费用,那么系统将会收取很高的费用。 这意味着,对于Nxt和Peercoin来说,除非其费用高于我们的DPOS链,否则任何少于1%股份的节点都不能通过验证区块获利, 如果这些链假设100名代表过于中心化并开始宣传他们有1000名验证人,那么他们的费用一定是DPOS系统的10倍。 如果这样的链增长到比特币的规模(10亿美元),那么只有那些拥有价值100万美元的货币的节点才能获利,并且大多数人会认为这是一个精英俱乐部。 如果他们将成为验证节点最低的股份减少到1000美元,那么他们的收费将比DPOS高10,000倍。
DPOS的开发人员假定每个少于验证所要求的数量得节点都不会参与。 还假定财富是“合理的”分配。 很明显,除非备用链条的费用异常高昂,否则只有少数拥有足够的股粉的节点才能通过验证获利。
总之,对于POS来说,有效工作的唯一方法就是委派。 对于Nxt系统,他们可以通过某种方式集中他们的股份,并最终这个系统将以DPOS前期赞同投票的方式以不固定代表数量结束。 以矿池挖矿的方式代表实际上不会收到任何收入,因为验证费用将消耗绝大部分交易费用。
最终结果是,去中心化的成本与验证人的数量成正比,而这个成本无法消除。 在规模上,这些成本将使任何不支持DPoS的系统中心化。 这种中心化应该从一开始就作为系统的一部分来设计,以便用户能够适当地管理和控制,而不是以某种特别的方式演变为意想不到的后果。
5. 代表(Delegates)的作用
- 证人(witness)是允许生产和广播区块的权威。
- 生成区块的过程包括收集P2P网络中的交易并使用证人的私钥进行签名
- 在前一个区块(一轮结束时)的结尾随机分配(洗牌:shuffle)证人在下一轮(round)的轮次
6. 如何成为代表
7. 投票算法
7.1 我如何获得“选票?”
- 说服别人给你的证人节点投赞同票
- 当另一个用户向你(也可能是其他)的代表投了赞成票时
- 用户可以为多个证人提供赞成票。 结果,所有赞成的证人都得到了投票
- 说服代理人(代表他们的追随者投票)为你投票
7.2 为什么只使用赞同票(upvotes)?
- 只提供赞成票,并允许每个股份多次投票,称为赞同投票(Approval Voting) ,与旧的代表团投票相比具有几个优势。
- 不需要反对票(downvotes ),这不仅简化了用法,而且减少了代码和复杂性。
7.3 “投票”如何统计?
每隔一次维护间隔(maintenance interval),所有选票都会重新计算,相应的结果将生效。
7.4 有反对票(anti-vote)吗?
永远不会。 当发现emski的攻击后 ,开发者决定使用赞同投票 。
8. 遏制攻击
- 如果选择不产生区块,证人有被踢出的风险,并且他们在将来会失去有保证的收益。
- 一个不诚实的代表只有在他们肯定能从中赢得一些东西时才会选择放弃生成区块
- 如果一个彩票只支付了50%的奖金(另外50%给慈善机构),那么这个不诚实的代表最可以做的就是保本。
- 证人不能签署无效区块,因为该区块也需要其他证人的确认
9. 确保网络安全需要多少证人?
这完全掌握在股东手中。 如果多数票数为50名证人,则将使用50名证人。 如果股东只投20票,那就20人吧。 证人最少数为11人。