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 miM均有:

  • 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,,b1,某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=0n1bixi

已知一组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=0n1j=0n1bi+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=0n1(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=0n1j=0n1(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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Python Casting

Python Casting

static_casting 中等数量的 T* 到 void* 时访问冲突

casting

在Java中防止instanceof和casting [重复]

casting in C++