VUSD:crvUSD 新的清算機制 LLAMMA

抵押品穩定幣?首先crvUSD是一個抵押品穩定幣,這也代表所鑄造出來的crvUSD背後都有超過發行額度的抵押品來支撐價值,同時在抵押品價格下跌時會觸發清算程序來確保穩定幣背後都有足夠的價值支撐,最著名的抵押品穩定幣為MakerDAO的DAI。

相對於抵押品穩定幣的是算法穩定幣,透過演算法而非抵押品來保證穩定幣與美金的錨定,這類穩定幣近期最著名的是Terra的UST。

DAI的清算方式?DAI是透過超額抵押的方式提供穩定幣價值支撐的抵押品穩定幣。比如說當使用者抵押3500等值美金的ETH時,可以鑄造出2000美金等值的DAI。但如果ETH價格下跌到一定程度時,使用者的抵押品就會被標記成可清算。

這個清算過程中,抵押品如ETH會用折扣的方式出售,所有人都可以來參與折扣的抵押品競標。比如說在ETH價格為2900美金時,系統會以2800美金的價格出售,這就會吸引套利者前來競標。

當清算結束後,如果抵押品拍賣的價格比較好,其中一部分的抵押品可能就不會被清算掉,此時就會還給債務人。但是大部分的抵押品通常都會被清算導致損失慘重,即使價格回穩,但清算已經造成傷害。

接下來會講解傳統的AMM運作方式作為LLAMMA的特殊設計AMM的對照參考。

傳統AMM的運作方式?以UniswapV3為例,使用者可以透過RangeOrder的方式來提供流動性。比如說當ETH為3000USD時,使用者可以把1ETH+0USD放入UniswapV3裡面,並且指定在3200-3800USD的區間換成USD。

當ETH進入上述區間之後,1ETH就會慢慢的被換成USD,當超過3800USD時,所有的ETH都會被換成USD,這個效果很像在中心化交易所當中從3200一路掛限價單(LimitOrder)到3800USD的效果。

但跟限價單不同的是如果此時價格又跌回3000後,在Uniswapv3上面所有的USD又會被換回ETH。

反方向來說,使用者也可以提供比如3000USD+0ETH,並且指定佈署在2000-2500USD的區間,當價格下跌時,USD就會逐漸的被換成ETH,直到低於2000USD時,所有的USD都會被換成ETH。

LLAMMA?crvUSD跟DAI一樣也是抵押品穩定幣,但新設計了一種清算演算法LLAMMA,其結合AMM的特性讓抵押品在價格下跌時逐漸轉移成穩定幣,讓原本要清償的債務有一定程度的穩定幣可以償還,同時在價格回穩時再逐漸把穩定幣換回抵押品,而不是硬生生的觸發清算導致債務人的虧損。

鑄造crvUSD的時候同樣的會需要存入抵押品如ETH到智能合約來,不一樣的是這個抵押品會被放入一個LLAMMA特殊設計的AMM當中。跟Uniswap的RangeOrder一樣,剛存入抵押品到AMM時會以單邊的形式存在,而當抵押品價格下跌到一定程度時,就會逐漸換成穩定幣。

舉例來說當ETH價格為3000美金的時候,使用者可以抵押1ETH到系統的智能合約裡面。此時系統會鑄造出crvUSD給使用者,同時抵押的1ETH會被類似Uniswapv3的方式被放入一個特殊的AMM裡面,比如說流動性會被放在500-550USD這個區間當中,而所取得的LP代幣則會只有單邊的1ETH+0crvUSD流動性。

當ETH價格跌到550USD以下時,系統會開始慢慢的把ETH換成crvUSD,當跌到500USD以下時,所有的流動性就會變成crvUSD。當價格跌到這個區間時,系統將會用比市場上更便宜的價格售出ETH,此時就會吸引市場上的人來到這個特殊的AMM裡面來買ETH來獲得折扣價。

