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 在 神奇豆
每月 684 次下载
在 3 个 crate(2 个直接) 中使用
185KB
3.5K SLoC
cw-vesting
此合约允许创建本地和 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),则此合约允许质押这些原生代币。
Delegate
、Undelegate
、Redelegate
和SetWithdrawAddress
只能由recipient
调用。WithdrawDelegatorReward
可以由任何人调用,以便于轻松自动复利。由于我们无法从CosmWasm检查SDK的状态,因此只有可能立即再委托(无需解押期)的资金可以再委托。
限制
虽然此合约允许委托原生代币,但它不允许投票。因此,在使用此合约时,请务必明智地选择您要委托的验证者。
取消
此解锁合约支持可选取消。例如,如果员工因任何原因离职,公司可以投票取消员工的工资。
这只在合约实例化时设置了owner
地址的情况下才可行,否则解锁合约不能由任何一方更改。
当合约取消时,以下操作将执行
- 解锁合约中的所有流动代币(非质押)将被用来偿还欠给接收者的任何未分发、已解锁的资金。
- 任何剩余的流动代币将退还给合约所有者。
- 调用
Delegate
和Redelegate
已被禁用。 - 调用
Undelegate
无需权限(允许任何人撤销合约的质押代币)。 - 任何待领取的质押奖励将由所有者领取,未来的质押奖励将分配给所有者。
设想前端将提示访客执行撤销质押,或者机器人将执行此操作。合约不能自动撤销,因为这会使恶意收益接收者向许多验证者质押,导致取消操作耗尽gas,防止合约可取消,并允许他们继续接收资金。
稳定币支持
此合约可以与稳定币(如$USDC)一起使用。它尚未支持自动兑换到稳定币,但可以通过其他合约或工具(如CronCat)启用此功能。
DAO在创建收益合约之前始终可以选择将代币兑换为稳定币,以确保没有价格滑点。例如,支付某人50% $USDC的建议可能包含以下三条消息
- 将50%的拨款代币兑换为$USDC
- 创建一个$USDC的收益合约
- 创建一个本地DAO代币的收益合约
归属
感谢Wynd DAO在cw20-vesting和他们的curve包上的先前工作,这些工作为这个合约的设计提供了信息和灵感。
依赖项
~4–6MB
~126K SLoC