治理程序可抽取價值 GEV 危害協議安全,該如何防範?

以太坊愛好者
2021-04-27 15:02:40
收藏
設計制衡治理程序可抽取價值的系統是 DApp 獲得普及並實現其去中心化金融最初願景的關鍵。

本文發布於以太坊愛好者,作者:Leland Lee \& Ariah Klages-Mundt,翻譯:阿劍。

治理程序(Governance)是協議的最終擁有者。無論是獨裁還是富豪統治(plutocracy),治理程序控制著相關協議的每一個可變動的方面以及它們如何變化。不像傳統的公司,區塊鏈應用的治理程序是透明的、由專門的智能合約來定義(因此是確定性的),而且改變了什麼也對所有人可見。但有光的地方就有暗。治理程序也大可以犧牲整個系統來獲得利益,我們稱之為 「治理程序可抽取價值(GEV)」。同樣不像傳統公司的是,沒有司法框架來制約糟糕的治理。

什麼是治理程序?

協議的治理可以用兩條軸來體現:哪些東西受治理程序控制、有多少人參與治理。每種協議都有自己的目標,因此設計空間也很多樣。一些協議本身是不可變更的,另一些則有非常少的參數(比如費率切換和暫停功能),有一些甚至能把業務合約的功能整個替換掉(或曰 「可升級」)。最終,控制權可能無人可擁有,或會落在一人手上,一小群人手上(多簽名合約對應的實體)或者一大群人掌中(治理代幣投票)。如果沒有機制來制衡權力,合約的複雜性和靈活性就會成為機會主義的溫床。

GEV 爆破

治理程序會把用戶的終極利益放在心上嗎?太滿的話好像都不對 : ) GEV 爆破可以大體分為兩類:資本結構爆破和短期主義。

資本結構爆破

資本結構爆破俗稱 「跑路(rug pull)」,包括治理程序從系統中偷取擔保品、或者直接把擔保品劃給自己帶走。跑路類似於銀行拿著儲戶的錢跑了,雖然資本結構爆破可以做得更隱秘、更間接。大多數用戶都不會把錢放進一個帶有明顯可調用的跑路函數的合約。但開發者可以後面再加入跑路函數,或者利用系統的結構以間接(且讓人眼花繚亂)的辦法跑路。這裡有一些例子:

  • 惡意升級跑路。正常來說,在一個銀行裡面,用戶只能存錢和取出屬於自己的錢,不應該能取出別人的錢。Compounder 最初的設計中是沒有後門的。但是,開發者升級合約的時候就加入了一個跑路函數,讓他們可以偷走總計 1080 萬美元的擔保資產。雖然升級生效之前有 24 小時的時間鎖,在此期間用戶可以取出自己的資產,但很少用戶會真的密切監控合約的情況。

  • 無限鑄幣爆破。PAID network 的 erc20 代幣合約所有者賬戶只有一個,該賬戶可以鑄造新幣。在攻擊中,開發者鑄造了幾百萬個幣,吸乾了 Uniswap 交易所中的 PAID-ETH 資金池,然後拿著 ETH 跑路,留下無數因為超級通脹而價值歸零的 PAID。

  • 出賣少數股東。DigixDAO 投票通過把 ICO 集資退回給代幣持有者的決定,因為這些當時收集的資本甚至比治理代幣還要更有價值。在幕後,是一個聯盟掌控著大部分的股份,大家並不清楚這些人都有誰,他們會怎麼投票(Digix 團隊一直高聲反對解散)。在投票啟動之前,各方可以從少數股東處購買 DigixDAO 代幣,其市場價格與其對應的 ETH 儲備之間差額高達 48%。到現在大家也不知道,這些買入者就是參與聯盟的成員、想出賣少數股東來獲利,還是說他們是無關人等,只是在賭投票結果。

  • 投票跑路。MakerDAO 理論上有一個攻擊界面:治理程序可以投票把系統中的所有擔保品交給他們自己,而無需提醒終端用戶。不過風險已經被時間鎖減輕。

短期主義

雖然治理者和用戶都希望協議成長,但對於具體的辦法和步驟,他們可能有不同意見。用戶的目標是可持續的成長。相反,治理代幣的持有者可能不惜一切代價追求增長。所以下高風險的重注來獲得眼前可見的好處(手續費 / 讓治理代幣升值)也不是不可以,雖說這會損害整個系統,讓它變得更脆弱。短期主義可能在很多事情上出現。一個例子是運行系統使用風險更高的資產和提高整個系統的債務上限。

  • Cream Finance 是 Compound 的一個複製品,它加入了許多低成長的 DeFi 代幣,而且不設債務上限,來吸引用戶和體量。但是,FTT 代幣存款最終構成了 Cream 內存款的 40%,大幅提高了這個協議的風險。如果 FTT 價格暴跌,Cream 上的出借人可能會損失資產。

解決 GEV

在傳統公司裡面,GEV 的預防機制有保守派勢力,還有監管者和集體訴訟,作為遏止爆破行為的大棒。但這些可沒法翻譯成智能合約(其邏輯都是提前編程好的)。在一個鏈上世界,治理程序必須預先編程好,並且有遏制作惡的激勵機制,因為我們都知道,沒有中心化的機構能在爆破後為我們主持正義。

分散權力 ------ 多簽名和代幣投票

觀點 | 治理程序可抽取的價值

在安排誰來治理協議這件事情上,有很多考量。僅安排一個所有權賬戶,對開發者來說是最方便的,升級這個協議只需要一把密鑰,而且也無需與其他時區的私鑰持有者或無動於衷的代幣持有者協調。開發過程只需單方面投入,可以很快,但用戶就必須信任這個私鑰的持有者。

多簽名控制和代幣投票制對於更成熟的協議來說是更好的選擇,可以獲得更廣泛的共識。雖然在現實中,如果開發團隊自己控制了對大部分投票代幣,系統還是會回到獨裁模式或者聯盟模式中。

不設或者有限的合約可升級性

早期的智能合約都嘗試取得字面意義的 「不可更改性」。對合約的改變和升級是不可能的。如果合約出現了 bug,或者是讓智能合約的開發變成像是在設計不可改進的硬體一樣,都是很可怕的,就像沒法修復的火星探測器一樣。在不可升級的合約裡加入新功能能需要用戶自己遷移資金。從某個角度來看,這是一種特性(可以想像代碼是不會變的),但也可以看成是一種可怕的用戶體驗黑洞(YAM 的用戶不得不兩次遷移他們的 token)。

最直接的改進方法是設計一個最小化的升級空間,比如暫停功能,在 bug 被發現的時候是非常實用的,還有一些非常有限的參數。

最靈活的設計是使用可升級的合約(組合),一個核心(代理)合約存儲所有的數據,並引用一個可替換的合約來裝載所有的業務邏輯。用戶甚至不知道底層的合約被升級過,因此用戶體驗很絲滑(當然跑路也很絲滑)。

時間鎖

治理程序的時間鎖設計是為了給用戶適應升級的調整時間。假設流動性很充分,時間鎖可以讓用戶離開協議(假設他們不喜歡即將激活的變更)。出於這種利用,用戶會希望設計更長的時間鎖,這樣他們既有時間了解變更,也有時間來反應,但更長的時間鎖也會降低協議的靈活性。MakerDAO 就在很長時間裡出於這個理由而拒絕加入時間鎖。

但時間鎖也不是萬能的:用戶僅僅是在理論上能這麼做,但不意味著市場上有這個流動性,讓他們可以這麼做。如果 Maker 的治理程序嘗試剝奪 CDP 中所有的擔保品,而 DAI 的流動性很低 ------ 那想要獲得 DAI 來關閉 CDP 的人就要自求多福了。而且,這還假設了所有用戶都會一直監視著時間鎖來防範惡意行為( Compounder 說的就是你)。

樂觀許可

觀點 | 治理程序可抽取的價值

作為時間鎖的升級版,樂觀許可讓協議可以快速通過提案,除非有人發起否決。否決功能讓協議的散戶,即,使用這個協議但並不能參與治理程序的人,比如 DAI 的持有者、CDP 的持有者和 Uniswap 的流動性提供者,能夠拒絕治理程序的提議。如果有足夠數量的用戶發起否決,那麼時間鎖就會延長,以讓更多用戶來支持或拒絕這個否決。結果是開發者也可以快速應變,但用戶也有保護自己的辦法。

  • 支持追索------ 如果只有時間鎖,惡意升級會導致大家擠兌、踩踏。現在用戶用不著立即退出了。

  • 安全閥 ------ 在惡意提案的語境下,一個缺席的用戶不用擔心丟失資金(不需要像瞭望塔一樣的服務)。只需少部分用戶監控時間鎖就能保證大家的安全。

樂觀許可方法本質上是改變了治理的激勵,所以跑路是無利可圖的。要嘗試跑路時,細心的用戶會發起否決,保護自己和其他用戶。治理者會碰一鼻子灰,因為攻擊無法得逞,用戶也會更不願意加入這個協議。【0】

樂觀許可的一個關鍵是確定哪個團隊有資格發起否決。在 MakerDAO 這樣的系統中,CDP 的主人和 DAI 的持有都應該具有否決權嗎?還是只有某個團隊應該有?【1】

長期治理者

治理程序必須與協議的長期成功方向一致。一般來說,這需要代幣持有者鎖定資本或者證明他們是長期主義者。前者的形式有不限期質押以及到期釋放制(也就是 Curve 這種)。後者的形式有終身投票制(持有代幣時間越長的用戶的投票權重越高)。

通常來說,可以用衍生品產品和智能合約來耍弄代幣鎖定機制 【2】。而終身投票制也不能保證一個長期持有代幣的人仍想繼續做一個長期主義者。也許到了這個長期持幣者有更多權力的時候,他會覺得改變一下思路會更有利可圖。

一個替代的辦法是延遲給治理代幣持有者的資本回報(分紅 / 回購-銷毀),並設定 穩定性 / KPI 指標 上的條件。這背後的理由是,治理程序不應該獲得當下的協議成長的回報,而應該獲得未來成長的回報,以保證他們一直幹得好。本質上,如果系統變得不再可靠,那治理程序要負起責任(他們就拿不到回報)。相反,這些獎金都應該以系統繼續健康生長為條件。一個鮮明的對比:銀行家和政客的短期激勵機制。DeFi 給了用戶一個機會,在治理結構中糾正這一點。

降低 GEV 會提高協議的可信度

雖然有很多的 ape 和 degen,以至於當下看來,即使高風險的協議也會獲得資本和用戶 ------但大多數用戶都更加厭惡風險。GEV 也是風險之一,而且比直接跑路的風險要更普遍。設計制衡 GEV 的系統將是 dApp 獲得普及並實現其去中心化金融最初願景的關鍵。願天下無跑路。

腳註:

【0】 Aave 治理程序有一個多簽名的後門守衛,可以否決惡意的提議(更多是為開發者準備的,而不是給用戶服務的)。

【1】對否決機制的扭曲可以給惡意提議者製造一個毒丸(即罰沒)------ 雖然這可能被濫用,需要額外的分析。開啟罰沒功能是危險的,除非其條件是可以證明的。舉個例子,要證明一個驗證者簽名了兩個相互競爭的區塊很容易(PoS);在給定的狀態前提下證明某筆交易是有效的也很容易(檢驗區塊的有效性),但並不容易用這些方法來證明某個治理決策是惡意的。最後就會變成由共識的代理人來判斷它是不是壞的,但這跟它本身壞不壞並不是一回事。這就會引出一系列的問題:如何保護少數股東對抗多數的暴政呢?

【2】智能合約可以設計成鎖定治理代幣並交易一種代表鎖定資產的衍生代幣。可以用黑名單功能來禁止合約參與治理,但這樣也會禁用多簽名的錢包(雖然可以通過白名單來允許使用特定的字節碼,等等)。

鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
ChainCatcher 與創新者共建Web3世界