在建造比特幣 Layer2 的同時,我們應充分認識到「西學東用」的意義,對以太坊社群的諸多結論進行適度的吸收與優化。但在藉鏡比特幣生態以外的觀點時,我們有必要意識到其出發點的差異,並最終做到求同存異。
(前情提要:比特幣Layer2是什麼?與側鏈有何不同,解析技術難點、未來潛力 )
(背景補充:比特幣Layer2的真正三難困境:閃電網路、Stacks、Rootstock.. )
美國管理學家勞倫斯・彼得曾提出 「木桶理論」,該理論認為,一個系統的整體效能,被其最薄弱的部分所限制。換言之,一個木桶能裝多少水,由它最短的那塊木板決定。這個道理雖然簡單,卻又常被忽視。以往對 Layer2 安全性的辯論,大多忽視了不同元件的優先順序與重要程度,基本都集中在狀態轉換可靠性與 DA 問題上,卻忽視了更底層更重要的要素,這樣下來整套理論根基可能都站不住腳。所以,當我們對多模組的複雜系統展開探討時,要先摸清楚哪塊是 「最短的木板」。
受到木桶理論的啟發,我們做了系統分析之後發現,比特幣 / 以太坊 Layer2 安全模型中的不同元件間,也存在明顯的依賴關係,或者說某些元件的安全性要比其他元件的安全性更基礎、更重要,即所謂 「更短」。
對此,我們可以初步對主流 Layer2 安全模型中不同元件的重要程度 / 基礎程度,進行如下優先順序排序:
1. 合約 / 官方橋的控制權限是否被合理分散(多籤控制權有多集中)
2. 是否有抗審查的提款功能(強制提款、逃生艙)
3. DA 層 / 資料釋出形式是否可靠(DA 資料是否釋出在比特幣、以太坊上)
4. 是否在 Layer1 上部署了可靠的欺詐證明 / 有效性證明系統(比特幣 L2 需要藉助於 BitVM)
我們應該適度吸收以太坊社群對 Layer2 的研究成果,避免李森科主義
相比於高度秩序化的以太坊 Layer2 體系,比特幣 Layer2 猶如一片嶄新的天地,這個在銘文熱潮後顯得愈發重要的新概念,在表現出崛起勢頭的同時,其生態體系卻日漸混亂、趨於混沌,霎時間各種 Layer2 專案方層出不窮,有如雨後春筍。他們在為比特幣生態帶來希望的同時,卻刻意隱瞞自身的安全風險,甚至曾有人揚言 「否定以太坊 Layer2,走比特幣生態獨特道路」,大有走極端主義路線的勢頭。
考慮到比特幣與以太坊在功能屬性上的不同,比特幣 Layer2 在早期註定無法向以太坊 Layer2 對齊,但這並不能說明,我們應當徹底否定以太坊乃至模組化區塊鏈界早有定論的行業常識(參考前蘇聯生物學家李森科,借意識形態問題,迫害西方遺傳學支援者的 「李森科事件」)。
恰恰相反,這些由 「前人」 花費巨大努力取得的評判標準,在得到了廣泛認可後,早已表現出強大的說服力,刻意否定這些成果的價值,絕非理智之舉。
在建設比特幣 Layer2 的同時,我們應當充分認識到 「西學東用」 的意義,對以太坊社群的諸多結論進行適度的吸收與優化。但在借鑑比特幣生態之外的觀點時,我們有必要意識到其出發點的差異,並最終做到求同存異。
這就像是在探討 「西方人」 與 「東方人」 的同與異。不管是西方的還是東方的,「人」 這個字尾都表達了很多相似的特徵,只是在對應 「西方」 和 「東方」 這種不同字首時,會在細分特徵上有所不同。
但歸根結底,「西方人」 和 「東方人」 之間註定存在重合,這就意味著,許多適用於西方人的東西,在東方人身上同樣適用,許多適用於 「以太坊 Layer2」 的東西,也同樣適用於 「比特幣 Layer2」。在區分比特幣 L2 與以太坊 L2 的不同前,先理清兩者之間的互通之處,或許是更為重要、更有意義之事。
秉著 「求同存異」 的宗旨,本文作者並不打算探討 「什麼是比特幣 Layer2,什麼不是」,因為這個話題爭議過大,就連以太坊社群都沒有就 「哪些是以太坊 Layer2,哪些不是 Layer2」 而達成客觀一致的見解。
但可以肯定的是,不同的技術方案在為比特幣帶來擴容效應的同時,其安全風險各有不同,其安全模型中存在的信任假設,將是本文打算重點探討的話題。
如何理解 Layer2 的安全性及評判標準
其實,Layer2 的安全性不是一個新鮮的討論點。甚至就連安全性這個詞,也是一個包含了多個細分屬性的複合概念。
此前 EigenLayer 創辦人曾將 「安全性」 簡單的細分為 「交易不可逆轉性(抗回滾性)、抗審查性、DA / 資料釋出可靠性、狀態轉換有效性」 等 4 個要素。
而 L2BEAT 和以太坊社群 OG 曾提出比較系統的 Layer2 風險評估模型,當然這些結論針對於智慧合約型 Layer2,而非主權 Rollup、客戶端驗證等典型的非智慧合約型 Layer2。
雖然這並不 100% 適合比特幣 L2,但還是包含了值得肯定的諸多結論,其大部分觀點已經在西方社群被廣泛認可,也便於我們客觀評估不同比特幣 L2 的風險所在。
那麼安全風險都來自於哪裡?考慮到當前,無論是以太坊 Layer2 還是比特幣 Layer2,很多都依賴於中心化的節點來充當排序器,或由少數節點組成側鏈形式的 「委員會」,這些趨於中心化的排序器 / 委員會如果不受限制,可以盜取使用者資產並隨時跑路,可以拒收使用者的交易請求,導致資產被凍無法使用。這便涉及到前文 EigenLayer 創辦人提到的狀態轉換有效性和抗審查性。
同時,由於以太坊 Layer2 依賴於 ETH 鏈上的合約進行狀態轉換驗證和充提款行為驗證,合約控制者(其實就是 Layer2 官方)若能快速更新合約邏輯,在其中摻雜惡意程式碼段(比如,允許某個指定的地址,把 L1-L2 充提款合約上鎖定的代幣全部轉走),就可以直接盜走託管的資產。
這被歸結為 「合約多簽分配問題」,而多簽分配問題一樣適用於比特幣 Layer2,因為比特幣 Layer2 往往依賴於 「公證人橋」,需要多個節點通過多籤來放行跨鏈請求,所以比特幣 Layer2 身上也存在多籤如何合理分配的問題,我們甚至可以把它看作比特幣 Layer2 身上最基礎的 「輔助輪」。
此外,DA 問題也極為重要。如果 Layer2 不把資料上傳到 Layer1,而自行選用一些不可靠的 DA 釋出場所,假如這種鏈下 DA 層(一般稱為 DAC 資料可用性委員會)發生串謀,拒絕對外發布最新交易資料,資料扣留攻擊將導致網路報廢,並可能使得使用者無法順利提款。
L2BEAT 對上述問題進行了總結,並歸納出了 Layer2 安全模型中幾個核心的要素:
- 狀態驗證 / 證明系統是否可靠(State Validation)
- DA 資料釋出方式是否可靠(Data Avalibility)
- 如果 Layer2 網路故意拒收你的交易 / 停機,你能否將資產強制撤出 Layer2(Sequencer Faliure、Proposer Failure)
- Layer2 相關合約 – 官方跨鏈橋的控制權,是否足夠分散。如果權力比較集中,發生 「監守自盜」 時,使用者能否有足夠的時間去應急(Exit Window)
Anyway,當我們分析 Layer2 安全隱患時,其實就是在探討,Layer2 網路記憶體在多少可能導致使用者資產受損的場景,對於這些危險情況,Layer2 系統又能否通過機制設計進行有效制約。如果某些惡意行為是無法杜絕的,我們又需要引入多大程度的 「信任」,需要信任一個群體中的多少個體,需要依賴於多少 「輔助輪」。
下文中我們將對通用的以太坊 Layer2 / 比特幣 Layer2 模型中,存在的風險要素進行分析(本文所談及的物件不包含 「狀態通道」 或 「支付通道」,也不包括銘文索引協議,因為它們比較特殊)。並且我們會嘗試探討,哪些因素是 Layer2 安全模型中,更基礎、更底層、更重要的,這些更為基礎的短板,將是比其他短板更值得我們去重視的信任風險。
Layer2 的木桶效應 —— 短板都有哪些
最短的那塊板 —— 合約 / 官方橋的管理權
在這裡,我們不妨用 「木桶效應」 分析 Layer2 安全問題,很容易看出,最短的一塊木板就是上文有所提及的 「合約可升級性」(主要針對以太坊 Layer2),或者更進一步的說,是 「官方跨鏈橋的管理權」(比特幣和以太坊 Layer2 都適用)。
可以說,橋接合約的控制權限關乎整個系統的安危,它是整個 Layer2 乃至模組化區塊鏈堆疊中最基礎、最關鍵的部分。如果橋接元件 / 合約是可以在多籤控制下更新迭代的,那我們就要在這裡引入 「信任假設」,假設 Layer2 合約 / 官方橋的控制者不會作惡。
不同於以太坊 Layer2 的是,比特幣 Layer2 的橋基本不受 Layer1 上的合約控制,因為比特幣本來就不支援智慧合約。相對而言,以太坊 Layer2 的整個工作流程都高度依賴於 Layer1 上的合約,而比特幣 Layer2 不能這麼做。
這對於比特幣 Layer2 而言,是避不開的問題,可以說既有好處也有壞處。目前看來,以太坊 Layer2 依賴合約實現的 「去信任化的橋」,在比特幣 L2 身上無法實現。這種 「Trustless Bridge」 需要在 Layer1 上部署專用合約,同時需要 DA + 欺詐證明 / ZK 證明系統的配合,本質類似於 Orbiter 那種 「樂觀橋」 或 Polyhedra 這類 ZK 橋。
目前業界的主流觀點是,若不考慮實踐中可能存在的 bug,僅考慮理論模型,樂觀橋和 ZK 橋的安全級別基本是最高的一檔,只要合約程式碼不包含 bug,或者不能被惡意升級,基本就是去信任化的。
由於比特幣 Layer2 沒辦法在 Layer1 上部署合約元件(這裡不談論閃電網路),它的官方橋基本都是少數節點組成的 「公證人橋」,或者叫 「多籤橋」,這種橋的安全性,取決於多籤 / 閾值簽名的設定方式,需要引入較強的信任假設:假設這些公證人不會合謀,或者不被盜取私鑰。
目前大多數基於公證人 / 閾值簽名的橋,在安全性上無法與以太坊 Layer2 官方的 「去信任化橋」 相提並論(其前提是以太坊 Layer2 的合約不會發生惡意升級)。很顯然,比特幣 Layer2 網路託管的資產安全性,將會受制於其官方橋的安全性,或者說受限於多籤橋的權力分散度,這是其第一處 「輔助輪」 所在。
由於以太坊 Layer2 官方橋相關合約的 「升級許可權」,往往也集中在少數幾個多籤控制者手上,如果多籤控制者串謀,以太坊 Layer2 的橋也會出問題,除非其合約不可升級,或是受到了很長的延時限制(目前只有 Degate 和 Fuel V1 如此)。
關於 「官方橋」 這部分,以太坊 Layer2 和比特幣 Layer2 的信任模型基本一致:需要信任多籤的控制者不會串謀作惡,這組多籤可以控制 L2 官方橋,要麼更改其程式碼邏輯,要麼直接放行無效的提款請求,最後的結果都是:使用者資產可能被盜。
兩者唯一的區別是,以太坊 Layer2 只要合約不惡意升級 / 升級視窗期足夠長,其官方橋就是去信任的,但比特幣 Layer2 無論如何都達不到這種效果。
第二短的板 —— 抗審查的強制提款
如果我們假設,前文所說的合約多籤 / 官方橋控制權問題可以無視,也就是這一層沒有問題,那麼接下來最重要的一層,必然是提款行為的抗審查性。
關於抗審查強制提款 / 逃生艙功能的重要性,Vitalik 在幾個月前的文章 「Different types of layer 2s」 中曾強調,使用者能否順利的把資產從 Layer2 撤回至 Layer1,是一個非常重要的安全指標。
如果 Layer2 的排序器一直拒絕你的交易請求,或者長時間故障 / 當機,你的資產將被 「凍結」,什麼都幹不了。即便 DA 和欺詐證明 / ZK 證明系統可用,如果沒有抗審查方案,這樣的 Layer2 也是不夠安全的,隨時可以把你的資產扣住。
更何況,曾在以太坊生態盛極一時的 Plasma 方案,允許任何人在 DA 失效或欺詐證明失效時,安全的把資產撤出至 Layer1。這個時候,整個 Layer2 網路基本報廢,但你的資產仍有辦法全身而退。顯然,抗審查的提款功能,要比 DA 與證明系統更基礎、更底層。
部分以太坊 Layer2,如 Loopring 和 StarkEx、dYdX、Degate 等,會在 Layer1 上設立一個抗審查的強制提款 / 逃生艙啟用函式,以 Starknet 為例,如果使用者在 Layer1 上提交的 Forced Withdrawal 請求,在 7 天視窗期結束時,未得到 Layer2 排序器響應,則可以手動呼叫 freeze Request 功能讓 L2 進入凍結狀態,啟用逃生艙模式。
此時,排序器無法向 L1 上的 Rollup 合約提交資料,整個 Layer2 將凍結一年。然後,使用者可以提交 merkle proof,證明自己在 Layer2 上的資產狀態,並在 Layer1 上直接提款(其實就是從官方橋的充提款地址中,把屬於自己的等額資金拿走)。
很顯然,逃生艙模式只能在以太坊這種支援智慧合約的鏈上實現,比特幣無法執行這麼複雜的邏輯。換言之,逃生艙功能基本是以太坊 Layer2 的專利,比特幣 Layer2 必須藉助於一些額外的輔助手段,照貓畫虎的模仿,這就是第二處 「輔助輪」。
但單純宣告 「強制提款請求」,要比直接啟用逃生艙方便的多。前者只需要讓使用者在 Layer1 上向指定地址提交一筆交易,並在交易的附加資料中,宣告自己想提交給全體 Layer2 節點的資料(這樣可以直接繞開排序器,向其它 Layer2 節點傳達請求)。如果 「強制提款」 長時間得不到響應,使用者再去觸發逃生艙模式,是一種比較合理的設計。
目前,已經有比特幣 Layer2 團隊打算模仿 Arbitrum 的強制交易實現方式,允許使用者在比特幣鏈上釋出強制交易宣告(Forced Transaction Envelopes)。這種方案下,使用者可以繞開排序器直接向其它 Layer2 節點 「傳達心聲」。如果排序器在看到使用者的強制交易聲明後依然拒絕其請求,將會被其他 Layer2 節點察覺並可能受到懲罰。
但問題在於,Arbitrum 的強制交易功能,受益於其欺詐證明系統,可以懲罰一直無視使用者交易的 Sequencer/Proposer。但對於難以在 Layer1 上驗證欺詐證明的比特幣 Layer2,會在這方面遇到一定挑戰。(暫且不討論 BitVM)如果是主權 Rollup 這種安全級別與客戶端驗證並無太大差異的方案,我們很難嚴肅的評估其可靠性,可能要針對不同專案的實現細節進行評估。
當然,鑑於目前很多比特幣 Layer2 以類似於側鏈的形式運轉,相當於實現了去中心化排序器,可以一定程度上解決抗審查問題。但這只是一種有效的輔助手段,肯定不是終極解決方案。
ps:現在的一些 Layer2 方案,如 Validium 等,在逃生艙的機制設計上並不完善,排序器發動資料扣留攻擊 / DA 不可用時,可以讓使用者無法提款。但這歸因於 Layer2 逃生艙設計的不完善,理論上來看,最優的逃生艙提款可以只依賴於歷史資料,不需要對 DA / 新資料的可獲得性產生依賴)
第三短的板:DA 層資料釋出的可靠性
DA 雖然被稱作資料可用性,但這個名詞實際指的是資料釋出,只是因為 Vitalik 和 Mustafa 在最初給這個概念起名字時,沒有深思熟慮,才有了 DA / 資料可用性這種名不符實的叫法。
資料釋出,顧名思義,說的是:最新的區塊 / 交易資料 / 狀態轉換引數,能否被有需要者順利接收到。在不同的鏈上釋出資料,其可靠性都不一樣。
西方社群普遍認為,比特幣、以太坊等老牌公鏈,是最去信任的 DA 層。如果 Layer2 排序器在以太坊上釋出了新的資料,任何人只要執行以太坊 geth 客戶端,就能下載到這些資料並進行同步,幾乎不會受到任何阻攔,這是憑藉以太坊網路龐大的規模,和繁多的公開資料來源來實現的。
值得一提的是,以太坊 Rollup 會強行要求排序器在 Layer1 上釋出交易資料 / 狀態轉換引數,這一點是通過有效性證明 / 欺詐證明來保證的。
比如,ZK Rollup 的排序器在 Layer1 上釋出交易資料後,會觸發合約邏輯生成一個 datahash,而驗證器合約要確認,Proposer 提交的有效性證明和 datahash 有對應關係。
這等價於:確認 Proposer 提交的 zk Proof 和 Stateroot,與 Sequencer 提交的 Tx data,是關聯在一起的,即 New Stateroot=STF (Old Stateroot,Txdata)。STF 就是 state transition function 狀態轉換函式。
這樣可以保證將狀態轉換資料 / DA 強行上鏈,如果只提交 stateroot 和有效性證明,將無法通過驗證器合約的 verify。
關於 DA 資料釋出與證明驗證系統哪個更基礎,以太坊 / Celestia 社群早已進行過充分討論,普遍結論是:DA 層是否可靠,要比欺詐證明 / 有效性證明系統的完備性更重要。比如說,Plasma、Validium、Optimium 這類 ——DA 層在以太坊鏈下、結算層在以太坊鏈上的方案,容易遭遇 「資料扣留攻擊」,就是指:
Sequencer/Proposer 可以與 ETH 鏈下的 DA 層節點串謀,在 Layer1 上更新 stateroot,但扣住狀態轉換對應的輸入引數不發出來,讓外人無法判斷新的 stateroot 是否正確,成為 「睜眼瞎」。
這種情況發生的話,整個 Layer2 網路相當於報廢,因為這時,你根本不知道 Layer2 帳本變成了什麼樣。如果是基於欺詐證明的 Layer2(Plasma 和 Optimium),排序器可以隨意改寫任意帳戶下的資料 / 資產;如果是基於有效性證明的 Layer2(Validium),雖然排序器不能隨便改寫你的帳戶,但此時整個 Layer2 網路成了黑箱,沒人知道里面發生了啥,跟報廢沒區別。正因為如此,以太坊生態內的正統 Layer2 方案,基本都是 Rollup,而 Validium 和 Optimium 往往不被以太坊基金會認可。
所以,DA 層的可靠性 / 狀態轉換引數的可獲得性,比欺詐證明 / 有效性證明系統的完備性更重要,更基礎。對於比特幣 Layer2,,尤其是基於客戶端驗證模型的 Layer2 而言,即便沒有在 Layer1 上設定欺詐證明 / 有效性證明驗證系統,只要 DA 層照常工作,大家依然能知道 L2 網路是否出現錯誤的狀態轉換。
目前比特幣主網難以驗證 欺詐證明 / 有效性證明(此處不探討 BitVM),我們先假設比特幣 L2 沒有證明驗證系統。理想狀態下,如果 L2 排序器真的作惡,在結算層 / BTC 上釋出一個與 DA 資料無關聯的 stateroot,它還是無法真正意義的盜取使用者資產,因為它單方面提交的 stateroot / 狀態轉換結果,不會被誠實節點認可,到最後可能只是自嗨。
如果是類似於側鏈的模型,多數節點串謀執行惡意的狀態變更,人們也可以很快發現問題。只要跨鏈橋、交易所這類第三方設施不認可錯誤的資料,Layer2 / 側鏈的惡意控制者就無法成功套現,除非他說服別人與他在鏈上直接 OTC。
這裡有一個很有意思的點,其實無論是以太坊 Layer2,還是比特幣 Layer2,都可以做到 「客戶端驗證」。但以太坊 Layer2 在 「客戶端驗證」 的基礎上,藉助 Layer1 和證明驗證系統,保證狀態轉換的有效性,基本不必依賴於社會共識(前提是有成熟的欺詐證明 / 有效性證明系統)。
而比特幣 Layer2 的 「客戶端驗證」 方案往往對 「社會共識」 有較強依賴,會帶來相應的風險(對於比特幣 Layer2 而言,這種安全風險基本可控,但還是可能導致某些人損失資產。對於以太坊 Layer2 而言,因為其官方橋需要證明系統的配合,如果證明系統不完善,排序器可以盜取使用者資產並提到 L1 上跑路。當然,具體要看跨鏈橋元件怎麼設計)。
所以說,一個能在 Layer1 上實現欺詐證明 / 有效性證明驗證系統的 Layer2,永遠都要比單純的 「客戶端驗證」 模型好的多。
PS: 由於大多數採用了欺詐證明 / 有效性證明系統的比特幣 Layer2,無法讓 Layer1 直接參與到證明驗證流程,所以其本質仍然只是把比特幣當做 DA 層,安全模型等價於 「客戶端驗證」。
理論上來看,在 Layer1 上通過 BitVM 方案,可以在比特幣鏈上驗證欺詐證明,但這種方案工程落地難度很大,會遇到很大挑戰。鑑於以太坊社群早已對基於 Layer1 的證明驗證系統做出了特別多的討論,已經人盡皆知,所以本文不打算對 「基於 Layer1 的證明驗證系統」 進行贅述。
總結
經過簡單的木桶模型分析,我們可以初步得出結論:主流的 Layer2 安全模型中,按照重要程度 / 基礎程度,可以進行如下排序:
1. 合約 / 官方橋的控制權限是否被合理分散
2. 是否有抗審查的提款功能
3. DA 層 / 資料釋出形式是否可靠
4. 是否在 Layer1 上部署了可靠的欺詐證明 / 有效性證明系統
當然,我們並沒有對閃電網路 / 狀態通道及 ICP 生態的 ckBTC、銘文索引協議等方案進行分析,因為它們與典型的 Rollup、Plasma、Validium 或客戶端驗證方案存在較大差異。由於時間關係,我們還難以對其安全性與風險要素進行審慎的評估,但考慮到它們的重大意義,日後相關的評估工作必將如期進行。
同時,對於銘文索引協議是否該被看作 Layer2 一事,諸多專案方之間存在嚴重的分歧,但毋論 Layer2 定義之事,銘文索引協議等新事物為比特幣生態帶來了充分的技術創新,並終將迸發出巨大的活力。