以太坊上的借貸應用架構演變: 比較 MakerDAO、Yield、Aave、Compound 和 Euler

2023-10-13 12:09 登鏈社區


作者:@albertocuestacanada,來源:登鏈翻譯計劃

借貸是基於以太坊的區塊鏈應用的基石。已經有數十億資產被借出,所以了解借貸的運作方式對於开發者、架構師或研究員來說至關重要。

就像編程範式的演變一樣,這些 DeFi 應用程序具有不同的架構設計,反映了從安全性到效率極用戶體驗等不斷變化的優先級。

本文着眼於分析借貸應用程序的架構,例如 MakerDAOCompound 、 Aave、Euler 和 Yield 。我們將重點介紹關鍵的創新和設計模式,它們是未來借貸應用程序开發的重要經驗教訓。

如果你是开發者、架構師或安全研究員,那么本文適合你。最後,你將輕松了解以太坊上的新借貸應用程序,快速而全面地掌握其架構。深入了解這些 DeFi 巨頭是如何從頭开始構建的。

DeFi 中的借貸

大多數 DeFi 借貸超額抵押。如果用戶提供的抵押品價值高於借貸的價值,則用戶可以借入特定資產。與傳統借貸不同,許多此類借貸沒有定期還款或固定還款日期。從本質上講,你可以借,永遠不還。

然而,有一個問題就是:抵押品的價值必須始終超過借貸價值預定的邊界。

如果抵押品價值低於此邊界,則貸款將會被清算。在清算期間,其他人償還你的部分或全部貸款,並且他們會收到你的部分或全部抵押品作爲回報。

遵循這種金融結構的所有借款申請都需要相同的構建,然後可以通過多種方式進行安排:

  • 存儲用戶抵押品和借入資產的金庫(treasury )

  • 跟蹤每個用戶的抵押品和債務的账單(Accounting)系統

  • 決定借款人利率的函數

  • 驗證借貸是否有足夠抵押的機制,通常涉及外部價格預言機

  • 抵押不足時借貸的清算路徑

  • 記錄借貸總額和其他安全指標的風險管理系統,例如全局和每個用戶的借貸限額、最低抵押品和特定的超額抵押率

  • 供用戶添加和刪除抵押品、借貸和償還標的接口

> MakerDAO 中的借貸流程,所有應用資產使用相同的步驟和功能

借款和貸款可以被視爲獨立的功能。在 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 亮點:

  • 每個資產都有自己合約。

  • 账單功能集中在單個合約中,該合約還記錄和執行風險參數,包括抵押檢查

  • 與其他應用程序不同,預言機來更新合約,監督抵押

  • 價格和利率預言機使用不同的接口

  • 利率源自外部

  • 要借款,用戶必須與多個合約交互

Yield 協議的架構演變

Yield v1 作爲使用 YieldSpace 的固定利率的概念證明。該版本在 MakerDAO 之上構建了其抵押債務引擎。然而,Yield v1 使用起來既昂貴又難以通過新功能進行增強。

認識到 YieldSpace 的潛力後,我們迅速轉向开發 Yield v2。Yield v2 仍從 MakerDAO 中汲取靈感,但現已完全獨立,於 2021 年 10 月推出; Yield v2 優先考慮降低 Gas 成本和增強用戶體驗。

Yield v2 中的借貸流程深受 MakerDAO 影響

所有账單、風險管理和抵押檢查都合並到一個合約中:Cauldron。效仿 MakerDAO 的方法,將金庫功能分布在 Join 合約中,每個合約專用於一項特定資產。

改進了預言機集成,將價格和利率預言機合並爲一個通用接口。我們反轉了 MakerDAO 的預言機流程,以便Cauldron 根據抵押檢查的需要查閱預言機。據我所知,這是除 MakerDAO 之外的所有其他應用的首選流程。

與 MakerDAO 方法的另一個重大差異是引入了Ladle。該合約充當用戶和 Yield 之間的唯一中介。它對金庫和账單擁有廣泛的控制權,以之相應的,它爲功能开發提供了巨大的靈活性。

總而言之,Yield v2 中的借貸工作原理如下:

  • 每項資產都有自己專用的金庫合約。

  • 單一合約集中了账單職能。該合約還監督風險管理措施並執行抵押檢查。

  • 抵押功能查閱預言機來確定價格和利率。

  • 價格和利率預言機共享統一的接口。

  • 利率是外部產生的。

  • 用戶可以通過向一個合約發出單個交易來借款。

Compound 的架構演變

Compound 的第一個版本概念驗證,表明可以在以太坊上建立貨幣市場。因此,其設計優先考慮簡單性。 MoneyMarket.sol合約封裝了所有功能,包括借貸。

Compound v1 中的借款過程,簡單有效

  • 金庫、账單和風險管理任務(例如抵押檢查)被合並到一份合約中。

  • 該合約從預言機檢索價格,但根據資產利用率確定利率。

  • 用戶僅與該合約交互,盡管它必須單獨調用來提供抵押品和借入資產。

Compound v2

Compound v2 於 2019 年 5 月推出,點燃了流動性挖礦時代,激發了無數分叉。它也起到貨幣市場的作用,允許用戶存款和借入資產。

基於其白皮書和結構,很明顯,Compound v2 的主要目標是使用 ERC20 標准來表示借貸頭寸。這確保了可組合性,允許用戶借給Compound,然後在其他區塊鏈應用程序中使用這些計息頭寸。

