在這篇文章中,我們將概述 Scroll 的整體架構。更具體地說,我們將介紹由中心化排序節點和去中心化證明網絡組成的 Scroll 的初始版本。我們致力於在未來實現去中心排序節點集,並將在未來的文章中分享我們的設計。
原文:Scroll 架構概覽 —— Scroll
編譯: Xiang|W3.Hitchhiker
原用標題(譯後): Scroll 架構概覽
Scroll 是一個 EVM 等效的 zkRollup,用於擴展以太坊。從技術上講,Scroll 是建立在兩個主要部分之上的。核心部分是 zkEVM,用於證明 2 層 EVM 執行的正確性。一年多來,我們一直在與以太坊基金會的隱私和擴展探索小組(PSE)一起公開構建它。但是要將 zkEVM 變成以太坊上的一個完整的 zkRollup,我們還需要圍繞它構建一個完整的 L2 架構。
在這篇文章中,我們將概述 Scroll 的整體架構。更具體地說,我們將介紹由中心化排序節點和去中心化證明網絡組成的 Scroll 的初始版本。我們致力於在未來實現去中心排序節點集,並將在未來的文章中分享我們的設計。
Scroll 的架構
當前架構由三個基礎設施組件組成(參見圖 1):
- **Scroll 節點:**從用戶交易構造 L2 塊,將它們提交到以太坊基礎層,並在 L1 和 L2 之間傳遞消息。
- **Roller 網絡:**生成 zkEVM 有效性證明以證明交易被正確執行。
- **Rollup 合約和橋合約:**為 Scroll 交易提供數據可用性,驗證 zkEVM 有效性證明,並允許用戶在 Ethereum 和 Scroll 之間移動資產。
在下文中,我們將詳細介紹這些組件中的每一個的作用。
Scroll 節點
Scroll 節點是應用程序和用戶與 scroll 交互的主要方式,裡麵包括了三個模塊:Sequencer(排序器),Coordinator(協調者),Relayer(中繼者)。
排序器提供 JSON-RPC 接口並接受 L2 交易,每幾秒鐘就會從內存池裡面檢索一批交易來執行,生成新的 L2 區塊和新的狀態根,新的區塊會通知到協調者,同時也會發送新區塊的執行追踪,協調者就會從 roller 池中隨機挑選 roller 來給區塊生成證明。排序器實現基於 Go-Ethereum (Geth),它是最流行的以太坊節點實現之一。通過分叉 Geth,我們可以實現最佳兼容性,並繼承了經受住長時間考驗的安全性。
一旦生成了一個新的區塊,協調者就會收到通知,並從排序器接收這個區塊的執行跟踪。然後它將執行跟踪(execution trace)分派給從 Roller 池中隨機選擇的 Roller 以生成證明。
中繼者監視部署在以太坊和 Scroll 上的 Rollup 合約和橋合約。有兩個主要職責,第一個是通過監控 rollup 合約來追踪二層區塊的狀態,包括數據可用性和有效性證明,第二個是監視部署在以太坊和 scroll 上的橋接合約的存取款事件,並且將這些消息從一端中繼到另一端。
Roller 網絡
**Roller 網絡中的 roller 充當的是證明者的角色,負責為 zkrollup 生成有效性證明。**Rollers 預計將利用 GPU、FPGA 和 ASIC 等硬件加速來減少驗證時間和驗證成本。圖 2 顯示了 Roller 如何為每個區塊生成有效性證明。該過程包括以下步驟:
- Rollers 首先將從協調者收到區塊的執行追踪,將它們轉換成電路 witness
- 為每個 zkevm 電路生成證明
- 用**證明聚合 (proof aggregation)**將多個 zkevm 的電路證明聚合為單個證明
Rollup 合約和橋接合約
Scroll 是通過 Rollup 合約和橋合約連接到以太坊基礎層。這些共同確保了 L2 交易的數據可用性,並允許用戶在 L1 和 L2 之間傳遞資產和消息。
Rollup 合約從排序器那裡接收 L2 狀態根和區塊,狀態根儲存在以太坊狀態中,二層區塊數據會作為以太坊的 calldata 保存,這是為 scroll 的區塊提供了數據可用性,並利用以太坊的安全性來確保包括 Scroll Relayer 在內的索引器可以重建 L2 塊。一旦 rollup 合約驗證了 L2 區塊的有效性證明,就表示這個區塊在 scroll 上完成。
橋合約在以太坊和 scroll 上部署,允許用戶在 L1 和 L2 之間傳遞消息,在這個消息傳遞之上,還要建立無需信任的橋接協議,讓用戶在兩端都可以轉移 ERC-20 資產。比如用戶從以太坊發送消息或者資產到 Scroll 上,用戶在橋合約上可以調用 SendMessage 這個交易,中繼者就會索引到這個交易,把它發送到排序器,包含在 L2 區塊中,反過來從 Scroll 發送到以太坊上,合約和過程也是類似的。
Scroll 的 zkRollup 是如何工作的?
將這三個架構組件放在一起,我們現在可以解釋 Scroll 的 zkRollup 的工作流程,總結在下面的圖 3 中。
二層的區塊是在 scroll 上生成的,提交到以太坊的基礎層到確認之前,會經過下面幾個步驟:
- Scroll 的排序器生成很多塊,對於第 i 個區塊,排序器生成執行追踪 T 發給協調者,還會將交易數據 D 作為 calldata 提交到以太坊上的 rollup 合約(這一步是為了數據可用性),並將生成的狀態根和對交易數據的承諾作為狀態提交給 Rollup 合約。
- 協調者隨機選擇一個 roller(證明者),為每個區塊追踪生成有效性證明,為了高效,可以在不同的 roller 上進行不同區塊的證明。
- 證明者生成證明 P 之後,將證明發回給協調者,每 k 個塊協調者就會重新分配一個證明者,這個證明者會把之前的 k 個證明聚合成一個證明 A。
- 最後協調者會把聚合證明 A 提交到 rollup 合約,根據排序器提交給 rollup 合約的狀態根加上交易數據承諾來驗證聚合證明,通過之後就可以確定 L2 上的 i+1 到 i+k 個區塊。
圖 3 說明了 Scroll 區塊將在 L1 上以多步驟過程完成。每個 L2 區塊將通過以下三個階段進行,直到最終確定。
Precommitted
表示一個區塊已經被一個排序器提議並發送給 Rollers。雖然 Precommitted 區塊還不是 Scroll L2 鏈的規範部分,因為它們尚未發佈在以太坊基礎層上,但信任排序器的用戶可以選擇對其採取預期行動。Committed
表示該區塊的交易數據已經發佈在以太坊的 rollup 合約上。這確保了區塊數據可用,但不能證明它已經以有效的方式執行。Finalized
表明此區塊中交易的正確執行已通過驗證以太坊鏈上的有效性證明得到證明。最終區塊被認為是 Scroll L2 鏈的規範部分。
將所有這些放在一起,Scroll 能夠在 L2 上執行本機 EVM 字節碼,同時從基礎層以太坊繼承強大的安全保證。在本系列的下一篇文章中,我們將解釋開發人員在 Scroll 上部署 dapp 的工作流程以及用戶如何與之交互。
免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。本文內容僅用於信息分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。