HorizenLabs / marlin

A Rust library for the Marlin preprocessing zkSNARK
Apache License 2.0
12 stars 0 forks source link

Coboundary Marlin

marlin is a Rust library that implements Coboundary Marlin, an optimization of the Marlin preprocessing zk-SNARK for rank-one constraint systems (R1CS). The library is based on a fork from arkworks, using the modifications as described in HGB.

On the argument system

Coboundary Marlin is a zk-SNARK for R1CS as used by ginger-lib. It is built on top of any homomorphic polynomial commitment scheme, proving the satisfiability of a given constraint system (subject to some public inputs) by means of an algebraic oracle protocol. The main differences to Marlin are as follows:

See HGB for details.

Directory structure

The high-level structure of the repository is as follows:

Release Note

The current release implements Coboundary Marlin using Marlin's original matrix arithmetization.

Build instructions

The library compiles on the 1.51.0 stable toolchain of the Rust compiler.

git clone https://github.com/HorizenLabs/marlin.git
cd marlin
cargo build --release

Run tests using

cargo test --all-features 

More detailed information can be found in our build guide.