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 |
|
#414 在 神奇豆子
863 每月下载量
在 3 个crate中使用了(2个直接使用)
680KB
16K SLoC
dao-proposal-single
这是一个支持简单“是”、“否”、“弃权”投票的DAO DAO提案模块。提案可以关联消息,这些消息在提案通过并执行时将由核心模块执行。
只要提案没有过期,就可以投票。在提案不再被评估的情况下(例如,达到法定人数并被拒绝),这允许选民即使投票没有影响最终提案的状态,也能表达自己的观点。
有关这些模块如何协同工作的更多信息,请参阅这篇维基页面。
有关此模块如何计算投票和处理通过阈值的信息,请参阅这篇维基页面。
不期望的行为
此合约的不期望行为在 testing/adversarial_tests.rs
下进行了测试。
一般而言,它应该包括
- 执行未通过的建议
- 多次执行建议
- 为金融利益进行社会工程提案
- 说服提案模块花掉他人的津贴
提案押金
本模块的提案存款由 dao-pre-propose-single
合同处理。
钩子
本模块支持投票和提案状态变化的钩子。可以通过 AddVoteHook
和 AddProposalHook
方法注册一个合同以接收这些钩子。一旦注册,合同将在投票投出和提案状态改变时(例如,当提案通过时)接收消息。
这些钩子消息的格式可以在 proposal-hooks
和 vote-hooks
包中找到,分别位于 packages/proposal-hooks
和 packages/vote-hooks
。
为了防止无效的钩子接收者锁定提案模块,当处理钩子时出错,将删除钩子列表中的合约。
重新投票
可以配置提案以允许重新投票。在这种情况下,只要提案仍然开放,用户就可以更改他们的投票。对当前投票选项的重新投票将返回错误。
否决
可以配置提案使用可选的 VetoConfig
- 描述否决流程的配置。
否决配置的 timelock 期间允许一个党派(如监督委员会 DAO)通过在给定的 timelock 期间否决提案(以及可能在其通过之前)来对主 DAO 进行问责。
timelock 期间不允许 DAO 成员采取任何行动。
timelock 过期后,提案可以正常执行。
VetoConfig
包含以下字段
timelock_duration
Timelock duration (cw_utils::Duration
) 描述了 timelock 的时间长度,以区块或秒为单位。
延迟持续时间被添加到提案的过期时间,以获取用于 VetoTimelock { expiration: Expiration }
的新提案状态的 Expiration
。
如果否决者地址是另一个 DAO,则应根据否决者 DAO 的投票周期仔细考虑此持续时间。
vetoer
否决者 (String
) 是允许否决处于 VetoTimelock
状态的提案的账户地址。
否决者地址可以通过常规提案配置更新来更新。
如果您希望 vetoer
角色在多个组织或个人之间共享,可以使用 cw1-whitelist 合同地址来允许多个账户否决提案。
early_execute
Early execute (bool
) 是一个标志,用于指示否决者是否可以在 timelock 期间过期之前执行提案。为了实现这一点,提案仍然需要通过,并处于 VetoTimelock
状态。这可能会防止否决流程始终延长治理过程。
veto_before_passed
Veto before passed (bool
) 是一个标志,用于指示否决者是否可以在提案通过之前否决提案。即使被否决,也可以在指定的提案过期之前继续投票。
依赖项
~10MB
~212K SLoC