3、AMM与流动性池:恒定乘积做市商原理、流动性池的构成、无常损失的概念与计算

这一章,我们来聊聊DeFi最核心的基石——AMM和流动性池。说实话,我最早接触这个领域时,第一反应是:这不就是数学课上学过的反比例函数吗?但真正深入项目后才发现,这里面门道可深了。

3.1 恒定乘积做市商原理

恒定乘积做市商,简称CPMM。说白了,就是一条公式:x * y = k

其中x和y分别代表池子里两种资产的数量,k是一个常数。交易的本质,就是改变x和y的比例,但保持乘积不变。

举个例子。假设一个ETH/USDT池子,里面有10个ETH和20000个USDT。那么k = 10 * 20000 = 200000。

你想用USDT买ETH。你往池子里加了1000个USDT,池子里的USDT变成21000。为了保持k不变,ETH的数量必须变成:200000 / 21000 ≈ 9.5238个。

所以你买到了:10 - 9.5238 = 0.4762个ETH。

嗯,这里要注意:你付出的1000 USDT,并没有全部变成ETH。有一部分变成了滑点损失。为什么会这样?因为池子深度有限,你的交易改变了价格。

核心公式:

x * y = k

其中:
x = 资产A的数量
y = 资产B的数量
k = 恒定乘积

交易后:
(x + Δx) * (y - Δy) = k
Δy = y - k / (x + Δx)

我在项目中遇到过一个问题:当交易量特别大时,滑点会高得离谱。比如你想用10000 USDT买ETH,按上面的池子算,你只能买到约4.76个ETH,而按初始价格2000 USDT/ETH算,你应该能买到5个。这0.24个ETH的差价,就是滑点损失。

个人经验:实际项目中,我们通常会设置滑点保护。比如Uniswap默认0.5%的滑点容忍度。我曾经见过有人没设滑点保护,一笔交易被MEV机器人抢跑,损失了30%的资金。所以,滑点保护一定要设。

3.2 流动性池的构成

流动性池,说白了就是一个智能合约管理的资金池。它由三部分组成:

  • 代币对:两种代币的储备,比如ETH和USDT
  • 流动性代币:LP Token,代表你在池子里的份额
  • 手续费:每笔交易收取0.3%左右,分给流动性提供者

你想想看,流动性提供者(LP)把两种代币按比例存入池子,获得LP Token。当别人交易时,LP就能分到手续费。这听起来很美好,对吧?

但这里有个坑:你存入的两种代币,比例必须和池子当前的比例一致。比如池子里ETH:USDT = 1:2000,你存1个ETH就必须同时存2000个USDT。否则,你的存入会改变价格,导致你被套利者吃掉。

避坑指南:我曾经见过一个新手,往ETH/USDT池子里只存了ETH没存USDT。结果交易执行时,他的ETH被按极低价格兑换,损失惨重。记住:流动性池要求等值双币存入

流动性池的构成可以用一张图来展示:

流动性池 ETH + USDT x * y = k 手续费: 0.3% 流动性提供者 存入: 1 ETH + 2000 USDT 获得: LP Token 收益: 手续费分成 交易者 支付: 1000 USDT 获得: 0.4762 ETH 成本: 滑点损失 存入流动性 执行交易

3.3 无常损失的概念与计算

无常损失,英文叫Impermanent Loss。这是流动性提供者最头疼的问题。

什么叫无常损失?简单说:你存入池子里的资产,如果价格变化了,你拿回来时的价值,可能比单纯持有要少。这个差额,就是无常损失。

我举个例子你就明白了。

假设ETH价格从2000 USDT涨到4000 USDT。你当初存了1个ETH和2000个USDT,总价值4000 USDT。

如果单纯持有,现在价值:1 * 4000 + 2000 = 6000 USDT。

但在池子里呢?因为套利者会搬平价格,池子里的ETH会变少,USDT会变多。最终你赎回时,可能只有0.7个ETH和2800个USDT,总价值:0.7 * 4000 + 2800 = 5600 USDT。

无常损失 = 6000 - 5600 = 400 USDT,约6.67%。

无常损失计算公式:

IL = 1 - (2 * √r) / (1 + r)

其中 r = 新价格 / 旧价格

当 r = 2(价格翻倍)时:
IL = 1 - (2 * √2) / (1 + 2) = 1 - 2.828 / 3 = 5.72%

当 r = 0.5(价格腰斩)时:
IL = 1 - (2 * √0.5) / (1 + 0.5) = 1 - 1.414 / 1.5 = 5.72%

你看,价格翻倍和腰斩,无常损失居然一样!这就是数学的对称性。

价格变化 无常损失
±1.25x 约0.6%
±1.5x 约2.0%
±2x 约5.7%
±3x 约13.4%
±4x 约20.0%
±5x 约25.5%

我的建议:无常损失不是真正的损失,因为只要你不赎回LP Token,价格涨回来损失就消失了。但如果你在价格波动大时赎回,那就真亏了。我个人习惯是:对于稳定币对(如USDT/USDC),无常损失几乎为零,可以放心做LP。对于波动大的币对,一定要算清楚手续费收益能否覆盖无常损失。

最后说一句:无常损失是AMM的固有特性,无法完全避免。但你可以通过选择波动小的币对、或者选择有激励的池子来对冲。记住,做LP不是无风险的,手续费收益和价格波动风险要权衡好。

曾经踩过的坑:有一次我在一个土狗项目的池子里做LP,项目方突然拉盘5倍,我兴冲冲去赎回,结果发现无常损失高达25%,手续费收益根本覆盖不了。从那以后,我对于非主流币对的LP,都会先算一笔账:预期手续费收益 vs 可能的最大无常损失。


公众号:蓝海资料掘金营,微信deep3321