在研究 DeFi 領域時,Uniswap 總會出現在研究案例中,而 Uniswap 發展至今也從 V1 到最新的 V4,接著到 UniswapX 協議的推出。可以看到 DeFi 領域的發展及持續優化。以下會帶讀者從 Uniswap V1 一路看到最新的發展路徑。本文源自見微知著雜談的專欄文章《DeFi 評估方法:Uniswap 迭代復盤》,由 Foresight News 整理、編譯及撰稿。
(前情提要:為何Hook是Uniswap V4的一把「雙面刃」?)
(背景補充:詳解Curve和Uniswap的數學巧合,是怎麼擦身走上不同道路?)
最近在做一個 DeFi 賽道的評估方法總結。在對一些案例進行研究後,不論是從影響力,還是從迭代的邏輯來看,Uniswap 都是一個典型的代表,本文對 Uniswap 進行全面覆盤。
Uniswap 自 V1 版本到 V4 的迭代,以及 UniswapX 協議的推出,其內在邏輯都是對 DEX 交易的功能創新和機制優化。
V1 將 AMM 初始實踐於加密領域,V2 減少 ETH 風險倉位,推出更難被操縱的價格預言機,V3 通過集中流動性解決資本效率低下問題,V4 實施可訂製化 DEX,UniswapX 協議通過拍賣機制強化第三方聚合器的競爭性,從而實現對價格滑點的優化。
Uniswap 發展史
Uniswap 的地位和影響力無需贅述,根據 Dune 的即時資料,Uniswap 至今仍舊是市場份額排名第一的 DEX。
作為一個頂級的 DEX,時間並不算長久,但是屢次迭代,我們來看一看發展歷程:
2017 年 6 月,Vitalik 發表文章 On Path Independence;
2018 年 11 月,Uniswap V1 釋出:支援 ETH 和 ERC-20Token 之間進行交易;
2020 年 3 月, Uniswap V2 釋出:支援任意兩種 ERC-20Token 對進行交易;
2021 年 5 月, Uniswap V3 釋出:提高 LP 資金利用率,提出聚合流動性概念;
2023 年 6 月,Uniswap V4 推出:引入 Hooks 合約訂製化,防止價值洩露;
2023 年 7 月,Uniswap X 推出:聚合鏈上鏈下流動性,MEV 保護。
Uniswap V1:對自動做市的嘗試
2017 年,Vitalik 在個人網頁中釋出文章《On Path Independence》,其中首次在加密領域引入了自動做市商(AMM),這是一種不同於 CEX 的交易方法。當然,這種方式在非加密界(如傳統金融界)早有過討論。
我們知道,在股票市場、期貨市場或者現有的 CEX 中,大多都以 Order Book (掛單簿模式)進行交易。做市商(Market makers,如券商、中心化交易所)通過對買方買單和賣方賣單在價格相符的情況下進行撮合,從而達成買賣雙方的交易。
但是在去中心化的情況下卻遇到了問題,原因出自在 DEX 去中心化環境下(任何人都可以參與建立市場),以訂單簿模式進行撮合交易很難提供相應的流動性,成交率和體驗感都相對較差,沒有足夠的流動性則很難媲美 CEX 的操作效用。
而在 Vitalik 的這篇文章中,向加密市場引入了一個新穎的概念:Automatic Market Maker(自動化做市商)。在這個概念中,資產定價通過定價演算法而完成,而不再通過傳統的訂單簿模式。
在 AMM 模式中,不需要做市商報價或者系統撮合,交易者可以直接利用池中流動性實現資產兌換。
TokenA 和 TokenB 形成了恆定乘積的關係:tokenA_balance (p) *tokenB_balance (p)=K(K 不變)
這是一種流動性驅動的交易制度,這種模式被稱為恆定積做市商 (CPMM) 。該種方法下可以通過定義 tokenA 和 tokenB 之間的任何(單調)關係並在任何時候計算其衍生品來給出價格,從而形成一個與路徑無關的做市商。
三個參與方:LP、交易者、套利者
在 AMM 的做市機制中,並不存在類似訂單簿模式具體的交易對手方,資產的實際價值由恆定乘積的數學公式決定,一定程度上可以類比於交易對手為智慧合約,即可實現資產的自動交易。
智慧合約中需要有人提供流動性,流動性提供者就是 LP(Liquidity Provider),LP 通過向該池子中的智慧合約中注入資產,為交易提供流動性,從而獲取交易費用收益。
在 LP 搭建好初始的流動性池後,交易者就可以通過該池進行 Token 的兌換,同時套利者會主動到來,通過在不同市場間的價格套利,維持資產價格與市場價格的一致。
在 18 年 11 月釋出的 Uniswap V1 中,所有資產都可以通過 ETH 進行兌換。ETH 和 ERC-20Token 之間進行交易,任何人可以新增代幣與原生 ETH 進行交易,ETH 就是實質上的資產交易中介。
如果我們想要交易,單個池中會發生什麼樣的變化呢?
假設一個 ETH 現在價值 100 TokenA,一個 ETH/TokenA 池由 10 個 ETH 和 1000 個 TokenA 組成。
此時 10 個 ETH 和 1000 個 TokenA 價值相同都為 1000 美元,資產價值比例是 1:1。
k=10 *1000=10000,在未新增更多流動性的情況下,這個乘積保持不變。
現在假設我要往池中賣掉 5 個 ETH,那麼應該是:
y=10000/(10+5)=666.67,池中的 ETH 數量增加到 15 個,而此時的 USDC 數量變為 666.67 個,所以我用 5 個 ETH 換取到了 333.33 個 TokenA,此時該池中的單個 ETH 價格為 666.67/15=44.44,即一個 ETH 等於 44.44 個 TokenA。
當然,單個池中價格如果和其他交易市場有較大變化,套利者就會立刻蜂擁而至,直至吃掉價差。畢竟 AMM 機制只能產生交易價格,但是並不能發現市場價格,所以套利者的作用十分重要。
無常損失、LP Token、交易滑點
當所存代幣的價格比率與存入資金池時相比發生變化時,就會產生無常損失。變化越大,無常損失就越大。
我們現在作為 LP,繼續舉個例子:
UniswapV1 核心公式:x∗y=k
現在我們作為流動性提供商,繼續往池中新增 10 個 ETH 和 1000 個 TokenA 作為初始的流動性,此時 1 個 ETH 等於 100 個 TokenA,兩者的資產數量恆定乘積為 10*1000=10000 (x*y=10000,x=100y)。
此時,如果 1 個 ETH 漲價為 200 個 TokenA,我們可以進行換算:x*y=10000,x=200y,從而算出 x=7.071,y=1414.21。
此時的流動性池從一開始的 10 個 ETH 和 1000 個 TokenA 變為:7.071 個 ETH 和 1414.21 個 TokenA。
發現問題了嗎?
此時如果我贖回所有的資產,到手變成了 7.071 個 ETH 和 1414.21 個 TokenA,用 TokenA 計價實際價值是 7.071*200+1414.21=2828.41,而如果以最開始的 10 個 ETH 和 1000 個 TokenA 計算,現在的價格應該是 10*200+1000=3000TokenA。
這部分收益的差距(3000-2828.41=171.59TokenA)就是無常損失。
無常損失的發生是因為在去中心化交易所的自動做市商機制下,流動性提供者根據價格波動進行資金調整,導致其本金損失和錯失收益。
由於他們同時充當買賣雙方,當價格下跌時被迫增加持有的資產數量,而當價格上漲時被迫減少持有的資產數量,從而導致損失。
當然,你也可以通過選擇套期保值,通過開設對 ETH 的空單 / 多單合約進行風險管理。
為了激勵使用者充當 LP 提供流動性,並且鼓勵其對價格波動性的承擔,LP Token 應運而生。這是對流動性提供者的獎勵,可以獲取每次交易的一定比例手續費(UniswapV1,交易者在交易中支付 0.3% 的費用,歸流動性提供者所有)。同時也作為 LP 的憑證,用以取回自己所新增的流動性。
還有一個概念是交易滑點,經常做 DEX 交易的朋友絕對不會陌生。AMM 作為一種流動性驅動的交易制度,其優美的恆定乘積等式是一條光滑的曲線,價格是時刻根據供求關係而變化的。
如果此時交易大量 Token,滑點就會出現,你的預期價格和實際從池中獲得的價格之間具有一定的差額。也就是說,你想要的價格和成交價格會有差距。
Uniswap V2:適配,預言機、閃電貸
Uniswap V1 僅支援 ERC-20/ETH 交易對之間進行交易,實質是在使用 ETH 作為過渡貨幣中介進行 ERC-20Token 間的兌換,雖然交易路徑簡單,對於 LP 提供者來說形成了 ETH 的風險倉位、無常損失和滑點風險。
在 Uniswap V2 中,依然是基於「恆定乘積做市商」機制,但是 V2 的升級帶來了效率的提升,其中包括:支援任意兩種 ERC-20Token 對進行交易,這意味著可以建立任意的 ERC20-ERC20 對,而不需要再通過 ETH 的過渡路徑配對。
這點就不再贅述,V2 的升級包括很多方面,還有兩個比較重要的點分別在於:改進價格預言機、實現閃電貸。
價格預言機 Price Oracle 的改進
在 Uniswap V1 的過程中,通過池中兩資產儲備金相除計算出來的價格,如果以此作為鏈上價格預言,並不安全,因為很容易就會被操縱。
這次 V2 升級的目的之一是提升價格操縱的成本和難度。
在 V1 中,假設有其他合約使用當前的 ETH-DAI 價格來結算衍生品,操縱測算價格的攻擊者可以從 ETH-DAI 對中買入 ETH,以虛高的價格觸發衍生合約的結算,然後將 ETH 賣回該對,將其交易迴歸真實價格。在這種情況下,交易甚至可以以原子交易的方式進行,或者由礦工控制區塊內的交易順序。
而在 V2 中,為了測定市場價格平衡,價格每個區塊更新一次,代幣兌換價格在後一個區塊之前測定,也就是代幣市場價格以前一個區塊最後一筆交易為準。
在這次升級裡,也提供了一個新的價格預言資料:時間加權平均價格 TWAP。在每個區塊開始時積累兩種資產的相對價格,允許 Ethereum 上的其他合約在任意時間間隔內估計兩種資產的時間加權平均價格。
更具體的來說,在 Uniswap V2 中,通過追蹤每個區塊開始時有人與合約互動時的價格累積總和來累積該價格。根據區塊時間戳,每個價格都會根據上一個區塊更新後的時間量進行加權。這意味著在任何給定時間 (被更新後) 的累積器價值,應該是合約歷史上每秒鐘的現貨價格之和。
預言機的使用者可以選擇何時開始和結束這個時期,攻擊者操縱 TWAP 的成本會更高,價格相對來說不容易被操縱。
實現閃電貸
閃電貸是一個相對傳統金融的絕對創新,畢竟現實交易不像區塊鏈上一樣可以回滾。
V2 中引入了 Flash Swaps 閃電貸。使用者可以自由地向池中借出資產,並在鏈上的其他地方使用它們,只在交易結束時(在同一個原子交易中進行支付)歸還資產並付出相應的利息,如果未能正常回款則回滾還原該交易。
實際上等於讓任何人可以閃電借出 Uniswap 池中儲存的任何資產。在 V1 中,並不允許使用者在支付資產之前接收和使用該資產,用 A 資產購買 B 資產時,需要先將 A 資產傳送到合約中才能獲得 B 資產。
還有一些其他的更新點:包括 Uniswap V2 調整了新的合約框架,使用簡單的二進位制定點格式來編碼和處理價格(精度)、協議費用的更新、對所鑄成的池子份額支援元交易等。
Uniswap V3: 資本效率的提升
背景:Uniswap V2 存在流動性問題。根據上文中對 AMM 機制介紹,我們可以看出在 V1、V2 時,池子的流動性實際上是分佈在【0,+∞】區域上的,也就是說,在 V2 的池子中實質允許任何價格的交易發生(參考 AMM 恆定乘積中的反函式光滑曲線)。
這乍一看是件好事,交易的範圍很大,但實際上對於波動性不同的交易對,其價格區間並沒有這麼充足的需求,也就造成了在除部分交易區間外嚴重的流動性不足,資產利用率低下。
可以想像的到,在遠離價格區間價格點上提供流動性是毫無意義而且浪費的,價格可能永遠不會達到那個點。
集中流動性 (concentrated liquidity)
在這種情況下,為了提高資金流動性,Uniswap V3 引入了集中流動性 (concentrated liquidity) 的概念。也就是:
流動性提供商(LP)可以自由的選擇在某個價格區間部分提供流動性,這樣做可以將流動性更好的提供在高資本效率的區間內運營,同時在應用上也可以對不同價格波動性的資產池進行不同的配置。
V3 中的每一個小的價格區間都可以理解為一個 V2 在工作。在交易的過程中,價格會順著曲線進行平穩的移動,當價格達到 V2 的某一段時,即達到了 V3 的價格區間的區間點,那麼此時,價格點會滑動到下一個價格區間中。
理解了上面的這個概念,我們就可以來認識下新出現的名詞 ——V3 的核心就是 Ticks。
Ticks,最小變動價位,是可以交易證券的最小增量金額。在 V3 中,通過將【0,+∞】的價格範圍分成了無數個細粒度的 Ticks,實現了對每個區間上下界端點的限制。
通過對粒度控制來聚合流動性 ,V3 裡整個價格區間由離散的、均勻分佈的 Ticks 進行標定,每個 Tick 有一個 index 和對應的價格,每個 Tick 都會擁有其自己的流動性深度。
Uniswap V3 的數學原理上有所改變,雖然和 V2 的底層類似:
L = 根號下 xy
L 被稱作流動性數量,池子中的流動性是兩種 Token 資產數量的組合。同樣的,兩種代幣數量乘積為 K,但是因為每個 Tick 擁有的流動性深度並不相同,不同深度的等價定式不再相同。
關於數學原理就不再贅述,下方有 Atis Elsts 針對 V3 數學原理的一篇論文,有興趣的朋友可以自行閱讀。
Uniswap V2 中還是標準的 0.3% 交易費,而在 V3 中因為顆粒度的不同,提供了 3 個不同的費用等級,分別是 0.05%、0.3% 和 1%。此時的 LP 可以將資金效率集中在交易最頻繁的區間內以獲取最大的收益。
此外,V3 還基於 V2 再次進行了預言機的整體優化,不再只儲存一個價格累積變數,而是儲存一組變數,可以將資料的使用期延長,降低了 Gas 費用,節約成本。
Uniswap V4: 自定義可訂製 DEX
Uniswap V4 基於 Uniswap V3 的集中流動性模型,允許任何人在 Uniswap 上使用自定義功能部署新的集中流動性池,從而實現成為一個高效、可訂製的 DEX 平臺。
在 V4 當中,核心點是鉤子(Hooks)合約,願景是允許任何人通過引入「鉤子」來做出這些權衡決策。
對於每個池,建立者可以定義一個「Hooks 合約」,該合約在呼叫的生命週期的關鍵點執行邏輯。這些 Hooks 也可以管理池的交換費用以及向流動性提供者收取的提款費用。
鉤子 Hooks & 自定義池 Custom Pools
Hooks 是一組由第三方或者 Uniswap 官方開發的合約,在建立 pool 的時候,pool 可以選擇繫結一個 hook,之後在交易的特定階段,pool 都會自動呼叫與之繫結的 hook 合約,該合約在呼叫生命週期的關鍵點實現邏輯。
換句話說,鉤子是在外部部署的合約,它在池執行的指定點執行一些開發者定義的邏輯。這些掛鉤允許整合者建立具有靈活和可訂製執行的集中流動性池。掛鉤可以修改池引數,或者新增新的功能和功能性。
每個 Uniswap 流動性池都有一個生命週期:在流動性池的生命週期中,會發生幾件事,包括:使用預設費用層建立池,流動性被增加、刪除或重新調整,使用者還可以交換代幣等。在 Uniswap v3 中,這些生命週期事件是緊密耦合的,並以非常嚴格的順序執行。
但為了在 Uniswap V4 中,為可訂製的流動性創造空間。Hooks 合約為礦池部署者創造了一種程式碼引入方法,從而實現在礦池生命週期的關鍵點上可以執行指定操作,這些關鍵點例如交換前後,或者在 LP 部位更改前後。
總之,hooks 是用於自定義池、掉期、費用和 LP 部位互動方式的外掛,通過鉤子 Hooks 合約,開發人員可以在 Uniswap 協議的流動性和安全性之上進行創新,通過與 v4 智慧合約整合的鉤子建立訂製的 AMM 池。
可以通過鉤子合約實現的示例功能包括:
在一段時間通過 TWAMM 執行大型訂單;
按指定價格成交的鏈上限價訂單;
隨波動率變化的動態費用;
流動性提供者的內部化 MEV 分配機制;
實現中位數、截斷或其他自定義預言機。
Uniswap V4 的核心邏輯與 V3 一樣,是不可升級的。由於每個礦池現在不僅由代幣和費用層定義,所以可以由此構建各種各樣的礦池。並且雖然每個池都可以使用自己的鉤子智慧合約,但鉤子會在建立池時被限制為確定的特定許可權。
V4 中還有一些架構上的改變,比如 Flash Accounting(瞬時帳戶)可以大幅降低 Gas 費。該功能被包含在 EIP-1153 中引入「瞬態」儲存,會在坎昆升級(Ethereum Cancun)後實現。
此外 V4 版本中還有用單例模式(將所有的池狀態儲存在一個合約中)、閃電記帳(確保池的償付能力)、恢復對原生 ETH 的支援、支援 ERC-1155 代幣和增加治理機制等提升。
UniswapX:強化競爭
UniswapX 是一種新的無需許可、開源 (GPL)、基於拍賣的協議,用於跨 AMM 和其他流動性來源進行交易。
該協議將在多個方面改進交換功能,包括:
通過彙集流動性來源提高價格
無 Gas 交換
防止 MEV(最大萃取值)
交易失敗無費用
在未來幾個月內,UniswapX 將擴充套件到無 Gas 跨鏈交換。
Next-level aggregation 下一代聚合
背景:鏈上交易不斷創新,導致流動性池激增,新的收費層級、L2 和更多的鏈上協議也會分散流動性。
方案:UniswapX 旨在通過將路由複雜性外包給第三方的開放網路來解決這個問題,這些第三方需要通過競爭使用 AMM 池或他們自己的私人庫存等鏈上流動性競爭填充交易。
藉助 UniswapX,交易者將能夠使用 Uniswap 介面,不需要擔心自己是否獲得最佳價格。交易者的交易將始終在鏈上透明地記錄和結算。所有訂單均由 Uniswap 智慧訂單路由器支援,這迫使第三方與 Uniswap V1、V2、V3 以及啟動後的 V4 競爭。
實質上,UniswapX 是強化了競爭機制,通過對第三方的路由選擇,實現對各個資產池價格滑點的優化。
此外,UniswapX 還推出了新嘗試:
無 Gas 交易,失敗無需支付費用。交易者簽署一個獨特的鏈下訂單,然後由代表交易者支付 Gas 的第三方在鏈上提交該訂單,第三方將 Gas 費用計入交易價格,但可以通過批量執行多個訂單來競爭最佳價格以及降低交易成本。
MEV 保護,將原本通過套利交易獲取的 MEV 通過更優的價格返還給交易者。UniswapX 幫助使用者避免更明確的 MEV 提取形式:使用第三方私有資產執行的訂單無法被「三明治攻擊」,第三方在將訂單路由到鏈上流動性池時會被激勵使用私有交易中繼。
即將推出的 UniswapX 跨鏈版本,會將交換和橋接結合到一個無縫操作中。使用跨鏈 UniswapX,交換者將能夠在幾秒鐘內在鏈之間交換,可以期待下他們的進展。
Uniswap 主旋律:迭代
Uniswap 自 V1 版本到 V4 的迭代,以及 UniswapX 協議的推出,其內在邏輯都是對 DEX(AMM)的功能創新。
V1 將 AMM 初始實踐於加密領域,V2 減少 ETH 風險倉位,推出更難被操縱的價格預言機,V3 通過集中流動性解決資本效率低下問題,V4 實施可訂製化 DEX,UniswapX 協議通過拍賣機制強化第三方聚合器的競爭性,從而實現對價格滑點的優化。
我們可以看到,Uniswap 每一步都是在對自我的革新 —— 降低借貸成本,優化使用者體驗,強化競爭意識,擁抱新興技術,這種迭代升級才是一個好的協議能夠基業長青的根本。
📍相關報導📍
Uniswap開收0.15%交易費用!每日賺超30萬美元,社群怒喊:UNI變垃圾幣