Polkadot链上治理机制浅析

趣链科技2020-11-18

治理阶段

Polkadot的治理分为三个阶段,分别为提案投票计票阶段

提案阶段

首先解释一下Polkadot的提案的特点。

Polkadot底层采用了Substrate框架,由rust语言编写,该框架将运行环境分为了Wasm和Native。

Native就是执行本地Rust代码,而Wasm就是执行编译好并存储于链上的WebAssembaly文件。

Polkadot的提案便是在运行时采用特权函数调用的形式修改Wasm代码,使得无需重启节点就可以进行实时更新(BitXHub中的验证引擎和这个设计有异曲同工之妙)。

可以通过以下几种方式启动提案:

  1. 由DOT持有人提交的公开提案。任何DOT持有人都可以通过抵押最少数量的DOT来提交公开提案,支持该提案的人需要抵押相同数量的DOT以认可该提案。公开提案存储在队列中,按照抵押的DOT数量进行排序,抵押的DOT数最多的提案会定期提交投票阶段。进入投票阶段后,抵押的DOT将被返还给持有人;
  2. 理事会提交的理事会提案。理事会提交的提案也存储在队列中,理事会全员同意一个提案或者大多数理事会成员同意一个提案时,该提案便可以提交到投票阶段;
  3. 作为前序公投执行的一部分而提交的提案;
  4. 技术委员会提交的紧急提案。一般是Polkadot网络出现了bug,需要紧急修复而提交的紧急提案。

投票阶段

每隔 28天,将会有一个提案进行定期全民投票。

这个提案来自DOT持有人提交的公共提案队列或者理事会提交的提案队列,在两个队列之间交替进行。

比如这一次的提案来自DOT持有人提交的公共提案队列,28天以后的下一个投票阶段,提案便是来自理事会提交的提案队列。一般情况下同一时间段内只能进行一个投票,除非有紧急提案,紧急提案可以与定期投票同时举行。

从投票结束到实施更改之间的时间称为执行延迟期。对于启动投票的前两种方式,该时间固定为 28 天。对于第三种方式,可以根据需要进行设置。紧急提案会有一个较短的执行时间。

投票者可以投赞成或反对票,或者放弃投票。投票者如果要对公共提案进行投票,需要锁定一定数量的DOT,并且通常至少要锁定至在公投票结束后的执行延迟期内。

投票的权重由锁定的DOT数量和锁定时间决定,因此,即使你拥有较少的DOT,但是如果锁定时间足够长,也可能拥有相对将高的权重;相反的,如果锁定时间很短,即便锁定了较多DOT,权重也不一定较高。

采用这种机制是为了确保需要最小限度的经济投入并防止卖票行为,同时确保了长期致力于该制度的投票者有更大的发言权。

计票阶段

根据不同的实体提出的议案,以及是否所有理事会成员都投票赞成,Polkadot提供了三种不同的计票方案。

如下所示:

实体 计票方案

公开提案 正投票率偏差

理事会(全票赞成) 负投票率偏差

理事会(多数赞成) 简单多数制

下面来解释一下这三种方案。首先,定义四个术语:

术语 含义

approve 赞成票数

against 反对票数

turnout 投票的代币总数

electorate 网络中的DOT发行总数

▲ 正投票率偏差

该方案使用以下公式来表示,只有当不等式成立的时候,投票才通过。可以看到,在投票的代币总数较少的时候,需要得到绝大多数的赞成票数才能通过投票;当投票的代币总数越来越多,直至接近网络中的DOT发行总数时,赞成总数只需要超过半数就可以投票通过,此时演变成了简单多数制方案(见下文)。

▲ 负投票率偏差

该方案使用以下公式表示,该方案和上面的正投票率偏差正好相反:当投票的代币总数较少时,仅需要少量的赞成票数即可通过投票;当投票的代币总数达到网络中的DOT发行总数时,需要超过半数才能通过投票,此时也演变成了简单多数制方案。

