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 using
arkworks
’ algebra infrastructure:
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.
Index of useful repositories
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 - implementation of the Groth16 SNARK
- marlin - universal setup SNARK for r1cs
- gm17
- gemini - an elastic proof system for streaming inputs
- ripp - inner pairing product argument systems
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},
}