@waku/rln 0.1.4 → 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 (123) hide show
  1. package/README.md +5 -0
  2. package/bundle/_virtual/index2.js +1 -1
  3. package/bundle/index.js +3 -1
  4. package/bundle/node_modules/@ethersproject/abi/lib.esm/_version.js +1 -1
  5. package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/_version.js +1 -1
  6. package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/_version.js +1 -1
  7. package/bundle/node_modules/@ethersproject/address/lib.esm/_version.js +1 -1
  8. package/bundle/node_modules/@ethersproject/bignumber/lib.esm/_version.js +1 -1
  9. package/bundle/node_modules/@ethersproject/contracts/lib.esm/_version.js +1 -1
  10. package/bundle/node_modules/@ethersproject/contracts/lib.esm/index.js +1 -1
  11. package/bundle/node_modules/@ethersproject/hash/lib.esm/_version.js +1 -1
  12. package/bundle/node_modules/@ethersproject/keccak256/lib.esm/index.js +1 -1
  13. package/bundle/node_modules/{js-sha3 → @ethersproject/keccak256/node_modules/js-sha3}/src/sha3.js +2 -2
  14. package/bundle/node_modules/@ethersproject/networks/lib.esm/_version.js +1 -1
  15. package/bundle/node_modules/@ethersproject/networks/lib.esm/index.js +1 -19
  16. package/bundle/node_modules/@ethersproject/properties/lib.esm/_version.js +1 -1
  17. package/bundle/node_modules/@ethersproject/providers/lib.esm/_version.js +1 -1
  18. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/_version.js +1 -1
  19. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/elliptic.js +10 -58
  20. package/bundle/node_modules/@ethersproject/strings/lib.esm/_version.js +1 -1
  21. package/bundle/node_modules/@ethersproject/transactions/lib.esm/_version.js +1 -1
  22. package/bundle/node_modules/@ethersproject/web/lib.esm/_version.js +1 -1
  23. package/bundle/packages/rln/dist/contract/abi.js +502 -248
  24. package/bundle/packages/rln/dist/contract/constants.js +4 -4
  25. package/bundle/packages/rln/dist/contract/rln_contract.js +120 -36
  26. package/bundle/packages/rln/dist/contract/rln_light_contract.js +473 -0
  27. package/bundle/packages/rln/dist/keystore/cipher.js +3 -3
  28. package/bundle/packages/rln/dist/keystore/keystore.js +3 -2
  29. package/bundle/packages/rln/dist/rln.js +6 -6
  30. package/bundle/packages/rln/dist/rln_light.js +149 -0
  31. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/checksum.js +3 -3
  32. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/cipher.js +4 -4
  33. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/class.js +7 -7
  34. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/functional.js +7 -7
  35. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/index.js +6 -6
  36. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/kdf.js +5 -5
  37. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/password.js +1 -1
  38. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/schema-validation-generated.js +1 -1
  39. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/schema-validation.js +2 -2
  40. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/lib/types.js +1 -1
  41. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/aes.js +3 -3
  42. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/pbkdf2.js +7 -7
  43. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/random.js +3 -3
  44. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/scrypt.js +3 -3
  45. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/sha256.js +3 -3
  46. package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/utils.js +7 -7
  47. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/_assert.js +1 -1
  48. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/_sha2.js +3 -3
  49. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/_u64.js +1 -1
  50. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/cryptoBrowser.js +1 -1
  51. package/bundle/packages/rln/node_modules/@noble/hashes/esm/_assert.js +43 -0
  52. package/bundle/packages/rln/node_modules/@noble/hashes/esm/_sha2.js +116 -0
  53. package/bundle/packages/rln/node_modules/@noble/hashes/esm/hmac.js +79 -0
  54. package/bundle/packages/rln/node_modules/@noble/hashes/esm/sha256.js +126 -0
  55. package/bundle/packages/rln/node_modules/@noble/hashes/esm/utils.js +43 -0
  56. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/hmac.js +3 -3
  57. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/pbkdf2.js +4 -4
  58. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/scrypt.js +5 -5
  59. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/sha256.js +3 -3
  60. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/sha512.js +4 -4
  61. package/bundle/{node_modules/@chainsafe/bls-keystore → packages/rln}/node_modules/@noble/hashes/utils.js +2 -2
  62. package/dist/.tsbuildinfo +1 -1
  63. package/dist/codec.test-utils.d.ts +36 -0
  64. package/dist/codec.test-utils.js +56 -0
  65. package/dist/codec.test-utils.js.map +1 -0
  66. package/dist/contract/abi.d.ts +21 -17
  67. package/dist/contract/abi.js +502 -248
  68. package/dist/contract/abi.js.map +1 -1
  69. package/dist/contract/constants.d.ts +22 -18
  70. package/dist/contract/constants.js +3 -3
  71. package/dist/contract/constants.js.map +1 -1
  72. package/dist/contract/rln_contract.d.ts +10 -3
  73. package/dist/contract/rln_contract.js +120 -36
  74. package/dist/contract/rln_contract.js.map +1 -1
  75. package/dist/contract/rln_light_contract.d.ts +124 -0
  76. package/dist/contract/rln_light_contract.js +456 -0
  77. package/dist/contract/rln_light_contract.js.map +1 -0
  78. package/dist/contract/test-setup.d.ts +26 -0
  79. package/dist/contract/test-setup.js +56 -0
  80. package/dist/contract/test-setup.js.map +1 -0
  81. package/dist/contract/test-utils.d.ts +39 -0
  82. package/dist/contract/test-utils.js +118 -0
  83. package/dist/contract/test-utils.js.map +1 -0
  84. package/dist/index.d.ts +5 -2
  85. package/dist/index.js +4 -2
  86. package/dist/index.js.map +1 -1
  87. package/dist/keystore/keystore.js +2 -1
  88. package/dist/keystore/keystore.js.map +1 -1
  89. package/dist/keystore/types.d.ts +1 -0
  90. package/dist/rln.d.ts +1 -1
  91. package/dist/rln.js +6 -6
  92. package/dist/rln.js.map +1 -1
  93. package/dist/rln_light.d.ts +64 -0
  94. package/dist/rln_light.js +144 -0
  95. package/dist/rln_light.js.map +1 -0
  96. package/package.json +1 -91
  97. package/src/codec.test-utils.ts +80 -0
  98. package/src/contract/abi.ts +502 -248
  99. package/src/contract/constants.ts +3 -3
  100. package/src/contract/rln_contract.ts +158 -46
  101. package/src/contract/rln_light_contract.ts +718 -0
  102. package/src/contract/test-setup.ts +86 -0
  103. package/src/contract/test-utils.ts +179 -0
  104. package/src/index.ts +17 -2
  105. package/src/keystore/keystore.ts +2 -1
  106. package/src/keystore/types.ts +1 -0
  107. package/src/rln.ts +7 -7
  108. package/src/rln_light.ts +235 -0
  109. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/index.js +0 -0
  110. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/md5.js +0 -0
  111. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/nil.js +0 -0
  112. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/parse.js +0 -0
  113. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/regex.js +0 -0
  114. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/rng.js +0 -0
  115. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/sha1.js +0 -0
  116. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/stringify.js +0 -0
  117. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v1.js +0 -0
  118. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v3.js +0 -0
  119. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v35.js +0 -0
  120. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v4.js +0 -0
  121. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/v5.js +0 -0
  122. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/validate.js +0 -0
  123. /package/bundle/{node_modules → packages/rln/node_modules}/@chainsafe/bls-keystore/node_modules/uuid/dist/esm-browser/version.js +0 -0
package/package.json CHANGED
@@ -1,91 +1 @@
1
- {
2
- "name": "@waku/rln",
3
- "version": "0.1.4",
4
- "description": "RLN (Rate Limiting Nullifier) implementation for Waku",
5
- "types": "./dist/index.d.ts",
6
- "module": "./dist/index.js",
7
- "exports": {
8
- ".": {
9
- "types": "./dist/index.d.ts",
10
- "import": "./dist/index.js"
11
- }
12
- },
13
- "type": "module",
14
- "homepage": "https://github.com/waku-org/js-waku/tree/master/packages/rln#readme",
15
- "repository": {
16
- "type": "git",
17
- "url": "https://github.com/waku-org/js-waku.git"
18
- },
19
- "bugs": {
20
- "url": "https://github.com/waku-org/js-waku/issues"
21
- },
22
- "license": "MIT OR Apache-2.0",
23
- "keywords": [
24
- "waku",
25
- "rln",
26
- "rate-limiting",
27
- "privacy",
28
- "web3"
29
- ],
30
- "scripts": {
31
- "build": "run-s build:**",
32
- "build:copy": "mkdir -p dist/resources && cp -r src/resources/* dist/resources/",
33
- "build:esm": "tsc",
34
- "build:bundle": "rollup --config rollup.config.js",
35
- "fix": "run-s fix:*",
36
- "fix:lint": "eslint src *.js --fix",
37
- "check": "run-s check:*",
38
- "check:tsc": "tsc -p tsconfig.dev.json",
39
- "check:lint": "eslint \"src/!(resources)/**/*.{ts,js}\" *.js",
40
- "check:spelling": "cspell \"{README.md,src/**/*.ts}\"",
41
- "test": "NODE_ENV=test run-s test:*",
42
- "test:browser": "karma start karma.conf.cjs",
43
- "watch:build": "tsc -p tsconfig.json -w",
44
- "watch:test": "mocha --watch",
45
- "prepublish": "npm run build",
46
- "reset-hard": "git clean -dfx -e .idea && git reset --hard && npm i && npm run build"
47
- },
48
- "engines": {
49
- "node": ">=20"
50
- },
51
- "devDependencies": {
52
- "@rollup/plugin-commonjs": "^25.0.7",
53
- "@rollup/plugin-json": "^6.0.0",
54
- "@rollup/plugin-node-resolve": "^15.2.3",
55
- "@types/chai": "^5.0.1",
56
- "@types/chai-spies": "^1.0.6",
57
- "@types/deep-equal-in-any-order": "^1.0.4",
58
- "@types/lodash": "^4.17.15",
59
- "@types/sinon": "^17.0.3",
60
- "@waku/build-utils": "^1.0.0",
61
- "@waku/message-encryption": "^0.0.32",
62
- "chai": "^5.1.2",
63
- "chai-as-promised": "^8.0.1",
64
- "chai-spies": "^1.1.0",
65
- "chai-subset": "^1.6.0",
66
- "deep-equal-in-any-order": "^2.0.6",
67
- "fast-check": "^3.23.2",
68
- "rollup-plugin-copy": "^3.5.0",
69
- "sinon": "^19.0.2"
70
- },
71
- "files": [
72
- "dist",
73
- "bundle",
74
- "src/**/*.ts",
75
- "!**/*.spec.*",
76
- "!**/*.json",
77
- "CHANGELOG.md",
78
- "LICENSE",
79
- "README.md"
80
- ],
81
- "dependencies": {
82
- "@chainsafe/bls-keystore": "3.0.0",
83
- "@waku/core": "^0.0.34",
84
- "@waku/utils": "^0.0.22",
85
- "@waku/zerokit-rln-wasm": "^0.0.13",
86
- "ethereum-cryptography": "^3.1.0",
87
- "ethers": "^5.7.2",
88
- "lodash": "^4.17.21",
89
- "uuid": "^11.0.5"
90
- }
91
- }
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
+ }