梳理Compound 8000萬美元token分發錯誤事件

2021-09-30 18:09:33
原文標題:《Compound錯誤分發8000萬美元代幣,修復漏洞還要再等七天》

9 月 30 日,頭部去中心化借貸協議 Compound 於官推表示,在今天通過並執行「治理提案 062」後,升級合約內發錯了一個 BUG,致使 COMP 代幣出現了異常分發情況。

梳理Compound 8000萬美元token分發錯誤事件

具體來說,漏洞出現在升級後的「Compound : Comptroller」(0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B)合約內,原本應通過該合約緩慢分發給所有流動性提供者(借方、貸方)的 COMP 代幣被錯誤釋放,部分用戶收到了遠高於正常數量的 COMP。如下圖所示,僅 0x2e4ae 开頭的地址一個地址就從「Compound : Comptroller」合約內領取到了近 30000 枚 COMP,代幣,價值約 900 萬美元。

梳理Compound 8000萬美元token分發錯誤事件

漏洞影響評估

首先需要強調的是,從漏洞影響來看,本次 Compound 事件只會直接影響到所有流動性提供者的預期收益,用戶的存款、借款及倉位情況理論上不會受到任何幹擾,所以不必太過恐慌。

此外,根據 Compound 創始人 Robert Leshner 的說法,「Compound : Comptroller」合約內的 COMP 總量有限,用於挖礦分發的更多 COMP 代幣其實是存在另一個合約「Compound: Reservoir」(0x2775b1c75658Be0F640272CCb8c72ac986009e38)內,該合約仍在以每個區塊 0.5 枚 COMP 的速度正常分發。最極端的情況下,也就是「Compound : Comptroller」合約內的代幣被提空時,將有約 28 萬枚 COMP 受到影響,總價值約 8000 萬美元。

梳理Compound 8000萬美元token分發錯誤事件

從鏈上狀況來看,當前「Compound : Comptroller」合約內已被提走了約 17 萬 COMP,還剩下約 11 萬 COMP,而「Compound: Reservoir」合約當前的運轉並未出現異常情況,與 Leshner 的說法相吻合。

梳理Compound 8000萬美元token分發錯誤事件

事件發生原因

本次漏洞的起因在於前文提到的「治理提案 062」,該提案的目的旨在調節對不同流動性提供角色的 COMP 分配比例。

依照協議運轉規則,Compound 每天會向所有流動性提供者分發 2880 枚 COMP 代幣,這些代幣的一半將分配給借方,一半將分配給貸方。然而,在日常運行之中,Compound 發現這種一半一半的分配方式並未充分考慮到市場需求狀況,致使了市場出現了一些畸變(比如負利率)。所以在 9 月 22 日,社區成員 Tyler Loewen 於 Compound 治理模塊內提交了改進提案,擬將這種一半一半的分配方式更改為依照利率狀況動態調節。

這一提案的出發點顯然是正向的,社區對於提案的態度也是以支持為主,大概一周左右,也就是今天上午,該提案順利通過並得到了執行。

遺憾的是,代碼層面的 BUG 往往就是這么難以預料。盡管社區內其他一些成員也審查過 Tyler Loewen 的升級代碼,且所有升級合約已在以太坊 Ropsten 測試網上順利運轉了一個月的時間,但 BUG 還是出現了。

解決措施及流程

關於補救工作,Leshner 本人在推特已表示:「沒有任何管理控件或社區工具來打斷 COMP 當前的異常分發,協議層面的任何更改都需要經過為期近一周的治理程序才可生效。Compound Labs 和社區成員當前正在評估修復發行版的可能方法。」

梳理Compound 8000萬美元token分發錯誤事件

如其所說,Compound 有着一套既有的治理流程:

·任何地址都可以鎖定 100 枚 COMP 來發起自治提議,當提議積攢夠至少 65000 枚 COMP 的委托後將升級為治理提案,繼而進入社區公投環節;

·社區公投為期 3 天,當提案獲得了至少 40 萬枚 COMP(即 ≥4% 的供應量)支持,且多數人投票贊成之時,即可通過公投環節。

·通過公投的提案將排隊進入時間鎖,並在 2 天的時間鎖後正式執行。

