基于QAP的零知识证明
基于二次算术程序(Quadratic Arithmetic Programs,QAP)的一类零知识证明在现今非常常见,其代表方案有PGHR13 、Groth16 、GKMMM18 等。
这些方案的逻辑基本上遵循一下范式:
- 将计算函数转化为算术电路(Arithmetic Circuit)
- 利用QAP,将算术电路可满足性(Circuit-Satisfaction,C-SAT)问题规约为多项式间的整除性问题
- 设计方案,使得方案满足完备性、可靠性、零知识性
一、算术电路
算术电路是一组由“门”和“线”组成的算术结构,“门”用于表示运算符,“线”用于表示运算数值。
定义: 给定一个映射 ,其将 个有限域 上的元素映射到 个有限域 上的元素。
(在这里,我们将输入分为两类,一类是包含 个元素的公开输入,一类是包含 个元素的隐私输入)

C-SAT问题可以被描述为:给定一个电路与一组电路输出,判定是否存在一组电路输入使得电路中所有“线”的赋值合法。
基于QAP的零知识证明的构造原理在于将C-SAT问题转化为多项式间的关系问题。
二、QAP
定义: 一个在域 上由算术电路 转换而来的QAP 包含了三组多项式集合 ,,,,以及一个目标多项式 。若是算术电路的一组合法赋值,那么可以构造多项式被目标多项式整除。其中,
关于QAP的定义,有以下几点需要被理解:
- 变量可以被抽象为对“乘法门”的描述
- ,为乘法门的个数
- 为乘法门的抽象赋值,可以理解为门的编号
- 数值表示电路中“特殊线”的个数,特殊线为"电路的输入线"或"乘法门的输出线"
- 电路中共有条线,其中有条特殊线,
- 表示线的赋值,定义中隐含地约定为特殊线
- 当门的左输入为特殊线时,否则
- 当门的右输入为特殊线时,否则
- 当门的输出为特殊线时,否则
- ,,描述了门的常数输入/输出
描述了这样一个事实,即对于每一个乘法门,其左输入与右输入的乘积等于输出。所以, 在其 个乘法门处的求值为,根据多项式的性质,必然可以被整除。根据这一特性,我们将C-SAT问题转化为
例子:给定下图所示电路,构造QAP

约定输入为和,输出为的门的编号为;输入为和一条普通线,输出为的门的编号为。那么,可以构造目标多项式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】