除了大家所熟知的 Validity Rollup 以及 Optimistic Rollup,還有哪些不同的 Rollup 分類方式?
(前情提要:Layer2研究》為什麼現在沒有真正的Rollup? )
(背景補充:V神提案為以太坊引入新交易格式,以降低 rollups 交易費用 )
先備知識:
理解 Rollup 的運作方式以及 Rollup 的資料可用性 (Data Availability)問題。
Recap on Rollup
不管是 Validity Rollup 還是 Optimistic Rollup,它們都會將資料上傳到 L1(例如 Ethereum),讓所有人都可以透過存取 L1 來存取到該 Rollup 的資料,並藉此推匯出 Rollup 最新的狀態,例如 Alice 有 10 USDT、Bob 有 5 USDT。
沒有把資料上傳到 L1 的就不屬於 Rollup(例如 Validium、zkPorter 或 Arbitrum AnyTrust),它們不是這篇文章要討論的物件。另外本篇文章也不會討論 Rollup 如何驗證狀態的有效性,也就是 Validity Rollup 和 Optimistic Rollup 的區別。
本篇第一部分將介紹 Sovereign Rollup。Sovereign Rollup 如其名,是屬於擁有自主權的 Rollup,進行 Rollup 版本升級或硬分叉都發生在 Sovereign Rollup 上,不像大家現在所熟悉的 Rollup 們(以下簡稱 Classic Rollup),Classic Rollup 進行升級、硬分叉的地點不在 Classic Rollup 上,而是在 L1 的 Rollup 合約上:在 L1 的 Rollup 合約藉由多籤錢包或治理投票執行版本升級。也就是由一個 L1 上的合約來決定一個 Rollup 目前該用哪個版本。而且如果 L1 發生針對該 Rollup 的攻擊,例如攻擊治理機制或攻擊 Rollup 合約本身,該 Rollup 都是會受影響的。相反地,因為 Sovereign Rollup 只單純把 L1 當成放資料的地方,所以所有 Sovereign Rollup 成員都可以自己在鏈下決定目前該用哪個版本,而且不管 L1 發生什麼事,只要 L1 本身沒有被攻擊(例如發生 Re-org 或是鏈停擺),Sovereign Rollup 就不會受影響。
第二部分將介紹 Based Rollup。Based Rollup 移除 Sequencer 這樣的角色,將交易排序的權力交給 L1 的礦工、Validator、MEV Searcher 等等。不只讓排序交易變得更去中心化,同時也能簡化設計、移除系統許多元件。
Sovereign Rollup
Data Availability Layer and Settlement Layer
Classic Rollup 例如 Arbitrum、Optimism、StarkNet 等等,除了把 Ethereum(L1)當作放資料的地方(也就是 Data Availability Layer),還同時將 Ethereum 當作 Settlement Layer:在 Ethereum 上進行結算,把 L2 的狀態(也就是 L2 各個地址的餘額)寫到 L1 上。
為什麼會需要把 L2 狀態寫到 L1 上?因為這樣 L2 和 L1 就能互通訊息、互通資產:L1/L2 的 dApp 能同步訊息併合作、L1 的 ETH 能安全地在 L1/L2 之間流轉、L2 的 ARB/OP 也能安全地在 L1/L2 之間流轉。
而 Sovereign Rollup 便是拿掉 Settlement Layer(或是說將自己變成 Settlement Layer),單純將 L1 作為 Data Availability Layer 使用。
為什麼要拿掉 Settlement Layer?有不同理由或原因:
- 如同開頭所述,如果 Rollup 的 Settlement Layer 在 L1,則它將會受 L1 所影響,不管是要升級還是被攻擊
- 可能 L1 本身不支援複雜的運算來做到紀錄 Rollup 狀態並利用這個狀態進行訊息資產的互通等功能,例如像是在 Celestia 上你只能單純放資料上去,或像是在 Bitcoin 上你只能進行能力有限的運算,這樣的 L1 也就沒辦法成為 Settlement Layer
- 或許該 Rollup 本身就不需要另外一條鏈來作為 Settlement Layer,它有自己的原生代幣、生態,不需和 L1 互通資產
Sovereign Rollup 運作方式
Sovereign Rollup 單純將 L1 作為 Data Availability Layer,把資料上傳到 L1,仰賴 L1 確保資料可得且資料排序不會改變。Sovereign Rollup 的節點則靠著讀取 L1 上的資料並進行解讀,來算出該 Sovereign Rollup 當前的最新狀態。「解讀、算出」代表的其實就是 Sovereign Rollup 的共識規則、State Transition Function:怎麼從 L1 資料中篩選出符合該 Sovereign Rollup 格式、規則的區塊和交易、篩選後怎麼驗證這些區塊和交易、驗證後怎麼執行這些交易來算出最新的狀態。
如果兩個 Sovereign Rollup 的節點是不同版本,就可能會解讀出不同資料、或是算出不同的最新狀態,也因此這兩個節點就不會在同一條鏈上,它們各自所看到的其實就是兩條分岔的鏈的其中一條。
這其實就和你跑不同版本的 Ethereum 節點一樣,兩個版本有可能不會是同一條鏈。例如硬分叉後,忘記更新節點版本、不願意更新節點版本的人就會自然地留在原本的鏈上(例如 ETC、ETHPoW),而更新節點版本的人就會在新的鏈上(ETH)。
看到這邊讀者應該也知道為什麼它會被稱作 Sovereign Rollup 了,因為在 Sovereign Rollup 中大家可以各自按照自己群體的(社會)共識,去選擇節點版本、去解讀資料。如果今天該 Sovereign Rollup 社群出現像是 ETHPoW v.s. ETH 的分歧,那就是大家各走各的,選擇不同的節點版本去解讀資料,但資料還是原本那一份,沒有改變過。
注:當然分叉後,各自版本的節點就會上傳符合自己規則的資料到 L1,屆時兩邊都會直接過濾掉對方上傳的資料。
有哪些 Sovereign Rollup?
目前沒有什麼 Sovereign Rollup 的例子,不過隨著區塊鏈的模組化設計風潮越來越熱,肯定會有許多 Sovereign Rollup 出現。例如 Celestia 正在設計的模組化框架 Rollkit 可以透過 Cosmos SDK 打造一個 Sovereign Rollup。不像原本使用 Cosmos SDK 打造的鏈(一個 L1)會需要執行 Tendermint 共識來決定交易排序,該 Sovereign Rollup 可以像目前常見的 Rollup 一樣使用單一 Sequencer 來排序交易,省去需要多個共識節點並仰賴其安全性的困擾以及執行共識演演算法所消耗的資源。且該 Sovereign Rollup 是將交易資料上傳到 Celestia,但同時因為是 Sovereign Rollup 所以不會受 L1 影響(例如升級或被攻擊)。
注 1:Rollkit 後來也支援了將 Bitcoin 當作 Data Availability Layer,這樣的 Rollup 能繼承 Bitcoin 安全性但 throughput 就會受限於 Bitcoin。
注 2:基本上基於 Celestia 的鏈都可以稱作 Sovereign Rollup。
或是假設 Arbitrum 不再使用 Ethereum 當作 Settlement Layer、不再需要和 Ethereum 互通訊息或資產,單純把 Ethereum 當成放資料的地方,則這樣的 Arbitrum 也會成為一個 Sovereign Rollup。
Settlement Rollup
另外也有像是 Settlement Rollup 這樣的定義出現,不過它基本上就是 Sovereign Rollup,然後這個 Sovereign Rollup 還會是其他鏈的 Settlement Layer。也就是說,如果一個 Sovereign Rollup 上面還會有其他鏈、其他 Rollup 將它當作 Settlement Layer 的話,這個 Sovereign Rollup 就可以稱作 Settlement Rollup。
注:要能成為其他鏈的 Settlement Layer 必須要有基本的智慧合約功能,讓兩邊能互通訊息、資產。
如果 Ethereum 今天改成把鏈的資料都上傳到 Celestia,那這樣的 Ethereum 就會是 Celestia 上的 Sovereign Rollup,且同時也是 Settlement Rollup,因為 Ethereum 上面還有許多鏈、許多 Rollup 把它當作 Settlement Layer。
注:或許未來大家逐漸熟悉模組化、熟悉不同 Layer 的功能,不再從 Rollup 角度出發,Sovereign Rollup 或 Settlement Rollup 這樣的名詞就會漸漸消失。反正重要的是你這條鏈(不管是 L1 還是 L2 還是 L3 etc.)怎麼設計、怎麼做出取捨,為不同 Layer 選擇適合的建造工具。
Based Rollup
另一個最近出現的 Rollup 分類是 Based Rollup,又或著稱 L1-sequenced Rollup。Based Rollup 的 Based 指的是在排序交易這件事上,Rollup 不是交給一個 Sequencer(或多個 Sequencer)來排序交易,而是完全交給 L1 的礦工、Validator 或 MEV Searcher 等等來排序交易。Classic Rollup 將資料上傳到 L1 時,L1 Rollup 合約會檢查是不是符合資格的 Sequencer 所上傳的,而 Based Rollup 則是沒有限制,任何人都可以上傳。
Based Rollup 最大的優點就是沒有 Sequencer,也就沒有單點故障的問題或甚至需要擔心 Sequencer 有完全交易排序權力的問題,也就是不需要擔心 Sequencer 當機導致鏈停擺或故意不收特定使用者的交易,或是擔心 Sequencer 會惡意套取使用者的 MEV。Based Rollup 完全繼承 L1 在出塊上的去中心化程度。
Based Rollup 有以下優點:
使用者離開 Rollup 的成本很低
一般 Rollup 為了避免 Sequencer 故意不收入特定使用者交易或是 Sequencer 停擺導致使用者無法離開 Rollup,會設計一套 Force Inclusion 機制或是 Escape Hatch 機制來讓使用者可以不透過 Sequencer 而直接到 L1 安插自己的交易到 L2 區塊中。但這樣的設計第一個代價是成本高,使用者必須要自己付出 L1 礦工費去安插交易,第二個代價是從 L1 安插的交易可能會影響 Sequencer 打包 L2 區塊的過程:有可能 L1 安插的交易會導致 Sequencer 準備收入到 L2 區塊裡交易無效,例如 Alice 在 L1 安插的交易把錢都轉給 Bob,導致 Alice 在 L2 區塊裡轉錢給 Carol 的交易失敗。
Sequencer 收到 Alice 的交易後,確認交易結果並放進下一個區塊中
但 Alice 直接透過 Force Inclusion 將另一筆交易直接送到 L1,導致 Sequencer 收到的 Alice 交易失敗
Arbitrum 為了避免 L1 安插的交易影響 Sequencer 打包 L2 區塊的過程,所以 L1 安插的交易不會馬上生效,需要等待 Sequencer 主動申請將該交易收入最新一個區塊才會生效,或如果 Sequencer 都沒反應,過一段時間後就會強制生效。Optimism 則是允許交易立即生效,如果 L1 安插的交易影響到 L2 區塊裡的交易,Sequencer 必須要自己想辦法處理。可以看這篇介紹瞭解更多 Arbitrum 及 Optimism 在處理 L1 安插交易的比較。
設計簡單許多
Based Rollup 比一般 Rollup 少了 Sequencer 的角色,也就少了硬體的負擔(不必擔心 Sequencer 機器負載問題)以及任何為了讓排序交易更公平的機制(例如去中心化 Sequencer 的機制)。然後也不需要 Force Inclusion/Escape Hatch 機制,包含 L1 的相關合約及相關鏈下工具來方便使用者能自己在 L1 安插交易。
但 Based Rollup 也有一些缺點:
沒有交易提前確認的服務
有 Sequencer 的話,Sequencer 可以很快告訴使用者他的交易執行結果。只要使用者相信 Sequencer,就能立刻確認交易結果,不需等待交易上傳到 L1。
Based Rollup 中,Alice 等到交易上傳到 L1 才相信自己的交易被收入,要等至少一個 L1 區塊的時間
一般 Rollup 中,如果 Alice 相信 Sequencer 會收她的交易的話,馬上就能確認交易是否會被收入
協議失去 MEV 收益來源
MEV 不再交由 Sequencer 來把關、提取,而是交給 L1,因此 L2 本身沒辦法獲得 MEV 收益。可以透過設計出塊權利的競標機制來捕捉 MEV 收益,但相對地會拉高 L1 參與者參與出塊的門檻,也就降低去中心化程度,且引入競標機制也帶來一定複雜度。
📍相關報導📍
V神:合併後結合Rollup,Gas費可能僅0.002鎂!幣安ETH期貨未平倉量破今年新高