Uniswap v4 是对 Uniswap 协议的重大架构演进,旨在将该协议从一个独立的应用转变为链上流动性的基础平台。它通过“Hooks”实现了资本效率和可编程性的结合,并通过“Singleton”架构和“Flash Accounting”实现了显著的 Gas 优化。文章还深入探讨了 v4 版本的安全性分析,开发者集成指南以及如何安全地 Fork 和扩展 Uniswap v4。
Uniswap v4 代表了该协议的下一个重大架构演进。它不仅仅是一个迭代,而是对 Uniswap 在 DeFi 生态系统中的角色进行的一次根本性的重新构想。V4 的愿景是将该协议从一个独立的应用程序转变为一个基础平台——一个链上流动性的操作系统。它通过结合 v3 的资本效率和通过 "Hooks" 实现的一种激进的新可编程层,以及通过 "Singleton" 架构和 "Flash Accounting" 实现的显著 Gas 优化来实现这一点。
Uniswap v4 被设计成一个高度可扩展和高效的流动性层,它建立在其前任的基础上,创造了一个去中心化交易所开发的新范例。
Hooks 是 v4 的旗舰功能,也是其可定制性的主要驱动力。它们是可以注册到池中的外部智能合约,用于在其生命周期的特定、明确定义的点上执行自定义逻辑。这种 "插件" 架构允许开发者将自己的代码注入到核心池逻辑中,从而实现以前不可能或复杂得令人望而却步的大量新功能。
这些回调在关键时刻被触发,包括:
beforeInitialize / afterInitializebeforeSwap / afterSwapbeforeAddLiquidity / afterAddLiquiditybeforeDonate / afterDonate这为直接构建到池执行流程中的功能开启了一个设计空间,例如:
V4 放弃了所有先前版本中使用的工厂/配对模型。相反,所有池及其流动性都在一个名为 PoolManager 的单一、统一的合约中进行管理。这种 singleton 设计通过集中逻辑和状态提供了大量的 Gas 节省:
作为 singleton 架构的补充,是一个名为 Flash Accounting 的新系统,它利用了 EIP-1153(瞬态存储)。在涉及多个操作的交易期间(例如,交换后添加流动性),PoolManager 不会为每个中间步骤执行 token 转移。相反,它会跟踪用户钱包的净余额变化,即 "deltas"。只有在整个操作序列的最后,才会使用单个 token 转移来结算最终的净余额。这最大限度地减少了昂贵的 transfer 和 transferFrom 调用,从而进一步降低了交易成本。
singleton 和 Flash Accounting 模型的结合使得重新引入原生 ETH 对变得可行,而无需导致在 v2 中采用 WETH 的复杂性和流动性碎片化问题。由于原生 ETH 转移在 Gas 方面比 ERC-20 转移便宜得多,这为最常见的交易对提供了另一层效率。
随着 Uniswap v4 部署在主网上,其安全性分析侧重于其高度灵活的设计引入的新攻击面。安全模型从信任单一的、整体的协议转变为更复杂的、共同责任模型。
Hooks 是来自核心 PoolManager 的外部调用,如果开发时没有格外小心,这本身就会引入新的攻击向量。
对 Uniswap Labs 和 OpenZeppelin 开发的示例 hook 的安全审计已经揭示了安全编写它们所需的微妙之处。对 AntiSandwichHook 和 LiquidityPenaltyHook 的审计发现了完全破坏其预期安全机制的关键缺陷。例如,专为即时 (JIT) 流动性提供者设计的惩罚可以通过特定的一系列操作完全绕过。
这些发现表明,编写安全的 hook 异常困难。v4 架构将 Uniswap 从一个简单的应用程序转变为一个平台。PoolManager 充当安全的 "内核",提供状态管理和会计等核心服务。Hooks 是在此内核上运行的 "用户空间应用程序"。这创造了一种共同责任:
"Uniswap v4 漏洞" 很容易发生在流行的第三方 hook 中,而核心协议中没有任何缺陷,这使得整个生态系统的信任和风险评估变得复杂。
为 Uniswap v4 进行开发是一种根本不同的体验。开发者现在不是简单地与一个完成的协议集成,而是通过自定义构建的逻辑来扩展其核心功能。
beforeSwap、afterAddLiquidity 等)并安全有效地实施它们。unlock 交互:所有池操作都通过单个 PoolManager 合约启动。标准交互模式涉及调用 unlock,这会授予调用者一个临时锁并回调调用者的合约。在此回调中,开发者可以执行一系列池操作(交易、流动性修改)。BalanceDelta 对象进行操作。此对象表示在 unlock 范围结束时每个 token 的用户余额的净变化。安全 hook 开发是在 v4 上构建的最关键的方面。开发者必须采用纵深防御方法。
msg.sender 是否为 PoolManager 地址,以防止直接的、恶意的外部调用。nonReentrant 修饰符)来防止递归执行。Uniswap v4 的架构从根本上改变了 "fork" 协议的含义。虽然 fork 核心 PoolManager 合约是可能的,但自定义的主要机制是构建 hook。本节为考虑使用 hook 扩展 v4 和执行 fork 核心协议的更重要任务的团队提供指导。
从历史上看,DEX fork 一直受到反复出现的安全故障的困扰。v4 的复杂性为这些经典错误引入了新的变体。
在部署 Uniswap v4 核心的 fork 之前,开发团队应严格解决以下几点。此清单对于构建严重依赖 hook 的复杂系统的开发者也很有价值。
[ ] 不变性测试:你是否编写了一套全面的不变性测试(例如,使用 Foundry)以确保你的更改不会破坏协议的基本会计原则?关键不变性包括:
从 Uniswap v1 到 v4 的演变是去中心化协议设计的一门大师课,它勾勒了一条从根本的简单性到深刻的可定制性的刻意路线。每个版本都代表了一组不同的权衡,平衡了资本效率、用户复杂性和安全保证。虽然 v1 证明了 AMM 的概念,而 v2 将其完善为一个强大的 DeFi 乐高积木,但 v3 以牺牲简单性为代价打破了资本效率的壁垒。现在,v4 完全提出了一个新的范例——将 Uniswap 从一个应用程序转变为一个平台。对于开发者、审计员和用户来说,理解这一轨迹至关重要。选择不再仅仅是使用哪个 DEX,而是构建在哪个链上流动性层之上,以及这种选择所带来的安全责任。
在 Zealynx,我们深刻理解复杂的 AMM 设计,从集中流动性到新兴的 hook 架构以及 Uniswap 等协议的安全挑战。无论你是构建新的 DeFi 协议、审计现有协议,还是需要有关 AMM 项目安全的专家指导,我们的团队都随时准备提供帮助 - 联系我们。
想要通过更多像这样的深入分析保持领先地位吗?订阅我们的新闻通讯,确保你不会错过未来的见解。
1. 什么是自动化做市商 (AMM)? 自动化做市商 (AMM) 是一种去中心化交易协议,它使用数学公式为资产定价,而不是传统的订单簿。在像 Uniswap 这样的 AMM 中,流动性提供者将 token 对存入智能合约(流动性池),交易者可以直接针对这些池交换 token。价格根据池中 token 的比率以算法方式确定,从而实现 24/7 交易,无需中介或中心化交易所。 2. Uniswap v4 中的 Hooks 是什么以及它们如何工作?Hooks 是 Uniswap v4 的旗舰功能。它们是外部智能合约,允许开发者在池生命周期的特定点执行自定义逻辑(例如,交易之前或之后、添加流动性或移除流动性)。这种 "插件" 架构使开发者能够将新的功能(例如基于波动率调整的动态费用、链上限价单、自定义 AMM 曲线或集成 MEV 保护)直接添加到池的执行流程中。 3. Uniswap 中的集中流动性是什么?集中流动性是 Uniswap v3 中引入并在 v4 中延续的一项功能,允许流动性提供者为其资本指定自定义价格范围。LP 不会在整个价格曲线(0 到无穷大)上提供流动性,而是可以将资金集中在交易活动最有可能发生的特定价格边界内。与 v2 相比,这导致高达 4000 倍的资本效率,因为可以用明显更少的资本实现相同的流动性深度。 4. Singleton 架构如何降低 Uniswap v4 中的 Gas 成本? Singleton 架构将所有池整合到一个名为 PoolManager 的单一智能合约中,取代了先前版本的工厂/配对模型。这从两个方面显着降低了 Gas 成本:(1) 创建新池成为简单的状态更新而不是部署新合约(便宜 99%),以及 (2) 多跳交易(例如,交易 A→B→C)不再需要在单独的合约之间转移 token - 所有会计处理都在 singleton 内部进行,从而节省了复杂交易的大量 Gas。 5. Uniswap v4 中的 Flash Accounting 是什么?Flash Accounting 是 Uniswap v4 中的一种 Gas 优化技术,它使用 EIP-1153 瞬态存储来跟踪交易期间的余额变化,而无需执行中间 token 转移。PoolManager 不会在每次操作后转移 token,而是维护 "deltas"(净余额变化)的运行总计,并且仅在交易序列结束时结算最终的净额。这消除了多个昂贵的 ERC-20 转移调用,从而大大降低了复杂操作的交易成本。 6. 什么是 MEV 以及它如何影响 Uniswap 用户?MEV(最大可提取价值)是指可以通过重新排序、包含或排除区块中的交易来提取的利润。在 Uniswap 的上下文中,最常见的 MEV 攻击是 "sandwich 攻击",其中机器人检测到待处理的交易,在其之前放置买单并在其之后放置卖单,从而从受害者的交易的价格影响中获利。Uniswap v4 hook 使开发者能够将 MEV 保护机制直接构建到池中,例如通过私有中继路由交易或实施 TWAMM(时间加权平均做市商)功能。 7. 开发者在构建 Uniswap v4 hook 时应考虑哪些安全风险? 由于几个关键风险,为 Uniswap v4 开发安全 hook 需要格外小心:(1) 来自对不受信任的合约的外部调用的重入攻击,(2) 如果 hook 未能验证调用者是合法的 PoolManager,则存在访问控制漏洞,(3) 来自无界循环或昂贵操作的基于 Gas 的拒绝服务,以及 (4) 来自不正确的 delta 计算的会计操纵。v4 架构创建了一个共同责任模型,其中 hook 开发者必须实施严格的访问控制、重入保护、输入验证和彻底的测试,以防止漏洞。
本文中使用的关键术语的快速参考:
| 术语 | 定义 |
|---|---|
| 自动化做市商 (AMM) | 一种去中心化交易协议,它使用数学公式为资产定价,而不是订单簿。 |
| Hooks | Uniswap v4 中的外部智能合约,它在池生命周期的特定点执行自定义逻辑。 |
| Singleton 架构 | 一种设计模式,其中所有池都在单个统一合约中进行管理,从而降低了 Gas 成本。 |
| Flash Accounting | 一种 Gas 优化技术,它跟踪交易期间的余额 deltas,并且仅结算最终的净额。 |
| 集中流动性 | 一种流动性提供模型,其中 LP 可以为其资本指定自定义价格范围。 |
| MEV(最大可提取价值) | 通过重新排序、包含或排除区块中的交易来提取的利润。 |
| 重入攻击 | 一种漏洞,其中外部调用允许恶意合约在状态更新完成之前递归地回调。 |
- 原文链接: zealynx.io/blogs/uniswap...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!