前面教完如何創建一個 evm,那麼我們就可以用這個 EVM 擴展原本的 layer 1,對這個執行層做一份證明,這個過程就是匯總 Rollup;而我模擬的 Ethereum 虛擬機 (EVM) ,前面實現所有的 EVM opcodes,只要再搭配上一個完整個 Proof System,即可以證明這些交易的有效性,這樣就可以對原有的 EVM 做到擴展,即可把交易量大幅度提升,而完整的過程可以看下圖。
Layer 1 會將 ETH 存入合約,而 Layer 2 狀態機會透過 EVM 執行交易,繼而產生一組交易結果和證明。這個證明的重要性於,它確保所有 layer 2 的交易都是有效且按造預期。一旦這些交易被證明為有效,這些結果就會被提交回 Layer 1,而在這段時間所有資金人安全的鎖定在 Layer 1 合約中。
ZK Rollups 主要優勢在於它可以提供安全及盡可能高效的交易速度,主要是可以做到高擴展性,且每個狀態更改都是透過數學,也就是零知識證明來做驗證的。這意味著驗證實體不包括無效的狀態更改,這就是證明者會稱為順序器 (Sequencer) 而不是驗證器的關係;他們不驗證交易而是驗證 VM 的執行狀態以及狀態的改變。由於依賴純粹的數學計算,不需要信任或監控他防止欺詐,這部分即是與 Optimistic Rollup 最大差異的部分。
那麼基礎的交易流程介紹完,我們即可以開始建立自己的 ZK Rollup 了, 先說,該 ZKEVM 可能會和你想像的有點不一樣,我在這部分不會使用 ZK 證明系統,而是使用 PSE 的 ZKEVM (https://github.com/privacy-scaling-explorations/zkevm-specs) 來做教學,一步步將我們前面的 EVM 做成 Layer 1 的擴展,在這過程可以順便認識如果要用電路去寫要如何做證明,這邊就先用 Python 將就一下,才不是我寫了一點覺得難度太高了嘿~
而我們目標就是將上述的步驟去做一個證明系統,那麼剛剛上面介紹了 Rollup,我們可以想像原本每個節點會需要做些甚麼
那如果要構建一個 zkRollup 系統
那麼就期待接下來的 ZK 構建證明的教學ㄅ