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 2023年7月7日

#14#treasury

Download history 3/week @ 2024-05-20 6/week @ 2024-06-03 8/week @ 2024-06-10 4/week @ 2024-06-17 9/week @ 2024-06-24 83/week @ 2024-07-15 577/week @ 2024-07-22 203/week @ 2024-07-29 39/week @ 2024-08-05 267/week @ 2024-08-12

1,163 每月下载量
用于 3 个crate(2个直接使用)

BSD-3-Clause

300KB
7.5K SLoC

dao-dao-core

dao-dao-core on crates.io docs.rs

此合约是所有DAO DAO DAO的核心模块。它处理投票权力和提案模块的管理,执行消息,并持有DAO的财政。

有关这些模块如何配合的更多信息,请参阅此维基页面

除了维基规范,此合约还可以暂停。为此,必须通过提案模块执行Pause消息。暂停核心模块将在暂停期间停止模块上的所有操作。

开发

核心消息和接口在dao-interfaces包中定义。如果您正在构建新模块或与DAO交互的合约,请使用dao-interface

财政管理

为此合约维护一个cw20cw721代币列表,该代币的余额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 可以通过 UpdateCw20ListUpdateCw721List 方法始终添加或删除非本地代币。

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