更靈活的做市——UniSwap V3

自動做市商(AMMs)是彙集流動性並根據演算法向交易員提供流動性的平臺。

傳統的自動做市商採用的是恆定乘積模型,這導致其存在無常損失。流動性提供者在其中注入資金,其收益可能無法覆蓋無常損失。

Uniswap V3的推出,對V2進行了很多方面的改進。雖然依然存在無常損失,甚至在某些情況下,無常損失要比傳統的做市模型更大,但是由於其特性,我們可以更靈活的設計做市策略。上線以來,Uniswap V3在短短的幾個月裡就已經躍居去中心化交易所(DEX)交易量的榜首位置。

在Uniswap v1和v2使用的恆定乘積做市商公式中,只有池中的一小部分資產在給定的價格下可用。這是低效的,尤其是當資產的交易價格一直在某一特定價格附近震盪的時候。傳統的AMM要求給定資金池中的所有流動性提供者遵守單一的公式,如果流動性提供者希望在不同的價格範圍內提供流動性,則可能導致流動性分散。

Uniswap V3的設計不依賴於任何關於代幣價格行為的共同假設。Uniswap V3基於和早期版本相同的恆定乘積曲線,但提供了幾個重要的新功能:

- 集中流動性:在V3中,LP可以將流動性集中在一個任意的價格範圍內。這提高了資金池的資金利用率。V2的流動性在所有價格上是均勻的。但是對於使用者來說,一般會在正態分佈的一個區間進行交易,不是在所有價格的交易量都相等,所以V3對V2版本做了一個改良:可以靈活選擇價格區間提供流動性(增強流動性)。

- Range Order範圍訂單:Uniswap V3 提供了全新的功能——範圍訂單,以補充現在的市價單,這個功能有點像是交易所裡限價單的升級版。可以設定一個高於或低於市場價格的區間,只需要質押單幣種,在市場價格達到設定的價格區間內,會不斷成交為另一幣種,在超出價格區間後全部置換成功,且賺取到價格區間內的手續費收入,適用於抄底或出貨。

- 靈活的費率:Swap的費率不再鎖定在0。3%,每個池的費率級別在初始化的時候設定,最初支援的費率等級為0。05%、0。3%、1%。透過Governance(提議和投票)可以新增其他的費率等級。

- 協議費治理:UNI治理在協議費佔⼿續費⽐例的設定⽅⾯,擁有更多的靈活性。

- 改進的價格預言機:Uniswap V3提供了一種查詢最近的價格累加器值的方法,從而避免了在計算TWAP的起始時間和結束時間檢查累加器值的需要。

- 流動性預言機:合約能夠顯示時間加權平均流動性的預言。

Uniswap V3的無常損失計算相比V2要複雜一些。

更靈活的做市——UniSwap V3

上圖是V2中的X token、Y token的變化曲線。這整條藍色的線代表所有使用者的流動性。

而在V3中,恆定乘積的公式為:

更靈活的做市——UniSwap V3

其中,L的平方是一個常數,相當於k。

是虛擬出來的,是常數。

在V3中做市,相當於加了個槓桿,因為x餘額加了一個數

,y餘額也加了一個數

,所以會導致右邊的

會比原來的k大。如果選的價格區間的兩個價格點比較近,槓桿就會比較高(因為

更大),無常損失也會更大;如果兩個加個點比較遠,槓桿就會比較低。

下圖是在UniSwap V3的ETH-USDT資金池中注入流動性的截圖,可以看到如果我們設定的價格區間的最小值大於現在的價格,我們就只需要投入ETH。

更靈活的做市——UniSwap V3

相反,當我們設定的價格區間的最大值小於現在的價格,我們就只需要投入USDT。

更靈活的做市——UniSwap V3

Uniswap v3對Uniswap v2引入的時間加權平均價格(TWAP)預言機也進行了重大更改。

最重要的是,Uniswap v3消除了oracle使用者從外部跟蹤累加器先前值的需要。

