当前位置: 首页 > news >正文

Ligero 和 Brakedown PCS中的tensor product结构

1. 引言

因:

  • Justin Thaler 2023年7月书 Proofs, Arguments, and Zero-Knowledge,第 10.5 节
  • 2021年论文 Brakedown — Linear-time and field-agnostic SNARKs for R1CS

这些协议(Ligero 和 Brakedown)利用了 多项式求值查询中的张量积结构(Tensor Product Structure in Polynomial Evaluation Queries)来对一个阶为 nnn 的多项式 qqq 进行承诺。令 m:=nm := \sqrt{n}m:=n

2. Ligero 和 Brakedown 中的承诺阶段(Commitment Phase)

Ligero 和 Brakedown 中的承诺阶段(Commitment Phase):
为了对多项式 qqq(系数向量为 uuu)进行承诺,将 uuu 看作一个 m×mm \times mm×m 的矩阵。然后构造一个矩阵 u^\hat uu^(读作 “u hat”),其尺寸为 m×(ρ−1m)m \times (\rho^{-1} m)m×(ρ1m),它的每一行都是将该行系数经过某个误差纠正编码(error-correcting code)EEE 的编码:

u^:=[E(u1)E(u2)⋮E(um)]\hat u := \begin{bmatrix} E(u_1) \\ E(u_2) \\ \vdots \\ E(u_m) \end{bmatrix} u^:=E(u1)E(u2)E(um)

这里 uiu_iui 表示原来矩阵中的第 iii 行;编码 EEE 的码率(rate)为 ρ\rhoρ

  • Ligero 中,使用单变量的 low-degree 扩展编码 → 时间复杂度大约为

    O(ρ−1m⋅log⁡(ρ−1m))O\big( \rho^{-1} m \cdot \log(\rho^{-1} m) \big) O(ρ1mlog(ρ1m))

  • Brakedown 中,使用一种具有线性时间编码过程的编码 → 时间复杂度大约为

    O(ρ−1m)O(\rho^{-1} m) O(ρ1m)

承诺(commitment)过程如下:

  • 证明者(prover)发送对矩阵 MMM 的承诺,声称 M=u^M = \hat uM=u^
  • 验证者(verifier)需要检查 MMM 是否是“格式良好”(well-formed),即每一行都是合法的码字(codeword):
    • 1)验证者选择一个随机向量 r∈Fmr \in \mathbb{F}^mrFm

    • 2)证明者计算并响应
      w:=rT⋅Mw := r^T \cdot M w:=rTM

      注意 www 应当是一个编码后的行,所以证明者可以发送一些向量 vvv,使得 w=E(v)w = E(v)w=E(v)
      换句话说,证明者请求对行做一个随机线性组合。

    • 3)验证者从承诺中打开 MMM 的某些列子集(大小为 t=Θ(λ)t = \Theta(\lambda)t=Θ(λ),其中 λ\lambdaλ 是安全参数),并重新计算这些列中 www 的对应条目,以验证它们确实跟承诺+组合算出来的是一致的。

3. Ligero 和 Brakedown 中的求值阶段(Evaluation Phase)

在Ligero 和 Brakedown 中的求值阶段(Evaluation Phase),要求计算
q(z)=bT⋅u⋅aq(z) = b^T \cdot u \cdot a q(z)=bTua

其中
a:=(1,z,z2,…,zm−1),b:=(1,zm,z2m,…,zm(m−1))a := (1, z, z^2, \dots, z^{m-1}), \quad b := (1, z^m, z^{2m}, \dots, z^{m(m-1)}) a:=(1,z,z2,,zm1),b:=(1,zm,z2m,,zm(m1))

这个计算分两步进行:

  • 1)计算 bT⋅ub^T \cdot ubTu:这一步完全类似于“随机线性组合测试”(random linear combination test)。
  • 2)然后用得到的向量(可以看作某个 www)与 aaa 的内积计算得到 q(z)=⟨w,a⟩q(z) = \langle w, a \rangleq(z)=w,a。这一步时间复杂度是 O(m)O(m)O(m)

附录:多项式中的tensor product结构

因:

  • 给定一个系数向量为 uuu 的多项式 qqq,计算 q(z)q(z)q(z) 等价于对向量 y:=(1,z,z2,…,zn−1)y := (1, z, z^2, \dots, z^{n-1})y:=(1,z,z2,,zn1) 计算内积 ⟨u,y⟩\langle u, y\rangleu,y

  • 张量积(tensor product)的引入:如果 n=m2n = m^2n=m2,令
    a:=(1,z,z2,…,zm−1)a := (1, z, z^2, \dots, z^{m-1}) a:=(1,z,z2,,zm1)

    b:=(1,zm,z2m,…,zm(m−1))b := (1, z^m, z^{2m}, \dots, z^{m(m-1)}) b:=(1,zm,z2m,,zm(m1))
    并把 uuu 重塑(reshape)成一个矩阵,那么 q(z)q(z)q(z) 可以写为一个向量-矩阵-向量的乘积:【即把计算 q(z)q(z)q(z) 的过程分解为张量积的形式】
    bT⋅u⋅ab^T \cdot u \cdot a bTua

