本文以Compound 金融為案例,分析了新興的DeFi 生態系統的風險。
入門
區塊鏈狂熱者和機構投資者們正把目光聚焦於以太坊區塊鏈上運行的開放式金融(又名去中心化金融或“DeFi”)平台。鑑於當下利率的歷史性新低,與傳統投資品相比,開放式金融應用有提供更高收益率的潛力。這些開放式金融平台通過智能合約和區塊鏈技術提供金融產品和服務,並賦予它們透明、去中心化以及去中介化等新興特質。
-圖0:以太坊上熱門DeFi 產品之間的用戶關係-
Compound 借貸平台是以太坊區塊鏈上一個廣為人知的開放式金融應用。該平台是以太坊上蓬勃發展的DeFi 生態系統的樞紐,它的使用量及所積聚的資產都展現出了顯著增長。
-圖1:質押在DeFi 中的ETH 數量以及ETH 價值(以美元計價)-
有了此等日漸提高的普及度及有用性,Compound 遂成我們在理解開放式金融帶來的機會和風險時的一個關鍵樣本。與其它不透明的金融系統不同,投票且不可更改歷史記錄的區塊鏈讓我們有能力檢查去中心化系統中有關貨幣與債務的部分。引領用戶進入這個未來的金融世界要基於共享知識,而這些知識紮根於實證分析。
Compound 用戶應當充分認識到由去中心化借貸帶來的風險。包括:
- 智能合約安全性風險
- 管理/協議風險(包括管理員密鑰洩露的風險)
- 流動性/銀行擠兌風險
- 信用風險
在《在Compound上存款生息需要注意的幾種風險》一文中, Ameen Aoleimani 詳細闡述了前兩種風險,並暗示了流動性/銀行擠兌風險的存在。
而這篇文章中,我們會重點討論第三種風險,用經驗數據來分析Compound 金融市場中的流動性風險。
本文中所有的“ SAI ”均指代在Maker DAO單抵押品時代被叫做“ DAI ”的代幣。合約地址為(0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359)。
開放式金融中的流動性風險
Compound 借貸平台是一種「去中心化協議」,它可以根據供求情況,通過算法設定利率來建立貨幣市場,從而讓用戶能夠無摩擦交易以太坊資產的時間價值 (引自Compound白皮書)。
簡而言之,Compound 允許用戶:
- 出借區塊鏈上資產到貨幣市場,從而賺取利率收益;
- 從貨幣市場借入鏈上資產。
-圖2:簡化的貨幣市場示意圖-
在Compound 借貸協議中,用戶可將下列種類的代幣——BAT,DAI,SAI,ETH,REP,USDC,WBTC,ZRX——存入借貸市場中以賺取利率收益。這些由用戶自發提供的代幣形成流動性貨幣池,成為其他用戶貸款的資金來源。
一般來說,大家都認為,資金供應方可以在任意時刻將投入的本金和利息提現——即,Compound將為存款方留出足夠多的流動性,以讓他們可以隨時使用他們的資金。然而,正如貸款方受制於流動性池的規模一樣,資金供應方亦是如此;可借用的資金上限與可取出的資金上限之和便等於資金池的規模;而每一筆貸款都會縮小資金池的規模。
-圖3:2019 年7 月,SAI 貨幣市場流動性受挫。流動性有三度直逼0 點,這意味著出借方和借入方都幾乎無法做對應的提款和貸款操作。-
流動性開始下降時,超出流動性上限的提現操作以及貸款操作都會失敗。就流動性本身而言,這並非一個壞事。這可能只是供給和需求上升的表徵,也是新興市場的表徵,因此在新生的密碼學貨幣行業中,出現流動性不足的情況是意料之中的。Compound 的設計者們早就料到會出現這種情況,因此該協議會通過浮動利率來調節市場供需。運算浮動利率的算法是寫到貨幣市場的智能合約中的。在某一貨幣市場中,
當流動性較低時:
- 存款的年化收益率上升,激勵用戶提供資金
- 貸款的年利率上升,激勵用戶償還其借入的代幣
當流動性較高時:
- 存款的年化收益率下降,減少用戶存款的激勵
- 貸款的年利率下降,激勵用戶以低利率借入資金
該協議的浮動利率旨在以去中心化的形式應對流動性不足。然而,這樣的開放式金融應用給用戶造成的潛在風險為銀行擠兌。
當存款方對市場穩定性感到焦慮,並試圖快速同時提現超出平台可承受範圍的資金時,銀行擠兌便會發生,從而引發更嚴重的對系統的恐慌及不信任。在開放式區塊鏈金融應用的背景下,銀行擠兌意味著強大的力量——無論是資本市場自身或是被操縱的利益——衝破了去中心化協議及其自動反饋機制。
-圖4:銀行擠兌簡化模型-
Johannes Pfeffer,Alethio的聯合創始人指出,「一旦系統中某一部分出現問題,例如DAI或其它穩定幣崩潰,DeFi很可能就會上演銀行擠兌。」這是一個眾所周知的問題,也引起了區塊鏈社區的重視。SAI和DAI穩定幣的發行方Maker DAO有一套全局清算機制來處理市場崩潰可能造成的影響。不能否認的是,Compound採用激勵機制以控制嚴重的流動性不足(詳情請參見附錄)。然而,以下問題對開放式金融應用至關重要:
- 流動性枯竭的情形之前是否發生過?
- Compound 的價值是否會隨著時間流逝而改變?
- 銀行擠兌是否發生過?在將來有沒有可能發生?
為了回答這幾個問題,我們將以SAI(也就是人們之前叫DAI 的代幣),我們撰寫本文時Compound 借貸市場上最活躍的借貸資產,作為核心來分析。
流動性枯竭之解釋
通過對Compound 的分析,我們將流動性不足分為三個引導性的定義或階段,最終給出我們的結論:
- 準流動性枯竭:當流動性接近0時產生。然而,由於流動池較小,暫時還沒有發生提現或貸款失敗的情形。
- 實際流動性枯竭:當由於流動池中資金不足導致提現或貸款失敗時。
- 銀行擠兌:連續提現行為導致流動池迅速耗盡,直到「零供給」,更大的市場恐慌出現。
下表顯示了2019 年7 月Compound 的SAI 市場中總借出與總借入量。
-圖5:SAI 借出與借入量——統計於首次變更利率合約時-
在圖5 中:
- 綠色的線為SAI 總存款量
- 紅色的線為SAI 總貸款量
- 灰色的線為利用率(貸款量/存款量)
- 藍色圓形——綠色和紅線貼近處——為流動性枯竭及準流動性枯竭之時
7月份SAI貨幣市場總共發生了三次準流動性枯竭以及一次實際流動性枯竭 ——分別發生在7月15日,19日以及23日。我們注意到一些有趣的共性。
- 存款方提現並非導致準流動性枯竭的元兇。在這些日期,綠線並沒有顯著下跌(即沒有出現突然的大規模提現)。
- 連續的大規模貸款才是 準流動性枯竭產生的真正原因。在這些日期,紅線突然出現尖峰(即出現了突然的大規模借入)。
- 這些貸款使得流動性資金池減少到幾乎所有可用資金都被借走的地步。
在兩種流動性不足所導致的操作失敗中,貸款失敗的負面影響相對較小。顯然,無法從資金池中提現自己的資金相較無法借走一定數額的資金更加嚴重。因此,我們的重點是,人們試圖提現自己的資金,卻由於流動性不足而操作失敗的時刻。
那麼,Compound是否出現過實際流動性枯竭的情形?換句話說,儘管流動性幾乎貼近0,但實際上是否有人遇到過流動性導致的從協議提現失敗的問題?
答案是,有。
-圖6:所有流動性枯竭事件-
上表顯示,在整個Compound貨幣市場的歷史上,提現失敗(“Info Descripition”欄中的“REDEEM”)已然發生三次之多,其中有兩次與BAT有關。介於BAT市場正處於形成初期,且交易量較少,我們並不認為這些提現失敗很能說明問題。更值得關注的是2019年7月19日在交易量更大的SAI市場上發生的案例。因此,我們可以下結論:圖5中顯示的2019年7月間發生的三次準流動性枯竭中有一次(發生於7月19日)乃是實際流動性枯竭。
-圖7:更加詳細的表5 ——唯一一次SAI提現交易失敗發生之際。參見區塊瀏覽器。-
圖6 將7 月19 日發生的提現失敗標記成了黃色,圖3 以及圖5 中也能觀測到這一事件。圖7 是有關這一時刻的放大版示意圖。未能生效的提現交易原本試圖兌現344020.128054 枚cSAI 代幣—— 當時的cSAI 兌SAI 比率為0.0203495763,意味著這筆交易價值7000.66 SAI。然而,同一時刻市場中的資金利用率已超過99.97%,可用的流動性僅有5790.16 SAI。
對於交易發起人而言,這一事件意味著TA 嘗試提現自己名下的34.4 萬枚cSAI,但由於應用無法提供足夠的資金,提現失敗發生了。作為回應,Compound 調整了利率模型,以激勵用戶重新形成更大規模的資金池,從而使流動性回到一個較高水平(詳見附錄)。這一措施帶來的結果是,不到5 分鐘的時間,這筆提現就得以成功兌付(參見圖8)。
-圖8:在初次嘗試失敗後不到5 分鐘,用戶成功提現34.4 萬SAI。-
千鈞一髮?
我們完全可以把7 月19 日發生的提現失敗當作一個不常見的特殊案例。然而,儘管事實可能確實如此,深入的分析顯示Compound 金融過去已然經歷了幾次千鈞一發的時刻。
我們將展示規模較大的五次事件,並深入分析其中最嚴重的一次。
-圖9:五次規模較大的“千鈞一發” 時刻——讓可用流動性大幅降低的提現操作-
在這五次事件中,Compound 遭遇了足以讓可用流動性下降超過四分之一的單筆提現。
其中(佔百分比)最大的一筆於7月23日18:04發生於第8208406個區塊。(圖5展示了這一交易,這一時刻市場中的資金利用率達到了99.17%)。一個地址發起了超過21萬6千枚SAI的提現,讓流動池瞬間跌至僅有1萬零9百枚SAI。下圖(圖10)展示了大體量的資金供應方以及在這次提現行為發生之前市場的流動性情形。
-圖10:(21.6 萬SAI 提現操作發生前的)剩餘流動性的臨界線——意味著僅有部分大戶可以完整地提現其借出其它大體量存款方則不能-
我們亦能看到,即使在這筆21萬6千枚SAI巨額提現交易發生之前,位列存款量前三十的大部分用戶也無法將他們的資金全額提現。可以想像的是,圖中這根臨界線面臨兩種壓力——存款方會通過注入資金將這條線推向右邊,而提現方/貸款會將其推回左邊。在地址為0x…5e3d的用戶(圖10中有專門標記)提現了21萬6千枚SAI後,可用流動性降至1萬枚SAI以下,使得更多用戶無法成功提現:相較該筆提現前,另有2125位之多的用戶面臨無法全額提現的問題。
黑天鵝危機:銀行擠兌
因此,我們根據這些圖片可以得出結論:Compound金融中已經發生了至少五次準流動性枯竭(圖9)以及一次實際流動性枯竭(圖6)。有些人對此已有所警覺,但大部分人選擇忽略這些事件。通過調整利率模型,協議重獲其功能性以及流動性。但鑑於事實證明Compound的激勵機制無法有效對沖流動性枯竭的風險,並且還會導致提現失敗,我們必須準確評估銀行擠兌發生的風險。一次被證實的流動性不足也許只會影響一位或數位用戶(通常是規模較大的用戶)無法成功提現,但銀行擠兌卻會讓大量其它用戶也無法提現,即使他們只持有相對較小的存款額。
隨著Compound 用戶基礎的增長,貸款規模的擴大極大地削減了流動性,這可能讓存款方陷入恐慌,並開始提現資金。首先,大額的提現會失敗,同時隨著流動池進一步縮小,越來越多的用戶將無法成功取回他們的資金。最終結果將如同傳統的銀行擠兌一般,唯一區別是它發生於去中心化的平台。
可以預見的是,類似這樣的銀行擠兌將會成為“黑天鵝” 事件——也就是終生難遇的不可預測事件,因此也對於用戶而言也難以預防。然而,我們已經知道歷史上的五起流動性枯竭(7 月份發生了三起)以及一次取款失敗事件。此外,通過檢測借出者與借入者,我們也能觀察到,在某些時刻流動性有多接近於0 點。
緩解流動性不足與銀行擠兌風險
引入監控措施
流動性枯竭的情形總會出現。盡可能快地向開放式金融用戶提供有關的信息才是幫助他們避免和/或應對流動性風險(從而防止諸如銀行擠兌等更嚴重事件發生)的最佳辦法。及時的警報能幫助用戶更好地理解DeFi 應用,促使他們做出抉擇並採取行動,從而更好地實現其財務目標。
有效的警報及監控設施能:
- 理解來自區塊鍊及其它去中心化應用的數據
- 能不斷重複以下步驟:“告知➞ 敦促做出抉擇/採取行動➞ 告知➞ 敦促做出抉擇/採取行動……”
- 衡量抉擇/行動的效果,並將其整合到數據中
我們相信Alethio能做到以上這些。
利用Alethio的監控工具,用戶可以對任何已部署的智能合約或賬戶設定活躍且可自定義的監控。有了這些監控,一旦設置的條件觸發,用戶就可以實時獲得警報。Alethio監控能夠免去用戶主動搜索信息的操作,同時滿足用戶實時訪問鏈上數據的需求。
-圖11:在Alethio監控中設立目標如此簡單-
-圖12:根據你的目標設立特定警報——圖中展示的是cToken合約(在上一步中將cSAI合約設立為目標)。該警報將監控SAI流動性。-
上面的截圖展示了Alethio 監控頁面中有關Compound 流動性的警報。每當流動性下降1% ——或是任何設定的百分比或數值(即,當流動性下降或上升超過某個限度時)——監控就會發出警報。
總而言之,我們已經將警報功能搭建好,以讓現有和潛在的用戶能夠更加放心地使用諸如Compound這樣的開放式金融產品,並希望藉此將DeFi系統發揚光大。有方便的渠道獲取數據、信息和分析,用戶才能安心地使用開放式平台。我們已開發好 Alethio組件,力求便利以太坊用戶。而且隨著整個生態系統的成長,我相信我們能夠將其發展得更好。
附錄:Compound 的利率激勵技術
作為借貸協議,Compound 的工作原理如下所示(響應強度可能有出入):
-圖A:Compound 流動池簡化示意圖(注:當貸款方存入抵押資產時,他們實際上是抵押品代幣市場上的供方。只是為簡單起見,我們才這樣直白地稱呼雙方)-
存款方將下列七種代幣(BAT,SAI,ETH,REP,USDC,WBTC,ZRX) 之一存入相應市場中,同時貸款方憑藉抵押品借走這些代幣。貸款方借入的款項是從存款方存款所形成的資金池中取出的。由於每筆貸款都會縮小流動性池,貸款規模受限於流動性池的規模。然而,不是只有貸款才會縮小資金池。
-圖B:存款方提現活動的流動池示意圖-
一個對Compound 的普遍理解是,借出方可以在任何時間提現他們的存款。但真是如此嗎?正如前文所提及的,用戶可貸的款項受流動池規模限制;圖B 展示了協議在兩個方向上的資金流出——貸款方的貸款、存款方的提現,都會減少流動性池中的資金。一旦流動性開始減少,超過流動性的提現或借貸將無法完成。
因此,兩種流出資金最終會匯總到一個數字上——利用率。根據Compound白皮書:
-對任一種代幣的市場α,都有利用率U = 貸款量/(池內現金+ 貸款量)-
利用率不僅能展示哪個代幣市場需求更高,也能作為市場的監管機制。然後,利率根據利用率和算法得出,以使得市場能達到供需均衡狀態。這可以通過白皮書中提及的一個簡單的等式來表達:
-圖14:示例:貸款利率= 2.5% + U * 20% –
請注意,以上兩個公式中的常量僅作為示例;儘管它們被硬編碼在每個市場相關的利率模型合約中,通過完全更新利率模型合約,它們也能被(管理員,也即由Compound 持有的多用戶地址)更改。第一個常量稱為基本費率,第二個稱為倍率。此外,該公式還展示了貸款利率的上限(在100% 的利用率下,貸款利率達到最大值,為兩個常量之和)。
本文撰寫之時,在Compound 的七個貨幣市場中存在著三種不同的利率模型合約,每種合約都有其特定的參數。現在,讓我們探索這些合約中曾發生的改變——更重要的是,要了解這些改變發生時的背景(介於這些改變的細節過於豐富,我們僅討論SAI 這一個市場)。
利率模型
到目前為止最有趣的是SAI市場(直到最近的十一月中旬,USDC才取而代之,成為貸款規模最大的幣種)發生的兩處改變(確切地說,第一次是更改合同,第二次是還原為原始合同)。發生的改變如下所示:
0xa1046abfc2598f48c44fb320d281d3f3c0733c9a —原始合約,五月七日由交易0x8caa40e8b5227b7a1079a9e883d92de018957e5256f356aa6d28b2610e7b1c44創建
基本費率:5%
倍率:12%
最大貸款利率= 最大存款收益率= 17%
0xd928c8ead620bb316d2cefe3caf81dc2dec6ff63 —第二份合約,七月十九日於0x3abfc9be9f02c449bf85750736ecdca25bbe33e3632cae9c682824fd97e16cc9創建
基本費率:5%
倍率:15%
最大貸款利率= 最大存款收益率= 20%
0xa1046abfc2598f48c44fb320d281d3f3c0733c9a —回歸原始合約,九月十六日由交易0xd763ddbd5f7444bacc3dcbb2e21b4b8c864fd1b4bccf05ab11192e27a1acbbc1激活
基本費率:5%
倍率:12%
最大貸款利率= 最大存款收益率= 17%
?相關報導?
去中心化金融入門|五分鐘看懂借貸機制,什麼是「DeFi 銀行」Compound?
以太坊|Vitalik 個人部落格:打破區塊鏈 Layer1 和 Layer2 關係的常規思維
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。