4、激励分配算法:按时间加权分配、按交易量加权分配、按锁仓时长加权分配

做流动性激励,说白了就是怎么分钱。

钱分得公平,大家愿意来。分得不公平,池子很快就干了。

我个人习惯把激励分配算法分成三类:时间加权交易量加权锁仓时长加权。这三种思路,几乎覆盖了市面上所有主流 DeFi 项目的激励逻辑。

4.1 按时间加权分配

这是最朴素的做法。你提供流动性多久,就拿多少奖励。

公式很简单:

用户奖励 = 总奖励 * (用户提供流动性的时长 / 所有用户提供流动性的总时长)

嗯,这里要注意一个坑。我遇到过不少项目方,直接用「区块高度差」来算时长。结果呢?

以太坊出块时间不稳定,有时候 12 秒,有时候 20 秒。用区块高度算出来的时长,跟实际时间差很多。我建议用 block.timestamp 来算,虽然也有微小偏差,但比区块高度靠谱多了。

适用场景:

  • 稳定币池(价格波动小,用户更看重时间)
  • 早期项目冷启动(简单粗暴,用户容易理解)

避坑指南:

我曾经在 Curve 的某个分叉项目里看到,他们直接用区块高度差来分配奖励。结果以太坊一次重组,回滚了十几个区块,用户的奖励全乱了。后来他们紧急升级,改成了用时间戳。

所以,永远不要依赖区块高度来算时间

4.2 按交易量加权分配

这个思路更「DeFi」一些。谁贡献的交易量多,谁拿的奖励就多。

公式:

用户奖励 = 总奖励 * (用户贡献的交易量 / 所有用户贡献的总交易量)

你想想看,这其实是在鼓励「做市商」行为。交易量大的用户,通常都是专业的做市团队或者高频交易者。他们能带来真实的交易深度和手续费收入。

但这里有个经典问题——刷量

我记得 2021 年有个 DEX,搞了个交易量挖矿。结果一群机器人进来,左手倒右手,一天刷了几千万美元的交易量,把奖励全薅走了。真实用户一分钱没拿到。

我的建议:

如果要用交易量加权,一定要加一个最小持仓时间的约束。比如,用户必须至少持有 LP Token 24 小时,才能参与交易量统计。这样能有效防止「闪电刷量」。

另外,交易量的统计口径也要注意。是用「名义交易量」还是「调整后交易量」?

我个人习惯用调整后交易量。比如,把稳定币之间的交易打个折扣,因为那些交易对流动性的贡献其实不大。而像 ETH/USDC 这种核心交易对,可以给更高的权重。

4.3 按锁仓时长加权分配

这个算法,说白了就是「越忠诚,拿越多」。

用户锁仓的时间越长,每个单位时间的奖励权重就越高。通常用指数函数或者阶梯函数来实现。

举个例子:

权重 = 锁仓天数 ^ 0.5

用户奖励 = 总奖励 * (用户权重 / 所有用户权重之和)

为什么用开方?因为线性增长太猛了,锁 100 天的用户权重是锁 1 天的 100 倍,这会让新用户完全没动力。开方之后,100 天的权重是 10,1 天的权重是 1,差距没那么夸张。

实际案例:

我参与过的一个项目,用的是分段线性函数:

  • 锁仓 0-30 天:权重 = 1
  • 锁仓 30-90 天:权重 = 1.5
  • 锁仓 90-180 天:权重 = 2
  • 锁仓 180 天以上:权重 = 3

这样设计的好处是,用户能清晰看到「再锁 10 天就能升级到下一档」,心理上更有动力。

注意:

锁仓时长加权有一个副作用——流动性僵化。用户为了拿高权重,不愿意撤出流动性。一旦市场出现剧烈波动,池子里的资金可能无法及时流出,导致严重的无常损失。

我曾经在 Curve 的某个池子里看到,锁仓 1 年的用户占了 70% 的权重。结果 UST 脱锚那天,这些用户想撤都撤不了,因为锁仓合约还没到期。最后只能眼睁睁看着资产归零。

所以,我建议一定要设置紧急退出机制。比如,允许用户提前退出,但会扣除一部分奖励作为惩罚。这样既保护了用户,也维护了池子的健康。

4.4 三种算法的对比

算法 核心逻辑 优点 缺点 适用场景
时间加权 按提供流动性的时长分配 简单、公平、易理解 容易被「躺平」用户薅羊毛 稳定币池、早期项目
交易量加权 按贡献的交易量分配 激励真实做市行为 容易被刷量攻击 高流动性池、专业做市商
锁仓时长加权 按锁仓时间长短分配 培养忠诚用户 流动性僵化、紧急情况难退出 长期激励、治理代币

4.5 实际项目中的组合策略

说实话,很少有项目只用一种算法。我见过的大多数项目,都是把三种算法组合起来用。

比如 Uniswap V3 的流动性激励,其实就是「时间加权 + 交易量加权」的混合体。用户提供流动性的时间越长,同时交易量越大,拿到的奖励就越多。

再比如 Curve 的 veCRV 模型,本质上是「锁仓时长加权」的变种。用户锁 CRV 的时间越长,投票权越大,能获得的奖励也越多。

我个人比较推荐的一种组合是:

  • 基础奖励:按时间加权分配(保证基本公平)
  • 额外奖励:按交易量加权分配(激励活跃用户)
  • 忠诚奖励:按锁仓时长加权分配(培养长期用户)

这样三层结构,既能防止刷量,又能留住核心用户,还能让新用户有参与感。

一个小技巧:

在智能合约里实现这些算法时,我建议用 accumulator 模式。不要每次分配都遍历所有用户,那样 gas 费会爆炸。而是每个用户维护一个「已领取」的累计值,每次领取时再计算增量。

具体实现可以参考 Synthetix 的 StakingRewards 合约,那是业界标准。

4.6 本章知识体系

下面这张图,是我自己画的三种算法的核心逻辑对比。你可以看到,它们其实是在「公平」和「效率」之间做权衡。

激励分配算法核心逻辑 时间加权分配 交易量加权分配 锁仓时长加权分配 核心指标:区块时间 核心指标:交易量 核心指标:锁仓天数 优点:简单公平 缺点:易被薅羊毛 优点:激励做市 缺点:易被刷量 优点:培养忠诚 缺点:流动性僵化 实际项目建议:三层组合策略 基础奖励(时间) + 额外奖励(交易量) + 忠诚奖励(锁仓)

好了,这一章的内容就到这里。三种算法各有优劣,关键是要根据你的项目阶段和用户群体来选。没有银弹,只有最适合的。


专注资料整理