2. 自动做市商(AMM)原理:恒定乘积公式的数学推导、流动性池的运作机制、滑点与无常损失的概念
聊到DEX,绕不开的就是AMM。说实话,我第一次接触这个名词时,觉得它很高大上。后来真正上手写合约、调参数,才发现它的核心逻辑其实非常朴素——就是一条反比例曲线。
今天这一章,我会从数学推导开始,一步步拆解AMM的底层逻辑。你不需要有很强的数学背景,只要会乘除法,就能看懂。
2.1 恒定乘积公式:x * y = k
这个公式是Uniswap V2的核心。它长这样:
x * y = k
其中:
- x:流动性池中代币A的数量
- y:流动性池中代币B的数量
- k:一个常数,交易前后保持不变
什么意思呢?就是说,无论你怎么交易,池子里两种代币的乘积始终不变。你往池子里塞进一种代币,就必须取出另一种,而且取出的量要保证乘积不变。
举个例子。假设一个池子里有100个ETH和200,000个USDC。那么:
k = 100 * 200,000 = 20,000,000
现在你想用10个ETH换USDC。交易后,池子里ETH变成110个。要保持k不变,USDC的数量y'必须满足:
110 * y' = 20,000,000
y' = 20,000,000 / 110 ≈ 181,818.18
所以你拿到的USDC是:200,000 - 181,818.18 = 18,181.82个。
核心要点:交易的本质就是沿着反比例曲线滑动。你输入的量越大,滑动的幅度就越大,价格变化也越剧烈。
2.2 流动性池的运作机制
流动性池,说白了就是一个智能合约管理的资金池。用户(我们叫流动性提供者,LP)把两种代币按比例存入池子,换取LP代币。交易者用其中一种代币换另一种,池子自动执行兑换。
我个人习惯把流动性池想象成一个自动售货机。你投进去一个ETH,它吐出来一定数量的USDC。价格由池子里的存量决定。
这里有几个关键点:
- 初始定价:第一个存入的人决定初始价格比例。比如存入100 ETH和200,000 USDC,那么1 ETH = 2,000 USDC。
- 交易费用:每次交易收取0.3%的手续费,全部回流到池子,分配给LP。
- LP代币:代表你在池子中的份额。销毁LP代币就能赎回对应的资产。
避坑指南:我曾经在测试网上部署过一个池子,忘了设置滑点保护。结果一个交易直接把池子掏空了。嗯,从那以后我每次部署都会加上滑点检查。
2.3 滑点:为什么交易量越大越吃亏?
滑点,就是实际成交价与预期价格之间的偏差。在AMM里,滑点是不可避免的。
为什么会这样?因为池子的深度是有限的。你交易得越多,价格曲线就越陡峭。说白了,你是在跟整个池子博弈。
我们来看一个表格,直观感受一下:
| 交易量(ETH) | 预期价格(USDC/ETH) | 实际成交价(USDC/ETH) | 滑点 |
|---|---|---|---|
| 1 | 2,000 | 1,980 | 1% |
| 10 | 2,000 | 1,818 | 9.1% |
| 50 | 2,000 | 1,333 | 33.3% |
你看,交易量越大,滑点越离谱。所以大额交易通常会被拆分成多笔,或者走聚合器寻找更好的路径。
注意:滑点不是bug,是AMM的固有特性。你无法消除它,只能管理它。设置合理的滑点容忍度(比如0.5%-1%)是交易的基本素养。
2.4 无常损失:LP的隐形杀手
无常损失,是AMM里最容易被忽视的风险。很多新手LP以为只要存进去就能稳赚手续费,结果发现本金反而缩水了。
无常损失的本质是:当池子里的代币价格相对于存入时发生变化,你的资产价值会低于单纯持有这两种代币的价值。
举个例子。你存入1 ETH和2,000 USDC,当时1 ETH = 2,000 USDC。后来ETH涨到4,000 USDC。如果你单纯持有,你的资产价值是:1 * 4,000 + 2,000 = 6,000 USDC。但如果你在池子里,由于套利者会搬平价格,你的ETH会被换成USDC,最终资产价值只有约5,657 USDC。损失了约5.7%。
我整理了一个表格,方便你快速估算:
| 价格变化幅度 | 无常损失比例 |
|---|---|
| 1.25x(+25%) | 约0.6% |
| 1.5x(+50%) | 约2.0% |
| 2x(+100%) | 约5.7% |
| 3x(+200%) | 约13.4% |
| 4x(+300%) | 约20.0% |
你想想看,如果价格波动超过2倍,无常损失就开始变得显著了。所以做LP之前,一定要评估代币的波动性。
我的经验:稳定币对(比如USDC/DAI)的无常损失几乎可以忽略,因为价格波动小。但如果你做ETH/USDC这种波动大的池子,手续费收入必须能覆盖无常损失,否则就是亏本买卖。
2.5 知识体系总览
下面这张SVG图,把本章的核心逻辑串起来了。你可以把它当作一张思维导图来用。
这张图把AMM的四个核心概念串在了一起。你从中心出发,沿着四条分支走,就能理解它们之间的逻辑关系。
2.6 小结
这一章我们聊了AMM的数学基础、流动性池的运作、滑点的成因,以及无常损失的计算。说实话,这些概念单独看都不难,但组合在一起,就构成了DEX的微观结构。
我个人觉得,理解AMM的关键不在于记住公式,而在于理解「价格由池子存量决定」这个思想。一旦你接受了这个设定,后面的所有内容都会变得顺理成章。
下一章我们会深入交易流程和价格影响模型,到时候你会看到这些概念在实际场景中是如何运作的。