@waku/rln 0.1.4 → 0.1.5-164df63.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 (223) hide show
  1. package/README.md +5 -0
  2. package/bundle/_virtual/index2.js +1 -1
  3. package/bundle/index.js +4 -1
  4. package/bundle/packages/rln/dist/contract/abi.js +502 -248
  5. package/bundle/packages/rln/dist/contract/constants.js +5 -4
  6. package/bundle/packages/rln/dist/contract/rln_base_contract.js +483 -0
  7. package/bundle/packages/rln/dist/contract/rln_contract.js +32 -358
  8. package/bundle/packages/rln/dist/contract/types.js +9 -0
  9. package/bundle/packages/rln/dist/create.js +1 -1
  10. package/bundle/packages/rln/dist/credentials_manager.js +215 -0
  11. package/bundle/packages/rln/dist/keystore/cipher.js +3 -3
  12. package/bundle/packages/rln/dist/keystore/keystore.js +12 -7
  13. package/bundle/packages/rln/dist/rln.js +56 -166
  14. package/bundle/packages/rln/dist/utils/bytes.js +8 -2
  15. package/bundle/packages/rln/dist/utils/metamask.js +2 -2
  16. package/bundle/packages/rln/dist/zerokit.js +5 -5
  17. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/checksum.js +3 -3
  18. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/cipher.js +4 -4
  19. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/class.js +7 -7
  20. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/functional.js +7 -7
  21. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/index.js +6 -6
  22. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/kdf.js +5 -5
  23. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/password.js +1 -1
  24. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/schema-validation-generated.js +1 -1
  25. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/schema-validation.js +2 -2
  26. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/types.js +1 -1
  27. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/aes.js +3 -3
  28. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/pbkdf2.js +7 -7
  29. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/random.js +3 -3
  30. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/scrypt.js +3 -3
  31. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/sha256.js +3 -3
  32. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/utils.js +7 -7
  33. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/_assert.js +1 -1
  34. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/_sha2.js +3 -3
  35. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/_u64.js +1 -1
  36. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/cryptoBrowser.js +1 -1
  37. package/bundle/packages/rln/node_modules/@noble/hashes/esm/_assert.js +43 -0
  38. package/bundle/packages/rln/node_modules/@noble/hashes/esm/_sha2.js +116 -0
  39. package/bundle/packages/rln/node_modules/@noble/hashes/esm/hmac.js +79 -0
  40. package/bundle/packages/rln/node_modules/@noble/hashes/esm/sha256.js +126 -0
  41. package/bundle/packages/rln/node_modules/@noble/hashes/esm/utils.js +43 -0
  42. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/hmac.js +3 -3
  43. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/pbkdf2.js +4 -4
  44. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/scrypt.js +5 -5
  45. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/sha256.js +3 -3
  46. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/sha512.js +4 -4
  47. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/utils.js +2 -2
  48. package/dist/.tsbuildinfo +1 -1
  49. package/dist/codec.test-utils.d.ts +36 -0
  50. package/dist/codec.test-utils.js +56 -0
  51. package/dist/codec.test-utils.js.map +1 -0
  52. package/dist/contract/abi.d.ts +21 -17
  53. package/dist/contract/abi.js +502 -248
  54. package/dist/contract/abi.js.map +1 -1
  55. package/dist/contract/constants.d.ts +22 -18
  56. package/dist/contract/constants.js +3 -3
  57. package/dist/contract/constants.js.map +1 -1
  58. package/dist/contract/index.d.ts +1 -0
  59. package/dist/contract/index.js +1 -0
  60. package/dist/contract/index.js.map +1 -1
  61. package/dist/contract/rln_base_contract.d.ts +90 -0
  62. package/dist/contract/rln_base_contract.js +466 -0
  63. package/dist/contract/rln_base_contract.js.map +1 -0
  64. package/dist/contract/rln_contract.d.ts +5 -115
  65. package/dist/contract/rln_contract.js +30 -355
  66. package/dist/contract/rln_contract.js.map +1 -1
  67. package/dist/contract/test-setup.d.ts +26 -0
  68. package/dist/contract/test-setup.js +56 -0
  69. package/dist/contract/test-setup.js.map +1 -0
  70. package/dist/contract/test-utils.d.ts +39 -0
  71. package/dist/contract/test-utils.js +118 -0
  72. package/dist/contract/test-utils.js.map +1 -0
  73. package/dist/contract/types.d.ts +45 -0
  74. package/dist/contract/types.js +8 -0
  75. package/dist/contract/types.js.map +1 -0
  76. package/dist/create.js +1 -1
  77. package/dist/create.js.map +1 -1
  78. package/dist/credentials_manager.d.ts +44 -0
  79. package/dist/credentials_manager.js +197 -0
  80. package/dist/credentials_manager.js.map +1 -0
  81. package/dist/index.d.ts +6 -2
  82. package/dist/index.js +5 -2
  83. package/dist/index.js.map +1 -1
  84. package/dist/keystore/keystore.js +11 -6
  85. package/dist/keystore/keystore.js.map +1 -1
  86. package/dist/keystore/types.d.ts +4 -3
  87. package/dist/rln.d.ts +9 -52
  88. package/dist/rln.js +54 -163
  89. package/dist/rln.js.map +1 -1
  90. package/dist/types.d.ts +27 -0
  91. package/dist/types.js +2 -0
  92. package/dist/types.js.map +1 -0
  93. package/dist/utils/bytes.js +8 -2
  94. package/dist/utils/bytes.js.map +1 -1
  95. package/dist/zerokit.d.ts +3 -3
  96. package/dist/zerokit.js +5 -5
  97. package/dist/zerokit.js.map +1 -1
  98. package/package.json +1 -91
  99. package/src/codec.test-utils.ts +80 -0
  100. package/src/contract/abi.ts +502 -248
  101. package/src/contract/constants.ts +3 -3
  102. package/src/contract/index.ts +1 -0
  103. package/src/contract/rln_base_contract.ts +712 -0
  104. package/src/contract/rln_contract.ts +37 -579
  105. package/src/contract/test-setup.ts +86 -0
  106. package/src/contract/test-utils.ts +179 -0
  107. package/src/contract/types.ts +53 -0
  108. package/src/create.ts +1 -1
  109. package/src/credentials_manager.ts +282 -0
  110. package/src/index.ts +19 -2
  111. package/src/keystore/keystore.ts +23 -12
  112. package/src/keystore/types.ts +4 -3
  113. package/src/rln.ts +67 -258
  114. package/src/types.ts +31 -0
  115. package/src/utils/bytes.ts +10 -2
  116. package/src/zerokit.ts +3 -3
  117. package/bundle/_virtual/__node-resolve_empty.js +0 -6
  118. package/bundle/_virtual/_node-resolve_empty.js +0 -3
  119. package/bundle/_virtual/bn.js +0 -3
  120. package/bundle/_virtual/common.js +0 -3
  121. package/bundle/_virtual/common2.js +0 -3
  122. package/bundle/_virtual/hash.js +0 -3
  123. package/bundle/_virtual/inherits_browser.js +0 -3
  124. package/bundle/_virtual/ripemd.js +0 -3
  125. package/bundle/_virtual/sha.js +0 -3
  126. package/bundle/_virtual/sha3.js +0 -3
  127. package/bundle/_virtual/utils3.js +0 -3
  128. package/bundle/node_modules/@ethersproject/abi/lib.esm/_version.js +0 -3
  129. package/bundle/node_modules/@ethersproject/abi/lib.esm/abi-coder.js +0 -96
  130. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/abstract-coder.js +0 -148
  131. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/address.js +0 -26
  132. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/anonymous.js +0 -20
  133. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/array.js +0 -210
  134. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/boolean.js +0 -18
  135. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/bytes.js +0 -30
  136. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/fixed-bytes.js +0 -26
  137. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/null.js +0 -22
  138. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/number.js +0 -43
  139. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/string.js +0 -19
  140. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/tuple.js +0 -58
  141. package/bundle/node_modules/@ethersproject/abi/lib.esm/fragments.js +0 -854
  142. package/bundle/node_modules/@ethersproject/abi/lib.esm/interface.js +0 -609
  143. package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/_version.js +0 -3
  144. package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/index.js +0 -66
  145. package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/_version.js +0 -3
  146. package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/index.js +0 -302
  147. package/bundle/node_modules/@ethersproject/address/lib.esm/_version.js +0 -3
  148. package/bundle/node_modules/@ethersproject/address/lib.esm/index.js +0 -110
  149. package/bundle/node_modules/@ethersproject/base64/lib.esm/base64.js +0 -20
  150. package/bundle/node_modules/@ethersproject/basex/lib.esm/index.js +0 -120
  151. package/bundle/node_modules/@ethersproject/bignumber/lib.esm/_version.js +0 -3
  152. package/bundle/node_modules/@ethersproject/bignumber/lib.esm/bignumber.js +0 -287
  153. package/bundle/node_modules/@ethersproject/bytes/lib.esm/_version.js +0 -3
  154. package/bundle/node_modules/@ethersproject/bytes/lib.esm/index.js +0 -402
  155. package/bundle/node_modules/@ethersproject/constants/lib.esm/addresses.js +0 -3
  156. package/bundle/node_modules/@ethersproject/constants/lib.esm/bignumbers.js +0 -8
  157. package/bundle/node_modules/@ethersproject/constants/lib.esm/hashes.js +0 -3
  158. package/bundle/node_modules/@ethersproject/contracts/lib.esm/_version.js +0 -3
  159. package/bundle/node_modules/@ethersproject/contracts/lib.esm/index.js +0 -893
  160. package/bundle/node_modules/@ethersproject/hash/lib.esm/_version.js +0 -3
  161. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js +0 -256
  162. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js +0 -36
  163. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js +0 -135
  164. package/bundle/node_modules/@ethersproject/hash/lib.esm/id.js +0 -8
  165. package/bundle/node_modules/@ethersproject/hash/lib.esm/namehash.js +0 -64
  166. package/bundle/node_modules/@ethersproject/hash/lib.esm/typed-data.js +0 -443
  167. package/bundle/node_modules/@ethersproject/keccak256/lib.esm/index.js +0 -8
  168. package/bundle/node_modules/@ethersproject/logger/lib.esm/_version.js +0 -3
  169. package/bundle/node_modules/@ethersproject/logger/lib.esm/index.js +0 -352
  170. package/bundle/node_modules/@ethersproject/networks/lib.esm/_version.js +0 -3
  171. package/bundle/node_modules/@ethersproject/networks/lib.esm/index.js +0 -266
  172. package/bundle/node_modules/@ethersproject/properties/lib.esm/_version.js +0 -3
  173. package/bundle/node_modules/@ethersproject/properties/lib.esm/index.js +0 -127
  174. package/bundle/node_modules/@ethersproject/providers/lib.esm/_version.js +0 -3
  175. package/bundle/node_modules/@ethersproject/providers/lib.esm/base-provider.js +0 -2007
  176. package/bundle/node_modules/@ethersproject/providers/lib.esm/formatter.js +0 -422
  177. package/bundle/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js +0 -674
  178. package/bundle/node_modules/@ethersproject/providers/lib.esm/web3-provider.js +0 -132
  179. package/bundle/node_modules/@ethersproject/rlp/lib.esm/_version.js +0 -3
  180. package/bundle/node_modules/@ethersproject/rlp/lib.esm/index.js +0 -120
  181. package/bundle/node_modules/@ethersproject/sha2/lib.esm/sha2.js +0 -8
  182. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/_version.js +0 -3
  183. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/elliptic.js +0 -2478
  184. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/index.js +0 -76
  185. package/bundle/node_modules/@ethersproject/strings/lib.esm/_version.js +0 -3
  186. package/bundle/node_modules/@ethersproject/strings/lib.esm/utf8.js +0 -219
  187. package/bundle/node_modules/@ethersproject/transactions/lib.esm/_version.js +0 -3
  188. package/bundle/node_modules/@ethersproject/transactions/lib.esm/index.js +0 -279
  189. package/bundle/node_modules/@ethersproject/web/lib.esm/_version.js +0 -3
  190. package/bundle/node_modules/@ethersproject/web/lib.esm/geturl.js +0 -69
  191. package/bundle/node_modules/@ethersproject/web/lib.esm/index.js +0 -404
  192. package/bundle/node_modules/bech32/index.js +0 -187
  193. package/bundle/node_modules/bn.js/lib/bn.js +0 -3361
  194. package/bundle/node_modules/hash.js/lib/hash/common.js +0 -97
  195. package/bundle/node_modules/hash.js/lib/hash/hmac.js +0 -51
  196. package/bundle/node_modules/hash.js/lib/hash/ripemd.js +0 -152
  197. package/bundle/node_modules/hash.js/lib/hash/sha/1.js +0 -81
  198. package/bundle/node_modules/hash.js/lib/hash/sha/224.js +0 -33
  199. package/bundle/node_modules/hash.js/lib/hash/sha/256.js +0 -113
  200. package/bundle/node_modules/hash.js/lib/hash/sha/384.js +0 -39
  201. package/bundle/node_modules/hash.js/lib/hash/sha/512.js +0 -336
  202. package/bundle/node_modules/hash.js/lib/hash/sha/common.js +0 -53
  203. package/bundle/node_modules/hash.js/lib/hash/sha.js +0 -14
  204. package/bundle/node_modules/hash.js/lib/hash/utils.js +0 -282
  205. package/bundle/node_modules/hash.js/lib/hash.js +0 -33
  206. package/bundle/node_modules/inherits/inherits_browser.js +0 -33
  207. package/bundle/node_modules/js-sha3/src/sha3.js +0 -660
  208. package/bundle/node_modules/minimalistic-assert/index.js +0 -13
  209. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/index.js +0 -0
  210. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/md5.js +0 -0
  211. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/nil.js +0 -0
  212. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/parse.js +0 -0
  213. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/regex.js +0 -0
  214. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/rng.js +0 -0
  215. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/sha1.js +0 -0
  216. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/stringify.js +0 -0
  217. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v1.js +0 -0
  218. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v3.js +0 -0
  219. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v35.js +0 -0
  220. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v4.js +0 -0
  221. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v5.js +0 -0
  222. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/validate.js +0 -0
  223. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/version.js +0 -0
