Uniswap 恒定乘积做市商原理笔记
第一次接触 Uniswap 的时候,最让我好奇的就是:没有订单簿,没有做市商,价格到底是怎么定出来的?
后来才知道,答案出奇地简单——就一个公式:。
但这个看起来朴素的公式,背后有一整套精妙的金融逻辑。这篇笔记试着把其中的数学和直觉都理清楚。
AMM 到底是什么
传统的交易所用的是订单簿模式——买方挂买单,卖方挂卖单,价格匹配了才能成交。但 AMM 不一样,它用数学公式代替了订单簿,你不需要等对手方,直接跟池子做交易就行。
Uniswap 用的模型叫恒定乘积做市商,核心就是这个公式:
- :池子里代币 A 的数量
- :池子里代币 B 的数量
- :乘积常数
交易前后, 值保持不变(暂时不考虑手续费)。也就是说,你往池子里塞进一些 A,就得拿走一些 B,但两者的乘积始终不变。
从几何角度看这个公式
把公式变形一下:。这是一条双曲线。
曲线上的每个点都代表池子的一个可能状态。交易发生时,池子的状态沿着这条曲线滑动,但始终不离开曲线。
这个几何视角很重要,因为它帮你直观理解一件事:池子里某种代币越少,它就越贵。你看曲线左边, 很小的时候 会急剧上升——这意味着要想从已经很稀少的 A 池子里再买走一些,你得付出大量的 B。
交易价格是怎么算出来的
假设你用 个代币 A 去买代币 B。交易后池子里 A 变成 ,根据 不变,B 就变成:
那你实际拿到的 B 就是原来的 减去剩下的 :
滑点的本质
AMM 的价格不是固定的,它取决于你交易的规模。你买的越多,平均价格就越差——这就是滑点。
看这个图,曲线越来越平。这意味着什么?大额交易的边际收益在递减。你投入第一个 10 个 A 可能拿到 9 个 B,但再投入 10 个 A,可能就只拿到 7 个 B 了。
这就是为什么大额交易要拆分成多笔做,或者为什么要用聚合器走多个池子。
无常损失是怎么回事
提供流动性听起来不错——赚手续费嘛。但有个隐藏风险叫无常损失(Impermanent Loss)。
简单来说:如果你提供流动性时的代币价格和现在不一样了,那你池子里的资产价值可能还不如你当初直接拿着不动。
算个具体例子
假设你一开始往池子里放了等值的两种代币:
- 个 A
- 个 B
- 初始价格比率 (1 个 A = 1 个 B)
后来 A 的价格涨到了原来的 4 倍,也就是 。根据 AMM 的机制:
解出来 ,。
对比一下两种策略的最终价值(以 A 计价):
| 策略 | 代币 A | 代币 B | 总价值(以 A 计) |
|---|---|---|---|
| 一直拿着不动 | 100 | 100(值 400 个 A) | 500 |
| 提供流动性 | 50 | 200(值 50 个 A) | 100 |
等一下,我重新算一下。持有策略的总价值应该是 100 个 A + 100 个 B(现在值 400 个 A 的购买力)。不对,让我换个方式理解。
以 A 为计价单位:
- 持有:100 个 A + 100 个 B。B 的价格涨到 4 倍,所以 100 个 B 值 400 个 A。总计 100 + 400 = 500 个 A 的购买力。不对,初始价格是 1:1,A 涨了 4 倍意味着 A 相对 B 涨了 4 倍。
让我换个更清晰的思路——假设初始价格 A = B = 1 美元。你放 100 个 A(100 美元)和 100 个 B(100 美元),总共 200 美元。
后来 A 的价格涨到 4 美元(B 还是 1 美元):
- 拿着不动:100 × 4 + 100 × 1 = 500 美元
- 提供流动性:池子里剩 50 个 A + 200 个 B = 50 × 4 + 200 × 1 = 400 美元
无常损失 =
也就是说,你亏了 20%。当然,400 美元还是比你一开始的 200 美元多,只是少赚了。
无常损失曲线
横轴是价格比率(新价格除以初始价格),纵轴是亏损百分比。价格偏离初始值越远,损失越大。当价格比率是 1 的时候(没变),损失为零。
所以无常损失这个名字起得挺准确——只要价格还在变,损失就是"无常"的。只有在你撤出流动性的那一刻,损失才真正兑现。
集中流动性(Uniswap V3 的改进)
到了 V3,Unswap 想了个办法提高资金效率:集中流动性。
普通的 LP 需要在 0 到无穷大的全价格区间都提供流动性,但大部分价格可能根本不会去到那些区域。V3 允许你指定一个价格区间,只在区间内做市。
对应的公式也复杂了不少:
这里 是流动性单位, 和 是价格区间的上下界。
这么改的好处是资金效率大幅提升——同样的钱,在窄区间里能提供更深的流动性。但代价是无常损失风险也更高了,因为价格一旦跑出你设定的区间,你的流动性就失效了。
为什么这个设计很精妙
看起来简单,但它同时解决了好几个问题:
- 自动定价——不需要预言机,价格由池子里的资产比例自然决定
- 永远有流动性——任何价格点都有报价,只是深度不同而已
- 套利自动修正——价格偏离外部市场时,套利者会把它拉回来
这个设计的优雅之处在于:它不需要任何人来做市,不需要任何人挂单,只要池子里有钱,交易就能发生。而做市商(LP)通过赚手续费获得回报,形成了一套自运转的生态。
理解了这个模型,再看 DeFi 里的各种创新——集中流动性、稳定币池、Ragequitable 池——其实都是在这个基础公式上做变体。
理解了 x·y=k,你就拿到了理解整个 AMM 世界的钥匙。