UNPKG

@waku/rln

Version:

RLN (Rate Limiting Nullifier) implementation for Waku

49 lines (48 loc) 2.32 kB
import { ethers } from "ethers"; import { RLNBaseContract } from "./contract/rln_base_contract.js"; import { Keystore } from "./keystore/index.js"; import type { DecryptedCredentials, EncryptedCredentials } from "./keystore/index.js"; import { KeystoreEntity, Password } from "./keystore/types.js"; import { RegisterMembershipOptions, StartRLNOptions } from "./types.js"; import { Zerokit } from "./zerokit.js"; /** * Manages credentials for RLN * This is a lightweight implementation of the RLN contract that doesn't require Zerokit * It is used to register membership and generate identity credentials */ export declare class RLNCredentialsManager { protected started: boolean; protected starting: boolean; contract: undefined | RLNBaseContract; signer: undefined | ethers.Signer; protected keystore: Keystore; credentials: undefined | DecryptedCredentials; zerokit: undefined | Zerokit; constructor(zerokit?: Zerokit); get provider(): undefined | ethers.providers.Provider; start(options?: StartRLNOptions): Promise<void>; registerMembership(options: RegisterMembershipOptions): Promise<undefined | DecryptedCredentials>; /** * Changes credentials in use by relying on provided Keystore earlier in rln.start * @param id: string, hash of credentials to select from Keystore * @param password: string or bytes to use to decrypt credentials from Keystore */ useCredentials(id: string, password: Password): Promise<void>; protected determineStartOptions(options: StartRLNOptions, credentials: KeystoreEntity | undefined): Promise<StartRLNOptions>; protected static decryptCredentialsIfNeeded(credentials?: EncryptedCredentials | DecryptedCredentials): Promise<{ credentials?: DecryptedCredentials; keystore?: Keystore; }>; protected verifyCredentialsAgainstContract(credentials: KeystoreEntity): Promise<void>; /** * Generates an identity credential from a seed string * This is a pure implementation that doesn't rely on Zerokit * @param seed A string seed to generate the identity from * @returns IdentityCredential */ private generateSeededIdentityCredential; /** * Helper: take 32-byte BE, reduce mod Q, return 32-byte BE */ private reduceIdCommitment; }