【生意多】-免费发布分类信息
当前位置: 首页 » 新闻 » 商业与经济 » 正文

DPOS-( 代理权益证明)

放大字体  缩小字体 发布日期:2020-08-06 07:33:23    浏览次数:4
导读

  简单来理解,DPoS共识算法就是将PoS共识算法中的记账者转换为指定节点数组成的小圈子,而不是所有人都可以参与记账,这个圈子可能是21个节点,也有可能是101个节点,这一点取决于设计,只有这个圈子中的节点才能获得记账权。这将极大地提高系统的吞吐量,因为更少的节点也就意味着网络和节点的可控。  从名称上,我们

  简单来理解,DPoS共识算法就是将PoS共识算法中的记账者转换为指定节点数组成的小圈子,而不是所有人都可以参与记账,这个圈子可能是21个节点,也有可能是101个节点,这一点取决于设计,只有这个圈子中的节点才能获得记账权。这将极大地提高系统的吞吐量,因为更少的节点也就意味着网络和节点的可控。

  从名称上,我们也可以判断出DPoS与PoS共识是直接关联的。DPoS算法是根据当时PoW、PoS的不足而改进的共识算法,它的目的就是为了提高性能,也就是交易确认时间短。

  在PoS共识中,人们使用财产证明来“挖矿”,也就是说,这是任何人都可以参与的,只要你持有币,你就可以参与挖矿。

  但是我们可以看出,PoS并没有解决性能问题,在这里我们直接认为提高性能就是提高TPS,我们可以构造一个等式,:

  TPS表示区块链每秒能确认的交易数, transactions 是由区块大小block_size和平均每笔交易大小决定的,而区块大小受全网网络状态network_bandwidth 限制,也是由记账节点之间物理带宽witness_performance决定的。

  记账节点的个数witness_count直接决定了物理带宽的上限,因为记账节点数量越多,则对物理带宽要求越高,对网络的稳定性要求也越高。

  我们可以看到,要提高TPS,可以提升分子项,降低分母项,也就是增大区块大小block_size、提升记账节点网络带宽network_bandwidth、提升记账节点处理性能witness_performance,减小区块时间block_time、减小记账节点数量witness_count。

  分子项我们可以看到,它基本受限于物理资源的上限,目前工业水平制造的物理资源的使用上限基本就是整个项的上限了,所以可操作性不大。

  而分母项是由共识算法决定的,所以我们从区块时间,以及记账节点数入手,DPoS算法便正是从这两项着手的。

  那这会带来什么问题呢,首先无法确定记账节点的数量,其次无法确定记账节点之间的网络环境,记账节点数越多网络环境越复杂,这些不确定性会增大网络分区的概率,从而导致区块链分叉。

  如果我们事先规定好记账节点的数量,接着让全网所有节点可以投票决定哪些节点可以成为记账节点,这样就限制并减小了分母项witness_count,这个过程我们也称作投票选举。

  因为记账节点数量不多,那么我们可以在共识算法中可以规定出块时间为一个固定值,这个值可以很小,通过轮流出块的方式来进行记账。

  这两个原则确立了DPoS共识的基本特性,第一条放大了PoS共识使用者就是记账者的优点,第二点则规定了分叉时系统应该表现的行为。

  跟PoS不同的是,持有少数股份(权益)的节点也能行使他们的共识权了,只不过是以一种间接的方式。类似于股东代表大会,每当要决策公司大事(记什么账,谁来记账)的时候,全体股民(节点)依法行使投票权,选出自己心中的股东代表(可信账户),谁得票高谁当选。候选人可以去公开演讲拉票,获得足够多股民(节点)的信任,然后股东代表(被选中的可信节点)代表股民决策公司大事,股东代表的人数由系统决定,比如Bitshares为101个、Asch为51个,EOS为21个。

  1)DPoS机制中的股民(节点)根据自己持有的加密货币数量占总量的百分比(占股比例)来投票,不是一人一票;

  3)股东代表一旦无能、不作为、胡作为(提供的算力不稳定,计算机宕机、或者试图利用手中的权力作恶),将立刻被股民踢出整个系统,然后由其他后备代表顶上去;

  选举块生产者:任何持有Token的人都可以成为块生产者,都拥有投票权。每次投票前,候选BP可以给自己拉票(线下方式),每次投票超过50%代表有效,然后生成一个BP候选池,每次从BP候选池中选择排名靠前的21个节点作为BP,并对选出的21个BP随机排序。

  出块共识:21个BP按照随机排序进行出块,在每轮出块共识的过程中,BP如果不出块或者出现恶意行为,将被其他节点举报并接受惩罚(剥夺出块的权利),然后从候选池中再选择一个BP加入,一个BP出块成功,并且经过至少(2/3 + 1)个BP确认(至少15个),出块BP获取相应的奖励,然后轮流至下一个BP出块,如果轮询了10次或者一天,将重新进行投票选举。

  首先DPoS通过选举少数的BP来出块记账,确实从网络传输和确认时间上看,性能大幅提升,但是少量的BP数量牺牲了部分去中心化。有人说这些被选举的BP代表着“民意”,相比PoW的5大矿场和PoS的富人玩家,DPoS更加民主,更加去中心化,但是DPoS机制的设计并不能保证一定有足额的真实的区块生产者,因为一个人或一个实体,可能控制着多个节点。比如LBTC,就一度出现半数节点被鱼池一家控制。EOS在启动过程中,也疑似出现一个人虚拟出7个节点的事。

  其次,在真实的网络环境中,EOS实际的运行效率远没有吹的那么厉害,同时超级节点的治理全力和经济利益过于集中,如果他们串通,将进一步形成巨头龙垄断,这和区块链思想南辕北辙。

  再次,对于坏节点的处理存在诸多困难。社区选举不能及时有效的阻止一些破坏节点的出现,给网络造成安全隐患,同时在网络节点数量少的场景,选举的BP代表性不强。

  在DPoS共识算法中,区块链的正常运转依赖于见证人(Delegates),见证人是由全网节点投票产生的,见证人也是记账节点的实际控制人,相当于咱们选课代表,课代表帮我们整理作业。

  见证人在完成打包交易的同时可以领取区块奖励和交易的手续费,并且可以执行社区投票的提案,所以DPoS共识算法不仅仅是算法,而是一个包含了协作治理关系的共识机制。

  BM认为所有区块链实际是建立交易之上的确定性状态机。共识是在确定交易顺序,过滤无效交易的一个达成一致意见的流程。

  DPoS为了尽快确定交易顺序,过滤无效交易,所以规定了在正常情况下,所有记账节点轮流每3秒产生一个区块,轮到了某个记账节点出块时,必须在2秒内提交区块,否则就会错块。

  假设一直没有记账节点错过自己顺序,那么他们生产的链条势必是最长的链条,如果记账节点在非指定时间生产区块被认为是无效的,每经过一轮,所有节点轮流出块的顺序就会发生重新洗牌。

  在这种情形下,B节点只能在9秒内生产1个块,而大多数分支,由于数量多一倍,将预期能在9秒内生产2个块,诚实的2/3的大多数可以比小的那一部分创建一个更长的链条,由于原则二,DPoS可以抵御这种攻击。

  在DPoS白皮书中介绍了少数记账节点恶意或故障造成的分叉、网络分区情况下重复出块、少数记账节点重复出块、记账节点数量不足、多数记账节点的联合腐败等各种情况。

  在实际应用中,比特股中见证人是101人,EOS里是21人。比特股中见证人们赚取手续费,EOS里见证人们分享EOS的通胀收益。他们都是通过公开选举选出来的,选票就是大家手里的比特股或EOS。

  我们之前文章中提过的FLP和CAP定理,如果为了提升性能,即一致性的效率,势必会牺牲其他两项。这也会引出有关DPoS的一个争论:中心化问题。

  我们以比特股社区为例,每个人都可以尝试成为101个见证人节点中的一个,他们可以在社区里拉票,为社区做事,或者干脆用钱买很多bts。平时大家象征性地开个会,因为是轮流记账,各个节点之间竞争不大。

  但是不要忘记,区块链的发展非常依靠社区,这种方式势必会带来社区的中心化。虽然比特股中101个见证人负责记账,但总得有人指定发展方针,于是又设计出了11人理事会,这同样是通过选票选出来的。

  11人理事会有很高的权力,他们相当于11个超级节点,通过举手表决,甚至可以决定修改代码,而这11人理事会是比特股系统里的中心,也是规则的制定者。

  而DPoS似乎将这三权合并到了见证人和理事会手中。在EOS中,BM还制定了区块链宪法,要求所有记账节点必须遵守,所以也有人抨击这是具备了BM特色的去中心化。

  从某种角度来看,DPoS是社区治理加上共识算法,不再是单纯的技术共识,这是与PoW、PoS算法最大的不同。

  DPoS的基本假设是相信节点是好的,所以尽可能快速选择记账节点,而把问题发生后的修复过程推迟到投票中,可以说DPoS并不考虑拜占庭容错问题,把拜占庭容错推给了社区治理,而在社区治理上可归纳为一切皆投票。

  而现实生活中,很多情况下,投票并不能解决问题,比如投票人都是有惰性的,集齐所有人投票成本是很高的,如果记账节点没有上限,所有节点的投票都投给自己,DPoS系统就会退化成PoS系统。

  DPoS共识机制本身将“矿池”纳入系统内部,并把它们统称为见证节点,虽然不会出现中心化挖矿的风险,但是DPoS由于节点数不多,并且见证节点权力较大,可以认为DPoS本身就是带中心化思路的共识机制。

  今天早上八点跟爸妈去摄影楼拍照片,主题就是为30岁以上的夫妇照婚纱,我妈让我陪她选衣服。我们到了那里后,已经有好多...

  小时候,我也很善良,喜欢帮助那些遇到困难的人。但后来经历两件事后,便很少对陌生人行善了。 ——拾遗物语 第一...

  一场秋雨一场寒,今天这小雨淅沥沥一直下个不停,幸亏今早给孩子穿的长衣长裤,要不就得挨冻了(今早上还一直嚷嚷要穿夏季...

  1、ViewHolder模式,而且ViewHolder作为内部类使用时声明为static的 2、异步加载:耗时的操...

 
关键词: dpos
(文/小编)
打赏
免责声明
• 
本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:https://www.31duo.com/news/show-428698.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 

(c)2016-2019 31DUO.COM All Rights Reserved浙ICP备19001410号-4

浙ICP备19001410号-4