從EOS用戶視角看以太坊DeFi之Compound

odaily星球日報 發佈 2020-06-20T21:45:10+00:00

Compound是一個區塊鏈銀行,它通過借貸雙方需求來依據算法自動調節存款和貸款利率的借貸工具,它能夠按一個區塊為一次計息,能夠避免P2P借款撮合下匹配難、體驗差、門檻高、市場流動性不足等各類問題,減少借貸雙方的摩擦成本,同時讓用戶數字資產真正展現其應有的時間價值。Zengo— Understanding Compound Liquidator:見原文連結。

從EOS用戶視角看以太坊DeFi之Compound

  • 本系列文章將默認你是一個EOS社區成熟用戶,理解EOS基本邏輯和使用

  • 同時默認你是一個DeFi小白,完全不懂DeFi概念,從0開始學習DeFi知識

  • 系列文章將會對當前的以太坊主流DeFi項目進行評述,同時對比EOS生態的DeFi項目(如果有的話)

  • 此系列文章不構成任何投資建議

滴水成河,聚沙成塔

1. 一句話理解Compound

Compound是一個區塊鏈銀行,它通過借貸雙方需求來依據算法自動調節存款和貸款利率的借貸工具,它能夠按一個區塊(約15秒)為一次計息,能夠避免P2P借款撮合下匹配難、體驗差、門檻高、市場流動性不足等各類問題,減少借貸雙方的摩擦成本,同時讓用戶數字資產真正展現其應有的時間價值。

Compound本身是複合的意思,Compound項目取名為Compound有一個原因就是它們借用了Compound Interest(複利)這層意思。有傳言說,愛因斯坦曾經說過,複利是世界的第八大奇蹟。本文主要包括以下幾個方面對Compound協議進行總結:Compound專業術語、Compound主要內容、Compound核心邏輯、預言機、系統治理、清算邏輯、團隊盈利等幾個方面內容,主要來自官方白皮書、FAQ、Discord內的Resource等官方公告或支持的信息。

2. 專業術語解釋

底層資產(Underlying Asset):用戶提供到Compound的資產如ETH/BAT/DAI/ZRX等為底層資產。

cToken:用戶抵押底層資產後,系統會根據一個兌換率來給用戶返還一定數量的cToken,如用戶存入ETH則給cETH。而底層資產的提取也需要用到cToken去兌換。

兌換率(Exchange Rate):cToken和底層資產的兌換比例,當沒有任何人存入資產生息時,會有一個initial Exchange rate,兌換率會隨著時間的推移會不斷增加。對於token a,其計算公式如下:

  • underlyingBalance是資產a在Compound中的數量,totalBorrowBalance_a是Compound中借出資產a的數量,reseves_a是a當前的準備金。

使用率(Utilization Rate):資產a的使用率如下:

即借出款項占a在協議內剩餘量加上借出量之和的占比。supply+reserve-borrow = cash。

存款利率(Supply Rate): 存款利率的計算需先得到借款利率,和借款利率一樣,都是每個區塊計算一次,同一個區塊的房貸人對於相同的資產獲得相同的放貸利率。計算如下:

借款利率(Borrow Rate):借款利率收到使用率影響,根據白皮書,借款利率的決定由類似下式的公式決定(針對不同的token參數數值不同,具體數值應該在cToken合約的InterestrateModel內可以查到,我看了Github裡面沒找到。)

抵押率/抵押因子(Collateral Factor):針對不同的資產,Compound內有著不同的抵押因子,抵押因子範圍是0-1,代表用戶抵押的資產價值對應可得到的借款的比率,為零時表示該類資產不能作為抵押品去借貸其他資產。小市值資產由低抵押因子,相對與大市值資產,同樣的抵押資產,能借的資金更少。最新抵押因子如下:

抵押因子

類型cETHcSAIcDAIcUSDCcBATcREPcZRXcWBTCUSDT抵押因子0.750.350.750.750.60.40.60.00.0

準備金(Reverse): Compound協議利息收入的一部分將會被留存成為該幣種的準備金,者個留存部分由準備金因子Reserve Factor(留存準備金決定),準備金因子在0~1之間,根據官方FQA,目前除了cSAI是100%,其他都是10%。而準備金的累計公式如下:

清算(Liquidation):Compound中的清算是指當用戶抵押資產價值小於借款價值時,清算人可以代替被清算人還款一部分,目前可以最多一次幫還50%,同時清算人可以得到被清算人抵押物(cToken)的一定百分比獎勵。

