2. AMM深度解析:恒定乘积公式、滑点与无常损失、流动性池的运作机制

大家好,我是你们的老朋友。今天咱们来啃一块硬骨头——AMM,也就是自动做市商。很多朋友刚接触DeFi时,觉得AMM就是个黑盒子,把钱扔进去就能赚手续费。但说实话,如果你不理解它的底层逻辑,踩坑是迟早的事。我见过太多人因为不懂滑点被三明治攻击,因为不懂无常损失而亏掉本金。嗯,今天我们就把它彻底拆开看看。

2.1 恒定乘积公式:AMM的数学灵魂

AMM的核心,说白了就是一个数学公式。最经典的Uniswap V2用的是恒定乘积公式

x * y = k

其中x和y分别代表两种资产的数量,k是一个常数。这个公式的意思是:无论你怎么交易,池子里两种资产的乘积必须保持不变。

举个例子。假设一个ETH/USDT池子,里面有10个ETH和20000个USDT。那么k = 10 * 20000 = 200000。现在你想用1000个USDT买ETH。交易后,池子里的USDT变成21000个。为了保持k不变,ETH的数量必须变成:

ETH = 200000 / 21000 ≈ 9.5238

也就是说,你花1000 USDT买到了10 - 9.5238 = 0.4762个ETH。这个价格就是由公式自动算出来的。

关键点:AMM没有传统的订单簿,价格完全由池子里的资产比例决定。池子越深,价格越稳定;池子越浅,价格波动越大。

我个人习惯把这个公式想象成一个跷跷板。一边是ETH,一边是USDT。你往USDT那边加码,ETH那边就会翘起来——价格自然就变了。

2.2 滑点:为什么你看到的和成交的不一样?

滑点,是每个交易者都会遇到的事。你看到的价格和实际成交价之间的差距,就是滑点。

为什么会这样?因为AMM的价格是非线性的。你交易的数量越大,对池子的冲击就越大,滑点也就越高。

咱们用刚才的例子继续。如果你只买0.1个ETH,需要花多少USDT?

目标ETH = 10 - 0.1 = 9.9
所需USDT = 200000 / 9.9 - 20000 ≈ 202.02 USDT
平均价格 = 202.02 / 0.1 ≈ 2020.2 USDT/ETH

但如果你要买5个ETH呢?

目标ETH = 10 - 5 = 5
所需USDT = 200000 / 5 - 20000 = 20000 USDT
平均价格 = 20000 / 5 = 4000 USDT/ETH

看到了吗?买0.1个ETH时价格是2020,买5个ETH时价格变成了4000。滑点从不到1%飙升到了接近100%。

避坑指南:我曾经在某个新项目上吃过亏。当时池子很浅,我贪图便宜没注意滑点设置,结果一笔交易被吃了15%的滑点。从那以后,我每次交易前都会先算一下滑点,或者直接用工具模拟。记住:大额交易一定要拆单,或者找深度好的池子

滑点公式可以这样表示:

滑点 = (实际成交价 - 初始价) / 初始价 * 100%

你想想看,如果池子深度足够,比如Uniswap上的ETH/USDC池子有几十亿美金,你交易个几万美金,滑点几乎可以忽略不计。但如果是那种刚上线、流动性只有几万美金的小池子,一笔交易就能把价格打飞。

2.3 无常损失:做市商的隐形杀手

无常损失,这个词听起来挺玄乎的。说白了就是:你提供流动性赚的手续费,可能还比不上你直接拿着币不动赚得多。

为什么会这样?因为AMM的机制决定了,当价格波动时,你的资产比例会发生变化。

咱们还是用ETH/USDT池子举例。假设你存入了1个ETH和2000个USDT,当时ETH价格是2000 USDT。你的总资产价值是4000 USDT。

现在ETH涨到了4000 USDT。套利者会来池子里买ETH,直到池子里的价格和外部市场一致。最终,池子里的ETH和USDT比例会变成:

ETH * USDT = 1 * 2000 = 2000 (你的份额)
新ETH = sqrt(2000 / 4000) * 2 ≈ 0.7071
新USDT = sqrt(2000 * 4000) * 2 ≈ 2828.43

