@waku/rln 0.1.6-b7e9b08.0 → 0.1.6-f7778a9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/bundle/_virtual/utils.js +2 -2
  2. package/bundle/_virtual/utils2.js +2 -2
  3. package/bundle/index.js +2 -1
  4. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/_sha2.js +1 -1
  5. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/hmac.js +1 -1
  6. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/pbkdf2.js +1 -1
  7. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/scrypt.js +1 -1
  8. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/sha256.js +1 -1
  9. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/sha512.js +1 -1
  10. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/utils.js +1 -1
  11. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/random.js +1 -1
  12. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/utils.js +2 -2
  13. package/bundle/node_modules/@ethersproject/keccak256/lib.esm/index.js +1 -1
  14. package/bundle/node_modules/{@ethersproject/keccak256/node_modules/js-sha3 → js-sha3}/src/sha3.js +2 -2
  15. package/bundle/packages/core/dist/lib/connection_manager/connection_manager.js +0 -3
  16. package/bundle/packages/core/dist/lib/connection_manager/keep_alive_manager.js +3 -3
  17. package/bundle/packages/core/dist/lib/filter/filter.js +0 -3
  18. package/bundle/packages/core/dist/lib/light_push/light_push.js +0 -3
  19. package/bundle/packages/core/dist/lib/message/version_0.js +1 -4
  20. package/bundle/packages/core/dist/lib/metadata/metadata.js +0 -3
  21. package/bundle/packages/core/dist/lib/store/store.js +3 -3
  22. package/bundle/packages/rln/dist/codec.js +3 -3
  23. package/bundle/packages/rln/dist/contract/constants.js +8 -1
  24. package/bundle/packages/rln/dist/contract/rln_base_contract.js +138 -75
  25. package/bundle/packages/rln/dist/contract/rln_contract.js +3 -3
  26. package/bundle/packages/rln/dist/credentials_manager.js +15 -10
  27. package/bundle/packages/rln/dist/keystore/keystore.js +4 -4
  28. package/bundle/packages/rln/dist/message.js +11 -0
  29. package/bundle/packages/rln/dist/rln.js +3 -3
  30. package/bundle/packages/rln/dist/utils/epoch.js +3 -3
  31. package/bundle/packages/utils/dist/common/sharding/index.js +4 -4
  32. package/dist/.tsbuildinfo +1 -1
  33. package/dist/contract/constants.d.ts +6 -0
  34. package/dist/contract/constants.js +6 -0
  35. package/dist/contract/constants.js.map +1 -1
  36. package/dist/contract/index.d.ts +1 -0
  37. package/dist/contract/index.js +1 -0
  38. package/dist/contract/index.js.map +1 -1
  39. package/dist/contract/rln_base_contract.d.ts +37 -22
  40. package/dist/contract/rln_base_contract.js +135 -72
  41. package/dist/contract/rln_base_contract.js.map +1 -1
  42. package/dist/contract/types.d.ts +5 -0
  43. package/dist/contract/types.js.map +1 -1
  44. package/dist/credentials_manager.js +12 -7
  45. package/dist/credentials_manager.js.map +1 -1
  46. package/dist/index.d.ts +2 -1
  47. package/dist/index.js +1 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/keystore/keystore.js.map +1 -1
  50. package/dist/keystore/types.d.ts +2 -2
  51. package/dist/message.d.ts +5 -4
  52. package/dist/message.js +2 -0
  53. package/dist/message.js.map +1 -1
  54. package/package.json +1 -1
  55. package/src/contract/constants.ts +9 -0
  56. package/src/contract/index.ts +1 -0
  57. package/src/contract/rln_base_contract.ts +181 -103
  58. package/src/contract/types.ts +5 -0
  59. package/src/credentials_manager.ts +20 -7
  60. package/src/index.ts +3 -1
  61. package/src/keystore/keystore.ts +4 -2
  62. package/src/keystore/types.ts +2 -2
  63. package/src/message.ts +7 -4
  64. package/bundle/packages/utils/node_modules/@waku/interfaces/dist/connection_manager.js +0 -19
  65. package/bundle/packages/utils/node_modules/@waku/interfaces/dist/health_indicator.js +0 -12
  66. package/bundle/packages/utils/node_modules/@waku/interfaces/dist/protocols.js +0 -92
  67. /package/bundle/packages/{utils/node_modules/@waku/interfaces → interfaces}/dist/constants.js +0 -0
  68. /package/bundle/{node_modules → packages/rln/node_modules}/uuid/dist/esm-browser/native.js +0 -0
  69. /package/bundle/{node_modules → packages/rln/node_modules}/uuid/dist/esm-browser/rng.js +0 -0
  70. /package/bundle/{node_modules → packages/rln/node_modules}/uuid/dist/esm-browser/stringify.js +0 -0
  71. /package/bundle/{node_modules → packages/rln/node_modules}/uuid/dist/esm-browser/v4.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"keystore.js","sourceRoot":"","sources":["../../src/keystore/keystore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keystore.js","sourceRoot":"","sources":["../../src/keystore/keystore.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ export type MembershipHash = string;
3
3
  export type Sha256Hash = string;
4
4
  export type Keccak256Hash = string;
5
5
  export type Password = string | Uint8Array;
6
- export type MembershipInfo = {
6
+ export type KeystoreMembershipInfo = {
7
7
  chainId: string;
8
8
  address: string;
9
9
  treeIndex: number;
@@ -11,7 +11,7 @@ export type MembershipInfo = {
11
11
  };
12
12
  export type KeystoreEntity = {
13
13
  identity: IdentityCredential;
14
- membership: MembershipInfo;
14
+ membership: KeystoreMembershipInfo;
15
15
  };
16
16
  export type DecryptedCredentials = KeystoreEntity;
17
17
  export type EncryptedCredentials = {
package/dist/message.d.ts CHANGED
@@ -1,11 +1,12 @@
1
- import type { IDecodedMessage, IMessage, IRateLimitProof } from "@waku/interfaces";
1
+ import type { IDecodedMessage, IMessage, IRateLimitProof, IRlnMessage } from "@waku/interfaces";
2
2
  import { RLNInstance } from "./rln.js";
3
3
  export declare function toRLNSignal(contentTopic: string, msg: IMessage): Uint8Array;
4
- export declare class RlnMessage<T extends IDecodedMessage> implements IDecodedMessage {
5
- rlnInstance: RLNInstance;
6
- msg: T;
4
+ export declare class RlnMessage<T extends IDecodedMessage> implements IRlnMessage {
5
+ private rlnInstance;
6
+ private msg;
7
7
  rateLimitProof: IRateLimitProof | undefined;
8
8
  pubsubTopic: string;
9
+ version: number;
9
10
  constructor(rlnInstance: RLNInstance, msg: T, rateLimitProof: IRateLimitProof | undefined);
10
11
  verify(roots: Uint8Array[]): boolean | undefined;
11
12
  verifyNoRoot(): boolean | undefined;
package/dist/message.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { message } from "@waku/core";
1
2
  import * as utils from "@waku/utils/bytes";
2
3
  import { epochBytesToInt } from "./utils/index.js";
3
4
  export function toRLNSignal(contentTopic, msg) {
@@ -9,6 +10,7 @@ export class RlnMessage {
9
10
  msg;
10
11
  rateLimitProof;
11
12
  pubsubTopic = "";
13
+ version = message.version_0.Version;
12
14
  constructor(rlnInstance, msg, rateLimitProof) {
13
15
  this.rlnInstance = rlnInstance;
14
16
  this.msg = msg;
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,UAAU,WAAW,CAAC,YAAoB,EAAE,GAAa;IAC7D,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAChE,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,OAAO,UAAU;IAIZ;IACA;IACA;IALF,WAAW,GAAG,EAAE,CAAC;IAExB,YACS,WAAwB,EACxB,GAAM,EACN,cAA2C;QAF3C,gBAAW,GAAX,WAAW,CAAa;QACxB,QAAG,GAAH,GAAG,CAAG;QACN,mBAAc,GAAd,cAAc,CAA6B;IACjD,CAAC;IAEG,MAAM,CAAC,KAAmB;QAC/B,OAAO,IAAI,CAAC,cAAc;YACxB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CACtC,IAAI,CAAC,cAAc,EACnB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,EAC5C,KAAK,CACN,CAAC,2EAA2E;YAC/E,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,cAAc;YACxB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CACvC,IAAI,CAAC,cAAc,EACnB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAC7C,CAAC,2EAA2E;YAC/E,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;IAC/B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,IAAW,KAAK;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAOrC,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,UAAU,WAAW,CAAC,YAAoB,EAAE,GAAa;IAC7D,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAChE,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,OAAO,UAAU;IAKX;IACA;IACD;IANF,WAAW,GAAG,EAAE,CAAC;IACjB,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;IAE3C,YACU,WAAwB,EACxB,GAAM,EACP,cAA2C;QAF1C,gBAAW,GAAX,WAAW,CAAa;QACxB,QAAG,GAAH,GAAG,CAAG;QACP,mBAAc,GAAd,cAAc,CAA6B;IACjD,CAAC;IAEG,MAAM,CAAC,KAAmB;QAC/B,OAAO,IAAI,CAAC,cAAc;YACxB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CACtC,IAAI,CAAC,cAAc,EACnB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,EAC5C,KAAK,CACN,CAAC,2EAA2E;YAC/E,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,cAAc;YACxB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CACvC,IAAI,CAAC,cAAc,EACnB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAC7C,CAAC,2EAA2E;YAC/E,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;IAC/B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,IAAW,KAAK;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF"}
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@waku/rln","version":"0.1.6-b7e9b08.0","description":"RLN (Rate Limiting Nullifier) implementation for Waku","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"type":"module","homepage":"https://github.com/waku-org/js-waku/tree/master/packages/rln#readme","repository":{"type":"git","url":"https://github.com/waku-org/js-waku.git"},"bugs":{"url":"https://github.com/waku-org/js-waku/issues"},"license":"MIT OR Apache-2.0","keywords":["waku","rln","rate-limiting","privacy","web3"],"scripts":{"build":"run-s build:**","build:copy":"mkdir -p dist/resources && cp -r src/resources/* dist/resources/","build:esm":"tsc","build:bundle":"rollup --config rollup.config.js","fix":"run-s fix:*","fix:lint":"eslint src *.js --fix","check":"run-s check:*","check:tsc":"tsc -p tsconfig.dev.json","check:lint":"eslint \"src/!(resources)/**/*.{ts,js}\" *.js","check:spelling":"cspell \"{README.md,src/**/*.ts}\"","test":"NODE_ENV=test run-s test:*","test:browser":"karma start karma.conf.cjs","watch:build":"tsc -p tsconfig.json -w","watch:test":"mocha --watch","prepublish":"npm run build","reset-hard":"git clean -dfx -e .idea && git reset --hard && npm i && npm run build"},"engines":{"node":">=20"},"devDependencies":{"@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-json":"^6.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/chai":"^5.0.1","@types/chai-spies":"^1.0.6","@types/deep-equal-in-any-order":"^1.0.4","@types/lodash":"^4.17.15","@types/sinon":"^17.0.3","@waku/build-utils":"^1.0.0","@waku/message-encryption":"0.0.34-b7e9b08.0","deep-equal-in-any-order":"^2.0.6","fast-check":"^3.23.2","rollup-plugin-copy":"^3.5.0"},"files":["dist","bundle","src/**/*.ts","!**/*.spec.*","!**/*.json","CHANGELOG.md","LICENSE","README.md"],"dependencies":{"@chainsafe/bls-keystore":"3.0.0","@waku/core":"0.0.36-b7e9b08.0","@waku/utils":"0.0.24-b7e9b08.0","@noble/hashes":"^1.2.0","@waku/zerokit-rln-wasm":"^0.0.13","ethereum-cryptography":"^3.1.0","ethers":"^5.7.2","lodash":"^4.17.21","uuid":"^11.1.0","chai":"^5.1.2","chai-as-promised":"^8.0.1","chai-spies":"^1.1.0","chai-subset":"^1.6.0","sinon":"^19.0.2"}}
1
+ {"name":"@waku/rln","version":"0.1.6-f7778a9.0","description":"RLN (Rate Limiting Nullifier) implementation for Waku","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"type":"module","homepage":"https://github.com/waku-org/js-waku/tree/master/packages/rln#readme","repository":{"type":"git","url":"https://github.com/waku-org/js-waku.git"},"bugs":{"url":"https://github.com/waku-org/js-waku/issues"},"license":"MIT OR Apache-2.0","keywords":["waku","rln","rate-limiting","privacy","web3"],"scripts":{"build":"run-s build:**","build:copy":"mkdir -p dist/resources && cp -r src/resources/* dist/resources/","build:esm":"tsc","build:bundle":"rollup --config rollup.config.js","fix":"run-s fix:*","fix:lint":"eslint src *.js --fix","check":"run-s check:*","check:tsc":"tsc -p tsconfig.dev.json","check:lint":"eslint \"src/!(resources)/**/*.{ts,js}\" *.js","check:spelling":"cspell \"{README.md,src/**/*.ts}\"","test":"NODE_ENV=test run-s test:*","test:browser":"karma start karma.conf.cjs","watch:build":"tsc -p tsconfig.json -w","watch:test":"mocha --watch","prepublish":"npm run build","reset-hard":"git clean -dfx -e .idea && git reset --hard && npm i && npm run build"},"engines":{"node":">=20"},"devDependencies":{"@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-json":"^6.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/chai":"^5.0.1","@types/chai-spies":"^1.0.6","@waku/interfaces":"0.0.31-f7778a9.0","@types/deep-equal-in-any-order":"^1.0.4","@types/lodash":"^4.17.15","@types/sinon":"^17.0.3","@waku/build-utils":"^1.0.0","@waku/message-encryption":"0.0.34-f7778a9.0","deep-equal-in-any-order":"^2.0.6","fast-check":"^3.23.2","rollup-plugin-copy":"^3.5.0"},"files":["dist","bundle","src/**/*.ts","!**/*.spec.*","!**/*.json","CHANGELOG.md","LICENSE","README.md"],"dependencies":{"@chainsafe/bls-keystore":"3.0.0","@waku/core":"0.0.36-f7778a9.0","@waku/utils":"0.0.24-f7778a9.0","@noble/hashes":"^1.2.0","@waku/zerokit-rln-wasm":"^0.0.13","ethereum-cryptography":"^3.1.0","ethers":"^5.7.2","lodash":"^4.17.21","uuid":"^11.0.5","chai":"^5.1.2","chai-as-promised":"^8.0.1","chai-spies":"^1.1.0","chai-subset":"^1.6.0","sinon":"^19.0.2"}}
@@ -25,4 +25,13 @@ export const RATE_LIMIT_PARAMS = {
25
25
  EPOCH_LENGTH: 600 // Epoch length in seconds (10 minutes)
26
26
  } as const;
27
27
 
28
+ /**
29
+ * Default Q value for the RLN contract
30
+ * This is the upper bound for the ID commitment
31
+ * @see https://github.com/waku-org/specs/blob/master/standards/core/rln-contract.md#implementation-suggestions
32
+ */
33
+ export const DEFAULT_Q = BigInt(
34
+ "21888242871839275222246405745257275088548364400416034343698204186575808495617"
35
+ );
36
+
28
37
  export const DEFAULT_RATE_LIMIT = RATE_LIMIT_PARAMS.MAX_RATE;
@@ -1,2 +1,3 @@
1
1
  export { RLNContract } from "./rln_contract.js";
2
2
  export * from "./constants.js";
3
+ export * from "./types.js";
@@ -5,7 +5,11 @@ import { IdentityCredential } from "../identity.js";
5
5
  import { DecryptedCredentials } from "../keystore/types.js";
6
6
 
7
7
  import { RLN_ABI } from "./abi.js";
8
- import { DEFAULT_RATE_LIMIT, RATE_LIMIT_PARAMS } from "./constants.js";
8
+ import {
9
+ DEFAULT_Q,
10
+ DEFAULT_RATE_LIMIT,
11
+ RATE_LIMIT_PARAMS
12
+ } from "./constants.js";
9
13
  import {
10
14
  CustomQueryOptions,
11
15
  FetchMembersOptions,
@@ -22,6 +26,14 @@ export class RLNBaseContract {
22
26
  public contract: ethers.Contract;
23
27
  private deployBlock: undefined | number;
24
28
  private rateLimit: number;
29
+ private minRateLimit?: number;
30
+ private maxRateLimit?: number;
31
+
32
+ /**
33
+ * Default Q value for the RLN contract.
34
+ * @see https://github.com/waku-org/waku-rlnv2-contract/blob/b7e9a9b1bc69256a2a3076c1f099b50ce84e7eff/src/WakuRlnV2.sol#L25
35
+ */
36
+ public idCommitmentBigIntLimit = DEFAULT_Q;
25
37
 
26
38
  protected _members: Map<number, Member> = new Map();
27
39
  private _membersFilter: ethers.EventFilter;
@@ -29,19 +41,9 @@ export class RLNBaseContract {
29
41
  private _membersExpiredFilter: ethers.EventFilter;
30
42
 
31
43
  /**
32
- * Constructor for RLNBaseContract.
33
- * Allows injecting a mocked contract for testing purposes.
44
+ * Private constructor for RLNBaseContract. Use static create() instead.
34
45
  */
35
- public constructor(options: RLNContractInitOptions) {
36
- // Initialize members and subscriptions
37
- this.fetchMembers()
38
- .then(() => {
39
- this.subscribeToMembers();
40
- })
41
- .catch((error) => {
42
- log.error("Failed to initialize members", { error });
43
- });
44
-
46
+ protected constructor(options: RLNContractInitOptions) {
45
47
  const {
46
48
  address,
47
49
  signer,
@@ -49,15 +51,55 @@ export class RLNBaseContract {
49
51
  contract
50
52
  } = options;
51
53
 
52
- this.validateRateLimit(rateLimit);
54
+ log.info("Initializing RLNBaseContract", { address, rateLimit });
53
55
 
54
56
  this.contract = contract || new ethers.Contract(address, RLN_ABI, signer);
55
57
  this.rateLimit = rateLimit;
56
58
 
57
- // Initialize event filters
58
- this._membersFilter = this.contract.filters.MembershipRegistered();
59
- this._membershipErasedFilter = this.contract.filters.MembershipErased();
60
- this._membersExpiredFilter = this.contract.filters.MembershipExpired();
59
+ try {
60
+ log.info("Setting up event filters");
61
+ // Initialize event filters
62
+ this._membersFilter = this.contract.filters.MembershipRegistered();
63
+ this._membershipErasedFilter = this.contract.filters.MembershipErased();
64
+ this._membersExpiredFilter = this.contract.filters.MembershipExpired();
65
+ log.info("Event filters initialized successfully");
66
+ } catch (error) {
67
+ log.error("Failed to initialize event filters", { error });
68
+ throw new Error(
69
+ "Failed to initialize event filters: " + (error as Error).message
70
+ );
71
+ }
72
+
73
+ // Initialize members and subscriptions
74
+ this.fetchMembers()
75
+ .then(() => {
76
+ this.subscribeToMembers();
77
+ })
78
+ .catch((error) => {
79
+ log.error("Failed to initialize members", { error });
80
+ });
81
+ }
82
+
83
+ /**
84
+ * Static async factory to create and initialize RLNBaseContract
85
+ */
86
+ public static async create(
87
+ options: RLNContractInitOptions
88
+ ): Promise<RLNBaseContract> {
89
+ const instance = new RLNBaseContract(options);
90
+ const [min, max, idCommitmentBigIntLimit] = await Promise.all([
91
+ instance.contract.minMembershipRateLimit(),
92
+ instance.contract.maxMembershipRateLimit(),
93
+ instance.contract.Q()
94
+ ]);
95
+ instance.minRateLimit = ethers.BigNumber.from(min).toNumber();
96
+ instance.maxRateLimit = ethers.BigNumber.from(max).toNumber();
97
+ instance.idCommitmentBigIntLimit = BigInt(
98
+ idCommitmentBigIntLimit.toString()
99
+ );
100
+
101
+ instance.validateRateLimit(instance.rateLimit);
102
+ return instance;
61
103
  }
62
104
 
63
105
  /**
@@ -82,21 +124,21 @@ export class RLNBaseContract {
82
124
  }
83
125
 
84
126
  /**
85
- * Gets the minimum allowed rate limit from the contract
86
- * @returns Promise<number> The minimum rate limit in messages per epoch
127
+ * Gets the minimum allowed rate limit (cached)
87
128
  */
88
- public async getMinRateLimit(): Promise<number> {
89
- const minRate = await this.contract.minMembershipRateLimit();
90
- return ethers.BigNumber.from(minRate).toNumber();
129
+ public getMinRateLimit(): number {
130
+ if (this.minRateLimit === undefined)
131
+ throw new Error("minRateLimit not initialized");
132
+ return this.minRateLimit;
91
133
  }
92
134
 
93
135
  /**
94
- * Gets the maximum allowed rate limit from the contract
95
- * @returns Promise<number> The maximum rate limit in messages per epoch
136
+ * Gets the maximum allowed rate limit (cached)
96
137
  */
97
- public async getMaxRateLimit(): Promise<number> {
98
- const maxRate = await this.contract.maxMembershipRateLimit();
99
- return ethers.BigNumber.from(maxRate).toNumber();
138
+ public getMaxRateLimit(): number {
139
+ if (this.maxRateLimit === undefined)
140
+ throw new Error("maxRateLimit not initialized");
141
+ return this.maxRateLimit;
100
142
  }
101
143
 
102
144
  /**
@@ -133,7 +175,7 @@ export class RLNBaseContract {
133
175
  * Updates the rate limit for future registrations
134
176
  * @param newRateLimit The new rate limit to use
135
177
  */
136
- public async setRateLimit(newRateLimit: number): Promise<void> {
178
+ public setRateLimit(newRateLimit: number): void {
137
179
  this.validateRateLimit(newRateLimit);
138
180
  this.rateLimit = newRateLimit;
139
181
  }
@@ -324,7 +366,7 @@ export class RLNBaseContract {
324
366
  this.contract.on(
325
367
  this.membersFilter,
326
368
  (
327
- _idCommitment: string,
369
+ _idCommitment: bigint,
328
370
  _membershipRateLimit: ethers.BigNumber,
329
371
  _index: ethers.BigNumber,
330
372
  event: ethers.Event
@@ -336,7 +378,7 @@ export class RLNBaseContract {
336
378
  this.contract.on(
337
379
  this.membershipErasedFilter,
338
380
  (
339
- _idCommitment: string,
381
+ _idCommitment: bigint,
340
382
  _membershipRateLimit: ethers.BigNumber,
341
383
  _index: ethers.BigNumber,
342
384
  event: ethers.Event
@@ -348,7 +390,7 @@ export class RLNBaseContract {
348
390
  this.contract.on(
349
391
  this.membersExpiredFilter,
350
392
  (
351
- _idCommitment: string,
393
+ _idCommitment: bigint,
352
394
  _membershipRateLimit: ethers.BigNumber,
353
395
  _index: ethers.BigNumber,
354
396
  event: ethers.Event
@@ -358,94 +400,89 @@ export class RLNBaseContract {
358
400
  );
359
401
  }
360
402
 
361
- /**
362
- * Helper method to get remaining messages in current epoch
363
- * @param membershipId The ID of the membership to check
364
- * @returns number of remaining messages allowed in current epoch
365
- */
366
- public async getRemainingMessages(membershipId: number): Promise<number> {
367
- try {
368
- const [startTime, , rateLimit] =
369
- await this.contract.getMembershipInfo(membershipId);
370
-
371
- // Calculate current epoch
372
- const currentTime = Math.floor(Date.now() / 1000);
373
- const epochsPassed = Math.floor(
374
- (currentTime - startTime) / RATE_LIMIT_PARAMS.EPOCH_LENGTH
375
- );
376
- const currentEpochStart =
377
- startTime + epochsPassed * RATE_LIMIT_PARAMS.EPOCH_LENGTH;
378
-
379
- // Get message count in current epoch using contract's function
380
- const messageCount = await this.contract.getMessageCount(
381
- membershipId,
382
- currentEpochStart
383
- );
384
- return Math.max(
385
- 0,
386
- ethers.BigNumber.from(rateLimit)
387
- .sub(ethers.BigNumber.from(messageCount))
388
- .toNumber()
389
- );
390
- } catch (error) {
391
- log.error(
392
- `Error getting remaining messages: ${(error as Error).message}`
393
- );
394
- return 0; // Fail safe: assume no messages remaining on error
395
- }
396
- }
397
-
398
403
  public async getMembershipInfo(
399
- idCommitment: string
404
+ idCommitmentBigInt: bigint
400
405
  ): Promise<MembershipInfo | undefined> {
401
406
  try {
402
- const [startBlock, endBlock, rateLimit] =
403
- await this.contract.getMembershipInfo(idCommitment);
407
+ const membershipData =
408
+ await this.contract.memberships(idCommitmentBigInt);
404
409
  const currentBlock = await this.contract.provider.getBlockNumber();
410
+ const [
411
+ depositAmount,
412
+ activeDuration,
413
+ gracePeriodStartTimestamp,
414
+ gracePeriodDuration,
415
+ rateLimit,
416
+ index,
417
+ holder,
418
+ token
419
+ ] = membershipData;
420
+
421
+ const gracePeriodEnd = gracePeriodStartTimestamp.add(gracePeriodDuration);
405
422
 
406
423
  let state: MembershipState;
407
- if (currentBlock < startBlock) {
424
+ if (currentBlock < gracePeriodStartTimestamp.toNumber()) {
408
425
  state = MembershipState.Active;
409
- } else if (currentBlock < endBlock) {
426
+ } else if (currentBlock < gracePeriodEnd.toNumber()) {
410
427
  state = MembershipState.GracePeriod;
411
428
  } else {
412
429
  state = MembershipState.Expired;
413
430
  }
414
431
 
415
- const index = await this.getMemberIndex(idCommitment);
416
- if (!index) return undefined;
417
-
418
432
  return {
419
433
  index,
420
- idCommitment,
421
- rateLimit: rateLimit.toNumber(),
422
- startBlock: startBlock.toNumber(),
423
- endBlock: endBlock.toNumber(),
424
- state
434
+ idCommitment: idCommitmentBigInt.toString(),
435
+ rateLimit: Number(rateLimit),
436
+ startBlock: gracePeriodStartTimestamp.toNumber(),
437
+ endBlock: gracePeriodEnd.toNumber(),
438
+ state,
439
+ depositAmount,
440
+ activeDuration,
441
+ gracePeriodDuration,
442
+ holder,
443
+ token
425
444
  };
426
445
  } catch (error) {
446
+ log.error("Error in getMembershipInfo:", error);
427
447
  return undefined;
428
448
  }
429
449
  }
430
450
 
431
451
  public async extendMembership(
432
- idCommitment: string
452
+ idCommitmentBigInt: bigint
433
453
  ): Promise<ethers.ContractTransaction> {
434
- return this.contract.extendMemberships([idCommitment]);
454
+ const tx = await this.contract.extendMemberships([idCommitmentBigInt]);
455
+ await tx.wait();
456
+ return tx;
435
457
  }
436
458
 
437
459
  public async eraseMembership(
438
- idCommitment: string,
460
+ idCommitmentBigInt: bigint,
439
461
  eraseFromMembershipSet: boolean = true
440
462
  ): Promise<ethers.ContractTransaction> {
441
- return this.contract.eraseMemberships(
442
- [idCommitment],
443
- eraseFromMembershipSet
463
+ if (
464
+ !(await this.isExpired(idCommitmentBigInt)) ||
465
+ !(await this.isInGracePeriod(idCommitmentBigInt))
466
+ ) {
467
+ throw new Error("Membership is not expired or in grace period");
468
+ }
469
+
470
+ const estimatedGas = await this.contract.estimateGas[
471
+ "eraseMemberships(uint256[],bool)"
472
+ ]([idCommitmentBigInt], eraseFromMembershipSet);
473
+ const gasLimit = estimatedGas.add(10000);
474
+
475
+ const tx = await this.contract["eraseMemberships(uint256[],bool)"](
476
+ [idCommitmentBigInt],
477
+ eraseFromMembershipSet,
478
+ { gasLimit }
444
479
  );
480
+ await tx.wait();
481
+ return tx;
445
482
  }
446
483
 
447
484
  public async registerMembership(
448
- idCommitment: string,
485
+ idCommitmentBigInt: bigint,
449
486
  rateLimit: number = DEFAULT_RATE_LIMIT
450
487
  ): Promise<ethers.ContractTransaction> {
451
488
  if (
@@ -456,12 +493,12 @@ export class RLNBaseContract {
456
493
  `Rate limit must be between ${RATE_LIMIT_PARAMS.MIN_RATE} and ${RATE_LIMIT_PARAMS.MAX_RATE}`
457
494
  );
458
495
  }
459
- return this.contract.register(idCommitment, rateLimit, []);
496
+ return this.contract.register(idCommitmentBigInt, rateLimit, []);
460
497
  }
461
498
 
462
- public async withdraw(token: string, holder: string): Promise<void> {
499
+ public async withdraw(token: string, walletAddress: string): Promise<void> {
463
500
  try {
464
- const tx = await this.contract.withdraw(token, { from: holder });
501
+ const tx = await this.contract.withdraw(token, walletAddress);
465
502
  await tx.wait();
466
503
  } catch (error) {
467
504
  log.error(`Error in withdraw: ${(error as Error).message}`);
@@ -478,7 +515,7 @@ export class RLNBaseContract {
478
515
 
479
516
  // Check if the ID commitment is already registered
480
517
  const existingIndex = await this.getMemberIndex(
481
- identity.IDCommitmentBigInt.toString()
518
+ identity.IDCommitmentBigInt
482
519
  );
483
520
  if (existingIndex) {
484
521
  throw new Error(
@@ -516,7 +553,7 @@ export class RLNBaseContract {
516
553
  }
517
554
 
518
555
  const memberRegistered = txRegisterReceipt.events?.find(
519
- (event) => event.event === "MembershipRegistered"
556
+ (event: ethers.Event) => event.event === "MembershipRegistered"
520
557
  );
521
558
 
522
559
  if (!memberRegistered || !memberRegistered.args) {
@@ -610,7 +647,7 @@ export class RLNBaseContract {
610
647
  const txRegisterReceipt = await txRegisterResponse.wait();
611
648
 
612
649
  const memberRegistered = txRegisterReceipt.events?.find(
613
- (event) => event.event === "MembershipRegistered"
650
+ (event: ethers.Event) => event.event === "MembershipRegistered"
614
651
  );
615
652
 
616
653
  if (!memberRegistered || !memberRegistered.args) {
@@ -653,16 +690,16 @@ export class RLNBaseContract {
653
690
  }
654
691
 
655
692
  /**
656
- * Validates that the rate limit is within the allowed range
693
+ * Validates that the rate limit is within the allowed range (sync)
657
694
  * @throws Error if the rate limit is outside the allowed range
658
695
  */
659
696
  private validateRateLimit(rateLimit: number): void {
660
- if (
661
- rateLimit < RATE_LIMIT_PARAMS.MIN_RATE ||
662
- rateLimit > RATE_LIMIT_PARAMS.MAX_RATE
663
- ) {
697
+ if (this.minRateLimit === undefined || this.maxRateLimit === undefined) {
698
+ throw new Error("Rate limits not initialized");
699
+ }
700
+ if (rateLimit < this.minRateLimit || rateLimit > this.maxRateLimit) {
664
701
  throw new Error(
665
- `Rate limit must be between ${RATE_LIMIT_PARAMS.MIN_RATE} and ${RATE_LIMIT_PARAMS.MAX_RATE} messages per epoch`
702
+ `Rate limit must be between ${this.minRateLimit} and ${this.maxRateLimit} messages per epoch`
666
703
  );
667
704
  }
668
705
  }
@@ -689,11 +726,11 @@ export class RLNBaseContract {
689
726
  }
690
727
 
691
728
  private async getMemberIndex(
692
- idCommitment: string
729
+ idCommitmentBigInt: bigint
693
730
  ): Promise<ethers.BigNumber | undefined> {
694
731
  try {
695
732
  const events = await this.contract.queryFilter(
696
- this.contract.filters.MembershipRegistered(idCommitment)
733
+ this.contract.filters.MembershipRegistered(idCommitmentBigInt)
697
734
  );
698
735
  if (events.length === 0) return undefined;
699
736
 
@@ -704,4 +741,45 @@ export class RLNBaseContract {
704
741
  return undefined;
705
742
  }
706
743
  }
744
+
745
+ public async getMembershipStatus(
746
+ idCommitment: bigint
747
+ ): Promise<"expired" | "grace" | "active"> {
748
+ const [isExpired, isInGrace] = await Promise.all([
749
+ this.contract.isExpired(idCommitment),
750
+ this.contract.isInGracePeriod(idCommitment)
751
+ ]);
752
+
753
+ if (isExpired) return "expired";
754
+ if (isInGrace) return "grace";
755
+ return "active";
756
+ }
757
+
758
+ /**
759
+ * Checks if a membership is expired for the given idCommitment
760
+ * @param idCommitmentBigInt The idCommitment as bigint
761
+ * @returns Promise<boolean> True if expired, false otherwise
762
+ */
763
+ public async isExpired(idCommitmentBigInt: bigint): Promise<boolean> {
764
+ try {
765
+ return await this.contract.isExpired(idCommitmentBigInt);
766
+ } catch (error) {
767
+ log.error("Error in isExpired:", error);
768
+ return false;
769
+ }
770
+ }
771
+
772
+ /**
773
+ * Checks if a membership is in grace period for the given idCommitment
774
+ * @param idCommitmentBigInt The idCommitment as bigint
775
+ * @returns Promise<boolean> True if in grace period, false otherwise
776
+ */
777
+ public async isInGracePeriod(idCommitmentBigInt: bigint): Promise<boolean> {
778
+ try {
779
+ return await this.contract.isInGracePeriod(idCommitmentBigInt);
780
+ } catch (error) {
781
+ log.error("Error in isInGracePeriod:", error);
782
+ return false;
783
+ }
784
+ }
707
785
  }
@@ -38,6 +38,11 @@ export interface MembershipInfo {
38
38
  startBlock: number;
39
39
  endBlock: number;
40
40
  state: MembershipState;
41
+ depositAmount: ethers.BigNumber;
42
+ activeDuration: number;
43
+ gracePeriodDuration: number;
44
+ holder: string;
45
+ token: string;
41
46
  }
42
47
 
43
48
  export enum MembershipState {
@@ -80,7 +80,7 @@ export class RLNCredentialsManager {
80
80
 
81
81
  this.credentials = credentials;
82
82
  this.signer = signer!;
83
- this.contract = new RLNBaseContract({
83
+ this.contract = await RLNBaseContract.create({
84
84
  address: address!,
85
85
  signer: signer!,
86
86
  rateLimit: rateLimit ?? this.zerokit?.rateLimit
@@ -116,7 +116,9 @@ export class RLNCredentialsManager {
116
116
  );
117
117
  } else {
118
118
  log.info("Using local implementation to generate identity");
119
- identity = this.generateSeededIdentityCredential(options.signature);
119
+ identity = await this.generateSeededIdentityCredential(
120
+ options.signature
121
+ );
120
122
  }
121
123
  }
122
124
 
@@ -249,7 +251,9 @@ export class RLNCredentialsManager {
249
251
  * @param seed A string seed to generate the identity from
250
252
  * @returns IdentityCredential
251
253
  */
252
- private generateSeededIdentityCredential(seed: string): IdentityCredential {
254
+ private async generateSeededIdentityCredential(
255
+ seed: string
256
+ ): Promise<IdentityCredential> {
253
257
  log.info("Generating seeded identity credential");
254
258
  // Convert the seed to bytes
255
259
  const encoder = new TextEncoder();
@@ -260,15 +264,24 @@ export class RLNCredentialsManager {
260
264
  const idTrapdoor = hmac(sha256, seedBytes, encoder.encode("IDTrapdoor"));
261
265
  const idNullifier = hmac(sha256, seedBytes, encoder.encode("IDNullifier"));
262
266
 
263
- // Generate IDSecretHash as a hash of IDTrapdoor and IDNullifier
264
267
  const combinedBytes = new Uint8Array([...idTrapdoor, ...idNullifier]);
265
268
  const idSecretHash = sha256(combinedBytes);
266
269
 
267
- // Generate IDCommitment as a hash of IDSecretHash
268
270
  const idCommitment = sha256(idSecretHash);
269
271
 
270
- // Convert IDCommitment to BigInt
271
- const idCommitmentBigInt = buildBigIntFromUint8Array(idCommitment);
272
+ let idCommitmentBigInt = buildBigIntFromUint8Array(idCommitment);
273
+ if (!this.contract) {
274
+ throw Error("RLN contract is not initialized");
275
+ }
276
+
277
+ const idCommitmentBigIntLimit = this.contract.idCommitmentBigIntLimit;
278
+
279
+ if (idCommitmentBigInt >= idCommitmentBigIntLimit) {
280
+ log.warn(
281
+ `ID commitment is greater than Q, reducing it by Q(idCommitmentBigIntLimit): ${idCommitmentBigInt} % ${idCommitmentBigIntLimit}`
282
+ );
283
+ idCommitmentBigInt = idCommitmentBigInt % idCommitmentBigIntLimit;
284
+ }
272
285
 
273
286
  log.info("Successfully generated identity credential");
274
287
  return new IdentityCredential(
package/src/index.ts CHANGED
@@ -34,7 +34,9 @@ export type {
34
34
  Keccak256Hash,
35
35
  KeystoreEntity,
36
36
  MembershipHash,
37
- MembershipInfo,
37
+ KeystoreMembershipInfo,
38
38
  Password,
39
39
  Sha256Hash
40
40
  } from "./keystore/types.js";
41
+
42
+ export * from "./contract/index.js";