Celestia 研究員分析 6 種 Rollup 變體:Sequencer=聚合器+Header 生成者

極客 Web3
2023-07-31 15:43:59
收藏
本文細緻討論了不同 Rollup 變體的抗審查性和活性,還探討了每種 Rollup 變體的節點在信任最小化狀態下的最低配置。對於以太坊愛好者而言,此文也極其值得一讀。

作者:NashQ,Celestia研究員
原文標題:Redefining Sequencers: Understanding the Aggregator and the Header Producer
編譯:Faust,極客Web3

譯者注:出於讓Rollup模型更容易理解、更方便剖析的目的,Celestia研究員NashQ將Rollup的定序器(Sequencer)分成了兩個邏輯實體------聚合器和Header生成者。同時,他將交易排序過程分為了三個邏輯步驟:包含、排序和執行(inclusion, ordering, and execution)。

在這種分析思路引導下,主權Rollup的6大重要變體更加清晰易懂。NashQ細緻討論了不同Rollup變體的抗審查性和活性,還探討了每種Rollup變體的節點在信任最小化狀態下的最低配置(就是指要達到Trustless狀態,Rollup用戶至少要運行哪些類型的節點)。

雖然本文是站在 Celestia 的視角解析 Rollup ,與以太坊社區分析 Rollup 模型的方式有所不同,但考慮到以太坊 Rollup 與 Celestia 主權 Rollup 的諸多互通之處,以及後者日益增強的影響力,對於以太坊愛好者而言,此文也極其值得一讀。

什麼是 Rollup ?

Rollup 是將其"交易數據"發布到另一個區塊鏈並繼承其共識和數據可用性的區塊鏈。

為什麼我特意使用"交易數據"這個詞而不是"區塊"呢?這涉及到 rollup 區塊和 rollup 數據之間的區別,最簡潔的 rollup 只需要像下文中第一種變體那樣的 rollup 數據。

Rollup區塊是一種數據結構,它表示某個區塊高度下的區塊鏈賬本。Rollup 區塊由 rollup 數據和 rollup header 組成。其中,Rollup數據可以是一批交易,或一批交易間的狀態變化。

變體1:悲觀 Rollup / Based Rollup

構建Rollup的最簡單方法是讓用戶將交易發布到另一個區塊鏈上,我們將後者稱為共識和數據可用性層( DA - Layer ),在下面我會簡稱為DA層(譯者注:近似於以太坊社區常說的Layer1)。

在我要介紹的第一種 Rollup 變體中, Rollup 網絡的節點必須重新執行 DA 層包含的 Rollup 交易,以檢查賬本的最終狀態。這便是悲觀 Rollup !

悲觀 Rollup 是一種只支持全節點的 Rollup , 這些全節點需要重新執行 Rollup 賬本包含的所有交易以檢查其有效性。

但在這種情況下,誰充當了Rollup的定序器Sequencer?實際上除了Rollup的全節點以外,沒有任何實體執行過Rollup賬本包含的交易。一般來講,定序器會聚合交易數據,並生成一個 Rollup header 。但上文所說的悲觀Rollup沒有Rollup header!

為了方便討論,我們可以將定序器拆分為兩個邏輯實體:聚合器 Aggregator 和 Header 生成者。要生成Rollup Header,必須先執行交易,完成狀態轉換再計算得到對應的Header。但對於聚合器,它不需要完成狀態轉換,就可以進行聚合步驟。

排序 Sequencing 就是"聚合 + 創建 Rollup Header "的過程 。

聚合 aggregation 是將交易數據批量打包為一個批次Batch的步驟。一般來說,一個批次包含很多筆交易(譯者注:Batch就是Rollup區塊中除Header以外的那部分數據)。

Header 生成 步驟則是創建Rollup Header的過程。Rollup Header是關於Rollup區塊的元數據,至少包含了對該區塊中交易數據的commitment(譯者注:這裡說的commitment是指對交易處理結果正確性的承諾)。

