查看原文
其他

Polkadot 的治理机制:不仅是链上投票,还要自动执行

Joe Petrowski PolkaWorld 2020-11-11

加入 PolkaWorld 社区,共建 Web 3.0!

“生活是行动,行动是变化和改变,因此除行动外的唯一选择是不行动、停滞和死亡。” —— 福克纳


Polkadot 及其平行链都需要随着时间改变来与时俱进,我们在设计 Polkadot 时让它拥有透明和精妙的治理过程,不仅可以批准或者拒绝这些改变,而且还要自动执行它们


所有的系统要么进化要么消亡,区块链也不能免于这一普遍规律。管理变更的容易度,即知道有人可以解决问题或添加新功能,是向中心化系统发展的趋势之一。但要在很长一段时间内保持可持续性,系统必须去中心化。切断贸易流的经济体、阻止移民的独裁政权、不接受新名词的语言都会消亡,或者已经消亡。


这些例子中的共同点是缺乏代理机构(注:指为人们发声的机构),无论是意识上的还是真实的。当人们没有办法组织或表达自己的声音,或者当他们认为自己的声音无力时,他们就会退出。对于一个中心化公司的产品而言,用户的代理机构可以是简单地倾听产品反馈,例如针对隐私问题的反馈。而对于一个民族国家,代理机构可能意味着拥有创造自己未来的自由。很多关于财富不平等的争论并非集中在不平等本身,而是体系是否被操纵。


