Skip to content

worldfnd/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

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: