Uniswap v4 DualPool技术上线:闲置LP资金也能自动赚取借贷收益
Uniswap v4 DualPool正式上线
来源:Uniswap;编译:金色财经Claw
Uniswap DualPool现已上线——这是一个开源的 Uniswap v4 Hook,由 Spark 合作设计、Uniswap Labs 开发。它允许做市商在资产闲置期间赚取借贷收益,直到交易发生时才将资金投入使用。从外部看,DualPool 就是一个普通的 v4 池:交易者、聚合器和求解器通过 PoolManager 执行交易。而在内部,池中的资金存放在 ERC-4626 收益金库中,当需要执行交易时,资金会被拉入集中流动性头寸。
解决链上流动性闲置难题
链上流动性是全天候待命的。提交到 AMM 池中的资产随时可以被交易,但在交易之间的空窗期,这些资产不会产生任何收益。对于专业做市商来说,这就迫使他们必须在资金的存放位置之间做出取舍:将资金放入池中,可以赚取交易手续费,但放弃借贷收益;将资金放入借贷市场,可以赚取收益,但无法参与交易流量。对于稳定币对等交易对,手续费很薄,竞争激烈,借贷收益可能持平甚至超过手续费。因此,做市商有时会选择收益,而该流动性也就不会出现在 AMM 上。DualPool 通过即时提供流动性消除了这种取舍:在交易间隙,资金存放在收益金库中;当交易到达时,池子在交易本身内部按需调用所需资金。
DualPool工作原理详解
在两次交易之间,DualPool 在 PoolManager 中实际持有的流动性几乎为零。其资金存放在池子运营方选择的 ERC-4626 金库中,持续赚取借贷收益。当一笔交易到达时,Hook 在交易事务内原子性地执行一个四步循环:
- 只取出刚好够用的资金:Hook 根据当前价格计算其配置区间所需的各种代币数量,仅从金库中提取差额部分。
- 部署集中流动性:按照运营方的分配方案,将资金作为一笔或多笔头寸发布。
- 正常执行交易:PoolManager 针对这些头寸运行标准的交换计算,并收取池子的固定费用,与其他池子无异。
- 将剩余资金重新存入金库:Hook 移除其添加的所有头寸,与 PoolManager 结算,并将剩余资金重新存入金库。
对交易者而言,这就是一次普通的 Uniswap 交易。运营方的资金仅在交易持续期间离开金库,交易完成后立即重新存入。由于交易本身就处理了流动性的取出和重新存入,系统可以自主运行,无需任何 Keeper 基础设施。
服务对象与角色分工
运营方(Operators) 是专业做市商。运营方部署池子、设定费用、选择收益金库、设计流动性分布,并注入初始资金。作为回报,他们同时获得交易手续费和闲置资金产生的收益。
流动性提供者(LPs) 可以在运营方允许外部存入时加入池子。LP 按比例获得池中资产的权益,同时赚取手续费和金库收益,无需主动管理。
交易者(Swappers) 通过他们已经使用的界面、聚合器和路由器,像使用任何其他 Uniswap 池一样与 DualPool 进行交易。整个交易过程不会暴露流动性刚刚还存放在借贷金库中这一事实。路由器和聚合器通过现有的 v4 执行路径运行 DualPool 交易,无需改动。唯一(可选的)新增工作是报价(下文详述)。
灵活的流动性形态设计
DualPool 不是将资金部署到单一价格区间。每个池子都带有运营方配置的分布方案:一组带权重的 tick 区间,在每次交易时一并部署。区间可以重叠、可以不对称地分布在当前价格两侧,也可以完全偏于一侧。这足以编码一套做市策略,而不仅仅是一个波段。运营方可能运行的几种典型分布形态包括:
- 稳定币订单簿:将大部分权重集中在锚定价附近的一个窄带内,外围辅以较浅的覆盖,使得绝大多数深度集中在几乎所有交易量发生的地方。
- 杠铃型:中心保持紧密,同时在更远的位置保留单边深度,以便大额单边流量有处可交易,而不会把流动性稀释到很少被触及的 tick 上。
- 锚定防御梯:在锚定价格的脆弱侧逐级堆叠越来越深的支撑,适用于有防御义务的运营方。
运营方可以在两次交易之间的任何时候替换分布方案,因此形态可以根据波动率环境灵活调整:市场平静时收窄且激进,市场紧张时拓宽且防御。资本分配算法在构造上是保守的;Hook 在计算流动性之前,会先为每个区间分配其池中余额的确切份额,因此重叠区间永远不会重复计算资本。
不可更改的核心特性保障安全
以下三个属性在池子创建时即固定:
- 费用:每个 DualPool 带有静态费用;之后没有任何代码路径可以更改它。如果要对同一交易对重新定价,运营方需要部署一个新池子。
- 金库:池中货币与其收益金库的绑定关系一次性设定。之后没有管理员路径可以将池资金指向不同的金库。
- 交易逻辑:每笔交易都运行 PoolManager 的标准 v4 数学运算,针对 Hook 部署的任何流动性进行。
这些不变性保证了 DualPool 对于路由到它的聚合器和求解器是可预测的:运营方不能改变核心交易逻辑,也没有管理员函数可以盗取 LP 存入的资金。运营方保留的权力(暂停和恢复池子、重新调整流动性分布、限制外部存入、以及在紧急情况下切断金库访问)完全位于这三个不变性之外。
面向聚合器的专用报价接口
一个没有常驻流动性的池子打破了路由器和聚合器多年来的习惯:通过读取池状态来估算深度。如果在两次交易之间查看链上的 DualPool,你会看到一个价格,但流动性几乎为零——即使该池子能够成交数百万美元。因此,DualPool 暴露了一个专用的报价接口。利用 Hook 的原生报价流程完全是可选的,但这样做可以显著改善路由效果:
- 指示性报价视图:针对 Hook 将会部署的流动性(含费用)对一笔预期交易进行定价。零报价表示该池无法交易,应路由到别处。
- 储备视图对:区分池子的总资产和有效流动性——即金库当前可以立即返还的金额。当金库有上限或受到利用率限制时,有效流动性即为上限;Hook 会根据该上限来配置资金规模,路由器也应据此控制交易规模。
- 明确错误反馈:暂停的池子会返回一个明确的错误,而不是静默地给出空填充,因此路由器可以跳过它。
执行层面没有变化,因为 DualPool 交易就是一次标准的 v4 交易,具有与其他池子相同的执行和滑点限制。唯一的不同是成本:该循环在交易内部增加了金库取款和存款操作,因此 Gas 开销可能比普通 v4 交易高出数倍。按当前 Gas 价格计算,这不过多花几美分,但这仍然会计入净执行价格。
多重安全机制护航
DualPool 的安全模型大部分由代码强制实施,独立于金库选择:
- 隔离性:Hook 按池子和货币为每个池子的资产维护分类账。其总的代币余额从不作为会计输入,且一个池子记录的资产不能被另一个池子赎回。
- 份额安全:LP 份额是内部且不可转让的。份额计算带有虚拟偏移以抵御通胀攻击,始终以有利于现有 LP 的方向取整,并强制要求可配置的最短持有期,以防止同一区块内存款和取款进行费用狙击。
- 重入防护:面向用户的入口点带有标准防护,交易循环由瞬态锁保护,该锁会拒绝同一池子的重入交易,并在任何循环进行期间冻结 Hook 上任何位置的存款和取款。
核心信任假设是底层收益金库。池子的金库持有其闲置资金,且 Hook 对其有常备授权,因此运营方必须选择其治理和升级风险可接受的金库。金库选择是运营方风险管理的核心。如果某个金库的风险变得不可接受,后备方案是一个单一的紧急操作:暂停池子、关闭存款、撤销金库授权,并尝试将池子资产全部取回。如果金库有上限或流动性不足,系统会优雅退化;报价和部署规模会缩减至有效流动性,LP 对总资产的权益不受影响;无法接受存款的金库也永远不会阻塞交易。
OpenZeppelin 对 DualPool 进行了审计,未发现严重或高危漏洞,所有报告的问题均已解决。审计报告与 DualPool Hook 代码一同提供。
开发者可立即部署使用
如果你希望你的资金在两次成交之间持续赚取收益,DualPool 现已上线。要部署你自己的 DualPool,请使用此部署指南:它指导你从官方工厂部署经过审计的 Hook。部署指南涵盖了完整流程,包括配置和验证。
如需深入了解 DualPool 的工作原理,请查看 GitHub 仓库和开发者文档,其中包括面向路由器和聚合器的集成指南。






