zkStruDul: Programming zkSNARKs with Structural Duality
Rahul Krishnan, Ashley Samuelson, Emily Yao, Ethan Cecchetti
非交互式零知识(NIZK)证明,如zkSNARKS,让一个人证明私人数据的知识,而不透露它或与验证者交互。 虽然现有的工具侧重于指定待验证的谓词,但现实世界的应用程序优化了谓词定义,以尽量减少证明生成开销,但必须相应地变换谓词输入。 实现这两个步骤分别重复了必须精确匹配的逻辑,以避免灾难性的安全漏洞。 我们用 zkStruDul 解决了这个缺点,zkStruDul 是一种将输入变换和谓词定义统一为单个组合抽象的语言,编译器可以从中投射这两个过程,从而消除重复的代码和有问题的不匹配。 zkStruDul 提供了一个高级抽象,在现有的 NIZK 技术之上分层,并支持诸如递归证明等重要功能。 我们提供源级语义,并证明其行为与预测语义相同,允许直接的标准推理。
Non-Interactive Zero Knowledge (NIZK) proofs, such as zkSNARKS, let one prove knowledge of private data without revealing it or interacting with a verifier. While existing tooling focuses on specifying the predicate to be proven, real-world applications optimize predicate definitions to minimize proof generation overhead, but must correspondingly transform predicate inputs. Implementing these two steps separately duplicates logic that must precisely match to avoid catastrophic security flaws. We...