55 个版本 (6 个稳定版)
2.0.0 | 2024 年 3 月 26 日 |
---|---|
1.1.2 | 2023 年 11 月 23 日 |
1.1.0 | 2023 年 6 月 20 日 |
1.0.1 | 2022 年 12 月 19 日 |
0.3.1 | 2020 年 10 月 16 日 |
#1331 在 魔法豆
2,006 每月下载量
在 2 crate 中使用
125KB
2.5K 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。
依赖关系
~4–7.5MB
~152K SLoC