有趣的是,白皮書並沒有強調Compound v2 將獎勵納入其智能合約中。由於這一遺漏,該功能的巨大影響可能無法預見。

Compound v2 中的借款過程,首次將借貸頭寸代幣化

  • 每項資產都有自己的資金合約。

  • 账單功能也是分开的,每個 cToken 都會記錄用戶的抵押品和債務。

  • 單一合約(Comptroller)記錄並執行風險管理參數,包括抵押檢查。

  • Comptroller 負責抵押檢查的合約參考價格的預言機和 cToken 的利率。

  • 價格和利率預言機通過不同的接口運行。

  • 利率源自資產內部利用率。

  • 用戶必須與多個合約交互才能借款。

Compound v3

Compound v3 於 2022 年發布,採用了更爲保守的風險管理策略,將流動性隔離到每個可借資產的中。該設計也表面其對用戶友好性和Gas成本的關注。

Compound v3 (Comet) 中的借款過程。回歸基礎,回歸安全。不過,有了更好的用戶體驗。

由於所需調用次數的減少,該系統對於开發人員和用戶來說都更加直觀。此外,單一合約設計通過最大限度地減少合約之間的調用來降低Gas成本。隔離的貨幣市場是對基於預言機的攻擊的防御,而這是當前一個主要的安全問題。

文中提到的其他相關功能包括(在發行說明中提到的):

  • 徹底改造的風險管理和清算引擎。這種設計增強了資金安全性,同時對借款人更加友好。

  • 在整個市場上對個人抵押資產設置限制以降低風險。

  • 收入和借款的利率模型現在是分开的,治理對經濟政策具有完全控制權。

有趣的是,Compound v3 鏡像了Compound v1 的架構,讓單個合約處理每個可借資產的所有功能。其他值得注意的功能包括:

  • 只有借貸資產才能借款,抵押資產不能借款。

  • 在Compound v3 中,抵押品不會產生回報。

禁止借用抵押品提高了抵押品存入者的安全性。這降低了治理錯誤或故意攻擊危及抵押品的可能性。

移除抵押品供給回報可能是由於Compound 設法在 v2 中積累了大量流動性的結果。我的直覺是,在Compound v2 中,借貸限額要么低於或不高於用戶貸給應用程序的資產。

假設他們將爲 v3 管理類似水平的流動性,禁止借出抵押品可以使應用程序安全,這是 v3 的核心目標之一。

從架構的角度來看:

  • 每個貨幣市場都是一個獨立合約包含金庫、账單和風險管理

  • 每個貨幣市場都保留可借資產及其所有批准的抵押資產代幣,從而讓資產分布在整個應用中

  • 喂價是唯一的外部輸入;借貸利率由內部產生

  • 供給(supply)/提取(withdraw)/借(borrow)/還(repay)等傳統功能得到巧妙整合。現在,從貨幣市場提取(withdraw)可借資產意味着借款,而供給(supply)可借資產則意味着根據用戶的償還債務或貸款

  • 集成了路由合約,允許在一次調用中執行多個操作

Aave 的架構演變

Aave v1 於 2019 年 10 月推出,接替 ETHLend。 Aave v1 引入了共享流動性池,而不是 ETHLend 的點對點方法。

Aave v1 中的借款過程,匯集流動性提交計算效率

正如在 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 v2 具有非常幹淨的架構,完全代幣化

爲了簡單起見,省略了 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 個月後被黑客攻擊。

我不認爲是由於其整體架構導致資產流失;相反,是對代碼更新的監督不夠。

結論

MakerDAO、Compound 和 Aave 等早期以太坊應用程序展示了以太坊超額抵押借貸的潛力。一旦這些概念驗證被證明是成功的,重點就轉移到引入一系列新功能以佔領市場份額。 Compound 和 Aave 的後續版本引入了流動性挖礦、可組合性和集合流動性,這些技術在牛市條件下尤其蓬勃發展。

一個重大發展是 Compound v2引入了代幣化借貸頭寸,這使得這些頭寸能夠被其他應用程序識別爲標准資產。 Aave v2 和 Euler 通過實施代幣化債務頭寸更進一步,其更廣泛的效用仍然是一個爭論的話題。

高 Gas 成本成爲牛市期間的主要問題,促使用戶體驗發生變化,如 Yield v2、Aave v2 和 Euler 所追求的。路由器合約和作爲整體實現有助於降低用戶的交易成本。然而,這是以更復雜、因此風險更大的代碼爲代價的。

Compound v3 似乎开創了先例,將安全性置於金融效率之上。它背離了傳統的流動性池模型,以更好地防範潛在的黑客攻擊。 L2 網絡的興起(其中 Gas 成本變得越來越可以忽略不計)可能會影響未來抵押借款應用的設計。

在本文中,我全面概述了以太坊上的關鍵抵押借款應用程序。我用來分析每個應用的方法也可以用於快速掌握其他抵押借款應用的復雜性。

在开發區塊鏈借貸應用時,請始終考慮資產的存儲、账單記錄的放置以及風險和抵押品評估方法。當你考慮這些注意事項時,請利用之前應用的歷史變更及本概述中的見解來爲你的決策提供信息。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

標題:以太坊上的借貸應用架構演變: 比較 MakerDAO、Yield、Aave、Compound 和 Euler

地址:https://www.sgitmedia.com/article/12965.html

相關閱讀: