大数跨境
0
0

SSRN | Uniswap v4与去中心化交易所变革

SSRN | Uniswap v4与去中心化交易所变革 Coco跨境电商
2025-07-10
0

Uniswap(以太坊去中心化交易协议)作为去中心化交易所的重要存在,其版本更新备受关注。文章聚焦Uniswap v4协议,深入剖析其核心创新。该版本的流动性池由两种资产、费用水平、刻度间距和新增的“钩子”(hook)功能这五个组件构成,其中“钩子”是v4的关键突破。它作为智能合约,能在交易等操作前后执行定制逻辑,支持动态费用调整、自定义定价规则和状态条件订单等功能,极大拓展了流动性池的设计空间。不过,钩子的使用也有接口规范等限制,且需自行获取流动性。文中还通过动态费用机制等三个用例,展示了v4相较v2、v3的优势。中国人民大学金融科技研究所(微信ID:ruc_fintech)对研究核心部分进行了编译。

作者 | Brad Bachu(Uniswap Labs)、Joel Hasbrouck(NYU Stern)、Fahad Saleh(University of Florida)、Xin Wan(Uniswap Labs)

来源 | SSRN

编译 | 韩予乐


引言


本文研究了Uniswap v4的架构,重点阐述了该版本相较早期版本的演进过程,并阐明了v4版本中用于定义市场机制的设计空间。第一章介绍了构成v4流动性池的核心组件,着重分析v4与v2、v3版本的关键差异。第二章探讨了v4的创新功能"钩子"(hooks),该功能支持流动性池的自定义配置,具体包括修改交易手续费、实施替代性定价规则以及支持新型订单类型等功能。第三章则分析了v4流动性池的动态行为特征及其对市场活动的响应机制。


从形式上看,v4版本将流动性池定义为名为PoolKey的数据结构。该数据结构由五个对象组成:两种资产、费率等级、价格间隔单位以及钩子合约。虽然前四个组件沿袭自v3版本,但钩子概念是v4独有的核心特征。第一章将详细阐述定义资金池的五个对象,追溯它们在Uniswap早期版本(v2和v3)中的起源,并解释每个迭代版本如何在前一版本基础上扩展流动性池的设计空间。

为便于宏观理解,v4流动性池可概念化为两个子流动性池:一个由主智能合约PoolManager管理,另一个则由PoolKey中指定的钩子合约管理。PoolManager管理的子池执行与v3流动性池完全相同的定价和流动性供给规则(Hasbrouck、Rivera和Saleh,2025)。因此,除非钩子合约另有规定,v4资金池的运行机制与v3完全一致。值得注意的是,PoolManager的代码逻辑在部署时即固定,后续不可修改。要实现定制化定价或流动性供给规则,必须通过编码特定逻辑的钩子合约来实现。

然而v4协议对这种定制化存在限制:钩子合约必须符合IHooks.sol文件中规定的特定接口规范。此外,若钩子合约需要流动性(此处指交易资金),必须自行独立获取——它无法动用PoolManager中的常规v3流动性。我们将在第二章深入探讨这些可能性及其影响。

在本文的不同章节中,我们将提及三个使用案例,每个案例都展示了在v4版本(通过精心设计的钩子)中可行、但在Uniswap v2或v3中无法实现的功能特性。

动态费用机制

如第2.1节所述,Uniswap v4支持动态费用机制的实现。值得注意的是,该定制功能无需通过钩子合约将流动性从资金池管理器合约转出。由于Uniswap v3的定价模型可适配任意费率水平,v4的钩子合约能在每笔交易前动态调整费率,随后通过资金池管理器执行v3定价逻辑——该合约将作为中介,使用其持有的流动性完成交易。第2.1.3与2.1.4小节将深入探讨动态费用的具体实施方案。

自定义定价规则 

Uniswap v4可支持不同于v3恒定乘积做市商(CPAMM)规则的定价机制。但此类定制比动态费用机制更具挑战性:由于资金池管理器采用固定的v3 CPAMM定价逻辑,其管理的子流动性池无法以非CPAMM逻辑中介交易。要实现v4流动性池的此类定制,需在钩子合约中植入目标定价逻辑代码,并将足量流动性转入该合约,以支撑编码定价逻辑所对应的交易量。第2.1.3与2.2.2小节将详述该功能的实现方案。

状态条件订单 

Uniswap v4的流动性池可设计为支持状态条件订单,前提是相关条件事件已记录在区块链上。例如,某v4流动性池可设定仅在波动率处于特定区间时执行交易。这要求钩子合约存储实时波动率数据(每笔交易后自动更新),同时还需保存状态条件订单,并编写逻辑代码来验证订单条件是否满足,进而执行符合条件的交易指令。


定义流动性池的经济对象


从概念层面来看,Uniswap v4是在v3基础上构建的,而v3又是在v2基础上构建的。如前所述,在v4中,一个流动性池由五个对象定义。其中四个对象在v3的池定义中就已存在。此外,v3池定义中的三个对象也存在于v2的池定义中。篇幅所限,本文在此仅介绍v4池定义中全新的第五个对象,其他对象的详细定义请见原文。

如前所述,v4版本在概念上基于v3版本构建,通过五个对象定义流动性池,其中四个对象与v3版本定义流动性池的对象相同。具体而言,v4流动性池的部分定义要素包括两种资产、一个费率等级和一个tick间距等级——这四个要素完全定义了v3版本的流动性池。值得注意的是,v4版本额外增加了一个对象:钩子(hook)。我们将在第2节详细讨论钩子机制,因此此处不作具体说明。本节主要提供高层级背景信息,并阐释相对于v3版本,钩子如何影响流动性池的设计。

