@waku/rln 0.1.1 → 0.1.2-6454446

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 +58406 -10987
  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 +213 -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
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,UAAU,WAAW,CAAC,YAAoB,EAAE,GAAa;IAC7D,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAChE,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,OAAO,UAAU;IAGrB,YACS,WAAwB,EACxB,GAAM,EACN,cAA2C;QAF3C,gBAAW,GAAX,WAAW,CAAa;QACxB,QAAG,GAAH,GAAG,CAAG;QACN,mBAAc,GAAd,cAAc,CAA6B;QAL7C,gBAAW,GAAG,EAAE,CAAC;IAMrB,CAAC;IAEG,MAAM,CAAC,KAAmB;QAC/B,OAAO,IAAI,CAAC,cAAc;YACxB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAC9B,IAAI,CAAC,cAAc,EACnB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,EAC5C,GAAG,KAAK,CACT,CAAC,2EAA2E;YAC/E,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,cAAc;YACxB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAC/B,IAAI,CAAC,cAAc,EACnB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAC7C,CAAC,2EAA2E;YAC/E,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC;QAC7C,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,UAAU,WAAW,CAAC,YAAoB,EAAE,GAAa;IAC7D,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAChE,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,OAAO,UAAU;IAIZ;IACA;IACA;IALF,WAAW,GAAG,EAAE,CAAC;IAExB,YACS,WAAwB,EACxB,GAAM,EACN,cAA2C;QAF3C,gBAAW,GAAX,WAAW,CAAa;QACxB,QAAG,GAAH,GAAG,CAAG;QACN,mBAAc,GAAd,cAAc,CAA6B;IACjD,CAAC;IAEG,MAAM,CAAC,KAAmB;QAC/B,OAAO,IAAI,CAAC,cAAc;YACxB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CACtC,IAAI,CAAC,cAAc,EACnB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,EAC5C,GAAG,KAAK,CACT,CAAC,2EAA2E;YAC/E,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,cAAc;YACxB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CACvC,IAAI,CAAC,cAAc,EACnB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAC7C,CAAC,2EAA2E;YAC/E,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,IAAI,KAAK;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC;QAC7C,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ import type { IRateLimitProof } from "@waku/interfaces";
2
+ declare class ProofMetadata {
3
+ readonly nullifier: Uint8Array;
4
+ readonly shareX: Uint8Array;
5
+ readonly shareY: Uint8Array;
6
+ readonly externalNullifier: Uint8Array;
7
+ constructor(nullifier: Uint8Array, shareX: Uint8Array, shareY: Uint8Array, externalNullifier: Uint8Array);
8
+ }
9
+ export declare class Proof implements IRateLimitProof {
10
+ readonly proof: Uint8Array;
11
+ readonly merkleRoot: Uint8Array;
12
+ readonly epoch: Uint8Array;
13
+ readonly shareX: Uint8Array;
14
+ readonly shareY: Uint8Array;
15
+ readonly nullifier: Uint8Array;
16
+ readonly rlnIdentifier: Uint8Array;
17
+ constructor(proofBytes: Uint8Array);
18
+ extractMetadata(): ProofMetadata;
19
+ }
20
+ export declare function proofToBytes(p: IRateLimitProof): Uint8Array;
21
+ export {};
package/dist/proof.js ADDED
@@ -0,0 +1,49 @@
1
+ import { concatenate, poseidonHash } from "./utils/index.js";
2
+ const proofOffset = 128;
3
+ const rootOffset = proofOffset + 32;
4
+ const epochOffset = rootOffset + 32;
5
+ const shareXOffset = epochOffset + 32;
6
+ const shareYOffset = shareXOffset + 32;
7
+ const nullifierOffset = shareYOffset + 32;
8
+ const rlnIdentifierOffset = nullifierOffset + 32;
9
+ class ProofMetadata {
10
+ nullifier;
11
+ shareX;
12
+ shareY;
13
+ externalNullifier;
14
+ constructor(nullifier, shareX, shareY, externalNullifier) {
15
+ this.nullifier = nullifier;
16
+ this.shareX = shareX;
17
+ this.shareY = shareY;
18
+ this.externalNullifier = externalNullifier;
19
+ }
20
+ }
21
+ export class Proof {
22
+ proof;
23
+ merkleRoot;
24
+ epoch;
25
+ shareX;
26
+ shareY;
27
+ nullifier;
28
+ rlnIdentifier;
29
+ constructor(proofBytes) {
30
+ if (proofBytes.length < rlnIdentifierOffset)
31
+ throw "invalid proof";
32
+ // parse the proof as proof<128> | share_y<32> | nullifier<32> | root<32> | epoch<32> | share_x<32> | rln_identifier<32>
33
+ this.proof = proofBytes.subarray(0, proofOffset);
34
+ this.merkleRoot = proofBytes.subarray(proofOffset, rootOffset);
35
+ this.epoch = proofBytes.subarray(rootOffset, epochOffset);
36
+ this.shareX = proofBytes.subarray(epochOffset, shareXOffset);
37
+ this.shareY = proofBytes.subarray(shareXOffset, shareYOffset);
38
+ this.nullifier = proofBytes.subarray(shareYOffset, nullifierOffset);
39
+ this.rlnIdentifier = proofBytes.subarray(nullifierOffset, rlnIdentifierOffset);
40
+ }
41
+ extractMetadata() {
42
+ const externalNullifier = poseidonHash(this.epoch, this.rlnIdentifier);
43
+ return new ProofMetadata(this.nullifier, this.shareX, this.shareY, externalNullifier);
44
+ }
45
+ }
46
+ export function proofToBytes(p) {
47
+ return concatenate(p.proof, p.merkleRoot, p.epoch, p.shareX, p.shareY, p.nullifier, p.rlnIdentifier);
48
+ }
49
+ //# sourceMappingURL=proof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof.js","sourceRoot":"","sources":["../src/proof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,UAAU,GAAG,WAAW,GAAG,EAAE,CAAC;AACpC,MAAM,WAAW,GAAG,UAAU,GAAG,EAAE,CAAC;AACpC,MAAM,YAAY,GAAG,WAAW,GAAG,EAAE,CAAC;AACtC,MAAM,YAAY,GAAG,YAAY,GAAG,EAAE,CAAC;AACvC,MAAM,eAAe,GAAG,YAAY,GAAG,EAAE,CAAC;AAC1C,MAAM,mBAAmB,GAAG,eAAe,GAAG,EAAE,CAAC;AAEjD,MAAM,aAAa;IAEC;IACA;IACA;IACA;IAJlB,YACkB,SAAqB,EACrB,MAAkB,EAClB,MAAkB,EAClB,iBAA6B;QAH7B,cAAS,GAAT,SAAS,CAAY;QACrB,WAAM,GAAN,MAAM,CAAY;QAClB,WAAM,GAAN,MAAM,CAAY;QAClB,sBAAiB,GAAjB,iBAAiB,CAAY;IAC5C,CAAC;CACL;AAED,MAAM,OAAO,KAAK;IACP,KAAK,CAAa;IAClB,UAAU,CAAa;IACvB,KAAK,CAAa;IAClB,MAAM,CAAa;IACnB,MAAM,CAAa;IACnB,SAAS,CAAa;IACtB,aAAa,CAAa;IAEnC,YAAY,UAAsB;QAChC,IAAI,UAAU,CAAC,MAAM,GAAG,mBAAmB;YAAE,MAAM,eAAe,CAAC;QACnE,wHAAwH;QACxH,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QACpE,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,QAAQ,CACtC,eAAe,EACf,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,eAAe;QACb,MAAM,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACvE,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,iBAAiB,CAClB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,CAAkB;IAC7C,OAAO,WAAW,CAChB,CAAC,CAAC,KAAK,EACP,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,KAAK,EACP,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,SAAS,EACX,CAAC,CAAC,aAAa,CAChB,CAAC;AACJ,CAAC"}
@@ -1,12 +1,12 @@
1
1
  export default verificationKey;
