通过本文,你会了解到:1、典型区块链网络的治理机制有哪些;2、什么是链上治理;3、Kusama网络的治理机制。
通过本文,你会了解到:
人类社会的进步,除了依赖技术的创新,还与社会的治理息息相关。治理体现在社会生活的方方面面,比如:
治理的表现形式多种多样,有些是明文规定的法律条文,有些是隐性的社会规则。基本上,有人参与的活动就存在治理,小到院子里的小朋友们如何轮流滑滑梯,大到一个企业、国家如果分配输入、划分职责。
合理、透明、高效的治理,能提高社会协作的效率,进而提高生产效率和大众的幸福感;试想一下,如果你生活在一个没有治理或者治理不合理的环境里,那么社会的协作将会混乱不堪,很难出现高效的生产活动,公平和平等也就无从谈起。
去中心应用独特的价值吸引了越来越多的人来使用,区块链作为去中心应用的一种典型的技术实现方式,拥有着众多的利益相关方,如:
那么,已有的区块链系统是如何协调这些利益相关方、实现治理的呢?
比特币由中本聪完成最初版本的开发并上线运行,紧接着第二年,中本聪选择淡出人们的视线,将源代码的控制权移交给社区的开发者。比特币协议的修改需要通过BIP(Bitcoin Improvement Proposals),任何人都可以提交,但是在真正实现某项修改之前,需要充分考虑其安全性和可行性。BIP的生命周期如下图所示,
BIP的成功实施,需要经历这样几个阶段,
大致共识是指,对反对的意见进行充分地讨论,直到大多数人认为反对意见是不正确的。
提出(Proposed),在这个阶段,BIP拥有了可运行的功能代码,并且制定了部署计划;
完成(Final),线上的比特币网络节点部署了这一修改,并且达到了一定的标准,通常需要有全网95%以上的算力触发此项修改。
随着比特币网络的发展,大的数字货币交易所、矿池(矿工)、投资机构在网络的运行上拥有越来越高的话语权,下图展示了当前一周内的算力分布。
在2017年的隔离见证(SegWit,BIP141及后续相关的BIP)升级过程中,各方势力的角逐如同一场没有硝烟的战争,最终分叉成为两个网络。在这一过程中,比特币的治理机制体现地淋漓尽致,既有大的算力集团可以“一手遮天”,也有核心开发者提交多个BIP来应对各种变数,还有持中立态度的部分用户和交易所。很显然,这样的治理效率低,不够透明,也谈不上真正地去中心。
另外一个典型的区块链网络是以太坊,它拥有和比特币网络类似的治理机制,通过EIP(Ethereum Improvement Proposals)来管理新特性的实施和部署,不同的是,以太坊的核心开发者在社区拥有极高的声誉和影响力,以太坊基金会的控制力也更强,EIP的实施从流程来看更加清晰,如下图所示。
从2016年的The DAO攻击事件,可以感受到以太坊网络的治理氛围,在各种社交频道都能看到针对这次攻击及其解决方案的激烈讨论,最终以硬分叉的形式将被黑客盗取的ETH退还给投资人,以太坊基金会及大部分的核心开发者投入到分叉后新的以太坊链,也有少部分的矿工、开发者选择坚守在原有的那条链上。
通过上面两个例子,我们看到了治理在区块链生态里的重要作用,并且有越来越多的团队发现比特币这一类的链下治理(Off-Chain Governance)的不足,并尝试使用链上治理(On-Chain Governance)的方式,来提高治理的效率、透明度,从而进一步实现去中心的目标。Kusama就是这样一个采用链上治理的区块链网络。
治理的核心体现在,当出现意见分歧时,哪一方拥有更高的权力,以及如何做出最终的决定。在Kusama网络里,权力属于KSM token(下面简称为ksm或token)的持有人,最终的决定则由民主投票产生,参与投票的token数量越多、锁定时间越长,权力就越大。Kusama网络的治理概览如下图,
Kusama网络采用了三院制(Tricameral)的治理结构,
民主公投时可使用的投票机制有,
其中绝对多数的具体比例和投票率相关,投票率越高,绝对多数所要求的比例越低,比如投票率只有50%时,绝对多数的比例接近80%,当投票率为100%,绝对多数的比例是50%+1。过半数赞成是指无论投票率的高低,赞成票都只需要满足50%+1即可。
得益于Substrate提供的无分叉升级方式,Kusama网络上任何runtime逻辑的修改,都可以直接通过链上升级来实现。这些修改必须提交议案进行公投,如果公投通过,网络会在一段时间之后自动升级并部署此项修改。polkadot-js/apps提供的公投页面如下,
公众提交议案的流程:
scripts/build-only-wasm.sh polkadot // 编译完成后,在根目录生成kusama_runtime.wasm文件
在polkadot.js/apps Democracy页面(下面简称为某页面),通过Submit preimage
提交刚生成的wasm文件,并记下对应的哈希值。提交preimage需要质押一定的token,和所提交文件的字节数相关,当提案生效之后,自动归还质押的token。
通过Submit proposal
,填入上一步记录的哈希值和用于锁定的token数量,提交进入公众提案队列。提交议案需要锁定最少1ksm,当针对本议案的公投开始时,锁定解除。别人也可以对提交的议案进行附议(通过Second
),同样需要锁定token,数量和提交议案时锁定的数量一致。
Kusama网络每隔7天选择一个新的议案进行公投,这一议案可以是公众提交的支持最高(即提交人和附议人所锁定的token数量最多)的那一个,或者理事会提交的,两种议案轮流进行,如果某一轮其中一类议案为空,则选择另外一类议案。公众提交议案的投票机制总是绝对多数赞成。
当我们提交的议案进入公投阶段时,就可以在Democray页面的referenda
下面看到,通过Vote
对该议案进行投票,投票时,可以给定参与投票的token数量和对议案的信念值(信念值是指如果该议案通过,你希望和新网络“共存亡”的时长,具体的表现是参与投票的token会被锁定的时长,锁定的时间越长,相同数量token的投票权越高)。比如使用10ksm参与投票,信念值是2,那么你的投票权就是20(即10 2),假设投的是赞成票,当投票结束后,结果为通过,那么这10个token的锁定时长是从投票结束之后的16天。如果你完全不想锁定,你可以将信念值设为0.1,那你的投票权就只有1(即10 0.1)。反对票类似,但是因为投票结果和自己的投票方向相反,从而不会将token进行锁定。
公投时长为7天,用户可以在这段时间内的任意时间点进行投票和更改投票。
用户可以将自己的投票权(参与投票的token数量和信念值)委托给其它账户,一旦委托,token将被锁定,直到解除委托并且对应的投票锁定时间到期。为了保证大额资金账户的安全,可以设置代理投票账户,从而由代理账户进行常用的投票操作。代理账户也可以将代理的投票权委托出去。
投票结束后,关闭公投。对于投票通过的公投,在经过8天的等待时间之后就会自动生效。这一时间超过了用户staking的锁定时长,当用户不满意投票结果时,可以选择不再参与staking,享有完全退出网络的自由。
如果仅仅依赖公投,可以想象治理效率将会很低,所以Kusama网络引入了理事会这样的组织来处理网络中一些常规事务,包括但不局限于:
理事会的成员由持有token的用户投票选举产生的,目前Kusama网络的理事会正式成员有13个,后补7个。选举方式采用的是Phragmén method,每届任期1天,即每24小时重新选举,不过正常情况下成员构成的变化很小,选举流程大致如下:
Submit candidacy
,来提交候选人申请,需要质押1ksm,如果选举失败没收这1ksm押金,如果成功即成为理事会成员或者后补,则可以把押金取回。Vote
选项,用户可以选择最多16个候选人进行投票,并给出参与投票的token数量,还需要抵押0.05ksm,不过可以随时删除投票,取回押金。理事会对Kusama网络常规事务的治理是通过提交动议(motion)来实现的,
Propose montion
选项来提交动议,非理事会正式成员无法提交,提交时需要给出动议所需的最小通过票数(即赞同该动议的最小成员数),并且给出该动议的具体操作,如staking模块用于取消惩罚的cancelDeferredSlash
操作。为了让动议的具体操作可以成功执行,需要确保动议所需的最少票数满足该操作的要求,如cancelDeferredSlash
需要至少1/2的成员赞同,即当前13个成员需要有7个投赞成票。理事会还可以提交公投议案(非公众提交的公投议案),这样即使存在很多公众议案的时候,理事会提交的议案每隔一轮总会被取出来进行公投。一个简单的流程如下:
Propose external
提交一个投票规则为过半数赞成的议案,需要提供新的runtime逻辑的代码哈希。Fast track
选项,技术委员会的成员可以为该议案申请进入快速通道,如果技术委员会2/3的成员赞同则打开快速通道,这意味着议案可以直接进入公投状态,投票时间缩短为3小时,而如果全体成员赞同则可以取消投票时间的限制。只要成功进入快速通道,不管何种情况,生效时间都没有限制。技术委员会的成员是实现或者定义Polkadot/Kusama协议的团队,实现了其中某一个协议,则占有一个成员席位,如果两个都实现,那么占据两个席位。成员的增减决定需要通过理事会1/2以上的成员同意。技术委员会目前的职责主要包括:
Kusama引入了国库的机制,收归国库的费用主要包括,
随着Kusama网络的成长,目前国库的可用余额约为160000ksm,对Polkadot/Kusama生态有益的贡献都可以申请国库内的资金,达到一定程度的激励作用,下面这些领域的贡献都是欢迎的:
申请国库的资金支持有两种方式,提交提案和接受小费(tip)。
提案的流程如下:
Submit proposal
提交申请,需要给出受益人的账户地址和希望得到的资金数额,需要质押申请资金额的5%且不少于20ksm,当申请通过后,质押的token会被返回。小费的流程为:
Tip
选项,报告一个值得tip的行为,给出受益人的地址和tip的原因,需要质押1ksm加额外的基于字节数量的费用,当完成tip后,押金可退回。如果tip通过,且报告人和受益人不一致的时候,报告人可以获得tip金额的20%,作为奖励。理事会成员可以直接开启一个tip,无需质押token,且没有报告奖励。通过本文,你已经了解到比特币和以太坊的治理概况,并且掌握了Kusama网络的链上治理模式,公投、理事会、技术委员会,他们互为补充,又彼此制衡。不管是在区块链系统,还是在现实世界里,没有完美的治理,也无法让所有人满意。治理和区块链的结合,带来了更大的想象空间,我为此着迷,也希望本文给你带来一些思考。
Kusama Rollout and Governance Polkadot wiki: Governance
The Long Road To SegWit: How Bitcoin’s Biggest Protocol Upgrade Became Reality
Bitcoin Governance: What are BIPs and how do they work?
Substrate官方文档:
Official Substrate Documentation for Blockchain Developers · Substrate Developer Hubsubstrate.dev!
Parity介绍:
Blockchain Infrastructure for the Decentralised Webwww.parity.io!
Substrate源码:
https://github.com/paritytech/substrategithub.com
Polkadot源码:
https://github.com/paritytech/polkadotgithub.com
可调用函数:
propose,提交一个议案,需要锁定至少1ksm,当开启投票之后,解除锁定
second, 附议某个议案,需要锁定和发起人相同数量的ksm
vote,给正在进行公投的议案投票
proxy_vote,代理某个账户进行对公投议案进行投票
emergency_cancel,紧急情况下取消公投,至少2/3的Council成员同意才可以
external_propose,1/2的Council成员可以决定下一个由议会提出的公投议案,投票规则为SuperMajorityApprove
external_propose_majority,1/2的Council成员可以决定下一个由议会提出的公投议案,投票规则为SimpleMajority
external_propose_default,全体Council成员可以决定下一个由议会提出的公投议案,投票规则为SuperMajorityAgainst(negative-turnout-bias)
fast_track,2/3的技术委员会成员可以将议会决定的下一个公投议案正式提交进入公投状态,议案的投票规则必须是SimpleMajority或者SuperMajorityAgainst,并缩减投票时间至3小时,投票结束后生效时间没有限制;全体技术委员会成员则可以将投票时间任意缩短。
veto_external,技术委员会的任何成员可以否决议会决定的下一个公投议案,但是否决的效力只能持续7天。
cancel_referendum,取消某个公投,只能是root用户
cancel_queued,取消某个已经完成投票并等待生效的法案,只能是root用户
on_initialize,每个区块开始的时候执行
如果时间到了(每隔7天),选取一个议案开始进行公投
执行投票通过到达生效期的公投议案
activate_proxy,stash账户激活某个打开的投票代理账户
close_proxy,让当前账户不再进行投票代理
deactivate_proxy,stash账户将激活的代理权收回,使其无效
delegate,将当前账户的部分投票权委托给另外一个账户,包括投票的token数量和信念值
undelegate,将当前账户的委托取消
clear_public_proposals,删除所有的公共提案,只能是root账户
note_preimage,注册提案的具体操作(即runtime模块的可调用函数),需要锁定一定数量的ksm,和上传提案的可调用函数的字节数长度相关,当提案生效之后,锁定的ksm会解锁。
note_imminent_preimage,注册紧急提案的具体操作,不需要锁定ksm,需要提案进入到等待生效的阶段(即dispatch queue)。
reap_preimage,过了投票期(7天)之后,删除注册的操作并解锁注册时锁定的ksm,如果使用的不是注册时的账户,要延长8天。
unlock,解锁锁定时间过期的ksm
open_proxy,activate_proxy之前调用,建立代理
remove_vote,在以下场景下可以删除投票,通常在调用unlock之前
公投还没有结束
公投结束,投票结果输的乙方
公投结束,投票结果为赢的一方,且过了锁定期
remove_other_vote,替别人删除已经过期的投票
公投被取消
公投结束,投票结果输的乙方
公投结束,投票结果为赢的一方,且过了锁定期
proxy_delegate,将当前账户代理的stash账户的投票权力委托给另外另外一个账户,包括投票的token数量和信念值
proxy_undelegate,将当前账户代理的stash账户的委托取消
proxy_remove_vote,和remove_vote相同,不过是由代理账户触发的
enact_proposal,将公投正式生效,只能由区块链系统自己触发即root,即scheduler会触发
可调用函数:
可调用函数:
可调用函数:
可调用函数:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!