AMM 自动做市商原理:从恒定乘积到多维度变形
大家好,我是你们的老朋友。今天我们来聊聊 AMM 的核心原理。说实话,我刚入行时也被这些公式绕得头晕。但后来我发现,搞懂 AMM 就像学骑自行车——一旦掌握了平衡点,剩下的就是肌肉记忆了。
这一章我会从最基础的恒定乘积公式讲起,然后带你看看滑点、无常损失这些坑,最后聊聊几个主流变种。嗯,咱们开始吧。
恒定乘积公式:x*y=k 到底在说什么?
先问个问题:为什么 Uniswap 要用 x*y=k 而不是 x+y=k?
我刚开始做 DeFi 时也想过这个问题。后来在写一个模拟器时突然明白了——x+y=k 是线性定价,流动性会瞬间枯竭。而 x*y=k 是反比例曲线,它保证了无论交易量多大,池子里永远有货。
公式很简单:
// 假设 ETH/USDC 池
// x = ETH 数量, y = USDC 数量, k = 常数
// 初始状态
x = 100 ETH, y = 200,000 USDC
k = 100 * 200,000 = 20,000,000
// 你买入 10 ETH,池子 ETH 减少到 90
// 新的 y = k / x = 20,000,000 / 90 ≈ 222,222 USDC
// 你需要支付 = 222,222 - 200,000 = 22,222 USDC
// 平均价格 = 22,222 / 10 = 2,222.2 USDC/ETH
你看,你买 10 ETH 花了 22,222 USDC,均价 2,222.2。而初始价格是 2,000。这就是滑点的来源——你买的越多,价格越贵。
核心要点:恒定乘积公式保证了流动性永不枯竭,但代价是滑点随交易量增大而增大。这是 AMM 最根本的 trade-off。
滑点与无常损失:两个绕不开的坑
滑点好理解,就是你实际成交价和预期价之间的差距。我曾在一次抢跑交易中因为滑点设置太小,结果 gas 费花了 0.5 ETH 还没成交——那叫一个心疼。
滑点计算公式:
滑点 = (实际价格 - 预期价格) / 预期价格 * 100%
// 上例中
预期价格 = 2,000 USDC/ETH
实际价格 = 2,222.2 USDC/ETH
滑点 = (2,222.2 - 2,000) / 2,000 * 100% = 11.11%
无常损失就更有意思了。说白了,就是你提供流动性后,币价波动导致你的资产价值低于单纯持有。我见过很多新手一上来就冲进高波动池子,结果 LP 代币涨了,但换算成美元反而亏了。
| 价格变化幅度 | 无常损失比例 | 我的建议 |
|---|---|---|
| ±25% | 约 1% | 可以接受 |
| ±50% | 约 5.7% | 需要警惕 |
| ±75% | 约 13.4% | 不建议单边押注 |
| ±90% | 约 25.5% | 除非有补偿,否则别碰 |
避坑指南:我曾经在 UNI/ETH 池子里放了 10 万美金,结果 UNI 涨了 3 倍。表面看赚了,但算上无常损失,实际收益比直接持有 UNI 少了 12%。从那以后,我只在稳定币对或低波动资产对里做流动性挖矿。
流动性池的定价机制:谁在决定价格?
很多人以为 AMM 的价格是「算」出来的。其实不对。AMM 的价格是被套利者「搬」出来的。
举个例子:
- Uniswap 上 ETH 价格是 2,000 USDC
- 中心化交易所价格涨到 2,100 USDC
- 套利者从 Uniswap 低价买入 ETH,去中心化交易所高价卖出
- Uniswap 的 ETH 减少,价格上升,直到两边平衡
你看,AMM 本身没有「定价权」,它只是被动响应交易。真正的价格发现发生在套利过程中。我写过一个套利机器人,原理就是监控不同交易所的价差,一旦超过 gas 费就执行交易。嗯,那段时间收益还不错,直到 MEV 机器人卷起来...
不同 AMM 变种:Curve、Balancer、Uniswap V3
聊完基础,咱们看看几个主流变种。每个都有它的设计哲学,也各有坑。
Curve:稳定币交易的王者
Curve 的核心思路是:既然交易的是稳定币,为什么还要用反比例曲线?它搞了个混合曲线——中间段接近直线(低滑点),两端是反比例曲线(防止枯竭)。
我曾在 Curve 的 3pool(DAI/USDC/USDT)里做过流动性挖矿。说实话,滑点确实低,100 万美金交易也就几个基点的滑点。但要注意,Curve 的 LP 代币在极端行情下可能脱锚——2023 年 USDC 脱钩事件时,3pool 一度严重倾斜。
个人经验:做 Curve 的流动性挖矿,最好选那些有额外代币激励的池子。光靠交易手续费,年化可能只有 2-3%,不够看。
Balancer:多资产池与自定义权重
Balancer 把 AMM 推广到了多资产场景。它的公式是:
// 加权恒定乘积公式
// 假设 3 个资产,权重分别为 0.4, 0.3, 0.3
x^0.4 * y^0.3 * z^0.3 = k
// 这意味着池子会自动再平衡
// 如果某个资产涨了,它的占比会超过目标权重
// 套利者会把它卖回目标权重
我记得有个项目方用 Balancer 做了个 80/20 的池子——80% 是自己的治理代币,20% 是 ETH。这本质上是个自动做市+代币发行的组合。但风险也很明显:如果治理代币暴跌,LP 会承受巨大损失。
Uniswap V3:集中流动性的革命
Uniswap V3 是我个人最喜欢的版本。它允许你把流动性集中在某个价格区间内,而不是像 V2 那样均匀分布在 0 到无穷大。
举个例子:
// V2:你在 0 到 ∞ 提供流动性
// 资金利用率极低,大部分资金闲置
// V3:你只在 1,800 - 2,200 USDC/ETH 提供流动性
// 资金利用率提高 10-100 倍
// 但价格一旦超出区间,你的 LP 就变成单边资产
我在做 V3 策略时踩过一个坑:把区间设得太窄(比如 ±1%),结果一个插针就把我打出了区间,LP 全部变成 ETH,然后眼睁睁看着价格反弹回去。嗯,从那以后我学会了用宽区间+动态调整。
核心对比:
- Uniswap V2:简单粗暴,适合新手,资金利用率低
- Uniswap V3:灵活高效,适合专业做市,需要主动管理
- Curve:稳定币首选,滑点极低,但极端行情有风险
- Balancer:多资产组合,自动再平衡,适合指数型策略
知识体系总览
下面这张图是我自己画的,把这一章的核心逻辑串起来了。你看一遍应该就能记住。
这张图把 AMM 的核心逻辑分成了三条线:左边是原理,中间是风险,右边是变种。你看,所有变种都是在恒定乘积的基础上做优化——要么降低滑点,要么提高资金利用率,要么支持多资产。但万变不离其宗,核心还是那个 x*y=k。
我的建议:如果你是新手,先从 Uniswap V2 开始,跑几个月模拟盘。等理解了滑点和无常损失的实际影响,再考虑 V3 或 Curve。别一上来就玩花活——我见过太多人因为不懂无常损失,把本金亏掉一半。
好了,这一章就到这里。记住:AMM 不是魔法,它是数学+博弈论的产物。搞懂了这些,你就能在 DeFi 世界里少踩很多坑。
公众号:蓝海资料掘金营,微信deep3321