在深入探讨 V4 之前,让我们来看看 Uniswap 协议是如何演变的。Uniswap 经过了超过七年的发展,从 V1 迭代到 V4。
Uniswap V1 创建于 2017 年,是一个非常简单的 AMM。它的简单性体现在整个代码库仅约 500 行。正因为这种简单性,Uniswap V1 收取的 Gas 费比当时的其他 AMM 较低。然而,V1 仅支持 ETH 和 ERC20 代币之间的交换。两个 ERC20 代币之间的交换需要通过 ETH 进行中介,这引入了低效性。
Uniswap V2 于 2020 年 5 月推出,引入了一种更先进的结构,解决了这个问题。它允许在 ERC20 代币之间创建池,从而使两个代币之间能够直接交换,消除了 V1 的低效性。此外,它还引入了新的功能,例如预言机系统,允许直接从 V2 池中查询价格,以及闪电贷,使交易者能够安全地借用资金进行套利机会。
如果你想更深入的了解 Uniswap V2 可以订阅我们的专栏“Uniswap V2 之书”现在订阅享限时优惠。订阅链接:https://learnblockchain.cn/column/118/intro(或扫描文末二维码订阅)
然而,Uniswap V2 仍然存在一些不足之处。一个主要问题是通常所称的懒惰流动性。让我们通过一个例子来检视这个问题。
假设 Alice 向 Uniswap V2 的 USDC-ETH 池提供了价值 1,000 美元的流动性。这笔流动性被均匀分布在整个价格范围内,从零到无穷大,无论 ETH 价格如何。假设 Bob 在这个池内进行交换,使 ETH 的价格从 3,000 美元上涨到 3,100 美元。
在这种情况下,Alice 的流动性只有一小部分被用于交换,而大部分仍然闲置,没有积极参与交易。这个现象被称为懒惰流动性。
这个问题在稳定币池中变得更加明显。稳定币的价值通常被固定在 1 美元,脱钩事件很少发生。因此,大多数稳定币的交易发生在 1 美元的附近。然而,由于 Uniswap V2 在所有价格区间均匀分布流动性,只有小部分流动性积极参与交易,而其余部分则闲置。这种低效性加剧了 DEX 的资本效率问题,特别是在稳定币交易对中。
为了应对 Uniswap V2 中的问题,Uniswap V3 引入了集中流动性。这一机制允许流动性提供者(LP)定义其流动性有效的特定价格区间。
如上图所示,在集中流动性模型下,流动性提供者可以选择他们希望提供流动性的价格范围。即使流动性量相同,当流动性提供者在接近当前价格时提供流动性,流动性的密度也会增加。当交换发生时,费用会按流动性密度的比例分配给流动性提供者。因此,流动性提供者有激励设定较窄的接近当前价格的价格区间,从而赚取更高的费用。这一机制提高了资本效率,并减少了池中的滑点。
一个显著的例子是 Uniswap V3 在以太坊主网的 USDC-DAI 池。如下面图所示,这个池中的大部分流动性集中在价格区间 1.0002 之间。
这种模式表明流动性提供者相信 DAI 和 USDC 不太可能脱钩于 1 美元,因此他们将流动性集中在这一价格附近。通过集中流动性,流动性提供者可以获得更高的交换费用,而交易者则受益于更低的滑点。
然而,Uniswap V3 也引入了两个重大挑战:
Uniswap V4 是一个旨在提高交换效率和可扩展性的协议,以便更广泛的构建者可以利用 Uniswap 的流动性。它旨在解决 V3 中出现的问题,同时扩展协议的能力。Uniswap V4 引入了哪些机制,又能促成哪些新用例?
首先,让我们看看 Uniswap V4 中新增的特性。Uniswap V4 的核心池结构与 V3 类似,遵循集中流动性模型。然而,Uniswap V4 引入了三个关键特性,与 Uniswap V3 相比显著提升了用户体验:
让我们深入探讨每个特性及其带来的好处。
到 Uniswap V3 为止,协议有两个独立组件:Factory 和 pool。每当一个新池被创建时,factory 合约就会部署一个新的池合约。然而,在 Uniswap V4 中,一个名为 PoolManager 的单一合约管理所有池。这个新结构使得在多个池之间的交换路由变得更便宜。
例如,考虑一个路由场景,用户从 ETH 交换为 USDC,然后从 USDC 转换为 OP。在 V3 中,交换过程涉及将 ETH 发送到 ETH-USDC 池,接收 USDC,然后将其转移到 USDC-OP 池以完成 OP 代币的交换。然而,在 V4 中,路由通过简单地更新同一合约内的内部余额记录来处理。在一次交易的开始和结束时,仅执行一次余额更新,而不是为每个池单独修改余额。这大大简化了路由并降低了成本。
另外,部署新池的成本变得显著便宜。在之前的版本中,部署新池需要部署一个单独的智能合约,由于以太坊高昂的合约部署费用,这样的成本是高昂的。然而,在 V4 中,进入池的方式只需调用 PoolManager 合约中的一个函数,而无需部署新的合约。相比于之前版本,部署成本减少了超过 99%。
Uniswap V4 中引入的第二个关键特性是闪电结算,这是一种通过高效的债务清算模型来减少 Gas 成本的新方法,用于交换和流动性管理。
Uniswap V4 在交换或其他流动性操作期间追踪池和用户之间的未清余额。系统不会立即结算每一笔交易,而是确保所有未清余额仅在交易结束时才得到完全清算。
让我们用一个例子来详细说明。当用户在 Uniswap V4 中发起一次交换时,有三个关键组件参与其中:
这些组件之间的交互可以可视化如下:
当用户通过 DEX 界面进行交换交互时,Router 调用 PoolManager 合约中的 unlock 函数。该函数解锁合约内的余额修改,从而允许进行更改。
unlock 函数有两个主要目的:
兑换的实际处理(包括余额更新和最终结算)发生在 Router 的回调函数 unlockCallback 内,该函数调用多个 PoolManager 内的函数来执行请求的操作。
在交换场景中,unlockCallback 执行两个关键步骤:
整体流程可视化如下:
一个关键点需要注意的是,在整个交易过程中,某些值必须在执行前后保持不变。其中最重要的是 delta,它代表用户与池之间的未清余额,并应始终在交易的开始和结束时回到零。
以太坊为这种临时数据提供了特定的存储类型:瞬态存储。这一点通过 Dencun 升级 (2024) 中的 EIP-1153 引入。瞬态存储的行为类似于标准以太坊存储,但仅在一次交易中有效。一旦交易结束,所有瞬态存储值将自动重置,如下所示:
由于瞬态存储是临时的,并不会增加以太坊的永久存储负担,因此使用瞬态存储的操作比常规存储便宜得多。例如,向一个空存储槽写入的 Gas 费用为 20,000,而写入瞬态存储的费用仅为 100。
Uniswap V4 利用这一点通过瞬态存储保存债务余额(delta),大幅降低 Gas 费用。之前消耗超过 100,000 Gas 的交易现在只需几百 Gas 即可完成。此外,Uniswap V4 中的重入保护也利用瞬态存储,进一步降低了成本。
总之,Uniswap V4 采用了一种独特的“债务结算”模型,旨在通过瞬态存储优化 Gas 效率,使得交换费用显著低于 Uniswap V3。
这种效率在实际交易中非常明显。以下是一个示例,海登·亚当斯尝试将 0.3 ETH 交换成 USDT。尽管 Uniswap V4 的 ETH-USDT 池仅有大约 40 万美元的流动性,但由于 V4 的 Gas 效率,Uniswap Router 选择了该路径。
Router 通过考虑滑点、Gas 费用等因素选择交换路径。在这种情况下,V4 较低的 Gas 费用使其成为优选路径,导致进入 V4 池的交换量增加,并增加了流动性提供者的费用收入。
在所有新特性中,钩子是 Uniswap V4 最重要的补充。
在 Uniswap V3 和其他 DEX 中,用户只能与协议内置的预定义功能进行交互。然而,Uniswap V4 允许池创建者通过钩子自定义他们的池,添加额外逻辑。这样一来,池可以提供适应特定需求的新功能。
根据 Uniswap 的 V4 博客文章,钩子可以使得以下功能成为可能:
但钩子如何实现这些功能的?它们能够带来什么其他的用例?开发者们又在构建什么?
接下来,我们将详细探讨钩子,分析它们在 Uniswap V4 中的影响和潜力。
在编程中,钩子指的是在软件组件之间拦截函数调用、消息或事件,以修改或扩展其功能。负责处理这些拦截消息或函数调用的组件称为钩子。这一模式在调试和扩展软件能力时广泛使用。
Uniswap V4 利用这一编程模式,使得构建者能够扩展 DEX 的功能。在 Uniswap V4 中,钩子可以发挥五个主要作用:
如功能名称所示,Uniswap V4 允许在特定操作发生前或后进行钩入,从而根据与该操作相关的数据实现自定义操作。例如,beforeSwap 函数在交换执行前被调用,允许钩子开发者在 PoolManager 处理交换前实施自定义逻辑。
一个钩子可以实现单个函数或多个函数,意味着开发者几乎可以将他们希望的逻辑集成到 Uniswap V4 的每个动作中。
在 Uniswap V4 中,钩子是与流动性池独立的单独智能合约。在部署池时,部署者必须指定与池关联的钩子的地址。一旦设置钩子,就无法更改。然而,同一个钩子可以在多个池中共享。
重要的是,即使两个池共享相同的代币对(例如,USDC-ETH)和相同的费用层级,如果它们使用不同的钩子,它们仍被视为不同的池。在 Uniswap V3 中,基于费用层级,代币对只能存在于六个不同的池中。而相比之下,Uniswap V4 允许多个不同功能的 USDC-ETH 池的版本,例如一个集成预言机的池、一个支持限价单的池或一个提供动态费用的池。
总的来说,Uniswap V4 通过钩子实现自定义池,具有特定功能,使其区别于之前的版本。
此时,你可能会想:
让我们来看一下钩子在内部如何运作,以回答这些问题。
要理解钩子的内部工作原理,必需检查其功能结构。在 Uniswap V4 中,为每个钩子函数定义了特定的输入和输出数据格式。本节探讨这些函数的结构,详细说明钩子从 Uniswap V4 合约接收的数据以及它们可以对这些数据执行的操作。
让我们以 beforeSwap / afterSwap 为例。
beforeSwap 函数在 PoolManager 执行交换逻辑之前被触发。它从 PoolManager 接收五个关键参数:
这意味着每次发生交换时,钩子可以访问以下关键数据:
在执行其逻辑后,beforeSwap 将以下值返回给 PoolManager:
此时,我们可以看到钩子不仅仅是被动扩展,而是与池的操作进行积极交互的强大机制。
两个关键返回值——beforeSwapDelta 和 lpFeeOverride——允许钩子动态调整交换流程和费用结构。
beforeSwapDelta 值与 Uniswap V4 的债务结算模型直接相关。在 V4 中,交换在 Router 和池之间造成临时的债务,这些债务随后将被清偿。类似地,钩子可以与池建立债务关系,从而主动干预交换过程。
例如,钩子可以:
需要注意的是,钩子并不要求返回 beforeSwapDelta 值。有些钩子可能完全不影响交换机制,而是执行独立、不干扰的操作。
lpFeeOverride 与 Uniswap V4 的动态费用系统相关。在 Uniswap V4 中,根据市场条件,费用可以动态变化,但只能通过钩子实现。
动态费用实现的两种方法是:
这种灵活性使得 Uniswap V4 能够在交易级别实现定制的费用政策,而传统的 AMM 无法做到这一点。
总之,beforeSwap 允许钩子执行三个关键操作:
Uniswap V4 钩子可以通过在 beforeSwap 函数中验证发送地址,使开发者能够实施访问控制机制。这意味着钩子可以强制执行允许执行交换的用户自定义条件。例如,池可以被设计成只有持有特定 NFT 的用户才能在其中进行交易。
然而,有一点需要注意的是,用户在执行交换时并不直接与 PoolManager 交互。相反,他们通常通过 Router 合约进行交互,然后 Router 再与 PoolManager 交互。因此,在 beforeSwap 中,钩子看到的发送者地址通常是 Router 地址,而不是实际用户地址。
因此,访问控制逻辑通常是在 Router 级别实现的,而不是钩子内部。钩子决定哪个 Router 应执行交换,而 Router 负责用户身份验证和权限实施。
Uniswap V4 钩子可以直接在交换执行逻辑中干预。因为钩子从 PoolManager 获取所有相关交易细节,所以它们可以动态调整交易执行参数并修改结果。
这一能力促成了各种用例,例如:
默认情况下,Uniswap V4 使用集中流动性,将价格范围划分为多个涨落区间,每个涨落区间遵循 x * y = k CPMM 算法。然而,钩子可以覆盖这一行为,并应用替代的交换逻辑。
例如,钩子可以针对稳定币对实现与 Curve 类似的 StableSwap 算法,降低滑点,提高资本效率,尤其是对于大规模交易。
最后,钩子能够动态调整 LP 费用,为流动性提供者(LP)提供更大的灵活性和潜在收益。
最常见的动态费用模型之一是基于波动率的费用调整。在高度波动的情况下,LP 面临非永久性损失(IL)和与再平衡损失(LVR),可能导致经济损失。为补偿这一风险,池可以在高波动时期实施更高的费用,以提升整体 LP 收入并吸引更深的流动性。
一个重要的细节是,钩子无法修改所有池的费用。只有明确启用动态费用的池能被钩子调整费用。这意味着,在固定费用池中交易的用户无需担心不可预测的费用变化。
那么,钩子如何安装在流动性池中?是否可以将任何钩子附加到一个池中?答案是否定的。
Uniswap V4 不允许钩子随意附加到任何池。当 PoolManager 部署一个池时,必须经过验证程序,以确保指定的钩子满足特定条件。
钩子合约通过将其实现的函数编码到其合约地址中与 PoolManager 进行通信。这一编码的关键部分是钩子地址的最后四个十六进制数字(16 位)。这 16 位表示钩子实现了哪些函数。
例如,假设一个钩子合约的地址是 0x4f....00C0。最后四位(00C0)是关键部分。00C0 是十六进制值,转换成二进制则为:
0000 0000 1100 0000
这一二进制表示的每一位(0 或 1)对应一个特定的钩子函数。如果某一位为 1,表示钩子实现了该函数;如果为 0,则表示该函数未实现。
下表概述了每一位的含义:
在示例 00C0 (0000 0000 1100 0000)中,仅有第 7 位(beforeSwap)和第 8 位(afterRemoveLiquidity)被设置为 1,表示该钩子仅实现这两个函数。
将钩子函数编码到合约地址本身的原因是降低 Gas 成本。
如果 Uniswap 不使用这种方法,PoolManager 就无法知道钩子实现了哪些函数。它将不得不尝试调用每一个可能的函数,以确定哪些函数存在。这将导致不必要的函数调用并浪费 Gas。
例如,假设一个钩子仅实现 beforeSwap。如果 PoolManager 事先不知道这一点,它将试图调用其他函数,比如 afterSwap、beforeAddLiquidity 等,造成不必要的交易和更高的 Gas 费用。
通过将函数实现直接编码到合约地址中,PoolManager 能够很快知道该执行哪些函数。这使得无效的函数调用可以完全跳过,从而降低了 Gas 消耗。
在上面的表格中,最后四位(标记为返回 delta)指示钩子是否修改了交换或流动性事件的结果。
例如,如果一个钩子修改了交换执行逻辑,它应返回一个 beforeSwapDelta 值。这一修改的存在通过地址的最后四位表示,从而确保 PoolManager 事先知道是否需要对这些变化采取相应的调整。
这种设计防止了无用的计算,如对于那些不会修改交换结果的钩子,进一步优化了 Gas 效率。
由于钩子的功能由其地址决定,开发者必须手动找到符合正确函数配置的合约地址。但是,他们该如何做到这一点?
以太坊的 CREATE2 操作码允许开发者通过指定 salt 值在预定地址上部署合约。这一技术称为“地址挖矿”,使开发者能够搜索一个有效的 salt,从而生成具有所需最后四个十六进制数字的地址。
使用 CREATE2 生成以太坊合约地址的公式是:
address = keccak256(0xff + sender + salt + keccak256(init_code))
通过修改 salt,开发者可以反复生成不同的地址,直到找到最后四位符合所需函数编码的地址。
虽然 CREATE2 使开发者能够生成正确的钩子地址,但手动搜索正确的 salt 可能非常繁琐。此外,测试钩子也变得不便利,因为开发者在每次部署修改过的合约时都必须重复寻找一个新的有效地址。
为简化这一过程,Uniswap 提供了一个名为 HookMiner的工具。该库自动化地址挖矿过程,使开发者能够高效地找到其钩子的有效地址进行测试。
此外,还开发了一个基于 Web 的 UI 工具, V4 Hook Address Miner,使这一过程变得更加简单。
该工具允许开发者:
通过利用这些工具,开发者能够无缝部署格式正确的钩子,从而使 Uniswap V4 钩子生态系统更加开放和便捷。
到目前为止,我们探讨了 Uniswap V4 钩子的功能及其如何扩大 Uniswap 的能力。然而,这些特性是否引入了任何副作用?
尽管 Uniswap V4 钩子的安装和输入 / 输出值存在某些限制,但对钩子的内部逻辑实施没有限制。换句话说,恶意开发者可能会设计恶意钩子,窃取交易者或流动性提供者的资金。
例如,恶意开发者可以利用动态费用算法对池实施拒绝服务(DoS)攻击,实际上阻断用户活动。一种可能的攻击场景是,当满足某一价格条件时,将交换费用提高到超过 100%,导致所有交换失败。
此外,不当的访问控制可能导致池的流动性被冻结或被永久锁定。在 Composable Security 的一篇文章中,他们讨论了这种情形的例子—如果 beforeInitialize 函数开放给任何人调用,会导致池中的流动性被永久锁定。
那么,用户在使用 Uniswap 时应注意什么?
对于使用 Uniswap 官方界面的交易者而言,在交换代币时无需担心恶意钩子。这是因为 Uniswap 集成了 UniswapX,一个基于意图的交换执行网络。使用 UniswapX 时,处理与恶意钩子相关的安全风险的责任落在处理用户意图的执行者身上。换句话说,如果你在官方 Uniswap 界面中使用 UniswapX 进行代币交换,则无需担心恶意钩子。
然而,流动性提供者(LP)需更为谨慎。在 Uniswap V4 中提供流动性时,界面允许用户指定与池关联的钩子地址。
如果指定的钩子被黑客攻击或具有恶意,则提供的流动性可能被冻结或被窃取。因此,流动性提供者在使用此功能时需小心,应仅使用经过审计并提供安全保障的钩子。
当用户请求交换时,Uniswap V4 中的路由是如何工作的?
为更好地理解这一点,让我们考察 Uniswap 之前版本的路由演变。
在 Uniswap V3 中,当用户请求交换时,请求会发送到 Uniswap 后端的智能订单路由器。该系统会计算最佳交换路径并返回给用户。用户随后通过将计算出的路径提交给 V3 中的 Router 合约来执行交换。
然而,在 2023 年 7 月,Uniswap 推出了 UniswapX,这是一个去中心化的基于意图的交换执行协议,旨在提高交换效率并增强跨链用户体验。UniswapX 将路由过程从中心化智能订单路由器转移到了去中心化的意图处理器(填充者)网络。这些填充者通过荷兰拍卖参与竞争,以决定谁将处理交换请求。提供最佳交易执行的填充者会被自动选中。
UniswapX 的基本过程如下:
现在,这一算法在 Uniswap V4 中能否顺利运作?
与 Uniswap V3 相比,V4 中的路由变得显著复杂。这是因为除了寻找最佳交换路径外,路由算法现在还必须考虑每个钩子中嵌入的逻辑。
正如我们之前讨论的,钩子可以包含任意逻辑。尽管可以根据地址确定钩子实现了哪些函数,但必须执行该函数才能知道钩子的实际行为。这种不确定性使得 Uniswap V4 中的路由变得较为困难。
由于钩子可能存在的安全风险,Uniswap V4 的路由仅在填充者完全了解并信任与流动性池关联的钩子逻辑时才会发生。这意味着 UniswapX 填充者必须仔细验证一个钩子是否经过恰当审发及由社区或链上数据源进行了审查,以便将其纳入路由算法。
因此,广泛使用或集成了重要流动性的钩子更容易被填充者选择并纳入 UniswapX 路由算法。
尽管如此,填充者始终会寻求新钩子和池,以最大化利润机会。因此,如果一个钩子表现出可靠性,就值得考虑如何激励填充者将其纳入路由逻辑。
考虑到这些挑战,透明的钩子相关信息仪表盘变得至关重要。社区已经开始建设这样的工具,其中最突出的例子是 HookRank,它的设计模式类似于 Uniswap V4 钩子的 L2Beat。
在 HookRank 上,用户可以查看:
目前,由于 Uniswap V4 处于早期阶段,数据集相对较小。然而,随着钩子和 V4 池数量的增加,像 HookRank 这样的工具将变得对 UniswapX 填充者至关重要。
通过利用这样的仪表盘,填充者可以迅速评估各个钩子的可靠性和安全性,从而优化路由决策,最小化风险暴露。
截至 2025 年 2 月,Uniswap V4 仍处于早期阶段,仅在几周前发布。然而,各个团队已经在构建利用 Uniswap V4 钩子的产品。
在本节中,我们将探讨 notable 的项目,利用 Uniswap V4 钩子,并检查利用这一新框架可以构建的协议的潜在范围。
该图表展示了 Uniswap V4 钩子在不同领域的各种用例,包括基于 Uniswap V4 钩子构建的协议。让我们探索 Uniswap V4 钩子如何通过各自的机制集成到这些领域中。
人们在谈论 MEV 时,往往将其与交易者面临的劣势(如三明治攻击)联系在一起。然而,MEV 在 Uniswap 等 DEX 中对流动性提供者(LP)的影响也相当显著。简单来说,LP 由于 MEV 而遭受盈利能力的降低。
这一问题被称为“损失与再平衡 (Loss-Versus-Rebalancing,LVR)”。由于 DEX 中的时间被划分成离散区块,LP 不能动态管理其头寸。因此,当与可持续环境下持续再平衡相比,LP 将遭受损失。
例如,假设 ETH 在中心化交易所(CEX)上的价格突然翻倍至 2000 美元,而在 DEX 上仍然为 1000 美元。套利者将利用这一价格差异,在 DEX 买入 ETH 并在 CEX 卖出,盈利于两者之间的差价。然而,DEX 上的 LP 并不能即时响应这一价格变化,他们只能以远低于真实市场价值(2000 美元)的价格出售 ETH。
假设 ETH 的价格又突然回落至 1000 美元。套利者将从 CEX 买入 ETH,再售出于 DEX 以再次获利。LP 再次被迫在低于市场的价格上执行交易。
换句话说:
这就是 LVR 的基本概念。
LVR 被认为是降低 Uniswap V3 中 LP 盈利能力的主要问题。上述图表将 Uniswap V3 的 LP 比作“交易者”,并根据其退出头寸的时间计算了他们的盈亏 (PnL)。在几乎所有时间框架下,LP 都面临严重的损失。
LVR 问题的根本原因在于 LP 无法积极响应价格变化。最简单有效的解决这一问题的方式是通过协议机制将一部分 MEV 利润重新分配给 LP。
Arrakis Diamond Protocol – 用于 LVR 最小化的钩子
一个显著的 LVR 最小化钩子示例是 Arrakis Diamond Protocol,它受到 Diamond Protocol 的启发。该钩子的核心思想如下:
在启用 Arrakis Hook 的池中,套利者必须在进行套利交易之前锁定抵押品。该系统包括两个重要规则:
一旦池价格与外部市场对齐,套利者最有利的策略是执行反向传递 MEV 交易。
但如果他们不遵循这一策略,Arrakis 的机制将通过防止套利者在区块结束时收回所有抵押品来处罚他们。这种设置迫使套利者遵循可预测、结构化的交易模式,以确保与外部市场的价格同步。
为了跟踪价格变化和抵押品调整,Arrakis Hook 使用 afterSwap 函数。在每次交换后,它根据池价格偏离承诺价格的程度重新计算套利者可以收回的抵押品数量。
因此,MEV 提取显著减少,从而最小化 LVR 并改善 LP 的盈利能力。针对不同 LVR 最小化策略下 LP 表现的模拟也进一步证实了这一点。
上图对比了各种 LVR 最小化策略与标准 Uniswap LP 位置(CFMM)。使用这些策略的 LP 比标准 Uniswap LP 赚取的利润大约高出 5% 至 20%。
总之,Arrakis 的 LVR 最小化 Hook 强制执行预测性的套利行为,减少了 MEV 泄漏,并显著提升了 LP 的盈利能力。
Sorella Angstrom – 基于 AVS 的 LVR 最小化 Hook
Sorella 的 Angstrom 是另一种旨在使用 Uniswap V4 Hooks 最小化 LVR 的应用特定排序(ASS)解决方案。Sorella 将基于 AVS 的链下共识与 Uniswap V4 Hooks 结合,创建了一种独特的 MEV 再分配机制。
Angstrom 架构中的用户流程如下:
那么,这如何最小化 LVR 呢?获胜套利者的出价将分配给 LP。Angstrom 不是让套利者为自己提取 MEV,而是拍卖 MEV 利润并将其重新分配给 LP。这有效地通过补偿 LP 因套利交易而通常遭受的损失来最小化 LVR。为了重新分配拍卖利润,Angstrom 必须跟踪 LP 的位置并在流动性添加或移除时更新奖励。通过在 Uniswap V4 Hook 中使用 beforeAddLiquidity 和 beforeRemoveLiquidity 来实现这一点。
与 Uniswap V3 类似,Uniswap V4 通过一个名为 feeGrowthInside 的变量来跟踪 LP 的收益,该变量存储给定位置每单位流动性累计的费用。Angstrom 将相同的概念应用于分配拍卖奖励。每当 Angstrom 包执行时,出价金额将增加到 LP 奖励中。每当 LP 添加、更新或移除其流动性时,这些值都会通过 Hook 函数自动更新。
因此,Angstrom 确保 LP 获得 MEV 利润的一部分,从而有效降低他们的 LVR 风险。
基于波动性的动态费用
LVR 不必仅通过 MEV 再分配来解决。由于 LVR 在高波动性时期增加,另一种替代方法是根据市场条件动态调整 LP 费用。Uniswap V4 的架构使得通过 Hooks 轻松实现基于波动性的费用结构。
许多 DEX(去中心化交易所)如 Trader Joe、Algebra、Hypersea 已经实现了基于波动的费用机制。A51 Finance 和 Bunni 正在为 Uniswap V4 构建将包含基于波动的动态费用机制的 Hooks。这些自适应费用结构将帮助 LP 获得更多利润并减少 LVR 损失。
Uniswap V4 Hooks 也可用于设计创新的代币发行机制。以下是一些著名项目,它们正在利用 V4 Hooks 进行代币发行和流动性启动。
Flaunch – 在 Uniswap V4 上的公平发行
一个主要用例是公平发行,在这种情况下,每个人都有平等的机会以固定价格购买代币。Flaunch 开发了一种公平发行 Hook,使代币销售可以完全在 Uniswap V4 池中进行。与传统的公平发行协议需要在迁移流动性到 Uniswap 之前单独的智能合约不同,Flaunch 将整个过程集成到 V4 中。
在 Flaunch 中,部署 Uniswap V4 池后,代币以固定价格提供。在公平发行阶段,所有交易都以这个固定价格进行。一旦销售结束,代币开始在 Uniswap V4 上正常交易。
这通过 beforeSwap 函数实现。该 Hook 保持“公平发行激活”状态。如果公平发行正在进行,所有交换均按固定价格执行。一旦销售结束,交易将恢复到标准 Uniswap 行为。
通过 Uniswap V4 Hooks,Flaunch 消除了单独启动合约的需要,同时简化了代币分配。
Whetstone Research 的 Doppler – 荷兰拍卖 + 动态绑定曲线 Hook
与公平发行机制类似,Uniswap V4 也可以为需要初始流动性的代币项目启动流动性。一个代表性的例子是 Whetstone Research 提出的 Doppler。Doppler 利用基于荷兰拍卖的动态绑定曲线算法来确定代币的初始价格,并在 Uniswap V4 池中启动流动性。
传统的静态绑定曲线机制允许代币在没有初始流动性的情况下进行交易。然而,它们容易受到狙击手机器人的影响,后者在低价时购买代币,并在价格上涨时立即卖出。Doppler 通过通过 Uniswap V4 Hook 将荷兰拍卖与绑定曲线结合起来解决了这个问题。
Doppler 的代币发行系统由两个阶段组成:
在第一阶段,进行荷兰拍卖,期间代币价格随时间下降,使用表示 Uniswap V3 和 V4 中价格水平的刻度。该拍卖将继续,直到出现买家,以帮助确定代币的初始价格。
一旦初始价格被发现,该代币将采用基于绑定曲线的自由交易机制。关键的不同在于,绑定曲线不是静态的,而是根据市场条件动态调整。
Doppler 将绑定曲线的进度分为多个纪元:
这种方法确保价格发现更准确地反映实际市场需求,并干扰可预测的机器人行为,从而使狙击攻击和 MEV 提取更困难。
此外,Doppler 在绑定曲线阶段结束时不是一次性部署所有流动性,而是在多个纪元内逐步投入流动性。这种方法通过确保流动性不被一次性注入池中来防止抢跑和三明治攻击。如果没有这一点,机器人可能会操纵流动性添加以干扰正常用户的交易和池操作。
这些机制通过 Uniswap V4 Hook 函数实现,例如:
总之,Doppler 通过结合荷兰拍卖和动态绑定曲线提供了一种独特的流动性启动解决方案。这种方法解决了关键挑战,例如发现代币的适当初始价格,以及预防传统绑定曲线中常见的 MEV 相关问题。
该系统的核心实现依赖于 Uniswap V4 Hooks,使其成为 Hooks 如何用于先进代币发行机制的典型例子。
Uniswap 是以太坊历史上使用最广泛的 DEX,而 Uniswap V4 使其更加模块化、高效和可定制。这意味着什么,Uniswap V4 和 DeFi 将如何在未来发展?
AMMs 最大的限制之一是效率低下。诸如无常损失、LVR 和高 Gas 费等问题一直备受关注。Uniswap V4 通过单例架构、闪电会计和原生 ETH 支持等策略应对高 Gas 费。因此,池的部署成本降低了 99% 以上,交换费用相比 Uniswap V3 显著降低。这使得 Uniswap V4 能够在以太坊主网上提供大大改善的用户体验,在该网络上交易费用通常很高。
此外,V4 通过 Hooks 赋予构建者高度自主权,使得 Uniswap 达到可以与中心化交易所竞争的资本效率水平。许多 hooks,例如应用特定排序和 MEV 最小化机制,正在开发中,以为 LP 提供更高的盈利能力。将部分 MEV 收入再分配给 LP 的模式也可能成为标准。通过最小化 MEV 带来的损失,并增加 LP 的盈利能力,Uniswap V4 能够帮助建立一个更可持续的 DeFi 结构。
Uniswap V4 最大的创新之一是 Hooks 的引入。该功能使开发者能够自由调整 AMM 结构,采用动态费用模型,并设计自定义策略。因此,预计针对不同市场条件优化的流动性池将会出现,从而打破过去僵化的 AMM 模型。
如前所述,Uniswap V4 作为一个平台,使开发者能够创建具有针对代币发行、基于波动性的自动费用调整、MEV 最小化以及最大化 LP 利润的定制策略的流动性池。这使得开发者能够设计满足不同需求和市场环境的池。
此外,尽管未在上述内容中详细提及,但新的流动性提供模型也可能会出现,例如在 Uniswap 流动性基础上构建的借贷或衍生协议,以及关注机构的流动性池,它们限制特定用户的访问以符合监管要求。
这意味着 Uniswap 正在超越单纯的 DEX 的发展,未来它有潜力成为一个流动性平台,各种协议将基于其流动性构建,利用 Hooks 推动生态系统的增长。
从这一结构中产生的 Uniswap V4 生态系统具有一个关键特征:可持续性。例如,Curve 生态系统在 2022 年初经历高峰,主要依赖于 $CRV 代币奖励驱动的投票激励。因此,在市场低迷期间,它难以维持。相比之下,Uniswap 的生态系统被设计成一个以建设者驱动的环境,各种项目整合独特的逻辑以建立竞争优势。Uniswap V4 吸引建设者的兴趣不再依赖于代币奖励,而是提供 Hooks 的灵活性和可编程性。
在这个建设者驱动的生态系统中,优质项目通过竞争与合作,在逐步推进协议的同时,Uniswap V4 预计会创造出积极的反馈循环——提升 LP 盈利能力,增加总锁定价值(TVL),从而驱动更大的交易量,进一步巩固其作为领先 DeFi 平台的地位。
原文链接: research.2077.xyz/a-comp... 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
登链社区网站 : learnblockchain.cn
开发者技能认证 : decert.me
B 站 : space.bilibili.com/581611011
YouTube : www.youtube.com/@upchain
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。