10月10日14:00,以太坊二層解決方案Scroll 主網產生了第一個區塊,標誌著Scroll 的主網成功上線。截止到10月25日,已有超過7,600個ETH透過跨鏈橋進入Scroll 網絡,24個去中心化交易平台上線Scroll 主網,總TVL約1千萬美元。
10月17日,Scroll 官方在宣布主網啟動的同時,繼續堅持開源和去中⼼化的承諾。下⼀階段Scroll 將致力於建構去中⼼化的證明⽹絡和排序器。本文我們將詳細分析Scroll 的架構與技術,幫助大家了解Scroll 當前的網路狀態與未來的發展方向,以及為大家講解Scroll zkEVM 電路與稽核知識,加強zk專案方的安全防範。
帶動Layer2新浪潮的Scroll 是誰?
Scroll 是一種基於零知識證明技術的以太坊Layer 2 擴充解決方案,旨在提高以太坊網路的交易吞吐量和速度。相較於Optimistic Rollup,Scroll 透過零知識證明技術進行擴容,並透過硬體加速零知識證明的生成和驗證,致力於實現字節碼層級的EVM 相容。這意味著開發者可以直接使用Solidity 和以太坊相關的開發工具來建立智慧合約,無需進行任何修改就可部署到Scroll 上。
根據Scroll 官網公佈,目前Scroll 團隊核心成員共有10名,分佈於亞洲、美洲及歐洲。團隊相關成員均擁有豐富的zkRollup 開發經驗和產業營運經驗,多數畢業於知名大學,並擁有博士學位。
目前,Scroll 生態非常豐富,基礎設施包含了錢包、開發工具、安全設施等方面的項目,旨在幫助項目在設計、開發、運行以及安全審計方面的整個生命週期裡,都能得到全方位的支持,目前Scroll 主網已有超過180個生態計畫。
1. 錢包
Scroll 目前支援幾乎所有的主流錢包:Metamask、TrustWallet、MathWallet、TokenPocket、WalletConnect、Binance Chain Wallet、SafePal Wallet。除此之外,Scroll生態皮夾還有OKX Wallet、Versa Wallet等。
2. 跨鏈橋
Scroll 官方的跨鏈基礎架構包括了Celer Network、Stargate、Orbiter Finance、Hop Protocol、LI.FI、Connext 等。另外還包含了跨鏈流動性協定Synapse Protocol、專注於Layer 2 跨鏈橋的Owlto Finance、以太坊Layer 1 與Layer 2 跨鏈橋Pheasant Network、Symbiosis、Catalyst 等。
3. DeFi
Scroll 生態中有不少老牌的DeFi 項目,包括了借貸協議Aave、多鏈DEX 聚合器DODO、DEX SushiSwap、DEX 聚合器OpenOcean、多鏈DeFi 協議iZUMi Finance、DEX Syncswap、DeFi 收益率協議Pendle Finance、借貸協議dForce、槓桿交易聚合器MUX Protocol等,也有GMX等原生未被大規模使用的創新項目。
4. 其他
在NFT、遊戲、社交等方面,Scroll 生態的其他項目還包括了NFTScan、Web3 任務平台QuestN、TaskOn、電子協議簽署平台EthSign、Galaxy Blitz、OmniKingdoms等線上鏈遊。
Scroll 技術特點有何不同?
1. 整體架構
Scroll 的架構分為以下三個主要元件:
Scroll Node:它根據用戶交易產生Scroll 網路的區塊,將這些交易提交到以太坊基礎層,並處理以太坊和Scroll 之間的訊息傳遞。
Roller:Roller負責將智能合約轉換成zkEVM 電路,隨後產生證明,用於證明交易的正確性。在Scroll 網路中存在多個Roller,並行處理並透過硬體加速以減少生成證明的時間。 Scroll 由於直接證明EVM的字節碼處理正確與否,因此對於EVM做到了字節碼層面的兼容。
Rollup 和Bridge Contract:這些合約為Scroll 的交易提供資料可用性,驗證zkEVM 產生的有效性證明。可以說,Scroll 是透過Rollup 合約和Bridge 合約和以太坊基礎層連接的。透過這些合約,使用者可以在以太坊和Scroll 之間傳遞任意訊息,並且藉助網關合約向任一方向轉移ERC-20資產。
source: https://scroll.mirror.xyz/nDAbJbSIJdQIWqp9kn8J0MVS4s6pYBwHmK7keidQs-k
Scroll 在以太坊部署的主要合約:
網關路由代理合約(保證代幣在跨鏈操作中的正確映射):0xF8B1378579659D8F7EE5f3C929c2f3E332E41Fd6
訊息代理合約(傳遞L1與L2之間的訊息):0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367
值得注意的是以上合約可由代理管理員(Proxy Admin)和持有者(Owner)進行修改。此外,Scroll 也設定了白名單功能,可以改變特定地址在Scroll 的gas費。 Scroll的排序器目前是中心化的,可以審查Scroll 網路的訊息和交易,並且有可能跳過訊息佇列中的任何訊息直接最終確認某一訊息。
2. Scroll zkEVM工作流程
Scroll 產生區塊後,會經過協調器(Coordinator)和多個證明器(Roller)後產生聚合證明,然後提交給以太坊上的Rollup 合約進行驗證。詳細過程如下:
1.排序器獲得新的交易後,虛擬機會讀取該筆交易相關的字節碼,產生對應的執行踪跡(Execution Trace)並將其發送給協調器。同時,排序器也將交易資料提交給Rollup合約。
2.Roller先將從協調器接收到的執行踪跡轉換為zkEVM 電路。每一步執行踪跡都有對應的zkEVM 電路,此處對於某些zk不友善的函數(hash,Keccak),Scroll 透過建立查找表,將執行踪跡中此類函數的輸入和輸出映射到查找表,利用額外的電路來驗證查找表的正確性。隨後Roller 為這些zkEVM 電路產生對應的證明。
3.在生成證明後,Roller 將其送回協調器。每經過若干個區塊,協調器將聚合任務隨機分配給某一Roller,然後該Roller 將若干個區塊的證明聚合成單一證明。
4.最後,協調器將聚合證明提交給Rollup 合約,Rollup合約再根據聚合證明來驗證先前提交給Rollup 合約的狀態和交易數據,確定區塊的正確性。
Scroll zkEVM電路與審計
1. 主要電路
zkEVM 由許多電路組成,每個電路負責檢查EVM的某個方面。這些電路最後以某種方式進行聚合或組合,共同完成交易執行的證明。下圖顯示了這些電路和表格之間的關係:
其中有一些較小的子電路,例如ECDSA 電路和操作碼相關的子電路,不會以影響電路的組合方式與其他表和電路交互,因此為了清楚起見,它們沒有在圖中顯示。
EVM Circuit
以太坊虛擬機(Ethereum Virtual Machine,簡稱EVM)是一個狀態機,它定義了以太坊協定中有效狀態轉換的規則。這意味著它規定了一個確定性函數,根據當前的EVM狀態計算下一個有效的EVM狀態。 EVM的執行部分使用操作碼(opcodes)來實現這些狀態轉換,從而產生執行軌跡(Execution trace)。 EVM電路的目標是建構與執行軌跡相對應的限制系統,可以透過後端的零知識證明系統來證明。
EVM電路的高階設計思想在某種程度上類似於EVM本身的設計(例如go-ethereum)。在go-ethereum中,解譯器循環遍歷執行軌跡上的所有指令操作碼。在每個指令中,解釋器幫助檢查相關的上下文訊息,如gas、堆疊、記憶體等,然後將操作碼發送到JumpTable,從中獲取該操作碼應執行的詳細操作。
類似地,在EVM電路中,Scroll 根據執行軌跡中的步驟來建立執行步驟,並為操作碼和執行上下文提供證明。對於每個執行步驟,會施加一組約束來檢查上下文資訊。對於每個操作碼,會施加一組約束來檢查操作碼的行為。在執行軌跡中,相同的操作碼應具有相同的限制。 Scroll使用選擇器來「開啟」執行軌跡中相同操作碼的所有步驟,並使用後端的證明系統證明它們的行為。
State Circuit
在執行過程中,EVM 的所有讀寫操作都記錄在rw_table中,並按計數器變數rw_counter排序。而state Circuit的目的是證明正確的生成了rw_table。
MPT Circuit
Merkle Patricia Tree 是以太坊儲存層使用的關鍵資料結構之一。在Scroll 的zkevm- Circuits 中,將原始MPT 修改為zkTrie,它本質上是一個稀疏二進位Merkle Patricia Trie。在zkevm- Circuits 中,Scroll 使用MPT 表來逐步追蹤MPT 操作的狀態轉換。 MPT 表具有以下表格佈局:
MPT 電路的目標是驗證上述MPT 表的正確性,即確保MPT表中記錄的每次更新都會導致正確的變更。為了實現這個目標,MPT 電路使用約束系統來強制執行MPT 的唯一變更。這意味著對於MPT 表中的每個更新,MPT 電路會確保只有一種可能的變更方式。這樣可以防止意外或非法的更改,並確保MPT 的完整性和正確性。特別地,當MPT 由於帳戶或儲存的更新而發生變更時,MPT 電路必須證明這次更新會導致正確的根變更。這意味著MPT 電路需要驗證更新操作是否按照規定的規則進行,並確保根雜湊正確地反映了所有變更的結果。
Keccak Circuit
Scroll 在遵循NIST Keccak 規範、Keccak 團隊Keccak 規範的條件下實現了他們自己的Keccak256。
而Keccak 電路則用來證明Keccak256 運算結果的正確性。這部分電路的實作複雜,主要因為keccak256 演算法本身就是zk-unfriendly的。
Tx Circuit
Tx電路提供了驗證交易正確性的限制。它主要檢查交易的以下幾個方面:
1. CallDataLength和累積CallDataGasCost的正確性:透過自訂閘和找出tx表中tx的最後一行call data位元組;
2. TxSign和TxHash相關資料的正確性:透過查找RLP表和Keccak表;
3. 證明「若tx_type為L1Msg,則msg_hash」 的正確性:透過尋找RLP表進行驗證;
4. 透過ECDSA正確執行tx簽名,並且能夠正確的從ECDSA簽名中恢復呼叫者位址:透過查找sig表進行驗證;
5. tx id、cum_num_txs和call_data_length等的正確過渡行為。
6. 一些基本約束,如一些指示變數的布林值等。
Bytecode Circuit
EVM 電路需要尋找儲存正確字節碼資訊的字節碼表。這確保了合約中儲存的位元組與表中載入的位元組相同。而字節碼電路的目的是約束上述字節碼表的正確性。這包括:
1. 與標籤(標籤)的邊界行為相關的約束:首行和末行的約束條件,從tag==byte轉換到header以及反之的轉換,從header轉換到header的轉換;
2. 約束代碼大小:包括透過約束字節碼的最後一個位元組的索引來計算字節碼的長度;
3. 約束程式碼雜湊:對程式碼雜湊中位元組的RLC行為進行正確約束,並透過尋找Keccak表來驗證程式碼雜湊;
4. 確保PUSH行為的正確性:is_code = push_data_left == 0(必須是布林值),並透過尋找push_table來確保PUSH1-PUSH32的推送資料大小;
5. 確保在一個字節碼中每行的正確傳播。
2. 安全審計
不同的鏈擁有各自的自訂業務模組功能,這些模組通常會修改EVM中的預編譯合約以及操作碼,其中Scroll zkEVM 作為一種基於零知識證明的二層擴容方案,該方案使用電路重構了相關操作碼並根據執行追蹤產生證明,這個複雜的實作極大增加了審計難度。 Beosin安全專家評估後認為,目前zkEVM 安全審計主要分為以下幾個面向:
1. GAS:zkEVM 電路在產生執行追蹤對應的證明時,會同時校驗交易耗費gas的正確性。如果在操作碼的實現電路中高頻次地使用沒有約束的自由變量,可能導致證明產生失敗或其他未知錯誤。
2. 記憶體安全:部分zkEVM 電路實現的數學基礎是多項式承諾,如Scroll 使用的KZG承諾。而多項式計算不會自動對齊,因此如果電路缺乏約束會導致取值域與電腦程式中的位元組範圍不一致,在部分合約開發者開啟了gas優化的情況下,資料的緊湊排列可能導致記憶體安全問題,如Polygon zkEVM 中的BYTE_C4096常數多項式。多項式允許參數的取值範圍超過位元組的最大取值範圍255,這在一些採取AMM模式的交易所中,可能導致惡意的Sequencer偽造參數獲利。本質上,這一類的漏洞都是由於電路表示的數值有效範圍與程式的變數取值範圍不一致導致的,如Beosin安全研究員在Snarkjs庫中發現的漏洞CVE-2023-33252。
3. 操作碼安全:zkEVM 操作碼實現時,有普遍的欠約束等安全問題,尤其是精確度問題。例如底層電路在實現兩個數的比較時,如果程式中比較運算的精度為1個位元組,那麼電路約束需要規定取值範圍,否則電路中運算的精度將遠超程式精度,導致結果錯誤。
4. 安全EIP支援:EIP-2、EIP-155等安全類eip的支援。
5. Sequencer中心化問題:目前Scroll 產生的證明全部依賴Sequencer產生的執行跟踪,如果Sequencer作惡,zkEVM 無法保護用戶資產安全。
6. 相容性問題:zkEVM 根據執行踪跡產生電路證明並在合約驗證,即使Sequencer進行微小的升級,也可能導致底層語言層級產生的執行踪跡存在較大差異。
Scroll的未來展望
1. Scroll 目前採用了兩層KZG版本的Halo2證明系統,使用GPU硬體加速加快證明生成的速度,目前瓶頸轉移到了見證生成和複製數據這部分。此外,Roller 的中心化程度和硬體運作費用也是Scroll 在未來發展多階段證明系統需要考慮的部分。
2. 因為EVM執行踪跡是動態變化的,會存在各種各樣的電路約束和規模。目前為滿足動態變化執行踪跡,每步執行踪跡都需要滿足最大的電路規模,造成額外的記憶體浪費。
3. Scroll 的Roller 目前預計透過網路交易費用獲利,然而目前Scroll 網路的用戶數和交易費用無法滿足Roller 和排序器的運作費用。在未來,Scroll 網路如何進行經濟誘因以吸引用戶和維持網路穩定運作是一個需要思考的問題。
目前,Beosin也已支持zk計畫的審計,我們對zk相關的硬核安全研究,可閱讀以下文章:1、三種針對ZK基礎演算法Groth16的攻擊手法分享;2、深入探究Tornado.Cash,揭示zkp項目的延展性攻擊。