通過上述視角,就可以看出 Rollup 的各部分組件都由誰來充當。首先來看聚合器 Aggregator 這部分。前面提及的悲觀 Rollup 沒有 Header 生成過程,用戶將交易直接發布到 DA 層上,這意味著 DA 層網絡實質就充當了聚合器。

所以,悲觀 Rollup 就是將聚合步驟委託給 DA 層的 Rollup 變體,它沒有定序器 Sequencer 。有時候這類 Rollup 被稱為" based rollup "。

Based Rollup具備和DA層相同的抗審查性及活性(活性衡量系統對用戶請求的反饋速度)。此類 Rollup 的用戶如果要達到信任最小化(最接近 Trustless )的狀態,至少要運行一個 DA 層網絡的輕節點,及 Rollup 網絡的全節點。

變體2:使用共享聚合器的悲觀匯總

讓我們討論一下使用共享聚合器的悲觀匯總。這個構思由Evan Forbes在其關於共享定序器設計的論壇帖子中提出。其關鍵假設是,共享定序器是為交易排序的唯一正式途徑。Evan如此解釋共享定序器的好處:

"為了達到與Web2等效的用戶體驗,共享定序器可提供快速生成的 Soft Commitment (不是很可靠的保障)。這些 Soft Commitment 提供了關於最終的交易次序的一些保障(就是承諾交易次序不會改變),並且可讓 Rollup 賬本狀態更新的步驟提前進行(但此時還沒完成最終確定 Finalize )。

一旦 Rollup 區塊數據確認發布到了基礎層 Base Layer (此處應指 DA 層), Rollup 賬本的狀態更新就完成了最終敲定 Finalize 。"

上述Rollup變體仍然隸屬於悲觀Rollup範疇,因為這類 Rollup 系統中只有全節點,沒有輕節點。每個Rollup節點都要執行所有的交易,來保證賬本狀態更新的有效性。因為這類Rollup沒有輕節點,就不需要Rollup Header,也就不需要Header生成者。(譯者注:一般而言,一條區塊鏈的輕節點不需要同步完整的區塊,只接收區塊頭即可)

由於沒有 Rollup Header 生成這個步驟,上述 Rollup 的共享定序器可以不必執行交易進行狀態更新(生成 Header 的先決條件),而只包含聚合交易數據的過程。所以我更傾向將其稱為共享聚合器 shared aggregator 。

在這種變體中, Rollup 用戶在信任最小化狀態下,至少需要運行

DA 層輕節點+ 共享聚合器網絡的輕節點 + Rollup 全節點。

此時,需要通過共享聚合器網絡的輕節點來驗證發布的 aggregator header (這裡指的不是 Rollup Header )。上面提到,共享聚合器承擔了交易排序的工作,它在發布的 aggregator header 中,包含了一個密碼學 commitment ,對應著 DA 層上它發布的 Batch 。

這樣一來, Rollup 節點運行者可以確認,自己從 DA 層收到的批次 Batch ,是由共享聚合器創建的,而非其他人。

(因為上文包含的內容比較晦澀,可再看一遍示意圖)

包含 Inclusion 是將交易包含到區塊鏈中的過程。

排序 Ordering 是指將交易按照特定順序在區塊鏈中排列的過程。

執行 Execution 是指處理區塊鏈中的交易,完成狀態更新的過程。

由於共享聚合器承擔了包含和排序的工作, Rollup 的抗審查性就取決於它。

如果假設 L _ ss 是共享聚合器的活性, L _ da 是 DA - L ayer的活性,那麼該 Rollup 模型的活性就是 L = L _ da \&\& L _ ss 。換句話說,如果兩個部分中任意一個存在活性故障,則 Rollup 也存在活性故障。

為簡單起見,我將活性作為一個 bool 值來考察。如果共享聚合器故障了, Rollup 就無法繼續運轉。如果 DA 層網絡故障了,共享聚合器可以繼續為 Rollup 區塊提供 Soft Commitment 。但此時, Rollup 的各項屬性將完全取決於共享聚合器網絡,而後者的各項屬性往往遠不及原本的 DA 層。