表1:Uniswap功能演进历程

从概念上讲,钩子机制旨在为流动性池实现广泛的定制化功能。前文讨论的三种应用场景仅为例示,更复杂的增强功能也可能提升经济效益。值得注意的是,v3版本是在特定维度(即扩大流动性提供者的操作空间)对v2版本进行增强,而v4版本则允许开发者自主决定其流动性池与v3版本的具体差异。正如我们将要讨论的,v4版本赋予开发者的自主权并非完全无约束,但相较于v3相对v2的改进幅度,这种自主权范围已大幅扩展。相关要点在于,开发者完全可以指定一个空钩子——在这种情况下,v4流动性池的行为与v3完全一致,唯一区别在于手续费率和最小报价单位的设置将完全自主,不再受表1的限制。

 图1:Uniswap v4的钩式架构。v4版本通过钩子实现流动性池的自定义配置。
 

“钩子”功能


从形式上讲,钩子是一种智能合约,而智能合约是部署在区块链上的计算机代码(参见John、Kogan和Saleh 2023)。值得注意的是,钩子并非完全任意的计算机代码。相反,钩子必须实现特定的标准化,即每个钩子必须指定10个特定函数,还必须指定14个特定的布尔标志。我们将在2.1节详细介绍这些函数,并在2.2节详细介绍这些标志。

2.1 钩子函数

从概念上讲,钩子函数(Hook functions)的作用是在Uniswap常规操作前后进行"挂钩"。具体而言,去中心化交易所的正常运行需要进行多种操作(如代币兑换、调整流动性等),而钩子机制允许在这些操作前后执行定制化逻辑。这种定制化逻辑具体表现为钩子函数必须包含的代码主体。

更详细地说,v4代码会在每个Uniswap操作前调用特定的前置钩子函数,在操作后调用特定的后置钩子函数。因此,每个Uniswap操作都对应两个钩子函数。如后文所述,Uniswap共有五种操作,因此每个钩子需要实现2×5=10个函数。具体来说,这五种操作是:(1)创建资金池、(2)与资金池交易、(3)向资金池添加流动性、(4)从资金池移除流动性、(5)向资金池捐赠。值得注意的是,前四种操作在v3版本中就已存在,且v4中这些操作的代码逻辑与v3完全一致。因此如前所述,当钩子函数代码主体留空时,v4的运行方式将与v3相同。

基于此,在本节后续内容中,我们会不时提及这些操作的代码逻辑但不再详细解释。这是有意为之——因为我们的关注点是从v3到v4的改进,而核心操作的代码逻辑在v3和v4中完全一致,我们建议读者参考v3的相关文献来理解Uniswap核心操作机制(参见Hasbrouck等人2025年的研究)。在本节剩余部分,我们将简要讨论上述五种操作各自前后钩子函数的技术规范与设计空间,详见原文。

2.2 钩子标志

Uniswap v4包含两组真/假钩子标志。第一组对应钩子函数,第二组则对应特定钩子函数是否涉及与钩子合约之间的价值转移。我们将前者称为钩子函数标志,后者称为返回差值标志。共有十个钩子函数标志和四个返回差值标志,这些标志总结在表3中。我们首先解释第一组标志,然后分别详述第二组中的每个标志。需要说明的是,每个真/假标志的值都是静态的,即钩子部署后无法更改。

表2:钩子标志:每个钩子函数都必须在钩子合约中实现,并通过相应标志决定是否调用该函数。部分函数还设有额外标志(ReturnDelta),允许它们转移经济价值。


流动性池


第1节中讨论的对象是流动性池的定义性特征,这些特征不随时间变化。然而,还存在其他随时间变化的特征,这些被称为池的状态。这些时变特征专门存储在一个名为Pool.State的数据结构中,并通过第2.1节讨论的操作进行演变。关于这一点,重要的是要理解池状态变量的访问受到限制,因此不能通过任意用户操作进行更改。事实上,大多数状态变量只能由核心Uniswap v4合约(如PoolManager)更改。值得注意的是,即使是钩子合约也无法直接更改大多数状态变量,除非通过调用PoolManager中的函数间接实现。例如,钩子合约可以通过执行交易来改变流动性池的价格,该交易将在PoolManager中执行交换;然而,钩子合约不能任意更改流动性池的价格。在本节的剩余部分,我们将进一步介绍Pool.State组件的背景信息,详见原文。


结论


Uniswap v4 协议将流动性池的经济设计空间扩展到了超越此前 Uniswap 版本(如 v2 和 v3)的范畴。本文阐明了经济设计空间得以扩展的具体方式,同时也强调了该设计空间仍存在的限制程度。文中探讨的用例展示了流动性池功能的基础扩展方向:动态费用、替代性定价规则以及或有交易。更为复杂的功能增强可能会催生相应机制,用于捕获并返还交易者原本可能遭受的损失(参见 Harvey、Hasbrouck 和 Saleh 2024 中关于最大可提取价值的讨论)。我们期待未来的研究能对这一扩展后的设计空间进行正式的经济学分析,以明晰其对福利的影响。



以下为部分报告截图



获取完整报告

请后台回复“uniswap

获取下载链接


·END·


责编/张谦

编译/韩予乐


【延伸阅读】

王剑:关于狭义银行和稳定币的思考

稳定币崛起:数字金融新时代的催化剂

朱太辉:稳定币的经营模式、发展影响与监管框架

全球稳定币发展趋势与政策演变

【声明】内容源于网络
0
0
Coco跨境电商
跨境分享所 | 持续提供优质干货
内容 192965
粉丝 4
Coco跨境电商 跨境分享所 | 持续提供优质干货
总阅读481.3k
粉丝4
内容193.0k