如果想在未來讓更龐大的群體進入加密世界並依賴 DeFi,安全性是首要考慮的因素。

作者: Ac_CoreYBB Capital Researcher

字數:本文超 7000 閱讀時長: 15 minute

前言

Oracle(預言機)是 DeFi 世界中的一個重要因素,雖然不同協議的安全性通常是由底層智慧合約網路來繼承,但它的正常運行還是需要依賴預言機,如果一個協定的預言機遭受到攻擊或者破壞,那麼整個協定就會被操控。 近期新的 DeFi 創造者們正通過構思全新的借貸和衍生品架構來製造新的敘事,而這些協定的變化相同點是不再去依賴預言機。

DeFi 的風險與修復

DeFi 的最大魅力來自於:去中心化,它從廣義來講是一種無許可權支付協議的開放式金融系統,與傳統金融相比,它的規則、利潤甚至風險雖都以較為 “隱晦” 的方式公開,但仍具有非常強的開放度。

但經過幾年的發展,DeFi 領域也累計遭到了數十億美元的盜竊 [1],即使最為狂熱的信徒也會不斷質疑它是否能成為未來金融的主流。 其中僅在 2022 年駭客通過 DeFi 協定和跨鏈橋盜取的資金就超過了 38 億美元,也是加密史中盜竊金額最多的一年。 如果想在未來讓更龐大的群體進入加密世界並依賴 DeFi,安全性是首要考慮的因素。

圖源:Chainalysis

Oracle 的風險和 “源碼”

Nascent 認為「無 Oracle 協定」的概念將為 DeFi 從根本上提供更加穩健和安全的技術架構。 如今 DeFi 更希望將自身定義為「源碼(Primitives)」,希望有更多的團隊在它們的基礎之上構建產品或組合協定。 一旦該合約摻雜了任何外部依賴,它們就會繼承所有的相關風險,與此同時,該合約為了承載更為龐大的系統生態,會去升級,而這種管理式的升級變數就會涉及到可變更環境的當下及未來,帶來更多風險因素。 顧名思義 Oracle 的引入產生了外部數據的依賴關係,而這種關係會帶來潛在風險。 為此 Dan Elitzer 提出了一個全新的定義:為符合源碼(Primitives)的條件,除了部署在區塊鏈上的合約之外它不能依賴任何外部因素,比如:沒有治理、合約可升級性和預言機。

但現實是如今符合這一基本定義的 DeFi 協定是非常稀有的,其中最有代表性的是 Uniswap V1,但從安全性角度考慮,即使是與上述 Dan Elitzer 提出的定義保持一致的 Uniswap V2 與 V3 也不符合資格,因為它們允許對某些功能進行治理,例如協定費用的閉合與引入池子的費用層級。

話雖如此,這種狹隘的治理功能並沒有因其他協定中存在的大規模升級而引發系統性風險,所以迄今為止所有版本中的 Uniswap 取得巨大成功的原因是沒有 Oracle 和全鏈這兩個關鍵因素。

毋庸置疑 Uniswap 是去中心化交易的主導者,它取得了巨大的成功,並在此基礎之上誕生出了很多去中心化交易所的實驗。 好比 Uniswap V3 引入了非同質化流動性頭寸的概念,讓流動性提供者(LPs)可以將他們的流動性集中在某個特定範圍內,這使 LPs 可以捕獲在該範圍內交易產生的更大份額交易費,並從中獲利,但隨著價格波動這裡也會產生無償損失。 從而導致了資本更高效的使用和市場中 LP 部分的專業化,隨即誕生了一系列頭寸管理工具,例如 Arrakis、Gamma 和 Sommelier。 雖然這對 DEXs 來說非常友好,但借貸協定仍需要預言機。

時間來到今年 3 月,Euler Finance 借貸協定遭受駭客攻擊,損失金額高達 2 億美元。 它可以讓用戶發佈抵押品並借款,且有一些獨特功能。 簡而言之它的問題發生在一個特定函數中且沒有對它進行安全檢查,使用戶能破壞借貸市場的基本不變式。 此次攻擊事件的詳細過程請閱讀 [2]。

對於借貸協議來說,合格的抵押品僅限於有可靠預言機價格反饋的資產。 貸款參數(如貸款價值比 [3])受其協定管理,因此任何壞賬都由協定而非單個貸款人負責。 同樣,依賴於預言機進行定價的衍生品協定如缺乏內部價格發現機制,容易受到價格滯後無更新影響,從而嚴重限制它們的規模和用戶體驗。 如同前言所述,這也正好解釋了為什麼交易員 Avraham Eisenberg 能夠成功攻擊 Mango Markets 並從該加密貨幣交易平臺抽走 1.16 億美元。

