Conviction Voting Pallet¶
概览¶
Conviction Voting Pallet允许Token持有者在公投中进行、委托以及管理信念值权重投票。
随着OpenGov(也称为Governance v2)的推出,对治理流程进行了几个修改。Governance v1的治理系统使用Democracy Pallet和Democracy Precompile用于所有治理相关的功能。在OpenGov,治理相关功能是基于3个新的pallet和预编译:Preimage Pallet和Preimage Precompile、Referenda Pallet和Referenda Precompile,以及Conviction Voting Pallet和Conviction Voting Precompile。OpenGov现已上线Moonriver,经过严密测试后,将提出上线Moonbeam的提案。截至目前为止,Moonbeam仍在使用Governance v1版本。上述预编译是Solidity接口,使您能够使用以太坊API执行治理功能。 Conviction Voting Pallet的一些功能可以通过Conviction Voting Precompile使用。
本教程将概述Moonbeam上Conviction Voting Pallet中的extrinsics、存储函数和pallet常量的获取方式。本教程假设您已熟悉治理相关的专业术语,反之您可以在治理概览页面获取更多信息。
Conviction Voting Pallet接口¶
Extrinsics¶
Conviction Voting Pallet提供以下extrinsics(函数):
- delegate(class, to, conviction, balance) - 将投票权(包含给定的信念值)委托给另一个账户,用于特定级别(Origins)的民意投票(公投)。委托的数额将在委托期间被锁定,之后的时间为信念值的锁定期。发出
Delegated
事件 - removeOtherVote(target, class, index) - 移除民意投票(公投)的投票。如果
target
是签署者,则此函数等同于removeVote
。如果不是签署者,则此投票必须已经过期,要么是因为投票被取消,投票者在投票中落败,要么是因为信念期已结束 - removeVote(class, index) - 移除民意调查的投票。如果出现以下情况之一,就会发生这种情况:
- 如果民意投票被取消,在没有其他待处理锁定的情况下,Token将立即解锁
- 如果民意投票正在进行中,Token持有者的投票不再计入计票,在没有其他待处理锁定的情况下,Token将立即解锁
- 如果民意投票结束,会有两个不同的场景:
- 如果Token持有者投票反对统计结果或未设置信念值进行投票,则在没有其他待处理锁定的情况下Token将立即解锁
- 如果民意投票结束,结果与Token持有者的投票(包含给定的信念值)一致,并且信念值的锁定期尚未结束,则用于投票的Token将被整合到整个账户的锁定中。这可能会涉及_overlocking_(将两个锁定合并成一个锁定,即为锁定量和锁定期的最大值)
- undelegate(class) - 取消特定级别(Origin)民意投票(公投)的投票权。Token将在委托的信念值锁定期到期后解锁。发出
Undelegated
事件 - unlock(class, target) - 移除已过期的特定级别(Origin)内先前的投票/委托投票的锁定
- vote(pollIndex, vote) - 在民意投票(公投)中提交投票。如果投票为“赞成”("aye"),则为生效提案;如果投票为“反对”("nay")则维持现状
存储函数¶
Conviction Voting Pallet包括以下只读存储函数来获取链上状态数据:
- classLocksFor(AccountId20) - 返回非零的锁定要求的投票级别(Origins)及其所需的锁定量
- palletVersion() - 返回当前pallet版本
- votingFor(AccountId20, u16) - 返回特定投票级别(Origin)中特定投票者的所有投票
Pallet常量¶
Conviction Voting Pallet包括以下只读函数来获取pallet常量:
- maxVotes() - 返回一个帐户可能拥有的最大投票数
- voteLockingPeriod() - 返回投票锁定的最短时间。但该期限不应短于生效等待期,以确保在获得批准的情况下,那些成功的投票者被锁定在他们的投票所带来的后果中
| Created: March 17, 2023