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被按极低价格兑换,损失惨重。记住:流动性池要求等值双币存入。
流动性池的构成可以用一张图来展示:
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