用户登陆
正在加载
波卡的 Phragmén 顺序算法 -1 |Polkadot Wiki
PolkaWorld · 2021-03-15 10:52:46

“本文摘自波卡官方文档 Polkadot Wiki 的 Phragmén 篇,全文共三节,这是第一节。Phragmén 算法在波卡的 NPoS 验证人选举和理事会选举中都有应用。

什么是 Phragmén 顺序算法?

Phragmén 顺序算法是 19 世纪 90 年代 Edvard Phragmén 提出的一种多方共赢的选举方法。下面这段内容摘取自 Phragmén 文献中对 Phragmén 顺序算法目的的总结 :

“Phragmén 算法试图解决的问题是从范围较大的候选人中选出一组给定的人数。Phragmén(这里指人名)在多成员选区的议会选举中讨论了这一点。当然,同样的问题也可能发生在地方选举中,但在很多其他情况下,例如在一个组织中选举董事会或委员会时,也会出现同样的问题。”

NPoS: 验证人选举

在 NPoS 方案中使用 Phragmén 顺序算法来选举验证人。根据验证人自己的质押和提名人给他们的投票。它还试图在每一轮选举后平衡验证人之间的权重。由于验证人在 Polkadot 中得到的报酬是相等的,所以摊开每个验证人背后的质押很重要。Polkadot 在选举中优化三个指标:

  1. 最大限度地提高质押总额
  2. 最大限度地增加最小验证人的质押额
  3. 最小化节点池中的质押的方差

链下的 Phragmén 算法

在大量的提名人和验证人的情况下,Phragmén 算法是一个困难的优化问题。Polkadot使用 off-chain workers 计算链外结果,并提交一个交易来提议出胜出者的结果。在链外执行此计算的原因是为了保持 6 秒的恒定出块时间,并防止在验证人选举时每个 era 结束时的长出块时间。

由于某些用户操作,如更改提名,会改变 Phragmén 选举的结果,系统禁止在 era 变化之前的最后一个 session 调用这些函数,下面这些函数是禁止调用的:

bondExtraunbondwithdrawUnbondedvalidatenominatechillpayoutStakersrebond

理事会选举

在理事会选举机制中也采用了 Phragmén 算法。当你投票给理事会成员时,你可以最多选择 16 个不同的候选人,然后质押一些绑定的 DOT 作为你的投票权重。Phragmén 将在每次选举中进行一次竞选,以确定担任理事会职位的最佳候选人,然后再选出最优秀的候选人,以尽可能平衡他们背后的选票权重。

这对节点运营者意味着什么?

Phragmén 算法是在后台运行的,并不需要你的额外操作。了解它的工作原理是好的,因为在选举结束后,你提名的所有 stake 并不是都会在你提名的验证人那里。提名人可能会提名几个不同的验证人,并相信这些验证人可以很好地操作节点。你可以使用offline-phragmén[1]脚本在新的选举之前预测验证人选举的结果。

原文链接:https://wiki.polkadot.network/docs/en/learn-phragmen[2]翻译:PolkaWorld 社区参考链接:[1]offline-phragmén: https://link.zhihu.com/?target=https%3A//github.com/paritytech/substrate-debug-kit[2]https://wiki.polkadot.network/docs/en/learn-phragmen: https://wiki.polkadot.network/docs/en/learn-phragmen

免责声明:
本网站所提供的所有信息仅供参考,不构成任何投资建议。用户在使用本网站的信息时应自行判断和承担风险。币界网不对用户因使用本网站信息而导致的任何损失负责。用户在进行任何投资活动前应自行进行调查和研究,并谨慎决策。币界网不对用户基于本网站信息做出的任何投资决策负责。用户在本网站发布的任何内容均由其个人负责,与币界网无关。
免责声明:本网站、超链接、相关应用程序、论坛、博客等媒体账户以及其他平台和用户发布的所有内容均来源于第三方平台及平台用户。币界网对于网站及其内容不作任何类型的保证,网站所有区块链相关数据以及其他内容资料仅供用户学习及研究之用,不构成任何投资、法律等其他领域的建议和依据。币界网用户以及其他第三方平台在本网站发布的任何内容均由其个人负责,与币界网无关。币界网不对任何因使用本网站信息而导致的任何损失负责。您需谨慎使用相关数据及内容,并自行承担所带来的一切风险。强烈建议您独自对内容进行研究、审查、分析和验证。
s_logo
App内打开