arkworks
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.
Getting started
Below are some resources for getting started working with arkworks
crates:
- Talk at Real World Crypto providing an overview of the
arkworks
ecosystem. - Tutorial for R1CS programming using the
ark-relations
,ark-r1cs-std
, andark-crypto-primitives
crates. - Quick introduction to programming with finite fields, elliptic curves, and pairings in
arkworks
.
Getting Involved
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.
Repo index
Working with SNARKs
- snark - defines interfaces for a SNARK, for your application to generically use them
- relations - defines interfaces for relations, e.g. r1cs, AIR
SNARK proving systems
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
Circuit building
Algebra
Citation
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},
}