去中心化交易所中的 Hooks:定制流动性池功能

  • cyfrin
  • 发布于 2025-01-08 15:23
  • 阅读 17

本文介绍了在去中心化交易所(DEX)中引入 Hooks 的重要性,探讨了 hooks 如何增加流动性池的定制化和功能性。通过动态费用、时间加权平均价格订单和限价单等用例,揭示了 hooks 为流动性提供者和交易者带来的风险降低和潜在收益提高的可能性。

DEX 中的 Hooks:流动性池的未来

在 DEX 流动性池中引入 Hooks 开启了自定义的新纪元。了解它们如何增加功能性、降低风险并提高潜在收益。

Hooks 使流动性池对最终用户更具可定制性。本文解释了 hooks、它们的使用案例以及它们如何改善去中心化交易所。

文章前提

在阅读本文之前,你需要对 DeFi 有基本的了解。然而,这是一篇高层次的文章,因此无须对 Solidity 有深入理解。

DEX 中的 Hooks 介绍及流动性池的未来

自动化市场制造商 (AMMs) 如 Uniswap 和 PancakeSwap 使用流动性池来实现无缝、无需许可的代币交换。到目前为止,流动性池的定制化仅限于协议内置的功能。随着 hooks 的引入,一切都发生了改变。流动性池的定制性、功能性和效率将大幅提高。Hooks 是与流动性池连接并允许在特定事件发生时执行自定义代码的外部部署合约。

本文解释了 hooks、它们的使用案例 以及它们如何改善去中心化交易所。

什么是流动性池?

流动性池简单来说就是一个代币池。AMMs 利用流动性池来促进交易。用户(交易者)可以通过存入一个资产并取出另一个资产来交换代币。这使得用户可以在单笔交易中交换代币。让我们想象一个 ETH/USDT 的流动性池。用户可以存入 ETH(或 wrapped ETH)并获得相等价值的 USDT。

流动性提供者(LP)是向流动性池贡献资产的个人或实体。任何人都可以通过存入两个资产等值的美元量成为流动性提供者。在我们上面的例子中,ETH 和 USDT。

使用流动性池交换代币的用户通常需要支付少量交易费用。这包括进行链上交易的 gas 费和池的交换费。交换费通常在池的流动性提供者之间分配,被视为鼓励人们成为流动性提供者的激励!

我们在这里不讨论它们,但值得注意的是,成为流动性提供者涉及一些风险,例如 无常损失

什么是 hooks?

Uniswap 在其 白皮书 中定义 hooks 为:

Hooks 是在池执行的特定时间点上执行开发者定义的某些逻辑的外部部署合约。

hook 是附加在流动性池上的智能合约。这些外部部署的合约使流动性池对最终用户更具可定制性。例如,hooks 可以修改池的参数(例如,它的交换费)、分阶段执行大订单或添加链上限价单。

Hooks 是缩小去中心化交易所与中心化交易所之间功能差距的巨大一步。它们还可以减少风险并增加流动性提供者的收益。

Hook 回调

如前所述,hook 是一个带有某些自定义逻辑的外部部署合约。当用户在支持使用 hooks 的去中心化交易所上创建流动性池时,他们可以选择将一个 hook 合约链接到池中。一旦链接,hook 的逻辑将在特定事件发生前或后被调用。

在 Uniswap V4 和 Pancake Swap V4 中,hook 的自定义逻辑可以在八个关键点被调用:

  1. 在池初始化之前
  2. 在池初始化之后
  3. 在流动性提供者修改其头寸之前(即增加或减少他们提供的代币数量)
  4. 在流动性提供者修改其头寸之后
  5. 在交换之前
  6. 在交换之后
  7. 在捐赠之前(你可以在上面链接的 Uniswap V4 白皮书中了解 donate()
  8. 在捐赠之后

来源:Pancake Swap

能够在八个特定事件中执行自定义代码大大增加了流动性池的可定制性,使得流动性池对流动性提供者和交易者更具吸引力。

Hook 使用案例:动态费用

无 Hooks:标准费用

当用户使用流动性池进行交易时,会支付小额交易费,以在池的流动性提供者之间分配。通常,这些费用是在流动性池创建时确定的,并且是固定的。这可以是固定费用或交易金额的一定百分比。

启用 Hooks:动态费用

根据不同的因素,我们可以通过 Hooks 管理流动性池的费用。

动态费用的示例

为了管理交换费用,我们可以实现一个在交换发生之前被调用的 hook。

来源:Uniswap

以下是我们可能希望调整池交换费用的情景列表:

高波动性

在市场高度波动期间,流动性提供者面临无常损失的风险。这是指他们的资产价值低于初始存款的市场价值。

在高波动性期间,hooks 允许我们提高流动性池的交换费用,以补偿流动性提供者承受更高风险。

在低波动性期间,我们还可以降低交换费用,以鼓励用户使用该池进行交易。

流动性池状态

我们可以根据池的流动性变化其费用。

当流动性池缺乏流动性时,我们可以提高交换费用。这将吸引更多流动性提供者,因为当用户使用池交易时,他们可以获得更高的交易费用。

当流动性池的流动性很高时,我们可以降低费用,以吸引交易者和池内的活动,从而为流动性提供者创造回报。

池利用率

流动性提供者希望通过尽可能提高池的费用来最大化回报。同时,他们希望吸引尽可能多的交易者,以便池可以被充分利用。

我们可以利用 hooks 平衡这些因素,通过降低费用来吸引更多用户进入利用率低的池,并在利用率高的池中提高费用,以为流动性提供者带来更大的回报。

这些 hooks 使我们能够根据市场条件吸引更多流动性提供者和交易者。流动性提供者享受更高的交换费用,而交易者则更喜欢较低的费用。动态费用鼓励双方与池进行互动,并让市场参与者在不断变化的市场条件下实现最佳的交换费用。

Hook 使用案例:时间加权平均价格订单

我们常常听到投资者提到美元成本平均策略。这是指投资者通过多次小额交易而非一次大额交易来购买资产。这种策略意味着投资者的买入价格是在设定时间段内的平均值,而不是在某一天某一特定时间的价格。

截至目前,最流行的 AMMs 无法自动化这类交易,而希望定期购买某资产的投资者则必须手动完成每次交换。随着 hooks 的引入,交易者可以使用时间加权平均市场制造商 (TWAMM) 在设定的时间段内进行投资。

这可能会引起你的警惕,因为它可能大幅增加被 MEV 机器人抢先交易的风险,但为了确保这种情况不会发生,Uniswap V4 始终会在池中的任何其他交易之前处理时间加权平均市场制造商订单。

Hook 使用案例:限价单

限价单是以特定价格或更好价格购买或出售资产的订单,而市场订单则是在当前市场价格立即执行。

当流动性池流动性低或波动性高时,交易者面临更高的滑点风险。滑点是指交易预期价格与实际执行价格之间的差异。在流动性池中实施 hooks 来放置限价单可以大幅降低交易者的滑点风险。

要在流动性池中创建限价单,我们可以创建一个在每次交换后执行的 hook 合约。该合约将检查资产当前价格是否在限价单的执行范围内。如果是,订单将被执行。

Hooks 的未来

动态费用、时间加权平均市场制造商和限价单只是我们利用 hooks 改善流动性池功能的几种方式。它们可以降低风险并增加流动性提供者和交易者的收益,使整个生态系统对用户更具吸引力。

要了解如何创建一个 hook 合约,请查看 Uniswap V4 文档

  • 原文链接: cyfrin.io/blog/hooks-in-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
cyfrin
cyfrin
Securing the blockchain and its users. Industry-leading smart contract audits, tools, and education.