UNPKG

@waku/rln

Version:

RLN (Rate Limiting Nullifier) implementation for Waku

32 lines (29 loc) 1 kB
import { generateSeededExtendedMembershipKey } from '../../../node_modules/@waku/zerokit-rln-wasm/rln_wasm.js'; import { DEFAULT_RATE_LIMIT } from './contract/constants.js'; import { IdentityCredential } from './identity.js'; class Zerokit { zkRLN; witnessCalculator; _rateLimit; constructor(zkRLN, witnessCalculator, _rateLimit = DEFAULT_RATE_LIMIT) { this.zkRLN = zkRLN; this.witnessCalculator = witnessCalculator; this._rateLimit = _rateLimit; } get getZkRLN() { return this.zkRLN; } get getWitnessCalculator() { return this.witnessCalculator; } get rateLimit() { return this._rateLimit; } generateSeededIdentityCredential(seed) { const stringEncoder = new TextEncoder(); const seedBytes = stringEncoder.encode(seed); const memKeys = generateSeededExtendedMembershipKey(this.zkRLN, seedBytes); return IdentityCredential.fromBytes(memKeys); } } export { Zerokit };