嗨,早!
Compound 是規模達 100 億美金的元老級 DeFi 借貸服務。
區塊勢曾分別討論過 Compound 推出的治理代幣¹、去中心化治理機制²,以及建立在 Compound 之上的樂透彩應用³。但近期 Compound 卻傳出升級漏洞,意外將現值約 40 億台幣的治理代幣發給用戶。
事件至今尚未落幕。多數的網路報導比較表面,甚至還用「加密貨幣的金融中心」來形容 Compound。這篇文章整理 Compound 升級漏洞的來龍去脈,並討論去中心化治理機制的不足。
功能升級
一般的軟體更新,都是由企業內部決定要新增哪些功能,用戶無法插手。Compound 不是企業,而是完全由社群(網友)共同主導的開源專案。
2020 年 7 月,Compound 率先發行象徵投票權的治理代幣 COMP。用戶使用 Compound 放貸或借款,都可以額外獲得 COMP 幣獎勵。在價格飆漲的時候,借款所獲得的 COMP 幣獎勵有可能比付出去的利息還多。等於借錢還能賺錢。
不久之前,一位開發者提案,希望調整 COMP 幣的發放規則,讓獎勵可以自由調整,例如只將獎勵發給放貸的人,藉此吸引更多存款;或是反過來,吸引更多借款。根據編號第 62 號提案敘述:
目前的 COMP 幣獎勵是不分放貸、借款,都能獲得相同利率。這會造成不良的市場條件,例如出現負利率。其中一個例子是 WBTC 的借貸市場,我們想為放貸者提供更多 COMP 幣獎勵,但因為目前的規則是放貸、借款的利率必須相同,因此最終人們可以用負利率借入 WBTC。
簡單來說,編號第 62 號提案是想讓未來放貸、借款所能獲得的 COMP 幣獎勵不再只能是 50/50,而是可以根據市場需求隨時調整成 70/30 或是 20/80。
Compound 社群從 7 月開始討論這項提案,並在 9 月底正式表決。最終以近 73 萬顆 COMP 幣贊成,0 顆 COMP 幣反對,無異議通過這項功能升級。9 月 28 日表決通過之後,按照規則,還得有 2 天的等待期(timelock),才會真正改動智慧合約功能。
發現漏洞
沒想到 9 月 30 日新功能才剛推出,馬上就有人回報獎勵發放異常。更有網友貼出截圖,表示自己平白無故多出數萬顆 COMP 幣有待領取。
如果你是軟體工程師,看到這種情況肯定冷汗直流。只是新增一個小功能,程式碼卻影響到核心功能,釀成大禍。
程式漏洞是軟體開發的家常便飯,緊急修補就好。但是根據 Compound 的治理規則,每一次新的提案都必須要有 2 天審閱期、3 天投票期再加上 2 天等待期,程序長達 7 天。換句話說,即便馬上提出新的智慧合約,最快也要 7 天之後才能生效。遠水救不了近火。
最糟的情況下,Compound 有可能多發出 28 萬顆 COMP 幣,佔總發行量的 2.8%。
因此開發社群只好先從與智慧合約無關的地方下手。他們先移除 Compound 網站上的 COMP 獎勵畫面。雖然錯誤的獎勵已經發出去、功能也暫時不能更新,但至少用戶沒有畫面,就難以截圖廣傳。
此外,Compound 開發者也在推特上呼籲領到意外獎勵的使用者,將多拿的 90% 獎勵歸還給智慧合約,自己可以留下 10% 當成是白帽駭客獎勵。
但不是每個社群成員都溫情喊話。情急之下,Compound 的創辦人 Robert Leshner 竟在推特上威脅那些多領 COMP 幣的用戶,若不還錢就會將他們的資料交給美國國稅局。暗示讓他們被查稅。
這是無稽之談,更是一腳踩在 DeFi 用戶的紅線上。
此舉不僅讓人不想還錢,甚至會摧毀 Compound 過去辛苦建立的聲譽。帶來的負面影響甚至超出升級漏洞本身。如果是你,會願意還錢嗎?
這並不是 DeFi 第一次碰到發錯獎勵的問題。自動理財機器人 Alchemix 也曾經犯過一樣的錯,但他們最後成功從用戶手上收回 55% 的代幣。因此,他們也建議Robert Leshner 應該要放低姿態,而不是威脅。
根據下圖的鏈上數據,目前用戶已經歸還大約 16 萬顆 COMP 幣,歸還率超過 55%。算是不幸中的大幸。
但危機還沒解除,錯誤的智慧合約仍然在持續運作中。若要完全解決問題,還是得靠去中心化的治理機制。
去中心化治理
社群在事發後的 2 小時內,馬上就擬出編號第 63 號提案,要緊急停止 COMP 幣獎勵發放。根據提案敘述:
這項提案將暫時停止 COMP 獎勵發放。因為編號第 62 號提案在分配機制中出現錯誤,讓用戶能借入某些資產並獲得超額的 COMP 幣回報。這項提案將暫時停止 COMP 幣發放,直到恢復正確的機制為止。
聽起來這項提案應該要是全數同意票通過,對吧?
沒想到投票時卻出現意見分歧。有 12 位民意代表投票贊成,另外 17 位投票反對。只不過去中心化治理計算的不是人數,而是 COMP 幣的「票數」。終場以 100 萬贊成票,對上 16 萬反對票通過提案。
這不免讓人好奇,投反對票的理由是什麼?
答案藏在 Compound 的論壇裡。自動理財機器人 Yearn、idle.finance 的開發者紛紛站出來表示,這項緊急提案會破壞與其它 DeFi 的整合。因此,建議大家投反對票。
原來 Compound 身為元老級的借貸服務,已經有許多 DeFi 應用都是建立在 Compound 的借貸市場之上,基於它的借貸利率、COMP 幣獎勵打造出更多元的金融創新服務。
若以樂高來比喻,Compound 就像是最底層的基礎磚,而 Yearn、idle.finance 則是建立在上面的其他積木。
而編號第 63 號提案是緊急煞車措施,可能會破壞 Yearn、idle.finance 這些服務與 Compound 的整合,影響其它 DeFi 應用的正常運作。因此社群才會分成兩派。有人認為應該先替 Compound 止血,避免幣價下跌。但也有人認為應該顧及建立在 Compound 上的 DeFi 應用。
在我寫這篇文章當下,編號第 63 號提案已經通過,並進入 2 天的等待期。代表那些與 Compound 整合的 DeFi 應用只能「好自為之」了。
此外,Compound 治理論壇中還有編號第 64 號提案正在投票中,它改進了編號 63 的整合問題。目前是全數同意票,通過的機率相當高。整起事件至今都還沒落幕。雖然嚴格來說沒人有財產損失,但已經讓許多人嚇出一身冷汗,並開始討論未來可能的緊急應變措施。
DeFi 的智慧合約升級,就像是在半空中替飛機換引擎,風險非常高。只是以往「墜機」的都是小飛機,因此沒有引起太多注意。Compound 是目前資金規模第二大的 DeFi 借貸服務,而且有非常多應用都是建立在 Compound 之上。萬一發生意外,恐怕會引發骨牌效應。
以往大家總說 DeFi 是樂高積木,但在危急時刻看起來又有點像是撲克牌疊成的紙牌屋。
區塊勢是由讀者付費訂閱來維持營運的獨立媒體。如果你覺得區塊勢的文章不錯,歡迎你分享這篇文章或是成為付費會員支持我們走得更遠 🙏
此外,也請大家推薦區塊勢給親朋好友。若想查閱區塊勢過往的出刊內容,可以參考文章列表。有鑒於常會有讀者寄信來問我推薦碼,因此我將它們整理成一頁。歡迎大家使用。