Binius:基于binary fields的SNARKs(Part 1)

1. 引言

前序博客有:

Ulvetanna团队Benjamin E. Diamond和Jim Posen 2023年论文《Succinct Arguments over Towers of Binary Fields》,开源代码见:

在该论文中:

  • 构建了基于towers of binary fields 的高效SNARK。
  • 基于Brakedown进行了调整,构建了适于tiny域(包括只有2个元素的域)的multilinear多项式承诺方案。
    • 该承诺方案可treat small-field多项式 with zero embedding overhead。
  • 对HyperPlonk的product和permutation check、以及Lasso的lookup,均引入了binary-field调整版本。
  • binary PLONKish变种,可高效用于标准哈希函数——如Keccak-256和Grøstl。

2. Binary field

Binary field的characteristic为2,形式为 F 2 n \mathbb{F}_{2^n} F2n n n n为某整数。

最简单的binary field为 F 2 \mathbb{F}_2 F2,其元素为 { 0 , 1 } \{0,1\} { 0,1},运算为模 2 2 2

  • 加法运算对应bitwise XOR
  • 乘法运算对应bitwise AND。

由于 2 n 2^n 2n不是素数,需如下操作来将其转换为某field:

  • 1)基于 F 2 \mathbb{F}_2 F2的多项式,其系数为0或1,如 p ( x ) = x 7 + x 5 + x 2 + 1 p(x)=x^7+x^5+x^2+1 p(x)=x7+x5+x2+1
  • 2)选择基于 F 2 \mathbb{F}_2 F2的不可约多项式 m ( x ) m(x) m(x),将 m ( x ) m(x) m(x)的余数看成是equivalence classes。如 m ( x ) = x 2 + x + 1 m(x)=x^2+x+1 m(x)=x2+x+1,其余数为degree最多为1的多项式 r ( x ) = a x + b r(x)=ax+b r(x)=ax+b,其中 a , b a,b a,b值为0或1。余数构成field F 2 2 \mathbb{F}_{2^2} F22,其包含4个元素: 0 + 0 x , 1 + 0 x , 0 + 1 x , 1 + 1 x 0+0x,1+0x,0+1x,1+1x 0+0x,1+0x,0+1x,1+1x,可分别表示为 00 , 10 , 01 , 11 00,10,01,11 00,10,01,11
    • 对于 F 2 n \mathbb{F}_{2^n} F2n中元素,可 以长度为 n n n的bitstring来表示。
    • 基于 F 2 n \mathbb{F}_{2^n} F2n 2 ≤ n ≤ 10000 2\leq n \leq 10000 2n10000的不可约多项式列表见:Table of Low-Weight Binary Irreducible Polynomials

多项式 m ( x ) = x 3 + x + 1 m(x)=x^3+x+1 m(x)=x3+x+1也是不可约多项式,可用于构建包含8个其它元素的扩域 F 2 3 \mathbb{F}_{2^3} F23
另一种构建 F 2 3 \mathbb{F}_{2^3} F23的方式是:就是使用extension towers。Binius采用的方式为:

可使用multilinear Lagrange polynomials作为tower of extensions的base。这样的优势在于:

  • trivially填充0系数,可将一种extension嵌入到其它extensions

具体的构建流程为:

  • 1)以 τ 0 = F 2 \tau_0=\mathbb{F}_2 τ0=F2为起点
  • 2)设置 τ 1 = F 2 [ x 0 ] / ( x 0 2 + x 0 + 1 ) \tau_1=\mathbb{F}_2[x_0]/(x_0^2+x_0+1) τ1=F2[x0]/(x02+x0+1)
  • 3)继续: τ k = F 2 [ x k − 1 ] / ( x k − 1 2 + x k − 1 x k − 2 + 1 ) \tau_k=\mathbb{F}_2[x_{k-1}]/(x_{k-1}^2+x_{k-1}x_{k-2}+1) τk=F2[xk1]/(xk12+xk1xk2+1)

有: τ 0 ⊂ τ 1 ⊂ τ 2 ⊂ ⋯ τ m \tau_0\sub\tau_1\sub\tau_2\sub\cdots\tau_m τ0τ1τ2τm

直观来看其工作原理为:

