Formally Verifying Noir Zero Knowledge Programs with NAVe
By: Pedro Antonino, Namrata Jain
Potential Business Impact:
Checks computer code for secret math tricks.
Zero-Knowledge (ZK) proof systems are cryptographic protocols that can (with overwhelming probability) demonstrate that the pair $(X, W)$ is in a relation $R$ without revealing information about the private input $W$. This membership checking is captured by a complex arithmetic circuit: a set of polynomial equations over a finite field. ZK programming languages, like Noir, have been proposed to simplify the description of these circuits. A developer can write a Noir program using traditional high-level constructs that can be compiled into a lower-level ACIR (Abstract Circuit Intermediate Representation), which is essentially a high-level description of an arithmetic circuit. In this paper, we formalise some of the ACIR language using SMT-LIB and its extended theory of finite fields. We use this formalisation to create an open-source formal verifier for the Noir language using the SMT solver cvc5. Our verifier can be used to check whether Noir programs behave appropriately. For instance, it can be used to check whether a Noir program has been properly constrained, that is, the finite-field polynomial equations generated truly capture the intended relation. We evaluate our verifier over 4 distinct sets of Noir programs, demonstrating its practical applicability and identifying a hard-to-check constraint type that charts an improvement path for our verification framework.
Similar Papers
A Survey of Interactive Verifiable Computing: Utilizing Low-degree Polynomials
Logic in Computer Science
Lets computers prove they did work correctly.
Zero-Knowledge Proof Based Verifiable Inference of Models
Cryptography and Security
Lets you check AI answers without seeing its secrets.
zkVC: Fast Zero-Knowledge Proof for Private and Verifiable Computing
Cryptography and Security
Proves computer math is correct, super fast.