讓我們來繼續探討上述 Rollup 方案的抗審查性:

在該方案中, DA 層不能對某些筆特定的交易進行審查(譯者注:交易審查往往可以拒絕讓某些交易上鏈),它只能針對共享聚合器提交的整個交易批次 Batch 展開交易審查(拒絕讓某個 Batch 包含進 DA 層)。

但按照 Rollup 的工作流程,共享聚合器在向 DA 層提交交易批次 Batch 時,早已完成了交易排序,不同批次間的順序也定完了。所以, DA 層的這種交易審查,除了延遲 Rollup 的賬本最終性確認外,沒有其他作用。

綜上,我認為抗審查性的重點,是確保沒有任何一個實體可以控制或操縱系統內的信息流通,而活性則涉及維護系統的功能和可用性,即使存在網絡中斷和對抗行為。雖然這與當前主流的學術定義衝突,但我仍然會使用我所闡述的概念定義。

變體 3:基於 Based Rollup 和共享聚合器的悲觀 Rollup

儘管共享聚合器為用戶和社區帶來了好處,但我們仍應避免過度依賴它,並且要允許用戶從共享聚合器撤出至DA層。我們可以將前面介紹的兩種 Rollup 變體組合,在使用共享聚合器的同時,允許用戶直接向 DA 層提交交易。

我們假設,最終的 Rollup 交易序列取決於共享聚合器提交的交易序列,以及用戶在 DA 層區塊中直接提交的 Rollup 交易。我們將這稱作 Rollup 的分叉選擇規則。

聚合在這裡分成了兩步。首先,共享聚合器發揮作用,聚合一些交易。然後, DA 層可以將共享聚合器提交的批次 Batch 和用戶直接提交的交易進行聚合。

此時的抗審查性分析要更複雜些。DA層網絡節點可能在下一個 DA層區塊出塊前,對共享聚合器提交的Batch進行審查,在知曉了Batch內的交易數據後,DA層節點可以提取MEV價值,先用自己在Rollup網絡上的賬戶發起搶跑交易,並將其搶先包含至DA層區塊,之後才包含Rollup共享聚合器提交的Batch。

顯然,第三類 Rollup 變體的 soft commitment 保障的交易次序最終確定性,要比前面提到的第二類 Rollup 變體更脆弱。在這種情況下,共享聚合器將 MEV 價值拱手送給了 DA 層節點。對此,我建議讀者觀看關於利用有利可圖的審查 MEV 的研究講座。

目前已經有一些設計方案出現,以降低 DA 層網絡節點執行此類 MEV 交易的能力,例如"重組窗口期"功能,這會使得 Rollup 網絡用戶直接向 DA 層提交的交易被延遲執行。 Sovereign Labs 在其名為 Based Sequencing with Soft Confirmations 的設計提案中詳細描述了這一點,其中提出了"首選定序器"的概念。

由於 MEV 問題取決於 Rollup 選擇的聚合器方案,以及 rollup 分叉選擇規則,某些方案將不洩漏 MEV 給 DA 層,而一些方案將洩漏部分或全部 MEV 給 DA 層,但這是另一個話題。

至於活性,這種 rollup 方案比僅允許共享聚合器向 DA 層提交交易的方案更具優勢。如果共享聚合器出現活性故障,用戶仍然可以向 DA 層提交交易。

最後,讓我們談談信任最小化下的 Rollup 用戶最低配置:

至少要運行 DA 層輕節點 + 共享聚合器輕節點 + Rollup 全節點。

此時,仍然需要驗證共享聚合器發布的 aggregator header ,使得 rollup 全節點能夠根據分叉選擇規則區分交易批次。

變體4: Optimistic Based Rollup 和中心化的 Header 生成者

讓我們討論一種被稱為Based Optimistic Rollup 的變體及中心化的Header生成器。這種方案使用 DA 層聚合 Rollup 交易,但引入了一個中心化的 Header 生成器來生成 Rollup Header ,以啟用 Rollup 輕節點。

