一文讀懂ERC-4626:DeFi代幣化保險庫的新標准

2023-06-15 00:06:19

原文作者:Sina Pilehchiha

原文 編譯:深潮 TechFlow

TLDR: ERC-4626 是用於代幣化保險庫 (Vault) 的標准。

在引入 ERC-4626 之前,每個保險庫都有其各自的規範和實現細節。這使得集成變得困難、容易出錯且浪費資源。

ERC-4626 試圖通過標准規範來解決這個問題,以降低集成工作量,並創建更一致和強大的實現模式,就像 ERC-20 一樣。

什么是 ERC-4626 ?

ERC-4626 是一種標准,它改進了收益型保險庫的技術參數。它為代表單個底層 ERC-20 代幣份額的收益保險庫提供標准 API。

代幣化保險庫已經成為 DeFi 中極為常見的模式。收益聚合器、借貸市場、質押衍生品等許多 dApp 都利用和依賴於代幣化保險庫。代幣化保險庫的示例包括 Yearn 和 Balancer。作為一個收益聚合器,Yearn 保險庫使用戶可以存入數字資產並獲得收益。Balancer 是一個自動化的組合管理器和流動性提供商,其業務邏輯的核心依賴保險庫。這些保險庫管理各種池中的代幣。同時,它們將代幣管理與池子本身的邏輯分離开來。

協議通過代幣化其保險庫來增強流動性和靈活性。代幣化保險庫可以輕松進行交易,並在 DeFi 平臺上使用資產。此外,它們還能夠創建多樣化、相互連接的金融產品。該行業一直倡導這種範式,通常稱為“貨幣樂高”。

然而,沒有適當的適應性或標准化的可組合性會帶來挑战。它不僅使开發人員難以遵守 ERC-20 等行業標准,而且還會使新开發人員感到困惑。如果沒有適當的適應性或標准化,就很難審查新的變化並驗證集成的實施細節。

於是 ERC-4626 被提出來解決這個問題,並簡化集成,同時允許 DeFi 參與者最終採用更安全和強大的統一保險庫規範。這反過來也將減少協議可能遭受的攻擊面,同時在多個協議之間集成代幣。

ERC-4626 可以預防哪些安全問題?

通過提供統一的標准,ERC-4626 加速了跨協議集成的構建速度。熟悉的、統一的標准也更容易讓开發人員理解,從而減少編碼錯誤的可能性。這有助於防止可組合性問題。標准化還可以防止工作重復,因為社區只需要設計一次保險庫,而不是為每個協議單獨設計。由於這種設計工作通常容易出錯,它有助於避免重復已經建立但普遍存在的設計缺陷。

我們將在這裏介紹兩個案例研究,以展示 ERC-4626 可以預防哪些問題。

Rari Capital 事件

Rari Capital 被盜取了價值約 1100 萬美元的代幣,這相當於 Rari Capital Ethereum 池中所有用戶資金的 60 %。

總的來說,Rari Capital 被黑客攻擊是由於不安全的跨協議實現。其 Ethereum 池通過將 ETH 存入 Alpha Finance 的 ibETH 代幣合約作為產出策略。這種特定策略通過某些合約及公式(具體如 ibETH.totalETH / ibETH.totalSupply 函數)跟蹤其 ibETH/ETH 匯率的價值,在此攻擊場景中可能會有錯誤的輸出,例如在調用 ibETH.work()函數時,債務價值可能會被人為地膨脹。

攻擊者只需重復調用 RariFundManager 合約中的 deposit 和 withdraw 函數,就可以耗盡 Rari Fund Manager。deposit 和 withdraw 函數需要獲取池子的余額以計算要發行給調用者的 REPT 代幣數量,或要發放給調用者的 ETH 金額,這個操作會分別調用 Alpha 池的 getBalance 函數,調用 ibETH 合約及其 totalETH 函數。Rari 不知道操縱此函數的可能性。

ibETH 合約中還有另一個函數:ibETH.work 。該函數可以調用用戶指定的任何合約。這使得 Rari 的 deposit 和 withdraw 函數可以變得可重入並被多次調用。

work 函數是一個可支付的函數,意味着用戶可以通過 work 函數控制 ibETH 合約中的 ETH 數量,從而改變 totalETH 函數返回的值。更糟糕的是,work 函數還支持調用任何其他合約,例如 RariFundManager。

通過這個函數,攻擊者可以再次發送 ETH 並增加 ibETH 合約中的 totalETH 金額,同時調用 RariFundManager 合約中的 withdraw 來贖回更多資產。

這次事件突顯了 DeFi 合約中集成不足和不兼容的設計所帶來的重大風險。它強調了像 ERC-4626 這樣的標准通過增加關鍵的安全和可預測性層可以防止這樣的攻擊,並促進統一行為和相互理解。

Cream Finance 事件

Cream Finance 遭受了一場復雜的攻擊,利用了平臺中兩個基本弱點:可操縱的混合預言機和沒有上限的代幣供應。攻擊的關鍵部分是對混合預言機的操縱,這影響了 yUSD 代幣的感知價值。當攻擊者向 yUSD 保險庫發送大量 Yearn 4-Curve 代幣時,他改變了保險庫報告的匯率,因此還影響到了預言機對 yUSD 代幣的感知價值。

這裏的關鍵教訓是一個強大且無法操縱的價格預言機對於 DeFi 協議的穩定性至關重要。按時間加權平均價格(TWAP)預言機可以幫助防止此類黑客攻擊,因為他們對突然的價格操縱更具有韌性。

這些問題,以及其他脆弱的設計模式,可以通過謹慎採用和實施 ERC-4626 來加以緩解。

ERC-4626 中的潛在安全風險

