20.Uniswap V4 简介
目录
Uniswap V4 简介
核心摘要 (Key Takeaways)
- 架构性革新: Uniswap V4 的核心升级在于代码架构而非底层的 AMM 数学原理。它从 V2/V3 的“工厂模式”转变为“单例模式”,旨在大幅降低 Gas 费并提升效率。
- 高度可定制化 (Hooks): V4 引入了**“钩子 (Hooks)”**机制,允许开发者在交易生命周期的关键节点(如交易前/后、添加流动性前/后)插入自定义逻辑,极大地增强了协议的灵活性和可扩展性。
- 显著降低 Gas 费: 通过单例模式、闪电记账 (Flash Accounting) 和支持原生 ETH 交易,V4 从多个维度解决了 V3 及之前版本中 Gas 费用高昂的问题,尤其是在多路径交易和涉及 ETH 的交易中。
- 战略定位转变: V4 的发布标志着 Uniswap 从一个单纯的去中心化交易所 (DEX) 向一个DeFi 基础设施平台的战略转型,旨在搭建一个舞台,让更多开发者在其之上构建多样化的应用。
一、 Uniswap V4 发展历程
- 发布形式: 以一种创新的 “社区共建” 模式发布。
- 2023年6月13日: Uniswap 官方发布了 V4 的代码草案 (Code Draft),当时代码完成度约 60-70%。
- 社区参与: 官方并未像传统项目那样先完成内部开发和审计,而是提前将代码开源,并设立了 1550 万美元的悬赏基金,鼓励全球社区共同寻找 Bug 和安全漏洞。
- 正式上线:
- 经过约一年半的社区共建和测试,Uniswap V4 于2024年1月正式发布到生产环境。
二、 Uniswap 版本演进与 V3 的痛点
每个新版本的发布都是为了解决前一版本的问题。
- Uniswap V1 (2017)
- 功能: 实现了 ETH 与任意单个 ERC-20 Token 的兑换。
- 局限: 不支持任意两个 ERC-20 Token 之间的直接兑换,灵活性差。
- Uniswap V2
- 改进:
- 支持任意两个 ERC-20 Token之间组建交易对。
- 引入了更灵活的手续费机制,允许将 1/6 的手续费(0.3% 中的 0.05%)分配给协议方。
- 问题: 资金利用率极低,因为流动性分布在 到 的整个价格区间。
- 改进:
- Uniswap V3
- 改进:
- 引入集中流动性 (Concentrated Liquidity),解决了 V2 资金利用率低的问题。
- 提供了多层级手续费(0.05%, 0.3%, 1%),以适应不同波动性的资产交易对。
- 遗留的痛点 (V4 要解决的问题):
- 高昂的 Gas 费: 尤其是在多跳交易(Multi-hop Swap)中。
- 案例: 假设用户想用 Token A 兑换 Token B,但市场上只有 A/USDT、USDT/BTC、BTC/B 这三个独立的交易池。在 V3 中,用户的资金需要在三个独立的合约(Pair Contract)之间依次转移,每次转移都会产生 Gas 消耗,导致总成本非常高。
- 手续费不够灵活: 尽管提供了三层费率,但开发者无法自定义费率,也无法根据市场状况(如波动性)动态调整手续费,自由度不足。
- 高昂的 Gas 费: 尤其是在多跳交易(Multi-hop Swap)中。
- 改进:
三、 Uniswap V4 的四大核心创新
Uniswap V4 的基础仍是 V3 的集中流动性模型,但其创新主要体现在架构和功能扩展上,而非 AMM 数学原理的改变。
1. Hooks (钩子): 实现 AMM 的可定制化
-
定义: Hooks 是一种允许开发者在交易生命周期的特定点位执行自定义逻辑的外部合约。你可以将其理解为回调函数 (Callback)。
-
工作原理: 在核心操作(如
swap)的之前 (before) 和之后 (after),协议会检查是否设置了相应的 Hook。如果设置了,就会调用外部合约执行自定义代码。 -
应用场景举例:
- 例子1:时间限制交易: 开发者可以创建一个 Hook,在
before swap阶段验证当前时间。例如,只允许在周一至周五的早上8点到下午5点之间进行交易,模拟传统股市的开闭市时间。 - 例子2:KYC 验证: 可以在
before swap阶段添加一个 Hook,检查交易发起者的地址是否在已通过 KYC 验证的白名单中,从而创建合规的交易池。
- 例子1:时间限制交易: 开发者可以创建一个 Hook,在
-
Hook 的八个关键执行点:
beforeInitialize/afterInitialize(初始化池子前后)beforeModifyPosition/afterModifyPosition(修改流动性仓位前后)beforeSwap/afterSwap(交换前后)beforeDonate/afterDonate(捐赠前后,V4 新增)
-
战略意义: Hooks 的引入标志着 Uniswap 的战略转变。
- 它不再仅仅是官方提供固定逻辑的 DEX,而是变成了一个开放平台。
- Uniswap 的目标是成为 DeFi 基础设施,搭建一个舞台,让其他开发者(玩家)可以在上面构建订单簿、借贷协议等更多样化的应用。近期发布的 Uniswap Chain (Layer 2) 也印证了这一战略野心。
-
Swap 流程中的 Hook 调用图:
flowchart TD A[开始交换] --> B{检查 beforeSwap hook} B -- 是 --> C[运行 beforeSwap hook] --> D[执行 swap] B -- 否 --> D D --> E{检查 afterSwap hook} E -- 是 --> F[运行 afterSwap hook] --> G[结束交换] E -- 否 --> G endflowchart TD A[开始交换] --> B{检查 beforeSwap hook} B -- 是 --> C[运行 beforeSwap hook] --> D[执行 swap] B -- 否 --> D D --> E{检查 afterSwap hook} E -- 是 --> F[运行 afterSwap hook] --> G[结束交换] E -- 否 --> G endflowchart TD A[开始交换] --> B{检查 beforeSwap hook} B -- 是 --> C[运行 beforeSwap hook] --> D[执行 swap] B -- 否 --> D D --> E{检查 afterSwap hook} E -- 是 --> F[运行 afterSwap hook] --> G[结束交换] E -- 否 --> G endflowchart TD A[开始交换] --> B{检查 beforeSwap hook} B -- 是 --> C[运行 beforeSwap hook] --> D[执行 swap] B -- 否 --> D D --> E{检查 afterSwap hook} E -- 是 --> F[运行 afterSwap hook] --> G[结束交换] E -- 否 --> G end图表解释: 当一个
swap请求发生时,系统首先检查是否存在beforeSwap钩子。如果存在,则先执行钩子里的自定义逻辑,然后再执行核心的swap操作。swap完成后,系统再次检查是否存在afterSwap钩子,并执行相应逻辑,最后结束整个交易流程。 -
官方提供的 Hook 案例:
- 时间加权平均做市商 (TWAMM): 通过 Hook 将一笔大额交易拆分成多个小额交易,在一段时间内分批执行,以减少对市场的价格冲击和交易滑点,对大户交易者非常友好。
- 动态费用 (Dynamic Fees): 根据池子的交易量、波动率等市场指标,通过 Hook 动态调整交易手续费。例如,市场波动低时降低费用以吸引交易,波动高时提高费用以保护流动性提供者。
- 链上上限价单 (On-chain Limit Orders): V3 只能通过集中流动性“模拟”限价单,而 V4 可以通过 Hook 实现原生的限价单功能。开发者可以创建一个合约,在达到特定价格条件时自动执行预设的交易订单。
2. 单例模式 (Singleton Pattern): 优化账户框架
- V2/V3 的模式: 工厂模式 (Factory Pattern)
- 原理:
Factory合约像一个工厂,每当创建一个新的交易对(如 ETH/USDC),它就会部署一个全新的、独立的Pair合约。 - 缺点: 如果有1万个交易对,链上就有1万个独立的合约。在多跳交易中,资金需要在这些独立的合约之间来回转移,每次转移都消耗大量 Gas。
- 原理:
- V4 的新模式: 单例模式 (Singleton Pattern)
- 原理: 不再为每个交易对创建新合约。V4 使用一个单一的巨型合约来管理所有的流动性池和交易对。所有的池子信息和余额都记录在这个单例合约中。
- 优点: 当进行多跳交易时,资金的结算在同一个合约内部完成,无需在不同合约间进行实际的
transfer操作,从而极大地降低了 Gas 费用。
3. 闪电记账 (Flash Accounting): 进一步降低 Gas 费
- 原理: 这个机制与单例模式相辅相成。在一次交易结束时,系统只计算每个池子最终的净余额变化 (Net Balance Change),而不是记录和计算交易过程中的每一个中间步骤。
- 效果: 由于避免了对所有相关方仓位余额的频繁计算,进一步减少了计算量和所需的 Gas。
4. 原生 ETH 支持 (Native ETH Support)
- V2/V3 的问题: 以太坊原生代币 ETH 自身是协议的 Gas 代币,其实现不符合 ERC-20 标准(缺少
transferFrom,approve等函数)。因此,在需要与 ERC-20 Token 交互的 Uniswap V2/V3 合约中,ETH 必须先被封装 (Wrap) 成 WETH (Wrapped ETH),这是一个符合 ERC-20 标准的代币。这个封装和解封装的过程本身也需要消耗 Gas。 - V4 的解决方案: V4 直接支持使用原生 ETH 进行交易,在合约内部处理与 ETH 的交互,省去了用户手动封装/解封装的步骤和成本,再次降低了用户的交易费用。
五、 V4 与 V3 的核心差异总结
- 升级焦点:
- V3: 核心是底层 AMM 数学模型的创新(集中流动性)。其白皮书充满了复杂的数学公式。
- V4: 核心是代码架构和工程实现上的优化(单例模式、Hooks)。其白皮书几乎没有数学公式,更侧重于架构设计和功能扩展。
- 战略目标:
- V3 及之前: 定位为一个高效的去中心化交易所 (DEX),一个供用户交易的“玩家”。
- V4: 定位为一个DeFi 基础设施平台,旨在搭建一个“舞台”,让其他开发者能够利用其灵活性和低成本构建更多创新的金融应用。