因為系統會逐漸的把抵押品ETH換成穩定幣crvUSD,所以就不會像DAI一樣到硬清算門檻後就直接把所有抵押品都清算掉。更進一步的是當抵押品ETH的價格如果回穩後,使用者的流動性又會逐漸的從穩定幣crvUSD換成ETH。

不過這個換回抵押品的過程也可能出現Path-Dependence的問題,我們在最後的結論與疑問章節來討論這個問題。

這邊有三件事情要特別注意:

LLAMMA跟傳統AMM的方向相反:傳統AMM放入單邊資產之後,要價格提升才可以換成另外一邊,而LLAMMA的特殊AMM則是價格下跌之後才會換成另外一個資產LLAMMA需要依賴外部的預言機(Oracle)價格:因為LLAMMA需要賣的比外面的更便宜,所以會需引入預言機價格,才可以知道有流動性的時候要如何折扣定價來吸引套利者,外部價格跟內部價格差距越大時,LLAMMA就會給出更多折扣。crvUSD還是有清算機制:雖然可以透過LLAMMA的特殊AMM逐漸轉換成穩定幣,但是如果債務健康狀況太糟糕,還是會有最後的清算機制透過測試案例解釋實際運作方式?crvUSD除了白皮書以外也釋出了源碼,其中的測試案例test_create_loan正好覆蓋了整個借款過程,這邊利用這個測試案例來解釋整個流程會更容易理解。

為了得到更多資訊,我fork了原本的源碼並且在目標的測試案例裡面印出了更多資訊,有興趣的可以參考下面的commit了解我做了什麼修改:

https://github.com/yurenju/curve-stablecoin/commit/c3bf52353f41914deb82f1c1c97dcbc5de2d72e4

首先要先解釋一下波段(band)。

波段(band)?波段是當使用者把抵押品存入系統時,抵押品會被存入的區段,當預言機價格移動到這個區間時,使用者的抵押品就會開始被轉換成穩定幣。而剛開始建立AMM時會根據預言機的價格切分波段,其中預言機價格所在的波段會是波段0(band0),預言機價格越低,波段編號越高。

比如說創建AMM的時候預言機報價3000USD,此時波段0的價格帶會是2970-3000,而波段1的價格帶是2970.0-2940.3。而由於目前價格落在波段0,所以AMM.active_band()就會回傳0。

至於每個區間的價格寬度則由AMM建構子所傳入的A(Amplification)決定,公式為:

舉例來說,當價格上界p↑?為3000而A為100時,價格下界p↓?則為:

每個波段的價格下界正好會接著上個波段的價格上界形成一個連續的流動性區間,如果想知道該波段所代表的預言機價格上下界,可以用以下兩個函式查詢:

AMM.p_oracle_up(band_number)AMM.p_oracle_down(band_number)當每次有人借出crvUSD或是有人跟AMM交易時,系統會根據當下的外部預言機價格與目前的流動性交易情形來更新現行的區段amm.active_band。

而在active_band裡面的流動性則會開始被交易,也就是抵押品可以被交易成為穩定幣,反之亦然。當active_band的流動性被交易殆盡後,會跳到下一個波段繼續交易,並且更新active_band到下一個波段。

存入抵押品來鑄造crvUSD?根據測試案例test_create_loan的前置條件如下:

抵押品為WETH,目前價格為3000USD穩定幣為crvUSD使用者呼叫Controller.create_loan(collateral,debt,number_of_bands)來鑄造穩定幣,存入了1000WETH,欲鑄造或是說借出500,000crvUSD,並且將流動性佈署在5個波段內:

market_controller.create_loan(1000ETH,500000crvUSD,5)

此時系統會根據抵押品數量、欲鑄造的穩定幣數量決定要把流動性放在哪五個波段內。要決定是哪五個波段,可以透過Controller.calculate_debt_n1(collateral,debt,bands)來得到上界的波段,再加上波段總數5就可以取得下界。

以這個例子而言,calculate_debt_n1(1000WETH,500000crvUSD,5)所回傳的上界n1為170,總共放在五個波段內,所以下界就是174。

若想查詢這個連續波段的上下界的預言機價格,可以用AMM.p_oracle_up(170)跟AMM.p_oracle_down(174)取得。這個連續的波段價格上界為543.38,下界則為516.75。這也代表當外部的預言機價格降到這個區間時,使用者存入的抵押品會在AMM裡面被以比預言機報價更便宜的價格賣出,讓套利者會想要到系統內買到更便宜的抵押品獲利。

存入的抵押品將會平均的佈署在這五個波段上,也可以透過AMM.bands_y(band_number)來取得特定波段的抵押品數量,比如說bands_y(170)會得到該波段總共有200WETH的抵押品,查詢170-174都會是200WETH。

跟LLAMMAS交易折扣的WETH抵押品?curve-stablecoin提供了許多方便的工具可以使用,如測試用的預言機讓我們可以直接修改預言機價格進行測試。

我們可以透過price_oracle.set_price(p)來改變預言機價格。這邊我們用set_price(540)把價格從3000改成540,這也是波段170的範圍。使用p_oracle_up(170)與p_oracle_down(170)可以得知波段170的範圍約是543.38-537.95。

此時呼叫AMM.exchange(0,1,in_amount,0)可以用crvUSD交換WETH資產。若使用100crvUSD可以交換到約0.185634WETH,平均價格為538.69crvUSD,相較起來會比起預言機價格的540USD更為便宜。

假設上面這個交易沒有進行,但是預言機價格調到535USD,也就是調整到波段171時,此時再進行同樣的交易用100crvUSD交易WETH,則平均價格則為523.87crvUSD,這也說明了預言機價格也會影響AMM的內部價格,當預言機價格變低時,AMM拋售抵押品的價格也會進一步的降低,讓套利者願意到系統裡面來套利,進一步的協助債務人的債務有更多穩定幣支撐。

crvUSD的穩定機制PegKeeper?crvUSD除了透過LLAMMA來執行轉換與清算外,還有另外一個模組PegKeeper合約進行穩定幣的錨定功能。

這邊會使用到一個Curve一般的AMM穩定幣交易池StableSwap,裡面的代幣對是crvUSD以及另外一個LP代幣如3Crv進而組合成的MetaPool。

當crvUSD的價格高於1USD時,PegKeeper會鑄造出無抵押的crvUSD並且注入這個StableSwap。此時套利者發現市場上的crvUSD價格高於1USD,但是這個StableSwap價格卻接近1USD時就會到StableSwapPool來套利,進而讓市場上的crvUSD價格下跌靠近1USD。

當crvUSD價格低於1USD時,反過來PegKeeper可以從StableSwap抽出資金並且銷毀,並且讓套利者進來重新平衡價格,讓市場上的crvUSD上漲靠近1USD。

這個PegKeeper合約雖然可以鑄造與銷毀crvUSD,但它在智能合約的邏輯限制只能夠針對特定的StableSwap池子注入與抽出crvUSD來限制用途。

結論與疑問?本篇文章解釋了crvUSD所提出的新清算方式LLAMMA透過AMM的特性進行針對債務人更友善的清算/轉換方式,並且透過測試案例來一窺crvUSD實際運作的方式,並且概略的解釋了PegKeeper透過CurveMetaPool來進行的穩定機制。

LLAMMA清算機制?LLAMMA是個新的概念,套用了AMM的rangeorder特性到清算機制來,確實對於債務人更有友善,當價格回穩的時候損失的程度就會大幅降低。

相較於其他具備清算流程的穩定幣與借貸平台如MakerDAO,Compound,AAVE來說,這些平台在清算時會需要仰賴外部的去中心化交易所(DEX)協助清算。當外部的DEX流動性不足時,穩定幣/借貸平台就有可能產生壞帳。

比如說如果有個大戶持有1M的CRV資產作為抵押需要清算時,傳統的平台會透過折扣的方式一次出清這1M的資產,此時如果外部DEX流動性不足導致滑價太高,讓參與清算的利益不足進而降低清算者參與的意願時,無人清算的狀況下就會導致壞帳。

