科普 | 浅析Polkadot链上治理机制
治理阶段
Polkadot的治理分为三个阶段,分别为 提案 、 投票 、 计票阶段 。
提案阶段
首先解释一下Polkadot的提案的特点。
Polkadot底层采用了Substrate框架,由rust语言编写,该框架将运行环境分为了Wasm和Native。
Native就是执行本地Rust代码,而Wasm就是执行编译好并存储于链上的WebAssembaly文件。
Polkadot的提案便是在运行时采用特权函数调用的形式修改Wasm代码,使得无需重启节点就可以进行实时更新(BitXHub中的验证引擎和这个设计有异曲同工之妙)。
可以通过以下几种方式启动提案:
- 由DOT持有人提交的公开提案。任何DOT持有人都可以通过抵押最少数量的DOT来提交公开提案,支持该提案的人需要抵押相同数量的DOT以认可该提案。公开提案存储在队列中,按照抵押的DOT数量进行排序,抵押的DOT数最多的提案会定期提交投票阶段。进入投票阶段后,抵押的DOT将被返还给持有人;
- 理事会提交的理事会提案。理事会提交的提案也存储在队列中,理事会全员同意一个提案或者大多数理事会成员同意一个提案时,该提案便可以提交到投票阶段;
- 作为前序公投执行的一部分而提交的提案;
- 技术委员会提交的紧急提案。一般是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的链上治理机制有几个明显的 优点 :
- Polkadot采用链上存储的WebAssembly代码,使得矿工节点无需重启便可以使用新的提案,从技术上避免了硬分叉。而链下治理的区块链,如果最后部分矿工或者节点运营商不支持提案,则不会使用更新后的代码,这样便出现了硬分叉。
- Polkadot采用的链上治理每一个阶段都有明确的时间。而链下治理的时间节点不定,github上可以看到很多以太坊多年前的提案还处于“draft”状态。
- 每一个DOT持有人都可以参与Polkadot治理,社区治理权在DOT持有人手中。而采用链下治理,最终决定权在于项目的核心开发者,存在中心化问题。
但是,除了以上几个 优点 , Polkadot的治理机制还是存在以下几个 问题 :
- 大部分DOT持有人仅仅只是参与投资,不会参与社区治理,实际参与社区治理的用户数量不多,导致投票率不高。
- 虽然治理最终决定权不在项目的开发者,但是持有大量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 团队
研究方向:区块链账本互操作技术