下图为 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 定义了记账余额变化量的类型
-
v4-periphery [Github]:包含 Uniswap v4 外围合约,主要包括:
- PositionManager.sol:PositionManager 合约,用于管理头寸的创建、销毁、修改流动性等操作,底层调用 PoolManager 执行具体操作。
- 外部合约通过 PositionManager 合约来操作头寸,而不是直接调用 v4-core 的 PoolManager 合约
- 支持将多个操作组合成一个事务,保证事务的原子性,同时减少 gas 消耗
- V4Router.sol:V4Router 合约,用于执行交易操作,调用 PoolManager 合约来执行具体的交易操作
- 支持单跳和多跳交易
- 支持指定输入或输出代币数量
- PositionManager.sol:PositionManager 合约,用于管理头寸的创建、销毁、修改流动性等操作,底层调用 PoolManager 执行具体操作。