首创 AMM 机制,首款去中心化的币币交易应用
Swap之王|UniSwap如何一步步做到3.7亿TVL
1 产品名称
UniSwap
2 简介
2.1 一句话介绍产品
首创自动做市商(Automated Market Maker, AMM)机制,首款去中心化的币币交易应用
2.2 产品基础数据
用户总人数达到 2,400 万
TVL(总锁仓量):约 3.75 亿美元,涵盖 Uniswap V1–V4 所有版本(截止2025年6月)
市场份额:29.8%(截止2025年6月)
- Uniswap 的市场份额在币安的Alpha活动影响下有所下降。2025年5月币安发布Alpha积分奖励活动后,PancakeSwap仅一周时间,市场份额从约 16%迅速飙升至 41%
2.3 产品融资情况
Uniswap 共完成 3 轮融资,投资方均为顶级 VC;Uniswap Labs 于 2022 年成功完成 B 轮融资,同年收购 Genie,集成 Sudoswap,扩展 NFT 服务。
轮次 | 融资时间 | 金额 | 投资机构 |
---|---|---|---|
捐赠 | 2018.07 | $10万 | 以太坊基金会 |
种子轮 | 2019.04 | $100万 | Paradigm |
A轮 | 2020.06 | $1100万 | a16z领投, Blockchain Capital, Coinbase Ventures, Defiance Capital, Delphi Digital, Pantera Capital, ParaFi Capital, 3AC, USV. SV Angel, Version One, Variant, A.Capital等参投。 |
B轮 | 2022.10 | $1.65亿 | Polychain Capital领投, Andreessen Horowitz、Paradigm、SV Angel、Variant等参投。 |
3 多版本迭代
交易所的核心是流动性,Swap优化的核心目标是提高流动性的利用率(资本效率),降低滑点,减少Gas成本。
V1:恒定乘积模型
- 上线时间:2018年11月
- 核心机制:
- 自动做市商(AMM)模型:采用恒定乘积公式
x * y = k
确定交易价格。x、y 表示池内 ETH 与 ERC‑20 的数量,k是常数- 池子内两种代币的总价值需要相等。
- 每笔交易都会改变池内代币比例,价格会自动调整。
- 自动做市商(AMM)模型:采用恒定乘积公式
- AMM 带来的特性
- 添加流动性/加池子:用户必须按池中当前 ETH 与 ERC-20 代币的比例添加资产,否则无法成功注入流动性。
- 这种设计是为了保证池子的价格不会因为添加流动性而发生改变,以支持后续交易。
- 滑点(Slippage):实际成交价格与交易预期价格之间的偏差
- 本质上源于恒定乘积模型的设计逻辑:每次交易都会即刻影响价格。
- 滑点不可避免,尤其在池子流动性不足时更为显著,可能造成交易者在不利价格下成交。
- 兑换token的数量相对流动性池越大,交易量越大,价格偏离越大 → 滑点就越高。
- 交易手续费(Swap Fee):交易者在进行代币交换时支付的费用。这部分费用分配给流动性提供者。
- 无常损失(Impermanent Loss):LP 在提供流动性期间,由于代币价格相对于存入时发生变化,导致的潜在损失。价格波动越大,无常损失越大。
- 无常损失可能抵消 LP 从交易手续费中获得的收益,甚至导致整体亏损。
- 换句话说,提供流动性就是让你的币结伴去打工,如果其中一个币暴跌,你要承担这部分的损失。
- 添加流动性/加池子:用户必须按池中当前 ETH 与 ERC-20 代币的比例添加资产,否则无法成功注入流动性。
- 优势:
- 无需订单簿:通过算法自动撮合,极大简化交易机制。
- 开放性强:任何人都可以自由添加流动性,无需许可。
- Gas低:交易成本远低于同期DEX。
- 存在问题:
- 滑点高:
- AMM模型的恒定乘积公式决定了大额交易必然导致滑点上升,尤其在池子流动性不足时,价格波动剧烈。
- 不支持 ERC-20 对 ERC-20 的直接交易:
- ERC-20 间的交换必须通过 ETH 中转。
- 此设计导致:增加滑点(两次交易叠加价格偏移)和增加 Gas 成本(两次调用智能合约)。
- 流动性分布并非最优:
- 所有流动性被系统平均分配到 0 ~ ∞ 的价格区间。
- 不管当前市场价格是多少,用户资金都被平均锁定,导致大部分资金在非活跃价格区间“闲置”,效率低下。
- 滑点高:
V2:支持 ERC-20 ↔ ERC-20
- 上线时间:2020年5月
- 核心优化:
- 继续使用恒定乘积模型,新增支持 ERC-20 与 ERC-20 之间的直接交易。
- 新特性:
- 价格预言机 TWAP:
- 时间加权平均价格(Time Weighted Average Price, TWAP):是一种价格计算方式,用于在一段时间内取多个时点的价格平均值,从而平滑掉价格剧烈波动的影响。
- TWAP 的数据源来自于 Uniswap 自身的交易数据,价格的计算也都是在链上执行的
- 防止预言机被操纵(攻击者用大额交易瞬间拉高/砸低价格)
- 闪电兑换(Flash Swaps):
- 灵感来自 Aave 的“闪电贷”。
- 允许用户通过智能合约在单笔交易中“无抵押”借出任意数量的代币。
- 依赖于以太坊的交易原子性:只要在同一个交易内结算完所有逻辑(资产被归还),则该交易被视为有效;若不满足,整个交易自动回滚。
- 路由优化:Router 智能路径合约
- 为提升交易效率与用户体验,引入了路径自动选择机制,合约自动选择“实际到手金额最多”的最优路径进行兑换
- 价格预言机 TWAP:
- 主要改进:
- ERC-20 之间的直接交易:避免 ETH 中转路径,降低交易滑点与调用成本。
- 存在问题:
- V1 中的滑点高,流动性效率不高问题仍然存在
V3:集中流动性
- 上线时间:2021年5月(以太坊主网)
- 核心优化:
- 集中流动性(Concentrated Liquidity)
- 允许流动性提供者(LP)在自定义的价格区间内提供流动性,使资金集中在活跃的交易价格段,大幅提升资金使用效率,降低交易滑点。
- 价格区间(Price Range):LP 在提供流动性时设定的价格范围,只有在该范围内,LP 才能赚取交易手续费。
- 相当于给 AMM 加了“价格段条件判断”,只有
if price in [a, b]
时,才执行x * y = k
。
- 相当于给 AMM 加了“价格段条件判断”,只有
- 资本效率提升的程度有多大?举个例子,如果某用户拥有 80 万美元,并希望在 Uniswap V3 上提供流动性。该用户创建了一个 ETH 价格区间位于 1,200-2,800 美元的集中流动性头寸。相比之下,V3 仅需质押 15 万美元即可达到需在 V2 上锁仓将近 79 万美元的流动性深度,并赚取相同的交易费,资本效率提升了 5.24 倍。
- 集中流动性(Concentrated Liquidity)
-
新特性:
- 流动性提供者头寸(LP Position):
- 在 V1-V2 中:所有 LP 在一个池子中提供的流动性是“共享的”,没有个人配置,头寸是“同质的”。
- 在 V3 中:LP 在特定价格区间内提供的流动性,由系统生成一个 NFT 表示,代表其提供流动性的交易对、价格区间([a, b])、存入资金量(Token A/B 比例)。
- 多费率层级:支持四个交易手续费等级:0.01%、0.05%、0.30%、1.00% —— 这比 V2 的统一 0.30% 灵活得多。适应不同的交易对和风险偏好。
- 0.01%-0.05%,适合低波动交易对,如 USDC/USDT,几乎不会有价格偏移,低风险,几乎没有无常损失,吸引大量做市但收益低
- 0.3%,适合主流交易对,如 ETH/USDC,中等波动,风险适中,收益适中,Uniswap V2 默认值
- 1.00%,适合高波动资产,如 PEPE/ETH、小市值代币,价格剧烈变动,无常损失大,高风险,但愿意承担风险的人才能提供流动性,就要配高手续费激励
- 流动性提供者头寸(LP Position):
- 主要改进:
- 集中流动性 + 多费率组合,极大提高资本效率;
- 集中流动性机制大幅降低了用户提供流动性需要承担的价格风险;
- 预言机升级,喂价成本大幅降低,其 Gas 成本相对于 V2 下降了约 50%
- 存在问题:
- 流动性管理变复杂:非专业用户难以设定最优价格区间;
- 新 LP 需要一定的策略理解力,门槛相较 V2 提高不少。
V4:Hooks(钩子函数)
- 上线时间:2025年1月(以太坊主网)
- 核心优化:
- Hooks(钩子函数)
- 新增 Hooks,它本质上是一套在特定动作前后自动触发的合约插件。例如在“添加流动性前”,“交易后”执行额外逻辑。
- 通过 Hooks,每个池子都可以嵌入自己的业务逻辑,实现前所未有的灵活性,例如:
- 新增限价单、动态费用、TWAMM等机制
- 插入防 MEV、防女巫等逻辑
- 实现 LP 自动再平衡、自动复投等功能
- 自定义流动性曲线(如非线性定价)
- 单例合约模型(Singleton Contract)
- V1-V3 中,每个交易对都是独立合约,部署和交互都涉及高昂的 Gas 成本。
- V4 引入 PoolManager 单例合约,所有池子都由一个主合约统一管理。
- 路由效率提升:例如 ETH → USDC → OP 等多跳交易,在 V4 中仅是一次合约内的内部余额更新(内部记账, internal accounting)。
- 降低成本:只需调用 PoolManager 合约中的一个函数,而无需部署新的合约。相比于之前版本,部署成本减少了超过 99%。
- 闪电记账系统(Flash Accounting System):
- 所有操作先在内存中记账,最后统一结算。
- 适用于复杂多跳交易和 hooks,并发性更强。
- 在交易过程中仅在最终结算时进行资产转移,提高了 Gas 效率。
- 原生 ETH 支持:
- V1~V3 中 ETH 都要通过 WETH 包装(额外步骤 + 手续费)
- V4 支持直接使用原生 ETH(不需要 wrap/unwrap)
- 用户体验更好,Gas 更低
- ERC-6909:统一 LP 代币标准
- 在 V2/V3 中,每个 LP 的头寸表示方式不同(V2 是 ERC-20,V3 是 NFT),管理成本高,尤其 V3 的 NFT 头寸在计算、转账、授权等操作中都相对更贵。
- V4 引入 ERC-6909,多资产代币标准,用一个合约管理多种 LP 资产类型。
- 减少了部署合约和授权的操作。
- 所有 LP 头寸可以复用同一个合约实例(Singleton 模式)。
- Hooks(钩子函数)
- 主要改进:
- 从 AMM → 成为一个“可扩展 AMM 框架平台”,是 v4 的重大创新。
- 通过单例合约、原生 ETH 支持、Flash Accounting 等设计,交易成本与部署成本显著降低。
- 存在问题:
- 技术门槛提升:Hooks 的灵活性伴随着更高的开发复杂度与安全风险,部署前需经过严格的安全审计。
4 Uniswap 的核心用户场景
场景一:交易者在 Uniswap 上进行代币交换
背景:用户 Alice 希望将 1000 USDC 兑换为 ETH。
场景描述:
- 连接钱包、选择交易对
- Alice 打开 Uniswap V3 前端,连接钱包(如 MetaMask),选定 USDC→ETH 交易对,并输入 1000 USDC。
- 查询池子状态与估算报价
- 前端调用链上 Router 合约,读取 USDC–ETH 池的资产余额(x=ETH、y=USDC),使用恒定乘积公式
x * y=k
,计算边际价格p=y/x
。这给出一个理论上的、非常小滑点下的“quote”。
- 前端调用链上 Router 合约,读取 USDC–ETH 池的资产余额(x=ETH、y=USDC),使用恒定乘积公式
- 路径优化(如有多跳)
- 如存在 USDC→WETH→ETH 等多条路径,Router 会计算每条路径的预估输出(考虑滑点与手续费),并自动选择最优路径(即最终获得最多 ETH 的那条)。
- 滑点与交易验证
- 前端会显示预计滑点和最终可获得的 ETH 数量,用户设置可接受的滑点范围后点击「Swap」,触发交易。
- 链上执行
- Uniswap 的 Router 合约接收到 Alice 的 1000 USDC 交易请求后:
- 自动选择路径(如果是跨多个池的交易);
- 对于每个交易对,调用对应的 Pair 合约中的
swap(...)
方法;
- Uniswap 的 Router 合约接收到 Alice 的 1000 USDC 交易请求后:
- 费用结算
- 交易手续费 Swap Fee:1000 USDC × 0.3% = 3 USDC,此费用分配给 LP;
- 网络手续费 Gas Fee:Alice 自行承担,取决于链上交易复杂度和当时 Ethereum 网络拥堵度。一次 Uniswap V3 Swap 大约消耗 0.0015 ETH
- Alice 收到 ETH
- 在一到两笔交易确认后,Alice 的钱包中收到扣除费用后的 ETH。
- 反馈与记录
- 前端展示交易详情包括 slippage、手续费、成交比例,并以交易历史形式保留。
场景二:用户成为流动性提供者(Liquidity Provider, LP)
背景:用户 Bob 拥有 1 ETH 和 2000 USDC,1 ETH = 2000 USDC,决定将其存入 Uniswap V3 的 ETH/USDC 池中,成为流动性提供者。
场景描述:
- 选择 LP 参数
- Bob 在 Uniswap V3 界面输入想提供的 ETH(1 ETH)与 USDC 等值金额,并设定价格区间 $1500–$2500,手续费层级为 0.3%。
- 验证池子状态与资金比例
- 前端显示当前价格、池中已有的 LP 概况、预计资金使用效率等依据。在区间内提供流动性的资金会按当前汇率冻结为对应数额的 ETH/USDC。
- 授权并发起 Transaction
- Bob 需要授权 USDC 和 ETH 的 token approval,然后发起「添加流动性」交易。
- 链上 mint NFT
- Uniswap V3 的 PositionManager 合约铸造一个 NFT,表示 Bob 在 $1500–$2500 区间、手续费 0.3% 下的 LP 头寸,包含资产数额、区间信息、初始状态。
- 等待交易确认
- Bob 发起添加流动性的交易后,需要等待网络打包并确认。
- 获得 NFT 并展示于前端
- 成功后 NFT 自动转入 Bob 的钱包,Uniswap 前端显示其持仓详情(资产、累积手续费、可提取状态)。
添加流动性之后:
- 赚取手续费
- 在该区间内进行交换的交易会产生手续费,Pro Rata(按流动性占比)分配给 Bob。前端显示可提取收益。
- 价格超出区间时状态变化
- 若 ETH 价格高于
$2500
或低于$1500
:- Bob 的 LP 头寸“失效”:池子变为单边头寸;
- 不再赚取费用,并暴露资本于单一资产价格走势;
- 若完全脱离区间,无法再参与 swap,并需主动手动退出或调整区间。
- 若 ETH 价格高于
场景三:套利者利用价格差进行套利(搬砖)
背景:市场上,Uniswap 上的 ETH/USDC 价格为 2000 美元,而在另一个交易所上,ETH/USDC 价格为 2020 美元。
套利(Arbitrage):利用不同市场或池子之间的价格差异进行交易,以获取利润。
场景描述:
- 监测价格差
- Arb-bot(Arbitrage Bot,套利机器人) 实时监测多个交易所(如 Uniswap、Sushi、CEX) ETH/USDC 价格,发现 Uniswap 較低。
- 计算可套利利润
- 折算 swap/slippage/手续费/Gas 后判断是否存在正向利润空间。
- 启动 Flash Swap 机制
- 在 Uniswap V2 及以上可使用 flash swap:
- 合约调用
swap(amount0, amount1)
借取 ETH; - 在同一区块内完成后续套利交易。
- 合约调用
- 在 Uniswap V2 及以上可使用 flash swap:
- 在高价平台卖出 ETH
- 利用借取的 ETH 在其他平台卖出,获取更高 USDC。
- 归还借款 + 手续费
- 对 Uniswap 进行 swap 或 repay 操作,偿还 ETH 借款及 0.3% 费用,合约确保交易失败则 rollback。
- 获得净套利收益
- 收益 = 卖出 USDC - 借入 USDC - Flash Swap Fee - Gas
- fina result positive → 成功套利
重复执行
- 循环执行
- Arb-bot 会持续跟踪套利机会,实现多轮盈利。
- 价格回归
- 即便这次套利结束,Uniswap 的池子价格因交易而向外部市场方向偏移,从而缓解了价格差,更趋合于市场均衡。
5 商业模式
5.1 手续费
Swap 手续费主要由两部分组成:
- LP 激励(LP Rewards):
- V1–V2:固定 0.3% 的手续费全部归 LP,分成是基于其提供的代币数量相对于整个流动性池供应量的比例,LP 收益=手续费× LP 所占比例
- V3:可自选 Fee Tier:0.01% / 0.05% / 0.3% / 1%
- V4:支持动态调节,引入 Hook,可在 swap、add/remove liquidity 时定制手续费、抽取或返还逻辑。
- 协议费(Protocol Fee):
- V3-V4通过治理可开启,分成比例由 UNI 持有者决定,通常为 LP 手续费的 10%–20%。
- 若启用,协议费不会增加交易者支付金额,而是从 LP 激励中扣除;部分费用将用于社区、UNI 持有人激励等。
- 目前,未正式启用协议费分配机制。虽然 V3 曾试点“fee switch”,但尚未全面生效
5.2 流动性激励机制
为什么会有流动性激励机制?
因为交易是去中心化的,流动性不是由交易所提供。理论上任何人都可提供流动性。
流动性提供者LP一般有三个主要群体:
- 被动性流动性提供者:为了赚取被动收入的token持有者
- 项目方:他们添加流动性是为了方便Trader进行买卖,也就是俗称的项目方加池子
- 专业做市商:完成他们做市任务的一种策略
为了吸引他们提供并留存资金,需要设计流动性激励机制。
6 UNI代币机制
UNI 是 Uniswap 的原生治理代币,首发于2020年9月,并非早期规划,而是在 SushiSwap 空投 SUSHI 吸引用户后约一个月急推上线。
UNI币总供应量无限,每年增发2%(2024年开始实行)。 UNI初始供应量10亿枚,目前已经分配完毕。
社区60%中,约15%已通过空投发放给早期用户(约 12000 地址×400 UNI),余下代币归社区基金库,用于持续支持各类生态激励项目。
分配对象 | 数量 | 比例 |
---|---|---|
团队 | 2.15亿 | 21.51% |
顾问 | 0.69亿 | 0.69% |
投资者 | 1.78亿 | 17.8% |
社区 | 6亿 | 60% |
UNI是一种平台币、治理币。用途:
- 社区治理:持有人可提交提案、参与投票;
- 管理协议金库:治理决策支配社区金库;
- Uniswap.eth ENS 名称
- 流动性挖矿激励:曾用于早期 UNI-LP 池激励(可抵扣手续费)。
7 总结与思考
- Uniswap 从 V1 到 V4 的演进路径堪称教科书式的产品设计实践:每一次版本更新都针对市场最核心的问题,切实为用户解决痛点,不是在想象中自嗨。
- V1:找到PMF(Product-Market Fit)。看了vitalik的论文,2个月开发出来一个MVP(最小可行产品),仅支持 ETH ↔ ERC-20。足够简单却跑通了 AMM 基本模型,是第一个真正可用的 DEX。
- V2:满足币币交易的基本需求。拓展到支持 ERC-20 ↔ ERC-20。
- V3:优化垂直业务,提出集中流动性。极大提高资本效率,同时引入 NFT 头寸管理和多档手续费机制,为 LP 提供更多策略选择。
- V4:开始做生态,推出 Hooks。开发者可自定义流动性池逻辑,相当于每个池子都可以有自己的插件机制。Uniswap 不再只是一个 DEX,而是一个可拓展的生态平台。所以说,项目发展的尽头,是做生态。
- 用户导向的极致思维:始终关注 LP、交易者、开发者三方的体验
- 流动性提供者(LP):更高的资本效率(V3)、更强的策略自由度(V4 限价单、动态费用)、更低的部署成本(Singleton)、防 MEV 提供收益保护。
- 交易用户:更低滑点(V3)、支持原生 ETH、更高 Gas 效率(闪电记账)、防 MEV 保护。
- 开发者:开放式 Hooks 机制允许开发者构建自己特色的流动性池逻辑,进一步解锁金融产品的创新空间。
- 重新定义开源竞争:用平台化设计取代“防抄袭”
过去几年,Uniswap 的代码被 fork 无数次,PancakeSwap、SushiSwap、QuickSwap……甚至很多项目只是在 UI 和 Token 上加点料而已。
但是,Uniswap 没有走“闭源”路线,而是:
- 不断迭代产品,让 fork 项目跟不上。
- 用 V3 的商业许可限制 fork。
- 到 V4 干脆设计成开放平台,让别人不再去 fork,而是基于 V4 开发 Hook,实现自己的差异化逻辑。
参考文章:
觉得文章不错就支持一下呗~
