Rollup 的新分類:Sovereign 與Based Rollup

作者:NIC Lin 來源:medium

Rollup

不管是Validity Rollup還是Optimistic Rollup,它們都會將資料上傳到L1(比如以太坊),讓所有人都可以通過存取L1來存在取到該Rollup的資料,並藉此導出Rollup最新的狀態,比如愛麗絲有10 USDT、鮑勃有5 USDT。

沒有把資料上傳到L1 的就不僅僅屬於Rollup(例如Validium、zkPorter 或者Arbitrum AnyTrust),它們不是這篇文章要討論的對象。其他文章也不會討論Rollup 如何驗證狀態的有效,也就是有效性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 發生什麼事,只要L 1 本身沒有被攻擊(例如發生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 之間流轉。

L1能讀到L2狀態,就能安全地進行消息傳送,L1/L2之間就能互通有無

而Sovereign Rollup 即拿掉Settlement Layer(或者說將自己改變成Settlement Layer),單一將L1 作為Data Availability Layer 使用。

L1 只讀取到Sovereign Rollup 放到L1 的區塊或交易資料,但不知道L2 最新狀態,也沒法交互

為什麼要拿掉Settlement Layer?有不同理由或原因:

  1. 如同開頭所述,如果Rollup 的Settlement Layer 在L1,則它將會受L1 所影響,不管是要升級還是被攻擊

  2. 可能L1 本身不支援複雜的運算來做到紀錄Rollup 狀態並利用這個狀態進行訊息資產的互通等功能,例如像是在Celestia上你只能單純放資料上去,或像是在Bitcoin 上你只能進行能力有限的運算,這樣的L1 也就沒辦法成為Settlement Layer

  3. 或許該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 節點從L1 資料中篩選出自己的區域,並解讀、算出最新狀態

如果兩個Sovereign Rollup 的節點是不同版本的,就可能會讀出不同的資料、或者是算出不同的最新狀態,也因此這兩個節點就不會在同一條鏈上,它們各自所見的其實就是兩條分開的鏈條的其中一條。

不同版本本的節點可能會得到不同的狀態,也只是分岐到不同的鏈接上

這其實就和你跑不同版本的Ethereum 節點一樣,兩個版本有可能不會是同一條鏈。例如硬分叉後,忘記更新節點版本、不願意更新節點版本的人就會自然地留在原本的鏈上(例如ETC、ETHPoW),而更新節點版本的人就會在新的鏈上(ETH)。

看到這邊讀者應該也知道為什麼它會被稱作Sovereign Rollup 了,因為在Sovereign Rollup 中大家可以各自按照自己群體的(社會)共識,去選擇節點版本、去解讀資料。如果今天該Sovereign Rollup 社群出現像是ETHPoW vs ETH 的分歧,那就是大家各走各的,選擇不同的節點版本去解讀資料,但資料還是原本那一份,沒有改變過。

注:當然分叉後,各自版本的節點就會上傳符合自己規則的資料到L1,屆時兩邊都會直接過濾掉對方上傳的資料。

在中間的時間點下面的節點分到了v1.1.2版,之後彼的區塊就各獨立了

有哪些Sovereign Rollup?

目前沒有什麼Sovereign Rollup 的例子,不過隨著區塊鏈的模組化設計風潮越來越熱,肯定會有許多Sovereign Rollup 出現。例如Celestia 正在設計的模組化框架Rollkit可以透過Cosmos SDK 打造一個Sovereign Rollup。不像原本使用Cosmos SDK 打造的鏈(一個L1)會需要執行Tendermint 共識來決定交易排序,該Sovereign Rollup 可以像目前常見的Rollup 一樣使用單一Sequencer 來排序交易,省去需要多個共識節點並仰賴其安全性的困擾以及執行共識演算法所消耗的資源。且該Sovereign Rollup 是將交易資料上傳到Celestia,但同時因為是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。

Ethereum 是Celestia 上的Sovereign Rollup,也是Settlement Rollup

注:或許未來大家逐漸熟悉模組化、熟悉不同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 的區塊

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 參與者參與出塊的門檻,也就降低去中心化程度,且引入競標機制也帶來一定複雜度。

Total
0
Shares
Related Posts