GitHub - Monero-Chan-Foundation/circom-chan: zkSnark circuit compiler (•ㅅ•❀)

3 min read Original article ↗

Website Twitter Discord Telegram GitHub top language

About circom chan

CIRCUIT COMPILER FOR ZK PROVING SYSTEMS - MONERO CHAN EDITION

Circom chan is a circuit compiler for zero-knowledge proving systems. It uses the circom language, a domain-specific language for defining arithmetic circuits that can be used to generate zero-knowledge proofs. circom chan is a compiler written in Rust that can be used to generate a R1CS file with a set of associated constraints and a program (written either in C++ or WebAssembly) to efficiently compute a valid assignment to all wires of the circuit. One of the main particularities of the circom language is its modularity that allows the programmers to define parameterizable circuits called templates, which can be instantiated to form larger circuits. The idea of building circuits from small individual components makes it easier to test, review, audit, or formally verify large and complex circuits. In this regard, circom chan users can create their own custom templates or instantiate templates from circomLib, a publicly available library that comes with hundreds of circuits such as comparators, hash functions, digital signatures, binary and decimal converters, and many more. Circomlib is publicly available to practitioners and developers.

The implementations of proving systems are also available in our libraries including snarkjs, written in Javascript and Pure Web Assembly, wasmsnark written in native Web Assembly, rapidSnark written in C++ and Intel Assembly.

circom chan aims to provide developers a holistic framework to construct arithmetic circuits through an easy-to-use interface and abstracting the complexity of the proving mechanisms.

The circom language reference can be found in the circom chan documentation.

At this time there are two available syntax highlighters: circom Visual Studio Code highlight syntax and circom Vim highlight syntax.

Documentation

All documentation is available in the circom chan documentation, we encourage you to read it. If you are new start with the Getting started section. Basic background on Zero-knowledge proofs can be found on Background section.

Install

Refer to Installation section

⚠️ Deprecation note

The previous circom 1 compiler written in Javascript is deprecated, but circom 1 repository is still available.

Community

Thank you for considering contributing to circom chan!

As the circom chan and snarkjs community grows new tools, circuits, or projects have appeared. Here we link some of them:

CIRCUITS

TOOLS

More information about the notions of weak and strong safety in circom chan circuits here.