arkworks is a Rust ecosystem for zkSNARK programming. Libraries in the arkworks ecosystem provide efficient implementations of all components required to implement zkSNARK applications, from generic finite fields to R1CS constraints for common functionalities.
Below are some resources for getting started working with arkworks crates:
- Talk at Real World Crypto providing an overview of the
arkworksecosystem. - Tutorial for R1CS programming using the
ark-relations,ark-r1cs-std, andark-crypto-primitivescrates. - Quick introduction to using
arkworks' algebra infrastructure:
We have a Discord community where folks can ask questions and learn about zkSNARK programming. We also have a Twitter where we (infrequently) post updates.
- snark - defines interfaces for a SNARK, for your application to generically use them
- relations - defines interfaces for relations, e.g. r1cs, AIR
Fully packaged SNARK crates
- groth16
- marlin - universal setup SNARK for r1cs
- gm17
- gemini - an elastic proof system for streaming inputs
- ripp -inner pairing product argument system
If you use arkworks libraries in your research projects, please cite them using the following template:
@software{arkworks,
author = {arkworks contributors},
title = {\texttt{arkworks} zkSNARK ecosystem},
url = {https://arkworks.rs},
year = {2022},
}