@waku/rln 0.1.5-bc093d3.0 → 0.1.5-d17562d.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 (119) hide show
  1. package/bundle/index.js +2 -1
  2. package/bundle/packages/rln/dist/contract/constants.js +5 -1
  3. package/bundle/packages/rln/dist/contract/rln_base_contract.js +33 -35
  4. package/bundle/packages/rln/dist/contract/rln_contract.js +1 -1
  5. package/bundle/packages/rln/dist/utils/bytes.js +8 -2
  6. package/bundle/packages/rln/dist/utils/metamask.js +2 -2
  7. package/dist/.tsbuildinfo +1 -1
  8. package/dist/contract/index.d.ts +1 -0
  9. package/dist/contract/index.js +1 -0
  10. package/dist/contract/index.js.map +1 -1
  11. package/dist/contract/rln_base_contract.d.ts +4 -4
  12. package/dist/contract/rln_base_contract.js +31 -33
  13. package/dist/contract/rln_base_contract.js.map +1 -1
  14. package/dist/index.d.ts +2 -1
  15. package/dist/index.js +1 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/keystore/keystore.js.map +1 -1
  18. package/dist/keystore/types.d.ts +2 -2
  19. package/dist/utils/bytes.js +8 -2
  20. package/dist/utils/bytes.js.map +1 -1
  21. package/package.json +1 -1
  22. package/src/contract/index.ts +1 -0
  23. package/src/contract/rln_base_contract.ts +47 -47
  24. package/src/index.ts +3 -1
  25. package/src/keystore/keystore.ts +4 -2
  26. package/src/keystore/types.ts +2 -2
  27. package/src/utils/bytes.ts +10 -2
  28. package/bundle/_virtual/__node-resolve_empty.js +0 -6
  29. package/bundle/_virtual/_node-resolve_empty.js +0 -3
  30. package/bundle/_virtual/bn.js +0 -3
  31. package/bundle/_virtual/common.js +0 -3
  32. package/bundle/_virtual/common2.js +0 -3
  33. package/bundle/_virtual/hash.js +0 -3
  34. package/bundle/_virtual/inherits_browser.js +0 -3
  35. package/bundle/_virtual/ripemd.js +0 -3
  36. package/bundle/_virtual/sha.js +0 -3
  37. package/bundle/_virtual/sha3.js +0 -3
  38. package/bundle/_virtual/utils3.js +0 -3
  39. package/bundle/node_modules/@ethersproject/abi/lib.esm/_version.js +0 -3
  40. package/bundle/node_modules/@ethersproject/abi/lib.esm/abi-coder.js +0 -96
  41. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/abstract-coder.js +0 -148
  42. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/address.js +0 -26
  43. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/anonymous.js +0 -20
  44. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/array.js +0 -210
  45. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/boolean.js +0 -18
  46. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/bytes.js +0 -30
  47. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/fixed-bytes.js +0 -26
  48. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/null.js +0 -22
  49. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/number.js +0 -43
  50. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/string.js +0 -19
  51. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/tuple.js +0 -58
  52. package/bundle/node_modules/@ethersproject/abi/lib.esm/fragments.js +0 -854
  53. package/bundle/node_modules/@ethersproject/abi/lib.esm/interface.js +0 -609
  54. package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/_version.js +0 -3
  55. package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/index.js +0 -66
  56. package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/_version.js +0 -3
  57. package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/index.js +0 -302
  58. package/bundle/node_modules/@ethersproject/address/lib.esm/_version.js +0 -3
  59. package/bundle/node_modules/@ethersproject/address/lib.esm/index.js +0 -110
  60. package/bundle/node_modules/@ethersproject/base64/lib.esm/base64.js +0 -20
  61. package/bundle/node_modules/@ethersproject/basex/lib.esm/index.js +0 -120
  62. package/bundle/node_modules/@ethersproject/bignumber/lib.esm/_version.js +0 -3
  63. package/bundle/node_modules/@ethersproject/bignumber/lib.esm/bignumber.js +0 -287
  64. package/bundle/node_modules/@ethersproject/bytes/lib.esm/_version.js +0 -3
  65. package/bundle/node_modules/@ethersproject/bytes/lib.esm/index.js +0 -402
  66. package/bundle/node_modules/@ethersproject/constants/lib.esm/addresses.js +0 -3
  67. package/bundle/node_modules/@ethersproject/constants/lib.esm/bignumbers.js +0 -8
  68. package/bundle/node_modules/@ethersproject/constants/lib.esm/hashes.js +0 -3
  69. package/bundle/node_modules/@ethersproject/contracts/lib.esm/_version.js +0 -3
  70. package/bundle/node_modules/@ethersproject/contracts/lib.esm/index.js +0 -893
  71. package/bundle/node_modules/@ethersproject/hash/lib.esm/_version.js +0 -3
  72. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js +0 -256
  73. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js +0 -36
  74. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js +0 -135
  75. package/bundle/node_modules/@ethersproject/hash/lib.esm/id.js +0 -8
  76. package/bundle/node_modules/@ethersproject/hash/lib.esm/namehash.js +0 -64
  77. package/bundle/node_modules/@ethersproject/hash/lib.esm/typed-data.js +0 -443
  78. package/bundle/node_modules/@ethersproject/keccak256/lib.esm/index.js +0 -8
  79. package/bundle/node_modules/@ethersproject/keccak256/node_modules/js-sha3/src/sha3.js +0 -660
  80. package/bundle/node_modules/@ethersproject/logger/lib.esm/_version.js +0 -3
  81. package/bundle/node_modules/@ethersproject/logger/lib.esm/index.js +0 -352
  82. package/bundle/node_modules/@ethersproject/networks/lib.esm/_version.js +0 -3
  83. package/bundle/node_modules/@ethersproject/networks/lib.esm/index.js +0 -248
  84. package/bundle/node_modules/@ethersproject/properties/lib.esm/_version.js +0 -3
  85. package/bundle/node_modules/@ethersproject/properties/lib.esm/index.js +0 -127
  86. package/bundle/node_modules/@ethersproject/providers/lib.esm/_version.js +0 -3
  87. package/bundle/node_modules/@ethersproject/providers/lib.esm/base-provider.js +0 -2007
  88. package/bundle/node_modules/@ethersproject/providers/lib.esm/formatter.js +0 -422
  89. package/bundle/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js +0 -674
  90. package/bundle/node_modules/@ethersproject/providers/lib.esm/web3-provider.js +0 -132
  91. package/bundle/node_modules/@ethersproject/rlp/lib.esm/_version.js +0 -3
  92. package/bundle/node_modules/@ethersproject/rlp/lib.esm/index.js +0 -120
  93. package/bundle/node_modules/@ethersproject/sha2/lib.esm/sha2.js +0 -8
  94. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/_version.js +0 -3
  95. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/elliptic.js +0 -2430
  96. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/index.js +0 -76
  97. package/bundle/node_modules/@ethersproject/strings/lib.esm/_version.js +0 -3
  98. package/bundle/node_modules/@ethersproject/strings/lib.esm/utf8.js +0 -219
  99. package/bundle/node_modules/@ethersproject/transactions/lib.esm/_version.js +0 -3
  100. package/bundle/node_modules/@ethersproject/transactions/lib.esm/index.js +0 -279
  101. package/bundle/node_modules/@ethersproject/web/lib.esm/_version.js +0 -3
  102. package/bundle/node_modules/@ethersproject/web/lib.esm/geturl.js +0 -69
  103. package/bundle/node_modules/@ethersproject/web/lib.esm/index.js +0 -404
  104. package/bundle/node_modules/bech32/index.js +0 -187
  105. package/bundle/node_modules/bn.js/lib/bn.js +0 -3361
  106. package/bundle/node_modules/hash.js/lib/hash/common.js +0 -97
  107. package/bundle/node_modules/hash.js/lib/hash/hmac.js +0 -51
  108. package/bundle/node_modules/hash.js/lib/hash/ripemd.js +0 -152
  109. package/bundle/node_modules/hash.js/lib/hash/sha/1.js +0 -81
  110. package/bundle/node_modules/hash.js/lib/hash/sha/224.js +0 -33
  111. package/bundle/node_modules/hash.js/lib/hash/sha/256.js +0 -113
  112. package/bundle/node_modules/hash.js/lib/hash/sha/384.js +0 -39
  113. package/bundle/node_modules/hash.js/lib/hash/sha/512.js +0 -336
  114. package/bundle/node_modules/hash.js/lib/hash/sha/common.js +0 -53
  115. package/bundle/node_modules/hash.js/lib/hash/sha.js +0 -14
  116. package/bundle/node_modules/hash.js/lib/hash/utils.js +0 -282
  117. package/bundle/node_modules/hash.js/lib/hash.js +0 -33
  118. package/bundle/node_modules/inherits/inherits_browser.js +0 -33
  119. package/bundle/node_modules/minimalistic-assert/index.js +0 -13
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 };
@@ -16,10 +16,9 @@ import { Logger } from '../../../utils/dist/logger/index.js';
16
16
  import { RLN_ABI } from './abi.js';
