@waku/rln 0.1.5-f6b9809.0 → 0.1.5-fdaf129.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 (32) 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/packages/rln/dist/contract/constants.js +5 -1
  5. package/bundle/packages/rln/dist/contract/rln_base_contract.js +42 -29
  6. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/random.js +1 -1
  7. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/utils.js +2 -2
  8. package/bundle/packages/rln/node_modules/@noble/hashes/_sha2.js +1 -1
  9. package/bundle/packages/rln/node_modules/@noble/hashes/hmac.js +1 -1
  10. package/bundle/packages/rln/node_modules/@noble/hashes/pbkdf2.js +1 -1
  11. package/bundle/packages/rln/node_modules/@noble/hashes/scrypt.js +1 -1
  12. package/bundle/packages/rln/node_modules/@noble/hashes/sha256.js +1 -1
  13. package/bundle/packages/rln/node_modules/@noble/hashes/sha512.js +1 -1
  14. package/bundle/packages/rln/node_modules/@noble/hashes/utils.js +1 -1
  15. package/dist/.tsbuildinfo +1 -1
  16. package/dist/contract/index.d.ts +1 -0
  17. package/dist/contract/index.js +1 -0
  18. package/dist/contract/index.js.map +1 -1
  19. package/dist/contract/rln_base_contract.d.ts +5 -5
  20. package/dist/contract/rln_base_contract.js +42 -29
  21. package/dist/contract/rln_base_contract.js.map +1 -1
  22. package/dist/index.d.ts +2 -1
  23. package/dist/index.js +1 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/keystore/keystore.js.map +1 -1
  26. package/dist/keystore/types.d.ts +2 -2
  27. package/package.json +1 -1
  28. package/src/contract/index.ts +1 -0
  29. package/src/contract/rln_base_contract.ts +59 -35
  30. package/src/index.ts +3 -1
  31. package/src/keystore/keystore.ts +4 -2
  32. package/src/keystore/types.ts +2 -2
@@ -1,3 +1,3 @@
1
- var utils = {};
1
+ var utils = {exports: {}};
2
2
 
3
- export { utils as __exports };
3
+ export { utils as __module };
@@ -1,3 +1,3 @@
1
- var utils = {exports: {}};
1
+ var utils = {};
2
2
 
3
- export { utils as __module };
3
+ export { utils as __exports };
package/bundle/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  export { RLNDecoder, RLNEncoder } from './packages/rln/dist/codec.js';
2
2
  export { RLN_ABI } from './packages/rln/dist/contract/abi.js';
3
3
  export { RLNContract } from './packages/rln/dist/contract/rln_contract.js';
4
- export { LINEA_CONTRACT } from './packages/rln/dist/contract/constants.js';
4
+ export { DEFAULT_RATE_LIMIT, LINEA_CONTRACT, RATE_LIMIT_PARAMS, RATE_LIMIT_TIERS } from './packages/rln/dist/contract/constants.js';
5
+ export { MembershipState } from './packages/rln/dist/contract/types.js';
5
6
  export { RLNBaseContract } from './packages/rln/dist/contract/rln_base_contract.js';
6
7
  export { createRLN } from './packages/rln/dist/create.js';
7
8
  export { RLNCredentialsManager } from './packages/rln/dist/credentials_manager.js';
@@ -12,12 +12,16 @@ const LINEA_CONTRACT = {
12
12
  */
13
13
  const RATE_LIMIT_TIERS = {
14
14
  LOW: 20, // Suggested minimum rate - 20 messages per epoch
15
+ MEDIUM: 200,
15
16
  HIGH: 600 // Suggested maximum rate - 600 messages per epoch
16
17
  };
17
18
  // Global rate limit parameters
18
19
  const RATE_LIMIT_PARAMS = {
19
20
  MIN_RATE: RATE_LIMIT_TIERS.LOW,
20
- MAX_RATE: RATE_LIMIT_TIERS.HIGH};
21
+ MAX_RATE: RATE_LIMIT_TIERS.HIGH,
22
+ MAX_TOTAL_RATE: 160_000, // Maximum total rate limit across all memberships
23
+ EPOCH_LENGTH: 600 // Epoch length in seconds (10 minutes)
24
+ };
21
25
  const DEFAULT_RATE_LIMIT = RATE_LIMIT_PARAMS.MAX_RATE;
