晚上看到 WTF 发了 uniswap-v4 共读,就了解了下最新版的 v4 的一些特征。欢迎大家补充和一起研究。
Uniswap v4 有以下特性:
-
钩子和自定义池:v4 引入了 "钩子"(hooks),这是在池操作生命周期的各个节点运行的合约。这使得开发者能够在 Uniswap 协议的流动性和安全性之上进行创新,通过与 v4 的智能合约集成的钩子来创建自定义的 AMM 池。每个池可以使用自己的钩子智能合约,钩子可以仅限于在池创建时确定的特定权限。
-
提高架构和燃气节省:v4 引入了新的 "单例" 合约,所有池都在一个智能合约中。这样可以减少成本和提高效率。根据初步估计,v4 将池创建的燃气成本降低了 99%。此外,v4 引入了新的 "闪电会计" 系统,它只在净余额上进行转账,而不是在每次交换结束时将资产转入和转出池,这使得系统更为高效,为 Uniswap v4 提供了额外的燃气节省。
-
动态费用和限制订单:v4 将允许支持动态费用的池,添加链上限制订单,或作为时间加权平均市场做市商(TWAMM)来分散大订单。池创建者可以设置使他们最具竞争力的费用层级,或者使用动态费用钩子进行定制。v4 还恢复了对本地 ETH 的支持,这提供了额外的燃气节省。
-
许可和治理:Uniswap v4 的代码将在 Business Source License 1.1 下发布,该许可证限制了在商业或生产环境中使用 v4 源代码的使用,最长可达四年,此后将永久转为 GPL 许可证。与 v3 一样,Uniswap 治理和 Uniswap Labs 可以对许可证进行例外处理1。
其中 Hooks 生命周期如图所示:#
当某人在 Uniswap v4 上创建一个池时,他们可以指定一个钩子合约。这个钩子合约实现了池在执行过程中将调用的自定义逻辑。
Uniswap v4 目前支持八个这样的钩子回调:
-
beforeInitialize/afterInitialize
-
beforeModifyPosition/afterModifyPosition
-
beforeSwap/afterSwap
-
beforeDonate/afterDonate
钩子合约的地址确定执行哪些钩子回调。这创造了一种 gas 高效和表达能力强的方法来确定所需的回调,并确保即使可升级的钩子也遵守某些不变量。创建一个工作钩子的最低要求很少。
提高架构和节省 gas#
Uniswap v4 通过引入一些新的架构和优化来提高燃气效率和开发人员体验。其中一些优化包括:
- 单例模式:
Uniswap v4 使用单例模式来减少重复的代码和存储开销。单例模式允许多个合约共享相同的存储空间,从而减少了存储开销。 - 闪电记账:
闪电记账是一种优化技术,它使用瞬态存储来记录余额变化,从而减少了存储开销。在 Uniswap v4 中,闪电记账被用来记录流动性提供者的余额变化,从而提高了燃气效率。 - gas 优化:
Uniswap v4 通过使用更少的存储和更少的计算来减少 gas 开销。例如,Uniswap v4 使用了更少的存储来记录流动性提供者的余额变化,从而减少了存储开销。此外,Uniswap v4 还使用了更少的计算来计算交易费用,从而减少了计算开销。
mev 相关#
Uniswap v4 引入了一种新的机制,可以将 MEV(矿工提取的价值)内部化到流动性提供者的回报中。这个机制是通过钩子来实现的,允许开发人员在池的执行过程中执行自定义逻辑。这些钩子可以用来实现内部化 MEV 的机制,以便流动性提供者可以从 MEV 中受益。这是 Uniswap v4 中的一个新功能,它可以帮助流动性提供者更好地管理他们的回报,并为他们提供更好的收益。
在 Uniswap v4 中,内部化 MEV 的机制是通过钩子来实现的。具体来说,开发人员可以使用 beforeSwap 和 afterSwap 钩子来实现这个机制。 在 beforeSwap 钩子中,开发人员可以检查当前交易的状态,并决定是否执行交易。如果交易被执行,开发人员可以在 afterSwap 钩子中执行一些自定义逻辑,例如将 MEV 内部化到流动性提供者的回报中。 为了实现这个机制,Uniswap v4 还引入了一个新的概念,称为 TWAMM(时间加权自动化市场制造商)。TWAMM 允许交易在一段时间内分批执行,从而减少对市场价格的影响。这个机制可以帮助流动性提供者更好地管理他们的回报,并为他们提供更好的收益。 总之,Uniswap v4 通过使用钩子和 TWAMM 机制,为流动性提供者提供了一种内部化 MEV 的机制,从而帮助他们更好地管理他们的回报,并为他们提供更好的收益。
动态费用和限制订单#
Uniswap v4 引入了动态费用和限制订单的功能,这些功能可以帮助流动性提供者更好地管理他们的回报,并为他们提供更好的收益。
动态费用是指交易费用可以根据市场需求进行调整。在 Uniswap v4 中,交易费用可以是静态的,也可以是动态的。如果交易费用是静态的,那么它将保持不变。如果交易费用是动态的,那么它将根据市场需求进行调整。这个机制可以帮助流动性提供者更好地管理他们的回报,并为他们提供更好的收益。
限制订单是指交易可以在一定的价格范围内进行。在 Uniswap v4 中,限制订单可以帮助流动性提供者更好地管理他们的回报,并为他们提供更好的收益。限制订单可以防止交易者在价格波动较大的情况下进行交易,从而保护流动性提供者的回报。
Uniswap v4 引入了动态费用和限制订单的功能,这些功能可以帮助流动性提供者更好地管理他们的回报,并为他们提供更好的收益。动态费用可以根据市场需求进行调整,而限制订单可以防止交易者在价格波动较大的情况下进行交易,从而保护流动性提供者的回报。
总的来说,Uniswap v4 提供了更高级的定制性、成本效率和创新性,使得任何人都可以通过引入 "钩子" 来做出这些权衡决策,并在一个强大的生态系统中快速、富有表现力地进行 AMM 创新。
参考资料:
https://blog.uniswap.org/uniswap-v4
https://github.com/Uniswap/v4-core/blob/main/whitepaper-v4-draft.pdf