@@ -0,0 +1,118 @@
1
+ import { hexToBytes } from "@waku/utils/bytes";
2
+ import { expect } from "chai";
3
+ import * as ethers from "ethers";
4
+ import sinon from "sinon";
5
+ import { DEFAULT_RATE_LIMIT, LINEA_CONTRACT } from "./constants.js";
6
+ export const mockRateLimits = {
7
+ minRate: 20,
8
+ maxRate: 600,
9
+ maxTotalRate: 1200,
10
+ currentTotalRate: 500
11
+ };
12
+ export function createMockProvider() {
13
+ return {
14
+ getLogs: () => [],
15
+ getBlockNumber: () => Promise.resolve(1000),
16
+ getNetwork: () => Promise.resolve({ chainId: 11155111 })
17
+ };
18
+ }
19
+ export function createMockFilters() {
20
+ return {
21
+ MembershipRegistered: () => ({ address: LINEA_CONTRACT.address }),
22
+ MembershipErased: () => ({ address: LINEA_CONTRACT.address }),
23
+ MembershipExpired: () => ({ address: LINEA_CONTRACT.address })
24
+ };
25
+ }
26
+ export function createMockRegistryContract(overrides = {}) {
27
+ const filters = {
28
+ MembershipRegistered: () => ({ address: LINEA_CONTRACT.address }),
29
+ MembershipErased: () => ({ address: LINEA_CONTRACT.address }),
30
+ MembershipExpired: () => ({ address: LINEA_CONTRACT.address })
31
+ };
32
+ const baseContract = {
33
+ minMembershipRateLimit: () => Promise.resolve(ethers.BigNumber.from(mockRateLimits.minRate)),
34
+ maxMembershipRateLimit: () => Promise.resolve(ethers.BigNumber.from(mockRateLimits.maxRate)),
35
+ maxTotalRateLimit: () => Promise.resolve(ethers.BigNumber.from(mockRateLimits.maxTotalRate)),
36
+ currentTotalRateLimit: () => Promise.resolve(ethers.BigNumber.from(mockRateLimits.currentTotalRate)),
37
+ queryFilter: () => [],
38
+ provider: createMockProvider(),
39
+ filters,
40
+ on: () => ({}),
41
+ removeAllListeners: () => ({}),
42
+ register: () => ({
43
+ wait: () => Promise.resolve({
44
+ events: [mockRLNRegisteredEvent()]
45
+ })
46
+ }),
47
+ estimateGas: {
48
+ register: () => Promise.resolve(ethers.BigNumber.from(100000))
49
+ },
50
+ functions: {
51
+ register: () => Promise.resolve()
52
+ },
53
+ getMemberIndex: () => Promise.resolve(null),
54
+ interface: {
55
+ getEvent: (eventName) => ({
56
+ name: eventName,
57
+ format: () => { }
58
+ })
59
+ },
60
+ address: LINEA_CONTRACT.address
61
+ };
62
+ // Merge overrides while preserving filters
63
+ const merged = {
64
+ ...baseContract,
65
+ ...overrides,
66
+ filters: { ...filters, ...(overrides.filters || {}) }
67
+ };
68
+ return merged;
69
+ }
70
+ export function mockRLNRegisteredEvent(idCommitment) {
71
+ return {
72
+ args: {
73
+ idCommitment: idCommitment ||
74
+ "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
75
+ membershipRateLimit: ethers.BigNumber.from(DEFAULT_RATE_LIMIT),
76
+ index: ethers.BigNumber.from(1)
77
+ },
78
+ event: "MembershipRegistered"
79
+ };
80
+ }
81
+ export function formatIdCommitment(idCommitmentBigInt) {
82
+ return "0x" + idCommitmentBigInt.toString(16).padStart(64, "0");
83
+ }
84
+ export function createRegisterStub(identity) {
85
+ return sinon.stub().callsFake(() => ({
86
+ wait: () => Promise.resolve({
87
+ events: [
88
+ {
89
+ event: "MembershipRegistered",
90
+ args: {
91
+ idCommitment: formatIdCommitment(identity.IDCommitmentBigInt),
92
+ membershipRateLimit: ethers.BigNumber.from(DEFAULT_RATE_LIMIT),
93
+ index: ethers.BigNumber.from(1)
94
+ }
95
+ }
96
+ ]
97
+ })
98
+ }));
99
+ }
100
+ export function verifyRegistration(decryptedCredentials, identity, registerStub, insertMemberSpy) {
101
+ if (!decryptedCredentials) {
102
+ throw new Error("Decrypted credentials should not be undefined");
103
+ }
104
+ // Verify registration call
105
+ expect(registerStub.calledWith(sinon.match.same(identity.IDCommitmentBigInt), sinon.match.same(DEFAULT_RATE_LIMIT), sinon.match.array, sinon.match.object)).to.be.true;
106
+ // Verify credential properties
107
+ expect(decryptedCredentials).to.have.property("identity");
108
+ expect(decryptedCredentials).to.have.property("membership");
109
+ expect(decryptedCredentials.membership).to.include({
110
+ address: LINEA_CONTRACT.address,
111
+ treeIndex: 1
112
+ });
113
+ // Verify member insertion
114
+ const expectedIdCommitment = ethers.utils.zeroPad(hexToBytes(formatIdCommitment(identity.IDCommitmentBigInt)), 32);
115
+ expect(insertMemberSpy.callCount).to.equal(1);
116
+ expect(insertMemberSpy.getCall(0).args[0]).to.deep.equal(expectedIdCommitment);
117
+ }
118
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/contract/test-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { ethers } from "ethers";
2
+ export interface CustomQueryOptions extends FetchMembersOptions {
3
+ membersFilter: ethers.EventFilter;
4
+ }
5
+ export type Member = {
6
+ idCommitment: string;
7
+ index: ethers.BigNumber;
8
+ };
9
+ export interface RLNContractOptions {
10
+ signer: ethers.Signer;
11
+ address: string;
12
+ rateLimit?: number;
13
+ }
14
+ export interface RLNContractInitOptions extends RLNContractOptions {
15
+ contract?: ethers.Contract;
16
+ }
17
+ export interface MembershipRegisteredEvent {
18
+ idCommitment: string;
19
+ membershipRateLimit: ethers.BigNumber;
20
+ index: ethers.BigNumber;
21
+ }
22
+ export type FetchMembersOptions = {
23
+ fromBlock?: number;
24
+ fetchRange?: number;
25
+ fetchChunks?: number;
26
+ };
27
+ export interface MembershipInfo {
28
+ index: ethers.BigNumber;
29
+ idCommitment: string;
30
+ rateLimit: number;
31
+ startBlock: number;
32
+ endBlock: number;
33
+ state: MembershipState;
34
+ depositAmount: ethers.BigNumber;
35
+ activeDuration: number;
36
+ gracePeriodDuration: number;
37
+ holder: string;
38
+ token: string;
39
+ }
40
+ export declare enum MembershipState {
41
+ Active = "Active",
42
+ GracePeriod = "GracePeriod",
43
+ Expired = "Expired",
44
+ ErasedAwaitsWithdrawal = "ErasedAwaitsWithdrawal"
45
+ }
@@ -0,0 +1,8 @@
1
+ export var MembershipState;
2
+ (function (MembershipState) {
3
+ MembershipState["Active"] = "Active";
4
+ MembershipState["GracePeriod"] = "GracePeriod";
5
+ MembershipState["Expired"] = "Expired";
6
+ MembershipState["ErasedAwaitsWithdrawal"] = "ErasedAwaitsWithdrawal";
7
+ })(MembershipState || (MembershipState = {}));
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/contract/types.ts"],"names":[],"mappings":"AA+CA,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,8CAA2B,CAAA;IAC3B,sCAAmB,CAAA;IACnB,oEAAiD,CAAA;AACnD,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B"}
package/dist/create.js CHANGED
@@ -3,6 +3,6 @@ export async function createRLN() {
3
3
  // asynchronously. This file does the single async import, so
4
4
  // that no one else needs to worry about it again.
5
5
  const rlnModule = await import("./rln.js");
6
- return rlnModule.create();
6
+ return rlnModule.RLNInstance.create();
7
7
  }
