以太坊坎昆 (Dencun) 升级已于 1 月 17 号上测试网 Goerli,预示着坎昆升级的主网上线也快了,之后,Uniswap V4 也会随之上线主网,因为 Uniswap V4 核心功能中的闪电记账(FLASH ACCOUNTING)依赖于 EIP-1153 中的瞬态存储操作码 (Transient storage opcodes),而 EIP-1153 需要等到坎昆升级后才会引入 EVM。
Uniswap V4 核心算法和 V3 的 AMM 一样,在 V3 的基础上增强了一些特性:Hooks 功能、单例模式、闪电记账和原生 ETH。MetaTrust Labs 为此推出 Uniswap V4 系列文章,为读者解读 Uniswap V4 特性、合约实现、潜在安全风险等话题。
相比于前一版本, Uniswap V4,在以下方面做了改变:
在 Uniswap v4 中,将允许使用者通过 Hooks 合约的方式,将更多自定义的功能集成到集中流动性池。这大大的丰富了业务功能,比如,限价单、动态费率、TWAMM、Yield 生息等等。Hooks 它是一个自定义的合约,当交易池初始化的时候,指定交易池所使用的自定义 Hooks 合约地址。这样就关联上了交易池和 Hooks 合约。Uniswap V4 提供了 8 个 Hooks 函数回调,同时也是 Hooks 合约需要实现回调函数,包括:
- beforeInitialize/afterInitialize
- beforeModifyPosition/afterModifyPosition
以 beforeSwap 和 afterSwapHooks 在 swap 执行流程的执行为例,其流程图如下,在步骤 S0 和 S2,检测 beforeSwap 标记 /afterSwap 标记,当他们为 true 时,表示有 Hooks,则调用对应的 Hooks 合约上的 beforeSwap/afterSwap 函数。由于 Hook 合约的功能有使用者自定义,在增强灵活性的时候,也带来一定的安全风险。例如:我们也会在接下来的文章中介绍 Hooks 合约的安全风险。
Uniswap v4 放弃了前一版本中通过工厂模式创建交易池的方式,采用和实现了一个包含所有池的单个合约,即单利模式。Uniswap 一个常见的业务场景是多跳交易 (multi-hop trade),例如,用 $USDC 换取 $Doge 时,可能需要经过 $WETH 作为中间代币进行交易,这是交易依次在[$USDC,$WETH]和[$WETH,$DOGE]两个池子上进行 swap。通过单例模式,不仅降低了池的创建成本,同时还降低了多跳交易的成本,这因为所有池子都在一个合约,池子的创建和交易的执行都只是在一个合约内对状态变量进行更新。在 Uniswap 之前的版本中,交换和向池中添加流动性都是以代币转移结束的,特别在多跳交易时需要在多个池子中转移代币,这造成高额的 Gas 费。而在 Uniswap v4 中,每个操作都会更新一个称为 delta 的内部净余额,仅在锁定结束时进行外部转账。这将减少多跳交易时的 Gas fee。闪电记账使用了 EIP-1153 中的瞬态存储操作码 (Transient storage opcodes),即 TLOAD 和 TSTORE,它将在坎昆升级中得到实现,随着坎昆升级的临近(2024 年 Q1),UniswapV4 也将随之上线主网。
原生 ETH 的支持在 Uniswap v2、v3 版本中被停止了,但在 Uniswap v4 又恢复了对它的支持,这能减少对原生 ETH wrap/unwrap 操作的 Gas 消耗,同时原生 ETH 相比于 ERC20 代币,它的转移所消耗的 gas 也更少,原生 ETH 转账消耗 21k gas,而 ERC20 代币转账消耗约为 40k gas。
Uniswap V4 主要的核心源码(除了部分 Libraries)根据 许可证 Business Source License 1.1 发布,它限制了 Uniswap V4 源代码在商业或生产环境中的使用时间,为期四年,到期后永久转换为 GPL 许可证。https://eips.ethereum.org/EIPS/eip-1153
https://github.com/Uniswap/v4-core
https://blog.uniswap.org/uniswap-v4-community-contributions
https://github.com/Uniswap/v4-core/blob/main/docs/whitepaper-v4.pdf
https://blog.uniswap.org/uniswap-v3
https://blog.uniswap.org/uniswap-v4#what-is-uniswap-v4
https://github.com/Uniswap/v4-core/blob/main/LICENSE
关于 MetaTrust Labs
MetaTrust Labs 是新加坡南洋理工大学孵化的领先 Web3 人工智能安全工具和代码审计服务提供商。我们提供先进的 AI 解决方案,赋予开发者和项目相关者保护 Web3 应用程序和智能合约的能力。我们的综合服务包括 AI 安全扫描、代码审计、智能合约监控和交易监控。通过整合 AI,我们确保构建一个安全的生态系统,增强用户和开发者之间的信任。
官网: https://www.metatrust.io/
Twitter: https://twitter.com/MetaTrustLabs
Linkedin: https://www.linkedin.com/in/metatrust
↓ ↓ 戳原文,加入社区一起聊聊Uniswap V4