1. 概述
参与 Curve DAO 治理需要通过 VotingEscrow 合约锁定 CRV 获得 veCRV。
约束
- veCRV 不可转让。
- veCRV 的获得方式是锁定 CRV。
- 最大锁仓期为 MAXLOCKTIME=4 years 。
- 投票权随剩余锁仓时间线性衰减。
2. 锁仓与 veCRV 计算
2.1 线性计算公式
veCRV=CRVlocked×MAX_LOCK_TIMEremaining_lock_time
2.2 示例(按 1 CRV 计)
| 锁仓期限 | 初始 veCRV | 权重占比 |
|---|
| 4 years | 1.00 | 100% |
| 3 years | 0.75 | 75% |
| 2 years | 0.50 | 50% |
| 1 year | 0.25 | 25% |
3. 数学建模(bias / slope)
3.1 用户投票权
wi(t)=max(0,bi−si×Δti)
3.2 全局总投票权
W(t)=max(0,B−S×Δt0)
3.3 关系与定义
- B=∑bi 。
- S=∑si 。
- W(t)=max(0,∑wi(t)) 。
3.4 时间差定义
- Δti=t−ti 。
- Δt0=t−t0 。
3.5 参数含义
- wi :用户 i 的投票权。
- bi :用户 bias(用户 checkpoint 时的截距)。
- si :用户 slope(每秒衰减斜率)。
- Δti :距离用户上次 checkpoint 的经过时间。
- W :全局总投票权。
- B :全局 bias(全局截距)。
- S :全局 slope(全局每秒衰减斜率)。
- Δt0 :距离全局上次 checkpoint 的经过时间。
4. Checkpoint 更新流程
一次 checkpoint 的更新可分为三步:
- 时间推进(将全局状态衰减到当前时刻)
- B′=Bprev−Sprev×Δt 。
- S′=Sprev 。
- 叠加用户差量(将用户状态变化合并到全局)
- Δb=bnew−bold 。
- Δs=snew−sold 。
- Bnew=B′+Δb 。
- Snew=S′+Δs 。
- 更新到期调度(slopeChanges)
- 先撤销旧调度: slopeChanges[endold]=slopeChanges[endold]−sold 。
- 再写入新调度: slopeChanges[endnew]=slopeChanges[endnew]+snew 。
- 时间推进跨过某周 tk 时: S=S−slopeChanges[tk] 。
5. 按周对齐与 Gas 成本
5.1 按周分桶(week rounding)
为避免为每个“精确到秒”的到期时刻维护状态,VotingEscrow 通常将 unlock_time 向下对齐到整周(例如 tk=⌊t/WEEK⌋×WEEK )。
对齐后的效果是:到期事件只会发生在离散的周边界 tk 上。
-
slopeChanges 的 key 变为有限集合 {t0,t1,…,tn} (每周一个桶)。
-
任意用户的锁仓到期只会影响其所在周桶的 slopeChanges[end] 。
-
由此可以将“全局斜率 S 的跳变”离散化处理。
5.2 全局补账(补齐 missed weeks)
全局状态不会随时间自动更新。仅当发生交互(例如创建锁仓、增加锁仓、延长锁仓、提取到期锁仓)时,合约才会把全局从上次 checkpoint 的时间推进到当前时间。
推进时按周循环:每跨过一周 tk ,就应用该周桶的到期调度,使全局斜率发生跳变。
- 记区间开始时(刚过 tk−1 )的全局状态为 (Bk−1,Sk−1) 。
- 在区间 [tk−1,tk] 内,斜率不变,因此 bias 先按线性衰减推进到周边界:
- Bk−=Bk−1−Sk−1×(tk−tk−1) 。
- Sk−=Sk−1 。
- 到达周边界 tk 后,执行本周到期的斜率跳变(从全局斜率中移除到期部分):
- Sk=Sk−−slopeChanges[tk] 。
- Bk=Bk− 。
其中, Bk−,Sk− 表示“应用 slopeChanges[tk] 之前”的中间量, Bk,Sk 表示“应用之后”的全局量。
5.3 Gas 复杂度直觉
- 时间推进的循环次数约等于“遗漏的周数”,因此成本近似 O(missed_weeks) 。
- 复杂度与用户总数无关,因为推进只依赖全局桶(每周一个),不需要遍历所有用户。
- 若长时间无人触发全局更新,下一次交互需要补齐较多周桶,单笔交易 gas 可能偏高。
5.4 工程含义(为何这样设计)
- 若不做按周对齐,slopeChanges 的 key 可能是大量离散时间点,状态膨胀且推进成本不可控。
- 按周对齐用可控的时间粒度换取可控的状态规模与可预测的最坏成本。