▲ 简单多数制

该方案用以下公式表示,该方案显而易见,即为简单的少数服从多数思想。

理事会

理事会是Polkadot治理机制中一个重要的角色。

由于大部分持有DOT的用户都不是活跃的用户,不会参与投票,为了代表这部分用户,Polkadot成立了理事会。它是一个由多个参与者组成的实体,每个参与者由链上账户代表。

理事会主要执行以下治理任务:

提出重要的提案

理事会提出的候选提案,需要获得绝大部分理事会成员的赞成票,并且没有成员投反对票。一个成员只能对一个提案投一次反对票,如果有成员对提案投了反对票,则需要进入冷静期,如果在冷静期之后重再次获得了大多数成员的赞成票,则该提案不可以再被否决。获得理事会成员多数票赞成的提案,将以简单多数制的投票方案进行投票。获得理事会成员全票赞成的提案,采用负投票率偏差的机制进行投票。

取消危险或恶意的提案

超过理事会三分之二成员的同意,可以取消投票。如果取消投票的争议很大,无法获得三分之二多数同意,那么将由全体利益相关者即DOT持有人来决定该提案。

理事会成员选举

Polkadot理事会将有23个席位,每个月进行一次投票选举,所有DOT持有人均可自由注册竞选理事会成员的资格,并可以给自己支持的候选人进行投票,投票权与其所持股份成正比。

这里的投票方式和我们之前文章中讲过的NPOS选举验证人的方式一样,有兴趣的朋友可以点击回顾之前的文章。

Polkadot治理机制优缺点

传统的区块链一般采用链下治理的方式,拿以太坊举例,由以太坊基金会在github上收集改进提案,然后由生态参与者进行讨论表达观点,之后由开发团队决定是否采纳提案。如果采纳,将对代码进行更新和升级,最后矿工节点决定是否使用新的代码以支持该提案。

和上面这种链下治理相比,Polkadot的链上治理机制有几个明显的优点

  1. Polkadot采用链上存储的WebAssembly代码,使得矿工节点无需重启便可以使用新的提案,从技术上避免了硬分叉。而链下治理的区块链,如果最后部分矿工或者节点运营商不支持提案,则不会使用更新后的代码,这样便出现了硬分叉。
  2. Polkadot采用的链上治理每一个阶段都有明确的时间。而链下治理的时间节点不定,github上可以看到很多以太坊多年前的提案还处于“draft”状态。
  3. 每一个DOT持有人都可以参与Polkadot治理,社区治理权在DOT持有人手中。而采用链下治理,最终决定权在于项目的核心开发者,存在中心化问题。

但是,除了以上几个优点, Polkadot的治理机制还是存在以下几个问题

  1. 大部分DOT持有人仅仅只是参与投资,不会参与社区治理,实际参与社区治理的用户数量不多,导致投票率不高。
  2. 虽然治理最终决定权不在项目的开发者,但是持有大量DOT的用户可以影响投票结果,也降低了链上治理的去中心化程度。

总结

总的来说,Polkadot采用的链上治理有很大的创新,其技术上的先进性以及机制上的新颖性使得它和传统的链下治理相比有很大的优势,解决了很多链下治理机制存在的问题,也更符合区块链所追求的理念。

虽然它依然不是很完美,但是相信随着区块链技术的不断发展,新的技术和机制必将产生,来将这些问题一一解决。

参考文献

[1]https://wiki.polkadot.network/docs/en/learn-governance

[2]J. Burdges, A. Cevallos, P. Czaban, R. Habermeier, S. Hosseini, F. Lama, H. K. Alper, X. Luo, F. Shirazi, A. Stewart, and G. Wood. Overview of polkadot and its design considerations. arXiv preprint arXiv:2005.13456, 2020

作者简介

周蓉

数据网格实验室BitXHub团队

研究方向:区块链账本互操作技术