Skip to content

About

RLN circuits in Circom

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

Rate-Limiting Nullifier circuits in Circom

Fork of Rate-Limiting-Nullifier/circom-rln at v1.0.0.

Circuits at v1.0.0 were audited by Veridise, yAcademy fellows and PSE.

The other circuits were added in this fork and have not been externally audited.


What's RLN?

RLN is a zero-knowledge gadget that enables spam prevention in anonymous environments.

The core parts of RLN are:


To learn more on RLN and how it works - check out documentation.

Prerequisites

  • Node.js 18 (circom_tester does not support newer versions)
  • circom 2.1.5, installed with ./scripts/install-circom.sh (needs Rust)
  • Run npm ci to install the Node.js dependencies (circomlib, snarkjs, circom_tester)

Build

npm run build                          # every main circuit
./scripts/build-circuits.sh rln_single # a specific circuit

Compiles the circuit, runs the Groth16 setup and writes the artifacts to zkeyFiles/<circuit>/.

Test

npm test

Runs the ts-mocha suite in test/: witness fixtures for every RLN circuit, official Poseidon2 reference vectors for every arity, and both withdraw circuits.

Static analysis

Runs circomspect on every circuit.

./scripts/circomspect.sh

Runs Picus on every main circuit (needs Docker).

./scripts/picus.sh

Runs zkFuzz on every main circuit.

./scripts/zkfuzz.sh

About

RLN circuits in Circom

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages