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 核心原理 恒定乘积公式 x * y = k 流动性池机制 LP代币 + 手续费 滑点 交易量越大滑点越高 无常损失 价格波动导致本金缩水 关键关系 • 交易 = 沿曲线滑动 • 深度 = 池子大小 • 滑点 = 深度不足 • 无常损失 = 价格偏离 • 手续费 = LP补偿 ⚠ 滑点 + 无常损失 是AMM两大核心风险

这张图把AMM的四个核心概念串在了一起。你从中心出发,沿着四条分支走,就能理解它们之间的逻辑关系。

2.6 小结

这一章我们聊了AMM的数学基础、流动性池的运作、滑点的成因,以及无常损失的计算。说实话,这些概念单独看都不难,但组合在一起,就构成了DEX的微观结构。

我个人觉得,理解AMM的关键不在于记住公式,而在于理解「价格由池子存量决定」这个思想。一旦你接受了这个设定,后面的所有内容都会变得顺理成章。

下一章我们会深入交易流程和价格影响模型,到时候你会看到这些概念在实际场景中是如何运作的。


专注资料整理