扫描二维码关注公众号,回复: 17327934 查看本文章
  • 1)显然 τ 0 \tau_0 τ0为0或1。
  • 2) τ 1 \tau_1 τ1中元素有: 0 + 0 x 0 , 1 0 x 0 , 0 + 1 x 0 , 1 + 1 x 0 0+0x_0,1_0x_0,0+1x_0,1+1x_0 0+0x0,10x0,0+1x0,1+1x0,可使用前2个,即 00 , 10 00,10 00,10来标识 τ 0 \tau_0 τ0中元素。
  • 3) τ 2 \tau_2 τ2中元素有: 0 + 0 x 0 + 0 x 1 + 0 x 0 x 1 , 1 + 0 x 0 + 0 x 1 + 0 x 0 x 1 , 0 + 1 x 0 + 0 x 1 + 0 x 0 x 1 , 1 + 1 x 0 + 0 x 1 + 0 x 0 x 1 , 1 + 0 x 0 + 1 x 1 + 0 x 0 x 1 , 0 + 1 x 0 + 1 x 1 + 0 x 0 x 1 , 1 + 1 x 0 + 1 x 1 + 0 x 0 x 1 , 1 + 1 x 0 + 1 x 1 + 1 x 0 x 1 0+0x_0+0x_1+0x_0x_1,1+0x_0+0x_1+0x_0x_1,0+1x_0+0x_1+0x_0x_1,1+1x_0+0x_1+0x_0x_1,1+0x_0+1x_1+0x_0x_1,0+1x_0+1x_1+0x_0x_1,1+1x_0+1x_1+0x_0x_1,1+1x_0+1x_1+1x_0x_1 0+0x0+0x1+0x0x1,1+0x0+0x1+0x0x1,0+1x0+0x1+0x0x1,1+1x0+0x1+0x0x1,1+0x0+1x1+0x0x1,0+1x0+1x1+0x0x1,1+1x0+1x1+0x0x1,1+1x0+1x1+1x0x1,即以size为4的bitstring来表示。 τ 1 \tau_1 τ1元素,可看成是 b 0 b 1 00 b_0b_100 b0b100格式的 τ 2 \tau_2 τ2元素。元素按词典顺序排序。

同时,已知 τ k \tau_k τk的某元素 b 0 b 1 b 2 ⋯ b 2 k − 1 b_0b_1b_2\cdots b_{2^k-1} b0b1b2b2k1,可将其对半切分表示为 b l o + X k − 1 b h i b_{lo}+X_{k-1}b_{hi} blo+Xk1bhi,其中 b l o , b h i b_{lo},b_{hi} blo,bhi均源自 τ k − 1 \tau_{k-1} τk1

  • 加法对应为XOR,从硬件角度来看,有很多优势,其中之一就是无需考虑carry(进位)。
  • 乘法可分解为递归方式表示,如有 a l o + x k a h i a_{lo}+x_{k}a_{hi} alo+xkahi b l o + x k b h i b_{lo}+x_{k}b_{hi} blo+xkbhi,则乘法表示为:
    a h i b h i x k 2 + ( a h i b l o + a l o b h i ) x k + a l o b l o a_{hi}b_{hi}x_k^2+(a_{hi}b_{lo}+a_{lo}b_{hi})x_k+a_{lo}b_{lo} ahibhixk2+(ahiblo+alobhi)xk+aloblo
    但由于已知 x k 2 = x k − 1 x k + 1 x_k^2=x_{k-1}x_k+1 xk2=xk1xk+1,因此可计算 τ k − 1 \tau_{k-1} τk1中元素乘积:
    • 如采用相同的策略,直到 F 2 \mathbb{F}_2 F2
    • 或者使用lookup table来获取values
    • 同时有其它高效乘法计算来将某域元素,与其subfield元素相乘。如, τ k + j \tau_{k+j} τk+j元素与 τ k \tau_k τk元素的乘积,可 以 2 j 2^j 2j次乘法来实现。

3. 编码理论

基于字母表 A A A的某code of block n n n,为 A n A^n An的subset,即向量中 n n n个元素属于 A A A。2个codes之间的Hamming distance,是指二者不同的元素个数。

基于域 F \mathbb{F} F [ k , n , d ] [k,n,d] [k,n,d] code,为:

  • F n \mathbb{F}^n Fn k k k-维线性子空间,使得2个不用元素的distance至少为 d d d

