5 个稳定版本

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

#989神奇豆

Download history 2/week @ 2024-06-10 2/week @ 2024-06-24 3/week @ 2024-07-01 30/week @ 2024-07-08 151/week @ 2024-07-15 312/week @ 2024-07-22 102/week @ 2024-07-29 119/week @ 2024-08-05

每月 684 次下载
3 个 crate(2 个直接) 中使用

BSD-3-Clause

185KB
3.5K SLoC

cw-vesting

cw-vesting on crates.io docs.rs

此合约允许创建本地和 cw20 令牌流,这使得支付可以在一段时间内连续进行。

主要特点包括

  • 可选合约所有者,可以取消支付
  • 支持本地和 cw20 令牌
  • 允许通过外部方或工具如 CronCat 自动分发
  • 对于链治理令牌的支付,可以进行质押和领取质押奖励的能力
  • wynd-utils 驱动的复杂索赔计划配置

实例化

要实例化此合约的新实例,您可以指定合约所有者以及支付参数。

cw-payroll-factory 可以用于实例化多个 cw-vesting 合约并查询它们。

参数

合约的 owner 是可选的。没有所有者的合约无法被取消。所有者可以是进行支付的 DAO 或中立第三方。

索赔曲线

此软件包使用来自 wynd-utils 的曲线实现。

它支持表示索赔计划的 2 种类型的 曲线

  • 饱和线性:以线性速率在开始和停止时间进行索赔。
  • 分段线性:在一系列 (时间, 已索赔) 点之间进行线性插值。
分段线性

分段曲线可以用来创建更复杂的股权解锁计划。例如,假设我们有一个1个月内解锁50%,剩余50%在1年内解锁的计划。我们可以使用分段线性曲线来实现这个复杂的计划。

分段线性曲线接受一个 steps 参数,它是一个元组列表 (timestamp, vested)。然后它将在这些点之间进行线性插值以创建解锁曲线。例如,给定点 (0, 0), (2, 2), (4, 8),它将创建一个看起来像这样的解锁曲线

  8 +----------------------------------------------------------------------+
    |        +        +        +        +       +        +        +     ** |
  7 |-+                                                               ** +-|
    |                                                              ***     |
    |                                                            **        |
  6 |-+                                                        **        +-|
    |                                                       ***            |
  5 |-+                                                   **             +-|
    |                                                   **                 |
    |                                                ***                   |
  4 |-+                                            **                    +-|
    |                                            **                        |
  3 |-+                                       ***                        +-|
    |                                       **                             |
    |                                     **                               |
  2 |-+                              *****                               +-|
    |                         *******                                      |
  1 |-+               ********                                           +-|
    |          *******                                                     |
    |   *******       +        +        +       +        +        +        |
  0 +----------------------------------------------------------------------+
    0       0.5       1       1.5       2      2.5       3       3.5       4

如您所见,它以直线形式从 (0, 0) 行进到 (2, 2),然后增加斜率并行进到 (4, 8)

一个在2023年1月1日开始解锁50%,剩余50%在接下来的1年内解锁的曲线。适用于100个Juno。

{
    "piecewise_linear": [
        (1672531200, "0"),
        (1675209600, "50000000"),
        (1706745600, "100000000")
    ]
}

创建原生代币解锁

如果您要解锁原生代币,在实例化合约时需要包括您要解锁的原生资金的确切金额。

创建CW20解锁

可以使用cw20 发送/接收流程为cw20解锁付款提供资金。这涉及到从cw20代币合约触发一个发送消息,并会将接收回调发送到解锁合约。

分发付款

解锁付款可以在启动时间之后任何时刻通过触发分发消息来领取。

任何人都可以调用分发消息,允许代理如CronCat自动触发付款。

质押原生代币

如果底层原生代币与原生链的质押代币相匹配(即在Juno网络上为$JUNO),则此合约允许质押这些原生代币。

DelegateUndelegateRedelegateSetWithdrawAddress只能由recipient调用。WithdrawDelegatorReward可以由任何人调用,以便于轻松自动复利。由于我们无法从CosmWasm检查SDK的状态,因此只有可能立即再委托(无需解押期)的资金可以再委托。

限制

虽然此合约允许委托原生代币,但它不允许投票。因此,在使用此合约时,请务必明智地选择您要委托的验证者。

取消

此解锁合约支持可选取消。例如,如果员工因任何原因离职,公司可以投票取消员工的工资。

这只在合约实例化时设置了owner地址的情况下才可行,否则解锁合约不能由任何一方更改。

当合约取消时,以下操作将执行

  1. 解锁合约中的所有流动代币(非质押)将被用来偿还欠给接收者的任何未分发、已解锁的资金。
  2. 任何剩余的流动代币将退还给合约所有者。
  3. 调用 DelegateRedelegate 已被禁用。
  4. 调用 Undelegate 无需权限(允许任何人撤销合约的质押代币)。
  5. 任何待领取的质押奖励将由所有者领取,未来的质押奖励将分配给所有者。

设想前端将提示访客执行撤销质押,或者机器人将执行此操作。合约不能自动撤销,因为这会使恶意收益接收者向许多验证者质押,导致取消操作耗尽gas,防止合约可取消,并允许他们继续接收资金。

稳定币支持

此合约可以与稳定币(如$USDC)一起使用。它尚未支持自动兑换到稳定币,但可以通过其他合约或工具(如CronCat)启用此功能。

DAO在创建收益合约之前始终可以选择将代币兑换为稳定币,以确保没有价格滑点。例如,支付某人50% $USDC的建议可能包含以下三条消息

  1. 将50%的拨款代币兑换为$USDC
  2. 创建一个$USDC的收益合约
  3. 创建一个本地DAO代币的收益合约

归属

感谢Wynd DAO在cw20-vesting和他们的curve包上的先前工作,这些工作为这个合约的设计提供了信息和灵感。

依赖项

~4–6MB
~126K SLoC