TechRxiv
main_techrxiv.pdf (309.44 kB)
Download file

CIRCOM: A Robust and Scalable Language for Building Complex Zero-Knowledge Circuits

Download (309.44 kB)
preprint
posted on 30.03.2022, 04:55 by Jose L. Muñoz-TapiaJose L. Muñoz-Tapia, Marta Belles, Miguel Isabel, Albert Rubio, Jordi Baylina
A zero-knowledge (ZK) proof guarantees that the result of a computation is correct while keeping part of the computation details private. Some ZK proofs are tiny and can be verified in short time, which makes them one of the most promising technologies for solving two key aspects: the challenge of enabling privacy to public and transparent distributed ledgers and, enhancing the scalability limitations of distributed ledgers. Most practical ZK systems require the computation to be expressed as an arithmetic circuit that is encoded as a set of equations called rank-1 constraint system (R1CS).
In this paper, we present \circom, a programming language and a compiler for designing arithmetic circuits that are compiled to R1CS. More precisely, with \circom, programmers can design arithmetic circuits, and the compiler outputs (i) a file with the R1CS description, (ii) \wasm and \cpp programs to efficiently compute all values of the circuit. We also provide an open-source library called \circomlib, with multiple circuit templates. Moreover, \circom can be complemented with \snarkjs, a tool for generating and validating ZK proofs from R1CS. Altogether, our software tools abstract the complexity of the proving mechanisms and provide a friendly interface to model low-level descriptions of arithmetic circuits.

History

Email Address of Submitting Author

jose.luis.munoz@upc.edu

ORCID of Submitting Author

0000-0001-6442-437X

Submitting Author's Institution

Universitat Politecnica de Catalunya

Submitting Author's Country

Spain

Usage metrics

Licence

Exports