读 Uniswap 的技术文档,最容易卡住的地方不是概念多,而是同一套术语在不同版本里指向不同的东西。本文按公开技术文档的表述,把几个关键参数拆开:恒定乘积公式管什么、集中流动性改了什么、LP 份额为什么从代币变成 NFT、费率由谁决定。
恒定乘积公式:价格由池内储备比例决定
Uniswap 是以太坊上的去中心化交易协议,用自动做市商(AMM)替代订单簿。文档给出的核心定价公式是 x × y = k,其中 x 和 y 是池中两种代币的储备余额,k 是不变量,每笔交易后必须保持不变或增大。
这个公式的实际含义是:交易者把一种代币打进池子、取出另一种,两种储备的比例随之改变,价格也就变了。交易额相对池子深度越大,价格移动越多,文档称之为价格冲击;交易额越小,成交价越接近当前现货价。
这里要区分两个常被混用的词。价格冲击来自池内储备比例的变化,是 AMM 机制本身决定的;滑点则是最终成交价与预期价之间的差额,还受交易路径、其他池子报价等因素影响。文档只解释了前者,不能把两者当成同一件事。
集中流动性:公式没变,生效范围变了
文档明确写到,v3 和 v4 中恒定乘积公式仍然适用,但只在每个 LP 自己选择的价格区间内生效。v2 的流动性铺在从零到无穷大的整条价格曲线上,v3 允许 LP 把资金集中到一段区间,v4 延续这一模型。
这带来一个直接后果:价格走出区间后,该头寸的流动性不再参与交易,也就赚不到手续费。文档没有给出“区间越窄越好”的结论,因为区间选择同时影响资金效率和价格风险,属于 LP 自己的判断。
LP 份额的三种记账方式
文档按版本区分了 LP 份额的记录方式,这是读参数时最容易张冠李戴的地方:
v2 铸造可互换的 ERC-20 池代币,代表对池内储备的比例份额。
v3 中每个 LP 选择特定价格区间,头寸通过 NonfungiblePositionManager 表示为 ERC-721 NFT。
v4 中头寸由 PositionManager 管理,使用 ERC-6909 做内部记账。
所以“Uniswap 的 LP 代币是 ERC-20”只在 v2 语境下成立;把 v3 的 NFT 头寸说成同质化代币,或者把 v4 的 ERC-6909 记账直接等同于 ERC-721,都是把不同版本的实现混在一起。
费率:按池和版本配置,协议费另需治理启用
文档的表述是,兑换手续费按池和协议版本配置,费用归 LP;协议费可能在通过治理启用后适用。这里有两层要分开:交易费率本身是池的参数,不同池可以不同;协议费是另一层机制,需要治理在预设范围内启用,不是默认就收。
文档没有列出各版本、各池的具体费率数字,也没有说明协议费的具体比例。看到“Uniswap 手续费是 0.3%”这类说法时,应当先确认它指的是哪个版本、哪个池,以及说的是 LP 费还是协议费。
不可升级与治理的边界
文档称协议开源(GPL 许可)、核心合约部署后不可升级,任何一方都不能暂停合约、回滚交易或追溯改变协议行为。治理可以在预设限制内为受支持的池启用协议费机制。
这句话的边界在于:不可升级针对的是已部署的核心合约,不等于整个生态没有任何可变部分;治理能启用协议费,也不等于治理可以随意改写兑换逻辑。文档同时说明,治理和费用实现可以在开源代码库中核对,这属于可查证的范围,而不是对治理效果的担保。
文档没回答的部分
这份文档解释的是机制,不是参数表。它没有给出各链部署地址、各池当前费率、协议费的具体数值,也没有说明 v4 的 hooks 如何影响单个池的行为。这些需要看对应版本的合约和池的具体配置。把机制说明当成“当前所有池都如此”的通用规则,是读这类文档时最常见的误读。
结论:Uniswap 技术文档里的参数可以分三层理解——恒定乘积公式是定价基础,集中流动性改变的是公式生效的价格范围,LP 份额和费率则按版本和池分别配置。读任何一个数字之前,先确认它属于哪个版本、哪个池、哪一层机制,比记住单个数值更有用。