Scroll 聯創張燁:Scroll 的設計架構和挑戰是什麼?
來源:Scrollh中文社區
近日,Scroll 的聯合創始人張燁受邀參加了斯坦佛的區塊鏈研討會,分享了Scroll的架構設計和挑戰。在演講的前半部分,介紹了 Scroll 的整體架構,並重點介紹其一些特殊的設計選擇。
在後半部分,描述如何了從頭開始構建 zkEVM,並使用具體示例來演示該過程。最後,簡要討論了 Scroll 在密碼學和協議設計領域面臨的各種研究挑戰。
背景和初衷
Scroll 是以太坊的Layer 2擴容解決方案。為了最大限度地兼容以太坊,Scroll 正在構建一個字節碼層面兼容的"zkEVM",它可以證明 EVM 計算的有效性。Scroll設計的初衷就是為了開發者友好和最大化的可組合性。而構建zkEVM的挑戰在於構建難度和生成零知識證明的成本極高。幸好近些年的一些技術突破使其慢慢變得可行,例如多項式承諾可以證明任意階數,查找表可以實現存儲讀取約束,硬體加速可以加速證明生成,遞歸證明可以將證明進一步壓縮,降低費用成本。
具體細節亦可參考Scroll博客系列#1:以太坊原生zkEVM Rollup介紹
Scroll 架構
Scroll節點是應用和用戶與Scroll互動的主要途徑。它由三個模塊組成,排序器(Sequencer)、協調器(Coordinator)和中繼器(Relayer)。
排序器提供JSON-RPC接口並接收L2交易。每隔幾秒鐘,它就會從L2的內存池中取回一批交易並執行它們,以生成新的L2 塊和新的狀態根。Scroll的排序器實現基於Go-Ethereum (Geth),是最主流的以太坊節點實現之一。通過分叉Geth,我們可以實現最佳的兼容性並繼承已經經過時間考驗的安全性。
一旦生成了一個新的塊,協調器就會收到通知,並從排序器接收這個塊的執行蹤跡。然後它將執行蹤跡分派給從Roller池中隨機選擇的Roller以生成證明。
中繼器監視同時部署在以太坊和Scroll上的Rollup和Bridge合約。它有兩個主要職責。首先,它監控Rollup合約以跟蹤L2塊的狀態,包括它們的數據可用性和有效性證明。其次,它監視同時部署在以太坊和Scroll上的Bridge合約的存款和取款事件,並將消息從一層中繼到另一層。
每個L2區塊將經過如下三個階段,直到最終確認。
Pre-committed表示一個區塊已經被一個排序器提議並發送給Rollers。雖然 Precommitted區塊還不是Scroll L2上的正式部分,因為它們還沒有發布在以太坊基礎層上,不過信任排序器的用戶可以按預期進行下一步操作。目前預估Pre-commited階段只需1-2秒。
Committed表示該區塊的交易數據已經發布在以太坊的Rollup合約上。這確保了區塊數據可用,但不能證明它是正確執行的。目前預估Committed階段需要數分鐘。
Finalized表示通過驗證以太坊鏈上的有效性證明,已經驗證此區塊中的交易正確性。經過最終確認的區塊被認為是Scroll L2鏈上的正式部分。目前預估Finalized階段需要10分鐘以上。
Pre-Alpha測試網階段由於證明者的算力不足,因此整體流程的時間要大於所預估的時間。
具體細節亦可參考Scroll博客系列#6:Scroll的架構概覽
zkEVM的本質
zkEVM的本質是對EVM虛擬機計算生成的執行蹤跡生成證明。Scroll的zkEVM中設計中,第一層包括直接證明EVM的邏輯,包括EVM電路,RAM電路,Storage電路及其他電路,例如驗證ECDSA簽名的Signature電路;第二層進行證明第一層證明的聚合證明。出於動態的執行蹤跡的考慮,證明系統的前端部分Scroll採用了目前最新的Plonkish協議,對比標準的Plonk用Permutation關聯前後的約束,Plonkish使用了更低階的Custom gate,可以靈活得設定每一步的約束。
在硬體加速方面,Scroll擁有獨有的PipeZK加速方案。對於第一層的EVM電路,加速後的GPU可以提升9倍速度,在30秒內完成證明。對於第二層的聚合電路,加速後的GPU可以提升15倍速度,在約2分半內完成證明。由於Pre-Alpha測試網目前只有10個左右的證明者,實際速度可能會略慢於實驗數據。
具體細節亦可參考Scroll Devcon 6系列#1:zk-Rollups的證明系統選擇
有趣的研究方向(協議和密碼學)
當前,Scroll的研究團隊在協議層和密碼學方向也在進行著有趣的研究探索。
研究的第一個方向,是證明者和排序器的去中心化。Scroll所提出的第一個方案是排序器和證明者的任務交給一個節點,同時處理交易和生成證明,代價是可能會加重節點負擔,產生一定程度的中心化。第二個方案,排序器節點按共識出塊,證明者節點可以自由提交證明,代價是系統將依賴最快的驗證人,其他算力不足的證明者將沒有激勵進一步提交證明,退出系統,證明系統將被最快的驗證者所綁架。針對第二個方案,Scroll所提出的解決方案是設置時間窗口,在規定時間內提交證明的即可獲得證明獎勵。
研究的第二個方向,是L3存在的意義。L3最早由StarkNet所提出,但存在爭議的點在於,如果數據可用性放在L1上,並不能節省太多的成本,如果數據可用性不放在L1上,大可以在L2實現類似的功能。L3更可能適用於應用的自定義需求,例如獨有的排序器,自定義的執行環境,或是更低價的存取款費用,亦或是L3之間所需的可組合性。關於L3的更多探討,可參考Vitalik: 什麼樣的Layer 3是有意義的?
研究的第三個方向,是L2層之間的流動性分配。例如Uniswap可能需要在不同的L2層上都分別部署流動性池。如何將不同的L2層之間的流動性池打通,對於用戶體驗上來說將會是極大的提升。
研究的第四個方向,是zkEVM的資源定價問題。計算的成本主要由驗證和證明交易組成,存儲的成本主要是歷史交易和calldata的數據存儲。最理想的狀態是維持現在以太坊主網的資源定價方案,但是由於Keccak等zk不友好的運算所帶來的成本增加,仍然需要對zkEVM的資源定價方案做相應的調整。
其他的研究方向包括,零知識證明中電路的隨機性,算數化。Scroll的證明系統分為兩層,因此證明者的硬體加速算法也圍繞兩層設計展開。Scroll目前在第一層和第二層證明系統都選擇了Halo2協議,但也在積極探索不同證明系統間的可組合性。
當然目前zk系統仍在開發中,也未經過審計和實踐檢驗,因此在可預見的長期時間內,無法保證這些代碼無懈可擊,代碼層面仍需要大量的審計工作。具體可參考Scroll Rollup Day#1: Vitalik介紹用多重證明強化Rollup安全性