如何在 Uniswap V4 中构建自定义 Hooks

  • BuildBear
  • 更新于 2024-07-23 21:43
  • 阅读 1047

如何在 Uniswap V4 中构建自定义 Hooks

如何在 Uniswap V4 中构建自定义 Hooks

Uniswap 是最受欢迎的 DeFi 协议之一,用于交易数字资产。Uniswap 从早期版本到 Uniswap v4 的演变中,经历了重大变化和改进。Uniswap v3 引入了集中流动性功能,允许流动性提供者选择价格范围,从而获得更高的费用。最新的 Uniswap v4 具有单例架构,增强了流动性管理和灵活性。

本详尽指南探讨了 Hooks 的概念以及开发人员如何在 Uniswap V4 中实现自定义 Hooks。

什么是 Hooks?

Hooks 是智能合约,为 Uniswap v4 中的流动性池提供额外功能,为开发人员提供定制能力。这些功能可以包括动态费率调整、链上限价订单以及与链上或 acles 的集成。

它是如何工作的?

它类似于插件系统,将不同的操作插入到池中。这使开发人员可以部署具有自定义 Hooks 的池,这些 Hooks 与其他 Uniswap 池一起工作。

Hooks 可以在主要生命周期操作之前和之后执行,例如池创建、提供流动性和兑换。Uniswap v4 支持 hook 回调,例如:

  1. beforeInitialize 和 afterInitialize
  2. beforeModifyPosition 和 afterModifyPosition
  3. beforeSwap 和 afterSwap
  4. beforeDonate 和 afterDonate
  5. beforeSwapReturnDelta 和 afterSwapReturnDelta
  6. afterAddLiquidityReturnDelta
  7. afterRemoveLiquidityReturnDelta

通过利用这些 Hooks,开发人员可以向流动性池引入独特功能和优化。

以下是它的简单示例:

在 Uniswap V4 上创建自定义 Hook

本教程将指导你创建一个用于 Uniswap V4 的自定义 Hook,该 Hook 限制了一天中特定时间段的交易。要在 Uniswap V4 中创建自定义 Hook,我们将从 Uniswap Foundation 提供的模板开始, 这里 。在开始之前,请确保你已在系统上安装了 Foundry。让我们开始吧!

  • 克隆模板:
git clone https://github.com/uniswapfoundation/v4-template.git  
cd V4-template
  • 初始化 git 并安装依赖项:
git init  
forge install

上述命令安装了辅助合约,如 v4-core 和 v4-periphery,用于构建 Hooks。

  • 创建自定义 Hook

通过扩展来自 v4-periphery 存储库的 BaseHook 合约来实现任何 Hook。getHookPermissions 定义了哪些 Hooks 是活动的。在这种情况下,只有在兑换期间才执行 beforeSwap 函数。

现在,根据 Hook 调用,我们需要实现功能。我们将使用变量 openingTimeclosingTime 指定交易时间。在发生任何兑换之前,Hook 将执行基于时间的限制,确保兑换仅在特定时间发生,否则将撤销兑换交易。以下是完整代码:

  • 部署 Hook

这一步至关重要,这就是像 BuildBear 这样的平台的重要性所在。BuildBear 测试网络为开发人员提供了先进的测试功能,具有独特的插件系统。你可以通过将其部署到 BuildBear Sandbox 来测试 Hooks 的整体功能,就像在主网络上一样。

要部署 Hook 合约,我们需要使用 CEATE2 在预定地址部署,并且 Hook 合约必须在地址中编码特定标志。在环境文件中设置如下:

# Hook Flags

BEFORE_SWAP=true  
AFTER_SWAP=false  
BEFORE_ADD_LIQUIDITY=false  
AFTER_ADD_LIQUIDITY=false  
BEFORE_REMOVE_LIQUIDITY=false  
AFTER_REMOVE_LIQUIDITY=false  
BEFORE_INITIALIZE=false  
AFTER_INITIALIZE=false  
BEFORE_DONATE=false  
AFTER_DONATE=false

部署脚本如下:

  • 创建 BuildBear Sandbox 以部署和验证合约。

如果你是 BuildBear 的新手,请查看这个 快速指南。在这里,我们将在 Sepolia 网络上部署它,请参考 poolManager 的部署地址这里。

在你的 BuildBear 仪表板的插件选项中,安装 SolidityScan 插件,以检查漏洞并获取详细的安全报告。

Sourcify 插件 是默认安装的,将用于智能合约验证。

使用以下命令部署和验证你的 Hook 合约。确保用你的实际 BuildBear RPC URL 和私钥替换占位符。还要确保你的帐户中有足够的代币或从水龙头获取。

forge script script/DeployHook.s.sol --rpc-url https://rpc.buildbear.io/sanam  --private-key 0xf09590bd83826abc93ad34f81fabc1dcb739a1b9daa34464e19fa96fbf1e7596 --verify --verifier sourcify --verifier-url "https://rpc.buildbear.io/verify/sourcify/server/sanam" -vvvv --broadcast --slow

转到资源管理器,查看你的 Hook 在概述选项卡中的安全状态和漏洞计数,如下图所示:

结论

Uniswap v4 通过优化流动性管理和交易功能推进了 DeFi 领域。新的 Hooks 功能提供了定制性和增强功能,极大地有利于去中心化交易所(DEX)和自动做市商(AMM)。本教程演示了如何使用 BuildBear 在 Uniswap v4 上开发和部署自定义 Hooks,突出了无缝集成和强大功能,使开发人员更容易创建、测试和保护智能合约。

关于 BuildBear:

BuildBear 是专为 DApp 开发和测试量身定制的平台。开发人员可以在各种区块链网络上构建个性化的私人测试网络沙盒。在 BuildBear 上,无限制地铸造原生和 ERC20 代币及快速的交易时间(不到 3 秒!),极大地增强了 DApp 开发生命周期。该平台配备了用于实时测试和调试的工具和插件,确保开发人员可以轻松跟踪复杂的区块链交易。

关注我们: Twitter | LinkedIn | Telegram | GitHub

我是 AI 翻译官,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
BuildBear
BuildBear
江湖只有他的大名,没有他的介绍。