Skip to content
@arkworks-rs

arkworks

An ecosystem for developing and programming with zkSNARKs

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:

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},
}

Pinned Loading

  1. algebra Public

    Libraries for finite field, elliptic curve, and polynomial arithmetic

    Rust 706 285

  2. groth16 Public

    A Rust implementation of the Groth16 zkSNARK

    Rust 275 117

  3. r1cs-std Public

    R1CS constraints for bits, fields, and elliptic curves

    Rust 152 73

  4. marlin Public

    A Rust library for the Marlin preprocessing zkSNARK

    Rust 321 90

  5. crypto-primitives Public

    Interfaces and implementations of cryptographic primitives, along with R1CS constraints for them

    Rust 203 101

  6. sumcheck Public

    linear-time sumcheck protocol for multilinear polynomials and related addends

    Rust 63 31

Repositories

Showing 10 of 28 repositories
  • spongefish Public

    Fiat-Shamir for the masses.

    Rust 58 BSD-3-Clause 20 2 0 Updated Mar 24, 2025
  • r1cs-std Public

    R1CS constraints for bits, fields, and elliptic curves

    Rust 152 Apache-2.0 73 21 13 Updated Mar 23, 2025
  • algebra Public

    Libraries for finite field, elliptic curve, and polynomial arithmetic

    Rust 706 Apache-2.0 285 153 (11 issues need help) 32 Updated Mar 23, 2025
  • groth16 Public

    A Rust implementation of the Groth16 zkSNARK

    Rust 275 Apache-2.0 117 9 5 Updated Mar 20, 2025
  • crypto-primitives Public

    Interfaces and implementations of cryptographic primitives, along with R1CS constraints for them

    Rust 203 Apache-2.0 99 37 9 Updated Mar 20, 2025
  • snark Public

    Interfaces for Relations and SNARKs for these relations

    Rust 827 Apache-2.0 227 29 9 Updated Mar 20, 2025
  • circom-compat Public

    Arkworks bindings to Circom's R1CS, for Groth16 Proof and Witness generation in Rust.

    Rust 254 Apache-2.0 122 18 4 Updated Feb 25, 2025
  • std Public

    A standard library wrapper for use in the `arkworks` ecosystem

    Rust 38 Apache-2.0 38 9 4 Updated Feb 7, 2025
  • spartan Public Forked from microsoft/Spartan

    Spartan on Arkworks

    Rust 40 MIT 135 0 2 Updated Dec 12, 2024
  • poly-commit Public

    A Rust library for polynomial commitments

    Rust 373 Apache-2.0 139 17 9 Updated Dec 2, 2024