2. 自动做市商(AMM)深度解析:恒定乘积公式、滑点、无常损失原理

自动做市商,简称 AMM,是 DeFi 世界里最核心的乐高积木之一。它彻底改变了我们交易的方式——不再需要挂单等对手盘,直接跟一个「机器人」交易就行。这个机器人背后,就是一条数学公式。

我个人习惯把 AMM 分成两派:一派是 Uniswap 为代表的「恒定乘积」派,另一派是 Curve 为代表的「稳定币」派。今天咱们重点聊前者,因为它是基础中的基础。

2.1 恒定乘积公式:x * y = k

这个公式简单到令人发指。一个池子里有两种资产,比如 ETH 和 USDC。x 是 ETH 的数量,y 是 USDC 的数量,k 是一个常数。交易的本质就是:你往池子里塞一种资产,同时抽走另一种,但要保证 x * y 的结果不变。

举个例子:

假设池子里有 10 ETH 和 20,000 USDC。
那么 k = 10 * 20,000 = 200,000。

你想用 1 ETH 换 USDC。
交易后,池子里 ETH 变成 11。
新的 USDC 数量 = k / 11 = 200,000 / 11 ≈ 18,181.82。
你得到的 USDC = 20,000 - 18,181.82 = 1,818.18。

嗯,这里要注意:你实际拿到的 USDC 并不是按「1 ETH = 2,000 USDC」算的。为什么?因为池子里的价格在变。你交易前,价格是 2,000;交易后,价格变成了 18,181.82 / 11 ≈ 1,652.89。你实际上是用一个「平均价格」成交的。

核心要点: 恒定乘积公式保证了无论交易量多大,池子永远不会枯竭。但代价是——交易量越大,你得到的单价越差。这就是滑点的来源。

2.2 滑点:为什么大额交易总是吃亏?

滑点,说白了就是你预期成交价和实际成交价之间的差值。在 AMM 里,滑点是数学上不可避免的。

我刚开始做链上分析时,经常看到有人因为滑点设置得太低,导致交易一直 pending。也有的人滑点设得太高,被三明治攻击吃了大亏。这里面的门道,我踩过不少坑。

滑点的大小取决于两个因素:

  • 交易规模:你交易量占池子总流动性的比例越大,滑点越高。
  • 池子深度:流动性越深的池子,同样交易量的滑点越小。

咱们用公式算一下滑点:

假设池子有 100 ETH 和 200,000 USDC(k = 20,000,000)。
你想买 10 ETH,需要支付多少 USDC?

买入后池子 ETH = 110。
新的 USDC = 20,000,000 / 110 ≈ 181,818.18。
你需要支付 USDC = 200,000 - 181,818.18 = 18,181.82。

平均价格 = 18,181.82 / 10 = 1,818.18 USDC/ETH。
而当前市价是 2,000 USDC/ETH。
滑点 = (2,000 - 1,818.18) / 2,000 ≈ 9.09%。

避坑指南: 我曾经在某个新上线的土狗池子里交易,滑点设了 5%,结果实际滑点高达 30%。因为池子太浅,我的交易直接把价格打穿了。后来我养成了一个习惯:交易前先查一下池子深度,用 Dune 或者 DexScreener 看一眼流动性分布。

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

无常损失,英文叫 Impermanent Loss,是 AMM 做市商最头疼的问题。你想想看,你把 ETH 和 USDC 按 1:1 的价值存入池子,结果 ETH 涨了 2 倍。你取出来的时候,发现手里的 ETH 变少了,USDC 变多了,总价值还不如当初直接拿着 ETH 不动。

为什么会这样?因为 AMM 的机制决定了:当价格变化时,池子会自动重新平衡。价格上涨的资产会被卖出,价格下跌的资产会被买入。作为做市商,你被迫「高卖低买」——这恰恰是散户最忌讳的操作。

咱们算一笔账:

场景 初始状态 ETH 涨 2 倍后
直接持有 5 ETH + 10,000 USDC 5 * 4,000 + 10,000 = 30,000 USDC
做市(x*y=k) 5 ETH + 10,000 USDC ≈ 7.07 ETH + 14,142 USDC = 28,284 USDC
无常损失 - 30,000 - 28,284 = 1,716 USDC(约 5.72%)

你看,ETH 涨了 2 倍,你反而亏了 5.72%。这就是无常损失。价格波动越大,损失越严重。

我的经验: 无常损失不是真正的「损失」,只要你不出金,它只是账面浮亏。但如果你做市的池子价格波动剧烈,比如土狗币,那无常损失可能吃掉你所有的交易手续费收入。我个人建议:做市首选稳定币对(如 USDC/USDT),或者选择波动率低的资产对。

2.4 知识体系总览

下面这张图是我自己梳理的 AMM 核心逻辑,你看一眼就能明白整个框架:

AMM 核心知识体系 自动做市商 (AMM) 恒定乘积公式 x * y = k 滑点 (Slippage) 预期价 vs 实际价 无常损失 (IL) 做市 vs 持有 池子永不枯竭 交易量越大,单价越差 受交易规模影响 受池子深度影响 三明治攻击风险 价格波动越大,IL 越高 稳定币对 IL 接近 0 手续费可部分抵消 IL 理解三者关系,才能做好 DeFi 做市

这张图把 AMM 的三个核心概念串起来了。你从中心往外看:恒定乘积是底层数学,滑点是交易时的实际体验,无常损失是长期做市的成本。三者环环相扣。

2.5 实战中的思考

说实话,AMM 的设计非常优雅,但它不是万能的。我在实际项目中遇到过一个问题:某个项目方为了吸引流动性,把交易手续费设得极低(0.01%),结果池子里的无常损失完全覆盖不了手续费收入,做市商纷纷撤池,最后池子直接崩了。

所以我的建议是:

  • 做市前先算 IL:用工具(比如 APY.vision 或 IL 计算器)预估一下可能的最大损失。
  • 关注手续费收入:如果池子日均交易量是流动性的 10 倍以上,手续费通常能覆盖 IL。
  • 别碰土狗池:波动率太高的资产,IL 会让你怀疑人生。

嗯,AMM 这部分内容就到这里。记住一句话:在 DeFi 里,没有免费的午餐。做市商赚的是手续费,承担的是无常损失和滑点风险。理解这三者的关系,你才算真正入门了。

专注资料整理