Web3 版標普穆迪 L2BEAT 是怎麼評估 Layer2 項目的?
- 作者|Faust,極客web3
提到 L2BEAT 這個名字,大多數人可能有所耳聞,但對其所作所為並不太了解。在 2023 年前相當漫長的時間裡,人們對 L2BEAT 的印象往往只是「以太坊 Layer2 的數據可視化平台」,除了 L2 賽道的 TVL 數據展示與技術方案分類以外,大家對 L2beat 的功能似乎不甚了解。但隨著今年 6 月上線的 Layer2 風險評級指標逐漸興起,L2BEAT 這個堪比「以太坊 L2 評級機構」的小眾組織得以被越來越多的人所知曉。
當提到「評級機構」四個字時,《世界是平的》一書中曾有極為生動的比喻:「我們生活在兩個超級大國的世界裡,一個是美國,一個是評級機構。美國可以用炸彈摧毀一個國家,評級機構可以用債券降級毀滅一個國家;有時候,兩者的力量說不上誰更大。」
從 97 年亞洲金融風暴到 07 年次貸危機,華爾街評級機構都扮演了舉足輕重的角色,甚至成為了這些惡性事件的重要推手。而在 Web3 這個表面講究「去信任化」實際依靠「社會共識」的圈子裡,「風險評級」是始終繞不開的重要一環。無論是合約代碼審計還是鏈上異動分析,它們的價值絲毫不遜於零知識證明與共識算法,甚至有過之無不及。
對模塊化區塊鏈這個新領域而言,一套客觀、全面,且能夠把不同 Layer2 區分開的風險評估指標尤為重要,尤其是在 L2 體系已承載近百億美元資產的當下,如何更好的發現 L2 潛在風險、更好的警示大眾,已經是一個不可逃避的現實問題。
在 2022 年的一篇論壇博客中,Vitalik 提到,目前幾乎所有的 Rollup 都不算成熟,大多採用了被稱為 Training Wheels(輔助輪)的輔助手段,來保障 Rollup 的正常運轉。「輔助輪」反映了 Rollup 項目在多大程度上依賴於「人工干預」和「社會共識」,越少依賴輔助輪的 L2 越「去信任化」,風險越低;反之則風險越高。
比如,包括 Optimism 在內的樂觀 Rollup,大多沒有上線欺詐證明系統,這極大抬高了風險級別;還有不少 L2 如 Immutable X 把 DA(數據可用性)放在 ETH 鏈下實現,亦或是像 Starknet 一樣缺乏可隨時調用的強制提款/強制交易功能。對於 Layer2 而言,上述條件是保證其「等同於 ETH 安全性」的必要條件。當然除了這些之外,目前幾乎所有的 L2 項目方都給自己留了「後門」,靠一組多簽來管理 L2 在以太坊上的合約代碼,並可隨時更改狀態哈希,這也是巨大的隱患所在。
為了更好的區分和定義 Rollup,Vitalik 等人根據一個 Rollup 項目對輔助輪/人工干預的依賴程度,把 Rollup 劃分為 3 個等級,即 Stage 0、Stage 1、Stage 2。後來 L2beat 通過社區徵集意見的方式對這套分類方案進行了修正,大致可以歸納如下:
Stage 0 — — 完全依賴輔助輪,一個Rollup應滿足的最低標準:
- 該項目自稱是 Rollup。
- Rollup 處理的交易應該「on-chain」(涉及 L2 狀態轉換過程的數據都要披露至 L1,同時還要披露 L2 狀態的哈希 Stateroot;)
- 應該設置一批權限開放且代碼開源的 Rollup 全節點,可以幫助用戶獲知 L2 上全體帳戶的狀態(包含餘額、交易次數等)。
滿足上述全部條件的 L2 項目才會被 L2beat 標記為 Stage 0,也即滿足一個 Rollup 的最低標準,否則將不被視作一個 Rollup(比如 Arbitrum Nova)。
而 Stage1 — — 部分依賴於輔助輪的 Rollup,有以下特徵:
- 必須上線欺詐證明/有效性證明系統,保證 L2 狀態轉換的有效性;
- 如果是樂觀 Rollup,至少要有 5 個非官方控制的 L2 節點可發布欺詐證明(挑戰者白名單裡至少包含 5 個 Rollup 官方之外的實體)。
For Example,截至 2022 年 11 月,Arbitrum One 的挑戰者白名單成員包括 9 個實體:Consensys、以太坊基金會、L2BEAT、Mycelium、Offchain Labs、P2P、Quicknode、DLRC、Unit410。
- 任何時候,用戶都可以繞開排序器 Sequencer(Operator),把在 L2 的資產強制提款到 L1,以保證不會被凍結資產;如果排序器發動審查攻擊,拒絕處理某些交易,用戶可以強行把交易提交進 L1 上的 Rollup 交易序列。除了發布錯誤的 Stateroot 外,排序器找不到其他作惡方式。
- Rollup 可以設置安全委員會,由一組多簽管理,有在緊急情況下強制升級 Rollup 合約的權力,或者乾預合約上記錄的 L2 狀態哈希。但委員會多簽私鑰必須足夠分散,且閾值夠高。 Vitalik 本人認為,這個數值至少應是 6/8,即多簽被超過 8 個人管理,生效閾值是 75%。
- 並非由委員會多簽授權的 Rollup 合約升級,至少受到 7 天的時間鎖延時限制。這樣一來,如果 Rollup 遭遇治理攻擊等惡意的更新提案(參考 Tornado Cash 治理攻擊事件),可以給用戶至少 7 天的時間來安全提款。
目前的主流 Rollup 僅有 Arbitrum One、dYdX、zkSync Lite 達到了 Stage1 的要求,其他主流 Rollup 均停留在 Stage0 階段。
Stage2 — — 完全拋棄輔助輪,成為一個徹底的 Rollup:
- 樂觀 Rollup 網絡裡可發布欺詐證明的 L2 節點應當 Permissonless,取消白名單設定(對此,Arbitrum One 近期推出了名為 BOLD 的協議);
- 所有的 Rollup 合約升級行為至少受到 30 天以上的時間鎖延時限制,或者乾脆無法升級合約。這意味著 Rollup 發生惡意的升級時,L2 用戶有至少 30 天的時間安全提款。
為了更好的理解 L2BEAT 羅列出的風險評級指標,我們可以挑選三個不同安全級別的 Rollup 實例進行解析。
Stage0-Base, Stage1-Arbitrum One, Stage2-Fuel:
Base 是樂觀 Rollup 賽道的頭部項目之一,它靠 L1 上的合約來記錄 L2 狀態哈希 Stateroot、處理進出 L2 的資金,並且借助以太坊實現數據可用性(DA),與 L1 有橋接關係。
Base 排序器需要把 L2 的交易數據披露至 L1,具體而言,排序器大概每隔幾分鐘,就向以太坊上的指定地址發起一筆 Transaction,在 Transcation 的可自定義的附加數據 Calldata 中,記錄一批壓縮後的交易數據。由於 L2 全節點會自動同步 L1 區塊,它們可以監測到排序器發出的這筆交易,在其 Calldata 裡解析出 L2 的交易數據,進而獲知 L2 排序器的最新狀態,並計算出正確的狀態哈希 Stateroot,與 L1 上排序器提交的 Stateroot 進行比較。
目前 Base 沒有上線欺詐證明系統,無法保障 L1 合約中記錄的 L2 Stateroot 是正確的,但有能力運行 L2 全節點的用戶可以及時發現錯誤所在;此外,Base 沒有強制提款等抗審查攻擊的方案,如果排序器長時間宕機或者故意拒絕用戶請求,L2 用戶將無法安全提款至 L1,所以它存在巨大的安全隱患。
顯然,這樣的 Rollup 在機制設計層面是不安全的,但用戶和 L2 社區成員可在必要時刻通過社交媒體發出警告,讓以太坊基金會乃至 SEC 等監管機構意識到危險發生,這就是所謂的「社會共識」,即通過高度的數據透明和社區成員自發監督,以「輿論發酵」和「人工干預」及後續「法律追責」的方式來制約 L2 項目方的作惡行為,屬於最低級別的安全保障,因為它無法在事前就制止作惡,而只能在作惡行為發生後追責。
但事實上,「社會共識」也是保障區塊鏈安全的基礎條件(如果有人嘗試惡意分叉以太坊,以太坊社區也會通過社會共識確定哪個分叉鏈是應該追隨的),並且惡意行為者顧及到自己所作所為被曝光的後果,大多數時候不敢挺而走險(當然 FTX 和 ZT、門頭溝等交易所除外)。
當我們把考察對象換為 Arbitrum One 時,可以立刻看到它與 Base 的不同。比如它上線了可用的欺詐證明系統,設立挑戰者白名單,其中包含以太坊基金會和 L2beat 在內的 9 個不同實體運行的節點,只要排序器往 L1 發布了錯誤的狀態哈希 Stateroot,挑戰者節點就會發布欺詐證明,這樣可以確保 Rollup 合約裡記錄的 L2 Stateroot 是正確的;
同時,Arbitrum One 有應對排序器審查攻擊的強制交易機制,允許用戶調用 L1 上的 Sequencer Inbox 合約的 force Inclusion 函數,將交易指令直接提交至 L1;如果在 24 小時內,排序器沒有處理這筆需要「強制包含」的交易/提款,該交易/提款指令會被直接包含進 Rollup 交易序列中,這就為用戶創造了一個可以從 L2 強制提款的「安全出口」。
這裡需要強調,在 Stage1 級別的 Rollup 項目中,用戶只要可以獲知 L2 的全體帳戶狀態,構造對應自己帳戶餘額的 Merkle Proof,就可以通過 Rollup 合約裡的指定函數來強制提款(這個功能一般稱為逃生艙 Escape Hetch)。至於如何獲知 L2 上帳戶的狀態,要看 Rollup 網絡內是否有對外開放數據的全節點(幾乎所有的 L2 都有這類節點)。
此外,Arbitrum One 的合約升級行為受到多種因素限制,比如:正常的合約升級提案,要先通過鏈上治理的投票決策,投票閾值通過後,又會受到時間鎖限制(有 12 天的延時),之後才會被自動執行。如果該合約升級提案包含惡意的代碼邏輯,可以被安全委員會否決(通過多簽來執行)。
但 Arbitrum One 安全委員會本身可以越過時間鎖的限制,比如只要 9/12 多簽通過,安委會就可以立刻 upgrade 合約代碼,或者是強行更改 Rollup 合約裡記錄的 L2 Stateroot。
至於安全委員會憑什麼有這麼大的權力,Vitalik 曾如此解釋:
「有些 Rollup 可能採用了多個獨立的狀態轉換函數,比如有兩個持不同觀點的的欺詐證明發布者,或者有多個 Prover 節點提交了不同的有效性證明,或是排序器嘗試在 L1 上分叉 L2 帳本,亦或是有效性證明在 7 天內都沒有被提交上鏈,都可能導致 L2 系統徹底崩潰。安全委員會可以在這種危險局面下做出裁決,用人工干預的方式引導系統採用正確的結果。」
當然,Vitalik 只是列舉了幾種簡單的「危險情況」,考慮到 Rollup 合約可能遭遇黑客攻擊,排序器也隨時可能被黑(或者出內鬼),緊急的應對措施顯然是必要的。
按照 Vitalik 的看法,如果是完善的 Rollup,合約可以升級,但必須有大於 30 天的時間鎖延時,給用戶和社區成員足夠長的反應時間。
顯然,由於 Arbitrum 的安全委員會可以在多簽通過後立刻升級合約,如果新版本代碼裡包含惡意的業務邏輯,理論上可以捲走用戶在 L2 的資產。所以 Arbitrum One 並不符合 Vitalik 對完善的 Rollup 的定義,只是風險級別比較低。
當我們要考察「完善的 Rollup」時,L2BEAT 上只有兩個項目滿足條件:Fuel V1 和 DeGate。其中,Fuel V1 是最早上線欺詐證明系統的樂觀 Rollup,它的欺詐證明提交是 Permissionless 的,所有人都可以運行節點並在必要時發布欺詐證明。同時,Fuel V1 的合約被寫死了,根本無法升級,委員會也無法干預 Rollup 合約上記錄的 L2 Stateroot,所以不存在所謂的安委會風險。
Fuel V1 達到了最低的風險級別,但其每次更新迭代都要重新部署合約,並且需要用戶手動把資產遷移至新版本,實質就是重做了一個新項目,這樣的後果是流動性的割裂,極大的降低了靈活性。由於編程模型採用 UTXO 而不兼容 EVM、創始人後來轉投 Celestia 團隊等多重原因,Fuel 的發展逐漸停滯,生態建設也不盡人意。
總而言之,追求絕對的安全帶來的代價就是更新迭代的不靈便,而在欺詐證明與有效性證明技術尚未完善的當下,保持一定的合約可升級性,或許是 Rollup 必須要具備的 feature。
在未來相當長一段時間裡,我們可以預見到以下情形:大多數 Rollup 都不會放棄安委會多簽,L2 合約在很長一段時間內都將具備「可立即升級性」(某 ZK Rollup 項目一直都沒有放棄安委會多簽,後來直接轉頭做新項目去了)。鑑於欺詐證明系統的開發難度,多數非頭部的樂觀 Rollup 可能無法在短期內上線欺詐證明(大概率 2023 年底還做不出來),而 Arbitrum One 將長期處於 Rollup 賽道的領先地位,雖然它尚不具備最高級別的安全,但卻擁有相對完善的欺詐證明系統、安委會多簽被合理分散(9/12 多簽,被分配給了包括 ARB 項目方成員在內的 12 名社區成員),同時也具備最龐大的 DApp 生態— — 擁有超過 440 個應用。而安全性很差、更多靠營銷的 Base 能否延續過去幾個月的增長勢頭,還有待時間的驗證。如果 Base 在 TVL 體量上能超過 Arbitrum One,或許會導致「去信任化」信仰本身的潰敗。
當然,最重要的是,我們將始終需要 L2BEAT 這類風險評級機構,在這個動盪不安、充滿混亂的時代,一套一目了然、綜合全面的風險評級指標,始終是保證以太坊體系乃至整個 Web3 蓬勃發展的關鍵所在。