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美元利潤。幾乎絕大部分清算都在一小時內完成,大部分都是程序化清算。