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日 |
2.1.5 |
|
#14 在 #treasury
1,163 每月下载量
用于 3 个crate(2个直接使用)
300KB
7.5K SLoC
dao-dao-core
此合约是所有DAO DAO DAO的核心模块。它处理投票权力和提案模块的管理,执行消息,并持有DAO的财政。
有关这些模块如何配合的更多信息,请参阅此维基页面。
除了维基规范,此合约还可以暂停。为此,必须通过提案模块执行Pause
消息。暂停核心模块将在暂停期间停止模块上的所有操作。
开发
核心消息和接口在dao-interfaces包中定义。如果您正在构建新模块或与DAO交互的合约,请使用dao-interface
。
财政管理
为此合约维护一个cw20和cw721代币列表,该代币的余额DAO希望跟踪。这使得前端可以在DAO的财政中列出这些代币。这种跟踪是必要的,因为对于非本地代币,没有链上数据源可以跟踪DAO拥有的所有cw20和cw721代币。这也有助于减少垃圾邮件,因为发送到DAO的随机shitcoins不会显示在财政列表中,除非DAO批准它们。
对于本地代币,我们不需要此额外的跟踪步骤,因为本地代币余额存储在银行模块中。因此,对于这些代币,前端可以直接查询链以发现DAO拥有的代币。
管理财政
DAO 财库中可能添加非本地代币的两种方式。
如果将 automatically_add_[cw20s|cw721s]
设置为 true,在 DAO 的配置 中,DAO 将在接收到通过 cw20 的 Send
方法和 cw721 的 SendNft
方法发送的代币后,将该代币添加到财库中。
pub enum ExecuteMsg {
/// Executed when the contract receives a cw20 token. Depending on
/// the contract's configuration the contract will automatically
/// add the token to its treasury.
#[cfg(feature = "cw20")]
Receive(cw20::Cw20ReceiveMsg),
/// Executed when the contract receives a cw721 token. Depending
/// on the contract's configuration the contract will
/// automatically add the token to its treasury.
ReceiveNft(cw721::Cw721ReceiveMsg),
// ...
}
DAO 可以通过 UpdateCw20List
和 UpdateCw721List
方法始终添加或删除非本地代币。
pub enum ExecuteMsg {
/// Updates the list of cw20 tokens this contract has registered.
#[cfg(feature = "cw20")]
UpdateCw20List {
to_add: Vec<String>,
to_remove: Vec<String>,
},
/// Updates the list of cw721 tokens this contract has registered.
UpdateCw721List {
to_add: Vec<String>,
to_remove: Vec<String>,
},
// ...
}
依赖
~10MB
~207K SLoC