一文看懂Polkadot的治理机制:不仅是链上投票,还要自动执行
翻译:PolkaWorld 社区
“生活是行动,行动是变化和改变,因此除行动外的唯一选择是不行动、停滞和死亡。” —— 福克纳
所有的系统要么进化要么消亡,区块链也不能免于这一普遍规律。管理变更的容易度,即知道有人可以解决问题或添加新功能,是向中心化系统发展的趋势之一。但要在很长一段时间内保持可持续性,系统必须去中心化。切断贸易流的经济体、阻止移民的独裁政权、不接受新名词的语言都会消亡,或者已经消亡。
这些例子中的共同点是缺乏 代理机构 (注:指为人们发声的机构),无论是意识上的还是真实的。当人们没有办法组织或表达自己的声音,或者当他们认为自己的声音无力时,他们就会退出。对于一个中心化公司的产品而言,用户的代理机构可以是简单地倾听产品反馈,例如针对隐私问题的反馈。而对于一个民族国家,代理机构可能意味着拥有创造自己未来的自由。很多关于财富不平等的争论并非集中在不平等本身,而是体系是否被操纵。
影响变化取决于变化的是什么。虽然去中心化系统中的变化采取不同于中心化系统的形式,但人类已经进化出管理变化的方式。语言也许是有史以来最去中心化的系统,你可以通过各种方法改变它,既可以是规范性的方法(例如法语中的 l'académie ),也可以是描述性的方法,一门语言的用户控制并创建一个对单词含义的集体理解。规范性的变化通常遵循描述性的变化,例如,大多数英语翻译指南现在都允许使用 “单数的 they”。
在语言学中,「死去」的概念与语言的变化速度有关,而不是人们是否还在使用它。语言学家把拉丁语归为 “死去的语言”,尽管还有人在使用它。语言随着时间的推移而改变,因为人们发明或发现了他们想交流的新事物,人们想用新的方式表达情感,或者新一代的人挑战了长期存在的世界观。
区块链本身也是在挑战根深蒂固的世界观,而要做到这一点,区块链需要一种进化的方式。 这种进化已经发生了。区块链最初是作为一种代表金融交易的方式出现,但很快演变为零知识运作或抽象逻辑。没有人知道未来人们将如何使用区块链,但有一个新想法就推出一个新区块链的方式是不可持续的。
到目前为止,区块链治理框架面临着几个问题。 硬分叉 在分裂社区的同时,也将软件分裂开来,出于对安全性和技术采用的依赖,硬分叉创造了只有一条链涌现的零和游戏。一些人声称根本没有治理,群体可以根据像 “区块大小” 这样的参数来分叉网络,并且必须用宗教热情来捍卫他们的分叉。其他人则通过链下集体进行治理,一般通过电话或线下会议进行,这要么导致影子等级制度,只有少数不成文的人做出决定,要么缺乏做出决定的框架,这样的集体永远不会进步。
这些问题导致一些人实施代币投票协议来做出决定。代币投票是朝着透明、公开、链上治理迈出的良好的第一步,但由于投票率低,导致投票结果容易受到有比较多票数的人影响。在迄今为止的所有区块链中,治理还停滞在 做决定 上。即使集体投票或代币投票导致达成协议,他们也缺乏执行决定的手段,真正的权力仍在协议之外,例如矿工或者验证人。举例来说,一个国家举行选举并不意味着人们认为它是一个民主国家。这个制度必须包括执行选举结果的手段。这同样适用于区块链。如果没有约束力,仅用代币投票是不够的。
基于 Polkadot 打通所有区块链的主要目标,我们在设计 Polkadot 时让用户就可以在链上表达他们的想法,这样就可以在 不分叉的情况下 维护和更新系统。
集体的起源
利益相关者应该拥有终极控制权 ,这就是为什么 Polkadot 中的所有变更都要经过公投,但是利益相关者也应该有能力为这些决策选择代表。集体可以保护更多被动用户免受单个大型代币持有者突发奇想的影响。
波卡有两个与治理有关的特殊集体:理事会和技术委员会。通过满足某些标准,这两个集体可以调用特权函数,影响议案进入公投。Polkadot 使用 origins 表示特权。在大多数情况下,例如你的余额转账,origins 只是发送交易的帐户。但是 Polkadot 可以在某些条件下表示不同的 origins,比如让三分之二的集体提交相同的交易,并在获得提升的 origins 后调用函数。
作为特权函数的一个例子,提名权益证明(NPoS)系统具有一个取消排队中 slash 惩罚的函数[1],并且需要一个叫 “Slash Cancel” 的 origins,当至少 75% 的议会批准取消 slash 时,该 origins 就存在。
波卡在上线时有 13 个理事会席位,并逐步扩大到 23 个。议会选举使用批准投票方案,用户可以投票给他们支持的任何数量的候选人。选举使用与验证人选择相同的 Phragmen 过程,通过选择票数最高的来选择议员。Phragmen 是一种批准投票方法,用户可以选择所有已申请的候选人,而计票算法可以找到一组获得最多累积支持的候选人,组成最实至名归的议会。
议会选举还会影响用户投票选举议员的规则,系统会根据议员的用户投票排名领先程度给他们打分。得分最高的议员是主要议员。如果主要议员投赞成票,那么在议会投票期结束时,赞成票也将成为所有弃票者的投票。[2]
技术委员会不能自己提出建议,而是可以在较短的时间内快速跟踪现有的建议。如果一致通过,那么技术委员会可以跳过颁布执行延迟(enactment delay:在下面有详细说明),并在议案通过后立即执行。
虽然技术委员会没有选举产生,但其范围有限,而且快速受理的议案仍需经过公投。它们只能使一些关键的 bug 修复比正常情况更快,但无法控制网络。
议案:变革的种子
议案可以由 三种 方式开始,即:
- 来自公众,可以是任何一位 DOT 代币持有者
- 来自理事会,理事会由公开选举的 DOT 持有者组成
- 作为另一项议案颁布后的结果
全民公投
议案必须通过全民公投,所有利益相关者都可以发表意见。每隔 30 天,Polkadot 的治理系统会从待处理的理事会议案和公开议案中,自动轮流选择一项来进行公投,以确保公开议案有平等的机会进行公投。
在投票期结束时,Polkadot 计票并计算结果。如果议案获得通过,则 Polkadot 的逻辑会自动为其出具颁布时间表,通常是 30 天后,以便有时间让外部服务进行必要的调整,并为那些反对的人留出退出时间。快速受理公投(可能是紧急技术修复)可以立即生效。
所有公共议案都使用所谓的积极自适应投票人数偏见,这意味着,随着公投率的提高,通过该议案所需要的赞成票数的门槛会降低。由于更改协议会带来风险,因此该系统旨在支持现状。许多有争议的选票的结果(例如美国大选、英国退欧)可以在几天后就逆转。积极的偏见可以确保只有毫无争议的议案才能通过。即使使用自适应偏见的公投在选民投票率较低时也需要多数通过,但随着投票率的提高,通过的门槛将变成简单多数制(Simple Majority)。 这确保了有多数 stake 质押的始终可以控制网络的核心原则。
颁布执行
公投结束后,成功的议案将在颁布之前进入锁定期;被否决的议案将被直接丢弃。请记住,公投中的所有选票都有相关的立场。获胜方的代币将被锁定,并且在锁定期结束之前不能转让其代币。
经过颁布阶段后,一项成功议案的旅程便达到了其巅峰:自主颁布执行。在其他系统中,矿工或验证人通常具有单方面的权力,可通过拒绝升级软件来防止协议更改。Polkadot 并非如此。在颁布阶段结束时,Polkadot 将在没有任何人为干预的情况下执行该议案。
大多数议案的颁布都是通过更新区块链数据库中适当的存储项(例如更改验证人数量)。Runtime 的升级也一样(Polkadot 将 runtime 逻辑存储在其自己的数据库中,还包括对其进行更改的特权功能),但升级还依赖于 Polkadot 设计的另一个方面。从高层次看,Polkadot客户端包括两个部分:Host 主机和 runtime。主机包含执行 runtime 的所有基础结构,特别是 WebAssembly 执行环境。实现主机的方式有很多,实际上有几个团队在构建 Polkadot 主机。但是只有一个 runtime:因为 runtime 处于状态中,节点必须同意它,才能存在于同一条链上。这样,Polkadot 可以升级,而无需用户安装升级。
Kusama 是第一个以这种方式进行升级的区块链。自主颁布执行使 Polkadot 成为一个自生系统 —— 一个能够通过其交互作用和过程生成的系统 —— 就像是一种可自行编译的编程语言,或者进化中的生物体。更重要的是,链上的治理和自主颁布,使代币持有机构拥有表达其观点的工具,以及对其表达所产生影响的保证。外部团体不能仅仅因为他们不喜欢该建议就进行硬分叉。验证人必须验证协议中的交易,并且更改协议本身就是交易,验证人若手动阻碍颁布则违反了协议。
中继链之外的治理
此外,Polkadot 将质押和治理分离开来。其他 PoS 协议将转让权赋予于验证人,以代表其支持者投票。 在 Polkadot 中,提名一组验证人不会在公投中赋予验证人任何投票权,也不会让提名人无法自行投票 。验证人的存在是为了确保 Polkadot 的分片(平行链和平行线程)的状态转换的可用性和有效性,而不是控制中继链 runtime 的更改。
迄今为止,区块链上的大多数账户都代表个人或智能合约。因此,人们可能会默认用户和利益相关者是个人代币持有者。但是在 Polkadot 中,平行链是 Polkadot 安全性的主要使用者,它们在中继链上拥有自己的帐户,其中有锁定的代币。借助 Polkadot 的锁定系统,平行链可以具有自己的逻辑,从而决定如何使用锁定的代币在公投中投票。此外,平行链逻辑可以控制个人的 DOT 代币,但仍然允许他们通过平行链表达投票。[6]例如,没有自己的原生代币的平行链可以为用户提供 DOT 的存放地址,并据此发行原生代币以在平行链中使用。
除了中继链之外, 每个 Polkadot 的平行链还具有自己的 runtime ,并储存在自己的状态中。当验证人检查一个平行链区块,验证人根据该区块所属的平行链的唯一 runtime 执行该区块。但是对于验证人而言,平行链的 runtime 只是一个抽象的字节 “blob”,即一个称为 “execute block” 的 WebAssembly 函数。从这个意义上说,所有平行链看起来都是一样的。这里的神奇之处在于,每个平行链可以实现自己的治理逻辑来更新其 runtime,而完全不受中继链的影响。有能力保证独特且独立的区块链的安全,使 Polkadot 成为由多个主权系统组成的统一网络。
Polkadot 的治理系统提供了几种实现变更的机制,透明、开放的投票系统(可防止权利滥用,从而保护个人持有者)以及自主颁布的系统(可确保人们的决定具有约束力)。要了解有关 Polkadot 以及本文涵盖的主题(例如 Phragmen 选举和自适应仲裁)的更多信息,请访问 Polkadot Wiki。
[2] 理事会的议案有基于投票基数的通过门槛,例如 “23 分之 16”,因此弃票等同于投否决票。
[3] 在有争议的情况下,理事会只能取消议案一次,因此公众仍然可以通过对已取消的议案再次投票来推翻理事会。
[4] 这值得用一个加粗的脚注,因为在引言中,我使用了虚假民主的例子来提出一个论点,即一个人的投票必须具有一定的权力。区块链无法举行一人一票的选举,并且无法同时获得许可。区块链无法像民主国家那样理解公民身份。相反,区块链将自己的代币理解为与外界互动的主要手段。与此相反的是,区块链无法像国家一样,阻止某人成为其 “公民”,这意味着任何人都可以发表意见。当然,某些全球民主超级大国做出的决定会影响的你生活,但除非你是公民,否则不会为你提供对此事表达意见的手段。任何人都可以参与持有 Polkadot,该协议提供了使持币有意义的原语。
[5] 用户也可以不锁定地投票,但只能获得正常投票效力的 10%。
[6] 平行链不能用这些账户做的一件事就是参与质押。无法质押的机会成本就是租赁平行链插槽的成本。
我们为广大 Polkadot 社区的成员提供了许多了解最新情况的方式。你可以选择你最喜欢的媒介来了解。
加入Telegram 和 Riot 上的讨论,或订阅 Polkadot’s newsletter。在 Polkadot Lightpaper 和 Polkadot Wiki 中了解有关 Polkadot 的更多信息。想要在 Polkadot 上进行验证?那就加入 Riot 上 的 Polkadot’s validator lounge 吧。