22
26
 
23
27
  export { DEFAULT_RATE_LIMIT, LINEA_CONTRACT, RATE_LIMIT_PARAMS, RATE_LIMIT_TIERS };
@@ -19,6 +19,7 @@ import { MembershipState } from './types.js';
19
19
  import { Contract } from '../../../../node_modules/@ethersproject/contracts/lib.esm/index.js';
20
20
  import { BigNumber } from '../../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js';
21
21
 
22
+ /* eslint-disable no-console */
22
23
  const log = new Logger("waku:rln:contract:base");
23
24
  class RLNBaseContract {
24
25
  contract;
@@ -34,12 +35,21 @@ class RLNBaseContract {
34
35
  */
35
36
  constructor(options) {
36
37
  const { address, signer, rateLimit = DEFAULT_RATE_LIMIT, contract } = options;
38
+ log.info("Initializing RLNBaseContract", { address, rateLimit });
37
39
  this.contract = contract || new Contract(address, RLN_ABI, signer);
38
40
  this.rateLimit = rateLimit;
39
- // Initialize event filters
40
- this._membersFilter = this.contract.filters.MembershipRegistered();
41
- this._membershipErasedFilter = this.contract.filters.MembershipErased();
42
- this._membersExpiredFilter = this.contract.filters.MembershipExpired();
41
+ try {
42
+ log.info("Setting up event filters");
43
+ // Initialize event filters
44
+ this._membersFilter = this.contract.filters.MembershipRegistered();
45
+ this._membershipErasedFilter = this.contract.filters.MembershipErased();
46
+ this._membersExpiredFilter = this.contract.filters.MembershipExpired();
47
+ log.info("Event filters initialized successfully");
48
+ }
49
+ catch (error) {
50
+ log.error("Failed to initialize event filters", { error });
51
+ throw new Error("Failed to initialize event filters: " + error.message);
52
+ }
43
53
  // Initialize members and subscriptions
44
54
  this.fetchMembers()
45
55
  .then(() => {
@@ -250,55 +260,58 @@ class RLNBaseContract {
250
260
  this.processEvents([event]);
251
261
  });
252
262
  }
253
- async getMembershipInfo(idCommitment) {
263
+ async getMembershipInfo(idCommitmentBigInt) {
254
264
  try {
255
- const membershipData = await this.contract.memberships(idCommitment);
265
+ const membershipData = await this.contract.memberships(idCommitmentBigInt);
256
266
  const currentBlock = await this.contract.provider.getBlockNumber();
267
+ console.log("membershipData", membershipData);
268
+ const [depositAmount, activeDuration, gracePeriodStartTimestamp, gracePeriodDuration, rateLimit, index, holder, token] = membershipData;
269
+ const gracePeriodEnd = gracePeriodStartTimestamp.add(gracePeriodDuration);
257
270
  let state;
258
- const gracePeriodEnd = membershipData.gracePeriodStartTimestamp.add(membershipData.gracePeriodDuration);
259
- if (currentBlock < membershipData.gracePeriodStartTimestamp) {
271
+ if (currentBlock < gracePeriodStartTimestamp.toNumber()) {
260
272
  state = MembershipState.Active;
261
273
  }
262
- else if (currentBlock < gracePeriodEnd) {
274
+ else if (currentBlock < gracePeriodEnd.toNumber()) {
263
275
  state = MembershipState.GracePeriod;
264
276
  }
265
277
  else {
266
278
  state = MembershipState.Expired;
267
279
  }
268
280
  return {
269
- index: membershipData.index,
270
- idCommitment,
271
- rateLimit: membershipData.rateLimit.toNumber(),
272
- startBlock: membershipData.gracePeriodStartTimestamp.toNumber(),
281
+ index,
282
+ idCommitment: idCommitmentBigInt.toString(),
283
+ rateLimit: Number(rateLimit),
284
+ startBlock: gracePeriodStartTimestamp.toNumber(),
273
285
  endBlock: gracePeriodEnd.toNumber(),
274
286
  state,
275
- depositAmount: membershipData.depositAmount,
276
- activeDuration: membershipData.activeDuration,
277
- gracePeriodDuration: membershipData.gracePeriodDuration,
278
- holder: membershipData.holder,
279
- token: membershipData.token
287
+ depositAmount,
288
+ activeDuration,
289
+ gracePeriodDuration,
290
+ holder,
291
+ token
280
292
  };
281
293
  }
282
294
  catch (error) {
295
+ console.error("Error in getMembershipInfo:", error);
283
296
  return undefined;
284
297
  }
285
298
  }
286
- async extendMembership(idCommitment) {
287
- return this.contract.extendMemberships([idCommitment]);
299
+ async extendMembership(idCommitmentBigInt) {
300
+ return this.contract.extendMemberships([idCommitmentBigInt]);
288
301
  }
289
- async eraseMembership(idCommitment, eraseFromMembershipSet = true) {
290
- return this.contract.eraseMemberships([idCommitment], eraseFromMembershipSet);
302
+ async eraseMembership(idCommitmentBigInt, eraseFromMembershipSet = true) {
303
+ return this.contract.eraseMemberships([idCommitmentBigInt], eraseFromMembershipSet);
291
304
  }
292
- async registerMembership(idCommitment, rateLimit = DEFAULT_RATE_LIMIT) {
305
+ async registerMembership(idCommitmentBigInt, rateLimit = DEFAULT_RATE_LIMIT) {
293
306
  if (rateLimit < RATE_LIMIT_PARAMS.MIN_RATE ||
294
307
  rateLimit > RATE_LIMIT_PARAMS.MAX_RATE) {
295
308
  throw new Error(`Rate limit must be between ${RATE_LIMIT_PARAMS.MIN_RATE} and ${RATE_LIMIT_PARAMS.MAX_RATE}`);
296
309
  }
297
- return this.contract.register(idCommitment, rateLimit, []);
310
+ return this.contract.register(idCommitmentBigInt, rateLimit, []);
298
311
  }
299
- async withdraw(token) {
312
+ async withdraw(token, from) {
300
313
  try {
301
- const tx = await this.contract.withdraw(token);
314
+ const tx = await this.contract.withdraw(token, from);
302
315
  await tx.wait();
303
316
  }
304
317
  catch (error) {
@@ -309,7 +322,7 @@ class RLNBaseContract {
309
322
  try {
310
323
  log.info(`Registering identity with rate limit: ${this.rateLimit} messages/epoch`);
311
324
  // Check if the ID commitment is already registered
312
- const existingIndex = await this.getMemberIndex(identity.IDCommitmentBigInt.toString());
325
+ const existingIndex = await this.getMemberIndex(identity.IDCommitmentBigInt);
313
326
  if (existingIndex) {
314
327
  throw new Error(`ID commitment is already registered with index ${existingIndex}`);
315
328
  }
@@ -447,9 +460,9 @@ class RLNBaseContract {
447
460
  }
448
461
  return this._membersExpiredFilter;
449
462
  }
450
- async getMemberIndex(idCommitment) {
463
+ async getMemberIndex(idCommitmentBigInt) {
451
464
  try {
452
- const events = await this.contract.queryFilter(this.contract.filters.MembershipRegistered(idCommitment));
465
+ const events = await this.contract.queryFilter(this.contract.filters.MembershipRegistered(idCommitmentBigInt));
453
466
  if (events.length === 0)
454
467
  return undefined;
455
468
  // Get the most recent registration event
@@ -1,6 +1,6 @@
1
1
  import { __exports as random } from '../../../../../../../_virtual/random.js';
2
2
  import '../../../../@noble/hashes/utils.js';
3
- import { __exports as utils } from '../../../../../../../_virtual/utils.js';
3
+ import { __exports as utils } from '../../../../../../../_virtual/utils2.js';
4
4
 
5
5
  Object.defineProperty(random, "__esModule", { value: true });
6
6
  random.getRandomBytes = random.getRandomBytesSync = void 0;
@@ -1,10 +1,10 @@
1
1
  import { commonjsGlobal } from '../../../../../../../_virtual/_commonjsHelpers.js';
2
2
  import { commonjsRequire } from '../../../../../../../_virtual/_commonjs-dynamic-modules.js';
3
- import { __module as utils } from '../../../../../../../_virtual/utils2.js';
3
+ import { __module as utils } from '../../../../../../../_virtual/utils.js';
4
4
  import '../../../../@noble/hashes/_assert.js';
5
5
  import '../../../../@noble/hashes/utils.js';
6
6
  import { __exports as _assert } from '../../../../../../../_virtual/_assert.js';
7
- import { __exports as utils$1 } from '../../../../../../../_virtual/utils.js';
7
+ import { __exports as utils$1 } from '../../../../../../../_virtual/utils2.js';
8
8
 
9
9
  utils.exports;
10
10
 
@@ -1,7 +1,7 @@
1
1
  import { __exports as _sha2 } from '../../../../../_virtual/_sha2.js';
2
2
  import './_assert.js';
3
3
  import './utils.js';
4
- import { __exports as utils } from '../../../../../_virtual/utils.js';
4
+ import { __exports as utils } from '../../../../../_virtual/utils2.js';
5
5
  import { __exports as _assert } from '../../../../../_virtual/_assert.js';
6
6
 
7
7
  Object.defineProperty(_sha2, "__esModule", { value: true });
@@ -1,7 +1,7 @@
1
1
  import { __exports as hmac } from '../../../../../_virtual/hmac.js';
2
2
  import './_assert.js';
3
3
  import './utils.js';
4
- import { __exports as utils } from '../../../../../_virtual/utils.js';
4
+ import { __exports as utils } from '../../../../../_virtual/utils2.js';
5
5
  import { __exports as _assert } from '../../../../../_virtual/_assert.js';
6
6
 
7
7
  (function (exports) {
@@ -2,7 +2,7 @@ import { __exports as pbkdf2$1 } from '../../../../../_virtual/pbkdf22.js';
2
2
  import './_assert.js';
3
3
  import './hmac.js';
4
4
  import './utils.js';
5
- import { __exports as utils } from '../../../../../_virtual/utils.js';
5
+ import { __exports as utils } from '../../../../../_virtual/utils2.js';
6
6
  import { __exports as _assert } from '../../../../../_virtual/_assert.js';
7
7
  import { __exports as hmac } from '../../../../../_virtual/hmac.js';
8
8
 
@@ -3,7 +3,7 @@ import './_assert.js';
3
3
  import './sha256.js';
4
4
  import './pbkdf2.js';
5
5
  import './utils.js';
6
- import { __exports as utils } from '../../../../../_virtual/utils.js';
6
+ import { __exports as utils } from '../../../../../_virtual/utils2.js';
7
7
  import { __exports as _assert } from '../../../../../_virtual/_assert.js';
8
8
  import { __exports as pbkdf2 } from '../../../../../_virtual/pbkdf22.js';
9
9
  import { __exports as sha256 } from '../../../../../_virtual/sha2562.js';
@@ -2,7 +2,7 @@ import { __exports as sha256 } from '../../../../../_virtual/sha2562.js';
2
2
  import './_sha2.js';
3
3
  import './utils.js';
4
4
  import { __exports as _sha2 } from '../../../../../_virtual/_sha2.js';
5
- import { __exports as utils } from '../../../../../_virtual/utils.js';
5
+ import { __exports as utils } from '../../../../../_virtual/utils2.js';
6
6
 
7
7
  Object.defineProperty(sha256, "__esModule", { value: true });
8
8
  sha256.sha224 = sha256.sha256 = void 0;
@@ -4,7 +4,7 @@ import './_u64.js';
4
4
  import './utils.js';
5
5
  import { __exports as _u64 } from '../../../../../_virtual/_u64.js';
6
6
  import { __exports as _sha2 } from '../../../../../_virtual/_sha2.js';
7
- import { __exports as utils } from '../../../../../_virtual/utils.js';
7
+ import { __exports as utils } from '../../../../../_virtual/utils2.js';
8
8
 
9
9
  Object.defineProperty(sha512, "__esModule", { value: true });
10
10
  sha512.sha384 = sha512.sha512_256 = sha512.sha512_224 = sha512.sha512 = sha512.SHA512 = void 0;
@@ -1,4 +1,4 @@
1
- import { __exports as utils } from '../../../../../_virtual/utils.js';
1
+ import { __exports as utils } from '../../../../../_virtual/utils2.js';
2
2
  import './cryptoBrowser.js';
3
3
  import { __exports as cryptoBrowser } from '../../../../../_virtual/cryptoBrowser.js';
4
4