Skip to content

Chat on Telegram Website GitHub repo Issues GitHub top language Contributors



⚠ Important deprecation note

Current circom is a compiler written in Rust. The old circom compiler written in Javascript will be frozen, but it can still be downloaded from the old circom repository.


About the circom ecosystem

The circom compiler and its ecosystem of tools allows you to create, test and create zero knowledge proofs for your circuits.

circom

circom is a compiler written in Rust for compiling circuits written in the circom language. The compiler outputs the representation of the circuit as constraints and everything needed to compute different ZK proofs.

circomlib

With circom, it is possible to create large circuits by combining smaller generic circuits called templates. The circomlib is a library of circom templates that contains hundreds of circuits such as comparators, hash functions, digital signatures, binary and decimal convertors and many more. You can also create your custom templates, but before start coding, we recommend you to take a look at our already created templates.

The package already contains tests for circuits available in the circomlib. The package also installs the npm packages circomlibjs, circom_tester and ffjavascript as dependencies.

circomlibjs

circomlibjs is a Javascript library that provides programs to compute the witness of several circuits of circomlib. This library is used to check that the witness computed using the wasm or c code generated by circom form many circuits in the circomlib match the ones generated by the corresponding Javascript program in circomlibjs.

The package includes these programs in the src directory. In the test directory it includes its own tests. In the tools directory it includes programs to precompute some needed parameters.

circom_tester

The circomtester is a npm package that provides tools for testing circom circuits.

ffjavascript

The ffjavascript is a npm package with Javascript code to perform finite field operations in Javascript.

snarkjs

snarkjs is a npm package that contains code to generate and validate ZK proofs from the artifacts produced by circom.

Visual summary