Skip to content

reilabs/ProveKit

 
 

Repository files navigation

ProveKit

Zero-knowledge proof toolkit targeting mobile devices.

Demo instructions

First make sure you have the exact correct version of Noir installed so the artifacts can be read:

noirup -C 03b58fa2

Compile the Noir circuit:

cd noir-examples/poseidon-rounds
nargo compile

Generate the Noir Proof Scheme:

cargo run --release --bin noir-r1cs prepare ./noir-examples/poseidon-rounds/target/basic.json -o ./noir-proof-scheme.nps

(Currently this doesn't write an output file)

Generate the Noir Proof using the input Toml:

cargo run --release --bin noir-r1cs prove ./noir-proof-scheme.nps ./noir-examples/poseidon-rounds/Prover.toml -o ./noir-proof.np

Verify the Noir Proof:

cargo run --release --bin noir-r1cs verify ./noir-proof-scheme.nps ./noir-proof.np

Generate inputs for Gnark circuit:

cargo run --release --bin noir-r1cs generate-gnark-inputs ./noir-proof-scheme.nps ./noir-proof.np

Recursively verify in a Gnark proof (reads the proof from ../ProveKit/prover/proof):

cd ..
git clone https://github.com/reilabs/gnark-whir
cd gnark-whir
go run .

Benchmark against Barretenberg:

cd noir-examples/poseidon-rounds
cargo run --release --bin noir-r1cs prepare ./target/basic.json -o ./scheme.nps
hyperfine 'nargo execute && bb prove -b ./target/basic.json -w ./target/basic.gz -o ./target' '../../target/release/noir-r1cs prove ./scheme.nps ./Prover.toml'

Profile

samply record -r 10000 -- ../../target/release/noir-r1cs prove ./scheme.nps ./Prover.toml

Components

Dependencies

This project depends on the following libraries, which are developed in lockstep:

About

Client side zero-knowledge proving.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 75.8%
  • Python 9.2%
  • Assembly 6.8%
  • Jupyter Notebook 5.6%
  • Noir 2.3%
  • Shell 0.3%