原文標題:《Do Rollups Inherit Security?》
原文作者:Jon Charbonneau
原文編按:Frank,Foresight News
介紹
不管你喜歡還是討厭,Twitter 可能永遠不會停止關於「L2」或Rollup 是否「繼承安全性」(inherit security)的爭論。
雖然大多數爭論都是難以辨別的語義之戰,但如果你能設法縮小爭論範圍,那麼潛在的觀點就非常有價值,因為它們觸及了Rollup 何時、何地以及為何有意義的核心問題。
可擴展的L2 是否消除了市場對L1 的需求?有沒有可能將像Solana 這樣的L1 變成L2?
這些爭論主要歸結為安全問題。不幸的是,這裡的「安全」定義一直非常難以捉摸。我們通常會隨意使用這個術語,大多數人大致知道我們在說什麼,但又不完全清楚。我們將在這裡跨不同架構詳細分解安全性。
流行語定義
Rollup
我之前使用過Mustafa以下的定義:「Rollup 是將其區塊發佈到另一個區塊鏈並繼承該區塊鏈的共識和資料可用性(DA)的區塊鏈」。
以下則是James Prestwich給出了一個更一般的定義:「Rollup 是透過自訂狀態轉換函數,選擇加入另一個共識機制,並保留超集狀態的一種方式」。
兩者都不需要驗證橋,以最小的信任假設建立跨鏈橋接的能力是Rollup 的主要好處,但單獨分析它們至關重要。
我們可以考慮以下的Rollup 標準:
Rollup 是透過在主鏈(DA 層)上的資料輸入來執行自訂狀態轉換函數(STF)而衍生的有狀態系統(例如區塊鏈)。
用於派生遠端鏈的最終確認狀態(即Rollup)的所有輸入資料(即完整的交易資料或狀態差異)均在主鏈上確認。
由於Rollup 狀態源自於對主鏈上的資料運行的狀態轉換函數(STF),因此Rollup 的有效性取決於主鏈的有效性。然後Rollup 節點必須充分驗證主鏈的共識和有效性(或對主鏈做出誠實多數假設);
Rollup 節點透過應用自身的狀態轉換函數(STF),在主鏈共識結果上確定Rollup 的狀態(例如主鏈確認排序和可用性的資料區塊)。
跨鏈橋
跨鏈橋是允許兩個區塊鏈相互通訊的系統。鏈A(目標鏈)需要確信鏈B(源鏈)上發生了某些事件,反之亦然。理想情況下,我們希望這種通訊是雙向的,具有強相關的安全性屬性(例如訊息有效的高置信度、來源鏈不會撤銷等等)。
從根本上來說,跨鏈橋充當了另一個區塊鏈的「觀察者」(就像任何其他典型的人類用戶一樣)。跨鏈橋實現了給定的確認規則,透過該規則,它確信所連接鏈的狀態(例如,必須通過多少個以太坊區塊才能接受轉帳輸入)。
傳統跨鏈橋通常運行源鏈的鏈上共識驗證器輕節點(即它們信任大多數共識簽署的任何內容);
跨鏈橋可以透過充當完整驗證器輕節點(即新增資料可用性取樣(DAS) + 有效性/ 故障證明)來提供更強大的安全屬性。例如,鏈的驗證器可能需要在連接鏈的所有DAS 輕節點上運行,與要求驗證器運行連接鏈的完整節點相比,這是更輕量級的替代方案;
Rollup 跨鏈橋還可以保留主鏈的活躍性和抗重組性(因為Rollup 必須共享主鏈的共識);
從主鏈橋接→Rollup
這個方向非常簡單,因為Rollup 節點會完全驗證主鏈。
Rollup 節點知道主鏈上發生的一切,因此它們知道跨鏈橋接的交易何時發生,目前的以太坊Rollup 完整節點也必須為以太坊基礎層本身來運行完整節點。
請注意,如果支援的話,Rollup 節點也可以改為運行其主鏈的完整驗證器輕節點。讓我們考慮一個假設的例子,其中以太坊已經完全實現了以下升級:
以太坊執行區塊帶有有效性證明(基礎層的zkEVM 研究正在進行中);
以太坊已經實現了完整的DAS,因此節點可以對DA 進行取樣;
以太坊執行層將其資料作為blob 發佈到資料層,就像以太坊之上的任何其他Rollup 一樣(例如Celestia 的執行層資料將發佈到其DA 層,因此DAS 節點將檢查Rollup 資料和Celestia 自己的執行層的可用性);
以太坊提供了完整的共識證明,而不是依賴同步委員會(例如,透過驗證器的整合、更好的簽名聚合、可能的ZK 共識證明等);
現在,假設你想為基於以太坊的Rollup 運行完整節點,要遵循有效的Rollup 鏈,必須了解以太坊的規範鏈,這需要檢查以太坊自身的共識和有效性:
以太坊的共識-任何輕節點客戶端都可以追蹤作為區塊鏈、區塊頭簽署的共識;
以太坊自己的執行層DA——Rollup 節點會對以太坊的DA 層進行採樣,檢查Rollup 資料和以太坊自己的執行層資料的可用性(請注意,DAS 節點仍然對完整節點做出一些額外的假設,我們稍後會看到);
以太坊本身的狀態有效性-有了zkEVM,每個以太坊區塊都會附帶一個有效性證明;
Rollup 節點必須檢查以太坊本身執行層的狀態有效性和DA,因為這些是以太坊區塊的有效性條件。 Rollup 節點需要知道它不僅追蹤共識已簽署的以太坊,而且還知道它是有效的區塊頭。例如,他們可能會意外地追踪共識簽署但無效的以太坊區塊(例如它產生了大量ETH)。
如果基礎執行層本身將其資料發佈到DA 層(就像其他Rollup 一樣)並添加有效性或故障證明,那麼它將成為內置Rollup。
從Rollup → 主鏈橋接
這個方向比較棘手,因為主鏈預設不知道Rollup 的狀態和STF(即以太坊節點不需要執行Rollup 節點)。為了讓主鏈相信Rollup 的狀態,你可以在主鏈上部署的智慧合約(即rollup 的驗證橋合約)中實現Rollup 的邏輯。此智能合約檢查DA 和Rollup 狀態的有效性。
同樣,這個跨鏈橋是可選的。主鏈上的智慧合約用於使所有主鏈節點相信Rollup 的有效性,這允許在良好的信任假設下進行雙向通訊。
Rollups、協處理器(Co-processor)和意圖(Intents)
如所討論的,Rollup 除了擁有它們主鏈的狀態(例如以太坊的狀態)之外,還保存它們自己的一些狀態(Rollup 的狀態)。那麼,CoW Swap 是否有自己的狀態,而不是以太坊狀態的一部分?如果是,那麼聽起來就像是Rollup。如果不是,那麼它可能是「協處理器」(Co-processor)。
然而,即使這個問題也不像看起來那麼簡單:
相反,你可能會認為區分因素是狀態的持久性:
如果CoW Swap 允許特定的參與者向使用者提供快速的預先確認(比以太坊的出塊時間更快),並承諾包含批次處理(batch)的訂單——因為以太坊批次處理時間比大多數使用者想要的要長,那麼它現在是一個Rollup 麼?
Chris Goes在模組化高峰會的演講中探討了這個主題,首先他為意圖(Intents)提供了一個近似的定義:「對給定係統狀態空間的偏好函數的承諾」。
請注意部分解決(匹配意圖)和Rollup 排序之間的相似之處。操作員取得使用者的鏈下簽名訊息→將結果資料發佈到主鏈。
基於意圖的應用程式-由此產生的狀態變化在鏈上解決(例如,在CoW Swap 範例中,應用程式位於基礎鏈上,因此代幣在那裡進行兌換);
Rollup 應用程式-使用提交到主鏈的資料來計算Rollup 所產生的狀態變更;
以意圖為中心的架構和以Rollup 為中心的架構從相反的方向實現相似的目標。以意圖為中心從用戶和應用的角度廣泛地解決了這個問題,以Rollup 為中心的方式從不同區塊鏈的角度廣泛地解決了這個問題。
在這裡,設定具體的區分邊界並不重要。更重要的是,我們發現Rollup 實際上與我們已經習慣的具有鏈下意圖匹配的應用程序沒有太大不同!
你依賴鏈下參與者(排序器與求解器/ 填充器等)來獲得一些較弱的保證,例如提供最佳執行和良好的使用者體驗→ 根據發佈到主鏈的數據來確定結果。但是,他們不保管你的資金。
隨著可驗證的鏈下計算變得越來越重要,兩者之間的界限可能會變得模糊:
如果你希望意圖解算器或Rollup 排序器不要那麼受信任...
模組化區塊鏈與單片區塊鏈
單片區塊鏈(又稱整合區塊鏈)通常被定義為垂直整合所有核心功能(即共識、DA 和執行)的鏈。它們對自己的安全負全部責任,Solana 和Cosmos Hub 就是典型的例子。
DA 層(例如以太坊和Celestia)通常被稱為「模組化」區塊鏈,因為它們將執行外包給Rollup,但這並不十分準確。他們也獨立負責自己的共識、DA 和執行。
即使Celestia 的執行也會受到限制(例如,轉帳、質押、跨鏈)。同樣如果有人在Solana 之上啟動Rollup,它也不會神奇地成為一個「模組化」區塊鏈。
因此,當你聽到人們將以太坊或Celestia 等鏈稱為「模塊化」區塊鏈時,請意識到這更多是一種實際區別,而不是嚴格的技術區別。兩者通常都在優化自己的架構以支援Rollup。這些Rollup 預計將處理其範圍內的大部分交易執行。
即使Rollup 也不一定完全「模塊化」——Rollup 排序器可以就交易排序達成共識,提供DA,並在主鏈執行任何操作之前執行交易。這就是使用者獲得預先確認的方式。然後主鏈提供另一個「最終」承諾,再次聲明DA 和對Rollup 交易順序的共識。
Rollups 與「整合鏈」(Integrated Chains)
對於我們的目的而言,更重要的區別是“Rollup”或“非Rollup”。鏈的最終狀態是否源自於發佈到單獨主鏈(即DA 層)的資料?
雖然我們今天將DAS 和有效性/ 故障證明與傳統Rollup 聯繫起來,但我們應該注意到這些在邏輯上是不同的概念。理論上,任何「整合鏈」(例如典型的Cosmos 應用鏈)都可以升級以添加DAS 和有效性證明,而無需將其資料發佈到以太坊等其他外部主鏈。節點將單獨對該鏈進行採樣和檢查證明。
Vitalik 在他的《終局之戰》(Endgame)中談到了這個區別:
你可能會注意到,添加DAS + 有效性/ 故障證明的「傳統大區塊鏈」(整合鏈)最終可能看起來像一個「內置Rollup」(enshrined rollup)!類似地,「一個可擴展且主導的Rollup」可能會變得非常成功,以至於它只是與其主鏈合併以容納該Rollup。
區分的界線在極限處變得模糊。
因此,如果你相信DAS + 有效性/ 故障證明是最終結果,那麼某種意義上的「Rollup」是不可避免的。上圖中的兩種方法之間存在著有效的差異:
「Rollups」又稱為「模塊化」 ——建構邏輯上獨立的鏈,將資料發佈到其主鏈(DA 層),重用主鏈的共識;
「整合區塊鏈」又稱「單片區塊鏈」 ——將所有內容整合到具有自己共識的一個協議中,不將資料發佈到單獨的主鏈(即使DA 層和執行層在某種意義上上是共享協議的邏輯上獨立的部分);
當我們在本報告中討論「Rollup」時,我們將指的是前者(即不是具有DAS + 有效性/ 故障證明的整合鏈,這可能被稱為內置Rollup)。
雖然「傳統」Rollup 並沒有壟斷DAS 或證明(即整合的大型區塊鏈可以添加它們),但請注意,我們在這裡忽略了很多技術細節,你不能只選擇Solana 並決定「哦,我想我們今天就新增DAS」。
這需要從根本上重構協議,以開始接近我們所看到的以太坊和Celestia 正在做的事情:
改變資料編碼方式以支援DAS 將等同於減慢區塊編碼和傳播速度,開始更接近傳統的DA 層:
出於這個原因,我們看到團隊建立了以下內容:
專門的DA 層(例如以太坊的Danksharding、Celestia 等)- 慢速區塊+ DAS;
共用定序器(例如Espresso、Astria 甚至Solana)- 實際上只是快速DA 層,無需DAS;
然而如果將快速區塊和DAS 的時間分開,它們並不一定不相容。例如,你可以想像像Solana 這樣的鏈提供兩條不同的路徑:
快速路徑- 繼續盡可能快地執行交易並傳播數據(就像今天一樣);
慢速路徑- 以可非同步取樣的方式事後對資料進行編碼,為DAS 節點提供稍微落後於共識的保證;
Anatoly 在播客中討論了Eclipse 如何將以太坊、Celestia 和Solana 結合在一起,從另一端來看,你可以想像DA 層在讓資料可用於取樣之前添加更快的路徑:
在同一基礎層協定中提供兩條路徑可以有效地內部化快速共享排序,從而為基於Rollup 提供有趣的設計。請注意,目前這仍然是一個非常探索性的想法。
確認規則
有了背景知識,我們現在可以開始分解這些不同架構的安全性屬性。
首先,節點透過執行「確認規則」(Confirmation Rules)來與任何區塊鏈進行互動:
「確認規則,是指由節點運行的輸出某個區塊是否被確認的算法。在這種情況下,在某些假設下,主要涉及網絡同步和誠實股份的百分比,當滿足這些條件時,該區塊將被保證永遠不會發生重組」。
對於給定的鏈可以存在任意多個確認規則:
在確認比特幣交易之前你需要等待多少個區塊? 1 ? 6 ? 10 ?
你是否使用LMD GHOST 確認基於以太坊可用帳本的區塊,還是等待最終小工具(Casper FFG)來確認?
你是否運行直接驗證每個區塊的完整節點,或僅運行檢查共識簽署的輕節點?
你只是問Infura 麼?
由於每個確認規則可以做出非常不同的假設,因此即使與同一條鏈交互,它們也可以具有非常不同的安全屬性:
這種差異很微妙但很重要:
安全=安全+ 活躍度
現在讓我們深入研究Rollup 是否會從其主鏈「繼承安全性」。
繼承,也許更清楚地說,Rollup 總是「租用」而不是「繼承」其主鏈中的任何內容,它會為消耗的資源(DA)支付持續的成本,任何一方都可以選擇結束這種關係。但這不是問題有趣的部分。
安全性,從現在開始我們將專注於安全性。演算法的安全性(Security)由安全性(Safety)和活躍度(Liveness)組成:
安全性(不會發生任何不好的事情),兩個正常運作的節點所確定的最終狀態將永遠不會發生衝突;
活躍性(最終會發生好事),所有正常運行的節點將在有限時間內完成反映適合包含的交易的新狀態;
使用Sreeram 的出色框架,我們可以將它們進一步分解為五個屬性,這些屬性共同確保確認規則的安全:
讓我們考慮一個具有DAS + 有效性/ 故障證明的假設集成鏈的範例。它的數據不會發佈到任何其他外部主鏈。為了簡單起見,我們假設即時最終確定(例如Tendermint),因此可用分類帳與最終確定分類帳之間沒有可用的區別(例如以太坊的Gasper)。
我們將考慮三個確認規則,可用於使用不同類型的節點來追蹤鏈:
共識驗證器輕節點- 驗證共識證明(即信任誠實的多數共識)。
全驗證者輕節點- 驗證共識+ 檢查DA(使用DAS)+ 驗證狀態有效性(使用有效性/ 故障證明);
全節點- 驗證共識+ 直接驗證DA(下載所有資料)和有效性(執行所有交易併計算狀態);
確認規則有安全屬性,鏈沒有
再次強調這一點,「我們通俗地談論一條鍊是安全的,但實際上它是安全屬性所附加的確認規則」。
讓我們來看一些例子。
CAP 定理
作為背景,CAP 定理告訴我們,沒有一個帳本來可以同時滿足這兩個條件:
適應性(Adaptivity,又名動態可用性) - 在動態參與下保持活動狀態(即如果大部分節點離線);
最終性(Finality,又稱一致性) -在網絡分區下保持安全;
共識協議往往分為兩個部分,每個部分都符合上述條件之一:
最長鏈協議- 這些協議(例如比特幣的中本聰共識)即使在活躍參與節點的數量可變(即它們是自適應的)時也能保證活躍性,然而它們在網絡分區下並不安全(即沒有最終性);
BFT 型協定- 經典共識協定(例如PBFT)實現了最終性,但沒有實現適應性;
比特幣確認規則
比特幣的共識並沒有提供任何硬性的經濟最終性。
節點在其本地視圖中觀察最長的鏈,每個用戶都可以自由應用他們喜歡的任何確認規則(例如接受具有> k 個確認的區塊)。標準是等待6 個區塊確認,但這取決於你。
對於更高價值的交易,等待更長時間是合理的。等待時間與安全性(即重組的可能性)之間需要權衡。
以太坊確認規則
以太坊的PoS 共識(Gasper)乍看之下似乎迴避了CAP 定理。然而,它實現了這兩個屬性,因為它包含兩個嵌套帳本:
動態可用的分類帳- 如果網絡未分區,則在動態參與下安全且活躍;
最終確定的前綴分類帳- 始終安全可靠。如果網絡未分區且有足夠的節點參與,則保持活動狀態;
Gasper 屬於「潮起潮落」(ebb-and-flow,又稱雙帳或雙確認規則)協議家族。雙帳本設計不屬於CAP 定理的範圍(即它假設單一確認規則)。當網絡分區時,最終確定的帳本落後於自適應帳本,但當網絡修復時它會趕上。
這允許在使用者層級而不是在系統範圍層級解決適應性與最終性之間的權衡。這是區塊鏈CAP 定理在允許用戶依賴的適應性和最終性中,提出的「檢查點最長鏈」協議的一個特徵。這些協議為個人用戶提供了最終性和適應性之間的選擇,而不是將其強加於整個系統層級。
Gasper 明確公開了兩個不同的確認規則,並且對應到上面提到的兩個帳本:
動態可用規則- 保證適應性。尊重最長鏈的區塊頭。LMD GHOST是用來決定最重子樹的分岔選擇法則;
最終確定規則- 保證最終確定性。尊重由最終性小工具確認的區塊。Casper FFG是應用在分叉選擇規則之上的最終性小工具;
正如論文中所討論的:
「更樂觀的自適應規則總是確認由更保守的規則標記為最終確定的區塊,並且可能在可變的參與水平期間確認更多的區塊。客戶(用戶)根據個人喜好在確認規則之間進行本地選擇,而礦工遵循與這兩個確認規則一致的固定區塊提議規則」。
這允許系統中所有(誠實的)節點:
遵循通用的區塊提案機制;
但不同的節點可以選擇不同的確認規則;
無論參與程度如何,驗證者都會繼續延長最長的鏈(在不斷增加的高度上開採新區塊),但只有在有足夠的參與度時才會出現新的檢查點。
最長的鏈(包含最新的檢查點)可以在不同的鏈之間交替(即重組未完成的區塊),但無論網絡條件如何(即最終性),檢查點都保證位於單一鏈上。
使用者的安全取決於他們遵守的確認規則。快速區塊確認與更強的安全保證之間需要權衡。賣咖啡的用戶可能更喜歡活躍性而不是安全性,但賣遊艇的用戶可能更喜歡安全性而不是活躍性。
以太坊節點還可以將一些其他的中間確認規則啟發式應用於實際用途。與其像比特幣一樣使用樸素的k 個區塊作為自適應確認規則,我們可以添加其他啟發式方法,其中包括有關網絡同步和驗證者誠實的假設。
這正是《以太坊共識協議確認規則》中提出的內容,它提出了具有以下屬性的確認規則:
在理想條件下- 規則將在其插槽之後立即確認新區塊;
在典型的主網條件下- 該規則應該能夠在一分鐘內確認大多數新區塊;
此確認規則不能取代經濟最終性。相反,它為相信網絡同步將在不久的將來保持的用戶,提供了有用的啟發式方法。讓我們比較一下兩者:
讓我們考慮一些例子,譬如你以250 萬美元的ETH 出價出售一艘遊艇,以下是一些可能的確認規則:
全節點+ 等待最終結果-即使是惡意的大多數驗證者也無法欺騙你接受無效區塊(例如產生假ETH)。如果他們付給你250 萬美元的ETH,然後嘗試稍後重組最終確定的區塊,他們將承受巨大的成本(至少三分之一的權益是可懲罰性削減的);
全節點+ 等待一個區塊——大多數惡意驗證者仍然無法欺騙你接受無效區塊,然而他們可以在一個有效的區塊中向你發送250 萬美元的ETH,乘坐遊艇離開,然後該區塊立即重組,如果有足夠的權益權重或較差的網絡條件,這是可能的,它們沒有被懲罰性削減;
輕節點客戶端-惡意同步委員會可以對你撒謊,而不會受到任何處罰,買家就可以乘遊艇離開(請注意,這個同步委員會作為共識的子集是以太坊獨有的,其他具有更高效率的輕節點客戶端支援的PoS 鏈可以在驗證者數量較少的情況下檢查所有共識投票);
MetaMask——你只是信任Infura,向你買遊艇的人向Infura 員工承諾他們可以在周末乘坐遊艇,所以他們對你撒了謊,你認為你已經拿到了250 萬美元的ETH,然後你交出了鑰匙;
Rollup 確認規則
與任何鏈一樣,節點使用不同的確認規則與Rollup 進行互動。 Rollup 最強的確認規則將與其主鏈的共識一起最終確定。 Rollup 定序器可以暴露較弱的確認規則以獲得更好的使用者體驗(即為不耐煩的使用者提供快速預確認),但使用者也可以等待主鏈確認規則的完全安全性。
典型的Rollup 交易流程大致如下:
用戶向定序器提交交易;
定序器對交易進行排序並給予預先確認;
確定性STF 應用於有序交易以計算新的Rollup 狀態;
更新的Rollup 狀態承諾和相關交易資料最終發佈到主鏈;
交易資料發佈到主鏈後:
Rollup 全節點- 直接驗證提議的鏈狀態是否正確;
Rollup 輕節點(包括驗證橋) - 無法直接驗證;
同一Rollup 的不同觀察者使用不同的確認規則,因此他們在不同的時間最終確定其觀點:
假設發布了完整的交易數據(不僅僅是狀態差異);
如前所述,Rollup 節點也必須運行主鏈完整節點或完整驗證器輕節點(或使用共識驗證器輕節點做出誠實多數假設)。 Rollup 輕節點可以作為附加軟體運行,也可以在主鏈節點內部隱式運行(即主鏈上的跨鏈橋合約驗證Rollup);
用戶還可以透過信任定序器預先確認來更快地確認交易,甚至在主鏈接收資料之前也是如此。如果定序器行為不當,安全性可能會失敗。然後,一旦資料位於主鏈上(並且你已經檢查了DA + 有效性),只有主鏈故障(例如以太坊重組)才會影響你的安全。
因此,即使中心化排序器也不會真正降低「Rollup」的安全性。你總是獲得符合你所需的確認規則的安全性。無論Rollup 具有基於定序器還是其他的設計,你都可以使用相同的確認規則(例如等待主鏈最終確定並檢查Rollup 有效性)。假設正確實施(例如,透過主鏈強制交易包含),你可以在相同的時間範圍內獲得相同的安全屬性,同時保持其他條件相同。
同樣,你可以想像以太坊L1 區塊生產者由於區塊時間緩慢而提供預先確認,這也不會讓「以太坊」的安全性降低。你只需決定是否使用另一條確認規則(安全性較低),直到以太坊驗證器最終確定更高的安全性。
預先確認的想法非常符合Vitalik 所描述的Gasper 的邏輯:
總的原則是,你希望為使用者提供「盡可能多的共識」:如果存在> 2/3 ,那麼我們會定期達成共識,但如果存在< 2/3 ,那麼就沒有理由拖延而不提供任何內容,因為顯然儘管新區塊的安全級別暫時較低,但該鏈仍有可能將繼續增長。如果單一應用程式對較低層級的安全性不滿意,則可以隨意忽略這些區塊,直到它們最終確定。
將所有這些結合在一起,當所有確認規則同時就帳本的相同狀態達成一致時,我們就有了一個「一致性區域」:
確認規則- 安全性和可訪問性
如果你的確認規則是信任由SBF 運行的單一定序器,而不是信任由世界上最有信譽的驗證器組成的去中心化定序器,那麼你的安全性可能會更差,活性故障和重組是安全故障。
或者,你可以等待更強的(主鏈)確認規則變得可用。那麼,在其他條件相同的情況下,不可信的定序器就不會影響你的安全性。如果你正在賣咖啡,你可能馬上出發,但如果你要賣遊艇,你需要仔細檢查主鏈確認訊息。
然而,如果每個人實際上都使用該確認規則來出售他們的遊艇,我們不能完全忽視「信任運行單獨定序器的隨機人選」來確認規則潛在的較低安全性。精確的設計是基於對給定用例在什麼時間所需的漸進承諾水平的平衡。
同樣,這也觸及了對Solana 等高吞吐量區塊鏈的真正批評。人們實際上可以使用什麼確認規則?你可能有運行Solana 完整節點的良好安全條件,但大多數人可能無法存取該確認規則(即取決於資源要求和/ 或成本)。
直接驗證(即不僅僅是信任誠實的大多數)是這些系統的核心屬性。因此,對於給定的確認規則,我們真正關心的是兩個方面——安全性和可訪問性:
總之:
用戶透過確認規則與任何鏈進行互動;
一條鏈可以有任意多個確認規則;
安全性是確認規則的屬性,而不是鏈本身的屬性;
我們關心給定鏈的確認規則的安全性和可訪問性;
實際上,當我們說一條給定鍊是安全的時候,我們試圖表達這樣一個概念:其相關的確認規則既安全又可訪問。
Rollups 與整合鏈的安全性
1 ,具有DAS+ 有效性證明的整合鏈
我們現在看到,有關DA 和狀態有效性的安全性可以直接透過加密技術(DAS + 有效性/ 故障證明)進行檢查,而無需對鏈的運營商進行強有力的假設。任何協議都可以在技術上實現這些。全節點還可以在沒有外部假設的情況下檢查DA 和狀態有效性。
現在讓我們專注於其他屬性- 活躍度和抗重組。正如我們之前所看到的,無論你運行哪種確認規則,這些都可能會失敗。再看一條DAS+ 有效性證明+PoS 單插槽最終性的整合鏈:
選擇強大的確認規則對於安全故障的子集特別有效,即使大多數惡意驗證者也無法欺騙全節點或全驗證器輕節點,使其相信:
不可用的數據實際上可用;
或無效的狀態轉換是有效的;
無論以太坊有1 個驗證器還是無數個驗證器,全節點都或多或少相信區塊的DA 或有效性,他們通過檢查得到保證。完整驗證器輕節點可以以更簡單的方式進行檢查(但請注意,DAS 會做出一些其他假設,我們將在稍後討論)。
然而,惡意的大多數驗證器可能會阻止帳本成長、審查你或重組鏈(發生哪些失敗取決於確認規則)。 DAS + ZK 救不了你。抗重組和活躍度在某種程度上總是依賴給定鏈的各種底層屬性(例如可靠的運營商、經濟激勵、社會共識等)。
不太明顯的是,活躍度和抗重組仍然是給定確認規則的屬性,因為每個節點都會受到和上表相同的攻擊。無論這裡的確認規則如何,他們都有相同的保證。
然而,當你刪除單插槽最終性假設時,這一點再次變得明顯。在以太坊的Gasper 中,根據你遵循的帳本(即可使用的最長鏈帳本或檢查點最終確定帳本),你將再次擁有不同的活躍度和抗重組屬性。大多數惡意驗證器會導致不同的安全失敗,這取決於你執行的確認規則。
無論如何,關鍵是鏈的底層構建在這裡非常重要。你需要強大的運營商、經濟激勵和社會共識來維持鏈的活躍度和抗重組。此外,諸如以太坊之類的雙帳本共識協議為用戶提供了寶貴的靈活性,可以根據自己的需求自行計算可用性與最終性。
2 ,使用DAS + 有效性證明Rollup
現在讓我們稍微修改一下這個例子:
上一個範例- 具有DAS + 有效性證明的整合鏈,想像一下採用今天的Solana,但添加DAS + 證明;
新範例- Rollup 部署在外部主鏈(例如以太坊)上,具有有效性證明+ DAS(注意以太坊DAS 尚未上線),Rollup 有一個去中心化的定序器集,可以達成快速預確認的共識;
你會注意到,Rollup 對於不同的時間範圍有兩類完全獨立的確認規則(即無論你是基於定序器的預共識進行操作還是等待主鏈的最終共識),我們現在來看看每條路徑。
快速路徑- 在主鏈共識之前
Rollup 節點可以依賴定序器的確認(在發佈到主鏈之前),我們假設他們可以執行以下Rollup 節點:
Rollup 共識驗證器輕節點- 信任Rollup 定序器共識中誠實的大多數;
Rollup 完整驗證器輕節點- 在定序器的feed 上執行DAS + 在將任何內容發佈到以太坊之前檢查有效性證明;
Rollup 全節點- 從定序器的feed 下載所有資料並執行所有交易,以直接檢查DA 和有效性;
從技術上講,Rollup 定序器可以促進DAS 並在發佈到主鏈之前提供有效性證明,但實際上這不會發生。完整驗證器輕節點通常旨在透過主鏈檢查這些,但是我假設「即時」DAS + 證明可以與整合鏈進行更清晰的同類比較。
下表是與整合鏈範例相比的變化:
依賴Rollup 定序器來實現活躍度和抗重組,而不是整合鏈的驗證器集;
只是刪除了最終的活躍度屬性,因為在這裡只查看主鏈共識之前的時間範圍(這些「最終」活躍度屬性稍後將來自主鏈);
刪除內容以紅色刪除線顯示,新增內容以藍色顯示:
慢路徑- 等待主鏈共識
為了額外的安全性,節點可以等待主鏈(例如以太坊)的共識,這就是更清楚發揮作用的地方,即Rollup 節點也應該運行主鏈節點:
主鏈共識驗證者輕節點- 信任主鏈誠實的多數共識;
主鏈全驗證器輕節點- 檢查主鏈的有效性證明+ 在主鏈上執行DAS(包括資料Rollup+ 主鏈資料);
主鏈全節點- 下載所有主鏈資料(包括檢查Rollup 資料)+ 執行所有主鏈交易以直接檢查有效性;
請注意,可以透過兩個不同的路徑驗證Rollup 的狀態有效性:
主鏈外部(運行額外的Rollup 節點軟件) - Rollup 不需要其主鏈來驗證其狀態或STF,不需要部署驗證橋,相反可以通過另一種方法檢查Rollup 證明(例如通過p2p 接收Rollup 證明),這需要運行額外的Rollup 節點軟件來驗證證明(即Rollup 輕節點);
主鏈內部(在主鏈內部實施Rollup 節點) - 這是當今的常態,Rollup 輕節點驗證器邏輯是部署在主鏈本身(即Rollup 的內置橋接合約),由於此Rollup 驗證器節點在主鏈的STF 內運行,因此驗證主鏈的STF 也意味著驗證Rollup 的STF;
如果我們得到一個零知識證明的主鏈(例如以太坊L1 zkEVM)+ 所有Rollup 都證明它們在主鏈內部的狀態→我們就得到了Vitalik 對奇點證明的願景。驗證以太坊的一個零知識證明意味著驗證所有其他鍊及其內部實現的驗證節點:
為了簡單起見,我們在這裡假設Rollup 的狀態有效性是在主鏈本身內驗證的(例如Rollup 與主鏈有一個內置的橋),因此我們可以忽略明確運行協議外的附加Rollup 節點軟件。
與先前的「快速路徑」Rollup 表相比的變化如下:
通過主鏈強制交易包含或強制定序器/ 證明器替換來實現,我們在這裡稱之為“最終”活躍度,因為從Rollup 的角度來看,它是一條慢速路徑,但從主鏈的角度來看,這可以被視為「即時」活躍度。
Rollup 與整合區塊鏈
現在我們可以看到與整合區塊鍊和Rollup 相關的安全屬性變更:
DA 和狀態有效性- 如果實施,DAS + 有效性證明可以提供適用的安全保證,無論鍊是整合的還是傳統的Rollup。事實上,如今這些技術以Rollup 為主;
活躍度和抗重組(Liveness Re-org Resistance)- 整合區塊鏈在所有場景中獨立負責這些。相反Rollup 提供了不同時間範圍內確認規則的選擇。你可以採用較不安全的確認規則(信任定序器共識)來獲得快速保證,或等待更安全的確認規則(等待主鏈共識);
活躍度和抗重組
無法透過密碼保證這些屬性,即使跨越確認規則(例如無論運行全節點還是輕節點),你也可能容易受到安全故障的影響。
如果運營商完全失控,沒有完整的節點或ZK 證明可以保護你免受活躍度故障或重組的影響。
這些屬性是通過強大且去中心化的運營商、抗審查機制、有利於活躍度的共識、重組的高「成本」、強大的社會共識等來實現的。客觀比較這些通常具有挑戰性。
你如何衡量運營商去中心化和社會共識?沒有一個正確答案。這些可以說是最難設計的方面,而且它們對於給定的鏈來說確實是非常獨特的。
重要的是,我們看到Rollup 可以將抗重組和活躍度委託給主鏈,Rollup 上使用的確認規則可以具有相同的安全屬性,就像它們在同一時間範圍內在主鏈上運行一樣。
鏈甚至可以選擇將哪些屬性委託給哪個鏈,不同類型的「L2」架構(例如validiums、optimism 和側鏈)可以吸收不同的安全性屬性子集。例如:
抗重組- Rollup 可能會將抗重組委託給以太坊,它的分叉選擇規則是根據以太坊共識確認的內容來選擇「規範鏈」。如果以太坊重組,Rollup 也會重組。
活躍度- 但是,如果Rollup 缺乏強制包含和強制操作員替換機制,則Rollup 用戶仍然不會收到以太坊的活躍度屬性;
Rollup 還可以為用戶提供退出Rollup 的逃生通道,但保留審查用戶並防止存款進入Rollup 的能力(例如Loopring 就是這樣工作的)。如果存款在一段時間後仍未處理,用戶可以從L1 合約中提取鎖定的資金。
這凸顯了此類機制的重要性。
數據可用性和狀態有效性
與活躍度和抗重組不同,節點可以確保DA 和狀態的有效性,而無需做出任何大的閾值假設(或無需在兩者之間進行安全權衡)。惡意的大多數區塊生產者可能會導致活躍度和重組失敗,但它們不會導致全節點或全驗證器輕節點的DA 或有效性失敗。
然而,共識驗證者輕節點當然會受到誠實多數的狀態有效性和DA 失敗的影響。他們只是相信共識所說的一切。這就是為什麼DA 和狀態有效性是使安全確認規則易於訪問並真正發揮作用的原因。這通常是傳統Rollup 與不太重視用戶驗證的大型區塊鏈之間在意識形態上的巨大差異。
按照順序,這些通常是平衡安全性和可訪問性的首選方法:
使DAS 和有效性證明可供廣泛使用;
如果你沒有DAS 和/ 或有效性證明,則使完整節點可廣泛訪問(即資源要求低、易於運作等);
如果你沒有DAS 和/ 或有效性證明,並且完整節點基本上無法訪問,那麼請使共識驗證者輕節點廣泛訪問,並擁有值得信賴的誠實多數共識;
訪問Infura;
請注意, 2 (完整節點)實際上是最安全的。 ZK 驗證非常簡單,但DAS 節點做了一些完整節點沒有的額外假設。然而,它們提供與完整節點接近相同的安全性,而資源需求只是其中的一小部分,它們是可擴展的。
全節點只需下載所有數據,因此具有100% 的確定性。只有當一切都在那裡時,他們才會在區塊上簽名。沒有對外部各方做出任何假設。
DAS 的目標是獲得幾乎與全節點一樣好的安全性,同時資源需求大幅降低(即更高的規模)。這篇關於輕節點資料可用性安全級別的文章很好地涵蓋了這一點。
簡而言之,你通常會圍繞網絡同步性以及是否有足夠的節點來重建數據做出一些假設。如果敵對區塊生產者隱瞞任何數據,即使是一小部分誠實的輕節點也應該能夠集體重建區塊。關於選擇性份額揭露還存在一些假設,其中敵對區塊生產者可以單獨欺騙一些少量的輕節點,但不能集體欺騙。
相對於典型的大致「N/2 」假設(例如, 51% 的區塊生產者可以導致重組),這些「N 中少數」假設(例如,誠實的少數節點可以確保DAS 安全)非常有利。 Vitalik 在信任模型的帖子中對此進行了很好的介紹。
整體而言,DA 和狀態有效性並不像活躍度和抗重組那樣由Rollup「委託」。 DA 和狀態有效性可由使用者直接驗證,而其他屬性更嚴重依賴鏈的共識參與者及其激勵。
回顧先前驗證Rollup 證明的範例:
將Rollup 的ZK 證明發佈到以太坊智能合約,你運行一個以太坊完整節點,隱式驗證該證明;
將Rollup 的ZK 證明送到我的Rollup 輕節點,直接驗證證明;
無論哪種情況,你都可以保證有效性。無論你在哪裡檢查,都無法確定其有效性。以太坊並沒有像以太坊節點「強制」抗重組或活躍屬性那樣真正「強制」有效性。抗重組和活力很大程度上取決於你從誰那裡獲得它們。
考慮基於詐騙鏈的Rollup:
Rollup 的分叉選擇規則是遵循詐騙鏈確認的鏈尖(the tip of the chain)→ 如果詐騙鏈重組,Rollup 也會重新組織;
Rollup 的強制包含機制和定序器刪除是透過詐騙鏈上的跨鏈橋接合約強制執行的→ 如果詐騙鏈的帳本停止,那麼Rollup 的帳本也會停止。如果詐騙鏈想要審查你的Rollup,那麼你就會被審查;
Rollup 能夠公開具有與其主鏈相同的安全屬性的確認規則,他們最多可以按照其主機鏈共識的速度接收這些屬性(實際上,它通常會慢一些,具體取決於Rollup 發佈到主鏈的頻率)。
Rollup 還可以提供「快樂路徑」更寬鬆的確認規則(即定序器)以獲得更好的使用者體驗,但它們保留了失敗時的交易回退。如果你的定序器停止了,你可以繼續移動。但是,如果你的鏈完全依賴你自己的驗證器集(即作為整合鏈),則情況並非如此。
明智地選擇Rollup 的主鏈會對安全性屬性產生具體的影響。利用具有強大活躍度(帳本成長+ CR)和抗重組特性的主鏈尤其有價值。
不同時間段的不同安全假設
讓我們來看一個簡單的例子。 Chain X 正在決定是在現有主鏈上部署為Rollup,還是部署為自己的整合區塊鏈。
Rollup 有以下特點:
10 秒的出塊時間;
可支援DAS 輕節點
可以提供關於活躍度和抗重組的「高安全性」確認規則(例如去中心化的可信驗證器等);
整合區塊鏈具有以下特點:
出塊時間為1 秒;
可以實現DAS 輕節點和有效性證明,無論它是作為整合區塊鏈還是作為Rollup 啟動;
如實現中心化定序器- 它將提供有關活躍度和抗重組的「低安全性」確認規則;
如果實現自己的去中心化共識(作為預先確認的Rollup 定序器集或作為整合鏈驗證器集),它將提供關於活躍度和抗重組的「中等安全性」確認規則;
下表給出了用戶在各種實現下可能擁有的最佳安全保證的簡化直觀表示(即他們使用可用的最強確認規則)。特別是,我們在這裡關注活躍度和抗重組(因為我們假設該鏈將在這兩種情況下僅實現DAS + 有效性證明):
Rollup 的「最終安全性」高於其「即時安全性」,因為主鏈無法為我們提供比其自身出塊時間更快的保證。即使你可以檢查定序器的預先確認是否是有效的狀態轉換,但在它們最終到達DA 層之前,你也無法完全保證它們的最終性。
但正如我們所看到的,以Rollup 方式部署到強大的主鏈可以增強安全性。他們可以按照其主鏈的速度租用安全性。從根本上說,沒有辦法以比主鏈自身共識更快的速度獲得主鏈的全部安全屬性。
然而,用戶往往不耐煩。因此,Rollup 通常會提供更快的預先確認,但在此期間的保證會較低。 Rollup 可以選擇一個平衡的定序器設計:
實用的功能和效率。例如中心化定序器可以提供快速的預先確認並減少營運開銷;
強大的保證。例如一個令人難以置信的去中心化定序器集可以提供更好的即時活躍度性,但代價是更高的運營成本和延遲(在最極端的情況下,你只需讓DA 層處理Rollup的排序,選擇不公開更快的路徑);
有趣的是,你可以認為L1 排序Rollup 的活躍度比中心化定序器更差,這取決於你的時間尺度。到目前為止,我們已經討論了活躍度,將其納入某種「有限時間」的概念中。然而,這完全是相對的和主觀的。相對於什麼?需要多少時間?
單純的L1 順序Rollup 將僅以L1 區塊的速度(例如10 秒)包含在內,當你周圍的世界在變化時,你在這些區塊之間沒有活躍度保證。所以這取決於你的基準:
如果基準= Rollup 內部的操作,L1 順序Rollup 可能會提供更好的活躍度。在主鏈確認之前,鏈上的其他人不應該得到承諾,所以你們都處於平等的地位;
如果基準= Rollup 外部的操作- 具有軟性預確認的Rollup 可以提供更好的活躍度。預先確認只是一個免費選項,你仍然以主鏈的速度回退到主鏈保證,但在此期間你可以獲得較弱的保證。如果你不信任他們,只需等待主鏈確認即可。世界不會在以太坊區塊之間凍結,對於許多應用程序來說,長區塊時間之間的過時價格可能是不可接受的;
如果你嘗試在沒有預先確認的情況下實現基於「真實」的Rollup,甚至有可能無論如何都會出現預先確認。對於參與者(例如以太坊建構者和驗證者)來說,他們自己做出這項承諾是有經濟誘因的。這正是為什麼有人討論以太坊建設者和利益相關者如何嘗試在基礎層提供快速預先確認。
這裡有最後一個重要的說明。假設Rollup 用戶可以回退到與主鏈相同的活躍度,假設你可以完全以主鏈區塊的速度強制包含(例如如果Rollup 排序器正在審查你,你可以強制將交易包含在主鏈下一個以太坊區塊)。
在實踐中,通常會有短暫的延遲。如果你允許立即強制包含,你可能會暴露有利可圖的審查MEV 以及其他複雜性。然而,有些設計可以從主鏈提供近乎即時的活躍保證(例如,可能以幾個主鏈區塊而不是一個區塊的速度)。
無論確切的時間尺度如何,吸收主鏈的最終活躍度都是非常強大的,使用強大的主鏈作為協調機制提供了可信的威脅和退出權利。僅僅揭露這種可信的威脅本身,就使得它極不可能被需要從而從一開始就防止惡意行為。
例如,如果用戶有可靠的機制可以強行退出甚至強行刪除運營商,那麼中心化的Rollup 定序器就不能隨意從用戶那裡提取租金並將其鎖定。這是Chris Goes 關於MEV 轉換成本邊緣與慢速遊戲的演講中討論的一個一般領域。
當然,意外的活躍度也可能發生,在這種情況下,此備份路徑可能再次非常有價值。
證明不保護鏈,而是保護用戶
遵循這一切,我們可以看到,對於給定的確認規則,證明更準確地保護Rollup 的不同「觀察者」(使用者),而不是保護「Rollup」本身。 「Rollup」的安全性並非作為單一的具體措施而存在。
確保觀察者的安全當然是最重要的,因為我們都是鏈的觀察者!這條鏈就是它的觀察者所說的任何東西。如果你無法以安全的方式觀察它,你必須信任其他人(例如驗證者)來告訴你它的「真相」。但我們不想信任,我們想要驗證→我們想要證據。
要了解為什麼區分「證明保護鏈」和「證明保護鏈的觀察者」很重要,請考慮以下事項:
輕節點- 如果有證明,則Rollup 輕節點會更安全,他們不必相信任何人的話的有效性;
全節點- 如果有證明,則Rollup 全節點的安全性不會增加或降低,你可以在沒有內置橋甚至任何證明的情況下啟動Rollup(“pessimistic rollup”),如果你開始發送有效性證明,全節點的安全性不會增加或降低;
證明為無法直接檢查其有效性的鏈觀察者(即輕節點)增加了安全性。我們不希望使用者必須運行強大的全節點,因此這些證明很重要。
證明確保Rollup 橋的安全
Rollup 的驗證橋是極為重要的觀察者!證據確實保證了橋的安全!
與任何典型的輕節點一樣,網橋無法直接檢查Rollup 的有效性。我們不相信誠實的多數,而是用證據來保護橋樑。資料庫A(DA 層)的共識協定對資料blob 進行排序,然後驗證橋獨立檢查資料庫B(Rollup)對應更新的有效性:
橋是另一條鏈的觀察者,它鑄造的每一項資產總是帶有對應橋的確認規則的安全假設。其確認規則的安全性可以產生廣泛的影響。這就是為什麼建立安全的橋樑如此重要(或者理想情況下,首先通過進一步擴展單鏈執行來減少對如此多的橋的需求)。
如果你為該鏈運行全節點,則惡意方無法誘騙你接受無效的狀態轉換。然而,如果惡意方有不同的確認規則,它仍然可以欺騙橋。如果你在該橋中持有有抵押品支持的資產,那麼你的資金可能會變得沒有支持。從這個意義上說,欺騙橋的安全故障是「傳染性的」。
讓我們考慮一個關於Terra 的舊假設場景:
Terra 有自己的驗證器集,其原生代幣是LUNA,可以發行原生UST;
Osmosis 有自己的驗證器集,其原生代幣是OSMO。
我們有一個標準的Terra ←→ Osmosis IBC 橋,其中每一側都運行另一條鏈的共識驗證器輕節點(即橋的每一側都依賴於另一條鏈的驗證者集的誠實多數);
你作為使用者運行每個鏈的自己的全節點;
我們將穿過IBC 橋接的Osmosis 上的UST 稱為osmoUST;
我們將透過IBC 橋接的Terra 上的OSMO 稱為terraOSMO;
你在Terra 上擁有terraOSMO;
你正在Osmosis 上的osmoUST/OSMO 池中做LP;
隨著Terra 的崩潰,LUNA 的價格暴跌,最終,理論上變為惡意驗證器集的利潤將超過所質押的LUNA 的價值,Terra 驗證器可以簽署無效區塊,並執行以下操作:
鑄造假UST → 跨鏈到Osmosis 以鑄造osmoUST,使用它來耗盡所有osmoUST 交易對(例如,從osmoUST/OSMO 池中取出所有OSMO;
鑄造假terraOSMO → 跨鏈到Osmosis,以撤回鎖定在Osmosis 上支援terraOSMO 的所有原生OSMO 抵押品,Terra 上剩下的所有terraOSMO 現在都將不再受支援;
那麼,這裡的安全性就失敗了:
全節點(我) - 我的全節點將Terra 區塊識別為無效的並拒絕它們,Terra 驗證者不能竊取我的terraOSMO 或osmoUST/OSMO LP 位置;
輕節點(橋) - 橋只是檢查Terra 的共識是否在區塊上簽字(不檢查有效的狀態轉換),因此它不會拒絕它們,Terra 驗證者可以竊取支援我的terraOSMO 的OSMO 抵押品,並從osmoUST/OSMO 池中耗盡所有OSMO(留下一堆毫無價值的osmoUST);
該橋使用了具有更強信任假設的確認規則。
Terra 驗證者無法從完整節點竊取Terra 本身的大量資產(他們不會被欺騙),他們會拒絕這些區塊。然而,驗證者可能會欺騙共識驗證器輕客戶端(包括橋),這就是為什麼共識錯誤會影響跨鏈資產。
請注意,重要的是,這些故障不會「傳染」到鏈的其餘部分,即該故障會「傳染」到暴露於Terra 橋路線的Osmosis 資產,但Osmosis 鏈本身不存在安全故障。
然而,我們顯然想要橋接東西(一般來說,跨鏈通信),僅限於使用其主鏈上的原生資產會很糟糕,我們需要鏈來安全地通信和跨鏈橋接。
作為一個思想實驗,最簡單的解決方案就是讓每個使用者運行每個鏈的全節點,這包括跨鏈橋本身。請記住,我們已經看到了一些單向嵌入式全節點橋:
以太坊Rollup 目前都要求其節點運行以太坊全節點,這些Rollup 共享以太坊的共識;
Namada(一條單獨的Tendermint 鏈,而不是Rollup 鏈)將要求其節點運行以太坊全節點,然而Namada 不同意以太坊的共識(即它不會將數據發佈到以太坊或基於此得出其狀態) ;
這適用於以太坊全節點,但這顯然無法擴展。你無法開始讓每個Cosmos 鏈只需要運行每個其他Cosmos 鏈的全節點。這些雙向全節點橋不會擴展,它們只會增加硬件需求。
幸運的是,有一個更具可擴展性的選項。我們可以部署橋來充分驗證另一條鏈的狀態有效性和DA(除了仍然檢查共識之外)。
狀態有效性- 雖然IBC 目前與傳統共識證明一起使用,但可以對其進行修改以添加連接鏈的有效性證明,現在橋不會被無效的狀態轉換所欺騙。這本來可以準確地防止前面描述的攻擊,如果橋接器能夠驗證狀態轉換的有效性,則會將Terra 驗證器的區塊視為無效而拒絕。
這看起來與以太坊上的Rollup 橋如何檢查Rollup 證明非常相似,只不過這裡也可以是雙向的。
DA - 此外,鏈可能要求其節點運行連接鏈的DAS 輕節點。例如你可以讓這兩個Cosmos 鏈需要它們自己的驗證器來運行另一個鏈的DAS 輕節點(如果每個鏈都實現了DAS 輕客戶端,而這些鏈目前不支援)。完成此操作後,每個鏈現在都可以知道彼此的有效性和DA,而無需運行全節點。
對於Rollup,根據定義,你擁有主鏈上的所有數據,因此那裡的橋樑可以存取它。另一方面,Rollup 節點運行主鏈節點。
依賴鏈與獨立鏈
讓我們再看一次我們的五個安全屬性,現在在以太坊上觀察Rollup 的Rollup 驗證橋的背景下:
帳本成長-以太坊驗證器可以強制Rollup 的帳本繼續成長(例如強制包含交易);
抗審查- 以太坊驗證器可以強制Rollup 的運營商不會無限期地進行審查(例如強制交易包含或定序器替換);
抗重組- Rollup 的抗重組與以太坊相關。如果以太坊重組,那麼以太坊上的所有Rollup 都將重新組織在一起;
數據可用性- Rollup 的DA 得到保證,因為Rollup 根據定義是從主鏈共識(Rollup 合約所在的位置)確認的數據派生的,Rollup 和主鏈共享合併共識,DA 是以太坊本身的有效性條件,因此如果資料不可用,那麼以太坊區塊本身就是無效的。橋可以存取主鏈上的數據,無需添加信任假設;
狀態有效性- 合約將檢查Rollup 狀態轉換的有效性證明(或等待挑戰視窗通過),這證明所聲明的狀態更新是在主鏈上確認的相應數據上應用Rollup 的STF 的有效結果;
請注意,橋的安全性不僅通過附加鏈的超強確認規則(例如,到具有超級值得信賴的驗證器集的鏈的完整驗證器橋)來最大化。如果橋樑具有與主鏈相同的安全性假設,則你可以在跨鏈原生資產時獲得最大的安全性。
Vitalik 提供了一個有用的說明範例:
「你將100 ETH 轉移到Solana 上的一座橋上,得到100 Solana-WETH,然後以太坊受到51% 的攻擊。攻擊者將自己的一堆ETH 存入Solana-WETH,然後在Solana 方面確認後立即在以太坊端恢復該交易。Solana-WETH 合約現在不再完全支持,也許你的100 Solana-WETH 現在只值60 ETH。即使有一個完美的基於ZK-SNARK 的橋接器完全驗證共識,它仍然容易受到像這樣的51% 攻擊。
因此,在以太坊上持有以太坊原生資產或在Solana 上持有Solana 原生資產總是比在Solana 上持有以太坊原生資產或在以太坊上持有Solana 原生資產更安全。在這種情況下,「以太坊」不僅指基礎鏈,還指建構在其上的任何適當的L2。
如果以太坊受到51% 攻擊並恢復,Arbitrum 和Optimism 也會恢復,因此即使以太坊受到51% 攻擊,在Arbitrum 和Optimism 上保存狀態的「交叉Rollup」應用程式也能保證保持一致。如果以太坊沒有受到51% 攻擊,那麼就沒有辦法分別對Arbitrum 和Optimism 進行51% 攻擊。因此,持有基於Arbitrum 的Optimism 發行的資產仍然是完全安全的。
你可以用任何你想要的鏈替換Solana - 甚至是你在信任方面超過以太坊驗證器的假設鏈,從根本上講,當你談論將資產與其記錄賬本(例如,來自以太坊的ETH)跨鏈時,任何安全假設都是附加的,連接的鏈總是有可能重組或出現活躍度故障。
然而,具有合併共識的鏈(即共享其主鏈共識的Rollup)可以迴避這些額外的安全假設。這些不同區域之間的跨鏈橋可以具有與主鏈本身相同的最終活躍度和抗重組屬性。共享共識最大限度地減少了該共享安全區域內的跨鏈信任假設。
什麼是合理的安全假設由你決定。實際上,各大鏈之間還沒有出現過類似的共識失敗的情況。這將是顯而易見的,且成本高昂,但這可能是連接較弱鏈的更強有力的假設。
將Rollup 鏈綁定到主鏈也有一些缺點。讓我們比較兩種跨鏈場景,在這兩種情況下,我們都有兩個使用雙向全驗證器跨鏈橋接的鏈:
依賴- 遠端鏈(即Rollup)共享主鏈(即DA 層)的共識,並從主鏈上的資料導出自己的狀態,遠端鏈必須與主鏈一起分叉,並以主鍊為基礎確定其最終性;
獨立- 這些鏈有自己獨立的共識,它們不會根據其他鏈上的數據得出自己的狀態。它們不共用遠端鏈(即Rollup)←→主鏈(即DA 層)關係。它們不會重組在一起,也不依賴對方的活躍度;
有趣的是,這些都有好有壞:
壞- 將你的鏈與其他鏈進行重組或出現活躍度故障乍一看可能聽起來像是一個缺點,為什麼我的鏈會因為你的鏈壞了而出現問題?
好- 如果這種分歧會在你的鏈上造成嚴重問題,這實際上是一個重要的好處(例如如果你有大量來自源鏈的跨鏈資產,那麼它會從你的跨鏈橋接器的角度進行重組,留下無支持的抵押品),鍊及其跨鏈橋需要彼此一致;
同樣,鎖定和過度尋租也存在潛在的正面和負面影響,這凸顯了為什麼中立且抗審查的基礎層如此重要:
好- 良好的主鏈可以保護Rollup 用戶免受Rollup 運營商從他們身上榨取過多價值的影響,從而強制執行退出權限;
壞- 糟糕的主鏈可能會任意抬高價格,並從Rollup 及其用戶本身中提取該價值;
提交證明+ 雙向運行DAS 而不是共享公共主鏈也存在一些低效率:
你不想要求你的節點運行一堆其他鏈的DAS 輕節點,並且必須手動添加新鏈,在一個巨大的共享DA 層上運行DAS 效率要高得多;
對於每個鏈來說,為許多不同的鏈雙向驗證有效性證明是低效的,然而,理論上可以聚合多個鏈之間的證明,這樣整個鏈集群只需將一個證明發佈到鏈上;
這裡有權衡和好處,但也要記住,有趣的資產在哪裡存在巨大的路徑依賴性,如果你想使用一堆以太坊原生資產(包括其Rollup 中的資產),那麼將你的鏈紮根於以太坊及其跨鏈橋是有意義的。
結論
「Rollups 繼承安全性」是一個很好的簡寫,但請記住這些是我們真正的意思的關鍵點:
Rollup 向其主鏈(例如以太坊)支付其消耗的資源(DA)的租金;
Rollup 可以公開具有高達主鏈的安全屬性的確認規則(即使用者可以獲得與在主鏈本身上操作時相同的安全保證);
使用者以主鏈共識的速度獲得這些主鏈安全屬性;
如果Rollup 使用者希望比主鏈提供的確認速度更快,他們可以使用確認規則,該規則會做出額外的臨時安全性假設;
觀察者(即使用者)透過確認規則與Rollup 進行交互,具有最小信任假設的驗證橋就是這樣一個(可選但非常有價值的)觀察者;
現在,考慮