你的总资产价值 = 0.7071 * 4000 + 2828.43 ≈ 5656.85 USDT

如果你没有提供流动性,而是直接拿着1个ETH和2000 USDT,你的资产价值 = 1 * 4000 + 2000 = 6000 USDT

看到了吗?你亏了343.15 USDT,这就是无常损失。

核心公式:无常损失 = (持有不动价值 - 做市价值) / 持有不动价值 * 100%

我刚开始做市时,总觉得无常损失是个伪命题。直到有一次,我重仓了一个波动极大的山寨币池子,结果币价翻了3倍,我算了一下,无常损失高达15%。虽然手续费赚了一些,但整体算下来还不如直接拿着币。嗯,那次教训挺深刻的。

这里有个表格,可以直观地看到价格变化对无常损失的影响:

价格变化幅度 无常损失比例
±10% ≈0.5%
±25% ≈3.0%
±50% ≈5.7%
±100% ≈13.4%
±200% ≈25.0%
±300% ≈33.8%

所以,无常损失并不是真的「损失」,而是「机会成本」。只要你不撤出流动性,价格涨回来,损失就消失了。但如果你在价格大幅波动时撤出,那就真的亏了。

2.4 流动性池的运作机制:从存款到收益

好了,现在我们把前面三个概念串起来,看看流动性池到底是怎么运作的。

流动性池本质上是一个智能合约,里面锁定了两种资产。做市商(也就是你)把资产存进去,获得LP代币作为凭证。交易者通过这个池子进行交易,支付手续费。手续费按比例分给所有LP代币持有者。

整个流程可以概括为:

  1. 存款:你按照当前比例存入两种资产,获得LP代币。
  2. 交易:交易者用A资产换B资产,支付0.3%的手续费(Uniswap标准)。
  3. 收益:手续费自动累积到池子里,你的LP代币价值随之增加。
  4. 取款:你销毁LP代币,按比例取出两种资产。

这里有个细节要注意:你存入的资产比例必须和池子当前的比例一致。比如池子里是50% ETH和50% USDT,你就得按这个比例存。如果你只存ETH,系统会自动帮你兑换一部分成USDT,这个过程会产生滑点。

我的建议:如果你打算长期做市,尽量选择稳定币对(比如USDC/USDT)或者波动较小的资产对。这样无常损失小,手续费收益稳定。我个人的策略是,80%的资金放在稳定币池子里,20%放在主流币池子里博取更高收益。

下面这张图展示了AMM流动性池的核心运作逻辑:

AMM流动性池核心运作逻辑 做市商 (LP) 交易者 流动性池 x * y = k ETH + USDT 存入资产 LP代币 + 手续费 支付A资产 获得B资产 套利者 外部市场 套利者确保AMM价格与外部市场保持一致

这张图里,做市商提供流动性,交易者消耗流动性,套利者则负责维持价格平衡。三者缺一不可。

2.5 实战中的注意事项

最后,我分享几个实战中总结的经验:

  • 选择池子要看深度:深度越大的池子,滑点越小,交易体验越好。我一般会选TVL(总锁仓量)在1000万美金以上的池子。
  • 关注手续费率:不同平台的手续费率不一样。Uniswap是0.3%,Curve的稳定币池子只有0.04%。手续费率越高,做市收益越高,但交易者也会更少。
  • 注意无常损失:如果你做市的资产价格波动很大,无常损失可能会吃掉你的手续费收益。建议用工具(比如APY.Vision)提前计算一下。
  • 不要追高:我见过很多人看到某个币涨了,就冲进去做市。结果币价回调,无常损失加上币价下跌,双重打击。记住,做市不是炒币。

再次提醒:流动性挖矿虽然看起来收益高,但风险也不小。除了无常损失,还有智能合约风险、项目方跑路风险等。我曾经参与过一个项目,合约里有后门,管理员直接把池子里的钱转走了。所以,一定要选经过审计的项目,最好是用过一段时间、社区活跃的。

好了,这一章的内容就到这里。AMM的底层逻辑其实不复杂,但细节很多。理解了恒定乘积公式、滑点和无常损失,你就掌握了做市商的核心知识。下一章我们会聊更进阶的内容——如何优化做市策略,敬请期待。

专注资料整理