使用新的協議總有一些取舍。對於代幣化的保險庫,將其集成到智能合約中可能存在潛在問題,需要特別注意。

管理 feeOnTransfer 代幣

如果保險庫旨在支持 feeOnTransfer 代幣,請在轉移資產時檢查保險庫中的金額和份額是否處於預期範圍內。

適當使用 decimals 變量

盡管 convertTo 函數應該無需使用 EIP-4626 保管庫的 decimals 變量,但仍強烈建議在可行的情況下鏡像底層 Token 的 decimals 。這種做法有助於消除潛在的混淆來源,並簡化各種前端和鏈下用戶的集成。

四舍五入

根據規範,保險庫實現者應意識到在不同的可變和視圖方法中需要特定且相反的舍入方向,因為在計算過程中更安全的做法是優先考慮保險庫本身而不是其用戶:

  • 如果它正在計算要發行給用戶的股票數量,以獲得他們提供的某些基礎代幣的金額,或者它正在操作將特定份額的基礎代幣轉移給用戶,則應向下舍入。

  • 如果它正在計算用戶必須提供多少份額才能獲得一定數量的基礎代幣,或者正在計算用戶必須提供多少基礎代幣才能獲得一定數量的份額,則應向上舍入。

其中首選舍入方向將是模棱兩可的是 convertTo 函數。為確保在所有 EIP-4626 保險庫實現中保持一致性,指定這些功能必須始終向下舍入。集成者可以自己模仿舍入方向向上的版本,例如通過添加一個 Wei 到結果來實現。

一個用戶通過贖回他們在保險庫中的股份(previewRedeem)來獲得基礎資產的數量,可能會與發行相同數量的股份(previewMint)時需要付出的數量有很大差異。這些差異可能很小(例如由於舍入誤差),也可能很大(例如保險庫實現了提款或存款費用)。因此,集成者應該注意使用最適合他們用例的預覽函數,並且永遠不要假設它們是可互換的。

覆蓋核心功能

為了實現或擴展預期的功能,建議使用現有的掛鉤而不是更改核心功能。這種做法可確保更易於管理的跟蹤,以進行有效的代碼測試和審核。

零份額

ERC-4626 的原始規範沒有概述如何處理保險庫中沒有份額的極端情況,以及保險庫是否應該像正常情況一樣工作或者回滾。這可能會成為混淆和錯誤的潛在來源。

保險庫作為價格預言機

關於預言機價格操縱攻擊的風險,這些 preview 方法返回的值盡可能接近准確。因此,它們可以通過更改鏈上條件進行操作,並且不總是安全用作價格預言機。 ERC-4626 規範包括允許不精確的 convert 方法和 totalAssets 方法,因此可以實現為強大的價格預言機。例如,在資產和股份之間轉換時,使用時間加權平均價格來實現 convert 方法是正確的。

具體實施問題

在進一步集成之前,集成者必須審查任何代幣化保險庫的實現,因為可能存在惡意實現,看起來符合接口規範,但其核心函數由完全不同的設計規範組成。

EOA 直接訪問

如果要直接訪問一個保險庫,則其實現需要具備可用於容納滑點損失或意外存款/提款限制的功能。與智能合約不同,EOA 沒有交易回滾的故障保護機制,如果在調用核心函數時沒有實現精確輸出,則無法回退。

擴展保險庫

隨着越來越多的參與者开始採用 ERC-4626 標准,我們將看到為該標准實施的更多擴展。例如,Superform 开發了一個試驗性的 Multi 保險庫擴展,支持在一個保險庫合約內使用不同的計算。自然而然,實現越偏離原始標准,引入新漏洞的可能性就越高。开發人員和審計人員可以根據用例找到自己的最佳選擇,以確定實際風險值。

需要注意的是,導致災難性事件的不是每個協議的最小添加,而是它們集成在一起時的總和。

上面提到的潛在攻擊向量是圍繞 ERC-4626 標准討論較多的一些問題。隨着採用率的增加,我們肯定將探索更多實現用例,以及更多與 ERC-4626 保險庫集成的合適場景。

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

推薦文章

動區週報:降息2碼如何影響市場、Catizen空投落地、中國長安鏈、BingX遇駭…

本週(9/15-9/21)重要大事速覽 本週美國聯準會正式宣佈 降息 2 碼 ,加密貨幣與領先美股...

Arthur Wang
4 9小時前

Solana新手機Seeker亮相,這次能靠空投回本嗎?

@OdailyChina @web3_golem 9 月 19 日,Solana Labs 旗下的...

星球日報
5 9小時前

這42個山寨幣今年「跑贏比特幣」:迷因幣稱王、AI賽道與TON表現強勢

本 輪牛市截至目前,比特幣受惠於現貨 ETF 的推出,早在今年 3 月就創下 73,000 美元的...

Editor Jr.
5 17小時前

比特幣回測6.3萬、以太坊挑戰2600美元,美股逢「四巫日」投資人收手觀望

比 特幣昨(20)日持續在 6.3 萬美元附近窄幅震盪,直到日本央行在早上 11 左右點宣布維持當...

Ting
4 17小時前

BingX 恢復 BSC 鏈主流幣、USDT (TRC20) 出金,鏈上專家估損失4~5千萬美元

昨 (20)日清晨,BingX 交易所熱錢包 證實 遭遇駭客攻擊,隨後該平臺啟動 緊急應變 計畫凍...

Ting
4 17小時前

專訪PolyFlow聯創Raymond Qu:打造PayFi基礎設施

原文來源: Web3小律 2008 年的比特幣白皮書,為我們描繪了一個無需可信第三方的點對點電子現...

星球日報
7 17小時前