DeFi評估方法:Uniswap反覆運算複盤



Uniswap自V1版本到V4的反覆運算,以及UniswapX協定的推出,其內在邏輯都是對DEX(AMM)的功能創新。

最近在做一個DeFi賽道的評估方法總結。 在對一些案例進行研究後,不論是從影響力,還是從反覆運算的邏輯來看,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現在價值100TokenA,一個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的價格區間的區間點,那麼此時,價格點會滑動到下一個價格區間中。

理解了上面的這個概念,我們就可以來認識下新出現的名詞—& mdash; 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每一步都是在對自我的革新—& mdash; 降低借貸成本,優化用戶體驗,强化競爭意識,擁抱新興技術,這種反覆運算陞級才是一個好的協定能够基業長青的根本。

聯系郵箱:0xniumao@gmail.com