作者:0xmc, 0xjezex, 0xstan@0xreviews , paco@perp.com
作者介紹:
0xmc@0xreviews : 機制審計、產品設計、密碼經濟學獨立研究員。
0xjezex@0xreviews : 代幣經濟學獨立研究員,初級Solidity工程師,倫敦帝國理工學院金融科技碩士生。
0xstan@0xreviews : 獨立開發者,DappLearning核心貢獻者。
paco@perp.com : Solidity 開發者、安全研究員、DeFi 愛好者。
前言
Curve穩定幣最難的部分是LLAMMA(AMM for continuous liquidation/deliquidation)。LLAMMA 參考了 Uniswap v3 中的一些原則。但是,白皮書中的價格與 Uniswap v3 白皮書中的算法不同。我們將統一這兩個項目,並嘗試了解 Curve CEO 是如何設計這個演算法。
用Uniswap v3作為參考
本文中價格的定義與 Uniswap v3 互為倒數。因此,我們修改了 Uniswap v3 白皮書中的公式,讓它與本文保持一致。簡而言之,LLAMMA 試圖讓 Uniswap v3 中的一切都變得動態,以便為 crvUSD 債務人和清算人提供更適當的價格。
恆定乘積公式(Constant Product Fomula)比較
Uniswap v3 白皮書中的公式(2.2):
圖一:Uniswap v3 虛擬流動模擬
Curve穩定幣白皮書中的公式(1):
圖二: 有外部價格來源的AMM
在這裡 Pcd 代表 Pcurrent_down, Pcu 代表 Pcurrent_up
而對應關係為:
對應的恆定乘積公式為:
而在這之間:
流動性計算公式對應
Uniswap v3 白皮書中的公式(6.7) :
由於它們的價格定義之間存在倒數關係,對應的公式為:
此公式的一個具體應用是:
平方展開可以得到:
從上面的公式我們很容易的可以了解,當 y0 保持不變,Pcd和 Pcu 數值越接近,相對應的流動性 I 則越大。
換句話說:
流動性不可能是無限的,在 Uniswap V3 中對應最小的 tick 會限制 L 的大小
由此可以推斷在 LLAMMA 中,我們還需要定義一個指標來衡量價格之間的最小差異,來繼續 Uniswap v3 和 Curve 的類推。
對應最小差價
從 A 的定義中可以看出 , 當 p↓ 和 p↑ 越接近時 , A 則越大,流動性集中度越高:
Uniswap v3 中,只有能被 tickSpacing 整除的 tick 才能被預設。因此,tickSpacing 決定了 LP 分配流動性的最低價格範圍。tickSpacing 越小,價格範圍越窄、越精確。在 Uniswap v3 中,不同的費用等級決定了不同的 tickSpacing。
然而,crvUSD LLAMMA 不需要那麼多tickSpacing。由於 LLAMMA 僅有 ETH-crvUSD, 因此只需要讓每一個 tickSpacing = 100basepoint。
來自 Uniswap v3 的公式(6.1):
在 LLAMMA 中,A=100,來自 Curve 穩定幣白皮書的公式(11):
設置 n = -i, A=100, 我們會得到:
設計 Pcd 和 Pcu
我們希望 LLAMMA 具有以下屬性:當 ETH 價格上漲時,礦池購買 ETH。當 ETH 下跌時,礦池出售 ETH。在這樣的機制下,我們把 Pcd 和 Pcu 定義為 Po 的函數並且比線性函數更陡峭,因此它們的增長率會比 Po 更快。 同時從圖中可以看出兩條曲線 Pcu 和 Pcd 分別通過兩點 ( P↓ , P↓ ) 和 ( P↑ , P↑ ) 。滿足以上要求的 Pcd 和 Pcu 其實有很多曲線。通用公式為:
當 m < n
讓我們從最簡單的例子開始:
把 Pcu 和 Pcd 帶入 I 的平方展開:
然後 f² 可以計算為:
不難發現 f² 在這種假設下很難理解和計算。如果 Pcu 和 Pcd 是 Po 的三次函數:
把 Pcu 和 Pcd 帶入 I 的平方展開:
重新計算 f²:
可以看出,當 Pcu 和 Pcd 是 Po 的三次函數,整個數學形式就簡單多了。去掉了平方根項,計算方便多了。如果接受更高的訂單,則 AMM 的價格和 Po 將相差很大,因此購買 ETH 的成本(當價格上漲時)會更高,而導致更大的清算損失。總之,把 Pcu 和 Pcd 定義為 Po 的三次函數是一個更好的選擇。
其他參數的推導
Pcu 和 Pcd 是關於 Po 的三次函數, 取特別數值 Po = P↑, 不難得到 Y = Y0 和 X = 0,於是:
鑑於 I 的公式,我們可以計算 f 和 g:
在這邊,我們最終得到完整的恆定乘積公式:
將上方公式轉化為 Y0 二次方程式
用一個未知數的二次方程求解 Y0:
如果價格變動的夠慢讓預言機價格 Po 完全有能力遵循它,給定 X 和 Y,使用Uniswap v3的計算公式,是有可能計算出 ETH 的 Y↑ 是多少(如果價格上漲)或美元的 X↓ 最終將處於的區間內(如果價格下跌):
參考出處
Adams, Hayden, et al. "Uniswap v3 core." Tech. rep., Uniswap, Tech. Rep, 2021 from https://uniswap.org/whitepaper-v3.pdf
Egorov, Michael, and Curve Finance. Curve stablecoin design. Technical report, Curve Finance, Tech. Rep, 2022 from https://github.com/curvefi/curve-stablecoin/blob/master/doc/curve-stablecoin.pdf
訂閱Curve.Wiki收到最新資訊!
コメント