8
8
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,iEAAiE;IACjE,6DAA6D;IAC7D,kDAAkD;IAClD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,iEAAiE;IACjE,6DAA6D;IAC7D,kDAAkD;IAClD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AACxC,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { ethers } from "ethers";
2
+ import { RLNBaseContract } from "./contract/rln_base_contract.js";
3
+ import { Keystore } from "./keystore/index.js";
4
+ import type { DecryptedCredentials, EncryptedCredentials } from "./keystore/index.js";
5
+ import { KeystoreEntity, Password } from "./keystore/types.js";
6
+ import { RegisterMembershipOptions, StartRLNOptions } from "./types.js";
7
+ import { Zerokit } from "./zerokit.js";
8
+ /**
9
+ * Manages credentials for RLN
10
+ * This is a lightweight implementation of the RLN contract that doesn't require Zerokit
11
+ * It is used to register membership and generate identity credentials
12
+ */
13
+ export declare class RLNCredentialsManager {
14
+ protected started: boolean;
15
+ protected starting: boolean;
16
+ contract: undefined | RLNBaseContract;
17
+ signer: undefined | ethers.Signer;
18
+ protected keystore: Keystore;
19
+ credentials: undefined | DecryptedCredentials;
20
+ zerokit: undefined | Zerokit;
21
+ constructor(zerokit?: Zerokit);
22
+ get provider(): undefined | ethers.providers.Provider;
23
+ start(options?: StartRLNOptions): Promise<void>;
24
+ registerMembership(options: RegisterMembershipOptions): Promise<undefined | DecryptedCredentials>;
25
+ /**
26
+ * Changes credentials in use by relying on provided Keystore earlier in rln.start
27
+ * @param id: string, hash of credentials to select from Keystore
28
+ * @param password: string or bytes to use to decrypt credentials from Keystore
29
+ */
30
+ useCredentials(id: string, password: Password): Promise<void>;
31
+ protected determineStartOptions(options: StartRLNOptions, credentials: KeystoreEntity | undefined): Promise<StartRLNOptions>;
32
+ protected static decryptCredentialsIfNeeded(credentials?: EncryptedCredentials | DecryptedCredentials): Promise<{
33
+ credentials?: DecryptedCredentials;
34
+ keystore?: Keystore;
35
+ }>;
36
+ protected verifyCredentialsAgainstContract(credentials: KeystoreEntity): Promise<void>;
37
+ /**
38
+ * Generates an identity credential from a seed string
39
+ * This is a pure implementation that doesn't rely on Zerokit
40
+ * @param seed A string seed to generate the identity from
41
+ * @returns IdentityCredential
42
+ */
43
+ private generateSeededIdentityCredential;
44
+ }
@@ -0,0 +1,197 @@
1
+ import { hmac } from "@noble/hashes/hmac";
2
+ import { sha256 } from "@noble/hashes/sha256";
3
+ import { Logger } from "@waku/utils";
4
+ import { LINEA_CONTRACT } from "./contract/constants.js";
5
+ import { RLNBaseContract } from "./contract/rln_base_contract.js";
6
+ import { IdentityCredential } from "./identity.js";
7
+ import { Keystore } from "./keystore/index.js";
8
+ import { buildBigIntFromUint8Array, extractMetaMaskSigner } from "./utils/index.js";
9
+ const log = new Logger("waku:credentials");
10
+ /**
11
+ * Manages credentials for RLN
12
+ * This is a lightweight implementation of the RLN contract that doesn't require Zerokit
13
+ * It is used to register membership and generate identity credentials
14
+ */
15
+ export class RLNCredentialsManager {
16
+ started = false;
17
+ starting = false;
18
+ contract;
19
+ signer;
20
+ keystore = Keystore.create();
21
+ credentials;
22
+ zerokit;
23
+ constructor(zerokit) {
24
+ log.info("RLNCredentialsManager initialized");
25
+ this.zerokit = zerokit;
26
+ }
27
+ get provider() {
28
+ return this.contract?.provider;
29
+ }
30
+ async start(options = {}) {
31
+ if (this.started || this.starting) {
32
+ log.info("RLNCredentialsManager already started or starting");
33
+ return;
34
+ }
35
+ log.info("Starting RLNCredentialsManager");
36
+ this.starting = true;
37
+ try {
38
+ const { credentials, keystore } = await RLNCredentialsManager.decryptCredentialsIfNeeded(options.credentials);
39
+ if (credentials) {
40
+ log.info("Credentials successfully decrypted");
41
+ }
42
+ const { signer, address, rateLimit } = await this.determineStartOptions(options, credentials);
43
+ log.info(`Using contract address: ${address}`);
44
+ if (keystore) {
45
+ this.keystore = keystore;
46
+ log.info("Using provided keystore");
47
+ }
48
+ this.credentials = credentials;
49
+ this.signer = signer;
50
+ this.contract = new RLNBaseContract({
51
+ address: address,
52
+ signer: signer,
53
+ rateLimit: rateLimit ?? this.zerokit?.rateLimit
54
+ });
55
+ log.info("RLNCredentialsManager successfully started");
56
+ this.started = true;
57
+ }
58
+ catch (error) {
59
+ log.error("Failed to start RLNCredentialsManager", error);
60
+ throw error;
61
+ }
62
+ finally {
63
+ this.starting = false;
64
+ }
65
+ }
66
+ async registerMembership(options) {
67
+ if (!this.contract) {
68
+ log.error("RLN Contract is not initialized");
69
+ throw Error("RLN Contract is not initialized.");
70
+ }
71
+ log.info("Registering membership");
72
+ let identity = "identity" in options && options.identity;
73
+ if ("signature" in options) {
74
+ log.info("Generating identity from signature");
75
+ if (this.zerokit) {
76
+ log.info("Using Zerokit to generate identity");
77
+ identity = this.zerokit.generateSeededIdentityCredential(options.signature);
78
+ }
79
+ else {
80
+ log.info("Using local implementation to generate identity");
81
+ identity = this.generateSeededIdentityCredential(options.signature);
82
+ }
83
+ }
84
+ if (!identity) {
85
+ log.error("Missing signature or identity to register membership");
86
+ throw Error("Missing signature or identity to register membership.");
87
+ }
88
+ log.info("Registering identity with contract");
89
+ return this.contract.registerWithIdentity(identity);
90
+ }
91
+ /**
92
+ * Changes credentials in use by relying on provided Keystore earlier in rln.start
93
+ * @param id: string, hash of credentials to select from Keystore
94
+ * @param password: string or bytes to use to decrypt credentials from Keystore
95
+ */
96
+ async useCredentials(id, password) {
97
+ log.info(`Attempting to use credentials with ID: ${id}`);
98
+ this.credentials = await this.keystore?.readCredential(id, password);
99
+ if (this.credentials) {
100
+ log.info("Successfully loaded credentials");
101
+ }
102
+ else {
103
+ log.warn("Failed to load credentials");
104
+ }
105
+ }
106
+ async determineStartOptions(options, credentials) {
107
+ let chainId = credentials?.membership.chainId;
108
+ const address = credentials?.membership.address ||
109
+ options.address ||
110
+ LINEA_CONTRACT.address;
111
+ if (address === LINEA_CONTRACT.address) {
112
+ chainId = LINEA_CONTRACT.chainId.toString();
113
+ log.info(`Using Linea contract with chainId: ${chainId}`);
114
+ }
115
+ const signer = options.signer || (await extractMetaMaskSigner());
116
+ const currentChainId = await signer.getChainId();
117
+ log.info(`Current chain ID: ${currentChainId}`);
118
+ if (chainId && chainId !== currentChainId.toString()) {
119
+ log.error(`Chain ID mismatch: contract=${chainId}, current=${currentChainId}`);
120
+ throw Error(`Failed to start RLN contract, chain ID of contract is different from current one: contract-${chainId}, current network-${currentChainId}`);
121
+ }
122
+ return {
123
+ signer,
124
+ address
125
+ };
126
+ }
127
+ static async decryptCredentialsIfNeeded(credentials) {
128
+ if (!credentials) {
129
+ log.info("No credentials provided");
130
+ return {};
131
+ }
132
+ if ("identity" in credentials) {
133
+ log.info("Using already decrypted credentials");
134
+ return { credentials };
135
+ }
136
+ log.info("Attempting to decrypt credentials");
137
+ const keystore = Keystore.fromString(credentials.keystore);
138
+ if (!keystore) {
139
+ log.warn("Failed to create keystore from string");
140
+ return {};
141
+ }
142
+ try {
143
+ const decryptedCredentials = await keystore.readCredential(credentials.id, credentials.password);
144
+ log.info(`Successfully decrypted credentials with ID: ${credentials.id}`);
145
+ return {
146
+ keystore,
147
+ credentials: decryptedCredentials
148
+ };
149
+ }
150
+ catch (error) {
151
+ log.error("Failed to decrypt credentials", error);
152
+ throw error;
153
+ }
154
+ }
155
+ async verifyCredentialsAgainstContract(credentials) {
156
+ if (!this.contract) {
157
+ throw Error("Failed to verify chain coordinates: no contract initialized.");
158
+ }
159
+ const registryAddress = credentials.membership.address;
160
+ const currentRegistryAddress = this.contract.address;
161
+ if (registryAddress !== currentRegistryAddress) {
162
+ throw Error(`Failed to verify chain coordinates: credentials contract address=${registryAddress} is not equal to registryContract address=${currentRegistryAddress}`);
163
+ }
164
+ const chainId = credentials.membership.chainId;
165
+ const network = await this.contract.provider.getNetwork();
166
+ const currentChainId = network.chainId;
167
+ if (chainId !== currentChainId.toString()) {
168
+ throw Error(`Failed to verify chain coordinates: credentials chainID=${chainId} is not equal to registryContract chainID=${currentChainId}`);
169
+ }
170
+ }
171
+ /**
172
+ * Generates an identity credential from a seed string
173
+ * This is a pure implementation that doesn't rely on Zerokit
174
+ * @param seed A string seed to generate the identity from
175
+ * @returns IdentityCredential
176
+ */
177
+ generateSeededIdentityCredential(seed) {
178
+ log.info("Generating seeded identity credential");
179
+ // Convert the seed to bytes
180
+ const encoder = new TextEncoder();
181
+ const seedBytes = encoder.encode(seed);
182
+ // Generate deterministic values using HMAC-SHA256
183
+ // We use different context strings for each component to ensure they're different
184
+ const idTrapdoor = hmac(sha256, seedBytes, encoder.encode("IDTrapdoor"));
185
+ const idNullifier = hmac(sha256, seedBytes, encoder.encode("IDNullifier"));
186
+ // Generate IDSecretHash as a hash of IDTrapdoor and IDNullifier
187
+ const combinedBytes = new Uint8Array([...idTrapdoor, ...idNullifier]);
188
+ const idSecretHash = sha256(combinedBytes);
189
+ // Generate IDCommitment as a hash of IDSecretHash
190
+ const idCommitment = sha256(idSecretHash);
191
+ // Convert IDCommitment to BigInt
192
+ const idCommitmentBigInt = buildBigIntFromUint8Array(idCommitment);
193
+ log.info("Successfully generated identity credential");
194
+ return new IdentityCredential(idTrapdoor, idNullifier, idSecretHash, idCommitment, idCommitmentBigInt);
195
+ }
196
+ }
197
+ //# sourceMappingURL=credentials_manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials_manager.js","sourceRoot":"","sources":["../src/credentials_manager.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,15 @@
1
1
  import { RLNDecoder, RLNEncoder } from "./codec.js";
