買比特幣 買比特幣
Ctrl+D 買比特幣
ads

DEF:a16z 介紹 ERC-4626 金庫通用屬性測試:讓 DeFi 可組合性更安全_defi community

Author:

Time:1900/1/1 0:00:00

撰文:Daejun Park

編譯:aididiaojp.eth,Foresight News

在可預見的未來,ERC-4626 金庫有可能成為 DeFi 的重要組成部分。

隨著 DeFi 不斷發展并逐漸成熟,開發人員的首要考慮是可擴展的基礎設施和可組合性。用于構建基于以太坊的應用程序的標準化工具包 ERC 一直發揮著重要作用。例如廣泛使用的代幣標準 ERC-20 為開發人員提供一致的指導方針,讓他們無需從頭開始就可以為生態系統做出貢獻。今年早些時候,為了鼓勵收益型代幣之間的交叉兼容性,代幣化金庫標準 ERC-4626 被推出。除此之外,ERC-4626 還可以解決緊迫的可組合性問題,使協議集成更容易,減少出錯幾率。

目前已經有一些 DeFi 項目為了提高其金庫的可組合性,采用了該標準,我們預計整個生態系統將得到更廣泛的采用。然而,調整現有的金庫確實會帶來一些痛苦,至關重要的是某些實施錯誤可能被暴露,成為新的攻擊目標。即使是很小的錯誤(小到對使用界面的誤解)也會對安全和用戶體驗產生重大影響,因此還需要更多的安全工具和措施,特別是在更可組合的 DeFi 生態系統中。

如果在被攻擊之前就檢測到簡單的錯誤,則可以提供相對簡單的解決方案,理想情況下甚至在部署之前就能進行檢查。為此,我們發布了用于模糊測試和符號執行的 ERC-4626 屬性測試,以幫助金庫構建者檢測可能破壞集成或導致漏洞的標準違規行為。這篇文章解釋了激勵問題,介紹了檢測方法,并在結尾處提到一些可行的建議。

a16z合伙人Chris Dixon:因投資Coinbase而未投資FTX,離岸交易所不受監管本身就是隱患:12月19日消息,a16z 合伙人 Chris Dixon 近日在 The Block 的播客 The Scoop 中談到為什么 a16z 從未投資過 FTX等話題。主持人問 Chris Dixon躲過 FTX 是技巧還是運氣,對此,Chris Dixon 表示,自己只和 SBF 在線上會議上有過對談,并無深交。之所以沒有投資 FTX 主要是因為投資了 Coinbase,而和 Coinbase 合作的經驗告訴他,合規、安全要比靈魂和創新更重要,所以,FTX 這種離岸加密交易所不受監管本身就是一種隱患。

為什么 FTX、Phoenix 等交易所會選擇將總部設立在巴哈馬群島?誰來審計他們?Chris Dixon 說道,沒有投資 FTX 并非完全出于運氣,a16z 在投資領域積累了十多年的經驗,會在投資前做大量的工作,并且認真思考什么是真正的技術創新。[2022/12/19 21:54:14]

ERC-4626 標準的背景

ERC-4626 于 3 月被推出,是一套代幣化金庫的標準,旨在擴展廣泛使用的 ERC-20 標準,推動跨收益金庫的標準化,并確保需要與其交互的應用程序和協議(例如收益聚合器)的可組合性。這意味著為了與任何其他 ERC-4626 金庫一起使用,在 ERC-4626 金庫上構建的任何應用程序都可以輕松擴展。

派盾:0x7a16開頭地址從Aave中取出1500萬枚CRV:金色財經報道,PeckShield在推特上表示,0x7a16開頭巨鯨地址從Aave V2中取出1500萬枚CRV,價值約1000萬美元。[2022/11/25 20:45:27]

