5 个版本 (稳定版)

3.0.0 2024 年 7 月 11 日
2.0.0 2024 年 5 月 1 日
2.0.0-rc2024 年 4 月 25 日
1.4.0 2024 年 4 月 15 日
1.2.2 2024 年 1 月 24 日

#73 in 神奇豆子

Download history 660/week @ 2024-04-16 617/week @ 2024-04-23 953/week @ 2024-04-30 369/week @ 2024-05-07 428/week @ 2024-05-14 623/week @ 2024-05-21 862/week @ 2024-05-28 511/week @ 2024-06-04 1172/week @ 2024-06-11 640/week @ 2024-06-18 625/week @ 2024-06-25 611/week @ 2024-07-02 934/week @ 2024-07-09 784/week @ 2024-07-16 671/week @ 2024-07-23 545/week @ 2024-07-30

3,152 每月下载量
2 个 crate 中使用 (via abstract-cw-plus-interfac…)

Apache-2.0GPL-3.0-only

110KB
2K SLoC

CW4 Stake

这是 cw4 规范的第二种实现。它实现了规范的所有要素,包括原始查询查找,并设计用于作为 cw3 兼容合约 的后端存储。

它提供了类似于 cw4-group (处理选举成员) 的 API,但而不是任命成员(由管理员或多重签名),其成员资格和权重基于他们抵押的代币数量。这类似于许多 DAO。

只能使用一个代币进行抵押,最小抵押量由 min_bond 确定,同时还有 tokens_per_weight,可用于标准化权重(例如,如果代币是 uatom,并且您希望每个 ATOM 有 1 个权重,则可以设置 tokens_per_weight = 1_000_000)。

此外,还有一个解绑期(Duration),它设定了代币在释放前冻结的时间。这些冻结的代币既不能用于投票,也不能由原始所有者收回。只有在解绑期结束后,您才能取回您的代币。这种流动性损失是存证为此合约提供的“赌注”。

实例化

待办

要创建它,您必须传递一个成员列表,以及可选的 admin,如果您希望使其可变。

pub struct InstantiateMsg {
    /// denom of the token to stake
    pub stake: String,
    pub tokens_per_weight: u64,
    pub min_bond: Uint128,
    pub unbonding_period: Duration,
}

成员由地址和权重定义。这些信息将转换为存储在它们的 CanonicalAddr 下的格式,该格式在 cw4 原始查询 中定义。

注意,0 是允许的权重。这不会赋予任何投票权,但它定义了这个地址是群组的一部分,这在某些情况下可能是有意义的。

成员的权重将计算为它们发送的资金(以代币计)除以 tokens_per_weight,向下取整到最接近的整数(即使用整数除法)。如果发送的总数小于 min_bond,则存证将保留,但它们将不计为成员。如果 min_bond 高于 tokens_per_weight,则不能有任何0权重的成员。

消息

大多数消息和查询由 cw4 规范 定义。请参阅它以获取更多信息。

以下消息已添加以处理存/解存代币

Bond{} - 将与消息一起发送的所有存证代币存证,并更新成员权重

Unbond{tokens} - 开始解绑给定数量的代币的过程。发送者立即失去这些代币的权重,并在 unbonding_period 后将其收回自己的钱包

Claim{} - 用来在合约定义的等待期(例如,1周)后收回之前“解绑”的原生代币

以及相应的查询

Claims{address} - 显示此地址解绑过程中的代币

Staked{address} - 显示此地址当前存证的代币数量。

依赖关系

~5–17MB
~191K SLoC