為什麼目前 Uniswap 是安全的

AMM 可以具有任何 DeFi 源碼(Primitives)中最簡單的基本不變式:tokenBalanceX * tokenBalanceY == k(如常數乘積)。 例如 Uniswap V2 中 Pair 介面都是基於以下四個函數不變式實現的:

Mint:添加到 k;

Burn:從 k 中減去;

Swap:移動 x 和 y,保持 k 不變;

Skim:重新調整 tokenBalanceX * tokenBalanceY,使其等於 k。

Uniswap V2 的安全之道:一個簡單的核心不變式,所有函數都為此服務。 唯一值得爭議的是它可以切換費用開關的治理模式,但這不會觸及核心不變式,只是影響代幣餘額擁有權的分配,也正是由於他們在安全性中的這種簡潔性(不可升級的智能合約和基本不變式),Uniswap 本身從未遭受過駭客攻擊。

重建貸款協定

圖源:作者 Balakov

近期我們發現對無預言機的借貸協議出現了很多專案,例如 Ajna、Ethereum Credit Guild、MetaStreet 的自動化分層協定(Automated Tranche Maker)以及 Blur 和 Paradig 合作推出的混合協定 Blend [4]。

與傳統的 DeFi 借貸市場不同,Gauntlet 沒有設置抵押,也沒有像 Chainlink 這樣的單通用預言機為所有使用者和協定功能提供「真實」資產價格來源。 相反借款人需要評估風險,並決定從借款人那裡要求一定的抵押品,且必須在資產價格變動時更新他們的借款標準。 其工作方式一般來講是借款人選擇他們願意接受的指定抵押品,例如 BAYC Token 以及個別的 Bored Ape NFT 等,他們願意提供給借款人用作抵押品的引用資產(如 USDC),以及他們將要求借款人被清算的引用資產與抵押資產的比例。 最後借款人可以發佈抵押品,並以當前市場利率借入引用資產。

需要注意的是,由於借貸雙方已經同意貸款的清算是根據每種資產的單位數量而不是美元價格的比率來確定,因此並不需要預言機。 然而,如果任一資產的相對美元價值發生變化,貸款人將調整當下或未來貸款的條款,以達到他們認為安全的抵押比例。

這些方法的最大優勢為:協議在實際上是無法破產的。 這是因為每個貸款人最終都要對自己貸款的償付能力負責,因此不存在 “ 壞賬 ” 的概念,而這種 “ 壞賬 ” 可能要由 DAO 金庫/保險基金來承擔,或在貸款人之間進行處理。

Blur 的 Blend 混合協定假定「存在能夠參與複雜的鏈上和鏈下協議、評估風險並使用自有資金的更複雜的貸款人」。 這在 Blur 作為專業 NFT 交易者的主要交易場所的背景下是有道理的,但對於普通用戶來說,這似乎比在 Aave 或 Compound 上借貸要複雜得多。

無 Oracle 的新面孔

根據 Messari 研究員 Chase Devens 的定義,無預言機的定義架構可以分為兩類,即點對點(Peer-to-Peer)和基於 AMM 的混合類型。 其中它們兩者的主要特點如下:

  • 點對點

支援任何的鏈上抵押品類型

使用者承擔貸款參數並承擔壞賬風險(不再是合約承擔風險),借款人不再定義利率和 LTV 參數,而是自己決定價值比較,並且從協定的機制中移除預言機意味著這些貸款可以由任何鏈上抵押品創建。

需要對倉位進行積極管理,為確保提供的流動性得到有效利用,用戶必須以類似於 Uniswap V3 的集中流動性位置的方式積極管理他們的倉位。

  • 基於 AMM 的混合類型(借貸/衍生品—LPs 流動性提供者)

支援任何的鏈上抵押品類型

底層 LP 位置為清算和衍生合約提供定價數據,同時也是清倉主要市場。 使協議能夠從其底層流動性池中計算清算和衍生合約的結果,從本質上講,LP 位置自身就像一個預言機。 此外,這些 LP 位置在清算或合約到期期間提供了一種主要市場,用於卸載協議庫存,而不需要到外部平臺清算抵押品。

舉例說明:

Ajna.finance

Ajna 是一種專為 EVM 而設計的借貸協議,沒有治理、許可權或外部價格供給(預言機)。 可以用它來借貸我們的整個投資組合(包括 NFT)。 其他貸款類專案已達到規模臨界值的兩個核心問題:(1)代幣治理系統不足以分析複雜的風險(2)使用外部價格反饋(預言機)將資產範圍限制為具有流動性二級市場的 “藍籌股”。 這些缺陷給 DeFi 借貸市場造成了災難性損失,並限制了對新資產的支援能力。 Ajna 通過一些關鍵創新解決了這些問題:

