开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情
基础知识
P和NP问题
- P问题:P问题即存在多项式时间算法的问题,也就是在多项式时间内可以解决的问题(那么在多项式时间内一定可以验证)。例如:冒泡排序,快速排序等
- NP问题:能够在多项式时间内验证解的正确性,也就是说NP问题不一定能够在多项式时间内可解,但是一定可以在多项式时间内验证。
- 补充 多项式时间(Polynomial time):指一个问题的计算时间不大于问题大小的多项式倍数
算术运算电路
算数电路可以看作由三种门构成:加门、系数乘法门和通用乘法门(减法可以转化成加法,除法可以转化成乘法)
QAP问题--计算式转化成多项式
- ZK-SNARKS依托于某种NP问题(很难求解但是可以快速验证),但是NP问题作为一种数学方法,并不能够解决任何的计算问题,也就是说ZK-SNARKS不能直接应用于任何计算问题,所以要先将普通的计算问题转换成一种正确的形式,这种形式就是QAP(quadratic arithmetic problem)。再转换成QAP问题的同时,可以进行另外一个过程,即当代码有输入时就可以创建一个对应的解(有时候称为QAP的witness)。之后,还需要一个相当复杂的过程来为witness创建实际的零知识证明,除此之外还有一个过程,用来验证别人发送给你的证明。
- QAP的强定义如下:
初学者看到这些定义一定会很晕,但是理解QAP问题十分重要,如果不理解,就不知道ZK-SNARKS所做的一系列操作是为了什么,在下篇文章(零知识证明--ZK-SNARKS(四))中,我们会通过示例,了解QAP的具体形式。