金庫代幣化后,能夠允許用戶自由存入資產來鑄造金庫代幣,然后贖回這些代幣從金庫中提取本金和利息。這些金庫代幣是 ERC-20 代幣,可以輕松被交易或用作抵押以借入其他資產。例如,用戶可以將他們的資產存入 Yearn 金庫以鑄造 yVault 代幣,然后在 Uniswap 上進行交易、抵押以獲得額外收益,也可以用作貸款協議的抵押品。

產生、分配收益以及確定代幣價格的邏輯可能因實際情況而異。為了覆蓋盡可能多的金庫,ERC-4626 標準側重于構建用戶界面,而大部分實現細節未確定。只要金庫滿足接口的特定要求,就能夠允許業務邏輯的變化,實現跨許多不同類型的應用程序和 ERC-4626 金庫類型的互操作性。

隨著越來越多的代幣化金庫被創建,我們希望看到它們從一開始就按照 ERC-4626 標準實施。但我們目前處于某種過渡階段,為了符合標準,開發人員將需要以更大可組合性的方式來更新現有的金庫、應用程序和協議,他們也面臨著許多復雜挑戰。

標準一致性的挑戰

外媒:無聊猿創始團隊正與a16z就融資一事進行談判:2月3日消息,據英國《金融時報》援引知情人士消息報道,無聊猿創始團隊 Yuga Labs 正與 Andreessen Horowitz(a16z)就融資一事進行談判。此前報道,據 THE BORED APE GAZETTE 1 月 25 日援引 NFTNick.eth 相關播客節目內容報道,無聊猿創始團隊 Yuga Labs 正尋求在以 50 億美元估值完成新一輪融資。[2022/2/4 9:30:16]

遵循新標準并不總是那么簡單。每個 ERC-4626 金庫都必須忠實且準確地實現所描述的標準要求,否則為了應對不同的變化,集成會變得越來越復雜。這種復雜性使集成天生容易出錯。并且由于它們沒有足夠安全測試,隨著時間的推移可能會導致系統漏洞。

為了安全地處理不同的行為,非 ERC-20 標準代幣需要許多 DeFi 系統在執行代幣轉移時使用額外的金庫。例如 Tether USD 在執行代幣轉移時需要額外用到 SafeERC-20。

這意味著如果系統的設計不能正確處理「丟失退貨」的情況,任何與這些代幣交互的系統都可能變得脆弱。這些場景可能會引入一個常見的安全陷阱,并增加整體開發和維護成本。因此,符合標準不僅對個人至關重要,而且對整個生態系統的安全也至關重要,單個系統或依賴項中的一個漏洞就可能會導致廣泛的問題。

NFT游戲初創公司Mythical Games完成1.5億美元C輪融資,a16z領投:11月4日消息,在不到四個月前完成7500萬美元B輪融資之后,NFT游戲初創公司Mythical Games今日宣布獲得由a16z領投的1.5億美元C輪融資,公司估值達到12.5億美元。D1 Capital、RedBird Capital、The Raine Group和交易所Binance、FTX參投,現有投資者Galaxy Interactive、WestCap、01 Advisors、Javelin Partners、Struck Capital、Alumni Ventures和Signum Growth Investments追投。(businesswire)[2021/11/4 6:32:11]

理想情況下,標準將被明確地正式指定,并且每個實現都可以根據標準規范進行正式驗證。然而在實踐中需要社區的努力且需要一定的費用或時間成本,這在短時間內并不容易實現。

通過引入可執行的 ERC-4626 屬性,識別一致性問題

當我們朝著理想狀態努力,每個金庫都根據嚴格的正式規范進行了正式驗證時,為了捕捉標準要求的微妙、容易遺漏的細節中的差異,我們編寫了 ERC-4626 標準屬性。

為了檢測其實施中潛在的標準違規行為,代幣化金庫的開發人員可以在部署之前運行測試。金庫集成商可以檢查給定的金庫是否符合標準,然后再將它們集成到他們的系統中。針對已經部署在主網上的實時金庫,也可以通過主網分叉測試的方式進行測試。為了確保所有系統參數都已正確設置,尤其是在最近部署或升級的金庫,測試實時金庫可能會很有用。

