2025-11-06 17:00:49 +00:00
<!DOCTYPE html> < html class = "default" lang = "en" data-base = "../" > < head > < meta charset = "utf-8" / > < meta http-equiv = "x-ua-compatible" content = "IE=edge" / > < title > @waku/rln | Documentation< / title > < meta name = "description" content = "Documentation for Documentation" / > < meta name = "viewport" content = "width=device-width, initial-scale=1" / > < link rel = "stylesheet" href = "../assets/style.css" / > < link rel = "stylesheet" href = "../assets/highlight.css" / > < script defer src = "../assets/main.js" > < / script > < script async src = "../assets/icons.js" id = "tsd-icons-script" > < / script > < script async src = "../assets/search.js" id = "tsd-search-script" > < / script > < script async src = "../assets/navigation.js" id = "tsd-nav-script" > < / script > < script async src = "../assets/hierarchy.js" id = "tsd-hierarchy-script" > < / script > < / head > < body > < script > document . documentElement . dataset . theme = localStorage . getItem ( "tsd-theme" ) || "os" ; document . body . style . display = "none" ; setTimeout ( ( ) => window . app ? app . showPage ( ) : document . body . style . removeProperty ( "display" ) , 500 ) < / script > < header class = "tsd-page-toolbar" > < div class = "tsd-toolbar-contents container" > < a href = "../index.html" class = "title" > Documentation< / a > < div id = "tsd-toolbar-links" > < / div > < button id = "tsd-search-trigger" class = "tsd-widget" aria-label = "Search" > < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" aria-hidden = "true" > < use href = "../assets/icons.svg#icon-search" > < / use > < / svg > < / button > < dialog id = "tsd-search" aria-label = "Search" > < input role = "combobox" id = "tsd-search-input" aria-controls = "tsd-search-results" aria-autocomplete = "list" aria-expanded = "true" autocapitalize = "off" autocomplete = "off" placeholder = "Search the docs" maxLength = "100" / > < ul role = "listbox" id = "tsd-search-results" > < / ul > < div id = "tsd-search-status" aria-live = "polite" aria-atomic = "true" > < div > Preparing search index...< / div > < / div > < / dialog > < a href = "#" class = "tsd-widget menu" id = "tsd-toolbar-menu-trigger" data-toggle = "menu" aria-label = "Menu" > < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" aria-hidden = "true" > < use href = "../assets/icons.svg#icon-menu" > < / use > < / svg > < / a > < / div > < / header > < div class = "container container-main" > < div class = "col-content" > < div class = "tsd-page-title" > < ul class = "tsd-breadcrumb" aria-label = "Breadcrumb" > < li > < a href = "" aria-current = "page" > @waku/rln< / a > < / li > < / ul > < h1 > Module @waku/rln< / h1 > < / div > < section class = "tsd-panel tsd-typography" > < h1 id = "wakurln" class = "tsd-anchor-link" > @waku/rln< a href = "#wakurln" aria-label = "Permalink" class = "tsd-anchor-icon" > < svg viewBox = "0 0 24 24" aria-hidden = "true" > < use href = "../assets/icons.svg#icon-anchor" > < / use > < / svg > < / a > < / h1 > < p > Rate Limiting Nullifier (RLN) implementation for Waku.< / p >
< h2 id = "description" class = "tsd-anchor-link" > Description< a href = "#description" aria-label = "Permalink" class = "tsd-anchor-icon" > < svg viewBox = "0 0 24 24" aria-hidden = "true" > < use href = "../assets/icons.svg#icon-anchor" > < / use > < / svg > < / a > < / h2 > < p > This package provides RLN functionality for the Waku protocol, enabling rate-limiting capabilities while preserving privacy.< / p >
< h2 id = "installation" class = "tsd-anchor-link" > Installation< a href = "#installation" aria-label = "Permalink" class = "tsd-anchor-icon" > < svg viewBox = "0 0 24 24" aria-hidden = "true" > < use href = "../assets/icons.svg#icon-anchor" > < / use > < / svg > < / a > < / h2 > < pre > < code class = "bash" > < span class = "hl-0" > npm< / span > < span class = "hl-1" > < / span > < span class = "hl-2" > install< / span > < span class = "hl-1" > < / span > < span class = "hl-2" > @waku/rln< / span >
< / code > < button type = "button" > Copy< / button > < / pre >
2025-12-08 06:43:53 +00:00
< h2 id = "smart-contract-type-generation" class = "tsd-anchor-link" > Smart Contract Type Generation< a href = "#smart-contract-type-generation" aria-label = "Permalink" class = "tsd-anchor-icon" > < svg viewBox = "0 0 24 24" aria-hidden = "true" > < use href = "../assets/icons.svg#icon-anchor" > < / use > < / svg > < / a > < / h2 > < p > We use < code > wagmi< / code > to generate TypeScript bindings for interacting with the RLN smart contracts.< / p >
< p > When changes are pushed to the < code > waku-rlnv2-contract< / code > repository, run the following script to fetch and build the latest contracts and generate the TypeScript bindings:< / p >
< pre > < code > < span class = "hl-5" > npm< / span > < span class = "hl-1" > < / span > < span class = "hl-5" > run< / span > < span class = "hl-1" > < / span > < span class = "hl-10" > setup< / span > < span class = "hl-1" > :< / span > < span class = "hl-5" > contract< / span > < span class = "hl-1" > -< / span > < span class = "hl-5" > abi< / span >
< / code > < button > Copy< / button > < / pre >
< p > Note that we commit/bundle the generated typings, so it's not necessary to run this script unless the contracts are updated.< / p >
2025-11-06 17:00:49 +00:00
< h2 id = "usage" class = "tsd-anchor-link" > Usage< a href = "#usage" aria-label = "Permalink" class = "tsd-anchor-icon" > < svg viewBox = "0 0 24 24" aria-hidden = "true" > < use href = "../assets/icons.svg#icon-anchor" > < / use > < / svg > < / a > < / h2 > < pre > < code class = "typescript" > < span class = "hl-8" > import< / span > < span class = "hl-1" > { < / span > < span class = "hl-5" > RLN< / span > < span class = "hl-1" > } < / span > < span class = "hl-8" > from< / span > < span class = "hl-1" > < / span > < span class = "hl-2" > ' @waku/rln' < / span > < span class = "hl-1" > ;< / span > < br / > < br / > < span class = "hl-3" > // Usage examples coming soon< / span >
< / code > < button type = "button" > Copy< / button > < / pre >
< h2 id = "license" class = "tsd-anchor-link" > License< a href = "#license" aria-label = "Permalink" class = "tsd-anchor-icon" > < svg viewBox = "0 0 24 24" aria-hidden = "true" > < use href = "../assets/icons.svg#icon-anchor" > < / use > < / svg > < / a > < / h2 > < p > MIT OR Apache-2.0< / p >
2025-12-08 06:43:53 +00:00
< / section > < / div > < div class = "col-sidebar" > < div class = "page-menu" > < div class = "tsd-navigation settings" > < details class = "tsd-accordion" > < summary class = "tsd-accordion-summary" > < svg width = "20" height = "20" viewBox = "0 0 24 24" fill = "none" aria-hidden = "true" > < use href = "../assets/icons.svg#icon-chevronDown" > < / use > < / svg > < h3 > Settings< / h3 > < / summary > < div class = "tsd-accordion-details" > < div class = "tsd-filter-visibility" > < span class = "settings-label" > Member Visibility< / span > < ul id = "tsd-filter-options" > < li class = "tsd-filter-item" > < label class = "tsd-filter-input" > < input type = "checkbox" id = "tsd-filter-protected" name = "protected" / > < svg width = "32" height = "32" viewBox = "0 0 32 32" aria-hidden = "true" > < rect class = "tsd-checkbox-background" width = "30" height = "30" x = "1" y = "1" rx = "6" fill = "none" > < / rect > < path class = "tsd-checkbox-checkmark" d = "M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke = "none" stroke-width = "3.5" stroke-linejoin = "round" fill = "none" > < / path > < / svg > < span > Protected< / span > < / label > < / li > < li class = "tsd-filter-item" > < label class = "tsd-filter-input" > < input type = "checkbox" id = "tsd-filter-inherited" name = "inherited" checked / > < svg width = "32" height = "32" viewBox = "0 0 32 32" aria-hidden = "true" > < rect class = "tsd-checkbox-background" width = "30" height = "30" x = "1" y = "1" rx = "6" fill = "none" > < / rect > < path class = "tsd-checkbox-checkmark" d = "M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke = "none" stroke-width = "3.5" stroke-linejoin = "round" fill = "none" > < / path > < / svg > < span > Inherited< / span > < / label > < / li > < / ul > < / div > < div class = "tsd-theme-toggle" > < label class = "settings-label" for = "tsd-theme" > Theme< / label > < select id = "tsd-theme" > < option value = "os" > OS< / option > < option value = "light" > Light< / option > < option value = "dark" > Dark< / option > < / select > < / div > < / div > < / details > < / div > < details open class = "tsd-accordion tsd-page-navigation" > < summary class = "tsd-accordion-summary" > < svg width = "20" height = "20" viewBox = "0 0 24 24" fill = "none" aria-hidden = "true" > < use href = "../assets/icons.svg#icon-chevronDown" > < / use > < / svg > < h3 > On This Page< / h3 > < / summary > < div class = "tsd-accordion-details" > < a href = "#wakurln" > < span > @waku/rln< / span > < / a > < ul > < li > < a href = "#description" > < span > Description< / span > < / a > < / li > < li > < a href = "#installation" > < span > Installation< / span > < / a > < / li > < li > < a href = "#smart-contract-type-generation" > < span > Smart < wbr / > Contract < wbr / > Type < wbr / > Generation< / span > < / a > < / li > < li > < a href = "#usage" > < span > Usage< / span > < / a > < / li > < li > < a href = "#license" > < span > License< / span > < / a > < / li > < / ul > < / div > < / details > < / div > < div class = "site-menu" > < nav class = "tsd-navigation" > < a href = "../modules.html" > Documentation< / a > < ul class = "tsd-small-nested-navigation" id = "tsd-nav-container" > < li > Loading...< / li > < / ul > < / nav > < / div > < / div > < / div > < footer > < p class = "tsd-generator" > Generated using < a href = "https://typedoc.org/" target = "_blank" > TypeDoc< / a > < / p > < / footer > < div class = "overlay" > < / div > < / body > < / html >