Formally Verifying Noir Zero Knowledge Programs with NAVe
Pedro Antonino, Namrata Jain

TL;DR
This paper introduces a formal verification framework for Noir zero-knowledge programs by formalizing the ACIR language with SMT-LIB and developing an open-source verifier using cvc5, enhancing correctness assurance.
Contribution
It formalizes the ACIR language in SMT-LIB, creates an open-source verifier for Noir programs, and demonstrates its practical effectiveness on diverse program sets.
Findings
Verifier successfully checks Noir program constraints
Identification of a hard-to-check constraint type
Framework shows practical applicability across multiple programs
Abstract
Zero-Knowledge (ZK) proof systems are cryptographic protocols that can (with overwhelming probability) demonstrate that the pair is in a relation without revealing information about the private input . 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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsCryptography and Data Security · Formal Methods in Verification · Polynomial and algebraic computation