Rollup 輕節點可以通過單輪欺詐證明,間接檢查 Rollup 交易的有效性。輕節點會對 Rollup Header 的生成者持樂觀態度,並在欺詐證明窗口期結束後進行最終確認。另一種可能是,它從誠實的全節點那裡接收到欺詐證明,得知 Header 生成者提交了有錯誤的數據。

我不打算在此文詳細介紹單輪欺詐證明的工作原理,因為這超出了本文涉及的範圍。單輪欺詐證明的好處是可以將欺詐證明窗口期從7天縮短到一定程度,具體的數值有待確定,但數量級比傳統的樂觀rollup更小。輕節點可以通過 Rollup 全節點組成的 P 2 P 網絡獲取欺詐證明,而不需要等待後續的爭議過程,因為所有的判據都在單個欺詐證明中完整的提供了。

上述Rollup模型使用 DA層作為聚合器,並繼承了它的審查抗性。此時的DA層負責包含和排序交易。中心化的Header生成者將從DA層中讀取Rollup交易序列,並據此構建對應的Rollup Header。Header生成者將把Header和Stateroot發布到 DA層。這些Stateroot是創建欺詐證明時所必需的。簡而言之,聚合器負責包含和排序交易, Header 生成器會執行交易更新狀態得到 Stateroot 。

假設 DA 層(此時它也充當了 Rollup 的聚合器)是足夠去中心化的,並具有良好的抗審查性。此外, Header 生成器不能更改聚合器發布的 Rollup 交易序列。現在,如果將 Header 生成器去中心化,帶來的唯一好處是更好的活性,但 Rollup 的其他屬性與第一種變體 Based Rollup 相同。

如果Header生成器發生活性故障,Rollup 也會發生活性故障。輕節點將無法跟進Rollup賬本的進度,但全節點可以。此時,變體4所描述的Rollup退化成了變體1描述的Based Rollup。顯然,變體 4 描述的信任最小化最低配置是:

DA 層輕節點+ Rollup 輕節點。

變體5: Based ZK - Rollup 和去中心化的 Prover Market

我們已經討論了悲觀Rollup(Based Rollup)和樂觀Rollup,現在是時候考慮ZK-Rollup了。最近Toghrul做了個關於聚合器(Sequencer)和Header生成器(Prover)分離的演講(Sequencer-Prover Separation in Zero-Knowledge Rollups)。在這種模型中,將交易作為Rollup數據而非State Diff進行發布要更容易處理,所以我會著重於討論前者。變體 5 是一個基於 zk - rollup 的去中心化 Prover Market 。

到目前為止,你應該對Rollup的工作原理比較熟悉了。變體5將聚合器角色委託給了DA層節點,由後者進行包含和排序交易的工作。我會引用 Sovereign-Labs 的文檔,它對變體 5 中一筆交易的生命周期進行了很好的解釋:

用戶發布一個新的數據塊到 L1 鏈( DA 層)上。一旦這些數據塊在 L1 鏈上被最終確定,它就在邏輯上具備最終性(不可更改)。 L1 鏈的區塊進入最終確定階段(就是不可回滾)後, Rollup 的全節點會掃描這些區塊,按照次序處理所有與 Rollup 有關的數據塊,生成最新的 Rollup 狀態根 Stateroot 。此時,從 Rollup 全節點的角度來看,這些數據塊已經完成了最終確定。

在這個模型中, Header 生成者由去中心化的 Prover Market 充當。

Prover 证明者節點(在 ZK VM 內運行的全節點)的工作過程與普通的 Rollup 全節點有類似的地方------掃描 DA 層區塊鏈並按次序處理所有 Rollup 交易批次------生成對應的零知識證明並將其發布到 DA 層鏈上。(如果 Rollup 系統想激勵 Prover 证明者,要讓後者將生成的 ZK 證明發到 DA 層鏈上,否則就無法確定哪個 Prover 率先提交了 ZK 證明)。一旦某個交易批次對應的 ZK 證明被發布到鏈上,該交易批次在全體 Rolup 節點(包括輕節點)眼中就完成了最終確定。

