為何以目前加密貨幣與區塊鏈技術來說,還沒有真正的 Rollup 技術?本文源自紐約加密投資公司 DBA 共同創辦人 Jon Charbonneau 所著《Rollups Aren’t Real》的萬字研究報告,由以太坊中文社群編譯、整理。
(前情提要:科普|什麼是 Layer2? )
(背景補充:Layer2決戰以太坊》OP、Arbiturm、ZK-Sync、Starkware、Scroll..優劣分析 )
引子
Kelvin 認為 ZK-rollup 是假的,但我認為任何 “rollup” 都不是真的,至少現在不是。那麼,我們如何使它們成為真正的 rollup?
目前的 rollup 基本上都是需信任且需許可的:
在本文中,我會對以下幾個方面進行概述:
強製交易打包機制 —— 即便出現 rollup 運營者審查使用者的情況,使用者也應該能夠強製打包其交易,以實現抗審查。
L2 定序器去中心化和 (可選) 本地共識 —— 單一型定序器、PoA、PoS 領導者選舉、PoS 共識、MEV 拍賣、基於基礎層的 rollup、PoE,等等。
共享定序器和跨鏈原子性 —— 這是真正有趣和完全新的東西。
MEV 可捕獲設計 —— 我將簡要地介紹 FCFS (先到先服務) 的一些變化。對於加密的交易池,你可以參考我最近的帖子。
許多其他提高 rollup 安全性的要求將不在本文的討論範圍內 (比如減少升級金鑰的權力、實現強健的和無需許可的證明,等等)。
Rollup 的工作原理
智慧合約 Rollup (SCR)
首先,簡單複習一下 SCR 的工作原理,這是我們當前在以太坊上常見的 rollup。從高層次來說,一個 SCR 基本上包括:
- 一批有序的輸入陣列(在L1上,所以交易資料必須在 DA 層發布)。
- (rollup 節點軟體)在它們上面執行的程式碼。
- 對這些輸入執行函式產生的確定性輸出(rollup 區塊鏈)。
更具體地說,傳統的定序器通過向其在 L1 的智慧合約發布 rollup 區塊的狀態根和 calldata(最終以 data blob的形式)來對 rollup 區塊生成承諾。新的區塊不斷擴充套件 rollup 對區塊頭。鏈上合約執行一個 rollup 的輕客戶端,將其區塊頭的hash值儲存起來。在收到有效性證明後,或在欺詐證明視窗期過後,該智慧合約就會敲定結算。如果一個未被敲定的 ORU 區塊無效,它(以及所有後續的區塊)會因為欺詐證明對提交而被回滾,最後成為孤塊。證明幫助保護橋接:
交易 batch 的提交應該需要應用某種型別的保證金/押金規則,以抑製惡意行為的發生。例如,當一個欺詐性的 batch 被提交了 (即無效的狀態根),押金將被銷毀,並按某種比例分給欺詐挑戰者。
SCR 具有「合併的共識」- 即可在鏈上驗證的共識協議。Rollup 協議可以完全在 L1 智慧合約中執行。它不影響主鏈的任意共識規則,也不需要這些規則的支援。
去中心化共識協議通常包括四個主要特徵(注意,以下是一個非常簡化的版本,並沒有完全列出共識協議的各種型別。比如無領導協議):
- 區塊有效性函式- 狀態轉換函式。區塊有效性在鏈下執行,然後通過有效性證明或者欺詐證明機制來證明其有效性。
- 分叉選擇規則- 如何在兩條原本有效的鏈之間選擇。Rollup 旨在從構造上實現無分叉,所以不嚴格要求有一個複雜的分叉選擇規則。
- 領導者選舉演算法- 選出一位領導者,ta 可以通過新增新區塊以擴充套件鏈頭,從而使區塊鏈不斷延伸。
- 抗女巫機制- PoW、PoS 等
可以認為 1 和 2 已經實現了,那麼對於去中心化一個定序器的最低要求便是某種形式的抗女巫攻擊 + 領導者選舉。Fuel Labs 一直都是這個陣營的支援者,他們認為 PoS:
不應該用於 rollup 中的完全共識協議 (即 rollup 驗證者/定序者將對區塊進行投票)
應該只用於 rollup 中的領導者選舉
當然,也有其他論據很好地反駁了 Fuel Labs 的觀點,認為需要有 L2 本地共識。稍後會有更多關於這方面的內容。
主權 Rollup (SR)
SR 仍然將交易資料發布到 L1 上用於 DA 和共識,但 SR 會在 rollup 中處理 「結算」 客戶端 (James Prestwich 說叫「結算層」顯得很蠢,我本來就已經很蠢了,所以無所謂) 。DA 層告訴你資料是存在的,但是它不會定義 rollup 的規範鏈 (canonical chain) 是哪一條:
SCR- rollup 規範鏈由 L1 智慧合約決定
SR- 沒有 L1 智慧合約來決定 rollup 規範鏈。Rollup 主鏈可以由 rollup 節點自己決定 (檢查 L1 DA,然後在本地驗證分叉選擇規則)。
相關說明:有人提出一個有趣的觀點,即不存在全球規範鏈 (只有決定哪條鏈為規範鏈的橋接),對此有人提出有力的反駁。以及其他相關長推,闡述了 rollup 在主權性和 (自動) 可組合性之間的權衡。我鼓勵大家瀏覽一下這些觀點,還有最近這條關於 Bitcoin 主權 rollup 的長推。
在任何情況下,上述所討論到的 「規範鏈」 框架都很容易理解,並且這不是本文的重點,所以我還是會繼續使用 「規範鏈」 這個術語。有關 rollup 一般架構的更多背景,請參考此處。
去中心化定序器
使用者發起的強制交易打包
智慧合約 Rollup
如上所述,定序器通常負責批處理交易並將它們發布到 L1 智慧合約。但是,使用者也可以自己直接在合約中插入一些交易:
當然,這是低效且昂貴的,所以定序器將負責批處理交易,並在常規的過程中一起提交這些 batch。這將在許多交易中攤銷固定成本,從而實現更好的壓縮:
定序器承諾最終在 L1 上發布這些交易,同時我們可以計算輸出,以獲得更軟的預確認 (softer pre-confirmation):
當定序器將這些交易發布到 L1 時,輸出被敲定:
通常情況下,使用者只會在從 L1 橋接資產到 L2 時需要自己提交交易。這被新增為 L1 合約的輸入,它告訴 L2 可以鑄造由相應 L1 鎖定資產支援的資金了。
如果我想把我的錢提回 L1,我可以在 L2 上銷毀它,並告訴 L1 把我的錢還給我。L1 不知道 L2發生了什麼 (L1 並沒有執行這些交易),所以需要在請求解鎖我在 L1 上的資金的同時提交一份證明。
因為我來自 L2,所以定序器可以發起這個提款請求並提交給 L1。然而,這樣做的話就說明需要信任 L2 定序器的抗審查能力 (CR, censorship resistance),也就是說不再獲得 L1 的同樣安全保證。也許這些定序器不喜歡你,或者定序器當機了,所以你只能永遠卡在 L2 上了。
Rollup 可以通過多種措施在本地提高自己的 CR。這可能包括具有高價值質押的 L2 共識集、一些交易打包列表的各種變體,新增閾值加密等等,以最大限度地減少 L2 使用者審查的可能性。這些都很棒,但理想情況下,我們還是希望 L2 使用者擁有與 L1 相同的抗審查保證。
如果使用者正在被審查,他們需要一些方法來強製退出 rollup 或者強製將他們的交易打包到 L2 中。這就是為什麼 L2 使用者應該保留做一些事情的能力,比如自己可以強製將他們的 L2 交易直接包含到 L1 合約中。例如,被審查的使用者可能能夠直接向 L1 提交單個操作的 batch。
但是,如果 L2 使用者的唯一選擇是將交易直接強製包含到 L1 中,這並不理想。這對於許多低價值使用者來說可能是不可行的,特別是當 L1 的互動成本越來越高時。更高階的設計可能能夠繞過這個限制,在 rollup 之間強製進行原子交易。Kalman Lajkó正在研究一個迷人的設計,強烈推薦大家閱讀。它希望在具有共享證明和共享 DA 層的系統中啟用跨 rollup 強製交易打包。
主權 Rollup
強製打包在 SR 中的運作不同,因為如前所述,它們執行的分叉選擇規則與 SCR 不同(Sovereign Labs 寫了一篇關於這方面的帖子)。
在 SCR 中,L1 智慧合約執行 rollup 的分叉選擇規則。除了驗證 ZK 證明之外,它還檢查該證明是否建立在之前的證明 (而不是其他的證明分叉) 之上,以及它是否處理了所有在 L1 上傳送的相關強製打包交易。
SR 可以將它的 ZK 證明發布到 L1 DA 層,以 calldata/blobs 的形式向所有人公開 (即使 L1 沒有驗證它們)。然後,只需新增一個規則,即新證明只有建立在前一個有效證明的基礎上才有效。該規則可以在客戶端強製執行,但它隨後會要求使用者掃描鏈的歷史,直至創世區塊或者某個檢查點。
而另一種方式是,可以將 calldata 與 L1 區塊頭聯絡起來,並且可以新增一個宣告 「我已經掃描了 DA 層的證明 (從區塊 X 開始,到區塊 Y 結束),並且這個證明基於最新的有效證明構建」。這在證明中直接證明瞭分叉選擇規則,而不需要在客戶端強製執行。
由於已經掃描了證明,同時還可以證明已經掃描了任何強製打包交易。任何人都可以在願意的時候直接將強製打包交易發布到 L1 DA 層。
交易敲定的層級 & ZK 用於快速敲定
以太坊上的鏈上證明驗證通常非常昂貴,因此目前的 ZKR (如 StarkEx) 傾向於每隔幾個小時才向以太坊發布一次 STARK。相對於交易的數量,證明的增長往往非常緩慢,因此這樣對交易生成 batch 可以有效地節省成本。然而,這麼長的敲定時間並不理想。
如果一個 rollup 只是在鏈上發布狀態差異 (而不是完整的交易資料),那麼即使是全節點也不能在沒有證明的情況下確保這種最終確定性。如果 rollup 的完整交易資料被發布到鏈上,那麼至少任意全節點都可以與 L1 一起敲定交易。
通常情況下,輕節點只依賴於中心化的定序器進行軟確認。然而,ZKR 可以在 p2p 層快速生成並分發 ZK 證明,以便所有輕客戶端即時檢視,並以 L1 速度為它們提供最終確定性。稍後,這些證明可以遞迴地批處理並發布到 L1。
這就是Sovereign Labs 計劃要做的,還有其他類似方案,比如Scroll 計劃在鏈上發布中間的 ZK 證明 (但不驗證它們),因此輕客戶端可以相當快地同步。使用這兩種結構,rollup 可以以L1的速度開始敲定區塊,而不是等待將 batch 傳送上鏈以節省開銷。但是請注意,在這兩種情況下只是將「硬敲定時間」降低到絕對最小值 (L1 速度)。
不同的定序器設計永遠不會比 L1 區塊時間更快地敲定。不同的定序器設計所能做的最好的事情就是提供比 L1 區塊時間更快的預確認,不同設計提供的確定性水平不同 (例如,你可能會相信具有高價值質押的去中心化共識集的 L2 的預確認,而不是相信單一型需信任的定序器的預確認)。
Patrick McCorry最近也對rollup 交易最終確定性的層級進行了很好的概述。現在你可能已經明白了基本的概念:
交易「最終確定性」具有不同的層級,這取決於誰提供了承諾 (以及 rollup 結構是怎麼樣的)
不同的參與者在給定的時間會對 「真相」 有不同的認知水平 (例如,L2 輕客戶端、全節點和L1 智慧合約將在不同的時間瞭解相同的「真相」)
單一型定序器
目前,大多數 rollup 都有一個需許可的定序器來提交交易 batch。這是非常高效的,但即時活性和抗審查能力都較弱。如果有適當的保障措施,這對許多用例來說可能是可以接受的:
CR— 如上所述,使用者強製打包交易的機制。
活性— 如果一些主要的定序器當機了,所具備的一些熱備份選項 (類似 ZKR 證明器和 ORU 欺詐證明的備份應該是無許可的)。如果備用定序器也當機了,任何人都可以頂上。
例如,備用定序器可以由 rollup 的治理選出。通過這種設定,使用者獲得了安全性、抗審查和活性。即使從長遠來看,單個活躍型的定序器也可能是一個可行的選擇。
Base 很可能是一種趨勢的開始。公司現在可以管理和優化他們的產品,就像他們對企業區塊鏈的炒作一樣,但現在它實際上可以成為一個無需許可的、安全的和可互操作的鏈。
Base 打算最終去中心化他們的定序器集,但關鍵是他們並不嚴格地 「需要」 去中心化,而其他方案並不是 (或者只需要非常有限範圍內的去中心化,如一個小規模的定序器集)。需要明確的是,這需要 rollup 來實現必要的步驟,來確保 rollup 是安全的且維護抗審查性 (移除任意的即時升級功能、實現健壯的證明、強製交易打包、MEV 拍賣等)。而當前的 rollup 並不安全。
這將是對中心化/託管產品的巨大改進,而不是最大限度地取代去中心化產品。Rollup 只是擴充套件了設計空間。這在很大程度上也是為什麼定序器去中心化並不是大多數 rollup 團隊的首要任務 —— 對於確保使用者安全、抗審查性和減少對 rollup 運營者的信任,其他項要重要得多。
然而,如果使用者/其他方需要介入以維持活性和 「即時抗審查性」 (不同於通過 L1 進行強製打包交易獲取的 「最終抗審查性」),這仍然不是理想的。基於強製打包交易機制,低價值使用者介入可能成本高昂或不切實際。高度偏好即時抗審查和活性最大保證的 rolllup 將尋求去中心化。在運營單一許可型定序器時,也可能存在監管方面的考慮。
權威證明 (PoA)
對單一型定序器的一個直接改進是允許實現分佈在不同地理位置的少數定序器 (可能是其他聲譽良好的公司)。定序器可以簡單地以輪流的方式平均輪換。讓他們交納保證金將有助於激勵誠實的行為。
這個一般概念大家應該不陌生 — 多簽橋接通常有一些受信任的公司,或者類似於服務於Arbitrum 的 AnyTrust DA的委員會。但重要的是,定序器在這裡的權力要小得多 (使用者不依賴於 rollup 定序器來確保安全,不像多簽橋接運營者可以提取鎖定的資金)。總的來說,比起單一型定序器,這種方案具有更好的抗審查性和活性,但仍然不完善。
定序器拍賣 a.k.a. MEV 拍賣 (MEVA)
與其根據質押份額來分配定序器的權利,rollup 也可以通過智慧合約直接執行MEV拍賣(MEVA)。任何人都可以競標排序交易權,拍賣合約將排序權授予出價最高者。這可以針對每個區塊進行,也可以針對一段時間 (例如,競標第二天的排序權)。獲勝的定序者仍應交納一定的保證金,以便在他們出現問題/惡意行為時可以對他們進行處罰。
在實踐中,如果拍賣沒有直接嵌入到協議中,則自然會導致協議外的 MEVA。如果排序權是基於質押權重來確定的,某種形式的 MEV-Boost/PBS 型別的拍賣系統將會出現,類似於我們今天在 L1 以太坊上看到的。在這種情況下,費用/MEV 可能會流向質押者。如果拍賣被納入協議,那麼費用/MEV 可能會進入某種形式的 rollup DAO 財庫 (儘管在兩種情況下它也可以被分配、銷毀等等)。
領導者選舉的無需許可 PoS
任何人都可以作為定序者無需許可地加入,但前提是必須質押 (可能是 L2 的原生代幣)。質押機制可以通過智慧合約在基礎層建立,也可以直接在 rollup 中建立。Rollup 可以使用這個 PoS + 某種形式的鏈上隨機性,以此實現領導者選擇機制 (像一些 L1 做的那樣)。
任何人獲得區塊排序權的概率 = ta 的質押佔總質押的比例。可以通過丟失獎勵、怠工懲罰和罰沒對錯誤/惡意定序器施加懲罰。
請注意,由於上述原因,這不要求定序器達成共識。Rollup 使用 L1 作為共識,因此不需要本地共識 (local consensus)。質押權重在輪換機制中起主導作用,決定了哪些定序器可以提議區塊,但他們不需要對其他定序器提議的區塊進行投票。
這可以給任意長度的 epoch 授予排序權。某個參與者可能有權為 100 個連續的 rollup 區塊排序,或者 1000 個,等等。更長的週期可能效率更高,並且在給定的時間裡只需要一個定序器。然而,給擴充套件的壟斷者授權也會帶來其他外部效應。或者,領導者可以像普通 L1 那樣交替使用每個區塊。
Dymension
Dymension就是這樣一個專案。Dymension Hub 將是 Cosmos 中典型的使用誠實大多數 PoS 機制的 L1。它的 L2 (「RollApp」) 將使用它來結算和達成共識,同時依賴 Celestia 作為資料可用性儲存 (因此這些 L2 實際上是 「optimistic chain」 而不是 「rollup」)。
根據他們的Litepaper,去中心化的 RollApp 排序將需要質押 DYM (Dymension 的原生資產) 在 Dymension Hub 中。領導者選舉由相應的 DYM 質押數量決定。這些定序器將從各自的 rollup 中獲得收入 (費用和其他 MEV),然後向 Dymension Hub 和 Celestia 支付相關的基礎成本。
由於這種機制,幾乎所有在這個堆疊中捕獲的價值都會直接累積到 DYM 代幣中。而如果把自己的原生代幣用於排序的 rollup (如 StarkNet 打算使用 STRK 所做的那樣,下文會介紹) 會將價值累積到他們自己的代幣中。Dymension Hub 的設定類似於以太坊 rollup 只能使用 ETH 進行定序者選舉。
在我看來,這極大地降低了在這樣的結算層上部署 L2 的動機。大多數 L2 團隊自然希望他們自己的代幣能夠積累有意義的價值 (而不僅僅是用作費用代幣,就像這裡可能的那樣)。畢竟他們是在經營一個企業。
領導者選舉 & L2 共識的無需許可 PoS
如果需要,也可以在 L1 敲定之前將 L2 質押用在定序器選舉和 L2 本地共識上。
PoS 定序器領導者選舉— 如上所述,某種形式的領導者選舉是必要的。
PoS 共識— 激勵 L2 驗證者在交易被 L1 敲定之前達成臨時的 L2 共識,提供更強的預確認。如上所述,這點不嚴格要求,但它是一個有吸引力的選擇。
此外,STRK 可以以某種形式用於:
DA 的 PoS 共識 —用來激勵提供替代性的 DA 鏈 (alt-DA, 比如 volition),這需要單獨的共識。
證明 —激勵證明者生成 STARK。
交易流程如下:
- 定序— 定序器排序交易並提議一個區塊
- L2 共識— StarkNet 共識協議對已提議的區塊簽名
- 證明生成— 證明者為已達成共識的區塊生成證明
- L1 狀態更新— 向 L1 提交證明以更新狀態
需要 L2 共識嗎, 還是只需要 L1 共識?
正如我們所看到的,L2 可能實現也可能不實現它自己的本地共識 (即,L2 驗證者在將其區塊傳送給 L1 以獲得最終共識之前對它們進行簽名)。比方說,L1 智慧合約可以基於自己設的規則做不同的反應:
使用領導者選舉和本地共識的 PoS— 「我只接受 L2 共識簽名過的區塊。」
使用領導者選舉的 PoS — 「目前只有選定的定序器能夠提交區塊。」
如果 rollup 沒有本地共識,需要做的就是:
- 使 rollup 區塊提議過程無需許可。
- 建立一些標準,為給定的區塊高度選擇最佳的區塊
- 讓節點或結算合約強製執行分叉選擇規則
- 繼承 L1 的共識和最終確定性
注意,不管是哪種情況,L2 的價值都可以累積到 rollup 代幣中。即使 L2 代幣只是用於某種形式的領導者選舉 (而不是共識投票),排序權產生的價值仍然會累積到 L2 代幣中。
L2 共識的缺點 (只有領導者選舉)
現在讓我們來討論在 L1 敲定之前具有/不具有本地共識之間的權衡。
Fuel Labs 團隊提出的一個論點是,L2 本地共識會降低抗審查能力。「這使得大多數驗證者可以審查新區塊,這意味著使用者資金可能會被凍結。Rollup 不需要 PoS 來守護,因為 rollup 是由以太坊保護的。」這裡是一個有點灰色的區域。如前所述,即使定序器出現審查交易的情況,rollup 仍然可以提供抗審查方案 (例如,直接強製交易打包進入 L1,或更複雜的設計,如Kalman Lajkó正在研究的那個)。
另一種說法是,完全的共識只是”效率低下”。例如:
一次只有單個定序領導者在單個盒子中執行所有東西,
一次只有單個定序領導者在單個盒子中執行所有東西,然後所有其他節點需要對該提議投票以及達成共識,
前者比後者簡單得多。
當然,這因所選擇的特定的定序器設計和共識機制而有很大不同。
此外,請注意,有些人對在定序器去中心化中使用 PoS 提出了擔憂,如這裡和這裡。L1 與 L2 的錯綜複雜的關係可能使處理某些型別的攻擊更具挑戰性。
新增 L2 共識的優點 (加上領導者選舉)
對於定序器來說,最大的目標可能是在 L1 提供的完全安全保障之前給使用者提供更快的軟確認。看一下StarkNet 的機制要求:
「強健和快速的 L2 最終確定性是 StarkNet 的目標。
由於只有在交易 batch 被 L1 證明之後,StarkNet 的狀態才會被敲定 (可能需要幾個小時)。
因此,在下一個 batch 被證明之前,L2 去中心化協議應該就規劃好的交易執行順序做出有意義的承諾。」
新增某種形式的共識 (由許多定序者提供的經濟安全支援) 有助於在這期間提供更強的保證(rollup 區塊的預先確認是沒問題的):
「Starknet 共識必須具有很強的責任感,即違反安全和活性的行為可以通過罰沒任何一部分參與者 (包括惡意的大多數質押) 來執行懲罰。」
Rollup 也可以靈活地嘗試不同共識機制光譜之間的權衡點,因為它們最終總是可以回到以太坊 L1 的安全性和動態可用性。
L1 負責排序的 Rollup
以上所有方法都賦予了定序器以某種形式建立 rollup 區塊的特權。例如,PoS 是無需許可加入的,但給定 slot 被選擇的 L2 定序者是當時唯一能夠提交區塊的一方。另外,也有一些相關的提議,建議不給任何 L2 定序器以特權。這些設計依賴於 L1 本身來進行交易排序。
完全「無政府狀態」
Vitalik 早在 2021 年就提出了這個「完全無政府狀態」的想法。允許任何人在任何時間提交交易 batch。第一筆擴充套件 rollup 的交易會被接受。它滿足了上面討論如何去中心化定序器的兩個最低要求:
抗女巫— 由 L1 提供的抗女巫能力 (即交易費用和區塊大小/gas 上限)。
領導者選舉— 領導者選舉是隱性且延後的。
這就足夠了,因為 L1 已經提供了安全性。如果 L2 區塊已經發布到 L1 上,那麼只有當它們是無效的或構建在無效塊之上時 (將被回滾),它們才會變成孤塊。如果它們是有效的,並且發布到 L1,那麼它們具有與 L1 本身相同的安全保證。
Vitalik 指出這種方案有一個很大的問題是,它的效率會非常低。多個參與者可能並行提交 batch,並且只有一個會被成功打包。這在生成證明時浪費了大量的精力,或者說發布交易 batch 花費了許多不必要的 gas。想要知道你的交易是否會很快被打包,這是非常麻煩的,而且效益很低。
基於基礎鏈的 Rollup (Based Rollups)
然而,現在可以通過 PBS 使這種無政府狀態的設計可行。它允許更嚴格的排序,每個 L1 區塊最多一個 rollup 區塊,因而不會浪費 gas。(儘管可能有浪費的計算)。L1 構建者可以只打包最高價值的 rollup 區塊,並根據搜尋者的輸入出價構建該區塊,這與任何 L1 區塊類似。為了避免計算的浪費,預設情況下也可以合理地使 ZK 證明過程需許可(具有相應的機制允許無需許可地回滾)。
這就是Justin Drake最近提出的「基於基礎鏈的 Rollup」的核心理念。他使用這個術語來指代由 L1 (「基礎」層) 主導排序的 rollup。L1 提議者只需確保在他們自己的 L1 區塊中納入 rollup 區塊(大概是通過構建者)。這是一個簡單的設定,可以立即提供 L1 活性和去中心化。他們可以避免一些棘手的問題,比如在 L2 定序器正在審查的情況下解決強製打包交易的問題。此外,由於不需要定序器簽名驗證,因此可以減少一些 gas 開銷。
一個有趣的問題是關於這些 L2 交易在哪裡被處理。L2 客戶端需要將這些交易傳送到某個地方,以便 L1 搜尋者/構建者接收它們並針對它們建立區塊和資料 blob。它們可能會被傳送到:
L1 交易池— 它們可以與一些特殊的後設資料一起傳送給 「知情的」 搜尋者/構建者來解釋它們。但是,這可能會顯著地增加 L1 交易池上的負載
為每個 L2 提供的新的 p2p 交易池— 沿著這個思路的一些解決方案似乎更有說服力。除了他們平常的渠道之外,搜尋者/構建者將開始檢查和解釋這些新交易池的交易。
一個明顯的缺點是基於基礎鏈的 Rollup 限制了定序器的靈活性。例如:
MEV 緩解— Rollup 可以創造性地使用 FCFS、加密交易池等各種變體。
預確認— L2 使用者喜歡快速交易「確認」。基於基礎鏈的 Rollup 最多會回到 L1 區塊時間(12 秒),或者等待更長的時間來發布完整的交易 batch。
有趣的是,這正是早期 rollup 團隊正在構建的:
Fun fact: the initial Arbitrum implementation & first public testnet (Ropsten L2) worked like this.
Sequencer was introduced later b/c there was demand / froth for fast transactions. https://t.co/lPTrzo0lHA
— Daniel "peq umop" Goldman (@DZack23) March 14, 2023
Justin 指出,再質押 (restaking) 可能會有所幫助。
Wow pic.twitter.com/zs786upj91
— Jon Charbonneau (@jon_charb) March 15, 2023
這些都是EigenLayer的研究領域,至少在他們的白皮書中提到過。目前還不清楚這是否是一個切實可行的解決方案。為了通過再質押有效地改善這些缺點,可能會寄望於所有的質押者都選擇執行它。因此,這個想法這樣來實現似乎更合乎邏輯:讓想要這樣做的質押者子集選擇進入一個單獨的共享排序層(稍後會詳細介紹)。
效率證明 (Proof of Efficiency,PoE)
去年,Polygon Hermez 提出了一個名為PoE的提案。這是另一種專門針對 ZKR 的 L1 定序變體。這裡的定序器是一個完全開放的角色,任何人都可以提交交易 batch (即完全無政府狀態/基於基礎鏈的 Rollup,因此它具有相同的限制)。PoE 機制由兩個參與方組成兩個步驟:
定序器
定序器收集 L2 使用者交易並通過傳送一個 L1 交易 (其中包括所有選定的 L2 交易的資料) 來建立一個交易 batch。定序器將根據收到的經濟價值來提交區塊,或者為使用者提供服務級體驗 (例如,在每個 L1 區塊中發布一個交易 batch,即便這會使 L2 交易更昂貴,因為使用者想要交易更快完成)。
定序器將支付 L1 gas 費來發布交易 batch,並且協議在 MATIC 中定義了必須存入的額外費用。一旦發布,獲勝的 batch 立即定義新的鏈頭,允許任何節點確定性地計算出當前狀態。然後需要一個有效性證明來敲定輕客戶端的見證 (包括 L1 智慧合約)。
聚合器
聚合器在這裡指的是 ZK-證明器。同樣,這是一個無需許可的角色,任何人都可以競爭。非常簡單:
攜帶交易資料的已排序的 batch 按照它們在 L1 上出現的位置在 L1 上排序。
PoE 智慧合約接受更新到了最新有效狀態的第一個有效性證明,這個有效狀態包括一個或多個尚未被驗證的已提議的 batch。
聚合器可以自由地執行自己的成本效益分析,以找到發布證明的適當頻率。如果他們贏得了比賽,他們會得到一部分費用,但如果等待更長的時間以發布新的證明,他們的固定驗證成本將攤銷到更多的交易中。如果聚合器晚發布了一個證明 (它並沒有證明一個新的狀態),那麼合約將只執行一個複原函式。證明器浪費了計算,但他們會省下大部分 gas。
費用的分配方式如下:
L2 交易的費用將由建立有效性證明的聚合器處理和分配。
所有交易費用將傳送給每個 batch 相應的定序器。
定序器為獲取建立單個 batch 的許可權而存入的費用將被傳送到聚合器,聚合器將該 batch 包含到有效性證明中。
純分叉選擇規則
RollkitSR 有一個非常類似的「純分叉選擇規則」概念,如這裡所述,指的是沒有特權定序器的任意 rollup。節點聽從 DA 層的規則進行排序,並應用 「先到先得」 的分叉選擇規則。
L1 排序經濟學
這些 L1 排序設計對經濟學有很重要的影響,因為L2 交易產生的 MEV 現在將在 L1 區塊生產者級別被捕獲。在 「傳統的」 L2 排序模型中,L2 交易產生的 MEV 由 L2 定序器/共識參與者/拍賣機制捕獲。目前還不清楚在這種情況下,有多少 MEV 會洩漏到基礎層。
對於這是好事還是壞事,很難說:
- 好處— 這有些像 「L1 經濟聯盟」 (例如,ETH 可以捕獲更多價值)。
- 壞處— 有人會擔心這種基礎層激勵(例如,比特幣礦工的中心化風險,但也許為時已晚)。
利用 L1 排序可能也行得通,特別是能夠更容易地啟動一個 rollup,但讓它們放棄如此多的 MEV 給 L1 (而它們本身自己就可以捕獲這些 MEV) 是不太可能的。Rollup 的最大好處之一確實是經濟上的—— 一旦 DA 層開始擴充套件,這些成本就會下降,他們只需要向 L1 支付很少的費用。更慢的區塊時間和原始的 MEV 方法對使用者來說也不太理想。
激勵 ZK 生成
作為一個簡短的題外話,請注意,上面在 PoE 中描述的競爭市場可能圍繞最快的聚合器形成中心化局面。ZK 證明者市場大體上有兩個經濟問題需要解決:
如何激勵證明者建立這個證明
如何使提交證明無需許可,從而使其成為一個有競爭力和具有魯棒性的市場 (例如,主要的證明者當機了也不會影響網路)
讓我們看看ZK 證明者市場的兩個簡單模型:
競爭市場
在一個極端,你可以有一個開放的競爭模式。在一個無許可的證明者市場中,所有的證明者都爭先恐後的為 rollup 定序器/共識產生的區塊建立一個證明。第一個建立證明的人可以獲得指定給證明者的任何獎勵。在尋找最佳證明者方面,這種模式是非常高效的。
這看起來非常類似於工作量證明挖礦。然而,這裡有一個獨特的區別 —— 證明是確定性的計算。因此,一個具有較小但始終如一的優勢的證明者幾乎 「總是」 會贏。這個市場很容易形成中心化的局面。
在 PoW 挖礦中,隨機性方面有更好的屬性 —— 如果我有 1% 的挖礦算力,我應該得到 1% 的獎勵。
這種競爭性的證明模型在計算冗餘方面也是次優的 —— 許多證明者會相互競爭並花費資源來建立證明,但只有一個會勝出 (類似於 PoW 挖礦)。
基於輪換的機制 (如質押權重)
或者,可以在證明者之間輪換,讓他們每個人都有機會 (例如,基於一些質押,亦或是基於聲譽)。這樣可能更加去中心化,但可能會帶來證明延遲這樣的低效率情況 (「慢」 的證明者將有機會建立證明,而另一個證明者可能已經有能力更快更有效地建立證明)。然而,它可以防止許多證明者競相建立一個證明而浪費了計算,畢竟最終只會有一個證明有效。
此外,如果輪到的人不能產生證明 (無論是惡意的還是偶然的),就出現問題了。如果輪次的時間很長 (例如,當時輪到的證明者可以壟斷好幾個小時的證明生成),並且證明者當機了,協議將很難恢複。如果輪次時間很短,其他證明者可以介入並趕上主要證明者未能生成證明的地方。
你也可以允許任何人發布證明,但只有指定的證明者才能在給定的時間內獲得獎勵。所以如果這些指定的證明者當機了,另外的證明者可以發布證明,但他們無法獲得獎勵。這將是無私的,因為花費資源進行計算卻沒有回報。
Scroll 正在探索更多基於輪換的方法,將執行跟蹤分配給隨機選擇的 「roller」 (證明者):
還有許多有趣的問題,即在排序時應如何在使用者層面上收取證明費用。關於這些主題的進一步討論可以在這裡找到:
– Scroll的Ye Zhang在他的文章 《去中心化的 zk-Rollup》 中討論了在不需要 L2 共識的情況下,這種基於質押 + MEV 拍賣來獲取排序權的輪換 roller 網路的可能性
– 《Scroll 架構的概覽》提供了一個關於可能的 roller 模型的更多細節
– Starknet 去中心化協議 IV – 協議中的證明
– Starknet 去中心化協議 VI – The Buffer Problem
共享排序
大多數早期的解決方案都假設,每個 rollup 都需要完全靠自己弄清楚如何去中心化它們的定序器。但情況並非如此,比如上文就提到的 L1 排序選項。許多 rollup 可以選擇使用一個共享定序器 (SS, Shared Sequencer)。這有一些很大的好處:
躺平— 不要再擔心如何去中心化你的定序器了,這很難!嵌入這個選項就好了。不需要招募和管理一個額外的驗證者子集。雖然總會遇到很多打著「模組化」名號的融資宣講稿,這確實是一種非常「模組化」的方法 —— 將交易排序剝離到單獨的一層。Shared Sequencing (共享排序) 實際上是一個 SaaS (排序即服務) 公司。
彙集安全性和去中心化— 讓單個排序層建立強大的經濟安全性 (更強的預確認) 和即時抗審查,而不是為每個單獨的 rollup 執行許多小委員會。
快速交易確認— 其他單一型 rollup 定序器也可以做到這一點,但請注意,共享排序情況下使用者還可以獲得超快的亞 L1 區塊時間預確認。
跨鏈原子性— 在鏈 A 和鏈 b 上同時執行事務 (這個很複雜,所以我將在下文更深入地展開)。
簡單地使用本地 L1 作為許多 L2 的定序器,基本上有幾個缺點:
仍然僅限於 L1 的資料和交易排序吞吐量
失去了為 L2 使用者提供快於 L1 區塊時間的快速交易確認的能力 (儘管在最終達成 L1 共識之前有較弱的保證)
L1 排序所能做的最好的事情是消除 L1 的計算瓶頸 (比如,如果交易執行是吞吐量的瓶頸),並在通訊複雜性上實現小的因素改進。
那麼,我們能否設計出專門的、更高效的共享排序層,而不是讓 L1 來做這件事……
Metro – Astria 的共享定序器
Metro 是針對共享排序層的一個提案。你可以參考Evan Forbes的研究文章、關於模組化的演講和「共享安全峰會演講」瞭解更多細節。由Josh Bowen領導的團隊Astria正致力於實施 Metro 的設計。
將執行與排序分離
當前的 Rollup 節點實際上處理了三件事:
這裡的關鍵屬性是 「執行和排序分離」。這樣情況下共享定序器:
為那些選擇將其作為排序層的各種鏈的交易排序
不執行 (或證明)這些交易但對其生成結果狀態
排序是無狀態的—— 共享定序器節點不再需要為所有不同的 rollup 儲存完整的狀態。它們移除了執行計算。傳統定序器目前面臨的巨大瓶頸已經不複存在。
當把執行從共識中抽離出來時,共識的效率就會變得特別高。這個過程只是被限制在資訊廣播層 (因此變得很快)。如果節點所要做的只是生成已排序的交易區塊,並在不執行所有操作的情況下就該區塊達成共識,那麼節點可以非常高效。執行和證明可以在排序共識達成後由另一方負責。
彙集定序器安全性和去中心化
共享定序器節點可以保持相對輕量級,甚至可以在水平上進行擴充套件 (通過選擇一個隨機的共識節點子集來排序不同的交易子集)。結果 —— 可能會使這個排序層更加去中心化。而傳統的定序器則需要儲存著鏈的大狀態並對其實現完整的執行。
此外,我們將許多鏈上的資源彙集起來 —— 不需要在許多 rollup 之間分割 PoS 共識。把它們都集中在一個地方。與許多自己實現定序者子集的 rollup 相比,這種方式可能會產生一個更加去中心化的定序者子集 (抗審查),在這個子集上質押了更多可被罰沒的價值 (抗重組)。這很重要,因為:
排序—— 是為 rollup 使用者提供即時抗審查性和活性的第一道防線。
執行和證明—— 可以在排序完成,沒有強烈的去中心化要求。我們只需要一個誠實方就夠了。
一旦交易排序的共識達成,執行 (和證明) 可以延遲到一個完全不同的鏈去進行:
軟共識和排序— 共享定序器為使用者提供快速的預確認
確認的共識和 DA— 交易資料已在 DA 層上被敲定,供所有人檢視
輕鬆執行和證明— 任何人都可以對確認後的交易狀態執行和生成證明
在執行層進行的工作不需要去中心化,因為這不是抗審查的來源。單一型定序器對於抗審查來說並不理想,但這其中不利於抗審查的點與定序器的執行流程無關。它們的審查權來自於它們能夠排序並打包交易的許可權。而在執行層,共享定序器已經提供了排序好的交易輸入,因此也提供了抗審查性。那麼之後對狀態承諾的計算和比較就不需要那麼去中心化了。
軟執行
快速軟執行的第一步是使用者喜歡的:
這需要某種形式的共識 (或者一個中心化的定序器) 來提供這樣的出色使用者體驗:
如果你只是依賴於像 Celestia 這樣的基礎層的共識,你就不能很好地保證這些關於排序和打包的軟承諾。如果共享排序層具有一個質押了大量價值的去中心化委員會,那麼它可以在快速出塊 (亞 L1 區塊時間) 上提供相當強的承諾。
因此,一旦共享定序器建立一個區塊,使用者就可以得到軟確認。任何人都可以下載已達成共識的交易,並提前地將它們應用到狀態中。這種確認的強度取決於共享定序器的構造 (去中心化、經濟安全、分叉選擇規則等)。一旦資料實際發布到基礎層,就可以將這些交易視為最終被敲定。然後可以生成狀態根和相關證明的最終計算並提交。
懶人 Rollup (Lazy Rollups)
「懶人 Rollup」 非常簡單。這些 rollup 等到它們的交易全部被排序並發布到 DA 層,然後它們就可以下載這些交易,可選地應用一個分叉選擇規則來選擇一個交易子集,執行交易處理,並將這些交易應用到狀態中。然後就可以生成區塊鏈鏈頭並進行廣播。
注意,因為共享定序器不能以一種訪問完整狀態的方式產生區塊,所以它們沒有檢查無效的狀態轉換的功能。因此,使用共享定序器的 「lazy rollup」 的狀態機必須能夠處理無效交易。節點在執行已排序的交易以計算結果狀態時,可以簡單地刪除無效的/回滾的交易。實施即時執行的傳統 rollup 就沒有這種限制。
如果 rollup 要求訪問狀態來壓縮交易,再將它們打包上鏈,在這裡是行不通的。例如,在這裡 rollup 有一個區塊有效性規則,其中區塊中包含的所有交易都是有效的。如果 rollup 需要壓縮交易,但不需要狀態訪問,那麼可以專門為這種型別的 rollup 建立一個特殊的共享定序器 (例如,類似 Fuel v2 或具有私人交易池的 rollup)。
支付 gas
要讓這個共享定序器執行,必須有某種機制讓使用者為他們的交易打包到 L1 中而付費。可以簡單地使用大多數 rollup 交易型別中已經包含的現有簽名和地址來支付共享排序層的 gas費用。這將要求共享定序器瞭解不同實現所需的最小狀態,例如:解析簽名、nonce,從帳戶中減去氣體,等等實現。或者,支付可以涉及共享定序器上的一些封裝交易,任何人都可以為打包的任意資料付費。這是一個開放的設計空間。
分叉選擇規則
Rollup 能夠繼承它們所使用的共享定序器的分叉選擇規則。然後,rollup 的完整節點實際上是共享定序器的輕客戶端,它們檢查某些承諾,以表明對於給定的區塊高度,哪個 rollup 區塊是正確的。
然而,繼承共享定序器的分叉選擇規則是可選的 —— 你可以簡單地要求 rollup 處理 (不一定執行) 提交到基礎層的所有交易資料。它將有效地繼承基礎層的抗審查性和活性,但這將犧牲許多使用者喜愛的共享定序器所擁有的功能。
MEV
假設一個 rollup 想要繼承其共享定序器的分叉選擇規則並獲得快速的軟執行,從 MEV 方面來說,這個共享定序器自然會處於一個非常中心化的位置。它決定 rollup 將遵守怎樣的交易打包和排序。
然而,並不是說 rollup 必須執行共享定序器提供的交易,或者按提供的順序執行。從技術上講,你可以允許自己的 rollup 運營節點執行第二輪處理,以便在執行之後對共享定序器發布的交易重新排序。然而,如上所述,你將會失去大部分首先使用共享定序器的良好特性,因此這種情況似乎不太可能發生。
即使在這種情況下,共享排序層仍然可能存在 MEV,因為它有權打包交易。如果你真的想,你甚至可以允許你的 rollup 在第二輪處理中排除某些交易 (例如,利用一些有效性條件來排除某些交易型別),但這當然會變得混亂,減少了抗審查性,並再次失去共享定序器的好處。
交換共享定序器
區塊鏈中難以分叉的是任何形式的有價值的共享狀態。看看像 ETH vs. ETC 或類似的 ETH vs. ETH POW,社會共識決定了什麼是 「真正的以太坊」。我們都同意的 「真實」 狀態是有價值的。
然而,共享定序器實際上只是一個服務提供者 —— 它們沒有與之相關的有價值的狀態。使用給定共享定序器的 rollup 可以保留分叉的能力,只需要一個較小型的硬分叉就可以轉而支援其他排序機制 (例如,當出現共享定序器提取了太多價值的情況)。這將有望保持共享定序器的競爭力。
網路效應可能會讓這變得更具挑戰性。如果許多 rollup 都開始使用共享定序器,並且它們獲得了巨大的網路效應 (例如,如果他們從許多鏈的潛在跨鏈原子性中獲得了有意義的價值),那麼除非其他 rollup 也願意轉移,否則脫離這個網路效應可能是很痛苦的。
Espresso Sequencer,ESQ — 由 EigenLayer 提供安全保證
你可能已經看到EigenLayer白皮書提到去中心化的共享定序器是再質押的潛在消費者之一。這個共享定序器可以由 ETH 再質押者保護,並且它可以處理許多不同 L2 的交易排序。
好吧,Espresso 剛剛公開宣佈他們的共享定序器計劃。它可以利用 EigenLayer 再質押者來為其共識提供安全保障。為了更好地視覺化,下圖為當前 rollup 的樣子:
下圖為 rollup 有了像 Espresso 這樣的共享定序器之後的樣子:
Espresso Sequencer (ESQ) 與 Metro 的總體思路非常相似。它的工作原理是一樣的 —— 將交易執行從排序中剝離出來。除此之外,ESQ 還將為交易提供資料可用性。
HotShot 共識 & Espresso 資料可用性 (DA)
簡單說一下背景,以太坊目前使用 Gasper 作為其共識機制 (Casper FFG 作為敲定工具 + LMD GHOST 作為分叉選擇規則)。與此相關的 「太長不讀」 是:即使在大多數節點可能退出網路 (動態可用性) 的悲觀條件下,Gasper 也能維持網路活性。它有效地執行兩個協議(Casper FFG 和 LMD Ghost),這兩個協議共同維護一個具有敲定字首的動態可用鏈。但是維持網路即時活性的同時,Gasper 犧牲了交易的快速最終確定性 (在網路允許的情況下儘可能快地確認交易的能力)。
總的來說,ESQ 包括:
HotShot— ESQ 是建立在 HotShot 共識協議之上的,它優先考慮快速的最終確定性 (樂觀的響應能力) 而不是動態的可用性,不像 Gasper。它還能像以太坊一樣,可以將支援的驗證者數量擴充套件到令人難以置信的水平。
Espresso DA— ESQ 還為鏈提供可選的 DA 選項。該機制也用於擴大他們的共識。
定序器智慧合約— 這個智慧合約作為輕客戶端驗證 HotShot 共識並記錄檢查點 (對已排序交易日誌中的點的承諾)。此外,它還負責管理 ESQ 的 HotShot PoS 共識的質押者。
網路層— 使參與 HotShot 和 Espresso DA 的節點之間能夠進行交易和共識訊息的通訊。
Rollup REST API— L2 rollup 用於與 Espresso 定序器整合的 API。
讓我們仔細看看 DA 的情況。在樂觀的情況下,高頻寬節點將向所有其他節點提供資料,並且每個單獨區塊的可用性也由隨機選出的小型委員會提供支援。考慮到針對小型委員會的 DDoS 和賄賂攻擊的風險,可驗證的資訊分散(VID)將用於提供可靠 (但速度較慢) 的備份路徑以保證 DA,只要所有節點中足夠高的比例 (按質押計算) 沒有受到攻擊。
這個系統是為擴容而構建的,因此 ESQ 希望為選擇其作為共享定序器的 L2 提供更便宜的 DA。他們仍然會將他們的證明和狀態更新結算給 L1 以太坊,但請注意,這將使使用 ESQ 的鏈預設成為 「validium」 或 「optimistic 鏈」,而不是完整的 「rollup」 (即他們的 DA 不受以太坊 L1 的保證)。它比資料可用性委員會 (data availability committees, dac)的簡單實現更強大,但它比真正的 rollup 提供的安全保證要弱。
交易流程
定序器合約— HotShot 直接與其 L1 定序器合約進行互動。這個合約驗證了 HotShot 共識,並為其他參與者提供了一個介面來檢視它已排序的區塊。該合約儲存的是一個只能追加的區塊承諾日誌,而不是完整的區塊。然而,任何人都可以根據承諾驗證任何區塊。
L2 合約— 每個使用 ESQ 的 L2 仍然有自己的以太坊 L1 rollup 合約。為了驗證傳送給每個 rollup 的狀態更新 (通過有效性/欺詐證明),每個 rollup 合約必須能夠訪問已認證的區塊序列,這些排序過的區塊帶來確定的狀態更新。Rollup 合約與定序器合約連線以查詢這些。
轉發到共享定序器的交易將被排序,然後在 L1 上敲定之前發送回 rollup 的執行器和證明器中。共享定序器還向其 L1 定序器合約傳送對區塊的承諾,以及用於驗證區塊的一個證書。這允許 L1 rollup 合約將 rollup 狀態更新證明與被認證為共識輸出的區塊承諾進行比較。
交易流程的完整檢視:
跨鏈原子性
正如 Espresso 文章中提到的,一個共享定序器可以提供一些和跨鏈原子性相關的令人興奮的用例:
「跨多個 rollup 的共享排序層有望使跨鏈訊息傳遞和橋接更便宜、更快、更安全。無需為另一條鏈的定序器構建輕客戶端是一個免費的好處,沒有成本,這為前期創造了潛在的節省空間。通過移除給定 rollup 獨立地同步其他 rollup 共識的需要,跨 rollup 橋接也可以實現持續的節省。共享定序器還為橋接提供了安全優勢:它可以保證當且僅當 (甚至同時) 一筆交易在另一個 rollup 中被敲定時,該交易才會在它所在的 rollup 中被敲定。
另外,共享定序器增強了使用者在不同 rollup 交易之間表達原子依賴關係的能力。通常來說,Alice 會在 Bob 的 rollup-B 交易 t’ 之外簽署和發布她的 rollup-A 交易 t。在這種情況下,Alice 的交易可能會在 Bob 的交易之前很長時間被排序,讓 Bob 有一個長時間的中止選項 (例如,中止交易)。這種可選性失衡可以通過共享定序器來緩解,其中 Alice 和 Bob 可以將兩個交易作為一個已簽名的捆綁包一起提交 (即,定序器必須將這兩個交易視為一個)。」
隨著鏈上活動最終開始增長(我希望),這對跨域 MEV有影響。典型的例子是 「原子套利」。同樣的資產在兩條不同的鏈上以兩種不同的價格進行交易。搜尋者希望通過在沒有執行風險的情況下同時執行兩筆交易來從中套利。例如:
交易1 (T1) — 在 Rollup 1 (R1) 上低價購買 ETH
交易2 (T2) — 在 Rollup 2 (R2) 上高價出售 ETH
要實現原子套利 = 要麼兩個交易都被填充,要麼兩個都沒有被填充。如果兩個 rollup 都選擇到相同的共享定序器中,那麼它可以為搜尋者實現這種原子套利。在這裡共享定序器可以保證:
T1 被包含在到 R1 的指令流中,當且僅當:
T2 也包含在到 R2 的指令流中
假設 rollup 虛擬機器依次執行各自流中的所有交易 (即沒有無效指令,只是一些指令可能會丟擲錯誤,但不影響狀態),那麼我們也可以保證:
T1 在 R1 上執行,當且僅當:
T2 也在 R2 上執行
然而,這和在共享狀態機 (例如,完全在以太坊 L1 上) 上進行交易仍然是不一樣的保證。如前所述,共享定序器不持有這些 rollup 的狀態,並且它們不執行交易。因此不能完全保證某個交易 (在 R1 或 R2 上) 在執行時不會回滾。
直接在此基礎上構建更高階的原語是有問題的。例如,如果試圖在此共享定序器之上構建一個即時「銷毀-鑄造」 的跨鏈橋接功能,該功能同時在完全相同的區塊高度上執行以下操作:
燒毀 R1 的某個輸入
在 R2 上鑄造一個輸出
你可能會遇到這樣的情況:
R1 上的銷毀行為可能會丟擲一個意想不到的錯誤,例如被別的交易執行導致無效,但是
R2 上的鑄造行為不會因為任何原因而無效,所以它會完全執行。
你可以看到這將是一個多麼大的問題。
可能在某些情況下,只要這兩個交易都包含在輸入流中並因而被執行,就可以確定這兩個交易的預期結果,但情況往往不是這樣的。這是一個懸而未決的問題,這個過程可以:
保證— T1 和 T2 將包含在各自的流中,並且 (可能) 兩者都會執行。
不保證— 成功執行兩個交易和由此產生的預期狀態。
這種 「保證」 對於原子套利 (搜尋者已經擁有在每條鏈上執行這些交易所需的資產) 來說可能是足夠的,但它顯然不是共享狀態機的同步可組合性。對於像跨鏈閃電貸這樣的東西來說,這種保證本身是不足夠的。
但是,當與其他跨鏈訊息傳遞協議結合使用時,這在其他設定中可能仍然有用。讓我們看看在與跨 rollup 訊息傳遞協議一起使用時,如何促進跨鏈原子 NFT 交換:
– T1 將 ETH 從 U1 (使用者1) 移動到 R1 上的 SC1 (智慧合約 1)
– T2 將 NFT 從 U2 (使用者2) 移動到 R2 上的 SC2 (智慧合約 2)
– 當且僅當 SC1 首先收到來自 SC2 確認已存入 NFT 的訊息時,它才會允許 U2 贖回 ETH
– 當且僅當 SC2 首先收到來自 SC1 確認已存入 ETH 的訊息時,它才會允許 U1 贖回 NFT
– 兩個智慧合約都實施了一個時間鎖,這樣如果任何一方失敗,各方都可以收回他們的資產
這裡的共享定序器允許兩個使用者在步驟 1 中進行原子提交。然後,使用某種形式的跨 rollup 訊息傳遞機制來驗證彼此的結果狀態,並解鎖資產以執行交換。
如果沒有共享定序器使其以原子的方式進行,雙方可以商定一個價格。但是 U1 可以提交他們的交易,U2 可以等待並決定他們是否想要中止交易。而有了共享定序器,他們的交易是被鎖定的。
共享定序器實現的跨鏈原子性的內容大概就這麼多。總結:
這裡所提供的保證的確切強度和有用性仍未得到證實
這可能對跨鏈原子套利非常有用,同樣也可能對其他應用有用,如跨鏈 swap 和 NFT 交易 (可能與其他訊息傳遞協議結合使用)
提供額外的加密經濟保證(例如,存入抵押品) 來擔保某些型別的跨鏈交易可能會有所幫助
然而,你永遠不會對你的交易結果具有無條件的保證 (你可以通過在共享狀態機上原子地執行交易來獲得)
關於跨鏈原子性的其他有趣的主題,我推薦檢視:
Optimism 的超級鏈—— 他們也正探索如何跨 OP 鏈使用共性定序器。共享定序器可以達成共識,然後嘗試實現原子跨鏈交易。
Anoma ——Heterogeneous Paxos和Typhon是非常不同的方法。
如前所述,Kalman 的跨 rollup 強製打包交易。
共享定序器總結
總結一下,共享定序器的基本理念是:
顯然,這個坐標圖不是定律,一切都是高度主觀的,它非常依賴於確切的結構。但是總的來說可以這樣進行比較:
中心化定序器—— 如果你完全控製系統,通常最容易實現你想要的任何功能。但是,在預確認強度方面具有次優的保證、強製退出可能是不可取的、活性也可能是次優的,等等。
去中心化的 L2 定序器—— 與單一型定序器相比,質押了有意義的價值的分散式集合應該增加 rollup 的魯棒性。但是,可能會根據它的實現方式,需要以延遲等方式為代價 (例如,許多 L2 節點可能需要在確認 rollup 區塊之前進行投票)。
L1 負責排序—— 最大化去中心化、抗審查性、活性等等。然而,它缺少一些特性 (例如,快速預確認、資料吞吐量限制)。
共享定序器—— 可以從中獲得去中心化定序器的功能;與其他人共享定序器可以從中獲益 (得到某種程度的原子性);不需要啟動自己的定序器子集,等等。然而,在 L1 最終敲定之前的過渡時期,與 L1 排序相比,確實具有更弱的保證。此外,共享排序層可以將多個 rollup 中的委員會、經濟安全等聚合到一個地方 (可能比每個 rollup 都有自己的委員會這種情況要強得多)。
最終,一旦區塊在 L1 敲定,所有 rollup 都會返回到 100% 的 L1 安全性。大多數定序器設計只是試圖在獲得 L1 結算的完全安全之前的過渡時期給使用者提供非常好的功能,但對狀態的保證力度較弱。他們都有不同的權衡。
SUAVE (Single Unifying Auction for Value Expression)
去中心化構建者 vs. 共享定序器
當我們討論這些試圖為許多其他鏈處理交易的共享層時,這裡的差異可能會變得非常令人困惑。特別是SUAVE作為 「排序層 (sequencing layer)」 這一元件經常和其他術語一塊出現,比如還有另一個元件是 「針對 rollup 的去中心化區塊構建者」。需要明確的是 —— SUAVE 與上面描述的共享定序器設計非常不同。
讓我們看看 SUAVE 如何與以太坊對接。SUAVE 不會以任何方式被寫入以太坊協議。使用者只需將他們的交易傳送到加密的交易池中。然後,SUAVE 執行器網路可以為以太坊 (或類似的任何其他鏈) 生成一個區塊 (或部分割槽塊)。這些區塊將與傳統的以太坊中心化構建者的區塊競爭。以太坊區塊提議者可以同時監聽這兩種區塊,並選擇他們想要提議的區塊。
同樣,SUAVE 也不會取代 rollup 選擇其區塊的機制。例如,rollup 可以實現 PoS 共識子集,其運作方式可能與以太坊 L1 的運作方式大致相同。然後,這些定序器/驗證者可以選擇由 SUAVE 為他們生成的塊。
這與上文描述的共享定序器非常不同。**在共享定序器的設計中,rollup 可以完全移除去中心化定序器的需要。他們只是簡單地通過新增 Metro 或 ESQ 之類的可選項來外包這個排序功能,並且可以選擇繼承這些共享排序層的分叉選擇規則。**以太坊、Arbitrum、Optimism 等不會改變其分叉選擇規則,以選擇 SUAVE 進行所有的交易排序。
SUAVE 並不關心你的鏈的分叉選擇規則是什麼,也不關心你的區塊是如何被選擇的。它旨在為任何域提供最有利可圖的排序。請注意,與前面描述的共享定序器節點不同,SUAVE 執行器通常是「完全有狀態的」 (儘管它們也可能滿足某些不需要狀態的首選項)。他們需要模擬不同交易的結果,以建立最優排序。
為瞭解兩者的差異,在這裡舉一個使用者想要進行跨鏈原子套利的示例。他們將交易提交給 SUAVE vs. 提交給共享定序器,獲得以下保證:
SUAVE + 共享定序器
那麼現在我們討論 SUAVE 如何與去中心化的 rollup 定序器、甚至共享定序器互動?Espresso 似乎相信 SUAVE 與 ESQ 相容,正如他們在文章中所描述的。ESQ 旨在與私有交易池服務 (如SUAVE)相容,這些服務可以作為區塊構建者。它看起來類似於我們在以太坊上使用的 PBS:
共享提議者= 共享定序器
共享構建者= SUAVE
與 PBS 一樣,構建者可以從提議者 (即這裡的定序器) 那裡獲得一個盲承諾,來提議一個給定的區塊。提議者只知道從提議區塊中獲得的總效用 (構建者的出價),而不知道區塊的交易內容。
現在把它們放在一起,讓我們再回頭看剛剛想要做跨鏈套利的搜尋者那個例子。SUAVE 本身可以構建並傳送到兩個不同的 rollup:
包含交易 1 (T1) 的區塊 1 (B1) —— 在 Rollup 1 (R1) 低價購買 ETH
包含交易 2 (T2) 的區塊 2 (B2) —— 在 Rollup 2 (R2) 高價出售 ETH
但很有可能 B1 贏得拍賣,而 B2 輸掉 (或反之)。然後,讓我們想一下,如果這兩個 rollup 被選擇到相同的共享定序器中會發生什麼。
共享定序器節點基本上是愚蠢的。
他們不瞭解交易到底在做什麼,所以他們需要有人 (比如SUAVE,或者其他 MEV 構建者) 為他們構建一個完整的區塊,如果他們要提高效率的話。那麼,SUAVE 執行器可以將 B1 和 B2 提交給共享定序器,條件是這兩個區塊都可以被填充或被斃掉 (即原子地執行或放棄這兩個區塊)。
現在你可以在整個過程中得到很好的經濟保證:
SUAVE = 共享構建者=可以保證 B1 和 B2 都被包含並以原子的方式執行時的狀態結果。
共享定序器 = 共享提議者=可以保證 B1 和 B2 都被包含並以原子的方式執行了。
再質押 Rollup (Restaked Rollups)
我最近在 Flashbots 論壇上發表了一篇關於 SUAVE 潛在經濟安全模型的文章。我論證了為什麼從長期來看,對 SUAVE 而言,rollup 可能是比再質押更好的選擇。
Hasu 也針對再質押和 rollup 之間的權衡做了一些非常深思熟慮的回應,我鼓勵大家去閱讀一下。以下是他的回應的摘要:
Rollup 由 L1 提供安全性/抗審查性/活性保障,但 SUAVE 不像大多數鏈那樣從中受益,因為SUAVE 鏈不是為普通使用者設計的。事實上,Flashbots 正在研究如何積極地限制作為使用者橋接資產到 SUAVE 的需求。理想情況下,一條鏈主要是要求搜尋者/構建者在那裡保留足夠的運營資金。這可能遠低於針對使用者的傳統 rollup 所鎖定的資產額。此外,與針對普通使用者的鏈相比,強製通過 L1 進行狀態轉換對該鏈中的搜尋者/構建者來說可能沒有那麼有價值。
資料可用性 (DA) 是昂貴的,至少在今天。我們將看到 EIP-4844 在這其中如何發揮作用,以及隨後 對的 DA 需求可能會增長。相反,我想提醒的是,對於代幣持有者來說,再質押可能更「昂貴」 (即,如果費用收入低,並且需要增發代幣給 ETH 再質押者以激勵形成足夠的經濟安全模型)。一種對使用者來說更昂貴,而另一種對代幣持有者來說更昂貴。選擇哪一個,在很大程度上取決於任何潛在鏈的時機,以及當時以太坊 DA 層的成熟度。
SUAVE 需要將從其他域的狀態轉換報告回主鏈 (因此可以解鎖對執行器的條件式支付)。關於從以太坊 L1 和其他 rollup 讀取狀態的能力,rollup 具有很好的信任最小化屬性。
但我有一個新想法 —— 兩者都做怎麼樣?再質押 rollup。
這並沒有解決 Hasu 提到的所有問題,但它仍然是一個非常有趣的新選項,特別是從長遠來看。
相比於僅僅由 EigenLayer 的再質押者 (更像是它自己在 L1 借來的安全) 來提供安全保證,rollup 可以利用這些 EigenLayer 的再質押者來維持它的本地共識,但是這個鏈隨後會回到以太坊 (即,它向以太坊發布它的資料和證明)。
如前所述,rollup 可以決定實現自己的本地共識,以便在真正的 L1 敲定之前,對短期預確認和抗重組實現更強的保證。那麼,為什麼我們不把這個 rollup 共識子集變成一組以太坊再質押者?現在兩樣都有了:
L1 之前的最終確定性 —— 高價值、去中心化的再質押共識,提供強大的短期內抗重組。
L1 之後的最終確定性 —— 仍然是一個 rollup!它將其資料發布到以太坊,並且可以發布 ZK/欺詐證明。
一旦 L1 敲定了,這與任何 rollup 的安全性是一樣的。這只是實現其自身共識的 rollup 的一種變體。只是,它沒有像前面描述的那樣,在其 rollup 上擁有自己的驗證者子集,並由自己的原生代幣保護,而是選擇讓以太坊的再質押者執行共識。
同樣,如果 Celestia 能夠在其協議實現某種形式的再質押,那將是一件很有趣的事情 (目前的計劃是 Celestia 的 L1 是非常小的,並且沒有智慧合約的功能)。我之前曾寫過,對於 Celestia 來說,寫進協議的 rollup 將是一個有趣的方向,而原生再質押將是另一個令人著迷的工具,允許自由市場決定他們想要加入什麼功能。再質押對 Celestia 的經濟安全性方面也有幫助,因為可替代 DA 層的價值累積模型仍未得到證實。
其他的 MEV 考慮
這裡最簡單的方式 (現在 rollup 通常做的事情) 是用簡潔的 FCFS (先到先服務) 規則執行單一型定序器。定序器只是按照它們接收到交易的順序提交交易。你可以合理地信任單個定序器遵守 FCFS 排序規則,但它仍然會激勵延時競爭 (latency races) 和其他問題中的相關負外部性 (不要實施 PoW 來嘗試解決它)。因此,即使是中心化定序器也需要更有效地應對 MEV。
上面提到的一些解決方案已經含蓄地處理了這個問題 (例如,舉辦一個完全免費的公開拍賣),但顯然沒有一個 rollup 想讓它們的使用者被發起三明治攻擊。所以,我們可能需要一些創意。將拍賣的好處與可程式設計隱私結合起來會讓它變得更有趣。
這就是為什麼中心化定序器現在也喜歡使用私有交易池 —— 試圖確保使用者不會搶跑交易等等。但是實現去中心化並不容易。如果向許多定序器開放,你會相信它們執行自己的私有交易池?即使你相信,如果每個定序器都有自己的私有交易池,並且你需要開始輪換活躍的定序領導者,那也可能會有問題。
加密交易池是解決這些問題的一個很吸引人的研究領域。下面我簡單向大家推薦我剛發的這個帖子的相關資訊:
Encrypted mempools as a tool for MEV & censorship
This post is largely built around @drakefjustin's great presentations on the topic (links in post)
They're pretty complicated (at least for me), so I tried to break them down simply then expand a bit https://t.co/AYpIjnkods
— Jon Charbonneau (@jon_charb) March 15, 2023
In this post, I’ll just give a brief overview of some variations of FCFS proposals.
在這篇文章中,我將簡要概述 FCFS 提案的一些變體。
Time Boost
意識到簡單 FCFS 的侷限性和負外部性,Arbitrum 開始探索它的新變體。最近,他們提議了 Time Boost 機制。基本原理:
需信任的中心化定序器繼續為使用者的交易運營一個私有交易池
定序器在收到每一個交易時都會為其標記時間戳
預設情況下,將在接收到交易後 500 毫秒內執行交易
使用者可以選擇為他們的交易支付額外的優先打包費用,給這個交易一個「時間加速 (time boost)」,可以最多減少 500 毫秒
Time boost 的計算公式如下:
其中:
F = 交易的優先打包費用
g = 可用的最大時間加速 (500 毫秒)
c = 待確定的常數
目前,搜尋者只能通過儘量減少對 Arbitrum 定序器的延時來表達他們對快速打包到定序器的偏好 (開啟許多連線、在物理上接近它、在基礎設施方面投入資本等)。Time Boost 反而會減少對上述延時優勢進行投資的動機,因為搜尋者現在可以通過優先打包費用競價來表達他們對快速打包的偏好。
這是對簡單 FCFS 的明顯改進,但在我看來仍有一些缺點:
這減少了對延時競爭的激勵,但它並沒有消除它。最小化延時總是允許搜尋者出價低於競爭對手,並且上面圖表的弧線顯示,延時優勢對於高價值的 MEV 機會來說特別有意義。
不清楚交易池隱私和時間戳如何有效地去中心化。
搜尋者的出價缺乏更多其他表現。搜尋者只能為更快的打包而競價,但他們無法表達更複雜的偏好,這將是更靈活的顯式拍賣 (例如當前以太坊 L1) 的情況。
與此相關的是,如果在這個級別實現,將沒有能力恢複失敗的競標。
FBA-FCFS
去年,來自 Flashbots 的 Xin 為 Arbitrum 提出了一個替代方案 (FBA-FCFS)。這實現了對於 Themis 的一個頻繁 batch 拍賣風格的變體。在這個方案中:
節點向領導者報告部分排序,然後領導者將這些聚合到一個未排序的 batch 中。在設定的批次時間 “公平粒度 “內 (例如,也可以是 500 毫秒),所有交易都假定是在同一時間發生的。
然後領導者通過某種形式的拍賣來解決批次內的弱排序問題。
與 Time Boost 提案類似,有一些嘗試保證相對較快的打包時間 (建議小於 500 毫秒,但可以更改),並防止通過可信節點搶跑。同樣,它通過允許搜尋者來表達他們的偏好 (優先打包費用機制),減少了對延時競爭的激勵 (儘管並沒有完全消除所有優勢)。
對於 「快速搜尋者」 來說,在給定 batch 結束時,其他 「慢速搜尋者」 無法與之競爭的延時優勢仍然存在:
來源: Latency Arms Race Concerns in Blockspace Markets
這是這類拍賣的一個廣為人知的方面。較長的 batch 處理時間會進一步使該延時優勢相關的時間百分比越來越低,儘管這個 batch 潛在價值較高。較長的區塊時間可能會對 MEV 產生其他影響 (例如,波動的價格)。
總結一下這個延時優勢:
Time Boost —— 較低的延時是總是有利的 (較低的延遲 = 總是可以有較低的平均出價)。
FBA-FCFS —— 較低的延時有時是有利的 (當「慢」和「快」搜尋者之間的小差距顯示出相關資訊時)。
關於時間延時:
Time Boost —— 所有使用者的交易在收到時預設延遲了 500 毫秒的速度。
FBA-FCFS —— Batch 處理時間為 500 毫秒,因此在視窗期間收到的使用者交易可以包含在其中,距離中間點平均 <500 毫秒
FBA-FCFS 帶來更多的可變性 (例如,交易可能會根據接收時間滑到下一個 batch),但不支付優先打包費的常規使用者交易的平均打包時間應該更低。在 Time Boost 模型中,時間是連續的 (沒有區塊的概念),而在 FBA-FCFS 模型中,時間是離散的。總的來說:
延時和去中心化
這篇文章已經很長了,我也很累了,所以這部分請閱讀 Phil 寫的文章吧。感謝:(
結論
希望讀者現在對定序器去中心化的路徑和相關的障礙有了個較為清晰的框架。這是 rollup 在未來幾年走向成熟時需要應對的眾多挑戰之一。
其他一些有趣的探索領域包括:
- 不同層的互動 —— 隨著定序器去中心化,它們如何與交易供應鏈的不同部分互動?什麼型別的拍賣 (例如,SUAVE) 應該插入一個去中心化的定序器子集 (例如,共享定序器)?
- 交易費用機制 —— 多維度資源定價 vs. 狀態定
- L2 費用市場 —— 收取 「L2 原生」 費用 (例如 L2 堵塞費用) 和 「L1 原生」 費用 (例如 L1 資料可用性費用)
- ZK 證明者市場 —— 如何正確激勵去中心化和無需許可的 ZK 證明者市場。這是 L2 費用的一個重要子集,在其他背景下也會有相關的地方。
- Rollup 的商業模式 —— Rollup 代幣和構建它們的團隊如何積累價值並實現可持續性。
- 可升級性和治理 —— 去中心化這些元件和減少信任假設,同時保持系統的靈活性。
- 欺詐/ZK 證明 —— 構建更具有魯棒性的機制,比如使用多個證明者機制。
感謝 Ben Fisch、 Josh Bowen、 Cem Özer、 Kelvin Fichter、 Zaki Manian、 Hasu、 Robert Miller、 Tarun Chitra、 Sreeram Kannan,以及其他許多人圍繞這個話題的精彩討論。
📍相關報導📍
以太坊Layer2強勢襲來,留給Aptos、Sui等新公鏈的時間不多了?