LAB 05 / AMM & LIQUIDITY

Uniswap 机制与 LP 实验室

从全范围常数乘积到集中流动性和 hooks:版本变化扩展了表达能力,但交换仍要面对流动性、费用与状态变化。

VERSION MATRIX

v1 → v4:什么真正改变了

Uniswap v1 至 v4 的流动性、费用、oracle 与架构差异
版本配对 / 路由流动性模型费用Oracle架构
v1ETH ↔ ERC-20;经 ETH 路由全范围 x·y=k固定 swap fee无内建通用 oracle独立池合约
v2任意 ERC-20 pair;多跳路由全范围 x·y=k经典总 swap fee 0.30%;协议费可开启累积价格支持 TWAP独立 pair 合约
v3同一 pair 可有多个独立费率档池合约按 tick 区间的集中流动性每个池选择 fee tier累积 observations每个 fee-tier pool 独立
v4Singleton 中的 pool key默认支持 v3 风格集中流动性;hooks 可自定义静态/动态,且 hook accounting 可改 token deltas核心无内建通用 oracle;hook 可自定义Singleton、flash accounting、hooks
v4 core 默认支持 v3 风格集中流动性、singleton、flash accounting 与 hooks;但 hook custom accounting 可以改变 token deltas 或实现自定义曲线。因此不能把 v2/v3 的曲线、费用或 oracle 假设套用到每个 v4 pool,也不应声称核心有内建通用 oracle。
SWAP LAB

常数乘积交换

方向
报价方程:(x + Δx·(1−f)) · (y − Δy) = x·y

储备实际按完整输入更新:x′=x+Δx,y′=y−Δy。费用留在池内时,k 通常增加。本教学模型假定 protocol fee 关闭,因此建模的 swap fee 全部累积给 LP;这不表示 v2 的 0.30% 总费率在所有配置下永远全归 LP。

STATE-DERIVED X · Y

储备曲线与状态移动

交换前后储备曲线与状态点X 换 Y,交换前储备 X 1,000、Y 2,000,交换后储备 X 1,050、Y 1,905.0341BEFOREAFTERXY
连续 v2-style 教学模型这里使用 JavaScript 浮点连续数学,省略 token decimals、整数运算与每跳向下取整。结果不是链上 quote,也不是利润证明。
输出数量94.9659Y
平均执行价1.8993output / input
结束边际价1.8143新 reserveOut / reserveIn
曲线价格冲击(不含 fee)4.76%含 fee 总短差 5.03% · swap fee 0.15
INVARIANT

k 的变化

k before2,000,000
k after(swap fee 留池)2,000,285.76
Δk285.76
FULL-RANGE 50/50

LP / 无常损失参数

IL(r) = 2·√r / (1+r) − 1
OPPORTUNITY COST

持有 vs LP

HODL15,000
LP(费前)14,142.14
LP(含费用假设)14,262.14
经典无常损失-5.72%
WHY IT HAPPENS

从第一性原理理解 IL

外部价格上涨时,套利者沿曲线买走池中升值资产;LP 自动卖出它,同时积累相对贬值的另一种资产。价格下跌时方向相反。这个持续再平衡使 LP 相比简单持有少享受单边上涨、多持有下跌资产。

IL 是价格仍有差异时相对 HODL 的 mark-to-market underperformance,并非只有撤出时才产生。退出只是固定当时的库存与结果;费用可能抵消它,也可能不够。公式仅适用于全范围 50/50 常数乘积假设,不能直接描述 v3/v4 集中流动性仓位。

PROTOCOL SOURCES

官方资料

版本能力以官方概念文档与核心合约为准;本页经典 IL 公式不适用于所有 v3/v4 仓位或自定义 v4 hooks。