iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
Web 3

以 Python 進入以太坊虛擬機 (EVM) 的幻想境界系列 第 17

虛擬境界17:EVM to ZKRollup

  • 分享至 

  • xImage
  •  

前面教完如何創建一個 evm,那麼我們就可以用這個 EVM 擴展原本的 layer 1,對這個執行層做一份證明,這個過程就是匯總 Rollup;而我模擬的 Ethereum 虛擬機 (EVM) ,前面實現所有的 EVM opcodes,只要再搭配上一個完整個 Proof System,即可以證明這些交易的有效性,這樣就可以對原有的 EVM 做到擴展,即可把交易量大幅度提升,而完整的過程可以看下圖。

ZK Rollup 交易流程

Layer 1 會將 ETH 存入合約,而 Layer 2 狀態機會透過 EVM 執行交易,繼而產生一組交易結果和證明。這個證明的重要性於,它確保所有 layer 2 的交易都是有效且按造預期。一旦這些交易被證明為有效,這些結果就會被提交回 Layer 1,而在這段時間所有資金人安全的鎖定在 Layer 1 合約中。

https://ithelp.ithome.com.tw/upload/images/20231002/20130926abiZhXddtf.png

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,我們可以想像原本每個節點會需要做些甚麼

  1. 驗證交易:這是每個節點在區塊鏈上首先要做的事情。每筆交易都必須經過驗證,以確保它遵循所有規則,並且是有效的。
  2. 構建區塊:當交易被驗證後,它將被加入到一個新的區塊中,然後被添加到區塊鏈上。

ZK Rollup 構建步驟:

那如果要構建一個 zkRollup 系統

  1. 建立支援交易的系統:這意味著建立一個可以處理和驗證交易的系統,但與標準的EVM不同,這個系統將使用零知識證明來驗證交易。
  2. 建立該系統的區塊證明:這是ZK Rollup的核心。一旦系統可以處理交易,接下來的步驟是生成一個證明,證明區塊中的所有交易都是合法和有效的。

目標:

  1. 建立 EVM (部分) 的證明:對於EVM中的操作和功能進行證明,確保它們在ZK Rollup中都可以正確無誤地執行。
  2. State 讀寫的證明:State是EVM的核心部分,需要確保所有的讀寫操作都是合法的。
  3. 簽名的證明:確保所有交易的簽名都是合法的,並且沒有被篡改。

那麼就期待接下來的 ZK 構建證明的教學ㄅ

參考資料


上一篇
虛擬境界 16:完整 EVM 實現
下一篇
虛擬境界18:介紹建立 ZKEVM 步驟
系列文
以 Python 進入以太坊虛擬機 (EVM) 的幻想境界30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言