我们常说 “波卡网络的发展由 DOT 持有人决定”,怎么决定?就是通过波卡精妙的治理机制。
虽然 “精妙” 在某种程度上意味着 “复杂”,但如果你是 DOT 持有人,并且想通过你的投票,对波卡网络的进程产生影响的话,那么你绝对应该花时间认真了解一下波卡的治理机制。而这篇文章就是很好的资料。
这篇文章属于 Polkadot Wiki(波卡百科)的 “治理” 部分,详细地介绍了波卡的治理机制、治理机构和投票计数方式。Polkadot Wiki 是由波卡官方撰写的波卡介绍文档,PolkaWorld 正在逐步翻译和连载该文档。
Polkadot 使用了一种复杂的治理机制,可以在所有利益相关者的最终要求下随时间优雅地进化。最终目标是确保大多数利益相关者始终能够控制网络。
为此,我们将各种新颖的机制结合在一起,包括存储在链上,并用平台中立的媒介语言(即WebAssembly)定义的无定形状态转移函数,以及一些链上投票机制,如自适应绝对多数阈值的公投和batchapproval投票。对协议的所有变更必须经过利益相关者的公投表决。
机制
为了对网络进行更改,方法是将活跃的代币持有者和理事会组成一个管理组,对网络升级进行决策。不管提案是由公众( DOT 持有人)还是理事会提出的,最终都要经过全民公投,让所有 DOT 持有者(按 stake 比例决定权重)做出决定。
以下步骤是 Polkadot 网络中的治理过程:
发起公投
对提案进行投票
统计[1]
为了更好地了解理事会是如何组成的,可以继续阅读下文 “理事会“ 部分的内容。
公投
公投是简单的、包容的、基于 stake 的投票方案。每一次公投都有一个与之相关的具体的提议,它在 runtime 中以特权函数调用的形式出现(这包括最强大的调用:set_code
,它能够切换出 runtime 的整个代码,实现一般需要“硬分叉”才能做到的功能)。它们是离散事件,有一个固定的时间段来进行投票,然后进行计数,如果投票被批准,则进行函数调用。公投总是二元的,你投票时唯一的选择是“同意”、“反对”或完全弃权。
可以通过以下几种方式来启动公投:
公开提交的提案;
理事会以多数票或一致通过的方式提出的提案;
作为前序公投执行的一部分而提交的提案;
技术委员会提交并经理事会核准的紧急提案。
所有的公投都有一个与之相关的执行延迟期。这是从公投结束到(假定提案获得批准)实施更改之间的一段时间。对于启动公投的前两种方式,这是一个固定的时间。对于 Kusama 来说,这是 8 天的时间,在波卡中,计划是 28 天。对于第三种类型,可以根据需要进行设置。
紧急提案涉及需要“快速跟进”的网络重大问题。这类提案会有一个较短的执行时间。
提出公投
公众公投
任何人都可以通过在一定时期内(区块数量)存入最低金额的 DOT 来发起一项公投。如果有人同意这个提议,他们可以存入相同数量的代币来支持它。获得最高绑定支持的提案将被选为公投议案。请注意,这可能与附议的绝对数不同,例如,三个帐户每个账户绑定 20 个 DOT 将超过 10 个帐户每个账户绑定一个 DOT。绑定的代币将在提案提交(即,提交表决)后释放。
理事会公投
理事会全员同意——当所有的成员都同意一个提议,它就可以转移到公投。这个公投将有一个负的投票率偏差。也就是说,stake 投票的数量越小,通过该提案所需的数量就越小。(见下文的”自适应投票人数偏见”)。
多数理事会成员同意 ——当只有简单多数的理事会成员同意时,公投也可以投票,但此时要多数同意才能通过。
任何时候都只能进行一个公投,除非有紧急公投。
投票时间线
每隔 28 天,将对一个新的公投进行投票(假设其中一个队列中至少有一个提案的话)。有一个议会批准的提案列队,和一个公众提交的提案队列。将要投票表决的公投在两个队列中的最高票投票的提案之间交替进行。
“最高票”提案是由其背后所绑定的 stake 数额决定的。如果轮到创建公投的给定队列中没有提案(为空),而另一个队列中有等待的提案,则另一个队列中最高票的提案将成为公投议案。
同一时间段内不能进行多个公投,紧急公投除外。紧急公投与定期公投(无论是公开的还是理事会提议的)同时举行,是唯一一次可以同时进行多次公投的时候。
对公投议案进行投票
为了投票,投票者通常必须把他们的代币锁起来,至少要在公投结束后的执行延迟期内锁定。这是为了确保投票结果需要一些最低限度的经济投入,并避免卖票行为。你可以完全不加锁定地投票,但你的投票价值只是普通投票的一小部分。同时,由于可以投入时间来锁定,持有少量 DOT 代币并不意味着持有人不能影响公投结果。你可以在自愿锁定(Voluntary Locking[2])中了解更多。
尽管 Logan 和 Kevin 的选票都比 Peter 多,但两人的锁定期都比 Peter 少,导致他们的投票权重也少。
统计 Tallying
根据不同的实体提出的议案,以及是否所有理事会成员都投票赞成,有三种不同的方案。我们可以参考下表。
另外,我们需要以下信息,并使用下面列出的公式之一来计算投票结果。例如,让我们以公共提案为例,应用绝对多数赞成
公式。没有严格的法定投票人数,但随着投票率的降低,所需的绝对多数席位会增加。
绝对多数赞成制
正投票率偏差
,要求在投票率低的情况下获得大量绝对多数赞成票,但当投票率增加至100%时,它其实就变成了最后一种简单多数的情况。
绝对多数反对制
负投票率偏差
,即需要在投票率低的情况下获得大量绝对多数反对投票,但是当投票率增加到100%时,它就变成了最后一种简单多数的情况。
简单多数制
多数票通过,票数的简单比较;如果赞成票多于反对票,那么该提案将获得通过,无论提案中有多少票。
要详细了解上述公式的来源,请阅读民主板块[3]。
由于上述示例是公众公投,因此将使用绝对多数赞成制
来计算结果。在投票率低的情况下,绝对多数赞成
需要更多赞成票
才能通过此公投,因此,根据上述结果,公投将被拒绝。此外,只有获胜选民的代币会被锁定。如果公投失败的选民认为投票结果将产生负面影响,则他们的代币可以转让,因此他们持有的投票代币不会进入锁定期。而且,优胜提案会在一定的执行期之后才自主执行。
自愿锁定 Voluntary Locking
波卡设计了一种称为自愿锁定
的方式,允许代币持有者声明愿意锁定自己的 DOT 多长时间来增加其投票权,因此,每个代币持有者的最大投票数将通过以下公式计算:
锁定期每翻倍一次,信念值乘数(conviction multiplier )会将投票乘数增加1。
根据创世 runtime,由锁定期带来的最大乘数设置为 6,并且在 Polkadot 上锁定期为 30 天,在 Kusama 上锁定期为 8 天。
自适应投票偏见
Polkadot 引入了“自适应投票偏见(Adaptive Quorum Biasing)” 概念,它作为一种调节的杠杆,在一项议案的投票率没有达到明显的支持或反对时,理事会可以使用它来改变有效的绝对多数,来让一项提案更容易或更难通过。