coCircom and coNoir are tools for building coSNARKs, a new technology that enables multiple distrusting parties to collaboratively compute a zero-knowledge proof (ZKP). They leverage the existing domain-specific languages circom and Noir to define arithmetic circuits. With coCircom, all existing circom circuits can be promoted to coSNARKs without any modification to the original circuit.
Additionally, coCircom is fully compatible with the Groth16 and Plonk backends of snarkjs, the native proving systems for circom. Proofs generated with coCircom can be verified using snarkjs, and vice versa. The same applies to coNoir, generated proofs can be verified with Barretenberg, and vice versa.
The project is built with pure Rust and consists of multiple libraries:
co-circom-types: A library for the shared types and code of co-plonk and co-groth16.
coNoir:
The following libraries are agnostic to coCircom/coNoir and will be used in the future for other coSNARKs:
The co-circom and co-noir binaries are CLI tools that use these libraries to build a coSNARK.
Both libraries also expose all functionality used by the binaries, so that you can integrate them into you projects.
Checkout the coCircom examples and coNoir examples to see more.
cargo install --git https://github.com/TaceoLabs/co-snarks --branch main co-circom
cargo install --git https://github.com/TaceoLabs/co-snarks --branch main co-noir
Download the binary for your operating system.
Extract the binary from the archive
tar xf co-circom-YOUR_ARCHITECTURE.tar.gz
chmod +x co-circom
You can find the documentation of coCircom here.
If you would like to contribute to the project, please refer to the contribution page.
This project is licensed under either the MIT License or the Apache, at your choice.
SPDX-License-Identifier: Apache-2.0 OR MIT
Select sub-libraries within this project have different licenses, reflecting their dependencies on circom.
SPDX-License-Identifier: GPL-3.0-only.SPDX-License-Identifier: GPL-3.0-only.This software is experimental and un-audited, provided on an "as is" and "as available" basis. We do not provide any warranties, express or implied, including but not limited to warranties of merchantability or fitness for a particular purpose. We will not be liable for any losses, damages, or issues arising from the use of this software, whether direct or indirect.
Users are encouraged to exercise caution and conduct their own independent assessments and testing. By using this software, you acknowledge and accept the risks associated with its experimental nature and agree that the developers and contributors are not responsible for any consequences resulting from its use.
$ claude mcp add co-snarks \
-- python -m otcore.mcp_server <graph>