Zero-knowledge proof toolkit targeting mobile devices.
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
This project depends on the following libraries, which are developed in lockstep: