iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
Web 3

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

虛擬境界19:Bus Mapping 介紹

  • 分享至 

  • xImage
  •  

介紹 Bus-Mapping

在介紹 bus-mapping 前,先介紹 bus 該詞,匯流排 (bus)主要用於在系統內的各個部分之間傳輸資料,而一般來說在系統內會有記憶體或硬碟,那麼這些資料就是通過 bus 來做溝通。而 bus-mapping 也如此,它允許我們建立和檢驗 EVM Proof 執行的路徑、建立 State Proof 證明狀態的正確、並在零知識證明的電路中方便地使用這些數據。

接下來,我們可以由下圖來看一下整個 evm 兩個 state 是如何溝通的

flowchart LR
    subgraph state
    A1[Stack] --> B[Bus Mapping]
    A2[Storage] --> B[Bus Mapping]
    A3[Memory] --> B[Bus Mapping]
    end
    B --> |State Proof| E[EVM Proof]

https://ithelp.ithome.com.tw/upload/images/20231004/20130926YEZRT3zA0V.png

EVM Circuits 會透過 Bus Mapping 獲得正確的執行狀態,在這過程需要證明 state 操作和 EVM 操作接正確,所以會需要 evm proof 以及 state proof

bus-mapping 的主要目標:

ZKVM利用零知識來約束虛擬機(VM)的所有執行過程,這些過程一般可劃分為:指令執行、內存訪問和內置函數執行。在一個追踪(trace)中約束這些操作有些不太現實。所以列出 bus

  1. 分析 EVM 執行路徑 - 為了確定 EVM 在執行合約時的具體操作,我們需要對其執行的路徑進行詳細的分析。
  2. 構建證人數據 - 分析完 EVM 的執行路徑後,我們可以獲得證人數據。這些數據在後續的零知識證明中非常重要。
  3. 提供一個簡單的接口 - 為電路提供和使用證人數據,且只需使用少數幾個函數。

具體的 bus-mapping:

Plookup key-value mappings:這是一種特殊的映射方式,允許在 Plookup 體系下建立鍵值對。

Bus mapping:這是我們用於證明 EVM 執行的映射。它包含了 EVM 執行時的各種數據,如讀/寫標誌、鍵、值、操作碼等。這種映射由證明者進行證明,確保在 EVM 證明中沒有包含額外的變數。

總之,bus-mapping 為我們提供了一種在零知識證明中檢驗虛擬機(如 EVM)執行的機制,並允許我們方便地在電路中使用相關數據。而匯流排 (bus) 在這裡就像是數據在 EVM 和證明系統之間的"公路",而 bus-mapping 則確保這些數據的正確性和一致性。


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

尚未有邦友留言

立即登入留言