@waku/rln 0.1.1 → 0.1.2-126bce3

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 (106) hide show
  1. package/README.md +26 -2
  2. package/bundle/assets/rln_wasm_bg-a503e304.wasm +0 -0
  3. package/bundle/index.js +56178 -8761
  4. package/dist/codec.d.ts +7 -4
  5. package/dist/codec.js +15 -5
  6. package/dist/codec.js.map +1 -1
  7. package/dist/{constants.d.ts → contract/constants.d.ts} +2 -2
  8. package/dist/contract/constants.js +67 -0
  9. package/dist/contract/constants.js.map +1 -0
  10. package/dist/contract/index.d.ts +2 -0
  11. package/dist/contract/index.js +3 -0
  12. package/dist/contract/index.js.map +1 -0
  13. package/dist/contract/rln_contract.d.ts +46 -0
  14. package/dist/contract/rln_contract.js +211 -0
  15. package/dist/contract/rln_contract.js.map +1 -0
  16. package/dist/create.d.ts +2 -0
  17. package/dist/create.js +8 -0
  18. package/dist/create.js.map +1 -0
  19. package/dist/identity.d.ts +9 -0
  20. package/dist/identity.js +24 -0
  21. package/dist/identity.js.map +1 -0
  22. package/dist/index.d.ts +9 -5
  23. package/dist/index.js +9 -12
  24. package/dist/index.js.map +1 -1
  25. package/dist/keystore/cipher.d.ts +4 -0
  26. package/dist/keystore/cipher.js +28 -0
  27. package/dist/keystore/cipher.js.map +1 -0
  28. package/dist/keystore/credential_validation_generated.d.ts +8 -0
  29. package/dist/keystore/credential_validation_generated.js +121 -0
  30. package/dist/keystore/credential_validation_generated.js.map +1 -0
  31. package/dist/keystore/index.d.ts +4 -0
  32. package/dist/keystore/index.js +3 -0
  33. package/dist/keystore/index.js.map +1 -0
  34. package/dist/keystore/keystore.d.ts +50 -0
  35. package/dist/keystore/keystore.js +205 -0
  36. package/dist/keystore/keystore.js.map +1 -0
  37. package/dist/keystore/keystore_validation_generated.d.ts +8 -0
  38. package/dist/keystore/keystore_validation_generated.js +75 -0
  39. package/dist/keystore/keystore_validation_generated.js.map +1 -0
  40. package/dist/keystore/schema_validator.d.ts +2 -0
  41. package/dist/keystore/schema_validator.js +18 -0
  42. package/dist/keystore/schema_validator.js.map +1 -0
  43. package/dist/keystore/types.d.ts +29 -0
  44. package/dist/keystore/types.js +2 -0
  45. package/dist/keystore/types.js.map +1 -0
  46. package/dist/message.d.ts +2 -1
  47. package/dist/message.js +10 -4
  48. package/dist/message.js.map +1 -1
  49. package/dist/proof.d.ts +21 -0
  50. package/dist/proof.js +49 -0
  51. package/dist/proof.js.map +1 -0
  52. package/dist/resources/verification_key.d.ts +9 -9
  53. package/dist/resources/witness_calculator.js.map +1 -0
  54. package/dist/rln.d.ts +55 -46
  55. package/dist/rln.js +136 -183
  56. package/dist/rln.js.map +1 -1
  57. package/dist/root_tracker.js +5 -2
  58. package/dist/root_tracker.js.map +1 -1
  59. package/dist/utils/bytes.d.ts +20 -0
  60. package/dist/utils/bytes.js +64 -0
  61. package/dist/utils/bytes.js.map +1 -0
  62. package/dist/utils/epoch.js.map +1 -0
  63. package/dist/utils/hash.d.ts +2 -0
  64. package/dist/utils/hash.js +13 -0
  65. package/dist/utils/hash.js.map +1 -0
  66. package/dist/utils/index.d.ts +4 -0
  67. package/dist/utils/index.js +5 -0
  68. package/dist/utils/index.js.map +1 -0
  69. package/dist/utils/metamask.d.ts +2 -0
  70. package/dist/utils/metamask.js +12 -0
  71. package/dist/utils/metamask.js.map +1 -0
  72. package/dist/zerokit.d.ts +19 -0
  73. package/dist/zerokit.js +105 -0
  74. package/dist/zerokit.js.map +1 -0
  75. package/package.json +38 -28
  76. package/src/codec.ts +18 -9
  77. package/src/create.ts +9 -0
  78. package/src/identity.ts +27 -0
  79. package/src/index.ts +16 -18
  80. package/src/message.ts +9 -5
  81. package/src/proof.ts +67 -0
  82. package/src/rln.ts +220 -270
  83. package/src/root_tracker.ts +4 -1
  84. package/src/zerokit.ts +181 -0
  85. package/bundle/assets/rln_wasm_bg-6f96f821.wasm +0 -0
  86. package/dist/.tsbuildinfo +0 -1
  87. package/dist/byte_utils.d.ts +0 -1
  88. package/dist/byte_utils.js +0 -24
  89. package/dist/byte_utils.js.map +0 -1
  90. package/dist/constants.js +0 -14
  91. package/dist/constants.js.map +0 -1
  92. package/dist/epoch.js.map +0 -1
  93. package/dist/rln_contract.d.ts +0 -34
  94. package/dist/rln_contract.js +0 -159
  95. package/dist/rln_contract.js.map +0 -1
  96. package/dist/witness_calculator.js.map +0 -1
  97. package/src/byte_utils.ts +0 -39
  98. package/src/constants.ts +0 -14
  99. package/src/epoch.ts +0 -30
  100. package/src/rln_contract.ts +0 -268
  101. package/src/witness_calculator.d.ts +0 -8
  102. package/src/witness_calculator.js +0 -335
  103. /package/dist/{witness_calculator.d.ts → resources/witness_calculator.d.ts} +0 -0
  104. /package/dist/{witness_calculator.js → resources/witness_calculator.js} +0 -0
  105. /package/dist/{epoch.d.ts → utils/epoch.d.ts} +0 -0
  106. /package/dist/{epoch.js → utils/epoch.js} +0 -0
package/dist/rln.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rln.js","sourceRoot":"","sources":["../src/rln.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rln.js","sourceRoot":"","sources":["../src/rln.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  class RootPerBlock {
2
+ root;
3
+ blockNumber;
2
4
  constructor(root, blockNumber) {
3
5
  this.root = root;
4
6
  this.blockNumber = blockNumber;
@@ -6,10 +8,11 @@ class RootPerBlock {
6
8
  }
7
9
  const maxBufferSize = 20;
8
10
  export class MerkleRootTracker {
11
+ acceptableRootWindowSize;
12
+ validMerkleRoots = new Array();
13
+ merkleRootBuffer = new Array();
9
14
  constructor(acceptableRootWindowSize, initialRoot) {
10
15
  this.acceptableRootWindowSize = acceptableRootWindowSize;
11
- this.validMerkleRoots = new Array();
12
- this.merkleRootBuffer = new Array();
13
16
  this.pushRoot(0, initialRoot);
14
17
  }
15
18
  backFill(fromBlockNumber) {
@@ -1 +1 @@
1
- {"version":3,"file":"root_tracker.js","sourceRoot":"","sources":["../src/root_tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"root_tracker.js","sourceRoot":"","sources":["../src/root_tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Concatenate Uint8Arrays
3
+ * @param input
4
+ * @returns concatenation of all Uint8Array received as input
5
+ */
6
+ export declare function concatenate(...input: Uint8Array[]): Uint8Array;
7
+ export declare function writeUIntLE(buf: Uint8Array, value: number, offset: number, byteLength: number, noAssert?: boolean): Uint8Array;
8
+ /**
9
+ * Transforms Uint8Array into BigInt
10
+ * @param array: Uint8Array
11
+ * @returns BigInt
12
+ */
13
+ export declare function buildBigIntFromUint8Array(array: Uint8Array, byteOffset?: number): bigint;
14
+ /**
15
+ * Fills with zeros to set length
16
+ * @param array little endian Uint8Array
17
+ * @param length amount to pad
18
+ * @returns little endian Uint8Array padded with zeros to set length
19
+ */
20
+ export declare function zeroPadLE(array: Uint8Array, length: number): Uint8Array;
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Concatenate Uint8Arrays
3
+ * @param input
4
+ * @returns concatenation of all Uint8Array received as input
5
+ */
6
+ export function concatenate(...input) {
7
+ let totalLength = 0;
8
+ for (const arr of input) {
9
+ totalLength += arr.length;
10
+ }
11
+ const result = new Uint8Array(totalLength);
12
+ let offset = 0;
13
+ for (const arr of input) {
14
+ result.set(arr, offset);
15
+ offset += arr.length;
16
+ }
17
+ return result;
18
+ }
19
+ // Adapted from https://github.com/feross/buffer
20
+ function checkInt(buf, value, offset, ext, max, min) {
21
+ if (value > max || value < min)
22
+ throw new RangeError('"value" argument is out of bounds');
23
+ if (offset + ext > buf.length)
24
+ throw new RangeError("Index out of range");
25
+ }
26
+ export function writeUIntLE(buf, value, offset, byteLength, noAssert) {
27
+ value = +value;
28
+ offset = offset >>> 0;
29
+ byteLength = byteLength >>> 0;
30
+ if (!noAssert) {
31
+ const maxBytes = Math.pow(2, 8 * byteLength) - 1;
32
+ checkInt(buf, value, offset, byteLength, maxBytes, 0);
33
+ }
34
+ let mul = 1;
35
+ let i = 0;
36
+ buf[offset] = value & 0xff;
37
+ while (++i < byteLength && (mul *= 0x100)) {
38
+ buf[offset + i] = (value / mul) & 0xff;
39
+ }
40
+ return buf;
41
+ }
42
+ /**
43
+ * Transforms Uint8Array into BigInt
44
+ * @param array: Uint8Array
45
+ * @returns BigInt
46
+ */
47
+ export function buildBigIntFromUint8Array(array, byteOffset = 0) {
48
+ const dataView = new DataView(array.buffer);
49
+ return dataView.getBigUint64(byteOffset, true);
50
+ }
51
+ /**
52
+ * Fills with zeros to set length
53
+ * @param array little endian Uint8Array
54
+ * @param length amount to pad
55
+ * @returns little endian Uint8Array padded with zeros to set length
56
+ */
57
+ export function zeroPadLE(array, length) {
58
+ const result = new Uint8Array(length);
59
+ for (let i = 0; i < length; i++) {
60
+ result[i] = array[i] || 0;
61
+ }
62
+ return result;
63
+ }
64
+ //# sourceMappingURL=bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/utils/bytes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAAG,KAAmB;IAChD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC;IAC5B,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gDAAgD;AAChD,SAAS,QAAQ,CACf,GAAe,EACf,KAAa,EACb,MAAc,EACd,GAAW,EACX,GAAW,EACX,GAAW;IAEX,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG;QAC5B,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAC;IAC5D,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM;QAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,GAAe,EACf,KAAa,EACb,MAAc,EACd,UAAkB,EAClB,QAAkB;IAElB,KAAK,GAAG,CAAC,KAAK,CAAC;IACf,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC;IACtB,UAAU,GAAG,UAAU,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACjD,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;QAC1C,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;IACzC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAiB,EACjB,aAAqB,CAAC;IAEtB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAiB,EAAE,MAAc;IACzD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epoch.js","sourceRoot":"","sources":["../../src/utils/epoch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,uBAAuB,GAAG,EAAE,CAAC,CAAC,wCAAwC;AAE5E,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAEpC,MAAM,UAAU,WAAW,CACzB,SAAe,EACf,mBAA2B,uBAAuB;IAElD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,gBAAgB,CAAC,CAAC;IACzD,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACpC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function poseidonHash(...input: Array<Uint8Array>): Uint8Array;
2
+ export declare function sha256(input: Uint8Array): Uint8Array;
@@ -0,0 +1,13 @@
1
+ import * as zerokitRLN from "@waku/zerokit-rln-wasm";
2
+ import { concatenate, writeUIntLE } from "./bytes.js";
3
+ export function poseidonHash(...input) {
4
+ const inputLen = writeUIntLE(new Uint8Array(8), input.length, 0, 8);
5
+ const lenPrefixedData = concatenate(inputLen, ...input);
6
+ return zerokitRLN.poseidonHash(lenPrefixedData);
7
+ }
8
+ export function sha256(input) {
9
+ const inputLen = writeUIntLE(new Uint8Array(8), input.length, 0, 8);
10
+ const lenPrefixedData = concatenate(inputLen, input);
11
+ return zerokitRLN.hash(lenPrefixedData);
12
+ }
13
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,UAAU,YAAY,CAAC,GAAG,KAAwB;IACtD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC;IACxD,OAAO,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAiB;IACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrD,OAAO,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { extractMetaMaskSigner } from "./metamask.js";
2
+ export { concatenate, writeUIntLE, buildBigIntFromUint8Array, zeroPadLE } from "./bytes.js";
3
+ export { sha256, poseidonHash } from "./hash.js";
4
+ export { dateToEpoch, epochIntToBytes, epochBytesToInt } from "./epoch.js";
@@ -0,0 +1,5 @@
1
+ export { extractMetaMaskSigner } from "./metamask.js";
2
+ export { concatenate, writeUIntLE, buildBigIntFromUint8Array, zeroPadLE } from "./bytes.js";
3
+ export { sha256, poseidonHash } from "./hash.js";
4
+ export { dateToEpoch, epochIntToBytes, epochBytesToInt } from "./epoch.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,WAAW,EACX,WAAW,EACX,yBAAyB,EACzB,SAAS,EACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ethers } from "ethers";
2
+ export declare const extractMetaMaskSigner: () => Promise<ethers.Signer>;
@@ -0,0 +1,12 @@
1
+ import { ethers } from "ethers";
2
+ export const extractMetaMaskSigner = async () => {
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ const ethereum = window.ethereum;
5
+ if (!ethereum) {
6
+ throw Error("Missing or invalid Ethereum provider. Please install a Web3 wallet such as MetaMask.");
7
+ }
8
+ await ethereum.request({ method: "eth_requestAccounts" });
9
+ const provider = new ethers.providers.Web3Provider(ethereum, "any");
10
+ return provider.getSigner();
11
+ };
12
+ //# sourceMappingURL=metamask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metamask.js","sourceRoot":"","sources":["../../src/utils/metamask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,IAA4B,EAAE;IACtE,8DAA8D;IAC9D,MAAM,QAAQ,GAAI,MAAc,CAAC,QAAQ,CAAC;IAE1C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,KAAK,CACT,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEpE,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;AAC9B,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { IRateLimitProof } from "@waku/interfaces";
2
+ import { IdentityCredential } from "./identity.js";
3
+ import { WitnessCalculator } from "./resources/witness_calculator.js";
4
+ export declare class Zerokit {
5
+ private zkRLN;
6
+ private witnessCalculator;
7
+ constructor(zkRLN: number, witnessCalculator: WitnessCalculator);
8
+ generateIdentityCredentials(): IdentityCredential;
9
+ generateSeededIdentityCredential(seed: string): IdentityCredential;
10
+ insertMember(idCommitment: Uint8Array): void;
11
+ insertMembers(index: number, ...idCommitments: Array<Uint8Array>): void;
12
+ deleteMember(index: number): void;
13
+ getMerkleRoot(): Uint8Array;
14
+ serializeMessage(uint8Msg: Uint8Array, memIndex: number, epoch: Uint8Array, idKey: Uint8Array): Uint8Array;
15
+ generateRLNProof(msg: Uint8Array, index: number, epoch: Uint8Array | Date | undefined, idSecretHash: Uint8Array): Promise<IRateLimitProof>;
16
+ verifyRLNProof(proof: IRateLimitProof | Uint8Array, msg: Uint8Array): boolean;
17
+ verifyWithRoots(proof: IRateLimitProof | Uint8Array, msg: Uint8Array, ...roots: Array<Uint8Array>): boolean;
18
+ verifyWithNoRoot(proof: IRateLimitProof | Uint8Array, msg: Uint8Array): boolean;
19
+ }
@@ -0,0 +1,105 @@
1
+ import * as zerokitRLN from "@waku/zerokit-rln-wasm";
2
+ import { IdentityCredential } from "./identity.js";
3
+ import { Proof, proofToBytes } from "./proof.js";
4
+ import { concatenate, dateToEpoch, epochIntToBytes, writeUIntLE } from "./utils/index.js";
5
+ export class Zerokit {
6
+ zkRLN;
7
+ witnessCalculator;
8
+ constructor(zkRLN, witnessCalculator) {
9
+ this.zkRLN = zkRLN;
10
+ this.witnessCalculator = witnessCalculator;
11
+ }
12
+ generateIdentityCredentials() {
13
+ const memKeys = zerokitRLN.generateExtendedMembershipKey(this.zkRLN); // TODO: rename this function in zerokit rln-wasm
14
+ return IdentityCredential.fromBytes(memKeys);
15
+ }
16
+ generateSeededIdentityCredential(seed) {
17
+ const stringEncoder = new TextEncoder();
18
+ const seedBytes = stringEncoder.encode(seed);
19
+ // TODO: rename this function in zerokit rln-wasm
20
+ const memKeys = zerokitRLN.generateSeededExtendedMembershipKey(this.zkRLN, seedBytes);
21
+ return IdentityCredential.fromBytes(memKeys);
22
+ }
23
+ insertMember(idCommitment) {
24
+ zerokitRLN.insertMember(this.zkRLN, idCommitment);
25
+ }
26
+ insertMembers(index, ...idCommitments) {
27
+ // serializes a seq of IDCommitments to a byte seq
28
+ // the order of serialization is |id_commitment_len<8>|id_commitment<var>|
29
+ const idCommitmentLen = writeUIntLE(new Uint8Array(8), idCommitments.length, 0, 8);
30
+ const idCommitmentBytes = concatenate(idCommitmentLen, ...idCommitments);
31
+ zerokitRLN.setLeavesFrom(this.zkRLN, index, idCommitmentBytes);
32
+ }
33
+ deleteMember(index) {
34
+ zerokitRLN.deleteLeaf(this.zkRLN, index);
35
+ }
36
+ getMerkleRoot() {
37
+ return zerokitRLN.getRoot(this.zkRLN);
38
+ }
39
+ serializeMessage(uint8Msg, memIndex, epoch, idKey) {
40
+ // calculate message length
41
+ const msgLen = writeUIntLE(new Uint8Array(8), uint8Msg.length, 0, 8);
42
+ // Converting index to LE bytes
43
+ const memIndexBytes = writeUIntLE(new Uint8Array(8), memIndex, 0, 8);
44
+ // [ id_key<32> | id_index<8> | epoch<32> | signal_len<8> | signal<var> ]
45
+ return concatenate(idKey, memIndexBytes, epoch, msgLen, uint8Msg);
46
+ }
47
+ async generateRLNProof(msg, index, epoch, idSecretHash) {
48
+ if (epoch == undefined) {
49
+ epoch = epochIntToBytes(dateToEpoch(new Date()));
50
+ }
51
+ else if (epoch instanceof Date) {
52
+ epoch = epochIntToBytes(dateToEpoch(epoch));
53
+ }
54
+ if (epoch.length != 32)
55
+ throw "invalid epoch";
56
+ if (idSecretHash.length != 32)
57
+ throw "invalid id secret hash";
58
+ if (index < 0)
59
+ throw "index must be >= 0";
60
+ const serialized_msg = this.serializeMessage(msg, index, epoch, idSecretHash);
61
+ const rlnWitness = zerokitRLN.getSerializedRLNWitness(this.zkRLN, serialized_msg);
62
+ const inputs = zerokitRLN.RLNWitnessToJson(this.zkRLN, rlnWitness);
63
+ const calculatedWitness = await this.witnessCalculator.calculateWitness(inputs, false); // no sanity check being used in zerokit
64
+ const proofBytes = zerokitRLN.generate_rln_proof_with_witness(this.zkRLN, calculatedWitness, rlnWitness);
65
+ return new Proof(proofBytes);
66
+ }
67
+ verifyRLNProof(proof, msg) {
68
+ let pBytes;
69
+ if (proof instanceof Uint8Array) {
70
+ pBytes = proof;
71
+ }
72
+ else {
73
+ pBytes = proofToBytes(proof);
74
+ }
75
+ // calculate message length
76
+ const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
77
+ return zerokitRLN.verifyRLNProof(this.zkRLN, concatenate(pBytes, msgLen, msg));
78
+ }
79
+ verifyWithRoots(proof, msg, ...roots) {
80
+ let pBytes;
81
+ if (proof instanceof Uint8Array) {
82
+ pBytes = proof;
83
+ }
84
+ else {
85
+ pBytes = proofToBytes(proof);
86
+ }
87
+ // calculate message length
88
+ const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
89
+ const rootsBytes = concatenate(...roots);
90
+ return zerokitRLN.verifyWithRoots(this.zkRLN, concatenate(pBytes, msgLen, msg), rootsBytes);
91
+ }
92
+ verifyWithNoRoot(proof, msg) {
93
+ let pBytes;
94
+ if (proof instanceof Uint8Array) {
95
+ pBytes = proof;
96
+ }
97
+ else {
98
+ pBytes = proofToBytes(proof);
99
+ }
100
+ // calculate message length
101
+ const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
102
+ return zerokitRLN.verifyWithRoots(this.zkRLN, concatenate(pBytes, msgLen, msg), new Uint8Array());
103
+ }
104
+ }
105
+ //# sourceMappingURL=zerokit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zerokit.js","sourceRoot":"","sources":["../src/zerokit.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@waku/rln",
3
- "version": "0.1.1",
3
+ "version": "0.1.2-126bce3",
4
4
  "description": "Rate Limit Nullifier for js-waku",
5
5
  "types": "./dist/index.d.ts",
6
6
  "module": "./dist/index.js",
@@ -24,15 +24,14 @@
24
24
  "scripts": {
25
25
  "prepare": "husky install",
26
26
  "build": "run-s build:**",
27
+ "build:codegen": "node ./scripts/schema_validator_codegen.js",
27
28
  "build:tsc": "tsc",
28
29
  "build:bundle": "rollup --config rollup.config.js",
29
30
  "size": "npm run build && size-limit",
30
31
  "fix": "run-s fix:*",
31
- "fix:prettier": "prettier \"src/**/*.ts\" \"./*.json\" \"*.*js\" \".github/**/*.yml\" --write",
32
32
  "fix:lint": "eslint src --ext .ts --ext .cjs --fix",
33
33
  "test": "run-s test:*",
34
34
  "test:lint": "eslint src --ext .ts",
35
- "test:prettier": "prettier \"src/**/*.ts\" \"./*.json\" \"*.*js\" \".github/**/*.yml\" --list-different",
36
35
  "test:spelling": "cspell \"{*.md,.github/*.md,src/**/*.ts}\"",
37
36
  "test:tsc": "tsc -p tsconfig.dev.json",
38
37
  "test:browser": "karma start karma.conf.cjs",
@@ -45,7 +44,7 @@
45
44
  "crypto": false
46
45
  },
47
46
  "engines": {
48
- "node": ">=16"
47
+ "node": ">=18"
49
48
  },
50
49
  "publishConfig": {
51
50
  "access": "public",
@@ -59,55 +58,63 @@
59
58
  "@size-limit/preset-big-lib": "^8.0.0",
60
59
  "@types/app-root-path": "^1.2.4",
61
60
  "@types/chai": "^4.2.15",
61
+ "@types/chai-as-promised": "^7.1.6",
62
62
  "@types/chai-spies": "^1.0.3",
63
+ "@types/chai-subset": "^1.3.3",
63
64
  "@types/debug": "^4.1.7",
65
+ "@types/deep-equal-in-any-order": "^1.0.1",
66
+ "@types/lodash": "^4.14.199",
64
67
  "@types/mocha": "^9.1.0",
65
68
  "@types/node": "^17.0.6",
66
69
  "@types/tail": "^2.0.0",
67
70
  "@types/uuid": "^8.3.0",
68
- "@typescript-eslint/eslint-plugin": "^5.8.1",
69
- "@typescript-eslint/parser": "^5.8.1",
71
+ "@typescript-eslint/eslint-plugin": "^6.6.0",
72
+ "@typescript-eslint/parser": "^6.21.0",
73
+ "@waku/interfaces": "^0.0.20",
74
+ "@waku/message-encryption": "^0.0.23",
70
75
  "@web/rollup-plugin-import-meta-assets": "^1.0.7",
76
+ "ajv": "^8.12.0",
77
+ "ajv-formats": "^2.1.1",
71
78
  "app-root-path": "^3.0.0",
72
79
  "chai": "^4.3.4",
80
+ "chai-as-promised": "^7.1.1",
73
81
  "chai-spies": "^1.0.0",
82
+ "chai-subset": "^1.6.0",
74
83
  "cspell": "^5.14.0",
75
- "eslint": "^8.6.0",
76
- "eslint-config-prettier": "^8.3.0",
84
+ "deep-equal-in-any-order": "^2.0.6",
85
+ "eslint": "^8.56.0",
86
+ "eslint-config-prettier": "^9.0.0",
77
87
  "eslint-plugin-eslint-comments": "^3.2.0",
78
- "eslint-plugin-functional": "^4.0.2",
79
- "eslint-plugin-import": "^2.25.3",
80
- "eslint-plugin-prettier": "^4.0.0",
88
+ "eslint-plugin-functional": "^6.0.0",
89
+ "eslint-plugin-import": "^2.27.5",
90
+ "eslint-plugin-prettier": "^5.0.1",
81
91
  "fast-check": "^2.25.0",
82
92
  "gh-pages": "^3.2.3",
83
93
  "husky": "^7.0.4",
84
94
  "ignore-loader": "^0.1.2",
85
95
  "isomorphic-fetch": "^3.0.0",
86
- "@waku/interfaces": "^0.0.12",
87
- "@waku/message-encryption": "^0.0.15",
88
- "@waku/core": "^0.0.17",
89
96
  "jsdom": "^19.0.0",
90
97
  "jsdom-global": "^3.0.2",
91
- "karma": "^6.3.12",
92
- "karma-chrome-launcher": "^3.1.0",
98
+ "karma": "^6.4.2",
99
+ "karma-chrome-launcher": "^3.2.0",
100
+ "karma-firefox-launcher": "^2.1.2",
93
101
  "karma-mocha": "^2.0.1",
94
- "karma-webpack": "^5.0.0",
102
+ "karma-webkit-launcher": "^2.4.0",
103
+ "karma-webpack": "github:codymikol/karma-webpack#2337a82beb078c0d8e25ae8333a06249b8e72828",
95
104
  "lint-staged": "^13.0.3",
96
105
  "mocha": "10.1.0",
97
106
  "npm-run-all": "^4.1.5",
98
107
  "p-timeout": "^4.1.0",
99
- "prettier": "^2.1.1",
108
+ "playwright": "^1.40.1",
100
109
  "process": "^0.11.10",
101
- "puppeteer": "^13.0.1",
102
- "resolve-typescript-plugin": "^1.2.0",
103
110
  "rollup": "^2.75.0",
104
111
  "rollup-plugin-copy": "^3.4.0",
105
112
  "size-limit": "^8.0.0",
106
113
  "tail": "^2.2.0",
107
114
  "ts-loader": "^9.3.1",
108
115
  "ts-node": "^10.9.1",
109
- "typedoc": "^0.23.10",
110
- "typescript": "^4.5.5"
116
+ "typedoc": "^0.25.7",
117
+ "typescript": "^5.3.2"
111
118
  },
112
119
  "files": [
113
120
  "dist",
@@ -123,14 +130,17 @@
123
130
  "lint-staged": {
124
131
  "*.ts": [
125
132
  "eslint --fix"
126
- ],
127
- "*.{ts,md,json,conf*.*js}": [
128
- "prettier --write"
129
133
  ]
130
134
  },
131
135
  "dependencies": {
132
- "@waku/utils": "^0.0.5",
133
- "@waku/zerokit-rln-wasm": "^0.0.10",
134
- "ethers": "^5.7.2"
136
+ "@chainsafe/bls-keystore": "^3.0.0",
137
+ "@waku/core": "^0.0.25",
138
+ "@waku/utils": "^0.0.13",
139
+ "@waku/zerokit-rln-wasm": "^0.0.13",
140
+ "debug": "^4.3.4",
141
+ "ethereum-cryptography": "^2.1.2",
142
+ "ethers": "^5.7.2",
143
+ "lodash": "^4.17.21",
144
+ "uuid": "^9.0.1"
135
145
  }
136
146
  }
package/src/codec.ts CHANGED
@@ -4,12 +4,13 @@ import type {
4
4
  IEncoder,
5
5
  IMessage,
6
6
  IProtoMessage,
7
- IRateLimitProof,
7
+ IRateLimitProof
8
8
  } from "@waku/interfaces";
9
9
  import debug from "debug";
10
10
 
11
+ import type { IdentityCredential } from "./identity.js";
11
12
  import { RlnMessage, toRLNSignal } from "./message.js";
12
- import { IdentityCredential, RLNInstance } from "./rln.js";
13
+ import { RLNInstance } from "./rln.js";
13
14
 
14
15
  const log = debug("waku:rln:encoder");
15
16
 
@@ -44,18 +45,19 @@ export class RLNEncoder implements IEncoder {
44
45
 
45
46
  private async generateProof(message: IMessage): Promise<IRateLimitProof> {
46
47
  const signal = toRLNSignal(this.contentTopic, message);
47
-
48
- console.time("proof_gen_timer");
49
- const proof = await this.rlnInstance.generateRLNProof(
48
+ const proof = await this.rlnInstance.zerokit.generateRLNProof(
50
49
  signal,
51
50
  this.index,
52
51
  message.timestamp,
53
52
  this.idSecretHash
54
53
  );
55
- console.timeEnd("proof_gen_timer");
56
54
  return proof;
57
55
  }
58
56
 
57
+ get pubsubTopic(): string {
58
+ return this.encoder.pubsubTopic;
59
+ }
60
+
59
61
  get contentTopic(): string {
60
62
  return this.encoder.contentTopic;
61
63
  }
@@ -84,7 +86,14 @@ export const createRLNEncoder = (options: RLNEncoderOptions): RLNEncoder => {
84
86
  export class RLNDecoder<T extends IDecodedMessage>
85
87
  implements IDecoder<RlnMessage<T>>
86
88
  {
87
- constructor(private rlnInstance: RLNInstance, private decoder: IDecoder<T>) {}
89
+ constructor(
90
+ private rlnInstance: RLNInstance,
91
+ private decoder: IDecoder<T>
92
+ ) {}
93
+
94
+ get pubsubTopic(): string {
95
+ return this.decoder.pubsubTopic;
96
+ }
88
97
 
89
98
  get contentTopic(): string {
90
99
  return this.decoder.contentTopic;
@@ -97,11 +106,11 @@ export class RLNDecoder<T extends IDecodedMessage>
97
106
  }
98
107
 
99
108
  async fromProtoObj(
100
- pubSubTopic: string,
109
+ pubsubTopic: string,
101
110
  proto: IProtoMessage
102
111
  ): Promise<RlnMessage<T> | undefined> {
103
112
  const msg: T | undefined = await this.decoder.fromProtoObj(
104
- pubSubTopic,
113
+ pubsubTopic,
105
114
  proto
106
115
  );
107
116
  if (!msg) return;
package/src/create.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { RLNInstance } from "./rln.js";
2
+
3
+ export async function createRLN(): Promise<RLNInstance> {
4
+ // A dependency graph that contains any wasm must all be imported
5
+ // asynchronously. This file does the single async import, so
6
+ // that no one else needs to worry about it again.
7
+ const rlnModule = await import("./rln.js");
8
+ return rlnModule.create();
9
+ }