circom-compat/README.md
README.mdRaw
1# <h1 align="center"> ark-circom </h1>
2
3Arkworks bindings to Circom's R1CS, for Groth16 Proof and Witness generation in Rust.
4
5
6
7## Documentation
8
9Clone the repository and run `cd ark-circom/ && cargo doc --open`
10
11## Add ark-circom to your repository
12
13```toml
14[dependencies]
15
16ark-circom = { git = "https://github.com/gakonst/ark-circom-rs" }
17```
18
19## Running the tests
20
21Tests require the following installed:
221. [`solc`](https://solidity.readthedocs.io/en/latest/installing-solidity.html). We also recommend using [solc-select](https://github.com/crytic/solc-select) for more flexibility.
232. [`ganache-cli`](https://github.com/trufflesuite/ganache-cli#installation)
24
25## Features
26
27- [x] Witness generation using Circom's WASM witness code
28- [x] ZKey parsing into Arkworks Proving Key over BN254
29- [x] Compatibility layer for Ethereum types, so that proofs can be used in Solidity verifiers
30- [x] Proof generations and verification using Arkworks
31- [ ] CLI for common operations
32
33## Acknowledgements
34
35This library would not have been possibly without the great work done in:
36- [`zkutil`](https://github.com/poma/zkutil/)
37- [`snarkjs`](https://github.com/iden3/snarkjs/)
38
39Special shoutout to [Kobi Gurkan](https://github.com/kobigurk/) for all the help in parsing SnarkJS' ZKey file format.