6 个版本 (稳定版)
3.0.0 | 2024 年 7 月 11 日 |
---|---|
2.0.1 | 2024 年 6 月 17 日 |
2.0.0 | 2024 年 5 月 1 日 |
2.0.0-rc | 2024 年 4 月 25 日 |
1.2.2 | 2024 年 1 月 24 日 |
340 在 魔法豆
3,114 每月下载量
在 2 个crate中使用(通过 abstract-cw-plus-interfac…)
135KB
3K SLoC
CW1 子密钥
这个基于 cw1-whitelist
构建,提供了第一个非平凡解决方案。它仍然像 cw1-whitelist
一样,有一组管理员(通常是 1 个)可以完全控制该账户。然而,您可以从该账户授权多个账户发送原生代币。
这个功能在 2019 年夏季为 Cosmos Hub 提出过,类似于 ERC20(允许和转账)的功能。
详细信息
基本上,任何管理员都可以为 (spender, denom)
对(类似于 cw20 IncreaseAllowance
/ DecreaseAllowance
)添加允许。任何非管理员账户都可以尝试从这个合约执行 CosmosMsg::Bank(BankMsg::Send{})
,如果他们有所需的允许,他们的允许将会减少,并发送消息中继。如果他们没有足够的授权,或者如果他们尝试代理其他任何消息类型,那么尝试将会被拒绝。管理员可以给子密钥授权以中继特定类型的消息(目前包括 Delegate, Undelegate, Redelegate, Withdraw)。子密钥在创建时没有权限,可以通过 SetupPermission
消息进行设置。
消息
这比 cw1
规范多了2条消息
enum ExecuteMsg {
IncreaseAllowance {
spender: HumanAddr,
denom: String,
amount: Uint128,
expires: Option<Expiration>,
},
DecreaseAllowance {
spender: HumanAddr,
denom: String,
amount: Uint128,
expires: Option<Expiration>,
},
SetupPermissions {
spender: HumanAddr,
permissions: Permissions,
}
}
查询
它还添加了一个查询类型
enum QueryMsg {
Allowance {
spender: HumanAddr,
},
AllAllowances {
start_after: Option<HumanAddr>,
limit: Option<u32>,
},
}
pub struct AllowanceInfo {
pub spender: HumanAddr,
pub balance: Balance,
pub expires: Expiration,
pub permissions: Permissions,
}
pub struct AllAllowancesResponse {
pub allowances: Vec<AllowanceInfo>,
}
运行此合约
您需要安装 Rust 1.44.1+ 并具有 wasm32-unknown-unknown
目标。
您可以通过以下方式对此进行单元测试
cargo测试
一旦您对内容满意,您可以通过以下方式将其编译为 wasm
RUSTFLAGS='-C link-arg=-s' cargo wasm
cp ../../target/wasm32-unknown-unknown/release/cw1_subkeys.wasm .
ls -l cw1_subkeys.wasm
sha256sum cw1_subkeys.wasm
或者,对于生产就绪(优化)的构建,在仓库根目录中运行构建命令: https://github.com/CosmWasm/cw-plus#compiling。
依赖项
~5–17MB
~190K SLoC