2
2
  import { RLN_ABI } from "./contract/abi.js";
3
- import { RLNContract, SEPOLIA_CONTRACT } from "./contract/index.js";
3
+ import { LINEA_CONTRACT, RLNContract } from "./contract/index.js";
4
+ import { RLNBaseContract } from "./contract/rln_base_contract.js";
4
5
  import { createRLN } from "./create.js";
6
+ import { RLNCredentialsManager } from "./credentials_manager.js";
5
7
  import { IdentityCredential } from "./identity.js";
6
8
  import { Keystore } from "./keystore/index.js";
7
9
  import { Proof } from "./proof.js";
8
10
  import { RLNInstance } from "./rln.js";
9
11
  import { MerkleRootTracker } from "./root_tracker.js";
10
12
  import { extractMetaMaskSigner } from "./utils/index.js";
11
- export { createRLN, Keystore, RLNInstance, IdentityCredential, Proof, RLNEncoder, RLNDecoder, MerkleRootTracker, RLNContract, SEPOLIA_CONTRACT, extractMetaMaskSigner, RLN_ABI };
13
+ export { RLNCredentialsManager, RLNBaseContract, createRLN, Keystore, RLNInstance, IdentityCredential, Proof, RLNEncoder, RLNDecoder, MerkleRootTracker, RLNContract, LINEA_CONTRACT, extractMetaMaskSigner, RLN_ABI };
14
+ export type { DecryptedCredentials, EncryptedCredentials, Keccak256Hash, KeystoreEntity, MembershipHash, KeystoreMembershipInfo, Password, Sha256Hash } from "./keystore/types.js";
15
+ export * from "./contract/index.js";
package/dist/index.js CHANGED
@@ -1,12 +1,15 @@
1
1
  import { RLNDecoder, RLNEncoder } from "./codec.js";