Uniswap v2要求使用者在想要計算TWAP的時候在其使用的時間段的開始和結束時檢查累加器值。而Uniswap v3將累加器檢查點引入核心,允許外部合約在最近一段時間內計算鏈上TWAP,而不儲存累加器值的檢查點。

另一個變化是,Uniswap v3沒有累加價格之和來讓使用者計算算術平均TWAP,而是log price之和,允許使用者計算幾何平均TWAP。

最後,Uniswap v3添加了一個流動性累加器,它與價格累加器一起跟蹤,價格累加器的值為

每秒鐘。這個流動性累加器對於希望在Uniswap v3之上實現流動性挖礦的外部合約非常有用。其他合約也可以使用它來判斷哪個池對應的交易對有最可靠的TWAP。

除了時間加權平均價格,Uniswap V3 還在每個區塊的開頭,跟蹤累計了當前的 值(在當前價格區間的虛擬流動性)。 鏈上其它合約使⽤它,可以使價格預⾔機更加健壯 (例如,在判斷使⽤哪種⼿續費率的流動池作為價格預⾔機時)。流動性累加器的值和價格累加器同時儲存。

在Uniswap V2中,每個流動池合約儲存當前池中資產x和y。在V3中,合約可以被想象成在儲存虛擬資產——x和y的值允許你用於描述合約的行為(在兩個相鄰tick之間),同樣遵循固定乘積公式。

然而,不用於儲存虛擬資產,流動性合約儲存兩個不同的值:liquidity(L)和sqrtPrice(

)。這兩個值與虛擬資產x,y之間的關係,可以用下列公式表達:

反過來,這兩個值也可以被用於計算虛擬資產x,y,如下:

用L和

非常便利,是因為每次交易只有其中一個會發生變化。在一個tick內交易時,價格(即

)變化;當越過一個tick,或者鑄造或銷燬流動性時,流動性L發生變化。這避免瞭如果儲存虛擬資產,可能產生的一些舍入誤差。

基於虛擬資產的流動性計算公式,類似於V2中,在獲得手續費之前,基於實際資產初始化流動性ERC20 token數量的公式。某種角度看,流動性可以被認為是虛擬流動性token。

或者,流動性可以被認為是每單位

變化,所對應的token1資產(無論是實際還是虛擬資產)數量變化:

我們儲存

,而不是P,使得交易計算時無需計算平方根。

全域性狀態tick(

)儲存當前價格tick的下標,一個帶符號整型數,代表當前tick(更具體的的,是低於當前價格最近的一個tick)。這是一種最佳化(也是避免對數計算精度問題的一種方法),因為在任何時候,都可以基於當前的sqrtPrice計算當前tick。具體而言,在任何時間點,下列等式都是成立的:

更靈活的做市——UniSwap V3

當前,已經有部分平臺推出了基於Uniswap V3的工具或自動做市策略。

Visor:

Visor是NFT的一個另類應用,與DeFi深度結合。

Visor NFT 金庫可以託管使用者的個人 UniswapV3 的 LP NFT。Visor NFT 可以幫助使用者管理全部的 LP 收益,可以聚合使用者的多礦池挖礦收益。

專案方可以利用 Visor NFT,對使用者存入的 LP 資產進行時間鎖定,也可以作為一種挖礦策略。V3 的價格區間設定,讓各 DeFi專案在分發代幣時可以指定價格區間來分發獎勵,比如高價值區間高獎勵。Visor 將允許使用者對其 LP NFT 進行質押,允許專案對這些特定價格區間的流動性提供者進行獎勵。相比之下,基於 Chef 和 SNX 的兩種最常見的獎勵專案模式將不相容 Uniswap LP NFT。

除了Visor,今年的7月3日,Yearn Finance創始人Andre Cronje也在推特上分享了一個在Uniswap上針對無常損失的現收現付制保護市場的原型,名為ProtectionMarket。sol。該合約指定了一個pERC20代幣,其功能是一個獨立的保險市場,用於保護無常損失,保費由供求關係決定。

相信未來會有更多基於Uniswap V3的合約或者平臺出現,也會有更多的DEX轉向V3的模式。

TAG: UniswapV3流動性累加器價格