Casting out Primes: Bignum Arithmetic for Zero-Knowledge Proofs学习笔记
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Casting out Primes: Bignum Arithmetic for Zero-Knowledge Proofs学习笔记相关的知识,希望对你有一定的参考价值。
1. 引言
Polygon zero团队 Daniel Lubarov 和 Polygon zkEVM团队 Jordi Baylina 2022年10月联合发表的论文 《Casting out Primes: Bignum Arithmetic for Zero-Knowledge Proofs》。
受“casting out nines” 技术——做对9取模运算并提供概率性结果,启发,本论文核心思想为:
- 对bignum运算的非确定方案
即:【详细参看Optimizations of zkEVM with Daniel and Jordi】
即,若某identity在moduli set
M
M
M中每个
m
i
∈
M
m_i\\in M
mi∈M均有:
- f ( x ⃗ ) = 0 m o d m i f(\\vecx)=0\\mod m_i f(x)=0modmi
则有:
- f ( x ⃗ ) = 0 m o d lcm ( M ) f(\\vecx)=0\\mod \\textlcm(M) f(x)=0modlcm(M),其中 lcm ( M ) \\textlcm(M) lcm(M)表示 M M M中的最小公倍数。
若已知 ∣ f ( x ⃗ ) ∣ < lcm ( M ) |f(\\vecx)|<\\textlcm(M) ∣f(x)∣<lcm(M),则有:
- f ( x ⃗ ) = 0 f(\\vecx)=0 f(x)=0
1.1 相关约定
令 [ b ] [b] [b]表示集合: 0 , ⋯ , b − 1 \\0,\\cdots,b-1\\ 0,⋯,b−1,某bignum可表示为 n n n limbs in base b b b,即 [ b ] n [b]^n [b]n。
[
b
]
n
[b]^n
[b]n与
[
b
n
]
[b^n]
[bn]之间具有canonical isomorphism:【由于
b
b
b为公开已知,可进行预处理。】
σ
b
(
x
)
=
∑
i
=
0
n
−
1
b
i
x
i
\\sigma_b(x)=\\sum_i=0^n-1b^ix_i
σb(x)=∑i=0n−1bixi
已知一组bignum
x
,
y
∈
[
b
]
n
x,y\\in [b]^n
x,y∈[b]n,乘积
σ
b
(
x
)
σ
b
(
y
)
\\sigma_b(x)\\sigma_b(y)
σb(x)σb(y)可表示为某函数
(
[
b
]
n
,
[
b
]
n
)
→
[
b
2
n
]
([b]^n,[b]^n)\\rightarrow [b^2n]
([b]n,[b]n)→[b2n],即:
π
b
(
x
,
y
)
=
∑
i
=
0
n
−
1
∑
j
=
0
n
−
1
b
i
+
j
x
i
y
j
\\pi_b(x,y)=\\sum_i=0^n-1\\sum_j=0^n-1b^i+jx_iy_j
πb(x,y)=∑i=0n−1∑j=0n−1bi+jxiyj
- Partially reduced summations:
某identity 对 m m m 取模,可表示为对每个系数取模,即:
σ b m ( x ) = ∑ i = 0 n − 1 ( b i m o d m ) x i \\sigma_b^m(x)=\\sum_i=0^n-1(b^i\\mod m)x_i σbm(x)=∑i=0n−1(bimodm)xi
类似的,也有:
π b ( x , y ) ( m ) = ∑ i = 0 n − 1 ∑ j = 0 n − 1 ( b i + j m o d m ) x i y j \\pi_b(x,y)^(m)=\\sum_i=0^n-1\\sum_j=0^n-1(b^i+j\\mod m)x_iy_j πb(x,y)(m)=∑i=0n−1∑j=0n−1(bi+jmodm)xiyj
注意其中: σ b ( x ) = σ b m ( x ) \\sigma_b(x)=\\sigma_b^m(x) σb(x)=σbm(x) 以及 π b ( x , y ) = π b ( x , y ) ( m ) \\pi_b(x,y)=\\pi_b(x,y)^(m) πb(x,y)=πb(x,y)(m)。
从而可推导出如下定理1:
- 已知 x ∈ [ b ] n x\\in [b]^n x∈[b]n,有 σ b m ( x ) < n m b \\sigma_b^m(x)<nmb σbm(x)<nmb。
- 已知 x , y ∈ [ b ] n x,y\\in [b]^n x,y∈[b]n,有 π b ( x , y ) ( m ) < n 2 m b 2 \\pi_b(x,y)^(m)<n^2mb^2 πb(x,y)(m)<n2mb2。
在本文中,已知 x ∈ [ b ] n x\\in [b]^n x以上是关于Casting out Primes: Bignum Arithmetic for Zero-Knowledge Proofs学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
static_casting 中等数量的 T* 到 void* 时访问冲突