Scroll會帶動Layer2新浪潮嗎?以及你不得不知曉的zkEVM電路與審計知識
10月10日14:00,以太坊二層解決方案 Scroll 主網產生了第一個區塊,標志着 Scroll 的主網成功上线。截止到10月25日,已有超過7600個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)的邊界行為相關的約束:首行和末行的約束條件,從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項目的延展性攻擊。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
Beosin
文章數量
65粉絲數
0