@waku/rln
Version:
RLN (Rate Limiting Nullifier) implementation for Waku
32 lines (29 loc) • 1 kB
JavaScript
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 };