Git Product home page Git Product logo

circom's Introduction

Chat on Telegram Website GitHub top language

About ==>circom

CIRCUIT COMPILER FOR ZK PROVING SYSTEMS

Circom is a novel domain-specific language for defining arithmetic circuits that can be used to generate zero-knowledge proofs. Circom compiler is a circom language 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 circom 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 circom circuits. In this regard, circom users can create their own custom templates or instantiate templates from circomLib, a publicly available library that counts 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 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.

Circom language reference can be found at circom language reference

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 circom 2 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 the circom & snarkjs framework!

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

CIRCUITS

TOOLS

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.