2
2
  import { RLN_ABI } from "./contract/abi.js";
3
- import { RLNContract, SEPOLIA_CONTRACT } from "./contract/index.js";
3
+ import { LINEA_CONTRACT, RLNContract } from "./contract/index.js";
4
+ import { RLNBaseContract } from "./contract/rln_base_contract.js";
4
5
  import { createRLN } from "./create.js";
6
+ import { RLNCredentialsManager } from "./credentials_manager.js";
5
7
  import { IdentityCredential } from "./identity.js";
6
8
  import { Keystore } from "./keystore/index.js";
7
9
  import { Proof } from "./proof.js";
8
10
  import { RLNInstance } from "./rln.js";
9
11
  import { MerkleRootTracker } from "./root_tracker.js";
10
12
  import { extractMetaMaskSigner } from "./utils/index.js";
11
- export { createRLN, Keystore, RLNInstance, IdentityCredential, Proof, RLNEncoder, RLNDecoder, MerkleRootTracker, RLNContract, SEPOLIA_CONTRACT, extractMetaMaskSigner, RLN_ABI };
13
+ export { RLNCredentialsManager, RLNBaseContract, createRLN, Keystore, RLNInstance, IdentityCredential, Proof, RLNEncoder, RLNDecoder, MerkleRootTracker, RLNContract, LINEA_CONTRACT, extractMetaMaskSigner, RLN_ABI };
14
+ export * from "./contract/index.js";
12
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACL,SAAS,EACT,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,OAAO,EACR,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,SAAS,EACT,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,OAAO,EACR,CAAC;AAaF,cAAc,qBAAqB,CAAC"}
@@ -159,7 +159,8 @@ export class Keystore {
159
159
  membership: {
160
160
  treeIndex: _.get(obj, "treeIndex"),
161
161
  chainId: _.get(obj, "membershipContract.chainId"),
162
- address: _.get(obj, "membershipContract.address")
162
+ address: _.get(obj, "membershipContract.address"),
163
+ rateLimit: _.get(obj, "userMessageLimit")
163
164
  }
164
165
  };
