"Pinocchio zk-SNARK“是"zk-SNARK”的一种特殊类型吗?如果是的话,有什么区别?
发布于 2020-05-16 20:28:58
皮诺奇( Pinocchio )是在不借助概率检验证明(PCP)的情况下早期实现SNARK (简洁、非交互式知识论证)的方法之一。2010年,Groth在公共引用字符串(CRS)模型中构造了一个非交互式零知识(NIZK)参数。有趣的是,他的论点并没有使用PCPs。2011年,Lipmaa将CRS的尺寸缩减为准线性,但验证器的计算仍然是二次的.Rosario Gennaro,Craig Gentry,Bryan Parno和Mariana Raykova (GGPR)发明了一种新的NP复杂性类的特征,称为二次跨度程序(QSP)。这有助于构建NP语句的简洁论点,这些语句能够快速构建和验证,比概率校验证明(PCP)好得多。
在Pinocchio中,客户端创建一个公共评估键来描述她的计算;此设置与计算一次的评估成正比。然后,工作人员对特定输入的计算进行评估,并使用评估键生成正确性的证明。无论所执行的计算或输入和输出的大小如何,证明都是常数大小。任何人都可以使用公开的验证密钥来检查证据。Pinocchio通过改进探地雷达的二次算法程序,获得了较强的渐近效率。
Pinocchio最初被认为是一种高效的公共可验证计算(PVC)方案。然而,它推广到零知识证明,在基本协议上的成本可以忽略不计。因此,皮诺奇的工具链成为了斯纳克体系结构的参考。Pinocchio采用了一个高级C程序,一直到一组分布式可执行程序,这些可执行文件以一种经过验证的方式运行该程序。它既支持算术电路,又支持二次算术程序,布尔电路支持二次扩展程序。
发布于 2019-05-30 11:18:41
是的,Pinocchio是一种实用的zk-SNARK,它允许验证程序执行加密可验证的计算,其验证工作可能少于执行计算本身。最近的一个提案展示了如何使Pinocchio具有适应性(或“散列和证明”),即能够对独立于计算的承诺进行证明。这使得能够在作出承诺后选择计算,并使不同计算之间以灵活的方式共享数据。不幸的是,这个提议并不是零知识。在一般情况下,它不能与亭诺奇系统相结合,在这种系统中,皮诺奇被外包给三名由于多方计算(MPC)而不了解输入的工人。
https://ethereum.stackexchange.com/questions/57685
复制相似问题