去中心化交易所 V4 版本的新功能 Hooks 使交易者能够部署更复杂的交易订单,其中就包括限价单交易。本文源自 Leo 于 Blockbeats所着文章《 Uniswap V4是如何实现限价单交易的?》,由 Foresight News 整理、编译及撰稿。
(前情提要:Uniswap V4 版本降临!你该知道 V4 的全部升级重点 )
(背景补充:钱包签名就被盗?揭秘Uniswap Permit2钓鱼骗局 )
本文目录
昨日,Uniswap 释出了未来即将推出的 Uniswap V4 版本程式码草稿,相比 V3 出现了很多创新点。其中,最引人瞩目的一点就是 V4版本出现了限价单交易。大家对于 Uniswap V4 如何实现限价单交易比较好奇,接下来为大家深入分析一下 Uni V4 版本如何实现限价单交易。
关于 Hooks
根据 Uniswap 官方白皮书,限价单交易隶属于其新功能的 Hooks 之下,所以是依靠 Hooks 机制来实现链上限价单交易。
Hooks 是 Uniswap V4 的核心机制,指的是在资金池生命周期的某个特定时刻执行的程式码片段。与之前的 Uniswap版本相比,新版本资金池的可订制程度更高,因此无论是建立池子,还是 LP(流动性提供者)新增 / 移除流动性,抑或是在 swap 之前 / 后,Hooks起到的作用都非常重要。
在 DeFi 中,Hooks是一种程式设计概念,指的是一组用于在智慧合约执行特定操作时自动触发的函式或程式码片段,可用于在特定事件发生前、后或期间执行自定义逻辑。Hooks为开发者提供了一种在智慧合约的不同阶段执行自定义逻辑的方式。通过使用 Hooks,开发人员可以实现更灵活、可订制和可扩充套件的 DeFi 应用程式。
例如,Hooks 可以用来建立具有根据市场条件变动的动态交换费用的资金池,而不是预先设定和静态的交换费用。同时,Hooks还使交易者能够下更复杂的订单,例如限价订单或 TWAP(时间加权平均价格)订单,这些订单会在一定时间内买入 / 卖出一定数量的 Token。
不仅如此,Hooks 还允许以不同的方式使用 Uniswap 的流动性。这类似于 Balancer 的 BoostedPools,超出范围的流动性可以存入其他协议,例如借贷者,以获得额外的收益。
V4 限价单机制
通过分析 Uniswap V4 的限价单 LimitOrder.sol 的示例合约程式码,得出的限价单执行流程大概如下:
1. 汇入库和合约:
引入了相关的库,如 SafeERC20 和 IERC20,以及用于与 Uniswap V4 互动的合约,如 IUniswapV4Router02。
2. 定义变数:
tokenIn:交易中的输入的 token;
tokenOut:交易中的输出的 token;
totalAmountIn:交易中输入的 token 总量;
minAmountOut:交易中使用者预期的最小输出 token 量。
3. 定义限价单:
OrderExecuted:当限价订单成功执行时触发的 token 价格。
4. 建构函式:
在部署此合约时,需要提供以下引数:
_router:Uniswap V4 的路由合约地址;
_tokenIn:输入 token 的合约地址;
_tokenOut:输出 token 的合约地址;
_totalAmountIn:输入 token 的总量;
_minAmountOut:期望的最小输出 token 量;
_deadline:限价订单的截止时间。
5. executeOrder 函式:
该函式用于执行限价订单
首先,该函式确保当前区块的时间戳早于截止时间,然后计算交易的实际输出金额。接下来,它会检查实际输出金额是否大于或等于最小输出金额。如果满足条件,它将使用 SafeERC20 库安全地将输入 token 从使用者地址转移到合约地址,然后执行交易。最后,将输出 token 传送回用户,并触发 OrderExecuted 事件。
6. onUniswapV4Swap 函式:
这个函式是一个回拨函式,当交易被 Uniswap V4 路由合约执行时会被呼叫。该函式将检查交易的输入和输出金额是否符合预期,并返回适当的布林值。
注:布林值是电脑程式语言中一种取值仅能为真或假的资料型别,它赋予了程式语言在逻辑上表达真或假的能力。如果没有这种能力,很多功能将无法被实现。
7. recoverToken 函式:
这个函式允许合约的拥有者在特殊情况下从合约中取回 token。例如,当由于某种原因订单未被执行,使用者可以通过这个函式来找回他们锁定在合约中的 token。
有了 Hooks,限价单的执行机制就很明显了:
在 Hooks 合约上下订单;
Hooks 合约将你的订单新增到其 V4 交易上;
根据自定义或托管预言机,当价格到限价单价格时,会触发 Hooks 自动执行 Swap 操作,并调整流动性;
Hooks 自动 remove order
订单取消或完成。
📍相关报导📍
Uniswap V4 带来的终极问题:DEX能超越CEX吗?
Uniswap V4 版本降临!你该知道 V4 的全部升级重点
Uniswap Labs推出新指标FLAIR:直接可见AMM池内LP竞争力
Leave a Reply