2
2
  declare namespace verificationKey {
3
- const protocol: string;
4
- const curve: string;
5
- const nPublic: number;
6
- const vk_alpha_1: string[];
7
- const vk_beta_2: string[][];
8
- const vk_gamma_2: string[][];
9
- const vk_delta_2: string[][];
10
- const vk_alphabeta_12: string[][][];
11
- const IC: string[][];
3
+ let protocol: string;
4
+ let curve: string;
5
+ let nPublic: number;
6
+ let vk_alpha_1: string[];
7
+ let vk_beta_2: string[][];
8
+ let vk_gamma_2: string[][];
9
+ let vk_delta_2: string[][];
10
+ let vk_alphabeta_12: string[][][];
11
+ let IC: string[][];
12
12
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"witness_calculator.js","sourceRoot":"","sources":["../../src/resources/witness_calculator.js"],"names":[],"mappings":"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"}
package/dist/rln.d.ts CHANGED
@@ -1,53 +1,62 @@
1
- import type { IRateLimitProof } from "@waku/interfaces";
2
- import { WitnessCalculator } from "./witness_calculator.js";
1
+ import type { ContentTopic, IDecodedMessage, EncoderOptions as WakuEncoderOptions } from "@waku/interfaces";
2
+ import { ethers } from "ethers";
3
+ import { type RLNDecoder, type RLNEncoder } from "./codec.js";
4
+ import { RLNContract } from "./contract/index.js";
5
+ import { IdentityCredential } from "./identity.js";
6
+ import type { DecryptedCredentials, EncryptedCredentials } from "./keystore/index.js";
7
+ import { Password } from "./keystore/types.js";
8
+ import { Zerokit } from "./zerokit.js";
3
9
  /**
4
10
  * Create an instance of RLN
5
11
  * @returns RLNInstance
6
12
  */
