{"id":13485627,"url":"https://github.com/iden3/circom","last_synced_at":"2025-04-07T23:12:14.758Z","repository":{"id":37432334,"uuid":"415830261","full_name":"iden3/circom","owner":"iden3","description":"zkSnark circuit compiler","archived":false,"fork":false,"pushed_at":"2024-04-21T00:05:17.000Z","size":4243,"stargazers_count":1171,"open_issues_count":48,"forks_count":207,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-04-21T10:15:00.665Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"WebAssembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iden3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-10-11T07:55:24.000Z","updated_at":"2024-04-23T12:48:38.242Z","dependencies_parsed_at":"2023-11-14T12:28:07.086Z","dependency_job_id":"91330355-5e11-4731-90d0-466dba8c8967","html_url":"https://github.com/iden3/circom","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iden3%2Fcircom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iden3%2Fcircom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iden3%2Fcircom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iden3%2Fcircom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iden3","download_url":"https://codeload.github.com/iden3/circom/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247744335,"owners_count":20988783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T18:00:28.321Z","updated_at":"2025-04-07T23:12:14.719Z","avatar_url":"https://github.com/iden3.png","language":"WebAssembly","funding_links":[],"categories":["Index","Webassembly","Official Resources","Tools","Uncategorized"],"sub_categories":["Projects","Circuit Building Library","Uncategorized"],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"mkdocs/docs/circom-logo-black.png\" width=\"300\"/\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n\n[![Chat on Telegram][ico-telegram]][link-telegram]\n[![Website][ico-website]][link-website]\n![GitHub top language](https://img.shields.io/github/languages/top/iden3/circom)\n\n\u003c/div\u003e\n\n# About ==\u003ecircom\n\n\u003e CIRCUIT COMPILER FOR ZK PROVING SYSTEMS\n\n[Circom](https://iden3.io/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](https://github.com/iden3/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.\n\nThe implementations of proving systems are also available in our libraries including [snarkjs](https://github.com/iden3/snarkjs), written in Javascript and Pure Web Assembly, [wasmsnark](https://github.com/iden3/wasmsnark) written in native Web Assembly, [rapidSnark](https://github.com/iden3/rapidsnark) written in C++ and Intel Assembly.\n\nCircom 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.\n\nCircom language reference can be found at [circom language reference](https://docs.circom.io/circom-language/signals).\n\nAt this time there are two available syntax highlighters: [circom Visual Studio Code highlight syntax](https://github.com/iden3/circom-highlighting-vscode) and  [circom Vim highlight syntax](https://github.com/iden3/vim-circom-syntax).\n\nThe circom development team is part of the COSTA research group at the Complutense University of Madrid.\n\n# Documentation\nAll documentation is available in [circom 2 Documentation](https://docs.circom.io/), we encourage you to read it. If you are new start with the [Getting started section](https://docs.circom.io/getting-started/installation/).\nBasic background on Zero-knowledge proofs can be found on [Background section](https://docs.circom.io/background/background/).\n\n# Install\n\nRefer to [Installation section](https://docs.circom.io/getting-started/installation/)\n\n## :warning: Deprecation note\n\nThe previous `circom 1` compiler written in Javascript is deprecated, but [circom 1 repository](https://github.com/iden3/circom_old) is still available.\n\n# Community\nThank you for considering contributing to the circom \u0026 snarkjs framework!\n\nAs the `circom` and `snarkjs` community grows new tools, circuits, or projects have appeared. Here we link some of them:\n\nCIRCUITS\n\n+ [0xPARC circom ECDSA circuit](https://github.com/0xPARC/circom-ecdsa)\n\nTOOLS\n\n+ [zkREPL an online playground for zk circuits](https://zkrepl.dev)\n\n+ [Shield: a development framework for circom developers](https://xord.notion.site/SHIELD-5306223ca4f745d19f54b9a5f4004cd6)\n\n+ [Circomspect: a static analyzer for detecting common vulnerabilities in circom circuits that extends the checks performed by the circom flag --inspect](https://github.com/trailofbits/circomspect)\n\n+ [CIVER: a static analyzer for specifying and verifying circom circuits (including weak-safety checks)](https://github.com/costa-group/circom_civer)\n\n+ [Ecne: a static analyzer verifying weak and strong safety for circom circuits](https://github.com/franklynwang/EcneProject)\n\n+ [PICUS: a static analyzer for verifying weak and strong safety for circom circuits](https://github.com/Veridise/Picus)\n\n+ [Hardhat-zkit: the ultimate typescript environment for circom development](https://github.com/dl-solarity/hardhat-zkit)\n+ \n+ [Circomkit: a testing \u0026 development environment for circom](https://github.com/erhant/circomkit)\n\nMore information about the notions of weak and strong safety in circom circuits [here](https://ieeexplore.ieee.org/document/10002421).\n\n[ico-website]: https://img.shields.io/website?up_color=blue\u0026up_message=circom\u0026url=https%3A%2F%2Fiden3.io%2Fcircom\n[ico-telegram]: https://img.shields.io/badge/@iden3-2CA5E0.svg?style=flat-square\u0026logo=telegram\u0026label=Telegram\n\n[link-website]: https://iden3.io/circom\n[link-telegram]: https://t.me/iden3io\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiden3%2Fcircom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiden3%2Fcircom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiden3%2Fcircom/lists"}