824296e695
* refactor(rln): replace merkle tree implementation refactor(rln): before switch refactor(rln): replace merkle tree implementation fix(rln): cargo fmt, cargo clippy cargo fmt * chore(rln): add comments * chore(rln): cargo fmt; cargo clippy * refactor(rln): improve Merkle tree crate - Integrate previous Full storage MT with Optimal (storage) MT implementation - Align the two implementation to same API/traits implementations - Align implementations as much as possible to same language and variable names/meaning - Comment code - Add descriptions to each module's crate - address reviewer's comments * refactor(rln): fmt, clippy, remove pub from next index, update output type for some proc |
||
---|---|---|
.. | ||
resources | ||
src | ||
vendor | ||
Cargo.toml | ||
README.md |
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.