4个稳定版本
2.4.2 | 2024年7月22日 |
---|---|
2.4.0 | 2024年7月21日 |
2.3.0 | 2023年10月18日 |
#53 in 神奇豆
每月436次下载
用于 2 个包(通过 dao-testing)
45KB
942 行
cw721-roles
这是一个为DAO使用而设计的不可转让NFT合约。cw721-roles
允许每个NFT与其关联一个 weight
,并实现了 cw4-group 合约(感谢 Confio 对此所做的贡献)的大部分功能。
当合约创建时,此合约的所有方法都只能通过可配置的 minter
调用。它主要用于与DAO一起使用。
已覆盖从默认的 cw721-base
版本继承的 mint
、burn
、send
和 transfer
方法,但它们大致相同,需要注意的是它们只能通过 minter
调用。不支持与批准相关的方法。
扩展
cw721-roles
包含以下扩展
令牌元数据已扩展,增加了权重以及可选的人读链角色,这些角色可用于独立合同以执行额外权限。
pub struct MetadataExt {
/// Optional on-chain role for this member, can be used by other contracts to enforce permissions
pub role: Option<String>,
/// The voting weight of this role
pub weight: u64,
}
该合同有一个额外的执行扩展,包括添加和删除成员变更事件钩子,以及更新特定令牌的 token_uri
、weight
和 role
。所有这些操作都只能由配置的 minter
执行。
pub enum ExecuteExt {
/// Add a new hook to be informed of all membership changes.
/// Must be called by Admin
AddHook { addr: String },
/// Remove a hook. Must be called by Admin
RemoveHook { addr: String },
/// Update the token_uri for a particular NFT. Must be called by minter / admin
UpdateTokenUri {
token_id: String,
token_uri: Option<String>,
},
/// Updates the voting weight of a token. Must be called by minter / admin
UpdateTokenWeight { token_id: String, weight: u64 },
/// Udates the role of a token. Must be called by minter / admin
UpdateTokenRole {
token_id: String,
role: Option<String>,
},
}
查询扩展实现了与之前提到的 cw4-group 合同 兼容的查询。
pub enum QueryExt {
/// Total weight at a given height
#[returns(cw4::TotalWeightResponse)]
TotalWeight { at_height: Option<u64> },
/// Returns the weight of a certain member
#[returns(cw4::MemberResponse)]
Member {
addr: String,
at_height: Option<u64>,
},
/// Shows all registered hooks.
#[returns(cw_controllers::HooksResponse)]
Hooks {},
}
依赖
~4–6MB
~129K SLoC