深入理解 Uniswap V4 智能合约

  • adshao
  • 发布于 2025-02-19 23:57
  • 阅读 61

本文深入分析了 Uniswap v4 智能合约的核心与外围合约,包括工作流、各个合约的功能及其相互关系。通过介绍核心合约 PoolManager 及各种库合约,以及外围合约 PositionManager 和 V4Router,详细讲解了流动性管理和交易操作的实现原理。

深入理解 Uniswap v4 智能合约

工作流

下图为 Uniswap v4 合约的工作流程:

与 Uniswap v2/v3 一样,Uniswap v4 合约也分为两个仓库:

  • v4-core [Github]:包含 Uniswap v4 核心合约,主要包括:

    • PoolManager.sol:单例合约,管理所有 Uniswap v4 池子,提供池子所有对外接口,包括创建、修改流动性、交易等操作
    • Library 合约:
    • Pool.sol:Pool Library 合约,用于具体执行每个池子的操作,比如修改流动性、交易等
    • Position.sol:Position Library 合约,用于具体执行每个头寸的相关操作,如更新流动性和手续费等
    • Hooks.sol:Hooks Library 合约,用于执行 Uniswap v4 合约的 Hooks 钩子函数
    • CurrencyDelta.sol:CurrencyDelta Library 合约,用于执行闪电记账(Flash Accouting)相关操作
    • BalanceDelta.sol:BalanceDelta 定义了记账余额变化量的类型
    • PoolId.sol:如何定义 PoolId 类型,并通过 PoolIdLibrary 库实现将 PoolKey 结构体转换为池子唯一 ID
  • v4-periphery [Github]:包含 Uniswap v4 外围合约,主要包括:

    • PositionManager.sol:PositionManager 合约,用于管理头寸的创建、销毁、修改流动性等操作,底层调用 PoolManager 执行具体操作。
    • 外部合约通过 PositionManager 合约来操作头寸,而不是直接调用 v4-core 的 PoolManager 合约
    • 支持将多个操作组合成一个交易,保证交易的原子性,同时减少 gas 消耗
    • V4Router.sol:V4Router 合约,用于执行交易操作,调用 PoolManager 合约来执行具体的交易操作
    • 支持单跳和多跳交易
    • 支持指定输入或输出代币数量
    • PathKey Library:PathKey库,如何计算交易池和方向的逻辑
    • Actions Library : 定义了流动性管理、兑换、捐赠、结算以及包装操作等多种功能,允许用户进行代币的增加、减少、铸造、销毁和交易等操作。
    • DeltaResolver : 抽象合约,主要功能包括向 PoolManager 合约同步、转移代币及结算资金。
    • BaseActionsRouter : 定义如何批量执行操作、处理解锁回调、计算接收者和支付者地址等功能
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

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