比較 MakerDAO、Yield、Aave、Compound 和 Euler,全面概述以太坊上的關鍵抵押借款應用程式。本文源自 @albertocuestacanada 所著文章《Borrowing on Ethereum: Comparing Architecture Evolution of MakerDAO, Yield, Aave, Compound, & Euler》,由 PANews 編譯、整理。
(前情提要:免清算借貸協議的可行性:DeFi 的高收益和靈活性能兩者兼得? )
(背景補充:RWA不能信?Goldfinch借貸連爆2次壞帳,1200萬美元打水漂 )
借貸是基於以太坊的區塊鏈應用的基石。已經有數十億資產被借出 ,所以瞭解借貸的運作方式對於開發者、架構師或研究員來說至關重要。
就像程式設計正規化的演變一樣,這些 DeFi 應用程式具有不同的架構設計,反應了從安全性到效率極使用者體驗等不斷變化的優先順序。
本文著眼於分析借貸應用程式的架構,例如 MakerDAO、Compound、Aave、Euler 和 Yield。我們將重點介紹關鍵的創新和設計模式,它們是未來借貸應用程式開發的重要經驗教訓。
如果你是開發者、架構師或安全研究員,那麼本文適合你。最後,你將輕鬆瞭解以太坊上的新借貸應用程式,快速而全面地掌握其架構。深入瞭解這些 DeFi 巨頭是如何從頭開始構建的。
DeFi 中的借貸
大多數 DeFi 借貸是超額抵押 。如果使用者提供的抵押品價值高於借貸的價值,則使用者可以借入特定資產。與傳統借貸不同,許多此類借貸沒有定期還款或固定還款日期。從本質上講,你可以借,永遠不還。
然而,有一個問題就是:抵押品的價值必須始終超過借貸價值預定的邊界。
如果抵押品價值低於此邊界,則貸款將會被清算。在清算期間,其他人償還你的部分或全部貸款,並且他們會收到你的部分或全部抵押品作為回報。
遵循這種金融結構的所有借款申請都需要相同的構建,然後可以通過多種方式進行安排:
- 儲存使用者抵押品和借入資產的金庫(treasury)
- 追蹤每個使用者的抵押品和債務的帳單(Accounting)系統
- 決定借款人利率的函式
- 驗證借貸是否有足夠抵押的機制,通常涉及外部價格預言機
- 抵押不足時借貸的清算路徑
- 記錄借貸總額和其他安全指標的風險管理系統,例如全域性和每個使用者的借貸限額、最低抵押品和特定的超額抵押率
- 供使用者新增和刪除抵押品、借貸和償還標的介面
借款和貸款可以被視為獨立的功能。在 DeFi 中,我們在大多數借貸應用程式中都發現了這兩種功能,但它們並不總是能夠很好地整合。在 Compound ,Aave 和 Euler ,借款人和貸款人的利率是內部相關的;事實上,這就是使這些應用程式以最少的干預執行的原因。
另一方面,MakerDAO 和 Yield 借給借款人的資產來自於他們自己(協議本身)。
他們不要求使用者提供資產以便其他使用者可以借用。
本文將重點討論鏈上借款 (borrowing),並在很大程度上忽略貸款(lending)。由於抵押要求,借款要複雜得多,並且瞭解借款模式通常可以更好地理解整個協議。
MakerDAO 的架構演變
MakerDAO,於 2019 年 11 月推出,它持有 $4.95B 抵押品。儘管其模組化架構具有針對每個功能的不同合約和獨特的術語,但它仍然易於理解和驗證。
MakerDAO 中的金庫(Treasury)功能由 Join 合約管理。每個被批准作為抵押資產的代幣都有一個單獨的合約。MakerDAO 不擁有任何借貸資產 DAI。它只是根據需要鑄造和銷燬 DAI。
帳單(Accounting) 在 vat.sol 合約內處理。當抵押品進入或退出系統時,Join 會更新此合約。如果使用者借款,他們會直接與 vat.sol 合約進行互動。此操作會更新使用者的債務餘額,並允許他們在 DAI 中鑄造 DAI。為了償還,使用者在 DAI Join 合約中燃燒 DAI。然後,此過程會更新 Vat,使使用者能夠結算借貸。
此外, vat.sol 合約充當風險管理引擎。它維持全部借貸限額,設定每個使用者的最低閾值,並監督抵押比率。當用戶的債務或抵押品餘額發生變化時,vat.sol 合約會評估利率和現貨(spot)。這些是指基於所使用的抵押品和現行 DAI 與抵押品價格比率的利率。有趣的是,這些值由其他 MakerDAO 合約輸入到 vat.sol 合約中,這種方法與大多數其他應用程式不同。
MakerDAO 在設計階段就將安全放在首位 —— 當時 gas 成本等因素是次要的,使用者體驗是次要問題,競爭也可以忽略不計。因此,它可能會顯得古怪、使用成本高昂且難以駕馭。然而,其管理的龐大資產和沒有重大違規行為的運營記錄凸顯了其穩健的設計和執行。
MakerDAO 亮點:
- 每個資產都有自己合約。
- 帳單功能集中在單個合約中,該合約還記錄和執行風險引數,包括抵押檢查
- 與其他應用程式不同,預言機來更新合約,監督抵押
- 價格和利率預言機使用不同的介面
- 利率源自外部
- 要借款,使用者必須與多個合約互動
延伸閱讀:「DeFi 老炮」MakerDAO 的生態現狀與潛在變數
Yield 協議的架構演變
Yield v1 作為使用 YieldSpace 的固定利率的概念證明。該版本在 MakerDAO 之上構建了其抵押債務引擎。然而,Yield v1 使用起來既昂貴又難以通過新功能進行增強。
認識到 YieldSpace 的潛力後,我們迅速轉向開發 Yield v2 。Yield v2 仍從 MakerDAO 中汲取靈感,但現已完全獨立,於 2021 年 10 月推出 ;Yield v2 優先考慮降低 Gas 成本和增強使用者體驗。
所有帳單、風險管理和抵押檢查都合併到一個合約中:Cauldron [21]。效仿 MakerDAO 的方法,將金庫功能分佈在 Join 合約中,每個合約專用於一項特定資產。
改進了預言機整合,將價格和利率預言機合併為一個通用介面 。我們反轉了 MakerDAO 的預言機流程,以便 Cauldron 根據抵押檢查的需要查閱預言機。據我所知,這是除 MakerDAO 之外的所有其他應用的首選流程。
與 MakerDAO 方法的另一個重大差異是引入了 Ladle。該合約充當使用者和 Yield 之間的唯一中介。它對金庫和帳單擁有廣泛的控制權,以之相應的,它為功能開發提供了巨大的靈活性。
總而言之,Yield v2 中的借貸工作原理如下:
- 每項資產都有自己專用的金庫合約。
- 單一合約集中了帳單職能。該合約還監督風險管理措施並執行抵押檢查。
- 抵押功能查閱預言機來確定價格和利率。
- 價格和利率預言機共享統一的介面。
- 利率是外部產生的。
- 使用者可以通過向一個合約發出單個交易來借款。
Compound 的架構演變
Compound 的第一個版本是概念驗證,表明可以在以太坊上建立貨幣市場。因此,其設計優先考慮簡單性。MoneyMarket.sol 合約封裝了所有功能,包括借貸。
金庫、帳單和風險管理任務(例如抵押檢查)被合併到一份合約中。
該合約從預言機檢索價格,但根據資產利用率確定利率。
使用者僅與該合約互動,儘管它必須單獨呼叫來提供抵押品和借入資產。
Compound v2
Compound v2 於 2019 年 5 月推出,點燃了流動性挖礦時代,激發了無數分叉。它也起到貨幣市場的作用,允許使用者存款和借入資產。
基於其白皮書和結構,很明顯,Compound v2 的主要目標是使用 ERC20 標準來表示借貸部位。這確保了可組合性,允許使用者借給 Compound,然後在其他區塊鏈應用程式中使用這些計息部位。
有趣的是,白皮書並沒有強調 Compound v2 將獎勵納入其智慧合約中。由於這一遺漏,該功能的巨大影響可能無法預見。
- 每項資產都有自己的資金合約。
- 帳單功能也是分開的,每個 cToken 都會記錄使用者的抵押品和債務。
- 單一合約(Comptroller)記錄並執行風險管理引數,包括抵押檢查。
- Comptroller 負責抵押檢查的合約參考價格的預言機和 cToken 的利率。
- 價格和利率預言機通過不同的介面執行。
- 利率源自資產內部利用率。
- 使用者必須與多個合約互動才能借款。
Compound v3
Compound v3 於 2022 年釋出,採用了更為保守的風險管理策略,將流動性隔離到每個可藉資產的池中。該設計也表面其對使用者友好性和 Gas 成本的關注。
由於所需呼叫次數的減少,該系統對於開發人員和使用者來說都更加直觀。此外,單一合約設計通過最大限度地減少合約之間的呼叫來降低 Gas 成本。隔離的貨幣市場是對基於預言機的攻擊的防禦,而這是當前一個主要的安全問題。
文中提到的其他相關功能包括(在發行說明中提到的):
- 徹底改造的風險管理和清算引擎。這種設計增強了資金安全性,同時對借款人更加友好。
- 在整個市場上對個人抵押資產設定限制以降低風險。
- 收入和借款的利率模型現在是分開的,治理對經濟政策具有完全控制權。
有趣的是,Compound v3 映象了 Compound v1 的架構,讓單個合約處理每個可藉資產的所有功能。其他值得注意的功能包括:
- 只有借貸資產才能借款,抵押資產不能借款。
- 在 Compound v3 中,抵押品不會產生回報。
禁止借用抵押品提高了抵押品存入者的安全性。這降低了治理錯誤或故意攻擊危及抵押品的可能性。
移除抵押品供給回報可能是由於 Compound 設法在 v2 中積累了大量流動性的結果。我的直覺是,在 Compound v2 中,借貸限額要麼低於或不高於使用者貸給應用程式的資產。
假設他們將為 v3 管理類似水平的流動性,禁止借出抵押品可以使應用程式安全,這是 v3 的核心目標之一。
從架構的角度來看:
- 每個貨幣市場都是一個獨立合約包含金庫、帳單和風險管理
- 每個貨幣市場都保留可藉資產及其所有批准的抵押資產代幣,從而讓資產分佈在整個應用中
- 喂價是唯一的外部輸入;借貸利率由內部產生
- 供給(supply)/ 提取(withdraw)/ 借(borrow)/ 還(repay)等傳統功能得到巧妙整合。現在,從貨幣市場提取(withdraw)可藉資產意味著借款,而供給(supply)可藉資產則意味著根據使用者的償還債務或貸款
- 集成了路由合約,允許在一次呼叫中執行多個操作
延伸閱讀:DeFi借貸|Compound單週跳漲130%,它做對了什麼?
Aave 的架構演變
Aave v1 於 2019 年 10 月推出,接替 ETHLend。Aave v1 引入了共享流動性池,而不是 ETHLend 的點對點方法。
正如在 Yield v2 中一樣, 路由合約控制了業務邏輯。LendingPoolCore 實現了帳單、風險管理和金庫功能。將金庫集中在一個合約中是與 Compound v2 的一個區別點。
將抵押檢查留在自己的合約中,從路由器而不是會計合約中呼叫,這一決定看似薄弱,但由於 Aave v2 版本在 v1 版本釋出兩年後才釋出,因此很可能符合目的。
- LendingPoolCore 合約處理金庫和帳單
- LendingPoolDataProvider 管理抵押檢查並與預言機互動
- LendingPool 作為使用者入口並實現業務邏輯
- 借貸利率由內部決定,僅依賴於價格回饋
Aave v2
Aave v2 於 2021 年 12 月釋出。雖然它保留了與 Aave v1 類似的功能,但與 Aave v1 和 Compound v2 相比,它引入了改進且更簡單的架構。在此版本中,Aave 還引入了 aToken(類似於 Compound 的 cToken)和 vToken ,它們代表代幣化債務。
為了簡單起見,省略了 Aave v1 中有限使用的某些功能。Aave v1 中的問題(例如應計利息的複雜表示)已在 Aave v2 中得到解決。
- LendingPool 合約整合了全域性帳單和風險管理功能,例如抵押檢查。它作為使用者的主要訪問點
- aToken 表示抵押品,類似於借貸部位。使用者的抵押品通過其持有的 aToken 體現,金庫功能分佈在所有 aToken 上
- vToken 用於表示債務部位。使用者的債務由他們持有的 vToken 表示
Aave v3
Aave v3 於 2023 年 1 月釋出,具有多鏈支援和其他功能。新增這些不會改變核心架構。此次更新還改進了風險管理和 Gas 效率。
儘管有許多進步,但就本研究而言,Aave v3 與 Aave v2 並沒有本質上的不同。事實上,這可能表明 Aave v2 的架構在 2023 年仍然保持穩健。
Euler 的架構演變
Euler 於 2022 年 12 月推出,旨在為貨幣市場提供無需許可的功能和最少的治理。
其設計的一個標誌是鑽石般的模式。單個合約擁有應用程式的所有儲存空間。該儲存可以通過不同的代理進行訪問,每個代理管理系統的不同概念元素。
儘管一份合約儲存了所有資產、帳單和風險管理資料,但仍然有用於抵押品和借貸的 eToken,以及用於債務的 dToken,類似於 Aave v2。然而,這些代幣合約僅僅是中央儲存合約的檢視。
- Storage 合約管理帳單變數。
- BaseLogic 合約 充當金庫。
- RiskManager 合約監督風險管理變數和功能,包括抵押檢查。
對程式碼的分析表明,最小的 Gas 成本是首要任務,從而導致整體設計消除了合約間呼叫的需要。通過嚴格的測試和稽核確保了安全性。只有邏輯分佈在各個模組中,作為儲存合約的實現,儲存合約主要充當代理合約。
這種統一的設計還支援輕鬆升級。如果不需要更改儲存,則可以快速更換模組以修改或引入功能。
Euler 在釋出 15 個月後被駭客攻擊,在升級引入被利用的漏洞 6 個月後被駭客攻擊。
我不認為是由於其整體架構導致資產流失;相反,是對程式碼更新的監督不夠。
延伸閱讀:盜取2億鎂》Euler Finance駭客不甩「100萬鎂懸賞令」,加碼賠償哭窮的散戶!
結論
MakerDAO、Compound 和 Aave 等早期以太坊應用程式展示了以太坊超額抵押借貸的潛力。一旦這些概念驗證被證明是成功的,重點就轉移到引入一系列新功能以佔領市場份額。Compound 和 Aave 的後續版本引入了流動性挖礦、可組合性和集合流動性,這些技術在牛市條件下尤其蓬勃發展。
一個重大發展是 Compound v2 引入了代幣化借貸部位,這使得這些部位能夠被其他應用程式識別為標準資產。Aave v2 和 Euler 通過實施代幣化債務部位更進一步,其更廣泛的效用仍然是一個爭論的話題。
高 Gas 成本成為牛市期間的主要問題,促使使用者體驗發生變化,如 Yield v2、Aave v2 和 Euler 所追求的。路由器合約和作為整體實現有助於降低使用者的交易成本。然而,這是以更復雜、因此風險更大的程式碼為代價的。
Compound v3 似乎開創了先例,將安全性置於金融效率之上。它背離了傳統的流動性池模型,以更好地防範潛在的駭客攻擊。L2 網路的興起(其中 Gas 成本變得越來越可以忽略不計)可能會影響未來抵押借款應用的設計。
在本文中,我全面概述了以太坊上的關鍵抵押借款應用程式。我用來分析每個應用的方法也可以用於快速掌握其他抵押借款應用的複雜性。
在開發區塊鏈借貸應用時,請始終考慮資產的儲存、帳單記錄的放置以及風險和抵押品評估方法。當你考慮這些注意事項時,請利用之前應用的歷史變更及本概述中的見解來為你的決策提供資訊。
📍相關報導📍
美國CFTC主席:沒監管的DeFi就像無照醫生,你敢給他看病?