#token #factory #dao #contract #native #voting #module

dao-voting-token-staked

基于质押代币工厂或原生代币的 DAO DAO 投票模块。仅适用于支持 Token Factory 的链。

4 个稳定版本

2.4.2 2024年7月22日
2.4.0 2024年7月21日
2.3.0 2023年10月18日

#2252 in 神奇豆

Download history 388/week @ 2024-07-20 79/week @ 2024-07-27

467 每月下载量
2 个 crate 中使用(via dao-testing

BSD-3-Clause

300KB
6K SLoC

dao_voting_token_staked

简单的基于原生代币或 Token Factory 的代币投票/质押合约,假设提供的原生代币未用于为网络安全质押,例如 IBC 代币或二级代币(ION)。可以在任意高度查询质押余额。此合约实现了 DAO DAO 投票模块 所需的接口。

Token Factory 支持

dao_voting_token_staked 利用 cw_tokenfactory_issuer 合约实现 Token Factory 功能。实例化时,dao_voting_token_staked 会创建一个新的 cw_tokenfactory_issuer 合约来管理新代币,DAO 作为管理员和所有者(这些可以通过 DAO 投票撤销或更新)。

cw_tokenfactory_issuer 合约支持许多功能,更多详情请参阅 cw_tokenfactory_issuer 合约 README

实例化

实例化新的 dao_voting_token_staked 合约时有两个必填字段

  • token_info:您可以选择利用现有的原生代币或使用 Token Factory 模块创建新的代币。

存在一些可选字段

  • unstaking_duration:可以设置为heighttime(秒),这是用户可以完全提取解押代币之前必须经过的时间。如果未设置,则可以立即提取。
  • active_theshold:必须质押的代币数量,以使DAO处于活动状态。这可能是一个absolute_count或一个percentage

创建新代币

  • token_issuer_code_id:必须设置为cw_tokenfactory_issuer合约的有效Code ID。
  • initial_balances:新代币的初始分配,必须至少有一个账户有余额,以便DAO不会被锁定。

创建代币还有一些附加的可选字段

  • metadata:有关代币的信息。有关代币元数据的更多信息,请参阅Cosmos SDK Coin元数据文档
  • initial_dao_balance:为DAO金库创建的初始余额。

示例实例消息

{
  "token_info": {
    "new": {
      "token_issuer_code_id": <cw_tokenfactory_issuer_code_id>,
      "subdenom": "meow",
      "metadata": {
        "description": "Meow!",
        "additional_denom_units": [
          {
            "denom": "roar",
            "exponent": 6,
            "aliases": []
          }
        ],
        "display": "meow",
        "name": "Cat Token",
        "symbol": "MEOW"
      },
      "initial_balances": [
        {
          "amount": "100000000",
          "address": "<address>"
        }
      ],
      "initial_dao_balance": "100000000000"
    }
  },
  "unstaking_duration": {
    "time": 100000
  },
  "active_threshold": {
    "percentage": {
      "percent": "0.1"
    }
  }
}

使用现有原生代币

dao-voting-token-staked也可以与现有原生代币一起使用。它们可以是以ion等原生符号的形式,IBC代币,或者Token Factory代币。

示例实例消息

{
    "token_info": {
      "existing": {
        "denom": "uion",
      }
    }
}

注意:如果使用现有的Token Factory代币,请务必检查Token Factory管理员,并在DAO创建后考虑将Token Factory更改为DAO。

使用工厂

有时需要更多的定制。也许你想要一个增强型债券曲线合约或LP池,需要额外的设置?工厂合约可以实现这一点!

factory模式接受一个调用自定义工厂合约的单一WasmMsg::Execute消息。

注意:在工厂模式中,重要的是只使用受信任的工厂合约,因为所有验证都在工厂合约中完成。

实现自定义工厂合约的各方必须处理所有验证,并且自定义的WasmMsg::Execute消息必须分别包含TokenFactoryCallback数据。

dao-test-custom-factory合约提供了一个如何实现此功能的示例,并用于测试。它不是生产就绪的,但旨在作为构建工厂合约的示例。

依赖项

~10MB
~208K SLoC