(1)貸款方提供資產定價: 當貸款人使用 Ajna 協定時,他們會告訴合約以多少價格抵押資產的意願。 這有效地讓他們輸入自己的生命周期價值,並將其從治理參數轉變為市場參數;

(2)自動利率發掘: 在每個 Ajna 市場中,都有一個由內部指標決定的均衡狀態。 如果市場失衡,任何人都可以每 12 小時改變 10% 的匯率。 如果沒有,則不做任何改變;

(3)清算保證金: 由於 Ajna 沒有預言機,它依賴使用者告訴它何時清算貸款。 這是通過讓清算人繳納保證金以觸發清算來實現的。 如果他們誠實,他們就會得到回報。 如果沒有,他們就會受到懲罰。

那麼有什麼意義呢? 這些創新使 Ajna 能夠為「整個」生態系統提供服務。 任何人都可以用任何資產(甚至是 NFT)創建借貸市場。 不再費力地完成的治理流程且不再擔心流動性、二級市場和預言機。

Blend

圖源:Achal Srinivasan , Kirby

Blend 是一種點對點的永久借貸協議,支援包括 NFT 的任何抵押品。 它通過複雜的鏈下報價協定將有借款意向的用戶與願意提供有競爭優勢利率的貸款人進行匹配。

默認情況下,Blend 貸款的利率是固定的,而且永遠不會過期。 借款人可以隨時還款,而貸款人可以通過觸發荷蘭拍賣,以新的利率尋找新的貸款人,從而退出其頭寸。 如果拍賣失敗,借款人將被清算,貸款人將佔有抵押品。 整體具有不依賴預言機、無期限、可流動、點對點這四大特性:

  • 無預言機

很多 DeFi 協定需要預言機來確定清算頭寸或確定利率的時機,以 NFT 為例它的價格很難被客觀衡量,及時的地板價更新在鏈上也是非常難被觀測,這種解決方案通常需涉及到受信任的一方或交易操縱。 而混合協定避免了核心協定中的任何預言機依賴,讓利率和貸款比由貸款人意願條件來決定,最後清算由荷蘭拍賣的失敗而觸發;

  • 無期限

一些 DeFi 協定只支援有期限的債務頭寸。 這對借款人來說很不方便,他們需要在到期前記得關閉或調整頭寸(否則可能面臨懲罰,如沒收 NFT)。 手動調整頭寸的過程還需要消耗 Gas,這也減少了借貸所產生的收益。 只要有貸款人願意根據抵押品借出這筆金額,Blend 便會自動調整借款頭寸,只有在利率變動或其中一方想要退出頭寸時才需要進行鏈上交易;

  • 可流動

有些協定不支援到期前清算,這樣對借款人來說較為方便,並且在很多用例下是合理的。 但這實際上是給借款人一個看跌期權,對放款人來說需要在較短的到期時間內從較高的利率/較低的貸款中做出選擇,以避免頭寸被清算的風險。 在 Blend 中,只要貸款人觸發再融資拍賣,在沒有人願意以任何利率接手債務的情況下,就可以對 NFT 進行清算;

  • 點對點

其中一些協定是將貸款人的資金集中在一起,並試圖為他們管理資產。 這意味著會嚴重依賴鏈上管理或集中式管理來設置參數。 Blend 採用了點對點的模式,且每筆貸款都是單獨匹配,它沒有優化貸款方式的簡單性而是以假定存在更複雜的借款人能力參與到複雜的鏈上和鏈下協議的情況下完成,從而有更大的許可權來掌握自己的資產。

什麼是 FREI-PI 模式

根據 Nascent 成員 Brock Elmore 解釋的 FREI – PI 模式為:“功能需求-影響-交互-協定不變式(Function Requirements-Effects-Interactions + Protocol Invariants pattern)”,這裡以 dYdX 的 SoloMargin 合約(原始程式碼)為例, 這是一個借貸市場和槓桿交易的合約,即為 FREI-PI 模式的絕佳範例。 這是早期借貸市場中唯一沒有任何市場相關漏洞的借貸市場。

檢視下面代碼時注意以下的抽象概念:

輸入要求(_verifyInputs)

操作(data transformation, state manipulation)

狀態要求(_verifyFinalState)

圖源:Brock Elmore

