風險提示:防範以"虛擬貨幣""區塊鏈"名義進行非法集資的風險。——銀保監會等五部門
資訊
發現
搜索
登錄
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
查看行情
一文了解Lookup Arguments
Sin7y
特邀专栏作者
2022-12-22 09:44
本文約2848字,閱讀全文需要約5分鐘
本文將重點介紹使得OlaVM獲得高性能的工具之一Lookup argument。

TL;DR

在上一篇文章Hello, OlaVM! 中提到,OlaVM 的願景是建立一個高性能的ZKVM,本文將重點介紹使得OlaVM 獲得高性能的工具之一,Lookup argument。 Lookup argument 對縮減電路規模,以提高ZK 效率有很重要的作用,在ZKVM 的電路設計中被廣泛應用,通過本篇文章你可以了解到:

1.Lookup argument 在ZKVM 中將發揮著怎樣的角色?

2.Plookup 協議原理。

一級標題

一級標題

The roles in ZKVM

所謂的ZKVM,其實就是用ZK 約束VM 所有的執行過程,VM 的執行過程一般可以分為:指令執行,內存訪問,內置函數執行等。在一個trace 裡執行對這些操作的約束看起來有點不切實際,首先,不同操作類型的約束對應不同的trace 的寬度,如果其中一個約束對應的trace 寬度特別大,就會造成其餘約束對應trace 的浪費;然後,一個trace 裡有太多不同的操作類型,就會引入更多的selector,不僅會增加多項式的個數,而且還會增加約束的階;最後,由於群的階限制,trace 的行數不能超過這個群的階,因此,應該盡量減少某種類型的操作所佔用的trace 行數。

因此,為了簡單,我們需要:

a.把不同的操作類型分成多個子trace,然後分別證明,主trace 和子trace 之間需要通過Lookup argument 來保證數據的一致性。

圖片描述

二級標題

Lookup between trace tables

圖片描述

二級標題

二級標題

Lookup for ZK-unfriendly operations

如前面所述,每個子trace 的證明是獨立的,所以獲得一個盡可能小的trace,會提高prover 的效率。以bitwise 為例,bitwise 操作包含AND, XOR, NOT 三種操作。如果想通過電路單純的實現對bitwise 操作的約束,那需要做的可能是,把每個op 拆成多個2 進制的limbs,如果這些op 是3 2bit 位寬,那就會拆分成32個limbs。然後,你需要約束:

圖片描述

圖片描述

一級標題

一級標題

二級標題

二級標題

二級標題

二級標題

二級標題

一級標題

二級標題

二級標題

二級標題

一級標題

Extend - 1 : Vector Lookup

Extend - 2 : Multi-tables

Links between Plookup and Lookup

Plookup 協議與Halo 2 的lookup 協議都能證明f⊂t ,但兩個協議的思想是不同的,區別如下:

Plookup 需要使用f 和t 構建一個新的數列s , f 和t 中的元素都在s 中至少出現一次,接著通過比較s 和t 中元素的非零距離集合是相等的來證明s⊂t,最終f⊂s⊂t→f⊂t 。

一級標題

一級標題

參考

1.Hello, OlaVM!:https://hackmd.io/@sin 7 y/H 1 yPj_J 8 i

2.OlaVM:https://olavm.org/

關於我們https://eprint.iacr.org/2020/315.pdf

關於我們https://zcash.github.io/halo 2/design/proving-system/lookup.html

關於我們

社群:http://t.me/sin 7 y_labs

官網:https://sin 7 y.org/

白皮書:https://olavm.org/

社群:http://t.me/sin 7 y_labs

微信公眾號:Sin 7 y

微信公眾號:Sin 7 y

郵箱:contact@sin 7 y.org

研究文章(EN):https://hackmd.io/@sin 7 y

Github:Sin 7 y

zkSync
智能合約