(因為涉及的概念比較多,可以再看一遍示意圖)

變體 5 具備和 DA 層一樣的抗審查性。去中心化的Prover Market不能對Rollup交易展開審查,因為DA層上已經確定了規範的交易次序,只是為了獲得更好的活性及創建激勵市場,所以才將Header生成器(這裡指Prover)去中心化。

這裡的活性是 L = Lda \&\& Lpm(Prover的活性)。如果Prover Market的激勵不一致,或者出現活性故障,Rollup輕節點將無法同步區塊鏈進度,但Rollup的全節點可以,對於全節點而言,這只不過又回退到了變體1所說的Based Rollup/悲觀Rollup。這裡的信任最小化最低配置與樂觀 Rollup 情況下相同,即

DA 層輕節點+ Rollup 輕節點。

變體6:混合型 Based Rollup +中心化的樂觀 Header 生成者+去中心化 Prover

我們仍然讓 DA 層節點充當 Rollup 的聚合器,並委託其進行包含和排序交易的工作。

正如你從下圖中看到的,ZK Rollup 和樂觀Rollup都採用DA層上相同的有序交易批次,作為Rollup賬本來源。這是我們可以同時使用兩個證明系統的原因:DA層上的有序交易批次本身並不受證明系統的影響。

先談一下最終性。從 Rollup 全節點的角度來看,當 DA層自身的區塊完成最終敲定時,其包含的Rollup交易批次也是最終確定不可更改的了。但是我們更關心輕節點視角下的最終性。假設中心化的Header生成者抵押了一些資產,並在生成的Rollup Header上簽名,連帶將計算出的Stateroot提交到 DA層。

與前面的變體 4 一樣,輕節點將樂觀地信任 Header 生成者,相信它發布的 Header 沒錯,並等待來自全節點網絡的欺詐證明。如果欺詐證明的窗口期結束了,全節點網絡還沒發布欺詐證明,從 Rollup 輕節點的角度來看, Rollup 區塊就完成了最終確定。

關鍵之處在於,如果我們可以獲得一個 ZK 證明,就不必再等待欺詐證明窗口期結束。除了單輪欺詐證明,我們可以用 ZK 證明取代欺詐證明,並丟掉惡意的 Header 生成器生成的錯誤 Header !

當輕節點接收到對應某個 Rollup 交易批次的 ZK 證明時,這個批次就會完成最終確定。

現在我們有了快速的 Soft Commitment 和快速的最終性 Finality 。

變體 6 仍然具有與 DA 層等同的抗審查性,因為它是基於 DA層的。對於活性,我們將有 L = Lda \&\& (Lop || L_pm),這意味著我們增加了活性保證。如果中心化的Header生成器或去中心化的Prover Market二者之一有活性故障,我們可以退化到二者中的另一種方案。

此種變體中,用戶信任最小化的最低配置是:

一個 DA 層輕節點 + 一個 Rollup 輕節點。

摘要:

1.我們將 Rollup 的關鍵角色------定序器 Sequencer 拆分為兩個邏輯成分:

聚合器和 Header 生成器。

2.我們將 Sequencer 的工作分為三個邏輯過程:包含、排序和執行。

3.悲觀 rollup 和 based rollup 是一種東西。

4.根據需求,您可以選擇不同的聚合器和 Header 生成器方案。

5.這篇文章中介紹的每個 Rollup 變種都遵循了相同的設計模式:

最後,我還有一些想法。請您思考:

經典的 Rollup (指以太坊 Rollup )如何歸類到上述的變體之中?

在所有變體中,我們只讓聚合器負責包含+排序, Header 生成器來執行交易。如果聚合器僅負責包含交易, Header 生成器負責排序和執行交易,該怎麼做?考慮到引入鏈上拍賣步驟,我們可以把這三步工作徹底分開嗎?

什麼是共享 Header 生成者/ Header Producer Market ?

誰捕獲了 MEV 價值?用戶能把它拿回來嗎?

鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
ChainCatcher 與創新者共建Web3世界