17
17
  import { DEFAULT_RATE_LIMIT, RATE_LIMIT_PARAMS } from './constants.js';
18
18
  import { MembershipState } from './types.js';
19
- import { Contract } from '../../../../node_modules/@ethersproject/contracts/lib.esm/index.js';
20
- import { BigNumber } from '../../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js';
19
+ import { Contract } from '@ethersproject/contracts';
20
+ import { BigNumber } from '@ethersproject/bignumber';
21
21
 
22
- /* eslint-disable no-console */
23
22
  const log = new Logger("waku:rln:contract:base");
24
23
  class RLNBaseContract {
25
24
  contract;
@@ -262,62 +261,61 @@ class RLNBaseContract {
262
261
  }
263
262
  async getMembershipInfo(idCommitmentBigInt) {
264
263
  try {
265
- console.log("idCommitmentBigInt", idCommitmentBigInt);
266
264
  const membershipData = await this.contract.memberships(idCommitmentBigInt);
267
265
  const currentBlock = await this.contract.provider.getBlockNumber();
268
- console.log("membershipData", membershipData);
266
+ const [depositAmount, activeDuration, gracePeriodStartTimestamp, gracePeriodDuration, rateLimit, index, holder, token] = membershipData;
267
+ const gracePeriodEnd = gracePeriodStartTimestamp.add(gracePeriodDuration);
269
268
  let state;
270
- const gracePeriodEnd = membershipData.gracePeriodStartTimestamp.add(membershipData.gracePeriodDuration);
271
- console.log("gracePeriodEnd", gracePeriodEnd);
272
- if (currentBlock < membershipData.gracePeriodStartTimestamp) {
269
+ if (currentBlock < gracePeriodStartTimestamp.toNumber()) {
273
270
  state = MembershipState.Active;
274
271
  }
275
- else if (currentBlock < gracePeriodEnd) {
272
+ else if (currentBlock < gracePeriodEnd.toNumber()) {
276
273
  state = MembershipState.GracePeriod;
277
274
  }
278
275
  else {
279
276
  state = MembershipState.Expired;
280
277
  }
281
- console.log("state", state);
282
- console.log("membershipData.index", membershipData.index);
283
- console.log("membershipData.idCommitment", membershipData.idCommitment);
284
- console.log("membershipData.rateLimit", membershipData.rateLimit);
285
- console.log("membershipData.gracePeriodStartTimestamp", membershipData.gracePeriodStartTimestamp);
286
- console.log("gracePeriodEnd", gracePeriodEnd);
287
278
  return {
288
- index: membershipData.index,
289
- idCommitment: membershipData.idCommitment,
290
- rateLimit: membershipData.rateLimit.toNumber(),
291
- startBlock: membershipData.gracePeriodStartTimestamp.toNumber(),
279
+ index,
280
+ idCommitment: idCommitmentBigInt.toString(),
281
+ rateLimit: Number(rateLimit),
282
+ startBlock: gracePeriodStartTimestamp.toNumber(),
292
283
  endBlock: gracePeriodEnd.toNumber(),
293
284
  state,
294
- depositAmount: membershipData.depositAmount,
295
- activeDuration: membershipData.activeDuration,
296
- gracePeriodDuration: membershipData.gracePeriodDuration,
297
- holder: membershipData.holder,
298
- token: membershipData.token
285
+ depositAmount,
286
+ activeDuration,
287
+ gracePeriodDuration,
288
+ holder,
289
+ token
299
290
  };
300
291
  }
301
292
  catch (error) {
293
+ log.error("Error in getMembershipInfo:", error);
302
294
  return undefined;
303
295
  }
304
296
  }
305
- async extendMembership(idCommitment) {
306
- return this.contract.extendMemberships([idCommitment]);
297
+ async extendMembership(idCommitmentBigInt) {
298
+ const tx = await this.contract.extendMemberships([idCommitmentBigInt]);
299
+ await tx.wait();
300
+ return tx;
307
301
  }
308
- async eraseMembership(idCommitment, eraseFromMembershipSet = true) {
309
- return this.contract.eraseMemberships([idCommitment], eraseFromMembershipSet);
302
+ async eraseMembership(idCommitmentBigInt, eraseFromMembershipSet = true) {
303
+ // eslint-disable-next-line no-console
304
+ console.log(Object.keys(this.contract));
305
+ const tx = await this.contract.eraseMemberships([idCommitmentBigInt], eraseFromMembershipSet);
306
+ await tx.wait();
307
+ return tx;
310
308
  }
311
- async registerMembership(idCommitment, rateLimit = DEFAULT_RATE_LIMIT) {
309
+ async registerMembership(idCommitmentBigInt, rateLimit = DEFAULT_RATE_LIMIT) {
312
310
  if (rateLimit < RATE_LIMIT_PARAMS.MIN_RATE ||
313
311
  rateLimit > RATE_LIMIT_PARAMS.MAX_RATE) {
314
312
  throw new Error(`Rate limit must be between ${RATE_LIMIT_PARAMS.MIN_RATE} and ${RATE_LIMIT_PARAMS.MAX_RATE}`);
315
313
  }
316
- return this.contract.register(idCommitment, rateLimit, []);
314
+ return this.contract.register(idCommitmentBigInt, rateLimit, []);
317
315
  }
318
- async withdraw(token) {
316
+ async withdraw(token, from) {
319
317
  try {
320
- const tx = await this.contract.withdraw(token);
318
+ const tx = await this.contract.withdraw(token, from);
321
319
  await tx.wait();
322
320
  }
323
321
  catch (error) {
@@ -328,7 +326,7 @@ class RLNBaseContract {
328
326
  try {
329
327
  log.info(`Registering identity with rate limit: ${this.rateLimit} messages/epoch`);
330
328
  // Check if the ID commitment is already registered
331
- const existingIndex = await this.getMemberIndex(identity.IDCommitmentBigInt.toString());
329
+ const existingIndex = await this.getMemberIndex(identity.IDCommitmentBigInt);
332
330
  if (existingIndex) {
333
331
  throw new Error(`ID commitment is already registered with index ${existingIndex}`);
334
332
  }
@@ -466,9 +464,9 @@ class RLNBaseContract {
466
464
  }
467
465
  return this._membersExpiredFilter;
468
466
  }
469
- async getMemberIndex(idCommitment) {
467
+ async getMemberIndex(idCommitmentBigInt) {
470
468
  try {
471
- const events = await this.contract.queryFilter(this.contract.filters.MembershipRegistered(idCommitment));
469
+ const events = await this.contract.queryFilter(this.contract.filters.MembershipRegistered(idCommitmentBigInt));
472
470
  if (events.length === 0)
473
471
  return undefined;
474
472
  // Get the most recent registration event
@@ -6,7 +6,7 @@ import { Logger } from '../../../utils/dist/logger/index.js';
6
6
  import { MerkleRootTracker } from '../root_tracker.js';
7
7
  import { zeroPadLE } from '../utils/bytes.js';
8
8
  import { RLNBaseContract } from './rln_base_contract.js';
9
- import { BigNumber } from '../../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js';
9
+ import { BigNumber } from '@ethersproject/bignumber';
10
10
 
11
11
  const log = new Logger("waku:rln:contract");
12
12
  class RLNContract extends RLNBaseContract {
@@ -45,8 +45,14 @@ function writeUIntLE(buf, value, offset, byteLength, noAssert) {
45
45
  * @returns BigInt
46
46
  */
47
47
  function buildBigIntFromUint8Array(array, byteOffset = 0) {
48
- const dataView = new DataView(array.buffer);
49
- return dataView.getBigUint64(byteOffset, true);
48
+ // Convert byte array to BigInt in big-endian format (to match nwaku)
49
+ let result = 0n;
50
+ // Process all 32 bytes (or the available bytes if less)
51
+ const length = Math.min(array.length - byteOffset, 32);
52
+ for (let i = 0; i < length; i++) {
53
+ result = (result << 8n) | BigInt(array[byteOffset + i]);
54
+ }
55
+ return result;
50
56
  }
51
57
  /**
52
58
  * Fills with zeros to set length
@@ -1,4 +1,4 @@
1
- import { Web3Provider } from '../../../../node_modules/@ethersproject/providers/lib.esm/web3-provider.js';
1
+ import * as providers from '@ethersproject/providers';
2
2
 
3
3
  const extractMetaMaskSigner = async () => {
4
4
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -7,7 +7,7 @@ const extractMetaMaskSigner = async () => {
7
7
  throw Error("Missing or invalid Ethereum provider. Please install a Web3 wallet such as MetaMask.");
8
8
  }
9
9
  await ethereum.request({ method: "eth_requestAccounts" });
10
- const provider = new Web3Provider(ethereum, "any");
10
+ const provider = new providers.Web3Provider(ethereum, "any");
11
11
  return provider.getSigner();
12
12
  };
13
13