5 个稳定版本
2.4.2 | 2024 年 7 月 22 日 |
---|---|
2.4.0 | 2024 年 7 月 21 日 |
2.3.0 | 2023 年 10 月 18 日 |
2.2.0 | 2023 年 7 月 9 日 |
0.0.0 |
|
#5 在 #dao
1,100 每月下载量
550KB
13K SLoC
dao-proposal-multiple
这是一个 DAO DAO 提案模块,允许用户从 MultipleChoiceOption
数组中选择他们的投票选项。每个选项都可以关联一些消息,在提案通过并执行时由核心模块执行。
只要提案没有过期,就可以投下选票。在提案不再被评估的情况下(例如,达到法定人数并被拒绝),这允许投票者表达他们的观点,即使这对最终提案的状态没有影响。
您可以在我们的维基百科中了解更多关于此模块的信息。
不期望的行为
此合约的不期望行为已在 testing/adversarial_tests.rs
下进行测试。
一般来说,它应该涵盖
- 执行未通过的提案
- 多次执行提案
- 为了财务利益进行社会工程提案
- 说服提案模块花费他人的津贴
提案押金
此模块的提案押金由 dao-pre-propose-multiple
合约处理。
钩子
此模块支持投票和提案状态变化的钩子。可以通过 AddVoteHook
和 AddProposalHook
方法注册合约以接收这些钩子。注册后,合约将在投票投下和提案状态改变时(例如,提案通过时)接收消息。
这些钩子消息的格式可以在位于 packages/proposal-hooks
和 packages/vote-hooks
的 proposal-hooks
和 vote-hooks
软件包中找到。
为了防止无效的钩子接收器锁定提案模块,如果它们在处理钩子时出错,则接收器将从钩子列表中移除。
重新投票
提案可以配置为允许重新投票。在这种情况下,只要提案仍然开放,用户就可以更改他们的投票。对当前已投票选项的重新投票将返回错误。
否决
提案可以配置可选的 VetoConfig
- 一个描述否决流程的配置。
否决配置时间锁定周期允许一个当事人(例如监督委员会DAO)通过在给定的时间锁定周期内(和可能在其通过之前)对提案进行一次否决来对主DAO负责。
时间锁定周期内不允许DAO成员采取任何行动。
时间锁定期结束后,提案可以正常执行。
VetoConfig
包含以下字段
timelock_duration
时间锁定周期(cw_utils::Duration
)描述了时间锁定的周期,以块或秒为单位。
将延迟周期添加到提案的到期时间,以获取时间锁定的到期时间(Expiration
),用于新提案状态的 VetoTimelock { expiration: Expiration }
)。
如果否决者的地址是另一个DAO,则应基于否决者DAO的投票周期仔细考虑此周期。
vetoer
否决者(String
)是允许否决处于 VetoTimelock
状态的提案的账户地址。
可以通过常规提案配置更新来更新否决者地址。
如果您希望 vetoer
角色由多个组织或个人共享,可以使用 cw1-whitelist 合同地址来允许多个账户否决提案。
early_execute
提前执行(bool
)是一个标志,用于指示否决者是否可以在时间锁定周期结束之前执行提案。为了使这成为可能,提案仍然需要通过并处于 VetoTimelock
状态。这可能会防止否决流程持续延长治理过程。
veto_before_passed
否决通过之前(bool
)是一个标志,用于指示否决者是否可以在提案通过之前对其进行否决。即使在提案被否决之后,投票也可以投到指定的提案到期时间。
依赖关系
~10MB
~206K SLoC