在介紹 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]
EVM Circuits 會透過 Bus Mapping 獲得正確的執行狀態,在這過程需要證明 state 操作和 EVM 操作接正確,所以會需要 evm proof 以及 state proof
ZKVM利用零知識來約束虛擬機(VM)的所有執行過程,這些過程一般可劃分為:指令執行、內存訪問和內置函數執行。在一個追踪(trace)中約束這些操作有些不太現實。所以列出 bus
Plookup key-value mappings:這是一種特殊的映射方式,允許在 Plookup 體系下建立鍵值對。
Bus mapping:這是我們用於證明 EVM 執行的映射。它包含了 EVM 執行時的各種數據,如讀/寫標誌、鍵、值、操作碼等。這種映射由證明者進行證明,確保在 EVM 證明中沒有包含額外的變數。
總之,bus-mapping
為我們提供了一種在零知識證明中檢驗虛擬機(如 EVM)執行的機制,並允許我們方便地在電路中使用相關數據。而匯流排 (bus) 在這裡就像是數據在 EVM 和證明系統之間的"公路",而 bus-mapping
則確保這些數據的正確性和一致性。