梳理治理的整個流程,可以看到,僅公投和時間鎖環節就要求了至少 5 天的時間,算上最初的提議以及流程過渡工作所需的時間,Leshner 所說的一周並不誇張。

關於「沒有任何管理控件來打斷 COMP 當前的異常分發」這一點,事實上,Compound 協議內存在一個用於處理極端情況的監護地址(Set Pause Guardian,0xbbf3f1421d886e9b2c5d716b5192ac998af2012c),該地址此前一直由 Compound Labs 持有,但在 8 月份的「治理提案 057」中已被轉變為多籤控制。不過,該監護地址的權限暫時僅規定了可在極端情況下暫停協議的存款、借款和清算,並未明確提及是否可用於當前發生的情況。

流程至此已釐清,但該採取什么樣的補救措施,目前沒有人給出具體方案。社區成員已在 Compound 治理論壇中建立了一個主題討論帖,擬通過「治理提案 063」來執行修復。從已釋放出的信息來看,大概率會先行暫停 COMP 的分發(可能通過監護地址執行?),直到可以測試完整的修復補丁。

梳理Compound 8000萬美元token分發錯誤事件

經驗教訓總結

作為踐行去中心化理治模式的先驅之一,Compound 本次事件的起因及處理在一定程度暴露了 DAO 治理的 B 面。

我們的慣性認知中,去中心化往往意味着用效率來換取公平。在 DeFi 領域,當一款協議實現了完全的去中心化治理,沒有任何單一主體能夠隨意對合約進行修改時,調動社區整體來共同參與治理決策往往極大的組織精力及時間成本,這也是為什么 Compound 需要用七天的時間來修復一個明擺着會對協議造成極大負面影響的漏洞。實際上,在一衆頭部 DeFi 協議之中,Compound 七天左右的治理周期並不算慢了,Uniswap 走完全套治理流程(民意調查——共識檢查——治理投票——時間鎖)的時間周期至少需要半個月之久。

話說回來,既然明知事後的補救需要如此高的成本,那么在事件發生之前,是否需要對重大合約升級採取更加嚴格的評估標准呢?這是在本次事件發生後,Compound 社區所作出第一個的經驗總結——社區成員 Phaze Jeff 於治理論壇內發起了一個討論帖,主題為「對重大代碼更改執行更嚴格的審核」。

結合具體事件來看,在社區成員 Loewen 提交「治理提案 062」後,參與測試工作的社區成員數量過少(似乎是大部分 DeFi 協議的通病),最終導致 BUG 被遺漏和「放行」。因此,Jeff 認為在協議進行重大更新時進行更細致的監測,並鼓勵更多的社區成員參與到主網部署前的社區工作去。此外,Jeff 還提到了需要進一步明確多籤監護地址的具體權限,以允許其在出現類似緊急情況時快速相應。

當前,關於該話題的討論仍在進行中,感興趣的朋友可以直接訪問帖子參與討論。

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

推薦文章

解析五大交易所上幣:什么賽道最受歡迎?上幣效應究竟多強?

@OdailyChina @Assassin_Malvo Nerio(小寫)自上线幣安以來,已斬獲...

星球日報
4 9小時前

Arthur Hayes Token2049演講全文:市場在降息後可能崩盤,但以太坊表現可能會不錯

整理:Weilin,PANews “It’s fucking fed day”, 9 月 18 日...

星球日報
4 9小時前

深度解析Multi-Agent:Web3與AI終將相互成就?

如果說 AIGC 开啓了內容生成的智能時代,那么 AI Agent 則有機會把 AIGC 的能力真...

星球日報
4 9小時前

EIGEN解鎖在即?淺析EigenLayer當下估值和獲利預期

原創 | Odaily星球日報( @OdailyChina ) 作者|Azuma( @azuma_...

星球日報
4 9小時前

死而復生的“Neiro”,把幣安和何一都拉下水

在一周前,陀螺財經曾撰寫過《 交易所站隊“NEIRO”?MEME內战進行時 》,提到關於交易所站隊...

陀螺財經
4 9小時前

應對美聯儲降息:市場波動中的期權交易策略

本周市場顯示出看漲樂觀情緒,主要是由於加密貨幣交易者關注的積極因素——利率下調和流動性,將由美聯儲...

星球日報
4 9小時前