前言
要领:委员会的权限是可以通过代码给定的,任何的玩法都可以定制化。
问题:技术委员会和议会的权限区别?
委员会内部权限对各自委员会内部的内容,都是各自的权限领域,并无交集
委员会的任命权限主流玩法:议员的身份只有sudo或者通过专门的选举制度选举出来。技术委员会的任命则有议会决定,添加删除重置等权限,需要一半以上的议员同意才能进行。
各个委员在公投期间的权限差别下面的例子只是局限性的例子,任何权限的设置都可以自定义。
链上治理流程
本文主要阐述波卡链上经典的治理设计
公投
通过公投的proposal,最后执行的时候,是通过sudo权限执行。
公众提案的流程:
如果有议会外部提案,那就优先进入公投。如果没有议会外部提案,只有多个民主的提案,就会选择Endorse最多的,进入下一轮的公投。
公投投票规则相关
Super-MajorityApprove需要大多数同意才能通过
Super-MajorityAgainst反对通过需要绝大多数
Simple-Majority只要赞成>反对,即可通过proposal
关于公投的时间相关配置
LaunchPeriod:一轮公投更新的时间
EnactmentPeriod:提案通过和执行之间的时间
VotingPeriod:创建相同preimagehash的限制时间。(preimages会在proposal执行的时候消除掉,然后解除一开始质押的钱)
VoteLockingPeriod:投票锁定的最小时间(取消投票和取消提供给他人的投票权时,会在意这个“冻结期”。
CooloffPeriod:外部提案被否决后不得重新提交的时间区间。
FastTrackVotingPeriod:快速公投允许的最短投票时间。
委员会里的时间
MotionDuration:创建proposal,会有个投票时间。
普通用户
民主通过democracy可以提交publicproposal,但是是最难的规则,需要endorse,endorse第一的才能进行公投。
基础功能:
propose-提交提案,表示为preimiagehash。需要押金。
second-表示同意提案,将其在提案队列中移到更高位置,并要求与原始提案匹配的存款。
vote-在全民投票中投票,要么投票是“赞成”以支持提案,要么投票“反对”以维持现状。
unvote-取消之前的投票,这必须由投票者在投票结束前完成。
delegate-将投票权委托给另一个账户。
undelegate-停止将投票权委托给另一个帐户。
可以对任何帐户执行的管理操作:
reap_vote-删除部分账户的过期投票。
unlock-重新确定帐户的余额锁定,可能使代币可用。
原像动作:
note_preimage-为即将到来的提案注册原像,需要在提案实施后退还押金。
note_preimage_operational-相同功能,但是只能由T::OperationalPreimageOrigin执行
note_imminent_preimage-为即将到来的提案注册原像不需要押金,但提案必须在调度队列中
note_imminent_preimage_operational-相同功能但是只能由T::OperationalPreimageOrigin执行
reap_preimage-删除过期提案的原像。仅在与记录它的帐户相同且在投票期之后或在制定期之后为不同帐户的情况下才有效。
议会
此处的人数不是固定的,此处仅为便于展示和讨论,你可以根据自己的实际需求来设置
议会里的议员可以通过sudo权限指定议员,也可以通过选举模块进行选举更替。
议会里的议员可以提两种提案,1.内部提案2.外部提案。
内部提案
议会的内部提案的权限是局限的,进入执行队列里只有议员member的执行权限,可以通过内部提案指定技术委员会的成员。
外部提案
议会可以通过外部提案,进入公投期。
议会可以指定外部提案的类型,通过不同的方法创建出不同投票机制的外部提案。
ps:需要注意的是,除了SuperMajorityApprove规则的外部提案,都可以通过技术委员会做fasttrack进行proposal加速处理。
权限分配:
议会对技术委员会任命的权限:需要4/5的议员通过。
技术委员会
此处的人数不是固定的,此处仅为便于展示和讨论,你可以根据自己的实际需求来设置
技术委员会的成员主要是通过议会来决定的。
技术委员会只有内部提案的权限。
技术委员会主要的任务:
拒绝恶意的proposal,对公投中的proposal有否决和取消的权限。
帮助议会的外部提案设置fasttrack
关于FastTrack
技术委员会可以帮助议会的外部提案设置fasttrack,这是个加速车道,可以自定义vote的时间和执行的时间。但是只有SimpleMajority和SuperMajorityAgainst规则的externalproposal才能通过这个方法。
与proposal相关的权限
CancellationOrigin紧急取消正在进行公投的proposal
CancelProposalOrigin取消proposal,取消指定的proposal,并且slash掉提交这个proposal的钱
VetoOrigin否决proposal,技术委员会一般通过这个权限来否决一些恶意的proposal,会把这个proposal拉入到黑名单当中
权限分配
BlacklistOrigin,将提案永久地列入黑名单。防止它再次被提出。
提交proposal的时候不会检查执行权限,只有在proposal被close之后,才会根据投票的结果决定proposal的执行。
Rust///?A?straight?majority?of?the?council?can?decide?what?their?next?motion?is
需要配置的内容:对各个功能需要多少的权限才能调用成功。
Elections-phragmen模块
这个模块下,对应的委员会一共有三种角色
member,runnersup,candidates
member,成员身份,member身份的人才是委员会的委员
runnersup,亚军身份/备选人身份,当member身份的人退出之后,默认由runnersup的成员依次延续。
candidates,候选人身份。
每隔一段固定的时间就重新选举,任何人可以通过质押一定的钱成为Candidacy
如果通过sudoremove了member,就需要重新进行一次选举。
用户可以给自己中意的议员投票,投票会涉及到票数(和?挂钩,票数涉及到的?,会被lock住。
ps:每进入新的一轮,用户投的票不会取消,用户投的票会一直默认下去,除非用户更新投票的信息。
关于elections-phragmen模块涉及到的选举规则:Bordacount
议会界面中的backing的值,可以理解成Borda排序投票法中的积分概念。
每个投票人按喜好排列候选者。如果候选者x在某张选票上排第n位,它就得某个分数sn.将所有投票人给候选者x打的分数sn加总,分数累计下来最高分的候选者x便赢得选举。分数规则满足单调递减s1≥s2≥...≥0,且为非负值。
如果s1=1,s2=s3=...=0,则波达计数法退化为简单多数规则。即每个投票人将自己的一票投给最满意的候选者,得票多者取胜。这种方法不易充分表达民意,可能选出争议人士;
如果sn=N–n,其中N为候选人总数,则sn随名次n线性递减,是通常意义下的“波达数”方法。这种方法的民意表达最充分,但比较容易放大反对者的声音,为“策略选举”提供了可能;
有一种规则sn=1/n,为瑙鲁议会采用。第一名得一票,第二名得半票,第三名得1/3票,依此类推。这种方法是上述两种方法的折衷。
ps:elections-phragmen中属于第二种方式,是通常意义下的Bordacount排序方法,不过系数是从n开始而不是n-1。
假设有三个候选人甲、乙、丙的选举。结果如下:
4张选票为:1.甲2.乙3.丙
5张选票为:1.甲2.丙3.乙
7张选票为:1.丙2.乙3.甲
各人的分数如下:
甲:43+53+7*1=34
乙:42+51+7*2=22
丙:41+52+7*3=35
即丙胜出。
相关Pallet简介
pallet-democracy
与proposal相关、公投相关。
democracy中有些操作会涉及到slash操作,Slash去向一般是设置给TreasuryAccount,也有项目方是Burn掉了。
被Slash的情况有三处:
通过blacklist被拉入黑名单的proposal
被cancel的proposal
最后执行时,Preimage有问题的proposal
pallet-collective
设置委员会的全部成员,提供proposal的提交和投票功能。
set_members设置members,sudo权限
execute执行proposal,member权限,并且以member权限执行proposal
propose添加一个新提案,要么投票表决,要么直接执行。
votemember权限
pallet-membership,“比较死板的设置member”
addmember
removemember
pallet_membership-Rust
pallet-elections-phragmen,有选举策略,能自建成为候选人
pallet_elections_phragmen-Rust
一些项目方的玩法:
操作演示
普通用户
公众提案的流程:
如果有议会外部提案,那就优先进入公投。如果没有议会外部提案,只有多个民主的提案,就会选择Endorse最多的,进入下一轮的公投。
发起民主提案的流程:
1、获取原像hash值
提出要采取的行动需要您绑定一些代币。为了确保您有足够的代币进行最低存款,您可以检查链状态中的参数。仅在提案提交后才会释放绑定的代币;用户无法在公投之前“撤销”他们的提议并取回保证金。由于基本上不可能确切地预测提案何时可能成为公投,这意味着任何绑定的代币都将被锁定一段不确定的时间。
在submitpreimage处,设置好方法后,获取这个image的值。
在这里,可以提交原像,也可以不提交原像(因为提交大原像的存储成本可能非常昂贵,
2、提交proposal
现在您将单击“提交提案”按钮并在标题为“原像哈希”的输入中输入原像哈希,并在“锁定余额”字段中输入至少最低存款。
现在,任何访问该链的人都可以看到您的提案,其他人可以支持它或提交原像。然而,很难说这个提议究竟做了什么,因为它显示了动作的哈希值。在有人提交此提案的实际原像之前,其他持有者将无法判断他们是否支持它。在下一步中,你需要提交原像。
3、提交原像
提出提案的行为与提交提案的原像分开,因为提交大原像的存储成本可能非常昂贵。允许原像提交作为单独的交易进行意味着如果您没有资金这样做,另一个帐户可以为您提交原像。这也意味着您不必立即支付如此多的资金,因为您可以证明原像散列带外。
但是,在提案通过之前的某个时间点,您需要提交原像,否则提案将无法实施。该指南现在将向您展示如何执行此操作。
单击蓝色的“提交原像”按钮并将其配置为与之前获取原像哈希的操作相同。这一次,您无需将哈希复制到另一个选项卡,而是继续并单击“提交原像”并确认交易。
包含交易后,您应该会看到UI更新,其中包含已提交提案的信息。
4、进行Endorsed
每个人都可以进行Endorsed,但是需要质押这个提案设置的“至少最低存款”,当这轮公投期过了之后,下轮公投会选一个Endorsed最高的提案进入公投期。
重要的是要注意,一旦提案完成,就无法停止或取消附议提案。因此,被借调的DOT将被保留,直到提案被提交公投。这是一个不确定的时间量,因为无法保证某个提案会在特定时期内成为公投,因为其他提案可能会率先进入公投。
用户就可以开始投票了。
5、Vote
选择支持的数量和质押的时间。
Polkadot使用了一种叫做VoluntaryLocking允许代币持有者通过声明他们愿意锁定他们的代币多长时间来增加他们的投票权的想法,因此,每个代币持有者的投票数将通过以下公式计算:
votes=tokens*conviction_multiplier
每当锁定周期数翻倍时,就会将投票乘数加一。
票数计算的公式:
议会
以升级系统为例。
1、创建原像
制作
parachainSystem.authorizeUpgrade(codeHash)的原像。
这里的preimagehash为
0xb7caf049918934c5b7f1e06718854b0783c7b86380c9ac731f8ca3cd49b76dad
2、创建外部提案
3、通过议会投票
通过投票之后,就能进入到公投的外部提案通道。
技术委员会
1、技术委员会可以通过fasttrack,改变外部提案的vote和执行时间。
2、在技术委员会内部通过提案
3、成功执行,外部提案成功加速。
接下来进行正常的公投投票即可。
成功,接下来任何人都可以通过
parachainSystem.enactAuthorizedUpgrade(code)进行升级。
成功升级
关于Referendaand?ConvictionPallet
ReferendaandConvictionPalletandPre-imagepallet
DemocracyPallet
目前,使用的是Democracy托盘,因为它已经过审核并证明了相当长一段时间的稳定性。在Kusama上进行测试并经过审核后,仍然可以考虑切换到全民投票。
这个用的不多,还没有广泛的应用,Democracy是被多方测试过的。
相关的拓展链接:
https://github.com/paritytech/substrate/pull/10195
https://github.com/integritee-network/parachain/issues/108
https://mp.weixin.qq.com/s/tejMz3YrqhZ0W0uT-2rWcg
https://mp.weixin.qq.com/s/ZjdrsgSBJoyaS6Lgfof7gg
参考
https://paritytech.github.io/substrate/master/pallet_membership/index.html
https://paritytech.github.io/substrate/master/pallet_elections_phragmen/index.html
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。