Uniswap v4 Hook DualPool 技術詳解:LP 資金閒置也能賺取收益

Uniswap DualPool 現已上线 —— 這是一個開源的 Uniswap v4 Hook,由 Spark 合作設計、Uniswap Labs 開發。它允許做市商在資產閒置期間賺取借貸收益,直到交易發生時才將資金投入使用。從外部看,DualPool 就是一個普通的 v4 池:交易者、聚合器和求解器透過 PoolManager 執行交易。而在內部,池中的資金存放在 ERC-4626 收益金庫中,當需要執行交易時,資金會被拉入集中流動性頭寸。

閒置資本問題

鏈上流動性是全天候待命的。提交到 AMM 池中的資產隨時可以被交易,但在交易之間的空窗期,這些資產不會產生任何收益。對於專業做市商來說,這就迫使他們必須在資金的存放位置之間做出取捨:

  • 將資金放入池中,可以賺取交易手續費,但放棄借貸收益;

  • 將資金放入借貸市場,可以賺取收益,但無法參與交易流量。

對於穩定幣對等交易對,手續費很薄,競爭激烈,借貸收益可能持平甚至超過手續費。因此,做市商有時會選擇收益,而該流動性也就不會出現在 AMM 上。

DualPool 透過即時提供流動性消除了這種取捨:在交易間隙,資金存放在收益金庫中;當交易到達時,池子在交易本身內部按需呼叫所需資金。

DualPool 的工作原理

在兩次交易之間,DualPool 在 PoolManager 中實際持有的流動性幾乎為零。其資金存放在池子營運方選擇的 ERC-4626 金庫中,持續賺取借貸收益。當一筆交易到達時,Hook 在交易事務內原子性地執行一個四步循環:

  1. 只取出剛好夠用的資金:Hook 根據目前價格計算其配置區間所需的各種代幣數量,僅從金庫中提取差額部分。

  2. 部署集中流動性:依照營運方的分配方案,將資金作為一筆或多筆頭寸發布。

  3. 正常執行交易:PoolManager 針對這些頭寸運行標準的交換計算,並收取池子的固定費用,與其他池子無異。

  4. 將剩餘資金重新存入金庫:Hook 移除其新增的所有頭寸,與 PoolManager 結算,並將剩餘資金重新存入金庫。

對交易者而言,這就是一次普通的 Uniswap 交易。營運方的資金僅在交易持續期間離開金庫,交易完成後立即重新存入。由於交易本身就處理了流動性的取出與重新存入,系統可以自主運行,無需任何 Keeper 基礎設施。

DualPool 的服務對象

  • 營運方(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 現已上线。要部署你自己的 DualPool,請使用此部署指南:它指導你從官方工廠部署經稽核的 Hook。部署指南涵蓋完整流程,包括配置與驗證。

如需深入了解 DualPool 的工作原理,請查看 GitHub 倉庫與開發者文件,其中包括面向路由器與聚合器的整合指南。

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 打賞
  • 回覆
  • 轉發
  • 分享
回覆
請輸入回覆內容
請輸入回覆內容
暫無回覆