影响变化取决于变化的是什么。虽然去中心化系统中的变化采取不同于中心化系统的形式,但人类已经进化出管理变化的方式。语言也许是有史以来最去中心化的系统,你可以通过各种方法改变它,既可以是规范性的方法(例如法语中的 l'académie ),也可以是描述性的方法,一门语言的用户控制并创建一个对单词含义的集体理解。规范性的变化通常遵循描述性的变化,例如,大多数英语翻译指南现在都允许使用 “单数的 they”。


在语言学中,「死去」的概念与语言的变化速度有关,而不是人们是否还在使用它。语言学家把拉丁语归为 “死去的语言”,尽管还有人在使用它。语言随着时间的推移而改变,因为人们发明或发现了他们想交流的新事物,人们想用新的方式表达情感,或者新一代的人挑战了长期存在的世界观。


区块链本身也是在挑战根深蒂固的世界观,而要做到这一点,区块链需要一种进化的方式。这种进化已经发生了。区块链最初是作为一种代表金融交易的方式出现,但很快演变为零知识运作或抽象逻辑。没有人知道未来人们将如何使用区块链,但有一个新想法就推出一个新区块链的方式是不可持续的。


到目前为止,区块链治理框架面临着几个问题。硬分叉在分裂社区的同时,也将软件分裂开来,出于对安全性和技术采用的依赖,硬分叉创造了只有一条链涌现的零和游戏。一些人声称根本没有治理,群体可以根据像 “区块大小” 这样的参数来分叉网络,并且必须用宗教热情来捍卫他们的分叉。其他人则通过链下集体进行治理,一般通过电话或线下会议进行,这要么导致影子等级制度,只有少数不成文的人做出决定,要么缺乏做出决定的框架,这样的集体永远不会进步。


这些问题导致一些人实施代币投票协议来做出决定。代币投票是朝着透明、公开、链上治理迈出的良好的第一步,但由于投票率低,导致投票结果容易受到有比较多票数的人影响。在迄今为止的所有区块链中,治理还停滞在做决定上。即使集体投票或代币投票导致达成协议,他们也缺乏执行决定的手段,真正的权力仍在协议之外,例如矿工或者验证人。举例来说,一个国家举行选举并不意味着人们认为它是一个民主国家。这个制度必须包括执行选举结果的手段。这同样适用于区块链。如果没有约束力,仅用代币投票是不够的。


基于 Polkadot 打通所有区块链的主要目标,我们在设计 Polkadot 时让用户就可以在链上表达他们的想法,这样就可以在不分叉的情况下维护和更新系统。



集体的起源

Polkadot 有几种方式让用户表达他们对改变的想法。除了方便用户提出更改之外,Polkadot 还为用户提供了一种结构,以形成具有独特权限的小组。集体背后的动机来自于在其他去中心化的协议或由单个投票人控制的应用程序中看到投票。这些决定包括一些敏感的话题,比如终止应用程序。


利益相关者应该拥有终极控制权,这就是为什么 Polkadot 中的所有变更都要经过公投,但是利益相关者也应该有能力为这些决策选择代表。集体可以保护更多被动用户免受单个大型代币持有者突发奇想的影响。


波卡有两个与治理有关的特殊集体:理事会和技术委员会。通过满足某些标准,这两个集体可以调用特权函数,影响议案进入公投。Polkadot 使用 origins 表示特权。在大多数情况下,例如你的余额转账,origins 只是发送交易的帐户。但是 Polkadot 可以在某些条件下表示不同的 origins,比如让三分之二的集体提交相同的交易,并在获得提升的 origins 后调用函数。


作为特权函数的一个例子,提名权益证明(NPoS)系统具有一个取消排队中 slash 惩罚的函数[1],并且需要一个叫 “Slash Cancel” 的 origins,当至少 75% 的议会批准取消 slash 时,该 origins 就存在。



理事会

理事会是一个链上的集体,其存在是为了代表利益相关者。它通过提出重要的改变和取消毫无争议的危险议案来做到这一点。任何 DOT 代币持有者都可以参加议会竞选,但他们将赌上自己的声誉,承诺在网络中诚信行事。


波卡在上线时有 13 个理事会席位,并逐步扩大到 23 个。议会选举使用批准投票方案,用户可以投票给他们支持的任何数量的候选人。选举使用与验证人选择相同的 Phragmen 过程,通过选择票数最高的来选择议员。Phragmen 是一种批准投票方法,用户可以选择所有已申请的候选人,而计票算法可以找到一组获得最多累积支持的候选人,组成最实至名归的议会。


议会选举还会影响用户投票选举议员的规则,系统会根据议员的用户投票排名领先程度给他们打分。得分最高的议员是主要议员。如果主要议员投赞成票,那么在议会投票期结束时,赞成票也将成为所有弃票者的投票。[2]


议员可以提出向治理系统发送议案。在这个例子中,一位议员提出了一个新的验证人数量。如果有足够多的议员投票赞成,那么最终将举行一次公投。


议会保持自己的议案队列,与公众分开,并投票决定下一次公投的优先议案。除了正常议案和特别理事会议案(如取消 slash 惩罚)外,理事会还可以访问 Polkadot 的财政部。财政部是一个通过通货膨胀以及收取部分交易费用和 slash 收入来积累资金的账户。理事会可以提出并通过议案,将这些资金用于开发者、社区参与或更复杂的活动,如使用桥和去中心化交易所来用自己的  DOT 换取其他代币。


当理事会对自己的议案进行表决时,选票是按成员而不是按质押的 DOT 数量计算的。这使得大股东很难在波卡的治理中行使不正当的权力。他们或许能够进入议会,但他们不能左右低投票率的公投。


除了正常的议案和财政部运作外,理事会还可以从另外两个特殊来源(origins)发送交易。首先,如果理事会一致通过一项议案,那么该议案在公投中的通过门槛将更低。第二,三分之二多数可以决定取消被认为是危险的议案。一个危险的议案可能是恶意的,也可能只是在一个已经公投的议案中发现的一个漏洞。[3]



技术委员会

技术委员会是波卡防止软件错误的最后一道防线。与理事会不同的是,技术委员会不是通过投票选出的,而是由理事会根据参与开发 Polkadot 协议的正式规范或客户端的情况选出的。


技术委员会不能自己提出建议,而是可以在较短的时间内快速跟踪现有的建议。如果一致通过,那么技术委员会可以跳过颁布执行延迟(enactment delay:在下面有详细说明),并在议案通过后立即执行。


虽然技术委员会没有选举产生,但其范围有限,而且快速受理的议案仍需经过公投。它们只能使一些关键的 bug 修复比正常情况更快,但无法控制网络。 



议案:变革的种子

所有的治理决策都是由一个议案开始,并经过大众公投后成立。一项议案可以是用户无法接触的一组特权函数的任何一个。其中一些很简单,例如设置帐户余额。还有一些则涉及设置系统参数,例如验证人的数量。最强大的函数甚至可以改变 Polkadot 本身的逻辑。


议案可以由三种方式开始,即:


  • 来自公众,可以是任何一位 DOT 代币持有者

  • 来自理事会,理事会由公开选举的 DOT 持有者组成

  • 作为另一项议案颁布后的结果


无论议案是因哪种方式产生的,都仅从特权函数调用的哈希开始。实际的议案(哈希的原像)必须相对于其大小单独收取服务费。这种分离可防止用户在议案中占用链数据库中大量空间而被攻击。议案者可以在链下提供原像(preimage),供代币持有者讨论。使用这种方法,即便是资金很少的用户也可以提出大量议案,只要他得到一些较大的代币持有者的支持,让他能够注册其原像,并且拥有足够将议案上链的存款。        


具有三个议案的公共议案队列。每个议案都有哈希、存款和议案人。用户可以在链上注册包含实际议案信息的原像,也可以在链下讨论并等待。在议案执行之前,必须有人注册原像。


可以同时存在任意数量的公共议案,但是在每个投票期间只有一个议案可以进行公投,以避免冲突,例如:一个议案将验证人名额设置为 500,另一个议案将验证人名额设置为 600。用户可以通过在其锁定的代币来 “支持” 他们认同的议案,然后治理逻辑将选择最受支持的议案进入公投。



全民公投

Polkadot 的核心原则是,多数 stake 质押(stake 定义为发行的代币总数)始终可以控制网络。区块链是经济工具,它理解不了民主的一人一票制。[4] 想要在系统方向上产生影响的人必须积极参与其中。


议案必须通过全民公投,所有利益相关者都可以发表意见。每隔 30 天,Polkadot 的治理系统会从待处理的理事会议案和公开议案中,自动轮流选择一项来进行公投,以确保公开议案有平等的机会进行公投。


尽管 Polkadot 具有代表机构,但所有变更仍必须通过公投。公投在公众和理事会的议案之间交替进行,但是技术委员会和理事会可以共同努力,以加快关键技术升级的决议速度。


一旦一轮公投开始,用户即可开始投票。但是与其他区块链不同的是,投票并不直接等于账户中代币的数量。每一次投票都带有一定的信念,要切实投入成本。默认情况下,对通过的议案进行投票的用户必须锁定一些代币,直到议案颁布为止。这种锁定使他们能够留在网络中并承担投票结果,而那些在公投中失败的人则可以自由退出。但是,用户可以通过锁定较长时间来增加其投票效力,从而增加他们对结果的影响程度。锁定时间每增加一倍,用户的投票效力就会增加,最高可达到帐户余额的六倍(即锁定 32 个颁布周期)。[5] 此机制的存在,是为了确保持币数量少但意见坚定的用户可以在公投中表达自己的信念。


在投票期结束时,Polkadot 计票并计算结果。如果议案获得通过,则 Polkadot 的逻辑会自动为其出具颁布时间表,通常是 30 天后,以便有时间让外部服务进行必要的调整,并为那些反对的人留出退出时间。快速受理公投(可能是紧急技术修复)可以立即生效。



自适应投票人数偏见

以去中心化的名义,Polkadot 允许任何人提出新的想法,但这具有一定的波动性。中心化系统的好处之一是没有人可以提出新的想法。自适应投票人数偏见(Adaptive quorum biasing)允许 Polkadot 在促进有效的变化的同时避免波动


所有公共议案都使用所谓的积极自适应投票人数偏见,这意味着,随着公投率的提高,通过该议案所需要的赞成票数的门槛会降低。由于更改协议会带来风险,因此该系统旨在支持现状。许多有争议的选票的结果(例如美国大选、英国退欧)可以在几天后就逆转。积极的偏见可以确保只有毫无争议的议案才能通过。即使使用自适应偏见的公投在选民投票率较低时也需要多数通过,但随着投票率的提高,通过的门槛将变成简单多数制(Simple Majority)。这确保了有多数 stake 质押的始终可以控制网络的核心原则。

自适应投票人数偏见根据公投中的投票率来调整通过的门槛。对于公共议案,投票率越低,通过的门槛越高,有利于维持现状并防止一个大型代币持有人左右低投票率投票。经理事会一致批准的公投的门槛相反。当投票率接近 100% 时,所有的门槛都收敛到简单多数制。


理事会的议案通常使用简单多数的投票方式。由于该议案已由理事会审查,因此 Polkadot 接受用简单多数的投票方式做决定带来的风险。唯一带有消极偏见的全民公投是理事会全票通过的。想要否决这些公投,需要绝大多数公众的反对票,但还是那个规则,随着投票率的增加,它会变成简单多数制



颁布执行

到目前为止,一项议案已经从某个地方(无论是理事会还是公众)出发,并通过了 Polkadot 的投票系统,在该系统中,利益相关者批准或拒绝了该议案。治理结构必须让当权者负责其决策,而 Polkadot 通过两种机制来做到这一点:代币锁定自主颁布执行


公投结束后,成功的议案将在颁布之前进入锁定期;被否决的议案将被直接丢弃。请记住,公投中的所有选票都有相关的立场。获胜方的代币将被锁定,并且在锁定期结束之前不能转让其代币。


经过颁布阶段后,一项成功议案的旅程便达到了其巅峰:自主颁布执行。在其他系统中,矿工或验证人通常具有单方面的权力,可通过拒绝升级软件来防止协议更改。Polkadot 并非如此。在颁布阶段结束时,Polkadot 将在没有任何人为干预的情况下执行该议案。



系统升级

最强大的治理行为是 runtime 升级。区块链的 runtime 包含其存储的信息类型,以及让用户可以访问来更改这些数据的逻辑。它就是用户界面、状态转换功能、业务逻辑、DNA。


大多数议案的颁布都是通过更新区块链数据库中适当的存储项(例如更改验证人数量)。Runtime 的升级也一样(Polkadot 将 runtime 逻辑存储在其自己的数据库中,还包括对其进行更改的特权功能),但升级还依赖于 Polkadot 设计的另一个方面。从高层次看,Polkadot客户端包括两个部分:Host 主机和 runtime。主机包含执行 runtime 的所有基础结构,特别是 WebAssembly 执行环境。实现主机的方式有很多,实际上有几个团队在构建 Polkadot 主机。但是只有一个 runtime:因为 runtime 处于状态中,节点必须同意它,才能存在于同一条链上。这样,Polkadot 可以升级,而无需用户安装升级。


Kusama 是第一个以这种方式进行升级的区块链。自主颁布执行使 Polkadot 成为一个自生系统 —— 一个能够通过其交互作用和过程生成的系统 —— 就像是一种可自行编译的编程语言,或者进化中的生物体。更重要的是,链上的治理和自主颁布,使代币持有机构拥有表达其观点的工具,以及对其表达所产生影响的保证。外部团体不能仅仅因为他们不喜欢该建议就进行硬分叉。验证人必须验证协议中的交易,并且更改协议本身就是交易,验证人若手动阻碍颁布则违反了协议。


链上治理和自主颁布使代币持有机构具有表达其观点的工具,以及对其表达所产生影响的保证。



中继链之外的治理

本文重点介绍了中继链的治理。但是,治理与质押(staking)等其他系统一起运行,质押系统锁定代币以保护网络。用户将同一代币出于多种目的锁定,这意味着同一帐户的代币绑定用于参与 NPoS,但仍在全民公投中投票。议案的颁布执行延迟时间为 30 天,比质押解绑期限的 28 天要长,因此对公投结果不满意的质押者可以停止质押并解除绑定。


此外,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。



注释

[1] 当系统检测到引起 slash 的行为时,会将这些 slash 放入队列中并在稍后实行,所以有机会在被检测到之后、被实行之前取消某项 slash。为什么 Polkadot 不立即实行 slash 是另一个故事了,会在别的文章里讲到。


[2] 理事会的议案有基于投票基数的通过门槛,例如 “23 分之 16”,因此弃票等同于投否决票。


[3] 在有争议的情况下,理事会只能取消议案一次,因此公众仍然可以通过对已取消的议案再次投票来推翻理事会。


[4] 这值得用一个加粗的脚注,因为在引言中,我使用了虚假民主的例子来提出一个论点,即一个人的投票必须具有一定的权力。区块链无法举行一人一票的选举,并且无法同时获得许可。区块链无法像民主国家那样理解公民身份。相反,区块链将自己的代币理解为与外界互动的主要手段。与此相反的是,区块链无法像国家一样,阻止某人成为其 “公民”,这意味着任何人都可以发表意见。当然,某些全球民主超级大国做出的决定会影响的你生活,但除非你是公民,否则不会为你提供对此事表达意见的手段。任何人都可以参与持有 Polkadot,该协议提供了使持币有意义的原语。


[5] 用户也可以不锁定地投票,但只能获得正常投票效力的 10%。


[6] 平行链不能用这些账户做的一件事就是参与质押。无法质押的机会成本就是租赁平行链插槽的成本。



了解最新消息

为了跟上 Polkadot 上持续的治理变化,请加入 Polkadot Direction Riot 频道。


我们为广大 Polkadot 社区的成员提供了许多了解最新情况的方式。你可以选择你最喜欢的媒介来了解。


加入Telegram 和 Riot 上的讨论,或订阅 Polkadot’s newsletter。在 Polkadot Lightpaper 和  Polkadot Wiki 中了解有关 Polkadot 的更多信息。想要在 Polkadot 上进行验证?那就加入 Riot 上 的 Polkadot’s validator lounge 吧。


原文:波卡官方博客

https://polkadot.network/polkadot-governance/ 

翻译:PolkaWorld 社区


  • 欢迎学习 Substrate: 

    https://substrate.dev/

  • 关注 Substrate 进展:

    https://github.com/paritytech/substrate

  • 关注 Polkadot 进展:

    https://github.com/paritytech/polkadot

更多内容:


波卡的共识是什么?| 波卡百科

Substrate 智能合约是什么?

Gavin Wood:代码背后的波卡


扫码关注公众号,回复 “1” 加入波卡群

关注 PolkaWorld

发现 Web 3.0 时代新机遇


点个 “在看” 再走吧!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存