NFT交易平臺OpenSea完成1億美元B輪融資,a16z領投:7月20日,OpenSea完成1億美元B輪融資,本輪融資由a16z領投,完成該輪融資后,OpenSea估值達到15億美元,其他詳細融資信息暫未透露。

此前報道,據DuneAnalytics數據統計,OpenSea6月成交額達1.49億美元,成交量達21萬件,均創歷史新高,此外,OpenSea總用戶數量突破14萬,環比增長19%。OpenSea于今年3月宣布完成2300萬美元融資,該領融資由a16z領投,參與投資的還有,知名天使投資人NavalRavikant、MarkCuban、TimFerris,以及BelindaJohnson等。(Coindesk)[2021/7/20 1:05:07]

為了使屬性可執行,我們用 Foundry 編寫,并由 fuzzer 運行。為了正式驗證給定的進金庫是否滿足所有可能的輸入和條件的屬性,將來它們也可能由符號執行或模型檢查工具運行。

在編寫時通用性是首先考慮的,我們希望測試可以應用于實現不同業務邏輯的各種金庫。我們只使用公共接口函數來使它們與實現細節無關。但是由于此限制,某些涉及特定于實現的內部數據的標準要求從屬性中省略了。

例如,以下屬性對應于 convert To Shares() 函數的要求之一,「不得根據調用者顯示任何變化。」

給定兩個賬戶地址和金額,它使每個賬戶以相同的金額調用 convertToShares(),并確保兩個返回值相等。此屬性獨立于實現細節 convertToShares()。這些細節因金庫的不同而異,并且必須由任何實現 ERC-4626 的金庫來滿足。在這種情況下可以通過提供特定輸入值(用于單元測試)、許多用于模糊測試的隨機輸入或用于符號執行和形式驗證的符號值來執行此屬性。它也可以在本地運行或針對主網分叉運行。

用例:測試舍入錯誤的屬性

例如舍入錯誤是一類看似輕微的但很重要的錯誤,它可能會產生一些系列影響。在 ERC-4626 的基本會計邏輯中,舍入誤差是不可避免的,例如計算要鑄造的資產數量,或要提取的資產數量,等使用定點算法實現的指令。為了安全性考慮,該標準明確指定了每個接口函數的首選舍入方向,同時未指定誤差范圍。具體來說 deposit() 和 redeem() 函數應該返回一個低于精確值的近似值,而 mint() 和 withdraw() 函數應該返回一個高于精確值的近似值。例如當前股價(即每股資產數量)為 2,那么 deposit()3 wei 的資產最多只能鑄造 1 wei 的代幣(即 floor(3/2)),而 withdraw()3 wei 的資產應該在至少 2 wei 的代幣(即 ceil(3/2))。

我們將舍入相關屬性編寫為獨立于基礎會計邏輯,并將其視為「黑匣子」。具體來說我們將它們表述為所謂的「往返」屬性,它描述了兩個相反函數之間的關系。例如以下屬性規定,通過鑄造 N 股來提取剛剛托管的資產必須燃燒不少于 N 股。換句話說,沒有人可以通過反復鑄造和提現來反復轉換資產和金庫代幣來獲利。

事實上,我們發現主網上的幾個 ERC-4626 保險庫由于舍入錯誤而無法滿足上述屬性。這意味著任何人都可以通過簡單的反復鑄造和提取,慢慢地耗盡金庫來賺取 satoshi BTC(在撰寫本文時為 1 satoshi ~= 0.02 美分)。在低 Gas 費的鏈如 Fantom 上可能會實現獲利,或者在價格上漲時也會獲利。

ERC-4626 標準的廣泛測試

