# 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`

, and`ark-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},
}
```