Halo2、Caulk+、Baloo、Cq Lookup argument细览

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 0x<4为例,相比于使用算术化电路中如何使用定制gates?中的定制约束,使用lookup约束会更简单——即只需要1个lookup约束就足以:
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第1张图片
实际不只有一个witness x x x,而是有很多witnesses,可扩展多个range check:
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第2张图片
或者借助selector多项式做部分lookup约束:
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第3张图片

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的解决方案

2.1 尝试用copy argument来证明而失败

Halo2、Caulk+、Baloo、Cq Lookup argument细览_第4张图片

2.2 尝试用permutation argument来证明而失败

Halo2、Caulk+、Baloo、Cq Lookup argument细览_第5张图片

2.3 Halo2的解决方案

Halo2、Caulk+、Baloo、Cq Lookup argument细览_第6张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第7张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第8张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第9张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第10张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第11张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第12张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第13张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第14张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第15张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第16张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第17张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第18张图片
但是,以上策略的lookup argument,需对 t ( X ) t(X) t(X)做运行一次permutation argument,相应Prover Time与 t ( X ) t(X) t(X)呈线性关系,对big table场景来说太慢了,为此:
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第19张图片

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——可能可借助预处理来实现。
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第20张图片
Caulk+ 中采用的预处理策略为:【见以太坊基金会Dankrad Feist 和 Dmitry Khovratovich 2023年论文 Fast amortized KZG proofs】
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第21张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第22张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第23张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第24张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第25张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第26张图片

2.5 Baloo lookup argument:Prove lookup over hidden domain

Halo2、Caulk+、Baloo、Cq Lookup argument细览_第27张图片
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 jIei,jc(j)=ai
Lincheck Argument可check a matrix equation。
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第28张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第29张图片

Halo2、Caulk+、Baloo、Cq Lookup argument细览_第30张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第31张图片

Halo2、Caulk+、Baloo、Cq Lookup argument细览_第32张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第33张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第34张图片

2.6 Cq lookup argument:Cached Quotients

Halo2、Caulk+、Baloo、Cq Lookup argument细览_第35张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第36张图片

3. Lookup Constraints in Plonkish:Function Tables

Halo2、Caulk+、Baloo、Cq Lookup argument细览_第37张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第38张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第39张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第40张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第41张图片
Halo2、Caulk+、Baloo、Cq Lookup argument细览_第42张图片

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

你可能感兴趣的:(零知识证明,零知识证明)