1. 引言
本文主要参考2023年2月以太坊基金会Mary Maller在第13届 BIU Winter School on Cryptography上的视频分享 A Close Look at a Lookup Argument - Mary Maller。
以证明
0
≤
x
<
4
0\leq x <4
0≤x<4为例,相比于使用算术化电路中如何使用定制gates?中的定制约束,使用lookup约束会更简单——即只需要1个lookup约束就足以:
实际不只有一个witness
x
x
x,而是有很多witnesses,可扩展多个range check:
或者借助selector多项式做部分lookup约束:
2. Halo2的lookup argument策略
详细见:
- ZCash Halo2 book之lookup argument
需证明:
- a ( i ) ∈ { t ( 1 ) , t ( 2 ) , t ( 3 ) , t ( 4 ) } a(i)\in\{t(1),t(2),t(3),t(4)\} a(i)∈{t(1),t(2),t(3),t(4)} for i ∈ { 0 , 1 , 2 , 3 } i\in\{0,1,2,3\} i∈{0,1,2,3}
本文将展示:
- 尝试用copy argument来证明而失败
- 尝试用permutation argument来证明而失败
- Halo2 lookup argument
- Caulk+ lookup argument
- Baloo lookup argument
- Cq lookup argument
2.1 尝试用copy argument来证明而失败
2.2 尝试用permutation argument来证明而失败
2.3 Halo2的解决方案
但是,以上策略的lookup argument,需对
t
(
X
)
t(X)
t(X)做运行一次permutation argument,相应Prover Time与
t
(
X
)
t(X)
t(X)呈线性关系,对big table场景来说太慢了,为此:
2.4 Caulk+ lookup argument:fast for big tables
上面2.3节中指出,Halo2 lookup argument需对
t
(
X
)
t(X)
t(X)做运行一次permutation argument,相应Prover Time与
t
(
X
)
t(X)
t(X)呈线性关系。
当对于类似
{
t
1
,
⋯
,
t
2
27
}
\{t_1,\cdots,t_{2^{27}}\}
{t1,⋯,t227}这样的large table来说,Halo2 lookup argument速度会很慢,为此,需要构建与
t
(
x
)
t(x)
t(x) size 无关 的Temporary Table C——可能可借助预处理来实现。
Caulk+ 中采用的预处理策略为:【见以太坊基金会Dankrad Feist 和 Dmitry Khovratovich 2023年论文 Fast amortized KZG proofs】
2.5 Baloo lookup argument:Prove lookup over hidden domain
Baloo lookup argument的核心思想为基于2019年Aurora论文中的Lincheck Argument思想:
∑
j
∈
I
e
i
,
j
c
(
j
)
=
a
i
\sum_{j\in I}e_{i,j}c(j)=a_i
∑j∈Iei,jc(j)=ai
Lincheck Argument可check a matrix equation。
2.6 Cq lookup argument:Cached Quotients
3. Lookup Constraints in Plonkish:Function Tables
4. 思考
- 所有sublinear time lookup argument都使用pairings。
- pairings不具备post-quantum安全性,且需要特殊的,非标准化的椭圆曲线。
- 开放问题:能否不使用pairings,设计出一种实用的,具有(与table size)sublinear time的lookup argument方案?
参考资料
[1] 2023年2月以太坊基金会Mary Maller在第13届 BIU Winter School on Cryptography上的视频分享 A Close Look at a Lookup Argument - Mary Maller
lookup系列博客
- PLOOKUP
- PLOOKUP代码解析
- Efficient polynomial commitment schemes for multiple points and polynomials学习笔记
- PLONK + PLOOKUP
- PlonKup: Reconciling PlonK with plookup
- PLONK: permutations over lagrange-bases for oecumenical noninteractive arguments of knowledge 学习笔记
- Plonk代码解析
- RapidUp: Multi-Domain Permutation Protocol for Lookup Tables学习笔记
- Lookup argument总览
- Halo2 学习笔记——设计之Proving system之Lookup argument(1)
- logUp-Multivariate lookups based on logarithmic derivatives
- cq:fast lookup argument
- Lookup Argument性能优化——Caulk
- 2023年 ZK Hack以及ZK Summit 亮点记
- Research Day 2023:Succinct ZKP最新进展
- Lasso、Jolt 以及 Lookup Singularity——Part 1
- Lasso、Jolt 以及 Lookup Singularity——Part 2
- 深入了解Lasso+Jolt