A zero-knowledge gadget for spam prevention in anonymous environments. In an application where users are anonymous, nothing stops one user from sending unlimited messages, and nobody can be removed because nobody can be identified. RLN lets a member prove, in zero knowledge, that they belong to a registered group and are within a rate limit; if they exceed it, the extra proof reveals enough of their secret (through Shamir's Secret Sharing) for others to recover it and remove them, optionally taking a stake. It works in three phases: registration, interaction and withdrawal or slashing. It is described as part of Privacy & Scaling Explorations (PSE), a team supported by the Ethereum Foundation, and implementations are used as the spam-protection layer for messaging protocols .
LicensePermissive: zerokit is Apache-2.0; the RLN organisation's circuits and contracts carry licences per repository, and the V3 repository states none. https://github.com/Rate-Limiting-Nullifier; https://github.com/vacp2p/zerokit
Dev Status 🔬 Beta
OwnerPrivacy & Scaling Explorations (PSE), a team supported by the Ethereum Foundation; related implementation work (zerokit) is published by Vac, the research group behind Waku
Governing BodyPrivacy & Scaling Explorations (PSE) team, supported by the Ethereum Foundation; no formal governance body is described
Country Not stated by the project.
Start Year 2022
StackCircom, halo2 and Noir circuits (separate repositories in the RLN organisation); Poseidon hashing for identity commitments; Shamir's Secret Sharing; Solidity registry contract; Rust (zerokit), JavaScript (rlnjs) and CLI tooling
FundingSupported by the Ethereum Foundation through the PSE team
Funding - List
Ethereum Foundation
Last Investigated Oct 29, 2026
Topology view
This tool in the centre and the things it is directly related to. Each line names the kind of relationship.
OriginsSpam and sybil resistance for anonymous messaging and voting without revealing identity: replace identity-based moderation with a cryptographic rate limit enforced by the threat of exposure and slashing
Database N/A
Query Language N/A
Data FormatsIdentity commitments in a Merkle tree; zero-knowledge proofs with public outputs including a nullifier and a Shamir share; Solidity registry contract interface
Mobile SupportLibrary-level: Rust (zerokit) can be embedded in native and mobile applications; no application
Web SupportLibrary-level: JavaScript libraries (rlnjs) and WebAssembly builds
Native AppsLibrary-level only
TermsFree and open source; individual repositories carry their own licences
Funding - List
Ethereum Foundation
Funds Not stated by the project.
Based OnSemaphore-style anonymous group membership (V3 is built on Semaphore V4 features), Shamir's Secret Sharing and zero-knowledge proofs
PermissionsRegistry rules decide who may register; the rate limit decides how often each member may act
Authentication & IdentityMembers register an identity commitment (the Poseidon hash of a secret key) and prove membership in zero knowledge; no real-world identity is involved
Storage ModelA registry (an on-chain contract or application-managed tree) holds identity commitments; proofs are carried in the application's messages
InteroperabilityA gadget that applications and messaging protocols integrate; the documentation lists a smart-contract design, circuits in several proving systems and implementations in Rust, JavaScript and CLI form
Data PortabilityIdentities and proofs depend on the registry the application uses; they are not portable between applications by default
Governance & Decision MakingSpecification and implementations are developed in the open by the PSE team and contributors; no decision process is described
Protocol Maturity / StandardizationA formal specification exists in the RLN documentation, with version 3 in development; no standards-body involvement; many repositories inactive since 2023-2024
Identity StandardsNo W3C DID or Verifiable Credentials mapping
DID Methods Supported N/A
Key ManagementEach member holds a secret key; exceeding the rate limit exposes it by design, after which it can be used to slash the member's stake
Credential TypesAnonymous membership proofs with a rate-limit nullifier; not credentials issued by a third party
Verification MethodA verifier checks the zero-knowledge proof against the registry's Merkle root, checks the nullifier for reuse within the epoch, and can recover the secret if two messages share an epoch
Privacy FeaturesAnonymous membership and unlinkable messages within the limit; exceeding the limit deliberately reveals the member's secret
Authentication MethodsZero-knowledge proof of registered membership attached to each message
Revocation MechanismSlashing: anyone who recovers a spammer's secret can remove the member from the registry and, where a stake is used, claim it; withdrawal is voluntary exit
Agent Types SupportedIndividual anonymous users of applications that integrate it
Wallet/Client TypesLibraries (Rust, JavaScript) and CLI tooling; no wallet
Recovery Mechanisms Not stated by the project.
Compliance / Regulations Not stated by the project.
Credential Exchange ProtocolsNone: proofs are attached to the application's own messages
Trust FrameworkCryptographic proofs against a registry root, with economic slashing as deterrent; trust in the registry's admission rules
Cost ModelFree to use; registration may require a stake and on-chain registration fees depending on the deployment
Censorship ResistanceModerate: anyone can verify proofs, but registry control determines who may participate
Relationships
How this tool connects to other tools and organizations, from relationships reviewed by the OpenHaven data steward. They describe how projects connect, not how good they are.