zerokit/rln
Richard Ramos 2455bea922
refactor(RLN): use iterators instead of loops (#33)
* refactor(RLN): use iterators instead of loops
* fix(rln): cargo fmt
* fix(rln): cargo clippy: avoid Vec object creation

Co-authored-by: s1fr0 <28568419+s1fr0@users.noreply.github.com>
2022-08-22 07:48:31 -04:00
..
resources refactor(rln): Update Merkle tree initialization method (#30) 2022-08-05 12:36:06 +02:00
src refactor(RLN): use iterators instead of loops (#33) 2022-08-22 07:48:31 -04:00
vendor chore(rln): Add git submodule 2022-05-24 12:08:42 +01:00
Cargo.toml refactor(rln): improve circuit loading performances and tests fix (#26) 2022-07-29 13:40:16 +08:00
README.md RLN: update README (#27) 2022-08-07 16:51:03 +02:00

README.md

Zerokit RLN Module

This module provides APIs to manage, compute and verify RLN zkSNARK proofs and RLN primitives.

Currently, this module comes with three pre-compiled RLN circuits having Merkle tree of height 15, 19 and 20, respectively.

Implemented tests can be executed by running within the module folder

cargo test --release

Compiling circuits

rln (https://github.com/privacy-scaling-explorations/rln) repo with Circuits is contained as a submodule.

# Update submodules
git submodule update --init --recursive

# Install rln dependencies
cd vendor/rln/ && npm install

# Build circuits
./scripts/build-circuits.sh rln

# Copy over assets
cp build/zkeyFiles/rln-final.zkey ../../resources/tree_height_15
cp build/zkeyFiles/rln.wasm ../../resources/tree_height_15

Note that the above code snippet will compile a RLN circuit with a Merkle tree of height equal 15 based on the default value set in rln/circuit/rln.circom.

To compile a RLN circuit with Merkle tree height N, it suffices to change rln/circuit/rln.circom to

pragma circom 2.0.0;

include "./rln-base.circom";

component main {public [x, epoch, rln_identifier ]} = RLN(N);

However, if N is too big, this might require a bigger Powers of Tau ceremony than the one hardcoded in ./scripts/build-circuits.sh, which is 2^14. In such case we refer to the official Circom documentation for instructions on how to run an appropriate Powers of Tau ceremony and Phase 2 in order to compile the desired circuit.