關閉因子(Close Factor):在清算過程中,清算人可以幫助貸款人還掉的債務最大比例,在0~1之間,目前是50%。這個因子可以被連續調用,直到用戶借款訂單處於安全狀態。

清算激勵(Liquidation Incentive):目前清算人得到有8%獎勵(2020年3月17號從5%升級到8%)。

2. 主要內容

Compound白皮書指出,對於當下區塊鏈資產存在兩個主要問題:

  • 借貸機制極為有限,導致資產錯誤定價,例如空氣幣不能借到,沒法對其做空,導致價格虛高。

  • 因為存儲成本和波動風險的存在,無論是存在交易所還是自己錢包,都無一個自然利率來消除這個成本。

Compound協議是建立在以太坊上,存款和借款供需雙方關係通過算法來計算利率的資金池模式。存款者直接向資金池存款,獲取浮動的利息收益,而無需和對手方協商到期日、利息率抵押物等。

圖1 Compound核心架構圖

3. Compound核心邏輯

  • 放貸人(Suppliers)/借款人(Borrowers,當需要借款時,選擇存入的資產為可抵押的)存入資產到Compound 智能合約的貨幣市場(Money Market)。放貸人/借款人存入的資產為底層資產(underlying asset)。Compound目前支持USDC/REP/SAI/WBTC/BAT/ZRX/USDT。

  • 智能合約按照兌換率發放對應底層資產的Compound代幣cTokens到用戶帳戶。這裡的cTokens可以為cDAI/cETH/cUSDC/cREP/cSAI/cWBTC/cBAT/cZRX/cUSDT。計算公式為cToken數額 = 存入底層資產的數額/兌換率。

  • 放貸人存入的資產,可享受放貸利息,也可以隨時提取。

  • 借款人存入cTokens作為抵押資產後,可以從Compound借款,借款上限為抵押資產價值*抵押因子【借款上限=SUM(抵押因子*cToken_i 餘額*兌換率*價格),SUM表示對所有抵押資產從1到N的求和,這裡抵押因子提到外面也是一樣。】,用戶借出的是底層資產。借款人可以先作為放貸人存入抵押資產,然後選擇將資產作為抵押物,這樣,以後,借款人實際上可以享受自己提供抵押物進入資金池的利息,可以一定程度減輕貸款的利息支付。借款利率由Compound智能合約根據市場對資金的供需關係實時確定,同一個區塊內,所有借款人的借款利率相同。

  • Compound 按照區塊數為單位累積借款人利息(Accrue Interest)。

  • Compound對於每一筆借款都會從其利息中的10%計提準備金(Reserves)

  • 借款人可以隨時償還貸款。

  • 如果借款人抵押資產價值【抵押資產價值=SUM(抵押因子*cToken_i 餘額*兌換率*價格),SUM表示對所有抵押資產從1到N的求和,再將其轉換為ETH。這裡抵押資產價值要乘抵押因子】,低於借款價值【借款價值=SUM(借款數額*價格),轉換為ETH】,這個比例被稱為健康度,當健康度小於1時,則發生清算。清算人得到有8%獎勵(2020年3月17號從5%升級到8%)加成的cToken。清算人地址不能是對應借款地址,即自己不能為自己清算。

4. 價格預言機Price Oracle

根據官方在Discord上的回覆,2018年8月於Medium發表的FAQ中Oracle內容並未發生變更,一下內容將根據FAQ進行整理。

BAT,REP,ZRX和WBTC的餵價將來自於Coinbase Pro, Bittrex, Poloniex和Binance的中位數。同時Compound協議中為了系統安全,設置了每小時最大10%價格變化的限定,除非能得到人工的批准,否則每個小時只能最大變化10%。DAI,SAI和USDC價格來自Maker的ETH/USD價格餵價。

5. 系統治理

當前Compound協議治理已經通過部署在以太坊上的COMP代幣進行治理,從官網可以看到,當前參與治理投票的地址達240個,逐步實現治理鏈上化,相對於MKR少數地址控制了大多數的投票權重的情況,COMP代幣治理的投票權重相對分散,第一名也僅占3.45%的權重。COMP代幣市值超越最大的MakerDAO代幣MKR市值近段時間也是搶足了風頭。

根據白皮書,當前管理員可以有以下權限:

  • 上架新的cToken市場

  • 對每個代幣市場的利率模型進行升級

  • 更新Oracle地址

  • 可以提取cToken準備金

  • 選擇新的管理員、或者一個DAO組織來管理社區

隨著代幣的發放,後面這些管理權限將慢慢完全交給社區。

6. Compound清算邏輯

整個Compound協議有幾類參與者,包括放貸人、借款人、清算者、社區成員、開發者。

如果借款人抵押資產價值【抵押資產價值=SUM(cToken_i 餘額*兌換率*價格),SUM表示對所有抵押資產從1到N的求和,再將其轉換為ETH】,低於借款價值【借款價值=SUM(借款數額*價格),轉換為ETH】,這個比例被稱為健康度,當健康度小於1時,則發生清算。

Compound中的清算是指當用戶抵押資產價值小於借款價值時,清算人可以代替被清算人還款一部分,目前可以最多一次幫還50%,同時清算人可以得到被清算人抵押物(Compound只允許用cToken進行抵押,因此清算人也是拿到cToken)的一定百分比獎勵。為了激勵用戶參與Compound不良債務清算,2020年3月17日,Compound管理員已將清算獎勵從5%提高到8%,並且暗示如果有必要的話會將其提升到15%。

8%是一個什麼概念呢?我們來看看由ZenGo(zengo.com)提供的Compound協議在2019年5月~2019年12月期間,清算因子為5%時的數據:

  • 清算人總共參與了10375064美元的市場清算,拿到了518752美元的利潤(不含交易費用)。

  • 這期間總共進行了1800次清算事件。

  • 清算事件利潤的中位數為6.35美元,平均利潤為288美元。

  • 前20位清算獲利者拿到了總利潤份額的50%。

  • 最大利潤獲利者這期間拿到了120066美元利潤。

  • 幾乎絕大部分清算都在一小時內完成,大部分都是程序化清算。

6.1 清算程序

首先要找到抵押不足帳戶,也就是健康度小於1的帳戶。如果借款人抵押資產價值【抵押資產價值=SUM(抵押因子*cToken_i 餘額*兌換率*價格),SUM表示對所有抵押資產從1到N的求和,再將其轉換為ETH】,低於借款價值【借款價值=SUM(借款數額*價格),轉換為ETH】,這個比例被稱為健康度,當健康度小於1時,則發生清算。

幾個情況會導致清算的發生:

  • 接入資金的利息高於抵押品的利息,隨著時間的推移不斷累計,導致借入債務增加,導致達到清算線。

  • 抵押物價格極速下跌。

  • 借出資產價格極速上升。

雖然,Compound協議限制了資產價格在1小時內波動不超過10%,給足用戶補抵押物或者還掉部分借款的時間,但是借款仍有可能存在清算的可能。

Compound協議提供了API來查看清算信息,通過調用合約進行過濾,也可以通過借款健康度查看。

6.2 調用合約進行清算

一旦找到了可清算的借款,則可以調用liquidateBorrow合約進行清算,例如(0xb7ba825294f757f8b8b6303b2aef542bcaebc9cc0217ddfaf822200a00594ed9),需要以下參數:

  • 被清算帳戶地址

  • 清算人代償付金額

  • compound內關於該筆借款抵押物的合約地址(cToken),這些cToken智能合約地址可在官方FAQ找到。

下面提供ZenGo研究文章內給的實例,讓讀者進一步了解清算過程,首先通過工具網站找到當前可以被清算的借款,

圖2 查看帳戶健康度

當Health

圖3 健康度小於1的帳戶細節

可以看到該用戶抵押了2.46個cDAI,借出了0.00684個ETH,

之後選擇幫忙償還ETH,並拿到cDAI作為獎勵,將償還額度拉到最大,即50%。

償還這一單償還肯定時虧錢的,因為還要支付Gas費用。正常市面上不虧錢的單子會很快就被消滅,輪不到用戶手動清算。

根據Compound官方推薦的由歐洲著名量化機構對Compound市場風險評估的模擬得知,清算人如果選擇得到獎勵後立即賣出,則會面臨交易滑點,而滑點成本在波動大的時候會占到清算成本(合約調用Gas費/轉帳Gas費/滑點成本)的30%,即使不在大幅波動,也是要占10%的成本。

同時認為在5%的清算激勵時,當一天內波動率小於35%時,系統不存在風險;當波動率大於45%時,可能部分放貸人將無法拿回自己的資產(即意味著協議可能存在虧空)。可能是因為受到之前312大跌經歷,現在這個激勵已經提升到8%。

7. Compound團隊盈利模式

Compound團隊實際上並未從Compound協議中盈利,即使是保留利息的10%作為留存準備金,雖然這部分屬於團隊管理,但這部分也沒有聲明屬於團隊,從目前來看,其已發行COMP代幣,如果後期依靠治理代幣COMP的髮型進行盈利的話,將會和MakerDao盈利模式類似。

8. 風險與不足

Compound用戶應當場份認識到由去中心化借貸帶來的風險。包括:

  • 智能合約安全性風險

  • 管理/協議風險(包括管理員密鑰泄露)

  • 流動性風險/擠兌風險

  • 信用風險

Compound智能合約已經得到OpenZeppelin、Trail of Bits、Certora等知名合約安全審計公司審計,同時Compound還為嚴重漏洞提供了25萬美元的懸賞(賞金為被盜資金的1%或者是凍結資金的10%),目前還沒由獨立安全研究人員獲得過賞金。目前Compound的大量資金存放和長時間運行側面證明了合約的安全性。

管理/協議風險,OpenZeppelin在他們的審計報告中,有提到,惡意管理員或者被竊取私鑰的管理員手中擁有凍結市場、審查交易甚至從系統中竊取安全資產的能力。類似地,控制資產價格預言機即便不能竊取安全系統全部資產,也能竊取大部分,因為所有實時市場的管理員都是同一個外部帳戶。當然Compound會激勵維護管理密鑰安全,並且從目前來看,他們也有足夠的資金去購買最好的託管服務。

關於流動性風險(擠兌風險),由Bogdan Gheorghe等人寫的(Illiquidity and Bank Run Risk in Defi)中有寫到,Compound的資金提供方可以在任意時刻將投入的本金和利息提現——即Compound將為存款方留出足夠多的流動性,讓他們可以隨時使用他們的資金。

然而,正如貸款方受制於流動性池子的規模一樣,資金方也會受限。每筆借款都會縮小這個資金池的規模,也就是用戶可提現收縮。一旦超出流動性上限的提現操作及貸款操作都會失敗,本身而言這不是無法兌付,只是會出現暫時無法兌付,需要等待用戶還款後,資金池內才有足夠資金付給提現人。

雖然Compound設置了根據借貸雙方需求來調節利率以保證流動性,但在去中心化市場上,當存款方對市場穩定性感到焦慮時,會試圖快速從平台提現,但多次的失敗會引發嚴重的市場對於協議系統的不信任,導致更多的提現操作,最後資金池被擠兌,協議反饋機制失效。

流動性枯竭在Compound內也有發生過,實際提現失敗的情況再早期也發生過,但實際上並未產生很大影響,後面提高存款利率之後立即被解決了。目前來講Compound流動性問題和擠兌的可能性非常低。

9. 給EOS啟示

EOS上是沒有借貸DApp的,一個原因可能跟EOS上市值大的資產少有關,還有一個原因和USDT在EOS上發行沒有那麼給力有關。現在EOS上的借貸市場是一片空白,從COMP目前市值來看,也許對於新團隊而言是一個好的切入點,可以考慮結合投票挖礦的無風險收益加成,但是抵押贖回的期限導致一個流動性問題需要優雅地得到處理。

而EOS用戶,特別是代碼能力強的人,即使沒有本金,也可以考慮參與以太坊DeFi的清算,真的是一門好生意。因為現在有了Aave閃電貸,每筆只需付出0.09%資金成本,就能拿到5%~8%的清算獎勵,算是無本萬利、空手套白狼。

附錄 實用連結

Compound運營在Discord上對各類信息的整理,是我見過最好的一個DeFi,一個項目的成功跟運營真的有很大關係。很多連結都很長,大家可以直接點文字獲得連結。

WhitePape:https://compound.finance/

FAQ:https://medium.com/

Github:https://github.com/

Market Risk Assessment:https://gauntlet.network/

Compound協議規範:https://github.com/

Zengo— Understanding Compound Liquidator:https://zengo.com/

官方Discord:https://compound.finance/discord

Liquidation Dashboard:https://chiragkhatri.me/compound-liquidator/

關鍵字: