Curve 穩定幣設計白皮書(中英文參照版本)
作者:Michael Egorov, Curve Finance
編譯:JamesX,iZUMi Research**
Overview
這個穩定幣的設計中有幾個概念是最重要的:借貸-清算AMM算法(LLAMMA),PegKeeper(穩定保持機制),貨幣政策。但主要的設計點是在LLAMMA:用一個特殊用途的AMM代替傳統超額抵押借貸的清算流程。
Figure 2: Dependence of the loss on the price shift relative to the liquidation threshold. Time window for the observation is 3 days
圖2:損失對相對於清算閾值的價格變動的依賴性。觀察的時間窗口為3天
在這種設計中,如果有人用抵押品借款,即使是在清算閾值,抵押品的價格下跌後反彈--也不會發生明顯的損失。例如,根據自2017年9月以來使用ETH/USD的歷史數據進行的模擬,如果放著CDP無人看管3天,在此期間,價格下跌至低於清算價格10%的情況發生的話, 也只有1%的抵押品被損失。
AMM for continuous liquidation/deliquidation (LLAMMA)
持續清算/無需清算的AMM(LLAMMA)
穩定幣設計的核心思想是Lending-Liquidating AMM算法。這個想法是,它在抵押品(例如ETH)和穩定幣(這裡姑且稱之為USD)之間進行轉換。如果抵押品的價格很高--用戶的存款都是ETH,但當價格降低時,它就會轉換為USD。這與傳統的AMM設計有很大不同,傳統的AMM設計是將USD穩定幣放在上面(AMM曲線的上半截),ETH放在下面(AMM曲線的下半截)。
下面的描述並不能作為一個完全自洽的嚴謹證明。很多東西(尤其是不變量)都是從各種維度考慮得到的。要有一個完整的數學描述,可能需要更多的研究,然而下面的描述被認為足以支持在智能合約中實施。
這只有通過外部預言機喂價才能實現。簡而言之,如果一個人做了一個典型的AMM(例如,粘合曲線是一塊雙曲線),並將其 "中心價格 "從(例如)下降到上升,代幣將從(例如)USD"絕熱"地轉換為ETH,同時在過程中提供兩種方式的流動性(圖3)。這有點類似於量子物理學中的"回避交叉"(也稱為Landau-Zener躍遷)(雖然只是個概念:對該過程的數學描述可能非常不同)。流動性集中的範圍在這裡被稱為"波段",在恆定的po波段有從pcd到pcu的流動性。我們尋求pcd(po)和pcu(po)只作為po的函數,函數比線性更陡峭,因此,增長速度比po快(圖4)。此外,讓我們把價格p↓和p↑定義為p↓(po)=po和p↑(po)=po的價格,定義為絕熱極限中的波段兩端(例如p=po)。
流動性集中的範圍在這裡被稱為"波段"(Band),在恆定的po波段有從pcd到pcu的流動性。我們尋求pcd(po)和pcu(po)只作為po的函數,函數比線性更陡峭,因此,增長速度比po快(圖4)。此外,讓我們把價格p↓和p↑定義為p↓(po)=po和p↑(po)=po的價格,定義為絕熱極限中的波段兩端(例如p=po)。
Figure 3: Behavior of an "AMM with an external price source". External price pcenter determines a price around which liquidity is formed. AMM supports liquidity concentrated from prices pcd to pcu, pcd \< pcenter \< pcu. When current price p is out of range between pcd and pcu, AMM is either fully in stablecoin (when at pcu) or fully in collateral (when at pcd). When pcd ≤ p ≤ pcu, AMM price is equal to the current price p.
Figure 4: AMM which we search for. We seek to construct an AMM where pcd and pcu are such functions of po that when po grows, they grow even faster. In this case, this AMM will be all in ETH when ETH is expensive, and all in USD when ETH is cheap.
我們從一些波段開始,與Uniswap3類似,通過增加"虛擬餘額",保留了粘合曲線的雙曲形狀。比方說,USD的數量是x,ETH的數量是y,因此 "增強的 "常數-產品不變性將是:
我們也可以表示x0 ≡ x + f和y0 ≡ y + g這樣不變式就可以寫成熟悉的I = x0 y0。然而,f和g並不是保持不變的:它們隨著外部預言機價格的變化而變化(不變量I也是如此,所以它只是在預言機價格po不變時的不變量)。在給定的po下,f和g在整個波段內是不變的。如前所述,我們把p↑表示為波段的頂部價格,p↓表示為波段的底部價格。我們對A(衡量流動性集中度的指標)的定義是這樣的:
我們正在尋找的屬性是這樣的:更高的價格po應該導致在相同的餘額下更高的價格,因此,當前的市場價格(平均來說,將跟隨po)低於這個價格,並且波段將朝著全部為ETH的方向交易(而另一個方向也是如此)。可以找到很多方法來滿足,但我們需要這樣一個:
其中y0是一個p0相關的衡量當前波段存款的指標,以ETH為單位,其定義是:當當前價格p、p↑和po相互相等時,則y=y0,x=0(見圖4上po=p↑的點)。那麼,如果我們把那一刻的y替換掉:
價格等於dx0 /dy0,這樣對於一個恆定的產品不變量來說,就是:
價格等於dx0 /dy0,那麼對於一個恆定的產品不變量來說,就是:
我們可以用x=0或y=0來代替po=p↑或po=p↓的情況,以驗證上述公式是自洽的。
通常對於一個波段,我們知道p↑,因此也知道p↓、po、常數A,還有x和y(波段中的當前存款)。為了計算剩下的一切,我們需要找到yo。它可以通過解決不變量的二次方程來找到:
通常對於一個波段,我們知道p↑,因此也知道p↓、po、常數A,還有x和y(波段中的當前存款)。為了計算剩下的一切,我們需要找到yo。它可以通過解決不變量的二次方程來找到:
這就變成了針對yo的二次方程:
在智能合約中,我們在get_y0函數中解決這個二次方程。
在預言機價格po保持不變的情況下,AMM以正常的方式工作,例如,上漲時賣出ETH/下跌時買入ETH。通過簡單地將x=0替換為 "當前下跌 "的價格pcd或y=0替換為 "當前上漲 "的價格pcu值分別代入不變量方程,就可以說明在po的當前值和p↑的當前值下的AMM價格是:
在預言機價格po保持不變的情況下,AMM以正常的方式工作,例如,上漲時賣出ETH/下跌時買入ETH。通過簡單地將x=0替換為 "當前下跌 "的價格pcd或y=0替換為 "當前上漲 "的價格pcu值分別代入不變量方程,就可以說明在po的當前值和p↑的當前值下的AMM價格是:
另一個實際重要的問題是:如果價格變化上升或下降的速度如此緩慢,以至於預言機價格po完全能夠"絕熱地"跟隨它,那麼在給定當前值x和y,並且我們也從p=po開始的情況下,這個波段最終會得到多少y↑的ETH(如果價格上升)或x↓的USD(如果價格下降)。雖然這不是一個立即可以解決的數學問題,但數字計算顯示了一個相當簡單的答案:
在評估借貸的安全性以及AMM的潛在損失時,我們將使用這些結果。
現在我們有了一個波段的描述。我們把所有的價格空間分成若干波段,這些波段的價格p↓和p↑相互接觸,因此,如果我們設定一個基礎價格pbase,並有一個波段號n:
現在我們有了一個波段的描述。我們把所有的價格空間分成若干波段,這些波段的價格p↓和p↑相互接觸,因此,如果我們設定一個基礎價格pbase,並有一個波段號n:
對於任何一個波段,可以證明公式7和公式5的解都可以得到:
對於任何一個波段,可以證明公式7和公式5的解都可以得到:
這表明波段之間沒有空隙。
交易發生的同時保留了公式1的不變性,然而,當價格為po時,AMM內部的當前價格會發生變化:當po下降時,它就會上升,反之亦然(立方系數),從公式8可以看出。
LLAMMA vs Stablecoin
穩定幣是一種CDP,人們以不穩定的抵押品(加密貨幣,例如ETH)來借入穩定幣。抵押品被加載到LLAMMA的價格範圍內(這樣的波段),如果抵押品的價格下降相對緩慢,ETH被轉換成足夠的穩定幣來覆蓋關閉CDP(這可以通過自我清算發生,或者通過外部清算,如果抵押率太接近危險的限制,或者根本不關閉,同時等待價格反彈)。
當用戶存入抵押品並借入一個穩定幣時,LLAMMA智能合約會計算出抵押品所在的波段。當抵押品的價格變化時,它開始被轉換為穩定幣。當系統處於 "水下 "時,用戶已經有足夠的USD來支付貸款。可以獲得的穩定幣數量可以通過一個公共的getxdown方法來計算。如果它給出的數值過於接近清算閾值--外部清算人可以參與進來(通常不應該在抵押品價格下跌和橫盤後的幾天甚至幾周內發生,甚至如果抵押品價格從未上漲或相對較快地回升,則永遠不會發生)。當價格遠高於 "清算 "時,一個健康的方法會返回getxdown與債務的比率,再加上抵押品的價值增加。
當用戶存入抵押品並借入一個穩定幣時,LLAMMA智能合約會計算出抵押品所在的波段。當抵押品的價格變化時,它開始被轉換為穩定幣。當系統處於 "水下 "時,用戶已經有足夠的USD來支付貸款。可以獲得的穩定幣數量可以通過一個公共的getxdown方法來計算。如果它給出的數值過於接近清算閾值--外部清算人可以參與進來(通常不應該在抵押品價格下跌和橫盤後的幾天甚至幾周內發生,甚至如果抵押品價格從未上漲或相對較快地回升,則永遠不會發生)。當價格遠高於 "清算 "時,一個健康的方法會返回getxdown與債務的比率,再加上抵押品的價值增加。
當一個穩定幣收取利息時,這應該反映在AMM中。這是通過調整所有價格的網格來實現的。因此,當一個穩定幣收取利率r時,AMM中的所有價格格都會向上移動,與相同的利率r,這是通過一個基礎價格乘數完成的。所以,只要收取的利率是正的,乘數會隨著時間的推移而上升。
當一個穩定幣收取利息時,這應該反映在AMM中。這是通過調整所有價格的網格來實現的。因此,當一個穩定幣收取利率r時,AMM中的所有價格格都會向上移動,與相同的利率r,這是通過一個基礎價格乘數完成的。所以,只要收取的利率是正的,乘數會隨著時間的推移而上升。
當我們計算getxdown或getyup時,我們首先要找的是如果當前價格移動到當前價格po的穩定幣和抵押品x∗和y∗的數量。然後我們看一下,如果po絕熱地變化到最低區間的最低價格,或最高區間的最高價格,我們分別得到多少穩定幣或抵押品。這樣,我們就可以得到一個衡量我們將獲得多少穩定幣的標準,它不依賴於當前的瞬時價格,這對夾層攻擊的阻力很重要。**
**
需要指出的是,LLAMMA使用定義為ETH/USD價格的po作為價格來源,我們的穩定幣可以在掛鉤之下(ps\<1)或超過掛鉤(ps>1)進行交易。如果ps\<1,那麼LLAMMA中的價格就是p>po。
在絕熱近似中,p = po/ps,所有抵押品\<>穩定幣轉換將發生在較高的預言機價格上/就像預言機價格較低且等於:
在這個價格下,轉換時獲得的穩定幣的數量要高出1/ps的系數(如果ps\<1)。
在長時間內,ps>1是不太理想的,為此我們將使用穩定器(見下一章)。
Automatic Stabilizer and Monetary Policy
自動穩定器和貨幣政策
當ps > 1(例如,由於對穩定幣的需求增加),就會有錨定的儲備,由穩定幣和可贖回的參考幣或LP代幣之間的不對稱存款到stableswap Curve池形成。一旦ps > 1,PegKeeper合約被允許鑄造無抵押的穩定幣,並且只將其單邊存入stableswap池,這樣做之後的最終價格仍然不低於1。當ps \< 1時,PegKeeper被允許提取(不對稱地)並燒毀穩定幣。
這些行為導致價格ps在高於1時迅速貶值,低於1時升值,因為不對稱的存款和提款改變了價格。即使這部分"鑄幣"是沒有抵押的,但穩定幣似乎是由穩定幣池中的流動性隱性抵押支持的。整個鑄幣/燃燒周期在最後似乎是有利可圖的,同時提供了穩定性。
讓我們把鑄造給穩定器(債務)的穩定幣數量表示為dst,把計算在stableswap AMM get_dx中購買穩定幣所需的可贖回USD數量的函數表示為fdx()。然後,為了保持"儲備"不是非常大,我們通過改變借款r來使用 "緩慢 "的穩定機制:
其中h是ps的變化,速率r的變化為2倍(ps越高,r越低)。穩定器債務dst的數量將根據ps=1 r0的速率在不同的值上平衡。因此,我們可以(而不是手動設置)在dst/supply大於某個目標數字(例如5%)時減少r0(從而激勵借款人借入並拋出穩定幣,降低其價格並迫使系統燃燒dst)或者在它較低時增加(從而激勵借款人歸還貸款並推動ps上升,迫使系統增加債務dst和穩定器存款)。
Conclusion / 總結
希望所提出的機制能夠解決為製造穩定幣和借貸目的而進行清算的風險性。此外,穩定器和自動貨幣政策機制可以幫助保持價格錨定,而不需要保持過大的PSM(Peg Stability Module 錨定穩定性模塊)。