XYK 就是:把一对资产放进一个“水池”,规定池里两种资产数量的乘积始终相等
x * y = k; 所有交易都必须沿着这条规则移动,于是价格、滑点、收益、风险都从这个公式里自然长出来。
接下来我们通过简单推导,一步一步厘清这其中的数学逻辑。
一、传统交易:为什么非得有个订单簿?
在传统交易所里,核心是一个订单簿(Order Book):
- A 在 100 元挂买 1 个 ETH
- B 在 101 元挂卖 2 个 ETH
- 系统把买单卖单匹配,撮合成交
这种模式有几个典型特点:
-
需要专业做市商
- 如果没人挂单,普通人根本没法交易
- 做市商需要 24 小时盯盘、调价
-
需要一个中心化撮合引擎
- 由交易所运营
- 你必须“相信”这个中间人
-
普通人难以参与做市
- 提供流动性门槛很高
- 很多收益只掌握在少数机构手里
对于区块链这种“人人都可以参与”的世界来说,这种设计太“中心化”了。
二、AMM:把做市变成一个资金池
AMM(自动做市商)最大的创新,是把交易市场从“挂单撮合 → 双边参与”变成了“资金池 → 任何人都能加入”。
资金池(Liquidity Pool)里同时放入两种资产,例如 ETH 和 USDT。池子运行遵循一个数学规则:
x * y = k
这就是所谓的 XYK(x*y=k)恒定乘积做市模型。
只要有人用 USDT 买 ETH,那么 ETH 减少、USDT 增多,就必须自动调整数值,使乘积保持不变。
这个规则取代了订单簿:
- 无需挂买卖单
- 无需专业做市商
- 无需中心化撮合引擎
- 任意用户都能参与
所以 AMM 的本质是:
用一个资金池 + 一个数学公式 替代传统撮合系统。
价格、滑点、流动性深度等概念,全部从这个公式里自然推导出来。
三、价格是怎么算出来的?
先设定一个具体例子:
池子里有:
- ETH:
x = 100- USDT:
y = 10000
那 ETH 的价格是什么?
很自然的想法:
价格 = USDT 数量 / ETH 数量 = y / x = 10000 / 100 = 100 USDT
几点关键认识:
- 价格不是“挂出来的”,而是由池子状态算出来的
- 池子状态一变,价格就自动变化
- 这个价格是“池内价格”,会被外部市场套利修正
所以在 AMM 中:
价格 = 池内两种资产的数量比
四、交易是怎么推动价格变动的?
现在我们来做一个简单但非常重要的例子。
4.1 初始状态
x = 100 ETH
y = 10000 USDT
k = x * y = 100 * 10000 = 1,000,000
价格 P₀ = y / x = 100 USDT/ETH
有个用户想用 1000 USDT 买 ETH。
在 AMM 中,交易规则是:
交易前后都要满足:
x * y = k
4.2 交易后的新状态
用户往池子里加入 1000 USDT,记为 Δy = +1000:
交易后 USDT 数量:
y₂ = 10000 + 1000 = 11000
因为 x * y 要保持等于 1,000,000:
x₂ = k / y₂ = 1,000,000 / 11000 ≈ 90.909 ETH
那么,用户从池子里拿走的 ETH 是:
Δx = x₁ - x₂ = 100 - 90.909 ≈ 9.091 ETH
他实际上用 1000 USDT 买到了约 9.091 ETH:
平均买入价格 ≈ 1000 / 9.091 ≈ 110 USDT/ETH
而此时新价格为:
P₁ = y₂ / x₂ ≈ 11000 / 90.909 ≈ 121 USDT/ETH
你会看到三件事:
- 用户最后的平均买价 ≈ 110
- 交易结束时的最新价格 ≈ 121
- 一开始池子的价格是 100
这就是现实里感受到的:
“怎么我一买,价格就上去了,还越买越贵?”
这就是 滑点(Slippage) 的来源。
五、滑点:不是费用,而是你自己推高的价格
从上面的例子可以总结:
- 滑点并不是额外收费
- 而是:因为你的这笔交易改变了池子的价格
可以粗略理解为:
你在交易的过程中,从便宜 → 贵 的一整条价格区间上买了一段货。
交易越大,沿着曲线走得越远,平均买入价就比起点价格高得越多。
六、为什么池子越大,滑点越小?
做一个对比试验。
6.1 小池子:100 ETH / 10000 USDT
还是刚才的池子:
- 100 ETH
- 10000 USDT
- 用 1000 USDT 买,价格从 100 → 121,变化很明显
6.2 大池子:1000 ETH / 100000 USDT
换成一个更大的池子(放大 10 倍):
x = 1000
y = 100000
k = 1000 * 100000 = 100,000,000
初始价格 = 100,000 / 1000 = 100 USDT/ETH
同样用 1000 USDT 买:
y₂ = 100000 + 1000 = 101000
x₂ = k / y₂ = 100,000,000 / 101000 ≈ 990.099 ETH
Δx ≈ 1000 - 990.099 ≈ 9.901 ETH
平均买入价 ≈ 1000 / 9.901 ≈ 101.0 USDT/ETH
新价格 P₁ ≈ 101000 / 990.099 ≈ 102.0 USDT/ETH
对比一下:
| 池子大小 | 初始价 | 平均买价 | 最终价格 | 价格涨幅 |
|---|---|---|---|---|
| 小池(100 / 10000) | 100 | ≈110 | ≈121 | 涨 21% |
| 大池(1000 / 100000) | 100 | ≈101 | ≈102 | 涨 2% |
结论:
池子越大,单笔交易对价格的影响越小,滑点就越低。
直觉类比:
- 小池子像一个脸盆,你舀一桶水进去,水位变化很明显
- 大池子像一个湖,你舀一桶水进去,没啥感觉
这就是“流动性深度”的直观意义。
七、流动性:到底是什么?
在 AMM 中,“流动性”不再是一个抽象词,而是池子里真实存在的资产数量。
- 流动性越多 → 曲线越“平滑” → 价格越稳定
- 流动性越少 → 曲线越“陡峭” → 价格更容易被推飞
更重要的是:在 AMM 中,任何人都可以提供流动性。
这意味着:
原本只有专业做市商能干的事,现在所有用户都能做,而且还能赚手续费。
八、作为普通人,你怎么参与这个池子?
假设现在有一个 ETH/USDT 池,状态是:
x = 100 ETH
y = 10000 USDT
价格是 100 USDT/ETH。
你想成为 LP(流动性提供者),往里加一点资金。
8.1 必须按当前价格比例存入
因为:
- 池子里的资产比例本身就是价格
- 如果你随便乱放,只放 ETH 不放 USDT,就会破坏价格
所以系统要求:
你要按当前价格的比例同时存入两种资产。
比如:
- 想存入
1 ETH - 当前价格是
100 USDT/ETH - 那就需要再存入
100 USDT
这时:
x_new = 101 ETH
y_new = 10100 USDT
价格仍然 = 10100 / 101 = 100 USDT/ETH
价格没有被你改变,池子只是变大了一点。
8.2 你获得“份额凭证”
每个 LP 存入资产后,会得到一个代表池子份额的代币(LP Token)。
- 整个池子好比一个“蛋糕”
- 你按照你贡献的资产获得“蛋糕份额”
将来你退出时:
你拿回的是 当时池子里的一部分资产,而不是你最初存进去的那一模一样的组合。
这一点,是理解“无常损失”的基础。
九、手续费:LP 是怎么赚钱的?
每一笔交易,协议一般会收取一小部分手续费(比如 0.3%),这笔钱:
- 不是给“平台”拿走
- 而是直接进入资金池,按份额分给所有 LP
可以这样理解:
交易者在用你的资产做交换,你从中抽取一点点“路费”。
简单模拟:
- 你占池子 10% 的份额
- 全池一共累积了 1000 USDT 的手续费
- 你退出时,就拿到大约 100 USDT 的手续费收益(再加上池子里的资产变化)
所以 LP 的收入来源主要有:
- 交易手续费
- 某些协议发放的激励(比如奖励代币)
十、无常损失:为什么 LP 会看起来亏了?
虽然 LP 可以赚手续费,但也会面临一个著名问题:无常损失(Impermanent Loss)。
先看一个最直观、最典型、最容易理解的例子。
假设池子里只有:
1 ETH + 100 USDT
这表示当前价格隐含为:
1 ETH = 100 USDT
现在你作为 LP 存入等价的资产(即同样按照当前价格比例):
再存入 1 ETH + 100 USDT(价值 200 USDT)
池子变成:
2 ETH + 200 USDT
总价值 400 USDT,而你贡献了其中 200 USDT,也就是:
你占整个池子的 50%
10.1 LP 份额不会变,但池子的资产会变
注意:作为 LP,你拥有的是池子整体的 份额(%),不是具体资产数量。
也就是说:
你拥有池子 50%,但未来那“50%”里面,ETH 和 USDT 的数量会变。
10.2 假设市场发生变化
经过一段时间,如果 ETH 相对 USDT 的价格下降,为了维持恒定乘积规则,池子里的 ETH 会变多,USDT 会变少。
假设最终池子变成:
4 ETH + 100 USDT
别看:数量看起来好像多了,但我们来计算 LP 的实际资产。
你拥有 50%,所以你取出:
2 ETH + 50 USDT
10.3 来算一下实际价值
现在池子隐含价格为:
100 / 4 = 25 USDT/ETH
因此你实际得到的价值是:
2 ETH = 2 * 25 = 50 USDT
50 USDT + 50 USDT = 100 USDT
也就是说:
你投入价值 200 USDT,最后只剩价值 100 USDT
注意这里还没算手续费,所以我们可以说你经历了一个典型的“无常损失”。
10.4 为什么会这样?
仔细观察资产变化:
| 项目 | 初始 | 退出 |
|---|---|---|
| ETH | 1 | 2 |
| USDT | 100 | 50 |
因为 ETH 比例增加、USDT 减少,说明市场认为 ETH “更不值钱”,套利者从池子里拿走 USDT、往池子里丢 ETH,让价格回归外部市场。
最终表现是:
你成了“接盘 ETH”那部分人
当价格下跌时,池子倾向变成“ETH 更多、USDT 更少”,而你的份额跟着变,因此导致资产缩水。
10.5 最重要的理解
LP 不是持有一组固定数量的资产,而是持有池子的一段“动态资产组合”。
而这个组合会自动调整方向:
- ETH 上涨 → 资产组合偏向 USDT
- ETH 下跌 → 资产组合偏向 ETH
因此:
价格波动越大,无常损失越明显。
这才是无常损失本质。
十一、XYK 模型到底解决了什么?
总结一下 XYK 带来的改变:
-
不再需要订单簿
- 没有挂单,也没有撮合引擎
- 一切都在一个池子里完成
-
价格靠算法决定
x * y = k+价格 = y / x- 所有价格变动都是公式推出来的
-
任何人都能成为做市商
- 只要照比例存入两种资产
- 不需要 24 小时盯盘,也不需要写交易策略
-
交易基础设施变成公共的
- 不是某个中心化机构专有
- 而是任何人都能参与、共享收益
十二、XYK 的局限与后续演进
XYK 虽然经典,但也有明显缺点:
-
滑点较大
- 对于价格波动小、稳定币之间的交易,XYK 不够“省滑点”
- 于是出现了像 Curve 那样的“稳定币专用曲线”
-
资本利用率不高
- 资金需要覆盖一个宽范围的价格区间,却不一定都被用到
- Uniswap v3 通过“集中流动性”优化了这一点
-
无常损失
- LP 承担价格波动风险
- 对只想“躺平持币”的人不够友好
尽管如此:
XYK 仍然是所有后续 AMM 设计的入门钥匙。 理解了 XYK,后面看 Uniswap v2/v3、Curve、Balancer 等模型都会轻松很多。
十三、总结:再看一眼那条简单的公式
我们再回到那条看似朴素的公式:
x * y = k
在这条公式之上,实际上生长出了:
- 价格:
P = y / x - 滑点:交易沿曲线移动带来的价格变化
- 流动性深度:池子大小决定曲线陡峭程度
- LP 收益:手续费分配机制
- 无常损失:LP 与单纯持币的结果对比差额
你可以把 XYK 看成 DeFi 里的“F=ma”:
它简单到一句话就能写完,但几乎整个去中心化交易市场,都建立在它的思想之上。