這裡常用的檢查 – 效果 – 交互(Checks-Effects-Interactions)仍在執行。 但需要注意的是,帶有附加 Checks 的 Checks-Effects-Interactions 並不等同於 FREI-PI ,雖然它們相似但服務的是不同目標。 為此開發人員應該理解它們的不同: FREI-PI 是針對協定安全的高級抽象,而 CEI 則是針對功能安全的高級抽象。

該合約結構有趣的地方是使用者可按自己的意願連續執行多項操作,包括:存款、借貸、交易、轉帳、清算等。 我們假設存入 3 種不同的 Token,且取出第 4 種 Token 並清算帳戶,這一系列操作只需一鍵即可完成。

這就是 FREI-PI 的強大之處:只要核心借貸市場不變式在調用結束時成立,使用者就可以在協定內做任何想做的事情。 對於本合約,這將在 _verifyFinalState 中執行,檢查每個受影響帳戶的抵押情況,確保協定比交易開始時更好。

該函數中還包含一些額外的不變式,它們是核心不變式的補充,有助於實現關閉市場等輔助功能,但真正保證協定安全的是核心檢查。

其中以實體為中心的概念是 FREI-PI 的另一個難題,用借貸市場和假定的核心不變式為例:使用者不能採取任何行動讓任一帳戶陷入不安全的抵押品狀態。 從技術角度講這不是唯一的不變式,但對用戶來說是唯一不變量(可理解為仍是核心協定不變式,因為使用者不變式就是核心協定不變式)。 在借貸市場中通常還會有兩個額外的不變式:

1. 預言機

一般來說 Chainlink 是一個不錯的選擇,它的主要功能是提供準確和相對準確的實時資訊,這可以滿足大多數不變式的要求。 在極少數被操縱或意外情況下,為保證準確性而降低即時性的保障措施可能是有益的(如檢查最後已知值是否比當前值大數百個百分點)。 不過 Cream Finance 還是出現了 1.3 億美元的攻擊。 關於更多預言機的資訊請參考:操縱 Uniswap V3 TWAP 預言機 [5];

2. 治理

治理是最棘手的不變式,因為它難以受到條件約束且大部分作用是改變其他的不變式,且某些治理在操作時無法通過 FREI-PI 進行驗證。 以 Compound 在 2022 年 8 月發生的破壞 cETH 市場的治理操作為例,此次升級違反了預言機的不變式,內容詳情閱讀 [6]。

在實際中,每個額外的不變式都使得協定變得更加難以保護,所以應當越少越好。 因此複雜是危險的,而最重要的不變式就是協定核心的不變式,但如上文所述也會存在一些以實體為中心的不變式,這些不變式必須滿足核心不變式的要求,最簡單/最小的不變式集合可能是安全的。

小結:DeFi 的未來

將 DeFi 建立在不可升級的源碼(Primitives)之上且脫離預言機是最優的解決方案嗎? 畢竟目前 DeFi 協定依靠治理、可升級性和預言機而帶來的靈活性和易用性也讓整個市場規模達到了數千億美元。 據 Nascent 成員 Dan Elitzer 的觀點:治理、可升級與預言機它們在本質上也並非是不好的,相反這些元素在更廣義的環境下都具有非常大的實際價值,但這也會增加協定的攻擊概率。

在根據需求更新功能或改進效率的前提下,源碼(Primitives)本身也是可以被偶爾替換的。 在選擇如何創建 DeFi 協定時將會面臨著兩個重要的選擇:將所有使用者的數據和外部條件的依賴交給較為中心化的單一協定,並委託給一小部分願意參與治理的 Token 持有者? 還是重視市場中每個參與者的擁有權,讓使用者自己決定協議和服務商?

整個行業的參與者和開發者都致力於建設更為去中心化、無許可、高組合性的 DeFi,以此提升整個行業的安全性和彈性。 關於 DeFi 未來的發展方向,我們希望它能以更為安全和高效的運行方式不斷佔領傳統金融的市場份額。

解釋及參考文獻:

[1] https://rekt.news/leaderboard/ 

[2] https://medium.com/@omniscia.io/euler-finance-incident-post-mortem-1ce077c28454 

[3] https://www.investopedia.com/terms/l/loantovalue.asp 

[4] https://www.paradigm.xyz/2023/05/blend 

[5] https://github.com/euler-xyz/uni-v3-twap-manipulation/blob/master/cost-of-attack.pdf 

[6] https://medium.com/chainlight/the-suspension-of-compound-finances-ceth-market-causes-and-solutions-b106c2e1c922

https://www.nascent.xyz/idea/youre-writing-require-statements-wrong

https://www.nascent.xyz/idea/why-defi-is-broken-and-how-to-fix-it-pt-1-oracle-free-protocols

免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 本文內容僅用於資訊分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。