arnaucube
arnaucube/awesome-circomPublic Self-hosted repository
awesome-circom/README.md
README.mdRaw
 1# Awesome Circom
 2
 3> A curated list of repos related to [Circom](https://github.com/iden3/circom).
 4
 5## Contents
 6- [Cryptographic primitives](#cryptographic-primitives)
 7   - [In Circom](#cryptographic-primitives-in-circom)
 8   - [In other languages](#cryptographic-primitives-in-other-languages)
 9- [Provers](#provers)
10- [Code editors & tooling](#code-editors--tooling)
11- [Tutorials & docs](#tutorials--docs)
12- [Papers](#papers)
13- [Projects using Circom](#projects-using-circom)
14
15
16## Cryptographic primitives
17
18### Cryptographic primitives in Circom
19- [circomlib](https://github.com/iden3/circomlib) - The standard library of Circom
20- [circom-ecdsa](https://github.com/0xPARC/circom-ecdsa) - secp256k1 ECDSA operations
21- [circom-pairing](https://github.com/yi-sun/circom-pairing) - BLS12-381 curve
22- [zk-attestor](https://github.com/yi-sun/zk-attestor) - Scalable on-chain trustless attestations to data from any past Ethereum block or state (ethereum storage proofs)
23- [keccak256-circom](https://github.com/vocdoni/keccak256-circom) - Keccak256 implementation
24- [zk-kit.circom](https://github.com/privacy-ethereum/zk-kit.circom) - A monorepo of reusable Circom circuits
25
26### Cryptographic primitives in other languages
27> Cryptographic primitives implemented in other languages which are compatible with Circom implementations
28
29- Javascript
30   - [circomlibjs](https://github.com/iden3/circomlibjs) - Javascript library to work with circomlib circuits
31- Go
32   - [go-iden3-crypto](https://github.com/iden3/go-iden3-crypto) - Poseidon & mimc hash, babyjubjub elliptic curve
33   - [arbo](https://github.com/vocdoni/arbo) - Efficient MerkleTree compatible with circomlib, which parallelizes computation by CPUs
34   - [go-merkletree](https://github.com/iden3/go-merkletree) - MerkleTree compatible with circomlib 
35- Rust
36   - [poseidon-rs](https://github.com/arnaucube/poseidon-rs) - Poseidon hash function compatible with circomlib
37   - [babyjubjub-rs](https://github.com/arnaucube/babyjubjub-rs) - BabyJubJub elliptic curve compatible with circomlib
38
39## Provers
40- [snarkjs](https://github.com/iden3/snarkjs) - zkSNARK implementation in JavaScript & WASM
41- [rapidsnark](https://github.com/iden3/rapidsnark) - zkSNARK proof generation written in C++ and intel assembly
42- [arkworks-circom-compat](https://github.com/arkworks-rs/circom-compat) - Arkworks bindings to Circom's R1CS, for Groth16 Proof and Witness generation in Rust
43- [lambdaworks-circom-adapter](https://github.com/lambdaclass/lambdaworks) - LambdaWorks Circom adapter for Groth16 Proof generation in Rust
44- [go-circom-prover-verifier](https://github.com/iden3/go-circom-prover-verifier/) - Go implementation of the Groth16 zkSNARK Prover and Verifier compatible with Circom
45- [go-circom-witnesscalc](https://github.com/iden3/go-circom-witnesscalc) - Witness Calculator in go, calling WASM
46
47## Code editors & tooling
48- [zkrepl](https://github.com/0xPARC/zkrepl) - Online playground for Circom circuits
49- [vscode plugin](https://github.com/iden3/circom-highlighting-vscode) - VSCode syntax highlighting plugin
50- [vim plugin](https://github.com/iden3/vim-circom-syntax) - Vim syntax highlighting plugin
51- [Shield Cli](https://github.com/xorddotcom/SHIELD) - SHIELD is a development framework for circom developers. SHIELD is a tool to provide libraries, plugins, and testing tools to ensure code quality and security.
52- [Circomspect](https://github.com/trailofbits/circomspect) - Static analyzer and linter for the Circom programming language
53- [ecne](https://github.com/franklynwang/EcneProject) - An engine for verifying the soundness of R1CS constraints
54- [Picus](https://github.com/Veridise/Picus) - Automated verification of uniqueness property for ZKP circuits
55- [CIVER](https://github.com/costa-group/circom_civer) - A circuit verification tool built on Z3 SMT-solver
56- [Hardhat ZKit](https://github.com/dl-solarity/hardhat-zkit) - The ultimate TypeScript environment for Circom development
57- [circomkit](https://github.com/erhant/circomkit) - A testing & development environment for Circom
58
59## Tutorials & docs
60- [docs.circom.io](https://docs.circom.io/) - Official Circom docs
61- [Circom & Snarkjs talk](https://www.youtube.com/watch?v=-9TJa1hVsKA) - Jordi Baylina's talk at zkSummit 2019
62- [Electron Labs - Intro to Circom](https://docs.electronlabs.org/intro-to-circom) - Usage of language syntax and programming practices
63- [BattleZips Zero Knowledge Crash Course](https://www.youtube.com/channel/UCcVGZqz46ELMsjVRIr0VOxw) - Tutorial on building a battleship game on Ethereum & Circom
64- [Introduction to Zero Knowledge Proof](https://github.com/enricobottazzi/ZKverse) - Tutorial inspired by the presentation "All About the ZkVerse | Polygon" performed by Jordi Baylina at EthDenver22
65- [Circom101](https://circom.erhant.me) - In-depth Circom circuit design explanations & concepts
66
67## Papers
68> Papers on Circom related constructions and primitives implemented in the circomlib standard library
69
70- [CIRCOM: A Robust and Scalable Language for Building Complex Zero-Knowledge CircuitsComplex Zero-Knowledge Circuits](https://www.techrxiv.org/articles/preprint/CIRCOM_A_Robust_and_Scalable_Language_for_Building_Complex_Zero-Knowledge_Circuits/19374986/1/files/34409498.pdf)
71- [Sparse Merkle Trees](https://docs.iden3.io/publications/pdfs/Merkle-Tree.pdf)
72- [Baby Jubjub Elliptic Curve](https://iden3-docs.readthedocs.io/en/latest/_downloads/33717d75ab84e11313cc0d8a090b636f/Baby-Jubjub.pdf) & [EIP-2494](https://eips.ethereum.org/EIPS/eip-2494)
73- [Poseidon: A New Hash Function for Zero-Knowledge Proof Systems](https://eprint.iacr.org/2019/458)
74
75## Projects using Circom
76- [hermeznetwork/circuits](https://github.com/hermeznetwork/circuits) - Hermez network circuits
77- [iden3/circuits](https://github.com/iden3/circuits/) - Circom circuits used by the iden3 core protocol
78- [privacy-scaling-explorations/maci](https://github.com/privacy-ethereum/maci) - Minimal anti collusion infrastructure
79- [semaphore-protocol/semaphore](https://github.com/semaphore-protocol/semaphore) - A privacy gadget for creating anonymous proof of membership on Ethereum
80- [tornadocash/tornado-core](https://github.com/tornadocash/tornado-core) - Non-custodial private transactions on Ethereum
81- [worldcoin/semaphore-rs](https://github.com/worldcoin/semaphore-rs) - Rust support library for using Semaphore
82- [0xPARC/zk-group-sigs](https://github.com/0xPARC/zk-group-sigs) - Group signatures implemented with zkSNARKs
83- [vocdoni/zk-franchise-proof-circuit](https://github.com/vocdoni/zk-franchise-proof-circuit) - Census proof anonymous voting circuit
84- [web3-master/zksnark-sudoku](https://github.com/web3-master/zksnark-sudoku) - Sudoku verifier using zkSNARK and circom.