零知识证明(Zero-Knowledge Proof,ZKP)是一种在不泄露陈述内容的情况下证明陈述有效性的方法。它是一个证明系统,包括证明者、验证者和挑战,使用户能够公开分享知识或所有权的证明,而不揭示其细节。
zk-SNARK(Succinct Non-Interactive Arguments of Knowledge):
Bit+11 -> Pinocchio PHGR13 -> Groth16 (standard till today)
可信设置在上述中很重要
Then, after that:
新的引入 不需要可信设置
Bulletproofs(BBBPWM17)-> zk-STARKs(BBHR18)
三个级别的zkp:
第一级:瓦利在哪里
第二级:成员证明
第三级:不透明定价
chatgpt about groth16:
当谈论Groth16时,我们实际上在讨论一种非交互式零知识证明系统,专门用于zk-SNARKs(零知识简洁非交互式知识证明)。zk-SNARKs是一种密码学证明,允许一方向另一方证明某个陈述是真实的,而无需透露关于该陈述本身的任何信息。
-
背景:
- zk-SNARKs: 零知识简洁非交互式知识证明。
- 零知识证明: 证明一方陈述是真实的,而不透露关于该陈述的信息,除了其真实性。
- 简洁性: 证明很短且易于验证。
-
Groth16的组成部分:
- 二次算术程序(QAPs): Groth16将计算表示为QAPs,这是一种使用多项式表示计算的方法。
- 双线性配对: Groth16依赖于双线性配对,这是一种数学操作,它从某些数学群中取两个元素,并返回另一个群中的元素。配对操作具有一些使其适用于zk-SNARKs的有用特性。
-
设置:
- 公共参考字符串(CRS): Groth16需要一个值得信赖的设置,其中生成了一个公共参考字符串。这个设置对于系统的安全性至关重要。
-
证明和验证:
- 证明: 证明者使用公共参考字符串和私有输入生成证明,证明陈述的有效性。
- 验证: 验证者根据公共参考字符串和公共输入检查证明,以确定陈述的有效性。
-
安全性考虑:
- 值得信赖的设置: Groth16的安全性依赖于设置的完整性。如果设置受到破坏,可能导致虚假证明的产生。
-
应用:
- Groth16已被应用于各种区块链和加密货币项目,如Zcash,以提供隐私功能,同时仍然允许交易的验证。