• 多变量lookup argument


    1. 引言

    多变量lookup相关论文有:

    TritonVM(Recursively verifiable STARKs )——TIP 0001: Contiguity Argument for Memory Consistency中试图用derivatives for lookups(使用grand product来计算derivative)来解决其memory table的一致性证明。

    2. 何为batch lookups?

    所谓batch lookups(又名vector column lookups),是指由多个witness columns,对应单个lookup table:
    在这里插入图片描述
    应用场景有:

    • zkVM:证明多个columns为word sized(如16-bit word)。
    • hasher chip,用于基于lookup的哈希函数(如Tip5)。

    相关研究成果有:

    • L. Eagen:Bulletproof++
    • A. Gabizon, D. Khovratovich:flookup
    • L. Eagen, A. Gabizon:zq

    3. Permutation argument和lookup argument

    3.1 Permutation argument

    Permutation argument背后的核心思想为multiset equality。
    所谓multiset equality,是指:【2个sequence必须具有相同的长度。】

    • 若2个sequence ( w i ) , ( t j ) (w_i),(t_j) (wi),(tj) 为permutation关系,当且仅当:
      ∏ i ( X − w i ) = ∏ j ( X − t j ) \prod_i(X-w_i)=\prod_j(X-t_j) i(Xwi)=j(Xtj)
      over F F F

    不过,该多项式计算非常昂贵。为此:

    • Bayer和Groth(2012):通过引入一个random challenge α ← § F \alpha \overset{\S }{\leftarrow} F α§F,将该多项式identity reduce为grand product:
      ∏ i ( α − w i ) = ∏ j ( α − t j ) \prod_i(\alpha-w_i)=\prod_j(\alpha-t_j) i(αwi)=j(αtj)

    3.2 Lookup argument

    Lookup argument背后的核心思想为set membership。
    所谓set membership,是指:【与multiset equality有所不同,2个sequence可以具有不同的长度。】

    • 已知2个sequence ( w i ) , ( t j ) (w_i),(t_j) (wi),(tj) in F F F,则 { w i } ⊆ { t j } \{w_i\}\subseteq \{t_j\} {wi}{tj},当且仅当存在multiplicity整数值 ( m j ) (m_j) (mj)(即 w i w_i wi值在 ( t j ) (t_j) (tj) sequence中出现的次数),满足:
      ∏ i ( X − w i ) = ∏ j ( X − t j ) m j \prod_i(X-w_i)=\prod_j(X-t_j)^{m_j} i(Xwi)=j(Xtj)mj

    对该多项式

    • Groth等人2018年Arya论文中:
      • m j m_j mj以二进制编码方式表示为:
        m j = ε j , l ⋅ 2 l + ⋯ + ε j , 1 ⋅ 2 1 + ε j , 0 m_j=\varepsilon_{j,l}\cdot 2^l+\cdots +\varepsilon_{j,1}\cdot 2^1+\varepsilon_{j,0} mj=εj,l2l++εj,121+εj,0
      • 引入随机值 α \alpha α来对多项式进行reduce为grand product。

    4. Plookup(the geometric way)

    Plookup的核心思想为integrability criterion,是指:

    • 已知2个sequence ( w i ) , ( t j ) (w_i),(t_j) (wi),(tj) in F F F,则 { w i } ⊆ { t j } \{w_i\}\subseteq \{t_j\} {wi}{tj}为sets,当且仅当存在sequence ( s k ) (s_k) (sk)(其长度为 ( w i ) , ( t j ) (w_i),(t_j) (wi),(tj)这2个sequence的长度之和),满足:
      { ( s k , s k + 1 ) } = { ( t j , t j + 1 ) } ∪ { ( w i , w i ) } \{(s_k,s_{k+1})\}=\{(t_j,t_{j+1})\}\cup\{(w_i,w_{i})\} {(sk,sk+1)}={(tj,tj+1)}{(wi,wi)}
      为multisets。

    相应的polynomial identity为:【为具有2个变量的多项式】
    ∏ k ( X + s k + s k + 1 ⋅ Y ) = ∏ j ( X + t j + t j + 1 ⋅ Y ) ⋅ ∏ i ( X + w i + w i ⋅ Y ) \prod_k(X+s_k+s_{k+1}\cdot Y)=\prod_j(X+t_j+t_{j+1}\cdot Y)\cdot \prod_i(X+w_i+w_i\cdot Y) k(X+sk+sk+1Y)=j(X+tj+tj+1Y)i(X+wi+wiY)

    同时,也可通过引入一个random challenge α , β ← § F \alpha,\beta \overset{\S }{\leftarrow} F α,β§F,将该多项式identity reduce为grand product。

    4.1 Plookup for batches

    在这里插入图片描述

    5. logUp:原理,及其,为何快?

    Logarithmic derivative(对数导数)定义为:
    D l o g ( p ( X ) ) : = p ′ ( X ) p ( X ) D_{log}(p(X)):=\frac{p'(X)}{p(X)} Dlog(p(X)):=p(X)p(X)

    Logarithmic(对数)运算的一个重要特性为:

    • 可将乘法运算,转换为,加法运算,即:
      log ⁡ ( p ( X ) ⋅ q ( X ) ) = log ⁡ ( p ( X ) ) + log ⁡ ( q ( X ) ) \log(p(X)\cdot q(X))=\log(p(X))+\log(q(X)) log(p(X)q(X))=log(p(X))+log(q(X))
      从而基于对数运算再求导,即 Logarithmic derivative(对数导数),也可将乘法运算,转换为,加法运算:
      D l o g ( p ( X ) ⋅ q ( X ) ) = D l o g ( p ( X ) ) + D l o g ( q ( X ) ) D_{log}(p(X)\cdot q(X))=D_{log}(p(X)) + D_{log}(q(X)) Dlog(p(X)q(X))=Dlog(p(X))+Dlog(q(X))

    如:
    对于 p ( X ) = ( X − w 1 ) ⋅ ( X − w 2 ) p(X)=(X-w_1)\cdot (X-w_2) p(X)=(Xw1)(Xw2),有:
    D l o g ( p ( X ) ) = 1 ⋅ ( X − w 2 ) + ( X − w 1 ) ⋅ 1 ( X − w 1 ) ⋅ ( X − w 2 ) = 1 X − w 1 + 1 X − w 2 D_{log}(p(X))=\frac{1\cdot (X-w_2)+(X-w_1)\cdot 1}{(X-w_1)\cdot (X-w_2)}=\frac{1}{X-w_1}+\frac{1}{X-w_2} Dlog(p(X))=(Xw1)(Xw2)1(Xw2)+(Xw1)1=Xw11+Xw21

    由此可知,对polynomial identity p ( X ) p(X) p(X),经Logarithmic derivative(对数导数)运算之后,具有如下属性:

    • 将zeros(即 p ( X ) p(X) p(X)中的 w 1 , w 2 w_1,w_2 w1,w2),变为了, D l o g ( p ( X ) ) D_{log}(p(X)) Dlog(p(X)) 中的poles。
    • p ( X ) p(X) p(X)中对zero的multiplication,变为了, D l o g ( p ( X ) ) D_{log}(p(X)) Dlog(p(X)) 中对pole的multiplication,即:
      ( X − w ) m → m X − w (X-w)^m\rightarrow \frac{m}{X-w} (Xw)mXwm

    logUp的核心思想为,对 ∏ i ( X − w i ) = ∏ j ( X − t j ) m j \prod_i(X-w_i)=\prod_j(X-t_j)^{m_j} i(Xwi)=j(Xtj)mj等式两侧做对数导数运算,即Key lemma为:

    • 已知2个sequence ( w i ) , ( t j ) (w_i),(t_j) (wi),(tj) in F F F len ( ( w i ) ) < char ( F ) \text{len}((w_i))<\text{char}(F) len((wi))<char(F),则 { w i } ⊆ { t j } \{w_i\}\subseteq \{t_j\} {wi}{tj},当且仅当存在multiplicity整数值 ( m j ) (m_j) (mj)(即 w i w_i wi值在 ( t j ) (t_j) (tj) sequence中出现的次数),满足:
      ∑ i 1 X − w i = ∑ j m j X − t j \sum_i\frac{1}{X-w_i}=\sum_j\frac{m_j}{X-t_j} iXwi1=jXtjmj
      为基于 F F F的有理函数(rational function)。

    通过引入一个random challenge α ← § F \alpha \overset{\S }{\leftarrow} F α§F,将该多项式identity reduce为rational sumcheck:
    ∑ i 1 α − w i = ∑ j m j α − t j \sum_i\frac{1}{\alpha-w_i}=\sum_j\frac{m_j}{\alpha-t_j} iαwi1=jαtjmj

    5.1 logUp for batches

    在这里插入图片描述
    其与Plookup的重要区别在于:

    • 使用grand sum来代替了grand product,无论要查找的列有多少,grand sum的degree都为1,与table size和查找值列表size均无关。

    logUp与Plookup对比为:
    在这里插入图片描述
    从而使得:

    • logUp少约50%的extra columns。
    • helper columns数量,可通过为每个column block提供一个helper column,来进一步reduce。即,实际是在columns数量 与 degree D D D之间做取舍。

    在这里插入图片描述
    在这里插入图片描述

    参考资料

    [1] Twitter MVlookups——基于因式分解的多变量lookup argument
    [2] 2023年4月4日在Lisbon ZK Summit 9上分享视频 ZK9: logUp - Lookup arguments based on the logarithmic derivative - Ulrich Haböck

  • 相关阅读:
    dockerfile 中激活conda并安装package
    create® 3入门教程-设置NTP
    【Spring Boot 使用Filter统一处理请求数据转换】
    windows10提权
    vue v-for 渲染大量数据卡顿的优化方案
    python读取文件并处理转化为list然后输出
    C++入门应该注意的问题(this指针和类对象)
    模拟问题(中)
    亚马逊云科技二度亮相服贸会,又带来哪些前沿应用技术?
    聊聊消息中间件(1),AMQP那些事儿
  • 原文地址:https://blog.csdn.net/mutourend/article/details/127745883