Polkadot创新NPoS共识下的Staking经济_Polkadot:polkadotstingray乐队

去年年底参加Polkadot在北京聚会后,就一直在期待官方关于Staking这块的经济与治理计划,虽然最终方案还没有定下,但是Web3地研究文档看起来相當完整了,整个设计让我有惊艳的感觉,看了很多以PoS為共识的项目,关于Staking经济的设计都不尽相同,新项目总会学习过往项目,这次Polkadot带来的NPoS是具备相当创新程度,且一定程度解决PoS的现有问题。Polkadot可以写的东西还很多,这篇文章将会主要环绕Staking部分与NPoS公式挑选验证人节点的方法,这两个方面与持币人与节的收益有非常密切的关系如果对Polkadot的背景没有了解的朋友可以先看我过去的文章,我就直接开始主题了。简单为大家复习一下PoS共识项目的完整出块过程1.团队运行节点2.注册成为验证人3.Staking过程4.选举验证人5.打包交易、广播交易、验证人确认一连串过程6.获得奖励从持币人的角度,更简单理解PoS

持币人拥有以PoS为共识的代币Moon,将Moon进行Staking委托给喜欢的节点,节点代持币人进行出块并获得奖励,奖励依照Staking比例进行分发。。上面提到的是一般的PoS项目计算奖励的做法Polkadot提出了NPoS,初衷是为了解决过去PoS运行后,遇到的问题,因为奖励与Staking量正相关造成富有节点更富有,代币分配趋向中心化。NPoS里最终奖励结果不是依据Staking量,而是依据每个被选出节点确实出块的工作量计算,NPoS将解决一部分大节点因为Staking量大获得更多奖励的问题,但同时也损害了一些大节点利益。PS:个人意见一般项目在初期不一定适合这样的做法,这是一个博弈过程,Polkadot是一个明星项目,他认为大多数的人愿意参与到网路中,即使超过一定Staking量的节点不会获得如预期那么多的收益,他们还是愿意贡献Polkadot究竟是怎么做到的呢?

NPoS既然有别于传统PoS项目,不是Staking权重越高出块概率越高,我们就要详细说明下NPoS选举验证人的算法。非常详细的文档在Web3的研究中,另外有一篇medium文章“HowNominatedProof-of-StakewillworkinPolkadot”,我参考了里面的举例NPoS的共识算法历史

NPoS参考了当时19世纪末,一个瑞典数学家LarsEdvardPhragmén提议的选举方法,当时瑞典的国会席位都是被主流党派占据,通过他的算法能更公平的让席位分配是和投票的比例有更高的联系,小党派能够获取过去没有办法获得的席位,Polkadot团队认为两者在设计理念上有相似之处,改良后就是现在看到的NPoS。NPoS的选举人算法,我们都知道区块链这个分布式系统是由众多分散各地的节点来维护,在PoS共识里大部分的链为了保证一定效率及安全下,会限制一定数量的验证人进行出块,也就是没有被选上的验证人就只是备选出块人,而NPoS就是从一群验证人中选取出正式验证人,Polkadot里把一群正式验证人成为选举人委员会。选举人算法有三大客观目标

1.平衡Balance一旦选举人委员会确定后,会将持币人Nominators的Staking量尽可能平均分配给每个选上的选举人Validators。PS:持币人是可以选择多个选举人的,所以存在系统重新分配空间2.最大支持Support选出一个选举人委员会,委员会中的选举人Validators收到的Staking量要尽可能贴近总持币用户Nominators的Staking量。3.公平代表FairRepresentation选出一个选举人委员会,其中持币人Nominators的投票权不会被过度代表,也不会被低估代表。PS:持币人可以选择多个节点,公平代表最简化是,每个持币人对应到的节点至少有一个会被选出,加上现实条件后有些节点会被淘汰,但尽可能保证拥有一定Staking权重的持币人可以至少对应到一个节点。基于这三大原则筛选出来的验证人群可能有多个,最终系统会挑选出一组最合理的Committee进行出块,看起来很复杂很懵吧,我最开始也绕了很久,接下来会搭配下面持币人选举验证人的例子,大家会更加清晰的理解,建议先快速看过这个例子,然后阅读过程中搭配上面三个选举人算法的客观目标思考,最后再仔细看一次例子。这是Medium上官方人员的举例假设有5个持币人,5个节点,要从中选出4个节点进行出块,为了简化模型先忽略节点自己拥有Staking量下面是选举结果的举例第一张图并不符合公平代表的目标,因为图中第一个持币人拥有10Dot的权重,相比第五个持币人只有3Dot的权重,最终却没有对应到任何他支持的节点,不符合公平代表目标拥有一定Staking权重的持币人至少对应到一个节点。第二张图符合公平代表的目标,有些人可能会质疑为什么E节点选上了,而B节点没有选上,这和接下来会举例的重新分配算法相关,这边简单理解,图中第二个持币人同时支持了3个节点,系统只要保证他支持的节点至少有一个被选举上就好,同时保持第五个持币人也有支持的节点E,对于Polkadot这样的选举结果是可能之一。第三张图符合公平代表的目标,有些人可能会质疑这个与第二张图产生矛盾,目标是尽可能让每个持币人最少要有一个支持节点被选上,那第5个持币人支持的节点没有被选上,因为整个系统只需要选出4个节点,所以第五个Staking权重低的持币人支持的节点没有选上的结果是可能之一。以下是上述两个符合公平原则的选举人委员会可能结果,确立选举人委员会后系统还要经过Staking权重重新分配Polkadot系统会在每次从中选出一个更公平分配且具备安全性的结果,这个例子中选择右边因为它平均分配的更好,右边的节点中平均最低都拥有了9的Staking权重。以上就介绍完Polkadot的选举算法了,上面的逻辑非常的绕,背后的数学更是复杂,官方的举例是在一个简单的情况下,真实情况如果放大到100个节点,每个持币人Staking权重都不同,同时又委托给多个节点,就会相当相当复杂,大家可以多思考几遍,依照上面提到的三大目标,每一个目标都可以当作标准检验一遍,就能够更明白。NPoS这个选举算法动态分配持币人Staking权重,还基于一些规则挑选出最后的选上的节点,对现有的PoS生态中造成了一些不同。1.在持币人可以选择多个节点下,大节点不努力争取社区支持,也有机会在算法下被排除在外2.在平衡staking量目标下,小且没有资本的节点更有利,因为只要社区中越多人选择它,在系统分配Staking量的机制下,选上出块可以获得奖励概率更高3.在平衡staking量目标下,大节点利润相对被压缩,大节点需要思考是否将自己的币委托出去,能获得更多利润4.持币人更有动机去选择小节点,利润更高,因为奖励是依据被选上节点的工作量计算的,只要持币人支持的小节点成功选上进行出块,小节点上累积的Staking的权重没有那么高,不同持币人依据委托给小节点的Staking比例分奖励,相对于委托给大节点,委托给小结点利润更高Polkadot到底想解决现有PoS什么问题

1.一部分不可避免地中心化问题2.低手续费未来不会无限地吸引staking量,因为收益是看节点工作量3.持币人可以通过挑选不同节点最大化自己利益,同时促进去中心化Polkadot在整个机制其实非常复杂,我可能也有漏掉的地方,怎么攻击这样的机制,包挂选举算法到底有没有漏洞可以钻,都需要专业人士投入大量精力区专研,这边就不进行讨论。这是解读Polkadot机制的第一篇,未来正式参数与测试网出出来后也会给大家更多的例子。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:0ms0-3:798ms