165
166
  }
@@ -169,6 +170,9 @@ export class Keystore {
169
170
  }
170
171
  }
171
172
  static fromArraylikeToBytes(obj) {
173
+ if (Array.isArray(obj)) {
174
+ return new Uint8Array(obj);
175
+ }
172
176
  const bytes = [];
173
177
  let index = 0;
174
178
  let lastElement = obj[index];
@@ -190,15 +194,16 @@ export class Keystore {
190
194
  return utf8ToBytes(JSON.stringify({
191
195
  treeIndex: options.membership.treeIndex,
192
196
  identityCredential: {
193
- idCommitment: options.identity.IDCommitment,
194
- idNullifier: options.identity.IDNullifier,
195
- idSecretHash: options.identity.IDSecretHash,
196
- idTrapdoor: options.identity.IDTrapdoor
197
+ idCommitment: Array.from(options.identity.IDCommitment),
198
+ idNullifier: Array.from(options.identity.IDNullifier),
199
+ idSecretHash: Array.from(options.identity.IDSecretHash),
200
+ idTrapdoor: Array.from(options.identity.IDTrapdoor)
197
201
  },
198
202
  membershipContract: {
199
203
  chainId: options.membership.chainId,
200
204
  address: options.membership.address
201
- }
205
+ },
206
+ userMessageLimit: options.membership.rateLimit
202
207
  }));
203
208
  }
204
209
  }
@@ -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,14 +3,15 @@ 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 = {
7
- chainId: number;
6
+ export type KeystoreMembershipInfo = {
7
+ chainId: string;
8
8
  address: string;
9
9
  treeIndex: number;
10
+ rateLimit: number;
10
11
  };
11
12
  export type KeystoreEntity = {
12
13
  identity: IdentityCredential;
13
- membership: MembershipInfo;
14
+ membership: KeystoreMembershipInfo;
14
15
  };
15
16
  export type DecryptedCredentials = KeystoreEntity;
16
17
  export type EncryptedCredentials = {