我們在主網上約 100 個 ERC-4626 金庫進行了屬性測試,發現許多金庫未能遵循標準要求。其中的主要原因是舍入錯誤。具體來說 mint() 函數盡管標準明確要求這樣做,但某些金庫未能鑄造該函數請求的確切份額數量。其中一些還發出了不一致的 Deposit 事件,其中記錄的數據與實際生成的數據不同,甚至有些金庫根本就沒有進行現場鑄造過。相反他們只是將鑄幣請求放入隊列中,稍后將它們作為單獨的事務分批處理。

盡管這些不同的行為本身是不可利用的,但當它們集成到只執行標準行為的其他系統中時,它們可能會變得容易受到攻擊。這些問題將使金庫集成變得更加困難,可能會抵消一部分努力。

屬性測試和其他可操作的步驟實現標準一致性

在部署之前嚴格遵循標準可以防止出現不同的行為。我們希望我們的屬性和一些額外的操作項對于那些正在開發或集成 ERC-4626 金庫的人能夠提供幫助:

我們強烈建議對您的金庫運行屬性測試。如果有任何明顯違反標準的行為,問題會很快被發現。

我們還建議檢查我們的屬性,以檢查您對標準要求的理解,如果有任何無意的差異,請調整實施方案。

如果金庫必須偏離標準,我們建議明確記錄非標準行為,以便其他人在與金庫集成時可以正確處理這些偏差。

小結

在可預見的未來,ERC-4626 金庫有可能成為 DeFi 的重要組成部分。為了保持可組合性,新的和現有的金庫都必須遵循該標準。新的標準將出現,因此現在是現有金庫標準化的最佳時機。

當我們朝著不同金庫統一組合的理想狀態努力時,可以運行 ERC-4626 屬性測試以更輕松地檢測金庫實施中的標準違規行為。屬性測試的文檔和示例都在我們的 Github 存儲庫中公開可用。

Foresight News

企業專欄

閱讀更多

金色早8點

1435Crypto

區塊律動BlockBeats

吳說區塊鏈

金色財經

比推 Bitpush News

blockin

Block unicorn

Odaily星球日報

Bankless

DeFi之道

Tags:FTXDEFEFIDEFIHDPUNK Vault (NFTX)Defend Animals Foundationdefi communityNRGY Defi

以太坊價格
NAN:重新思考DeFi代幣經濟學 理想的代幣模式是什么?_aegisfinance

作者:Will Comyns代幣必須開始提供收入份額以及治理。現代代幣設計的基礎工具可以追溯到減少實用代幣速度的目標.

1900/1/1 0:00:00
TAC:一覽當前的比特幣層格局 DeFi 生態正在建設中_STAC

原文作者:Stacks 創始人 Muneeb Ali,來源:Bankless,本文由 DeFi 之道編譯當前比特幣的市值約為 4000 億美元。作為 OG 鼻祖級加密貨幣,這是相當了不起的.

1900/1/1 0:00:00
Polygon:盤點多邊形戰士 Polygon 的擴容解決方案_LYG

加密行業里,以太坊擴容問題的解決方案一直是個巨大的市場。多邊形戰士Polygon則一直以來致力于解決以太坊的擴容問題.

1900/1/1 0:00:00
ETHER:詳解以太坊EIP:掌控千億巨輪的方向舵_Solareum

EIP是以太坊生態中相當重要的一個組成部分,它推動了以太坊的發展,豐富了以太坊的生態,起著導向作用并扮演著風向標的角色.

1900/1/1 0:00:00
ETA:新興公鏈ZETAChain測試網交互教程_區塊鏈

注意:為避免風險!所有鏈接用沒有資產的測試錢包鏈接!用沒有資產的錢包領鏈接!用沒有資產的錢包領鏈接!ZetaChain是一個基于Cosmos SDK構建的權益證明(PoS)區塊鏈.

1900/1/1 0:00:00
WEB3:Web3:開源文化下的技術創新_WEB

本文是筆者在中國信通院2022年開源產業大會上的演講內容總結,主要探討了幾個方面的內容:一是Web3的緣起與概念;二是Web3與開源的關系.

1900/1/1 0:00:00
ads