用戶安全與跨鏈安全性實際上是硬幣的正反兩面,Rollup 只是允許鏈提供確認規則,其安全性是可以比擬主鏈的安全性。本文源自 Jon Charbonneau 所著文章 《Do Rollups Inherit Security?》,由 Foresight News 編譯、整理。
(前情提要:IOSG Ventures:從區塊交易生命週期到Rollup-centric的新趨勢 )
(背景補充:解讀》以太坊Rollups、Solana、Cosmos應用鏈之間的競爭 )
介紹
不管你喜歡還是討厭, 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 共識證明等);
延伸閱讀:沒有Celestia,以太坊就無法擴展Rollup?
現在,假設你想為基於以太坊的 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 交易順序的共識。
延伸閱讀:Mantle Network投研報告:相容EVM的模組化Layer2網路
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;
延伸閱讀:幣安研報:Rollups過於中心化,深度解讀L2去中心化排序器
然而如果將快速區塊和 DAS 的時間分開,它們並不一定不相容。例如,你可以想像像 Solana 這樣的鏈提供兩條不同的路徑:
- 快速路徑 – 繼續儘可能快地執行交易並傳播資料(就像今天一樣);
- 慢速路徑 – 以可以非同步取樣的方式事後對資料進行編碼,為 DAS 節點提供稍微落後於共識的保證;
Anatoly 在Podcast中 討論 了 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 進行互動,具有最小信任假設的驗證橋就是這樣一個(可選但非常有價值的)觀察者;
現在,考慮在整合鏈上部署 Rollup 的好處:
- 使用者安全 – 無論你是否想要實現任何跨鏈橋,Rollups 都可以從其主鏈租用 DA 並回收其共識,這允許 Rollup 向其使用者公開與主鏈匹配的確認規則,無需達成自己的共識;
- 跨鏈安全性 – Rollup 可以在主鏈的共享安全域(即主鏈本身及其 Rollup)內構建跨鏈,其安全屬性與在主鏈本身上操作相當;
我們應該看到,這實際上是一幣兩面,Rollup 只是允許鏈提供確認規則,其安全性可達主鏈的安全性。跨鏈橋和普通使用者都是具有給定確認規則的鏈的觀察者。橋可能是這些鏈中最重要的「觀察者」,因為它們的安全具有廣泛的影響。
當我們嘗試建立安全系統時,我們需要關心給定確認規則的安全性以及它們的可訪問性。如果大多數與這些鏈互動的觀察者(使用者)無法觸及,那麼安全確認規則就沒有多大幫助。
雖然我們今天將 DAS 和有效性證明與 Rollup 聯絡起來,但它們在邏輯上是獨立的概念。任何鏈都可以整合這些技術,並且什麼是 Rollup 或不是 Rollup 的區別在終局時開始分解(即對於單個整合的 Rollup 來說,它可能在一個協議下具有邏輯上獨立的 DA 和執行層)。
然而,「傳統 Rollup」和 DA 層顯然在當今的這些驗證和擴容技術中占主導地位。
📍相關報導📍
站在開發者角度,為何說OP Rollup完勝ZK Rollup?