对于单变量多项式,其可 以张量积表示为:
q(z)=3+5z+7z2+9z3+z4+2z5+3z6+4z7+2z8+4z9+6z10+8z11+3z13+6z14+9z15q(z) = 3 + 5z + 7z^2 + 9z^3 + z^4 + 2z^5 + 3z^6 + 4z^7 + 2z^8 + 4z^9 + 6z^{10} + 8z^{11} + 3z^{13} + 6z^{14} + 9z^{15} q(z)=3+5z+7z2+9z3+z4+2z5+3z6+4z7+2z8+4z9+6z10+8z11+3z13+6z14+9z15

=[1z4z8z12]⋅[3579123424680369]⋅[1zz2z3]=[3+z4+2z8+05+2z4+4z8+3z127+3z4+6z8+6z129+z4+8z8+9z12]T⋅[1zz2z3]= \begin{bmatrix} 1 & z^4 & z^8 & z^{12} \end{bmatrix} \cdot \begin{bmatrix} 3 & 5 & 7 & 9 \\ 1 & 2 & 3 & 4 \\ 2 & 4 & 6 & 8 \\ 0 & 3 & 6 & 9 \end{bmatrix} \cdot \begin{bmatrix} 1 \\ z \\ z^2 \\ z^3 \end{bmatrix}=\begin{bmatrix} 3+z^4+2z^8+0 \\ 5+2z^4+4z^8+3z^{12} \\ 7+3z^4+6z^8+6z^{12} \\ 9+z^4+8z^8+9z^{12} \end{bmatrix}^T \cdot \begin{bmatrix} 1 \\ z \\ z^2 \\ z^3 \end{bmatrix} =[1z4z8z12]31205243736694891zz2z3=3+z4+2z8+05+2z4+4z8+3z127+3z4+6z8+6z129+z4+8z8+9z12T1zz2z3

对于multilinear多线性多项式,其可 以张量积表示为:
q(r1,r2,r3,r4)=3(1−r1)(1−r2)(1−r3)(1−r4)+5(1−r1)(1−r2)(1−r3)r4+7(1−r1)(1−r2)r3(1−r4)+9(1−r1)(1−r2)r3r4+(1−r1)r2(1−r3)(1−r4)+2(1−r1)r2(1−r3)r4+3(1−r1)r2r3(1−r4)+4(1−r1)r2r3r4+2r1(1−r2)(1−r3)(1−r4)+4r1(1−r2)(1−r3)r4+6r1(1−r2)r3(1−r4)+8r1(1−r2)r3r4+3r1r2(1−r3)(1−r4)+6r1r2(1−r3)r4+9r1r2r3r4\begin{aligned} q(r_1, r_2, r_3, r_4) &= 3(1-r_1)(1-r_2)(1-r_3)(1-r_4) \\ &\quad + 5(1-r_1)(1-r_2)(1-r_3)r_4 \\ &\quad + 7(1-r_1)(1-r_2)r_3(1-r_4) \\ &\quad + 9(1-r_1)(1-r_2)r_3r_4 \\ &\quad + (1-r_1)r_2(1-r_3)(1-r_4) \\ &\quad + 2(1-r_1)r_2(1-r_3)r_4 \\ &\quad + 3(1-r_1)r_2r_3(1-r_4) \\ &\quad + 4(1-r_1)r_2r_3r_4 \\ &\quad + 2r_1(1-r_2)(1-r_3)(1-r_4) \\ &\quad + 4r_1(1-r_2)(1-r_3)r_4 \\ &\quad + 6r_1(1-r_2)r_3(1-r_4) \\ &\quad + 8r_1(1-r_2)r_3r_4 \\ &\quad + 3r_1r_2(1-r_3)(1-r_4) \\ &\quad + 6r_1r_2(1-r_3)r_4 \\ &\quad + 9r_1r_2r_3r_4 \end{aligned} q(r1,r2,r3,r4)=3(1r1)(1r2)(1r3)(1r4)+5(1r1)(1r2)(1r3)r4+7(1r1)(1r2)r3(1r4)+9(1r1)(1r2)r3r4+(1r1)r2(1r3)(1r4)+2(1r1)r2(1r3)r4+3(1r1)r2r3(1r4)+4(1r1)r2r3r4+2r1(1r2)(1r3)(1r4)+4r1(1r2)(1r3)r4+6r1(1r2)r3(1r4)+8r1(1r2)r3r4+3r1r2(1r3)(1r4)+6r1r2(1r3)r4+9r1r2r3r4