而LLAMMA因為內建了流動性的關係,當資產價值下跌時,抵押品會被逐漸的換成穩定幣,而最後真的需要清算的部位就會比傳統平台要小得多。以上面的例子來說1M的CRV在價格下跌時就會逐漸的被換成穩定幣,最終真的觸及硬清算門檻時,或許只剩下1%的資產需要清算,對於外部DEX的流動性的依賴就會低很多,加強平台的自主運作能力。

但交換代幣的折扣也會帶來一些隱憂。Paradigm的首席研究員DanRobinson在他的Tweet提到LLAMMA會有Path-Dependence的問題。由於LLAMMA內部用的AMM的定價pp會參考外部預言機的定價p_opo?,我們假設外部的預言機價格來源以及AMM都是Uniswap來解釋這個問題。

當ETH價格從1000USD變化到1200USD的過程當中,假設LLAMM會需要在這個區段來把穩定幣換回抵押品。這個過程中LLAMM有可能會在換回抵押品的過程中承受價差的損失,端看外部價格p_opo?的變化速度,我們來看價格緩慢上漲跟快速上漲的兩種狀況:

價格緩慢上漲:當p_opo?價格緩慢上漲時,LLAMM內部的價格會參考p_opo?定價,用稍微高一點的價格收購ETH,比如說p_o=text{1000USD}po?=1000USD時賣1010USD,套利者就會在Uniswap買ETH,在LLAMM賣ETH。ETH賣出之後LLAMM內部的價格就會慢慢靠近1000USD,所以在這個緩慢上漲的流程中,LLAMM池子可能會以些微折扣的方式買回ETH,比如說均價為1150USD。

價格快速上漲:當p_opo?快速從1000USD上漲到1200USD時,快到套利者沒有在這之間進行套利。此時因為p_o=text{1200USD}po?=1200USD,而LLAMM內部的價格為了要跟上外部預言機的價格,它就會用更高的價格收購ETH,就可以吸引套利者在Uniswap買ETH並且在LLAMM賣ETH。如此一來轉換ETH的均價就會高於1200USD。

如果站在LLAMM池子的角度來說,價格緩慢上漲的狀況會讓收購價格比較合理,但是如果遇到快速上漲時,就會造成LLAMM池子承受價差損失,而這個價差損失也就是債務人的損失。

當然,如果跟完全被清算相較起來,或許這樣的價差損失還是比較小。但由於之中還有許多不確定的因素,還會需要更多的資訊來判斷可能造成的損失程度。

總體來說,LLAMMA確實是一個可以進一步研究的新清算方法,而且不一定是穩定幣,有需要清算的場合如借貸平台或是去中心化的衍生性商品協議也可以考慮用同樣的清算方式來減低債務人在清算抵押品帶來的損失。

PegKeeper穩定機制?至於PegKeeper透過CurveMetaPool所進行的穩定掛勾方式,我則比較存疑。如果說DAI是透過升息、降息的方式調整市場熱度,PegKeeper則是更為激進直接透過類似量化寬鬆/緊縮的方式印出鈔票投到所需的市場。當然透過智能合約的限制還是會比起量化寬鬆更為透明,但是還需要進一步深究是否有影響市場經濟所帶來的副作用。

另外一方面在這個穩定錨定用的MetaPool當中新鑄造的crvUSD是無抵押生成的,或者是說是以另外一側的LP代幣如3crv作為抵押生成,而透過套利者的搬運來讓crvUSD重新錨定到1美金,實際上會損害流動性提供者的利益。因為套利者透過價差套利時,流動性提供者就作為他的對家承受損失。

這方面還不知道交易費是否足以覆蓋價差的損失,可能還需要進一步的機制去補償流動性提供者才可以完成整個穩定機制。如果沒有獎勵機制,要如何鼓勵使用者來為crvUSD提供穩定機制?這也是目前白皮書並沒有涵蓋到的概念。

责编:Lynn

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:0ms0-8:421ms