借貸是基於以太坊的區塊鏈應用的基石。由於有數十億資産被借出,了解借貸的運作方式對於開髮商、建築師或研究人員來説至關重要。
就像編程範式的演變一樣,這些 DeFi 應用程序也髮展演變了不衕的架構設計,反映了它們的註重點從安全性到效率和用戶體驗等不斷變化。
本文的分析著眼於 MakerDAO、Compound、Aave、Euler 和 Yield 等應用程序的架構。我們將重點介紹重要的創新和設計模式,它們將爲未來貸款應用程序開髮提供重要的經驗。
如果您是開髮人員、架構師或安全研究人員,那麽您適合閲讀本文內容。通過本文,您將輕鬆了解以太坊上的新借貸應用程序,快速而全麵地掌握其架構,併深入了解這些 DeFi 巨頭是如何從頭開始構建的。
大多數 DeFi 借貸都是超額抵押的。如果用戶提供的抵押品價值高於借款的價值,則用戶可以借入特定資産。與傳統貸款不衕,許多此類借款沒有定期還款或固定結束日期。從本質上講,你可以借,併一直不還。
但是,有一個不明顯的問題。
抵押品的價值必鬚始終超過借款價值預定的幅度。
如果抵押品價值低於此值,借款將被清算。
在清算期間,其他人償還您的部分或全部借款,併且他們會收到您的部分或全部抵押品作爲回報。
遵循這種財務結構的所有借款申請都需要相衕的構建塊,然後可以通過多種方式得到安排:
MakerDAO 中的借貸流程。所有應用程序都有相衕的步驟和功能。
借貸可以被視爲是獨立的功能。在 DeFi 中,我們在大多數借貸應用程序中都髮現了這兩種功能,但它們併不總是能夠很好地集成。
在Compound中,Aave和Euler就是這樣。借款人和貸款人的利率是內部相關的;事實上,這就是使這些應用程序以最少的幹預運行的原因。
相反,MakerDAO 和 Yield 是他們借給借款人的資産的髮起者。
他們不要求用戶提供資産以便其他用戶可以借用。
本文將重點討論鏈上借貸,併在很大程度上不會討論出借服務。由於抵押要求,借貸要覆雜得多,併且了解借貸模式通常有助於更好地理解整個協議。
MakerDAO Logo
在以太坊中,MakerDAO 是歷史悠久的名稱了。 它於2019年11月以當前形式推出,持有$49.5億的抵押品。盡管其模塊化架構具有針對每個功能的不衕合衕和獨特的術語,但它仍然很容易理解和驗證。
MakerDAO 中的金庫功能由Join合約管理。
每個被批準作爲抵押資産的代幣都有一個單獨的合約。
相反,MakerDAO 不擁有任何借貸資産 DAI。
而它隻是根據需要來鑄造和銷毀 DAI。
會計在 vat.sol 合約內處理。當抵押品進入或退出繫統時,連接會更新此合約。如果用戶借款,他們會直接與 vat.sol 合約進行交互。
此操作會更新用戶的債務餘額,併允許他們在 DAI Join 中鑄造 DAI。
爲了償還,用戶在 DAI Join 中銷毀 DAI。然後,此過程會更新增值稅,讓用戶得以結清貸款。
此外,vat.sol 合約還充當風險管理引擎。它維持全球借貸限額,設定每個用戶的最低閾值,併監督抵押比率。
當用戶的債務或抵押品餘額髮生變化時,vat.sol 合約會評估利率和現貨。
這些是指基於所使用的抵押品和現行 DAI 與抵押品價格比率的利率。值得註意的是,這些值由其他 MakerDAO 合約輸入到 vat.sol 合約中,這種方法與大多數其他應用程序不衕。
MakerDAO 在設計階段就以安全性爲首要考慮因素——當時Gas成本等因素是次要的,用戶體驗是次要問題,競爭也可以忽略不計。
因此,它可能會顯得格格不入、使用成本高昂且難以駕馭。
然而,它管理這龐大資産併爲沒有重大違規行爲的運營記録,這些凸顯了其穩健的設計和執行。
其要點有:
Yield v1 是使用 YieldSpace 的固定利率的概念證明。該版本在 MakerDAO 之上構建了其抵押債務引擎。然而,Yield v1 使用起來費用既高昂又難以通過新功能進行增強。
認識到 YieldSpace 的潛力後,我們迅速轉曏開髮 Yield v2。 Yield v2 仍源自於MakerDAO 的靈感,但現已完全獨立,於2021年10月推出; Yield v2 優先考慮降低 Gas 成本併增強用戶體驗。
Yield v2 中的借貸流程深受 MakerDAO 影響
所有會計、風險管理和抵押核對都合併到The Cauldron這一份合約中。效仿 MakerDAO 的方法,我們將財務功能分布在 Join 合約中,每個合約專用於一項特定資産。
我們改進了預言機集成,將價格和利率預言機合併到一個通用界麵中。我們反轉了 MakerDAO 的預言機流程,以便 Cauldron 根據抵押核對的需求查閲預言機。據我所知,這是除 MakerDAO 之外的所有地方的首選流程。
與 MakerDAO 方法的很不相衕的另一方麵是我們引入了 Ladle。該合約用作用戶和 Yield 之間的唯一中介。它對財務和會計擁有廣泛的控製權,但反過來,它讓功能開髮更加靈活。
總的來説,Yield v2 中的借貸工作原理如下:
Compound 的第一個版本是概念驗證(Proof-of-Concept),錶明可以在以太坊上建立貨幣市場。因此,其設計優先考慮簡單性。MoneyMarket.sol 合約包含所有功能,包括借貸。
Compound v1 中的借用過程簡單而有效
2019年5月,Compound v2 上線,推動流動性挖礦時代蓬勃髮展,激髮了無數分叉。它也起到貨幣市場的作用,允許用戶借出和借入資産。
根據其白皮書和結構,顯然,Compound v2 的主要目標是使用 ERC20 標準來錶示借貸頭寸。這確保了可組合性,允許用戶借給Compound,然後在其他區塊鏈應用程序中使用這些計息頭寸。
值得註意的是,白皮書併沒有強調 Compound v2 將獎勵納入其智能合約中。鑒於這一遺漏,可能無法預見該功能的巨大影響。
Compound v2 中的借用過程。首次涉足代幣化借貸頭寸。
Compound v3 於2022年髮布,採用了更爲保守的風險管理策略,將流動性隔離到每個可借資産的池中。該設計還展現了對人性化和Gas成本的擔憂。
Compound v3 (Comet) 中的借貸過程。回歸到基礎,回歸到安全性。不過,有了更好的用戶體驗。
由於所需調用次數的減少,該繫統對於開髮人員和用戶來説都更加直觀。此外,單一合約設計通過最大限度地減少合約之間的調用來降低Gas成本。隔離的貨幣市場是對基於預言機的攻擊的防禦,這現在是一個主要的安全問題。
髮行説明中提到的其他相關功能包括:
有趣的是,Compound v3 鏡像了Compound v1 的架構,讓單個合約處理每個可借資産的所有功能。其他值得註意的功能有:
禁止借貸抵押品提高了抵押品存入者的安全性。這降低了治理錯誤或故意攻擊危及抵押品的可能性。
Compound 設法在 v2 中積纍了大量流動性,消除所提供抵押品的回報可能就是由此造成的結果。我的直覺是,在Compound v2 中,借貸限額要麽低於或不高於用戶借給應用程序的資産。
假設他們將管理 v3 類似水平的流動性,禁止借出抵押品可以使應用程序安全,這是 v3 的核心目標之一。
從架構的角度來看:
2019年10月,Aave v1 得以推出,接替了 ETHLend。Aave v1 引入了共享流動性池,而不是 ETHLend 的點對點方法。
Aave v1 中的借用過程。彙集流動性意味著財務和計算效率。
與 Yield v2 一樣,傳輸合約也包含業務邏輯。LendingPoolCore 實現了會計、風險管理和金庫功能。與Compound v2的不衕之一是,它將資金集中在一個合約中。
將抵押核對留在自己的合約中(從傳輸而不是會計合約調用)的決定似乎容易受到影響,但它可能適合預期使用,因爲 Aave v2 在 v1 髮布兩年後才髮布。
Aave v2 於2021年12月髮布。雖然它保留了與 Aave v1 類似的功能,但與 Aave v1 和 Compound v2 相比,它引入了改進且更簡單的架構。在此版本中,Aave 還引入了 aToken(類似於Compound 的 cToken)和 vToken,它們代錶代幣化債務。
Aave v2 具有非常幹凈的架構,是完全代幣化的。
爲了簡單起見,本文省略了 Aave v1 中具有有限使用的某些功能。Aave v1 中的問題(例如應計利息的覆雜錶示)已在 Aave v2 中得到解決。
2023年1月,Aave v3 得以髮布。它具有多鏈支持和其他功能。這些新增功能不會改變核心架構。此次更新還改進了風險管理併提高了Gas效率。
盡管更新帶來了許多進步,但就本研究而言,Aave v3 與 Aave v2 併沒有本質上的不衕。事實上,這可能錶明 Aave v2 的架構在2023年仍然保持穩健。
2022年12月,Euler 得以推出,旨在爲貨幣市場提供非許可的功能和最少的治理幹預。
其設計標識爲一個鑽石形圖案。單個合約擁有應用程序的所有存儲空間。該存儲可以通過不衕的代理進行訪問,每個代理管理繫統的不衕概念元素。
盡管一份合約存儲了所有資産、會計和風險管理數據,但仍然有用於抵押品和借貸的 eToken,以及用於債務的 dToken,類似於 Aave v2。然而,這些代幣合約僅僅是中央存儲合約的視圖。
對代碼的分析錶明,其首要任務爲最小的Gas成本,從而導緻整體設計無需合約間調用。嚴格的測試和審核確保了安全性。隻有邏輯分布在各個模塊中,作爲存儲合約的實現,存儲合約主要充當代理合約。
這種統一的設計還支持輕鬆升級。如果不需要更改存儲,則可以快速更換模塊以修改或引入功能。
在髮布15個月後以及在升級引入該漏洞後的6個月後,Euler 遭到了黑客攻擊。
我不認爲單一架構在資産流失中髮揮了作用;相反,這是由於對代碼更新的監督不夠造成的。
完成了辛苦的工作後,讓我們回顧一下我們學到的東西
MakerDAO、Compound 和 Aave 等早期以太坊應用程序展現了以太坊超額抵押借貸方麵的潛力。一旦這些概念驗證被證明是成功的,重點就轉移到引入一繫列新功能以占領市場份額的方曏上。Compound 和 Aave 的後續版本引入了流動性挖礦、可組合性和集合流動性,這些技術在牛市條件下髮展尤其強勁。
産生的一個重大髮展是,Compound v2 引入了代幣化借貸頭寸,這使得這些頭寸能夠被其他應用程序識別爲標準資産。Aave v2 和 Euler 通過實施代幣化債務頭寸取得了更大的進步,其更廣泛的效用仍然是一個受到爭論的話題。
高 Gas 成本成爲牛市期間的主要問題,促使用戶體驗髮生變化,如 Yield v2、Aave v2 和 Euler 所示。傳輸合約和單一實施有助於降低用戶的交易成本。然而,這是以更覆雜、由此而具有更大風險的代碼爲代價的。
Compound v3 似乎開創了先例,將安全性置於財務效率之上。它偏離了傳統的流動性池模型,以更好地防範潛在的黑客攻擊。第2層網絡的興起(其中越來越可以忽略不計 Gas 成本)可能會對未來抵押借貸應用程序的設計造成影響。
在本文中,我全麵概述了以太坊上的重要抵押借貸應用程序。我用來分析每個借貸申請的方法也可以用於快速破解其他抵押借款申請的覆雜性。
在開髮區塊鏈借貸應用程序時,請始終將資産的存儲、會計記録的放置以及風險和抵押品評估的方法納入考慮。當您考慮這些註意事項時,您可使用以前應用程序的歷史記録以及本概述中的見解來爲助力您做出明智的決策。
感謝您的閲讀,祝您好運。
感謝 Calnix 幫助審閲和編輯本文。
借貸是基於以太坊的區塊鏈應用的基石。由於有數十億資産被借出,了解借貸的運作方式對於開髮商、建築師或研究人員來説至關重要。
就像編程範式的演變一樣,這些 DeFi 應用程序也髮展演變了不衕的架構設計,反映了它們的註重點從安全性到效率和用戶體驗等不斷變化。
本文的分析著眼於 MakerDAO、Compound、Aave、Euler 和 Yield 等應用程序的架構。我們將重點介紹重要的創新和設計模式,它們將爲未來貸款應用程序開髮提供重要的經驗。
如果您是開髮人員、架構師或安全研究人員,那麽您適合閲讀本文內容。通過本文,您將輕鬆了解以太坊上的新借貸應用程序,快速而全麵地掌握其架構,併深入了解這些 DeFi 巨頭是如何從頭開始構建的。
大多數 DeFi 借貸都是超額抵押的。如果用戶提供的抵押品價值高於借款的價值,則用戶可以借入特定資産。與傳統貸款不衕,許多此類借款沒有定期還款或固定結束日期。從本質上講,你可以借,併一直不還。
但是,有一個不明顯的問題。
抵押品的價值必鬚始終超過借款價值預定的幅度。
如果抵押品價值低於此值,借款將被清算。
在清算期間,其他人償還您的部分或全部借款,併且他們會收到您的部分或全部抵押品作爲回報。
遵循這種財務結構的所有借款申請都需要相衕的構建塊,然後可以通過多種方式得到安排:
MakerDAO 中的借貸流程。所有應用程序都有相衕的步驟和功能。
借貸可以被視爲是獨立的功能。在 DeFi 中,我們在大多數借貸應用程序中都髮現了這兩種功能,但它們併不總是能夠很好地集成。
在Compound中,Aave和Euler就是這樣。借款人和貸款人的利率是內部相關的;事實上,這就是使這些應用程序以最少的幹預運行的原因。
相反,MakerDAO 和 Yield 是他們借給借款人的資産的髮起者。
他們不要求用戶提供資産以便其他用戶可以借用。
本文將重點討論鏈上借貸,併在很大程度上不會討論出借服務。由於抵押要求,借貸要覆雜得多,併且了解借貸模式通常有助於更好地理解整個協議。
MakerDAO Logo
在以太坊中,MakerDAO 是歷史悠久的名稱了。 它於2019年11月以當前形式推出,持有$49.5億的抵押品。盡管其模塊化架構具有針對每個功能的不衕合衕和獨特的術語,但它仍然很容易理解和驗證。
MakerDAO 中的金庫功能由Join合約管理。
每個被批準作爲抵押資産的代幣都有一個單獨的合約。
相反,MakerDAO 不擁有任何借貸資産 DAI。
而它隻是根據需要來鑄造和銷毀 DAI。
會計在 vat.sol 合約內處理。當抵押品進入或退出繫統時,連接會更新此合約。如果用戶借款,他們會直接與 vat.sol 合約進行交互。
此操作會更新用戶的債務餘額,併允許他們在 DAI Join 中鑄造 DAI。
爲了償還,用戶在 DAI Join 中銷毀 DAI。然後,此過程會更新增值稅,讓用戶得以結清貸款。
此外,vat.sol 合約還充當風險管理引擎。它維持全球借貸限額,設定每個用戶的最低閾值,併監督抵押比率。
當用戶的債務或抵押品餘額髮生變化時,vat.sol 合約會評估利率和現貨。
這些是指基於所使用的抵押品和現行 DAI 與抵押品價格比率的利率。值得註意的是,這些值由其他 MakerDAO 合約輸入到 vat.sol 合約中,這種方法與大多數其他應用程序不衕。
MakerDAO 在設計階段就以安全性爲首要考慮因素——當時Gas成本等因素是次要的,用戶體驗是次要問題,競爭也可以忽略不計。
因此,它可能會顯得格格不入、使用成本高昂且難以駕馭。
然而,它管理這龐大資産併爲沒有重大違規行爲的運營記録,這些凸顯了其穩健的設計和執行。
其要點有:
Yield v1 是使用 YieldSpace 的固定利率的概念證明。該版本在 MakerDAO 之上構建了其抵押債務引擎。然而,Yield v1 使用起來費用既高昂又難以通過新功能進行增強。
認識到 YieldSpace 的潛力後,我們迅速轉曏開髮 Yield v2。 Yield v2 仍源自於MakerDAO 的靈感,但現已完全獨立,於2021年10月推出; Yield v2 優先考慮降低 Gas 成本併增強用戶體驗。
Yield v2 中的借貸流程深受 MakerDAO 影響
所有會計、風險管理和抵押核對都合併到The Cauldron這一份合約中。效仿 MakerDAO 的方法,我們將財務功能分布在 Join 合約中,每個合約專用於一項特定資産。
我們改進了預言機集成,將價格和利率預言機合併到一個通用界麵中。我們反轉了 MakerDAO 的預言機流程,以便 Cauldron 根據抵押核對的需求查閲預言機。據我所知,這是除 MakerDAO 之外的所有地方的首選流程。
與 MakerDAO 方法的很不相衕的另一方麵是我們引入了 Ladle。該合約用作用戶和 Yield 之間的唯一中介。它對財務和會計擁有廣泛的控製權,但反過來,它讓功能開髮更加靈活。
總的來説,Yield v2 中的借貸工作原理如下:
Compound 的第一個版本是概念驗證(Proof-of-Concept),錶明可以在以太坊上建立貨幣市場。因此,其設計優先考慮簡單性。MoneyMarket.sol 合約包含所有功能,包括借貸。
Compound v1 中的借用過程簡單而有效
2019年5月,Compound v2 上線,推動流動性挖礦時代蓬勃髮展,激髮了無數分叉。它也起到貨幣市場的作用,允許用戶借出和借入資産。
根據其白皮書和結構,顯然,Compound v2 的主要目標是使用 ERC20 標準來錶示借貸頭寸。這確保了可組合性,允許用戶借給Compound,然後在其他區塊鏈應用程序中使用這些計息頭寸。
值得註意的是,白皮書併沒有強調 Compound v2 將獎勵納入其智能合約中。鑒於這一遺漏,可能無法預見該功能的巨大影響。
Compound v2 中的借用過程。首次涉足代幣化借貸頭寸。
Compound v3 於2022年髮布,採用了更爲保守的風險管理策略,將流動性隔離到每個可借資産的池中。該設計還展現了對人性化和Gas成本的擔憂。
Compound v3 (Comet) 中的借貸過程。回歸到基礎,回歸到安全性。不過,有了更好的用戶體驗。
由於所需調用次數的減少,該繫統對於開髮人員和用戶來説都更加直觀。此外,單一合約設計通過最大限度地減少合約之間的調用來降低Gas成本。隔離的貨幣市場是對基於預言機的攻擊的防禦,這現在是一個主要的安全問題。
髮行説明中提到的其他相關功能包括:
有趣的是,Compound v3 鏡像了Compound v1 的架構,讓單個合約處理每個可借資産的所有功能。其他值得註意的功能有:
禁止借貸抵押品提高了抵押品存入者的安全性。這降低了治理錯誤或故意攻擊危及抵押品的可能性。
Compound 設法在 v2 中積纍了大量流動性,消除所提供抵押品的回報可能就是由此造成的結果。我的直覺是,在Compound v2 中,借貸限額要麽低於或不高於用戶借給應用程序的資産。
假設他們將管理 v3 類似水平的流動性,禁止借出抵押品可以使應用程序安全,這是 v3 的核心目標之一。
從架構的角度來看:
2019年10月,Aave v1 得以推出,接替了 ETHLend。Aave v1 引入了共享流動性池,而不是 ETHLend 的點對點方法。
Aave v1 中的借用過程。彙集流動性意味著財務和計算效率。
與 Yield v2 一樣,傳輸合約也包含業務邏輯。LendingPoolCore 實現了會計、風險管理和金庫功能。與Compound v2的不衕之一是,它將資金集中在一個合約中。
將抵押核對留在自己的合約中(從傳輸而不是會計合約調用)的決定似乎容易受到影響,但它可能適合預期使用,因爲 Aave v2 在 v1 髮布兩年後才髮布。
Aave v2 於2021年12月髮布。雖然它保留了與 Aave v1 類似的功能,但與 Aave v1 和 Compound v2 相比,它引入了改進且更簡單的架構。在此版本中,Aave 還引入了 aToken(類似於Compound 的 cToken)和 vToken,它們代錶代幣化債務。
Aave v2 具有非常幹凈的架構,是完全代幣化的。
爲了簡單起見,本文省略了 Aave v1 中具有有限使用的某些功能。Aave v1 中的問題(例如應計利息的覆雜錶示)已在 Aave v2 中得到解決。
2023年1月,Aave v3 得以髮布。它具有多鏈支持和其他功能。這些新增功能不會改變核心架構。此次更新還改進了風險管理併提高了Gas效率。
盡管更新帶來了許多進步,但就本研究而言,Aave v3 與 Aave v2 併沒有本質上的不衕。事實上,這可能錶明 Aave v2 的架構在2023年仍然保持穩健。
2022年12月,Euler 得以推出,旨在爲貨幣市場提供非許可的功能和最少的治理幹預。
其設計標識爲一個鑽石形圖案。單個合約擁有應用程序的所有存儲空間。該存儲可以通過不衕的代理進行訪問,每個代理管理繫統的不衕概念元素。
盡管一份合約存儲了所有資産、會計和風險管理數據,但仍然有用於抵押品和借貸的 eToken,以及用於債務的 dToken,類似於 Aave v2。然而,這些代幣合約僅僅是中央存儲合約的視圖。
對代碼的分析錶明,其首要任務爲最小的Gas成本,從而導緻整體設計無需合約間調用。嚴格的測試和審核確保了安全性。隻有邏輯分布在各個模塊中,作爲存儲合約的實現,存儲合約主要充當代理合約。
這種統一的設計還支持輕鬆升級。如果不需要更改存儲,則可以快速更換模塊以修改或引入功能。
在髮布15個月後以及在升級引入該漏洞後的6個月後,Euler 遭到了黑客攻擊。
我不認爲單一架構在資産流失中髮揮了作用;相反,這是由於對代碼更新的監督不夠造成的。
完成了辛苦的工作後,讓我們回顧一下我們學到的東西
MakerDAO、Compound 和 Aave 等早期以太坊應用程序展現了以太坊超額抵押借貸方麵的潛力。一旦這些概念驗證被證明是成功的,重點就轉移到引入一繫列新功能以占領市場份額的方曏上。Compound 和 Aave 的後續版本引入了流動性挖礦、可組合性和集合流動性,這些技術在牛市條件下髮展尤其強勁。
産生的一個重大髮展是,Compound v2 引入了代幣化借貸頭寸,這使得這些頭寸能夠被其他應用程序識別爲標準資産。Aave v2 和 Euler 通過實施代幣化債務頭寸取得了更大的進步,其更廣泛的效用仍然是一個受到爭論的話題。
高 Gas 成本成爲牛市期間的主要問題,促使用戶體驗髮生變化,如 Yield v2、Aave v2 和 Euler 所示。傳輸合約和單一實施有助於降低用戶的交易成本。然而,這是以更覆雜、由此而具有更大風險的代碼爲代價的。
Compound v3 似乎開創了先例,將安全性置於財務效率之上。它偏離了傳統的流動性池模型,以更好地防範潛在的黑客攻擊。第2層網絡的興起(其中越來越可以忽略不計 Gas 成本)可能會對未來抵押借貸應用程序的設計造成影響。
在本文中,我全麵概述了以太坊上的重要抵押借貸應用程序。我用來分析每個借貸申請的方法也可以用於快速破解其他抵押借款申請的覆雜性。
在開髮區塊鏈借貸應用程序時,請始終將資産的存儲、會計記録的放置以及風險和抵押品評估的方法納入考慮。當您考慮這些註意事項時,您可使用以前應用程序的歷史記録以及本概述中的見解來爲助力您做出明智的決策。
感謝您的閲讀,祝您好運。
感謝 Calnix 幫助審閲和編輯本文。