@waku/rln 0.1.4-d27db21.0 → 0.1.5-5e19700.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 (107) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +5 -0
  3. package/bundle/index.js +3 -1
  4. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/abstract-coder.js +1 -1
  5. package/bundle/node_modules/@ethersproject/abi/lib.esm/interface.js +1 -1
  6. package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/index.js +1 -1
  7. package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/index.js +11 -11
  8. package/bundle/node_modules/@ethersproject/bytes/lib.esm/_version.js +1 -1
  9. package/bundle/node_modules/@ethersproject/contracts/lib.esm/index.js +7 -7
  10. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js +2 -2
  11. package/bundle/node_modules/@ethersproject/hash/lib.esm/typed-data.js +2 -2
  12. package/bundle/node_modules/@ethersproject/keccak256/node_modules/js-sha3/src/sha3.js +1 -1
  13. package/bundle/node_modules/@ethersproject/logger/lib.esm/_version.js +1 -1
  14. package/bundle/node_modules/@ethersproject/properties/lib.esm/index.js +1 -1
  15. package/bundle/node_modules/@ethersproject/providers/lib.esm/base-provider.js +44 -44
  16. package/bundle/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js +8 -8
  17. package/bundle/node_modules/@ethersproject/rlp/lib.esm/_version.js +1 -1
  18. package/bundle/node_modules/@ethersproject/transactions/lib.esm/index.js +1 -1
  19. package/bundle/node_modules/@ethersproject/web/lib.esm/geturl.js +1 -1
  20. package/bundle/node_modules/@ethersproject/web/lib.esm/index.js +2 -2
  21. package/bundle/node_modules/@multiformats/multiaddr/dist/src/multiaddr.js +1 -0
  22. package/bundle/node_modules/@noble/hashes/esm/sha3.js +1 -1
  23. package/bundle/node_modules/bn.js/lib/bn.js +1 -1
  24. package/bundle/packages/core/dist/lib/connection_manager/connection_manager.js +6 -6
  25. package/bundle/packages/rln/dist/contract/abi.js +502 -248
  26. package/bundle/packages/rln/dist/contract/constants.js +4 -5
  27. package/bundle/packages/rln/dist/contract/rln_contract.js +121 -37
  28. package/bundle/packages/rln/dist/contract/rln_light_contract.js +473 -0
  29. package/bundle/packages/rln/dist/keystore/keystore.js +2 -1
  30. package/bundle/packages/rln/dist/rln.js +6 -6
  31. package/bundle/packages/rln/dist/rln_light.js +149 -0
  32. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/checksum.js +2 -2
  33. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/cipher.js +3 -3
  34. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/class.js +4 -4
  35. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/functional.js +4 -4
  36. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/kdf.js +4 -4
  37. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/password.js +1 -1
  38. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/schema-validation-generated.js +1 -1
  39. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/schema-validation.js +1 -1
  40. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/aes.js +1 -1
  41. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/pbkdf2.js +1 -1
  42. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/random.js +1 -1
  43. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/scrypt.js +1 -1
  44. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/sha256.js +1 -1
  45. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/utils.js +1 -1
  46. package/bundle/packages/rln/node_modules/@noble/hashes/_assert.js +1 -1
  47. package/bundle/packages/rln/node_modules/@noble/hashes/_sha2.js +2 -2
  48. package/bundle/packages/rln/node_modules/@noble/hashes/_u64.js +1 -1
  49. package/bundle/packages/rln/node_modules/@noble/hashes/cryptoBrowser.js +1 -1
  50. package/bundle/packages/rln/node_modules/@noble/hashes/esm/_assert.js +43 -0
  51. package/bundle/packages/rln/node_modules/@noble/hashes/esm/_sha2.js +116 -0
  52. package/bundle/packages/rln/node_modules/@noble/hashes/esm/hmac.js +79 -0
  53. package/bundle/packages/rln/node_modules/@noble/hashes/esm/sha256.js +126 -0
  54. package/bundle/packages/rln/node_modules/@noble/hashes/esm/utils.js +43 -0
  55. package/bundle/packages/rln/node_modules/@noble/hashes/hmac.js +2 -2
  56. package/bundle/packages/rln/node_modules/@noble/hashes/pbkdf2.js +1 -1
  57. package/bundle/packages/rln/node_modules/@noble/hashes/scrypt.js +2 -2
  58. package/bundle/packages/rln/node_modules/@noble/hashes/sha256.js +1 -1
  59. package/bundle/packages/rln/node_modules/@noble/hashes/sha512.js +2 -2
  60. package/bundle/packages/rln/node_modules/@noble/hashes/utils.js +1 -1
  61. package/dist/.tsbuildinfo +1 -1
  62. package/dist/codec.test-utils.d.ts +36 -0
  63. package/dist/codec.test-utils.js +56 -0
  64. package/dist/codec.test-utils.js.map +1 -0
  65. package/dist/contract/abi.d.ts +21 -17
  66. package/dist/contract/abi.js +502 -248
  67. package/dist/contract/abi.js.map +1 -1
  68. package/dist/contract/constants.d.ts +22 -18
  69. package/dist/contract/constants.js +3 -3
  70. package/dist/contract/constants.js.map +1 -1
  71. package/dist/contract/rln_contract.d.ts +10 -3
  72. package/dist/contract/rln_contract.js +120 -36
  73. package/dist/contract/rln_contract.js.map +1 -1
  74. package/dist/contract/rln_light_contract.d.ts +124 -0
  75. package/dist/contract/rln_light_contract.js +456 -0
  76. package/dist/contract/rln_light_contract.js.map +1 -0
  77. package/dist/contract/test-setup.d.ts +26 -0
  78. package/dist/contract/test-setup.js +56 -0
  79. package/dist/contract/test-setup.js.map +1 -0
  80. package/dist/contract/test-utils.d.ts +39 -0
  81. package/dist/contract/test-utils.js +118 -0
  82. package/dist/contract/test-utils.js.map +1 -0
  83. package/dist/index.d.ts +5 -2
  84. package/dist/index.js +4 -2
  85. package/dist/index.js.map +1 -1
  86. package/dist/keystore/keystore.js +2 -1
  87. package/dist/keystore/keystore.js.map +1 -1
  88. package/dist/keystore/types.d.ts +1 -0
  89. package/dist/rln.d.ts +1 -1
  90. package/dist/rln.js +6 -6
  91. package/dist/rln.js.map +1 -1
  92. package/dist/rln_light.d.ts +64 -0
  93. package/dist/rln_light.js +144 -0
  94. package/dist/rln_light.js.map +1 -0
  95. package/package.json +1 -1
  96. package/src/codec.test-utils.ts +80 -0
  97. package/src/contract/abi.ts +502 -248
  98. package/src/contract/constants.ts +3 -3
  99. package/src/contract/rln_contract.ts +158 -46
  100. package/src/contract/rln_light_contract.ts +718 -0
  101. package/src/contract/test-setup.ts +86 -0
  102. package/src/contract/test-utils.ts +179 -0
  103. package/src/index.ts +17 -2
  104. package/src/keystore/keystore.ts +2 -1
  105. package/src/keystore/types.ts +1 -0
  106. package/src/rln.ts +7 -7
  107. package/src/rln_light.ts +235 -0
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@waku/rln","version":"0.1.4-d27db21.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.32-d27db21.0","chai":"^5.1.2","chai-as-promised":"^8.0.1","chai-spies":"^1.1.0","chai-subset":"^1.6.0","deep-equal-in-any-order":"^2.0.6","fast-check":"^3.23.2","rollup-plugin-copy":"^3.5.0","sinon":"^19.0.2"},"files":["dist","bundle","src/**/*.ts","!**/*.spec.*","!**/*.json","CHANGELOG.md","LICENSE","README.md"],"dependencies":{"@chainsafe/bls-keystore":"3.0.0","@waku/core":"0.0.34-d27db21.0","@waku/utils":"0.0.22-d27db21.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"}}
1
+ {"name":"@waku/rln","version":"0.1.5-5e19700.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.33-5e19700.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.35-5e19700.0","@waku/utils":"0.0.23-5e19700.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"}}
@@ -0,0 +1,80 @@
1
+ import type { IProtoMessage } from "@waku/interfaces";
2
+ import { expect } from "chai";
3
+
4
+ import { createRLN } from "./create.js";
5
+ import type { IdentityCredential } from "./identity.js";
6
+
7
+ export interface TestRLNCodecSetup {
8
+ rlnInstance: any;
9
+ credential: IdentityCredential;
10
+ index: number;
11
+ payload: Uint8Array;
12
+ }
13
+
14
+ export const TEST_CONSTANTS = {
15
+ contentTopic: "/test/1/waku-message/utf8",
16
+ emptyPubsubTopic: "",
17
+ defaultIndex: 0,
18
+ defaultPayload: new Uint8Array([1, 2, 3, 4, 5])
19
+ } as const;
20
+
21
+ export const EMPTY_PROTO_MESSAGE = {
22
+ timestamp: undefined,
23
+ contentTopic: "",
24
+ ephemeral: undefined,
25
+ meta: undefined,
26
+ rateLimitProof: undefined,
27
+ version: undefined
28
+ } as const;
29
+
30
+ /**
31
+ * Creates a basic RLN setup for codec tests
32
+ */
33
+ export async function createTestRLNCodecSetup(): Promise<TestRLNCodecSetup> {
34
+ const rlnInstance = await createRLN();
35
+ const credential = rlnInstance.zerokit.generateIdentityCredentials();
36
+ rlnInstance.zerokit.insertMember(credential.IDCommitment);
37
+
38
+ return {
39
+ rlnInstance,
40
+ credential,
41
+ index: TEST_CONSTANTS.defaultIndex,
42
+ payload: TEST_CONSTANTS.defaultPayload
43
+ };
44
+ }
45
+
46
+ /**
47
+ * Creates a meta setter function for testing
48
+ */
49
+ export function createTestMetaSetter(): (
50
+ msg: IProtoMessage & { meta: undefined }
51
+ ) => Uint8Array {
52
+ return (msg: IProtoMessage & { meta: undefined }): Uint8Array => {
53
+ const buffer = new ArrayBuffer(4);
54
+ const view = new DataView(buffer);
55
+ view.setUint32(0, msg.payload.length, false);
56
+ return new Uint8Array(buffer);
57
+ };
58
+ }
59
+
60
+ /**
61
+ * Verifies common RLN message properties
62
+ */
63
+ export function verifyRLNMessage(
64
+ msg: any,
65
+ payload: Uint8Array,
66
+ contentTopic: string,
67
+ version: number,
68
+ rlnInstance: any
69
+ ): void {
70
+ expect(msg.rateLimitProof).to.not.be.undefined;
71
+ expect(msg.verify([rlnInstance.zerokit.getMerkleRoot()])).to.be.true;
72
+ expect(msg.verifyNoRoot()).to.be.true;
73
+ expect(msg.epoch).to.not.be.undefined;
74
+ expect(msg.epoch).to.be.gt(0);
75
+
76
+ expect(msg.contentTopic).to.eq(contentTopic);
77
+ expect(msg.msg.version).to.eq(version);
78
+ expect(msg.payload).to.deep.eq(payload);
79
+ expect(msg.timestamp).to.not.be.undefined;
80
+ }