📢 Gate廣場 #NERO发帖挑战# 秀觀點贏大獎活動火熱開啓!
Gate NERO生態周來襲!發帖秀出NERO項目洞察和活動實用攻略,瓜分30,000NERO!
💰️ 15位優質發帖用戶 * 2,000枚NERO每人
如何參與:
1️⃣ 調研NERO項目
對NERO的基本面、社區治理、發展目標、代幣經濟模型等方面進行研究,分享你對項目的深度研究。
2️⃣ 參與並分享真實體驗
參與NERO生態周相關活動,並曬出你的參與截圖、收益圖或實用教程。可以是收益展示、簡明易懂的新手攻略、小竅門,也可以是行情點位分析,內容詳實優先。
3️⃣ 鼓勵帶新互動
如果你的帖子吸引到他人參與活動,或者有好友評論“已參與/已交易”,將大幅提升你的獲獎概率!
NERO熱門活動(帖文需附以下活動連結):
NERO Chain (NERO) 生態周:Gate 已上線 NERO 現貨交易,爲回饋平台用戶,HODLer Airdrop、Launchpool、CandyDrop、餘幣寶已上線 NERO,邀您體驗。參與攻略見公告:https://www.gate.com/announcements/article/46284
高質量帖子Tips:
教程越詳細、圖片越直觀、互動量越高,獲獎幾率越大!
市場見解獨到、真實參與經歷、有帶新互動者,評選將優先考慮。
帖子需原創,字數不少於250字,且需獲得至少3條有效互動
兩萬字長文:Rollups的安全性之辯
原文作者:Jon Charbonneau 原文編譯:Frank,Foresight News
介紹
不管你喜歡還是討厭,Twitter 可能永遠不會停止關於「L2」或 Rollup 是否「繼承安全性」(inherit security)的爭論。
雖然大多數爭論都是難以辨別的語義之戰,但如果你能設法縮小爭論範圍,那麼潛在的觀點就非常有價值,因為它們觸及了 Rollup 何時、何地以及為何有意義的核心問題。
可擴展的 L2 是否消除了市場對 L1 的需求? 有沒有可能將像Solana這樣的L1變成L2?
這些爭論主要歸結為安全問題。 不幸的是,這裡的「安全」定義一直非常難以捉摸。 我們通常會隨意使用這個術語,大多數人都大致知道我們在說什麼,但又不完全清楚。 我們將在這裡跨不同架構詳細分解安全性。
流行語定義
匯總
我之前使用過 Mustafa 的以下定義:「Rollup 是將其區塊發佈到另一個區塊鏈並繼承該區塊鏈的共識和數據可用性(DA)的區塊鏈」。
以下則是 James Prestwich 給出了更一般的定義:「Rollup 是通過自定義狀態轉換函數,選擇加入另一個共識機制,並保留超集狀態的一種方式」。
兩者都不需要驗證橋,以最小的信任假設構建跨鏈橋接的能力是 Rollup 的主要好處,但單獨分析它們至關重要。
我們可以考慮以下的 Rollup 標準:
Rollup 節點通過應用自身的狀態轉換函數(STF),在主鏈共識結果上確定 Rollup 的狀態(例如主鏈確認排序和可用性的數據區塊)。
跨鏈橋
跨鏈橋是允許兩個區塊鏈相互通信的系統。 鏈 A(目標鏈)需要確信鏈 B(源鏈)上發生了某些事件,反之亦然。 理想情況下,我們希望這種通信是雙向的,具有強相關的安全屬性(例如消息有效的高置信度、源鏈不會撤銷等等)。
從根本上來說,跨鏈橋充當了另一個區塊鏈的「觀察者」(就像任何其他典型的人類用戶一樣)。 跨鏈橋實現了給定的確認規則,通過該規則,它確信所連接鏈的狀態(例如,必須通過多少個乙太坊區塊才能接受轉帳輸入)。
從主鏈橋接→Rollup
這個方向非常簡單,因為 Rollup 節點會完全驗證主鏈。
Rollup 節點知道主鏈上發生的一切,因此它們知道跨鏈橋接的交易何時發生,當前的乙太坊 Rollup 完整節點還必須為乙太坊基礎層本身來運行完整節點。
請注意,如果支持的話,Rollup 節點也可以改為運行其主鏈的完整驗證器輕節點。 讓我們考慮一個假設的例子,其中乙太坊已經完全實現了以下升級:
現在,假設你想為基於乙太坊的 Rollup 運行完整節點,要遵循有效的 Rollup 鏈,必須瞭解乙太坊的規範鏈,這就需要檢查乙太坊自身的共識和有效性:
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 排序之間的相似之處。 操作員獲取用戶的鏈下簽名消息→將結果數據發佈到主鏈。
以意圖為中心的架構和以 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」是不可避免的。 上圖中的兩種方法之間存在有效的區別:
當我們在本報告中討論「Rollup」時,我們將指的是前者(即不是具有 DAS + 有效性 / 故障證明的集成鏈,這可能被稱為內置 Rollup)。
雖然「傳統」Rollup 並沒有壟斷 DAS 或證明(即集成的大型區塊鏈可以添加它們),但請注意,我們在這裡忽略了很多技術細節,你不能只選擇 Solana 並決定「哦,我想我們今天就添加 DAS」。
這需要從根本上重構協定,以開始接近我們所看到的乙太坊和 Celestia 正在做的事情:
改變數據編碼方式以支援 DAS 將等同於減慢區塊編碼和傳播速度,開始更接近傳統的 DA 層:
出於這個原因,我們看到團隊構建了以下內容:
然而如果將快速區塊和 DAS 的時間分開,它們並不一定不相容。 例如,你可以想像像 Solana 這樣的鏈提供兩條不同的路徑:
Anatoly 在播客中討論了 Eclipse 如何將乙太坊、Celestia 和 Solana 結合在一起,從另一端來看,你可以想像 DA 層在使數據可用於採樣之前添加更快的路徑:
在同一基礎層協定中提供兩條路徑可以有效地內部化快速共用排序,從而為基於 Rollup 提供有趣的設計。 請注意,目前這仍然是一個非常探索性的想法。
確認規則
有了背景知識,我們現在可以開始分解這些不同架構的安全屬性。
首先,節點通過運行「確認規則」(Confirmation Rules)來與任何區塊鏈進行交互:
「確認規則,是指由節點運行的輸出某個區塊是否被確認的演算法。 在這種情況下,在某些假設下,主要涉及網路同步和誠實股份的百分比,當滿足這些條件時,該區塊將被保證永遠不會發生重組 」。
對於給定的鏈可以存在任意多個確認規則:
由於每個確認規則可以做出非常不同的假設,因此即使與同一條鏈交互,它們也可以具有非常不同的安全屬性:
這種區別很微妙但很重要:
安全=安全性 + 活躍度
現在讓我們深入研究 Rollup 是否會從其主鏈「繼承安全性」。
繼承,也許更清楚地說,Rollup 總是「租用」而不是「繼承」其主鏈中的任何內容,它會為消耗的資源(DA)支付持續的成本,任何一方都可以選擇結束這種關係。 但這不是問題有趣的部分。
安全性,從現在開始我們將重點關注安全性。 演算法的安全(Security)由安全性(Safety)和活躍度(Liveness)組成:
使用 Sreeram 的出色框架,我們可以將它們進一步分解為五個屬性,這些屬性共同確保確認規則的安全:
讓我們考慮一個具有 DAS + 有效性 / 故障證明的假設整合鏈的範例。 它的數據不會發佈到任何其他外部主鏈。 為了簡單起見,我們假設即時最終確定(例如 Tendermint),因此可用分類賬與最終確定分類賬之間沒有可用的區別(例如乙太坊的 Gasper)。
我們將考慮三個確認規則,可用於使用不同類型的節點來跟蹤鏈:
確認規則有安全屬性,鏈沒有
再次強調這一點,「我們通俗地談論一條鏈是安全的,但實際上它是安全屬性所附加的確認規則」。
讓我們看一些例子。
CAP 定理
作為背景,CAP 定理告訴我們,沒有一個帳本可以同時滿足這兩個條件:
共識協定往往分為兩個部分,每個部分都滿足上述條件之一:
比特幣確認規則
比特幣的共識並不提供任何硬性的經濟最終性。
節點在其本地檢視中觀察最長的鏈,每個使用者都可以自由應用他們喜歡的任何確認規則(例如接受具有 > k 個確認的區塊)。 標準是等待 6 個區塊確認,但這取決於你。
對於更高價值的交易,等待更長時間是合理的。 等待時間與安全性(即重組的可能性)之間需要權衡。
乙太坊確認規則
乙太坊的 PoS 共識(Gasper)乍一看似乎迴避了 CAP 定理。 然而,它實現了這兩個屬性,因為它包含兩個嵌套帳本:
Gasper 屬於「潮起潮落」(ebb-and-flow,又名雙帳本或雙確認規則)協定家族。 雙帳本設計不屬於 CAP 定理的範圍(即它假設單一確認規則)。 當網路分區時,最終確定的帳本落後於自適應帳本,但當網路修復時它會趕上。
這允許在用戶級別而不是在系統範圍級別解決適應性與最終性之間的權衡。 這是區塊鏈 CAP 定理在允許使用者依賴的適應性和最終性中,提出的「檢查點最長鏈」協定的一個特徵。 這些協議為個人使用者提供了最終性和適應性之間的選擇,而不是將其強加於整個系統級別。
Gasper 明確公開了兩個不同的確認規則,映射到上面提到的兩個帳本:
正如論文中所討論的:
「更樂觀的自適應規則總是確認由更保守的規則標記為最終確定的區塊,並且可能在可變的參與水準期間確認更多的區塊。 客戶(用戶)根據個人喜好在確認規則之間進行本地選擇,而礦工遵循與這兩個確認規則一致的固定區塊提議規則」。
這允許系統中所有(誠實的)節點:
無論參與程度如何,驗證者都會繼續延長最長的鏈(在不斷增加的高度上開採新區塊),但只有在有足夠的參與度時才會出現新的檢查點。
最長的鏈(包含最新的檢查點)可以在不同的鏈之間交替(即重組未完成的區塊),但無論網路條件如何(即最終性),檢查點都保證位於單個鏈上。
使用者的安全取決於他們遵守的確認規則。 快速區塊確認與更強的安全保證之間需要權衡。 賣咖啡的使用者可能更喜歡活躍性而不是安全性,但賣遊艇的使用者可能更喜歡安全性而不是活躍性。
乙太坊節點還可以將一些其他的中間確認規則啟發式應用於實際用途。 與其像比特幣那樣使用樸素的 k 個區塊作為自適應確認規則,我們可以添加其他啟發式方法,其中包括有關網路同步和驗證者誠實的假設。
這正是《乙太坊共識協定確認規則》中提出的內容,它提出了具有以下屬性的確認規則:
該確認規則不能替代經濟最終性。 相反,它為相信網路同步將在不久的將來保持的使用者,提供了有用的啟發式方法。 讓我們比較一下兩者:
讓我們考慮一些例子,譬如你以 250 萬美元的 ETH 出價售賣一艘遊艇,以下是一些可能的確認規則:
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
現在讓我們稍微修改一下這個例子:
你會注意到,Rollup 對於不同的時間範圍有兩類完全獨立的確認規則(即無論你是基於定序器的預共識進行操作還是等待主鏈的最終共識),我們現在來看看每條路徑。
快速路徑 - 在主鏈共識之前
Rollup 節點可以依賴定序器的確認(在發佈到主鏈之前),我們假設他們可以運行以下 Rollup 節點:
從技術上講,Rollup 定序器可以促進 DAS 並在發佈到主鏈之前提供有效性證明,但實際上這不會發生。 完整驗證器輕節點通常旨在通過主鏈檢查這些,但是我假設「即時」DAS + 證明可以與集成鏈進行更清晰的同類比較。
下表是與集成鏈示例相比的變化:
刪除內容以紅色刪除線顯示,添加內容以藍色顯示:
慢速路徑 - 等待主鏈共識
為了額外的安全性,節點可以等待主鏈(例如乙太坊)的共識,這就是更清楚地發揮作用的地方,即 Rollup 節點也應該運行主鏈節點:
如果我們得到一個可零知識證明的主鏈(例如乙太坊 L1 zkEVM)+ 所有 Rollup 都證明它們在主鏈內部的狀態→我們就得到了 Vitalik 對奇點證明的願景。 驗證乙太坊的一個零知識證明意味著驗證所有其他鏈及其內部實現的驗證節點:
為了簡單起見,我們在這裡假設 Rollup 的狀態有效性是在主鏈本身內驗證的(例如 Rollup 與主鏈有一個內置的橋),因此我們可以忽略顯式運行協定外的附加 Rollup 節點軟體。
與之前的「快速路徑」Rollup 表相比的變化如下:
通過主鏈強制交易包含或強制定序器 / 證明器替換來實現,我們在這裡稱之為「最終」活躍度,因為從 Rollup 的角度來看,它是一條慢速路徑,但從主鏈的角度來看,這可以被視為「即時」活躍度。
Rollup 與集成區塊鏈
現在我們可以看到與集成區塊鏈和 Rollup 相關的安全屬性變化:
活躍度和抗重組
無法通過密碼保證這些屬性,即使跨越確認規則(例如無論運行全節點還是輕節點),你也可能容易受到安全故障的影響。
如果運營商完全失控,沒有完整的節點或 ZK 證明可以保護你免受活躍度故障或重組的影響。
這些屬性是通過強大且去中心化的運營商、抗審查機制、有利於活躍度的共識、重組的高「成本」、強大的社會共識等來實現的。 客觀比較這些通常具有挑戰性。
你如何衡量運營商去中心化和社會共識? 沒有一個正確答案。 這些可以說是最難設計的方面,而且它們對於給定的鏈來說確實是非常獨特的。
重要的是,我們看到 Rollup 可以將抗重組和活躍度委託給主鏈,Rollup 上使用的確認規則可以具有相同的安全屬性,就像它們在同一時間範圍內在主鏈上運行一樣。
鏈甚至可以選擇將哪些屬性委託給哪個鏈,不同類型的「L2」架構(例如 validiums、optimism 和側鏈)可以吸收不同的安全屬性子集。 例如:
Rollup 還可以為使用者提供退出 Rollup 的逃生通道,但保留審查使用者並防止存款進入 Rollup 的能力(例如 Loopring 就是這樣工作的)。 如果存款在一段時間后仍未得到處理,使用者可以從 L1 合約中提取鎖定的資金。
這凸顯了此類機制的重要性。
數據可用性和狀態有效性
與活躍度和抗重組不同,節點可以確保 DA 和狀態的有效性,而無需做出任何大的閾值假設(或無需在兩者之間進行安全權衡)。 惡意的大多數區塊生產者可能會導致活躍度和重組失敗,但它們不會導致全節點或全驗證器輕節點的 DA 或有效性失敗。
然而,共識驗證者輕節點當然會受到誠實多數的狀態有效性和 DA 失敗的影響。 他們只是相信共識所說的一切。 這就是為什麼 DA 和狀態有效性是使安全確認規則易於訪問並真正發揮作用的原因。 這通常是傳統 Rollup 與不太重視使用者驗證的大型區塊鏈之間在意識形態上的巨大差異。
按照順序,這些通常是平衡安全性和可訪問性的首選方法:
請注意, 2 (完整節點)實際上是最安全的。 ZK 驗證非常簡單,但 DAS 節點做了一些完整節點沒有的額外假設。 然而,它們提供與完整節點接近相同的安全性,而資源需求只是其中的一小部分,它們是可擴展的。
全節點只需下載所有數據,因此具有100%的確定性。 只有當一切都在那裡時,他們才會在區塊上簽字。 沒有對外部各方做出任何假設。
DAS 的目標是獲得幾乎與全節點一樣好的安全性,同時資源需求大幅降低(即更高的規模)。 這篇關於輕節點數據可用性安全級別的文章很好地涵蓋了這一點。
簡而言之,你通常會圍繞網路同步性以及是否存在足夠的節點來重建數據做出一些假設。 如果敵對區塊生產者隱瞞任何數據,即使是一小部分誠實的輕節點也應該能夠集體重建區塊。 關於選擇性份額披露還存在一些假設,其中敵對區塊生產者可以單獨欺騙一些少量的輕節點,但不能集體欺騙。
相對於典型的大致「N/2 」假設(例如, 51% 的區塊生產者可以導致重組),這些「N 中少數」假設(例如,誠實的少數節點可以確保 DAS 安全)非常有利。 Vitalik 在信任模型的帖子中對此進行了很好的介紹。
總體而言,DA 和狀態有效性並不像活躍度和抗重組那樣由 Rollup「委託」。 DA 和狀態有效性可由使用者直接驗證,而其他屬性更嚴重地依賴於鏈的共識參與者及其激勵。
回顧一下之前驗證 Rollup 證明的範例:
無論哪種情況,你都可以保證有效性。 無論你在哪裡檢查,都無法確定其有效性。 乙太坊並沒有像乙太坊節點「強制」抗重組或活躍屬性那樣真正「強制」有效性。 抗重組和活力很大程度上取決於你從誰那裡獲得它們。
考慮基於詐騙鏈的 Rollup:
Rollup 能夠公開具有與其主鏈相同的安全屬性的確認規則,他們最多可以按照其主機鏈共識的速度接收這些屬性(實際上,它通常會慢一些,具體取決於 Rollup 發佈到主鏈的頻率)。
Rollup 還可以提供「快樂路徑」更寬鬆的確認規則(即定序器)以獲得更好的用戶體驗,但它們保留了失敗時的交易回退。 如果你的定序器停止了,你可以繼續移動。 但是,如果你的鏈完全依賴於你自己的驗證器集(即作為集成鏈),則情況並非如此。
明智地選擇 Rollup 的主鏈會對安全屬性產生具體的影響。 利用具有強大活躍度(帳本增長 + CR)和抗重組特性的主鏈尤其有價值。
不同時間段的不同安全假設
讓我們看一個簡單的例子。 Chain X 正在決定是在現有主鏈上部署為 Rollup,還是部署為自己的集成區塊鏈。
Rollup 具有以下特點:
集成區塊鏈具有以下特點:
下表給出了用戶在各種實現下可能擁有的最佳安全保證的簡化直觀表示(即他們使用可用的最強確認規則)。 特別是,我們在這裡關注活躍度和抗重組(因為我們假設該鏈將在這兩種情況下僅實現 DAS + 有效性證明):
Rollup 的「最終安全性」高於其「即時安全性」,因為主鏈無法為我們提供比其自身出塊時間更快的保證。 即使你可以檢查定序器的預確認是否是有效的狀態轉換,但在它們最終到達 DA 層之前,你也無法完全保證它們的最終性。
但正如我們所看到的,以 Rollup 方式部署到強大的主鏈可以增強安全性。 他們可以按照其主鏈的速度租用安全性。 從根本上說,沒有辦法以比主鏈自身共識更快的速度獲得主鏈的全部安全屬性。
然而,使用者往往不耐煩。 因此,Rollup 通常會提供更快的預確認,但在此期間的保證會較低。 Rollup 可以選擇一個平衡的定序器設計:
有趣的是,你可以認為 L1 排序 Rollup 的活躍度比中心化定序序器更差,具體取決於你的時間尺度。 到目前為止,我們已經討論了活躍度,將其納入某種「有限時間」的概念中。 然而,這完全是相對的和主觀的。 相對於什麼? 需要多少時間?
單純的 L1 順序 Rollup 將僅以 L1 區塊的速度(例如 10 秒)包含在內,當你周圍的世界在變化時,你在這些區塊之間沒有活躍度保證。 所以這取決於你的基準:
如果你嘗試在沒有預先確認的情況下實現基於「真實」的 Rollup,則甚至有可能無論如何都會出現預先確認。 對於參與者(例如乙太坊構建者和驗證者)來說,他們自己做出這一承諾是有經濟激勵的。 這正是為什麼有人討論乙太坊建設者和利益相關者如何嘗試在基礎層提供快速預確認。
這裡有最後一個重要的說明。 假設 Rollup 使用者可以回退到與主鏈相同的活躍度,假設你可以完全以主鏈區塊的速度強制包含(例如如果 Rollup 排序器正在審查你,你可以強制將交易包含在主鏈下一個乙太坊區塊)。
在實踐中,通常會有短暫的延遲。 如果你允許立即強制包含,你可能會暴露有利可圖的審查MEV以及其他複雜性。 然而,有些設計可以從主鏈提供近乎即時的活躍度保證(例如,可能以幾個主鏈區塊而不是一個區塊的速度)。
無論確切的時間尺度如何,吸收主鏈的最終活躍度都是非常強大的,使用強大的主鏈作為協調機制提供了可信的威脅和退出權利。 僅僅暴露這種可信的威脅本身,就使得它極不可能被需要從而從一開始就防止惡意行為。
例如,如果使用者有可靠的機制可以強行退出甚至強行刪除運營商,那麼中心化的 Rollup 定序器就不能隨意從用戶那裡提取租金並將其鎖定。 這是 Chris Goes 關於 MEV 轉換成本邊緣和慢遊戲的演講中討論的一個一般領域。
當然,意外的活躍度也可能發生,在這種情況下,此備份路徑可能再次非常有價值。
證明並不保護鏈,而是保護使用者
遵循這一切,我們可以看到,對於給定的確認規則,證明更準確地保護 Rollup 的不同「觀察者」(使用者),而不是保護「Rollup」本身。 「Rollup」的安全性並不作為單一的具體措施而存在。
確保觀察者的安全當然是最重要的,因為我們都是鏈的觀察者! 這條鏈就是它的觀察者所說的任何東西。 如果你無法以安全的方式觀察它,你就必須信任其他人(例如驗證者)來告訴你它的「真相」。 但我們不想信任,我們想要驗證→我們想要證據。
要了解為什麼區分「證明保護鏈」和「證明保護鏈的觀察者」很重要,請考慮以下事項:
證明為無法直接檢查其有效性的鏈觀察者(即輕節點)增加了安全性。 我們不希望用戶必須運行強大的全節點,因此這些證明很重要。
證明確保 Rollup 橋的安全
Rollup 的驗證橋是一個極其重要的觀察者! 證據確實保證了橋的安全!
與任何典型的輕節點一樣,網橋無法直接檢查 Rollup 的有效性。 我們不相信誠實的多數,而是用證據來保護橋樑。 資料庫 A(DA 層)的共識協定對數據 blob 進行排序,然後驗證橋獨立檢查資料庫 B(Rollup)相應更新的有效性:
橋是另一條鏈的觀察者,它鑄造的每一項資產總是帶有對應橋的確認規則的安全假設。 其確認規則的安全性可以產生廣泛的影響。 這就是為什麼建立安全的橋如此重要(或者理想情況下,首先通過進一步擴展單鏈執行來減少對如此多的橋的需求)。
如果你為該鏈運行全節點,則惡意方無法誘騙你接受無效的狀態轉換。 然而,如果惡意方有不同的確認規則,它仍然可以欺騙橋。 如果你在該橋中持有有抵押品支持的資產,那麼你的資金可能會變得沒有支援。 從這個意義上說,欺騙橋的安全故障是「傳染性的」。
讓我們考慮一個關於 Terra 的舊假設場景:
隨著 Terra 的崩潰,LUNA 的價格暴跌,最終,理論上變為惡意驗證器集的的利潤將超過所質押的 LUNA 的價值,Terra 驗證器可以簽署無效區塊,並執行以下操作:
該橋使用了具有更強信任假設的確認規則。
Terra 驗證者無法從完整節點竊取 Terra 本身的大量資產(他們不會被欺騙),他們會拒絕這些區塊。 然而,驗證者可能會欺騙共識驗證器輕用戶端(包括橋),這就是為什麼共識錯誤會影響跨鏈資產。
請注意,重要的是,這些故障不會「傳染」到鏈的其餘部分,即該故障會「傳染」到暴露於 Terra 橋路線的 Osmosis 資產,但 Osmosis 鏈本身不存在安全故障。
然而,我們顯然想要橋接東西(一般來說,跨鏈通信),僅限於使用其主鏈上的原生資產會很糟糕,我們需要鏈來安全地通信和跨鏈橋接。
作為一個思想實驗,最簡單的解決方案就是讓每個用戶運行每個鏈的全節點,這包括跨鏈橋本身。 請記住,我們已經看到了一些單向嵌入式全節點橋:
這適用於乙太坊全節點,但這顯然無法擴展。 你無法開始讓每個 Cosmos 鏈只需要運行每個其他 Cosmos 鏈的全節點。 這些雙向全節點橋不會擴展,它們只是增加硬體要求。
幸運的是,有一個更具可擴展性的選項。 我們可以部署橋來充分驗證另一條鏈的狀態有效性和DA(除了仍然檢查共識之外)。
狀態有效性 - 雖然 IBC 目前與傳統共識證明一起使用,但可以對其進行修改以添加連接鏈的有效性證明,現在橋不會被無效的狀態轉換所欺騙。 這本來可以準確地防止前面描述的攻擊,如果橋能夠驗證狀態轉換的有效性,則會將 Terra 驗證器的區塊視為無效而拒絕。
這看起來與乙太坊上的 Rollup 橋如何檢查 Rollup 證明非常相似,只不過這裡也可以是雙向的。
DA - 此外,鏈可能要求其節點運行連接鏈的 DAS 輕節點。 例如你可以讓這兩個 Cosmos 鏈需要它們自己的驗證器來運行另一個鏈的 DAS 輕節點(如果每個鏈都實現了 DAS 輕用戶端,而這些鏈目前不支援)。 完成此操作后,每個鏈現在都可以知道彼此的有效性和 DA,而無需運行全節點。
對於 Rollup,根據定義,你擁有主鏈上的所有數據,因此那裡的橋可以訪問它。 另一方面,Rollup 節點運行主鏈節點。
依賴鏈與獨立鏈
讓我們再看一次我們的五個安全屬性,現在在乙太坊上觀察 Rollup 的 Rollup 驗證橋的背景下:
請注意,橋的安全性不僅僅通過附加鏈的超強確認規則(例如,到具有超級值得信賴的驗證器集的鏈的完整驗證器橋)來最大化。 如果橋具有與主鏈相同的安全性假設,則你可以在跨鏈原生資產時獲得最大的安全性。
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 中的資產),那麼將你的鏈紮根於乙太坊及其跨鏈橋是有意義的。
結論
「Rollups 繼承安全性」是一個很好的簡寫,但請記住這些是我們真正的意思的關鍵點:
現在,考慮在集成鏈上部署 Rollup 的好處:
使用者安全 - 無論你是否想要實現任何跨鏈橋,Rollups 都可以從其主鏈租用 DA 並回收其共識,這允許 Rollup 向其使用者公開與主鏈匹配的確認規則,無需達成自己的共識;
跨鏈安全性 - Rollup 可以在主鏈的共用安全域(即主鏈本身及其 Rollup)內構建跨鏈,其安全屬性與在主鏈本身上操作相當;
我們應該看到,這實際上是一幣兩面,Rollup 只是允許鏈提供確認規則,其安全性可達主鏈的安全性。 跨鏈橋和普通使用者都是具有給定確認規則的鏈的觀察者。 橋可能是這些鏈中最重要的「觀察者」,因為它們的安全具有廣泛的影響。
當我們嘗試創建安全系統時,我們需要關心給定確認規則的安全性以及它們的可訪問性。 如果大多數與這些鏈交互的觀察者(使用者)無法觸及,那麼安全確認規則就沒有多大説明。
雖然我們今天將 DAS 和有效性證明與 Rollup 聯繫起來,但它們在邏輯上是獨立的概念。 任何鏈都可以集成這些技術,並且什麼是 Rollup 或不是 Rollup 的區別在終局時開始分解(即對於單個整合的 Rollup 來說,它可能在一個協定下具有邏輯上獨立的 DA 和執行層)。
然而,「傳統 Rollup」和 DA 層顯然在當今的這些驗證和擴展技術中佔主導地位。