1. 引言
多变量lookup相关论文有:
- Orbis Labs(Cardano的layer2 zk-rollups)团队Ulrich Hab¨ock 2022年11月论文 Multivariate lookups based on logarithmic derivatives,也可参看:https://github.com/Orbis-Tertius/MVlookups。
- zk-VM中密集使用的multi-column,其fractional decomposition lookups性能要 优于 Hyperplonk+ 中使用的基于boolean hypercube的“classical” plookup策略。
- Zeta Function Technologies团队Ariel Gabizon 和 以太坊基金会团队 Dmitry Khovratovich 2022年11月论文 Flookup: Fractional decomposition-based lookups in quasi-linear time independent of table size
而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(X−wi)=∏j(X−tj)
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(X−wi)=∏j(X−tj)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,l⋅2l+⋯+εj,1⋅21+εj,0 - 引入随机值 α \alpha α来对多项式进行reduce为grand product。
- 将
m
j
m_j
mj以二进制编码方式表示为:
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+1⋅Y)=∏j(X+tj+tj+1⋅Y)⋅∏i(X+wi+wi⋅Y)
同时,也可通过引入一个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)=(X−w1)⋅(X−w2),有:
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))=(X−w1)⋅(X−w2)1⋅(X−w2)+(X−w1)⋅1=X−w11+X−w21
由此可知,对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} (X−w)m→X−wm
logUp的核心思想为,对 ∏ i ( X − w i ) = ∏ j ( X − t j ) m j \prod_i(X-w_i)=\prod_j(X-t_j)^{m_j} ∏i(X−wi)=∏j(X−tj)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} ∑iX−wi1=∑jX−tjmj
为基于 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