原文:《 Scroll的技術與架構設計

作者:Elen

Scroll近期在一級市場的表現非常好,所以我們今天來深入了解一下Scroll的技術與架構設計。

Scroll是一個EVM等效的zkRollup以太坊擴容方案,核心的模塊是zkEVM,用於證明EVM在Layer2中執行的正確性。目前已經開發了一年的時間,並與以太坊基金會的隱私小組進行了深入的合作。

為了使得zkEVM變成一個完整的zkRollup,Scroll圍繞zkEVM構建了一個完整的Layer2架構。

目前的架構包含了中心化的排序節點與去中心化的證明網絡,但未來Scroll將會把排序節點也去中心化,使得整個網絡更加健壯。

Scroll的架構

目前的Scroll架構包含三個主要的組件:

  • Scroll節點:從用戶交易中構建L2的區塊,提交到以太坊主網,並在L1和L2之間傳遞信息。
  • Roller網絡:生成zkEVM的證明,確保交易被正確執行。
  • Rollup和橋合約:為Scroll交易提供數據可用性,驗證zkEVM證明,允許用戶在以太坊網絡和Scroll之間轉移資產。

這些組件的角色關係我們可以從下圖中得出:

Layer2的璀璨新星:解讀zkRollup擴容方案Scroll的架構設計

Scroll節點

Scroll節點是應用和用戶與Scroll網絡交互的主要方式,Scroll節點包含了三個模塊:

Sequencer(序列機)

Sequencer提供了一個JSON-RPC接口從而獲得Layer2上的轉賬信息。每隔幾秒,Sequencer會從L2的內存池中獲得一系列轉賬記錄,執行這些轉賬並生成新的L2區塊與新的狀態根。

Scroll上的Sequencer是基於經過時間驗證的Geth(Go-ethereum)開發的,目的是為了保證兼容性和安全性

Coordinator(協調器)

當新的L2區塊被生成之後,Coordinator會從Sequencer中獲得交易執行記錄。然後Coordinator將執行記錄分派到從roller 池中隨機選擇的roller 以生成證明。

Relayer(中繼器)

Relayer會監視部署在以太坊和Scroll上的Rollup和橋合約,這主要有兩個作用。

首先是監控Rollup合約以跟踪L2 塊的狀態,包括數據可用性和有效性證明。

其次,Relayer監視部署在以太坊和Scroll 上的橋合約的存取款事件,並將消息在兩條鏈之間中繼

Roller網絡

Rollers 在網絡中充當證明者,負責為zkRollup 生成有效性證明。 Rollers 有望利用GPU、FPGA 和ASIC 等加速器來減少驗證時間和驗證成本。下圖顯示了Roller 如何為每個塊生成有效性證明:

Layer2的璀璨新星:解讀zkRollup擴容方案Scroll的架構設計

  • Roller 首先將從Coordinator 接收到的執行序列轉換為circuit witnesses。
  • 其次,Roller為每個zkEVM 電路生成證明。
  • 最後,Roller使用證明聚合方法將來自多個zkEVM 電路的證明組合成一個塊證明。

Rollup和橋合約

Scroll通過Rollup和橋合約來連接以太坊主網和Scoll網絡,保證L2交易的數據可用性,並使用戶可以在L1和L2之間轉移資產。

Rollup合約從Sequencer中獲取L2的狀態根作為calldata。這為Scroll 塊提供了數據可用性,並利用以太坊的安全性來確保包括Scroll Relayer 在內的索引可以重建L2 塊。一旦建立L2 區塊有效性的區塊證明已被Rollup 合約驗證,相應的區塊將被視為在Scroll 上最終確定。

部署在以太坊和Scroll 上的Bridge 合約允許用戶在L1 和L2 之間傳遞任意消息。在這個消息傳遞協議之上,Scroll還構建了一個去信任橋接協議,允許用戶雙向橋接ERC-20 資產。

要從以太坊向Scroll發送消息或資金,用戶需要在Bridge合約上調用sendMessage。

Relayer 將在L1 上索引,並將其發送到Sequencer 以包含在L2 塊中。從Scroll 發送回以太坊的消息在L2 Bridge 合約上使用了類似的過程。

Scroll的zkRollup是如何工作的

將上述的三個模塊放在一起,我們就可以知道Scroll zkRollup 的整個工作流程了,如下圖所示:

Layer2的璀璨新星:解讀zkRollup擴容方案Scroll的架構設計

Scroll 中的L2 區塊生成之後,將提交給以太坊主網,具體的過程如下:

1. Sequencer生成了一系列的塊,對於第i個塊,Sequencer執行追踪T,並將其發送給Coordinator。同時,Sequencer將交易數據D作為calldata提交給以太坊上的Rollup合約以獲得數據可用性,再將由此產生的狀態根和交易數據作為狀態提交給Rollup合約。

2. Coordinator隨機選擇一個Roller為每個塊生成有效性證明。為了加快證明的生成過程,可以在不同的Roller上並行生成不同的區塊證明。

3. 在為第i個塊生成證明P後,Roller將其發送回Coordinator。每隔k個塊,Coordinator向另一個Roller派發一個聚合任務,將k個塊的證明聚合成一個證明A。

4. 最後,Coordinator將聚合證明A提交給Rollup合約,通過對照先前提交給Rollup合約的狀態根和交易數據承諾來驗證聚合證明,最後確定L2上的[i+1,i+k]之間的塊。

經過這樣的過程Scroll上的區塊會被最終確定下來,每個L2的區塊在這一過程中會經曆三個過程,其分別為:

  • Precommitted (預確認):表示一個區塊已經被Sequencer提交並發送給Rollers。
  • Committed (確認):表示區塊的交易數據已經被發佈到了以太坊網絡的Rollup合約上。
  • Finalized(完成):表示此區塊的交易已經被正確地執行。

綜上所述,Scroll能夠在L2上執行EVM字節碼,同時從以太坊主網繼承強大的安全性保證。這也是Scroll這種EVM等效和其他EVM兼容方案的最大不同點。