Reed-Solomon codes为其中的一种code类型。
已知某长度为 k k k的向量 ( a 0 , a 1 , ⋯   , a k − 1 ) (a_0,a_1,\cdots,a_{k-1}) (a0,a1,,ak1),其Reed-Solomon编码为:

  • 将每个 a k a_k ak当做某degree 为 k − 1 k-1 k1多项式的evaluation值,然后对该多项式在 n n n个点进行evaluate(当使用STARKs时,需使用该编码)。
  • 若这 n n n个evaluation值的前 k k k个值与原始向量相同,则称该编码为systematic。
  • ρ = k / n \rho=k/n ρ=k/n为该编码方式的ratio,其倒数 1 / ρ = n / k 1/\rho=n/k 1/ρ=n/k称为blow-up factor。
  • 由于2个degree k − 1 k-1 k1多项式,最多有 k − 1 k-1 k1个重合点,因此该编码distance为 n − k + 1 n-k+1 nk+1
  • m m m-fold interleaved code of block length,可看成是基于字母表 A m A^m Am定义的size为 n n n的linear code。可将该code看成是rows,行内元素在 A m A^m Am中。

已知基于域 F \mathbb{F} F的某 [ n , k , d ] [n,k,d] [n,k,d] linear code C C C,其generating matrix M M M和基于域 F \mathbb{F} F的向量空间 V V V C C C的extension code C ′ C' C,为 M x Mx Mx mapping的image,其中 x ∈ V k x\in V^k xVk

4. 多项式承诺方案

多项式的系数和code field size F \mathbb{F} F可尽可能小,但二者必须相等。通过从扩域 E \mathbb{E} E中来采样,可增加安全性。

Prover:

  • 将向量 ( t 0 , t 1 , ⋯   , t n ) (t_0,t_1,\cdots, t_n) (t0,t1,,tn)解析为,基于 0 , 1 log ⁡ n 0,1^{\log n} 0,1logn的Lagrange basis内的系数
  • 将这些系数按 m 0 × m 1 m_0\times m_1 m0×m1矩阵 T T T表示,对第 r o w i row_i rowi行编码获得 u i u_i ui。矩阵 T T T共有 m 0 m_0 m0行,每行长度为 ρ − 1 m 1 \rho^{-1}m_1 ρ1m1
  • 将以 u i u_i ui为行的矩阵,称为 U U U
  • 将矩阵 U U U中每列作为叶子节点,构建一棵Merkle tree,其root用作承诺值。

Verifier:

  • 选择evaluation point r = ( r 0 , r 1 , ⋯   , r log ⁡ ( n ) − 1 ) r=(r_0,r_1,\cdots,r_{\log(n)-1}) r=(r0,r1,,rlog(n)1)
  • Prover提供 s s s作为多项式在 r r r点的evaluation值。

为生成Proof:

  • Prover发送vector-matrix product R . T R.T R.T,其中 R R R r r r的最后 log ⁡ ( m 0 ) \log(m_0) log(m0)个元素的tensor product。
  • Verifier采样 i i i次query(具体次数取决于安全级别),每次选中 U U U的一列。
  • Prover发送所请求的列,及其相应的authentication paths。

proof中包括:

  • evaluation s s s
  • Merkle root r o o t root root
  • vector-matrix product R . T R.T R.T
  • 对应 i i i次query的,共 i i i列,机器相应的authentication paths。

为check该proof:

  • Verifier检查该Merkle tree包含了这些列
  • Verifier计算 R . T R.T R.T的编码,并检查,根据 R R R U U U中选中的列的product,对应 R . T R.T R.T所编码的列。
  • 使用 R . T R.T R.T,和 r r r的前 log ⁡ ( m 1 ) \log(m_1) log(m1)个元素的tensor product,Verifier检查 s s s是合适的evaluation值。

构建承诺方案的核心思想为:

  • packing。

已知具有 m m m τ k \tau_k τk元素,将其分组为 m / 2 j m/2^j m/2j τ k + j \tau_{k+j} τk+j元素。类似地,rows可pack进 τ r \tau_r τr元素。该多项式承诺方案修改为,Verifier测试的不是单个列,而是blocks of columns。

5. 结论

本文涵盖了Binius背后的基本思想。其利用了:

  • 采用extension towers构建的binary fields的优势,binary fields具有硬件友好性。
  • 可拼接多个元素,并将其解析为某扩域元素
  • 其承诺方案是基于Brakedown的,使用了Merkle trees和Reed-Solomon编码。
  • 相比于FRI,该方案具有更大的proofs和更长的验证时间,但Prover time确大幅降低了。
    • 但是,证明时间的好处通常超过了更长的验证时间。
    • 此外,使用递归证明可以进一步减小proof size,或可使用final SNARK——如Groth16或Plonk,以实现提交到L1上的smaller proof。

参考资料

[1] LambdaClass 2023年12月博客 SNARKs on binary fields: Binius - Part 1

猜你喜欢

转载自blog.csdn.net/mutourend/article/details/135326101
今日推荐