=[(1−r1)(1−r2)(1−r1)r2r1(1−r2)r1r2]⋅[3579123424680369]⋅[(1−r3)(1−r4)(1−r3)r4r3(1−r4)r3r4]= \begin{bmatrix} (1-r_1)(1-r_2) & (1-r_1)r_2 & r_1(1-r_2) & r_1r_2 \end{bmatrix} \cdot \begin{bmatrix} 3 & 5 & 7 & 9 \\ 1 & 2 & 3 & 4 \\ 2 & 4 & 6 & 8 \\ 0 & 3 & 6 & 9 \end{bmatrix} \cdot \begin{bmatrix} (1-r_3)(1-r_4) \\ (1-r_3)r_4 \\ r_3(1-r_4) \\ r_3r_4 \end{bmatrix} =[(1r1)(1r2)(1r1)r2r1(1r2)r1r2]3120524373669489(1r3)(1r4)(1r3)r4r3(1r4)r3r4

参考资料

[1] 2025年8月18日博客 Tensor Product Structure in Polynomial Evaluation Queries
[2] 2025年8月18日博客 Ligero and Brakedown Polynomial Commitments


文章转载自:

http://WKfKsCje.rpjyL.cn
http://OCnUDO3O.rpjyL.cn
http://a3Bt9WxG.rpjyL.cn
http://E5Fz5H7I.rpjyL.cn
http://4Ax4WHC2.rpjyL.cn
http://w2atrlzS.rpjyL.cn
http://IKLvISa6.rpjyL.cn
http://057doFAT.rpjyL.cn
http://x06Klpfe.rpjyL.cn
http://G910GPCC.rpjyL.cn
http://Halt6m1L.rpjyL.cn
http://w5XocPDh.rpjyL.cn
http://MSXjz9Gd.rpjyL.cn
http://j01XjmG1.rpjyL.cn
http://Sg97It4w.rpjyL.cn
http://GXINAw6j.rpjyL.cn
http://k2Ur2ze0.rpjyL.cn
http://u76NA2if.rpjyL.cn
http://BhL5FmFQ.rpjyL.cn
http://bQBGHo9r.rpjyL.cn
http://WxniJI1H.rpjyL.cn
http://63LPGloX.rpjyL.cn
http://7ejbm5sT.rpjyL.cn
http://hxgKqEqu.rpjyL.cn
http://dUuGD0qB.rpjyL.cn
http://V2ssGBU2.rpjyL.cn
http://R788gAor.rpjyL.cn
http://LsUo24Jc.rpjyL.cn
http://EC4aOGvU.rpjyL.cn
http://cVLMsH5X.rpjyL.cn
http://www.dtcms.com/a/383675.html

相关文章:

  • 高效群签名方案与优化方法
  • [第一章] web入门—N1book靶场详细思路讲解(二)
  • 行优先 vs 列优先:性能差异揭秘
  • python把文件从一个文件复制到另一个文件夹
  • 平衡车 -- 遥控器
  • 深度学习(八):学习率
  • VSCode使用prettier插件进行格式化配置
  • 前后端分离项目如何解决跨域问题
  • IDEA使用Maven和MyBatis简化数据库连接(实现篇)
  • 【Pywinauto库】12.2 pywinauto.element_info 后端内部实施模块
  • 正向代理与反向代理的异同
  • 从ENIAC到Linux:计算机技术与商业模式的协同演进——开源生态的崛起与重构
  • RTC驱动原理
  • MyBatis 的“魔法”:Mapper 接口是如何找到并执行 SQL 的?
  • 构建日志采集和分析平台
  • 《Unity+腾讯云TRTC故障排查指南:从日志盲区到线程死锁的全链路解析》
  • 笔记25.9.14(QueryWrapper,Builder ,Stream流处理,forEach)
  • 深入理解MySQL主从架构中的Seconds_Behind_Master指标
  • systemverilog如何解决不能使用变量索引来进行位选择的范围指定
  • 多语言编码Agent解决方案(1)-项目概述与架构
  • 【深度学习踩坑实录】从 Checkpoint 报错到 TrainingArguments 精通:QNLI 任务微调全流程复盘
  • 【愚公系列】《人工智能70年》019-语音识别的历史性突破(铲平技术高门槛)
  • webpack 配置文件中 mode 有哪些模式?
  • AI推理范式:从CoT到ReAct再到ToT的进化之路
  • webpack和Module Federation区别分析
  • Knockout.js Virtual Elements 详解
  • 【JavaSE五天速通|第三篇】常用API与日期类篇
  • JavaWeb-Session和ServletContext
  • HTML 编码规范
  • 深度学习(九):逻辑回归