7
13
  export declare function create(): Promise<RLNInstance>;
8
- export declare class IdentityCredential {
9
- readonly IDTrapdoor: Uint8Array;
10
- readonly IDNullifier: Uint8Array;
11
- readonly IDSecretHash: Uint8Array;
12
- readonly IDCommitment: Uint8Array;
13
- readonly IDCommitmentBigInt: bigint;
14
- constructor(IDTrapdoor: Uint8Array, IDNullifier: Uint8Array, IDSecretHash: Uint8Array, IDCommitment: Uint8Array, IDCommitmentBigInt: bigint);
15
- static fromBytes(memKeys: Uint8Array): IdentityCredential;
16
- }
17
- export declare class ProofMetadata {
18
- readonly nullifier: Uint8Array;
19
- readonly shareX: Uint8Array;
20
- readonly shareY: Uint8Array;
21
- readonly externalNullifier: Uint8Array;
22
- constructor(nullifier: Uint8Array, shareX: Uint8Array, shareY: Uint8Array, externalNullifier: Uint8Array);
23
- }
24
- export declare class Proof implements IRateLimitProof {
25
- readonly proof: Uint8Array;
26
- readonly merkleRoot: Uint8Array;
27
- readonly epoch: Uint8Array;
28
- readonly shareX: Uint8Array;
29
- readonly shareY: Uint8Array;
30
- readonly nullifier: Uint8Array;
31
- readonly rlnIdentifier: Uint8Array;
32
- constructor(proofBytes: Uint8Array);
33
- extractMetadata(): ProofMetadata;
34
- }
35
- export declare function proofToBytes(p: IRateLimitProof): Uint8Array;
36
- export declare function poseidonHash(...input: Array<Uint8Array>): Uint8Array;
37
- export declare function sha256(input: Uint8Array): Uint8Array;
14
+ type StartRLNOptions = {
15
+ /**
16
+ * If not set - will extract MetaMask account and get signer from it.
17
+ */
18
+ signer?: ethers.Signer;
19
+ /**
20
+ * If not set - will use default SEPOLIA_CONTRACT address.
21
+ */
22
+ registryAddress?: string;
23
+ /**
24
+ * Credentials to use for generating proofs and connecting to the contract and network.
25
+ * If provided used for validating the network chainId and connecting to registry contract.
26
+ */
27
+ credentials?: EncryptedCredentials | DecryptedCredentials;
28
+ };
29
+ type RegisterMembershipOptions = {
30
+ signature: string;
31
+ } | {
32
+ identity: IdentityCredential;
33
+ };
34
+ type WakuRLNEncoderOptions = WakuEncoderOptions & {
35
+ credentials: EncryptedCredentials | DecryptedCredentials;
36
+ };
38
37
  export declare class RLNInstance {
39
- private zkRLN;
40
- private witnessCalculator;
41
- constructor(zkRLN: number, witnessCalculator: WitnessCalculator);
42
- generateIdentityCredentials(): IdentityCredential;
43
- generateSeededIdentityCredential(seed: string): IdentityCredential;
44
- insertMember(idCommitment: Uint8Array): void;
45
- insertMembers(index: number, ...idCommitments: Array<Uint8Array>): void;
46
- deleteMember(index: number): void;
47
- getMerkleRoot(): Uint8Array;
48
- serializeMessage(uint8Msg: Uint8Array, memIndex: number, epoch: Uint8Array, idKey: Uint8Array): Uint8Array;
49
- generateRLNProof(msg: Uint8Array, index: number, epoch: Uint8Array | Date | undefined, idSecretHash: Uint8Array): Promise<IRateLimitProof>;
50
- verifyRLNProof(proof: IRateLimitProof | Uint8Array, msg: Uint8Array): boolean;
51
- verifyWithRoots(proof: IRateLimitProof | Uint8Array, msg: Uint8Array, ...roots: Array<Uint8Array>): boolean;
52
- verifyWithNoRoot(proof: IRateLimitProof | Uint8Array, msg: Uint8Array): boolean;
38
+ zerokit: Zerokit;
39
+ private started;
40
+ private starting;
41
+ private _contract;
42
+ private _signer;
43
+ private keystore;
44
+ private _credentials;
45
+ constructor(zerokit: Zerokit);
46
+ get contract(): undefined | RLNContract;
47
+ get signer(): undefined | ethers.Signer;
48
+ start(options?: StartRLNOptions): Promise<void>;
49
+ private determineStartOptions;
50
+ private static decryptCredentialsIfNeeded;
51
+ registerMembership(options: RegisterMembershipOptions): Promise<undefined | DecryptedCredentials>;
52
+ /**
53
+ * Changes credentials in use by relying on provided Keystore earlier in rln.start
54
+ * @param id: string, hash of credentials to select from Keystore
55
+ * @param password: string or bytes to use to decrypt credentials from Keystore
56
+ */
57
+ useCredentials(id: string, password: Password): Promise<void>;
58
+ createEncoder(options: WakuRLNEncoderOptions): Promise<RLNEncoder>;
59
+ private verifyCredentialsAgainstContract;
60
+ createDecoder(contentTopic: ContentTopic): RLNDecoder<IDecodedMessage>;
53
61
  }
62
+ export {};
package/dist/rln.js CHANGED
@@ -1,37 +1,13 @@
1
- import init, * as zerokitRLN from "@waku/zerokit-rln-wasm";
2
- import { writeUIntLE } from "./byte_utils.js";
3
- import { dateToEpoch, epochIntToBytes } from "./epoch.js";
1
+ import { createDecoder, createEncoder } from "@waku/core";
2
+ import init from "@waku/zerokit-rln-wasm";
3
+ import * as zerokitRLN from "@waku/zerokit-rln-wasm";
4
+ import { createRLNDecoder, createRLNEncoder } from "./codec.js";
5
+ import { RLNContract, SEPOLIA_CONTRACT } from "./contract/index.js";
6
+ import { Keystore } from "./keystore/index.js";
4
7
  import verificationKey from "./resources/verification_key.js";
5
- import * as wc from "./witness_calculator.js";
6
- /**
7
- * Concatenate Uint8Arrays
8
- * @param input
9
- * @returns concatenation of all Uint8Array received as input
10
- */
11
- function concatenate(...input) {
12
- let totalLength = 0;
13
- for (const arr of input) {
14
- totalLength += arr.length;
15
- }
16
- const result = new Uint8Array(totalLength);
17
- let offset = 0;
18
- for (const arr of input) {
19
- result.set(arr, offset);
20
- offset += arr.length;
21
- }
22
- return result;
23
- }
24
- /**
25
- * Transforms Uint8Array into BigInt
26
- * @param array: Uint8Array
27
- * @returns BigInt
28
- */
29
- function buildBigIntFromUint8Array(array) {
30
- const dataView = new DataView(array.buffer);
31
- return dataView.getBigUint64(0, true);
32
- }
33
- const stringEncoder = new TextEncoder();
34
- const DEPTH = 20;
8
+ import * as wc from "./resources/witness_calculator.js";
9
+ import { extractMetaMaskSigner } from "./utils/index.js";
10
+ import { Zerokit } from "./zerokit.js";
35
11
  async function loadWitnessCalculator() {
36
12
  const url = new URL("./resources/rln.wasm", import.meta.url);
37
13
  const response = await fetch(url);
@@ -47,172 +23,149 @@ async function loadZkey() {
47
23
  * @returns RLNInstance
48
24
  */
49
25
  export async function create() {
50
- await init();
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ await init?.();
51
28
  zerokitRLN.init_panic_hook();
52
29
  const witnessCalculator = await loadWitnessCalculator();
53
30
  const zkey = await loadZkey();
31
+ const stringEncoder = new TextEncoder();
54
32
  const vkey = stringEncoder.encode(JSON.stringify(verificationKey));
33
+ const DEPTH = 20;
55
34
  const zkRLN = zerokitRLN.newRLN(DEPTH, zkey, vkey);
56
- return new RLNInstance(zkRLN, witnessCalculator);
57
- }
58
- export class IdentityCredential {
59
- constructor(IDTrapdoor, IDNullifier, IDSecretHash, IDCommitment, IDCommitmentBigInt) {
60
- this.IDTrapdoor = IDTrapdoor;
61
- this.IDNullifier = IDNullifier;
62
- this.IDSecretHash = IDSecretHash;
63
- this.IDCommitment = IDCommitment;
64
- this.IDCommitmentBigInt = IDCommitmentBigInt;
65
- }
66
- static fromBytes(memKeys) {
67
- const idTrapdoor = memKeys.subarray(0, 32);
68
- const idNullifier = memKeys.subarray(32, 64);
69
- const idSecretHash = memKeys.subarray(64, 96);
70
- const idCommitment = memKeys.subarray(96);
71
- const idCommitmentBigInt = buildBigIntFromUint8Array(idCommitment);
72
- return new IdentityCredential(idTrapdoor, idNullifier, idSecretHash, idCommitment, idCommitmentBigInt);
73
- }
74
- }
75
- const proofOffset = 128;
76
- const rootOffset = proofOffset + 32;
77
- const epochOffset = rootOffset + 32;
78
- const shareXOffset = epochOffset + 32;
79
- const shareYOffset = shareXOffset + 32;
80
- const nullifierOffset = shareYOffset + 32;
81
- const rlnIdentifierOffset = nullifierOffset + 32;
82
- export class ProofMetadata {
83
- constructor(nullifier, shareX, shareY, externalNullifier) {
84
- this.nullifier = nullifier;
85
- this.shareX = shareX;
86
- this.shareY = shareY;
87
- this.externalNullifier = externalNullifier;
88
- }
89
- }
90
- export class Proof {
91
- constructor(proofBytes) {
92
- if (proofBytes.length < rlnIdentifierOffset)
93
- throw "invalid proof";
94
- // parse the proof as proof<128> | share_y<32> | nullifier<32> | root<32> | epoch<32> | share_x<32> | rln_identifier<32>
95
- this.proof = proofBytes.subarray(0, proofOffset);
96
- this.merkleRoot = proofBytes.subarray(proofOffset, rootOffset);
97
- this.epoch = proofBytes.subarray(rootOffset, epochOffset);
98
- this.shareX = proofBytes.subarray(epochOffset, shareXOffset);
99
- this.shareY = proofBytes.subarray(shareXOffset, shareYOffset);
100
- this.nullifier = proofBytes.subarray(shareYOffset, nullifierOffset);
101
- this.rlnIdentifier = proofBytes.subarray(nullifierOffset, rlnIdentifierOffset);
102
- }
103
- extractMetadata() {
104
- const externalNullifier = poseidonHash(this.epoch, this.rlnIdentifier);
105
- return new ProofMetadata(this.nullifier, this.shareX, this.shareY, externalNullifier);
106
- }
107
- }
108
- export function proofToBytes(p) {
109
- return concatenate(p.proof, p.merkleRoot, p.epoch, p.shareX, p.shareY, p.nullifier, p.rlnIdentifier);
110
- }
111
- export function poseidonHash(...input) {
112
- const inputLen = writeUIntLE(new Uint8Array(8), input.length, 0, 8);
113
- const lenPrefixedData = concatenate(inputLen, ...input);
114
- return zerokitRLN.poseidonHash(lenPrefixedData);
115
- }
116
- export function sha256(input) {
117
- const inputLen = writeUIntLE(new Uint8Array(8), input.length, 0, 8);
118
- const lenPrefixedData = concatenate(inputLen, input);
119
- return zerokitRLN.hash(lenPrefixedData);
35
+ const zerokit = new Zerokit(zkRLN, witnessCalculator);
36
+ return new RLNInstance(zerokit);
120
37
  }
121
38
  export class RLNInstance {
122
- constructor(zkRLN, witnessCalculator) {
123
- this.zkRLN = zkRLN;
124
- this.witnessCalculator = witnessCalculator;
125
- }
126
- generateIdentityCredentials() {
127
- const memKeys = zerokitRLN.generateExtendedMembershipKey(this.zkRLN); // TODO: rename this function in zerokit rln-wasm
128
- return IdentityCredential.fromBytes(memKeys);
129
- }
130
- generateSeededIdentityCredential(seed) {
131
- const seedBytes = stringEncoder.encode(seed);
132
- // TODO: rename this function in zerokit rln-wasm
133
- const memKeys = zerokitRLN.generateSeededExtendedMembershipKey(this.zkRLN, seedBytes);
134
- return IdentityCredential.fromBytes(memKeys);
135
- }
136
- insertMember(idCommitment) {
137
- zerokitRLN.insertMember(this.zkRLN, idCommitment);
138
- }
139
- insertMembers(index, ...idCommitments) {
140
- // serializes a seq of IDCommitments to a byte seq
141
- // the order of serialization is |id_commitment_len<8>|id_commitment<var>|
142
- const idCommitmentLen = writeUIntLE(new Uint8Array(8), idCommitments.length, 0, 8);
143
- const idCommitmentBytes = concatenate(idCommitmentLen, ...idCommitments);
144
- zerokitRLN.setLeavesFrom(this.zkRLN, index, idCommitmentBytes);
145
- }
146
- deleteMember(index) {
147
- zerokitRLN.deleteLeaf(this.zkRLN, index);
148
- }
149
- getMerkleRoot() {
150
- return zerokitRLN.getRoot(this.zkRLN);
151
- }
152
- serializeMessage(uint8Msg, memIndex, epoch, idKey) {
153
- // calculate message length
154
- const msgLen = writeUIntLE(new Uint8Array(8), uint8Msg.length, 0, 8);
155
- // Converting index to LE bytes
156
- const memIndexBytes = writeUIntLE(new Uint8Array(8), memIndex, 0, 8);
157
- // [ id_key<32> | id_index<8> | epoch<32> | signal_len<8> | signal<var> ]
158
- return concatenate(idKey, memIndexBytes, epoch, msgLen, uint8Msg);
159
- }
160
- async generateRLNProof(msg, index, epoch, idSecretHash) {
161
- if (epoch == undefined) {
162
- epoch = epochIntToBytes(dateToEpoch(new Date()));
39
+ zerokit;
40
+ started = false;
41
+ starting = false;
42
+ _contract;
43
+ _signer;
44
+ keystore = Keystore.create();
45
+ _credentials;
46
+ constructor(zerokit) {
47
+ this.zerokit = zerokit;
48
+ }
49
+ get contract() {
50
+ return this._contract;
51
+ }
52
+ get signer() {
53
+ return this._signer;
54
+ }
55
+ async start(options = {}) {
56
+ if (this.started || this.starting) {
57
+ return;
58
+ }
59
+ this.starting = true;
60
+ try {
61
+ const { credentials, keystore } = await RLNInstance.decryptCredentialsIfNeeded(options.credentials);
62
+ const { signer, registryAddress } = await this.determineStartOptions(options, credentials);
63
+ if (keystore) {
64
+ this.keystore = keystore;
65
+ }
66
+ this._credentials = credentials;
67
+ this._signer = signer;
68
+ this._contract = await RLNContract.init(this, {
69
+ registryAddress: registryAddress,
70
+ signer: signer
71
+ });
72
+ this.started = true;
163
73
  }
164
- else if (epoch instanceof Date) {
165
- epoch = epochIntToBytes(dateToEpoch(epoch));
74
+ finally {
75
+ this.starting = false;
166
76
  }
167
- if (epoch.length != 32)
168
- throw "invalid epoch";
169
- if (idSecretHash.length != 32)
170
- throw "invalid id secret hash";
171
- if (index < 0)
172
- throw "index must be >= 0";
173
- const serialized_msg = this.serializeMessage(msg, index, epoch, idSecretHash);
174
- const rlnWitness = zerokitRLN.getSerializedRLNWitness(this.zkRLN, serialized_msg);
175
- const inputs = zerokitRLN.RLNWitnessToJson(this.zkRLN, rlnWitness);
176
- const calculatedWitness = await this.witnessCalculator.calculateWitness(inputs, false); // no sanity check being used in zerokit
177
- const proofBytes = zerokitRLN.generate_rln_proof_with_witness(this.zkRLN, calculatedWitness, rlnWitness);
178
- return new Proof(proofBytes);
179
77
  }
180
- verifyRLNProof(proof, msg) {
181
- let pBytes;
182
- if (proof instanceof Uint8Array) {
183
- pBytes = proof;
78
+ async determineStartOptions(options, credentials) {
79
+ let chainId = credentials?.membership.chainId;
80
+ const registryAddress = credentials?.membership.address ||
81
+ options.registryAddress ||
82
+ SEPOLIA_CONTRACT.address;
83
+ if (registryAddress === SEPOLIA_CONTRACT.address) {
84
+ chainId = SEPOLIA_CONTRACT.chainId;
184
85
  }
185
- else {
186
- pBytes = proofToBytes(proof);
86
+ const signer = options.signer || (await extractMetaMaskSigner());
87
+ const currentChainId = await signer.getChainId();
88
+ if (chainId && chainId !== currentChainId) {
89
+ throw Error(`Failed to start RLN contract, chain ID of contract is different from current one: contract-${chainId}, current network-${currentChainId}`);
187
90
  }
188
- // calculate message length
189
- const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
190
- return zerokitRLN.verifyRLNProof(this.zkRLN, concatenate(pBytes, msgLen, msg));
191
- }
192
- verifyWithRoots(proof, msg, ...roots) {
193
- let pBytes;
194
- if (proof instanceof Uint8Array) {
195
- pBytes = proof;
91
+ return {
92
+ signer,
93
+ registryAddress
94
+ };
95
+ }
96
+ static async decryptCredentialsIfNeeded(credentials) {
97
+ if (!credentials) {
98
+ return {};
196
99
  }
197
- else {
198
- pBytes = proofToBytes(proof);
100
+ if ("identity" in credentials) {
101
+ return { credentials };
199
102
  }
200
- // calculate message length
201
- const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
202
- const rootsBytes = concatenate(...roots);
203
- return zerokitRLN.verifyWithRoots(this.zkRLN, concatenate(pBytes, msgLen, msg), rootsBytes);
204
- }
205
- verifyWithNoRoot(proof, msg) {
206
- let pBytes;
207
- if (proof instanceof Uint8Array) {
208
- pBytes = proof;
103
+ const keystore = Keystore.fromString(credentials.keystore);
104
+ if (!keystore) {
105
+ return {};
106
+ }
107
+ const decryptedCredentials = await keystore.readCredential(credentials.id, credentials.password);
108
+ return {
109
+ keystore,
110
+ credentials: decryptedCredentials
111
+ };
112
+ }
113
+ async registerMembership(options) {
114
+ if (!this.contract) {
115
+ throw Error("RLN Contract is not initialized.");
116
+ }
117
+ let identity = "identity" in options && options.identity;
118
+ if ("signature" in options) {
119
+ identity = this.zerokit.generateSeededIdentityCredential(options.signature);
120
+ }
121
+ if (!identity) {
122
+ throw Error("Missing signature or identity to register membership.");
209
123
  }
210
- else {
211
- pBytes = proofToBytes(proof);
124
+ return this.contract.registerWithIdentity(identity);
125
+ }
126
+ /**
127
+ * Changes credentials in use by relying on provided Keystore earlier in rln.start
128
+ * @param id: string, hash of credentials to select from Keystore
129
+ * @param password: string or bytes to use to decrypt credentials from Keystore
130
+ */
131
+ async useCredentials(id, password) {
132
+ this._credentials = await this.keystore?.readCredential(id, password);
133
+ }
134
+ async createEncoder(options) {
135
+ const { credentials: decryptedCredentials } = await RLNInstance.decryptCredentialsIfNeeded(options.credentials);
136
+ const credentials = decryptedCredentials || this._credentials;
137
+ if (!credentials) {
138
+ throw Error("Failed to create Encoder: missing RLN credentials. Use createRLNEncoder directly.");
212
139
  }
213
- // calculate message length
214
- const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
215
- return zerokitRLN.verifyWithRoots(this.zkRLN, concatenate(pBytes, msgLen, msg), new Uint8Array());
140
+ await this.verifyCredentialsAgainstContract(credentials);
141
+ return createRLNEncoder({
142
+ encoder: createEncoder(options),
143
+ rlnInstance: this,
144
+ index: credentials.membership.treeIndex,
145
+ credential: credentials.identity
146
+ });
147
+ }
148
+ async verifyCredentialsAgainstContract(credentials) {
149
+ if (!this._contract) {
150
+ throw Error("Failed to verify chain coordinates: no contract initialized.");
151
+ }
152
+ const registryAddress = credentials.membership.address;
153
+ const currentRegistryAddress = this._contract.registry.address;
154
+ if (registryAddress !== currentRegistryAddress) {
155
+ throw Error(`Failed to verify chain coordinates: credentials contract address=${registryAddress} is not equal to registryContract address=${currentRegistryAddress}`);
156
+ }
157
+ const chainId = credentials.membership.chainId;
158
+ const network = await this._contract.registry.provider.getNetwork();
159
+ const currentChainId = network.chainId;
160
+ if (chainId !== currentChainId) {
161
+ throw Error(`Failed to verify chain coordinates: credentials chainID=${chainId} is not equal to registryContract chainID=${currentChainId}`);
162
+ }
163
+ }
164
+ createDecoder(contentTopic) {
165
+ return createRLNDecoder({
166
+ rlnInstance: this,
167
+ decoder: createDecoder(contentTopic)
168
+ });
216
169
  }
217
170
  }
218
171
  //# sourceMappingURL=rln.js.map