风险提示:央行等十部委发布《关于进一步防范和处置虚拟货币交易炒作风险的通知》, 请读者提高风险意识。

Uniswap V4是如何实现限价单交易的?

在 DeFi 中,Hooks 是一种编程概念,指的是一组用于在智能合约执行特定操作时自动触发的函数或代码片段,可用于在特定事件发生前、后或期间执行自定义逻辑。

Leo
Leo
热度 ...

原文作者:Leo

原文来源:blockbeats

昨日,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 的 Boosted Pools,超出范围的流动性可以存入其他协议,例如借贷者,以获得额外的收益。


V4 限价单机制


通过分析 Uniswap V4 的限价单 LimitOrder.sol 的示例合约代码,得出的限价单运行流程大概如下:


Uniswap


1. 导入库和合约:引入了相关的库,如 SafeERC20 和 IERC20,以及用于与 Uniswap V4 交互的合约,如 IUniswapV4Router02。


2. 定义变量:

- tokenIn:交易中的输入的 token;

- tokenOut:交易中的输出的 token;

- totalAmountIn:交易中输入的 token 总量;

- minAmountOut:交易中用户预期的最小输出 token 量。


3. 定义限价单:

- OrderExecuted:当限价订单成功执行时触发的 token 价格。

关于【Uniswap V4是如何实现限价单交易的?】的延伸阅读

  • Uniswap 投票延迟,代币持有者沦为二等公民了吗?

    Uniswap基金会推迟了决定是否升级协议的投票,以奖励UNI代币持有者。这是因为一位利益相关者提出了新问题,需要更多审查。这不是第一次推迟投票,也不是代币持有者与其他利益相关者冲突的唯一一次。Uniswap V3的推出引发了关于费用转换的讨论,但最终无果而终。这反映了DeFi协议中代币持有者并非最终决定权的教训。

  • IOSG:从用户视角重新定义Web3项目和Token-market-fit

    创业团队应更关注用户需求,而不是假设。设计UI/UX时应简洁直观,移动端体验需要优化。在加密领域,吸引长期用户比短期增长更困难。空投已成为获客捷径,但需要思考其目的性和管理预期。Token的价值反映了市场对项目的共识,可以通过预期收益和叙事来吸引投机者。用户体验也很重要,注意力是稀缺资源,Crypto项目难度比以前更大,但用户需求仍是最重要的。建议Crypto创业者从用户需求出发思考。


4. 构造函数:在部署此合约时,需要提供以下参数:

- _router:Uniswap V4 的路由合约地址;

- _tokenIn:输入 token 的合约地址;

- _tokenOut:输出 token 的合约地址;

- _totalAmountIn:输入 token 的总量;

- _minAmountOut:期望的最小输出 token 量;

- _deadline:限价订单的截止时间。


5. executeOrder 函数:该函数用于执行限价订单

首先,该函数确保当前区块的时间戳早于截止时间,然后计算交易的实际输出金额。接下来,它会检查实际输出金额是否大于或等于最小输出金额。如果满足条件,它将使用 SafeERC20 库安全地将输入 token 从用户地址转移到合约地址,然后执行交易。最后,将输出 token 发送回用户,并触发 OrderExecuted 事件。


6. onUniswapV4Swap 函数:这个函数是一个回调函数,当交易被 Uniswap V4 路由合约执行时会被调用。该函数将检查交易的输入和输出金额是否符合预期,并返回适当的布尔值。

BlockBeats 注:布尔值是 Python 中一种取值仅能为真或假的数据类型,它赋予了编程语言在逻辑上表达真或假的能力。如果没有这种能力,很多功能将无法被实现。


7. recoverToken 函数:这个函数允许合约的拥有者在特殊情况下从合约中取回 token。例如,当由于某种原因订单未被执行,用户可以通过这个函数来找回他们锁定在合约中的 token。

有了 Hooks,限价单的运行机制就很明显了:

-在 Hooks 合约上下订单;

-Hooks 合约将你的订单添加到其 V4 交易上;

-根据自定义或托管预言机,当价格到限价单价格时,会触发 Hooks 自动执行 Swap 操作,并调整流动性;

-Hooks 自动 remove order

-订单取消或完成。

免责声明:本文仅代表作者个人观点,不代表链观CHAINLOOK立场,不承担法律责任。文章及观点也不构成投资意见。请用户理性看待市场风险,以及遵守所在国家和地区的相关法律法规。
图文来源:Leo,如有侵权请联系删除。转载或引用请注明文章出处!

标签:

分享至
https://www.chainlook.cn/toutiao/1691122216.html

下一篇:

长推:Uniswap v4带来了什么?改变了什么?

swap协议的本质是做市商,各个协议使用不同的算法,以适应不同的LP,然后大家找1inch/cowswap take单,以寻找最好的价格。

免责声明:
链观CHAINLOOK作为区块链技术应用与Web3行业研究的智库媒体,旨在为中国区块链专家、学者们提供最新的行业资讯信息与数据样本,用于区块链技术研究与创新。本站所发布的文章仅代表作者的个人观点,不代表链观CHAINLOOK官方立场,本站所发布的区块链行业研究报告与数据分析成果是通过人工智能算法对数据内容进行分析与归纳生成,不代表任何投资暗示与建议,链观CHAINLOOK不承担法律责任。

风险提示:
虚拟货币不具有法定货币等同的法律地位,参与虚拟货币投资交易存在法律风险,链观CHAINLOOK坚决反对各类代币炒作,请读者提高风险意识,理性看待区块链技术应用及市场风险。

© 链观CHAINLOOK All Rights Reserved. 京ICP备18054193号-5