@waku/rln 0.1.1-fa49e29 → 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 (93) hide show
  1. package/README.md +26 -2
  2. package/bundle/assets/rln_wasm_bg-a503e304.wasm +0 -0
  3. package/bundle/index.js +69844 -44998
  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.js → contract/constants.js} +3 -3
  8. package/dist/contract/constants.js.map +1 -0
  9. package/dist/contract/index.d.ts +2 -0
  10. package/dist/contract/index.js +3 -0
  11. package/dist/contract/index.js.map +1 -0
  12. package/dist/{rln_contract.d.ts → contract/rln_contract.d.ts} +13 -11
  13. package/dist/{rln_contract.js → contract/rln_contract.js} +50 -33
  14. package/dist/contract/rln_contract.js.map +1 -0
  15. package/dist/create.d.ts +2 -0
  16. package/dist/create.js +8 -0
  17. package/dist/create.js.map +1 -0
  18. package/dist/identity.d.ts +9 -0
  19. package/dist/identity.js +24 -0
  20. package/dist/identity.js.map +1 -0
  21. package/dist/index.d.ts +8 -5
  22. package/dist/index.js +8 -12
  23. package/dist/index.js.map +1 -1
  24. package/dist/keystore/cipher.js +1 -1
  25. package/dist/keystore/cipher.js.map +1 -1
  26. package/dist/keystore/credential_validation_generated.js.map +1 -1
  27. package/dist/keystore/index.d.ts +2 -0
  28. package/dist/keystore/index.js.map +1 -1
  29. package/dist/keystore/keystore.d.ts +11 -11
  30. package/dist/keystore/keystore.js +33 -21
  31. package/dist/keystore/keystore.js.map +1 -1
  32. package/dist/keystore/keystore_validation_generated.js.map +1 -1
  33. package/dist/keystore/schema_validator.js.map +1 -1
  34. package/dist/keystore/types.d.ts +25 -5
  35. package/dist/message.d.ts +1 -1
  36. package/dist/message.js +7 -4
  37. package/dist/message.js.map +1 -1
  38. package/dist/proof.d.ts +21 -0
  39. package/dist/proof.js +49 -0
  40. package/dist/proof.js.map +1 -0
  41. package/dist/resources/verification_key.d.ts +9 -9
  42. package/dist/resources/witness_calculator.js.map +1 -0
  43. package/dist/rln.d.ts +55 -46
  44. package/dist/rln.js +135 -174
  45. package/dist/rln.js.map +1 -1
  46. package/dist/root_tracker.js +5 -2
  47. package/dist/root_tracker.js.map +1 -1
  48. package/dist/utils/bytes.d.ts +20 -0
  49. package/dist/utils/bytes.js +64 -0
  50. package/dist/utils/bytes.js.map +1 -0
  51. package/dist/utils/epoch.js.map +1 -0
  52. package/dist/utils/hash.d.ts +2 -0
  53. package/dist/utils/hash.js +13 -0
  54. package/dist/utils/hash.js.map +1 -0
  55. package/dist/utils/index.d.ts +4 -0
  56. package/dist/utils/index.js +5 -0
  57. package/dist/utils/index.js.map +1 -0
  58. package/dist/utils/metamask.d.ts +2 -0
  59. package/dist/utils/metamask.js +12 -0
  60. package/dist/utils/metamask.js.map +1 -0
  61. package/dist/zerokit.d.ts +19 -0
  62. package/dist/zerokit.js +105 -0
  63. package/dist/zerokit.js.map +1 -0
  64. package/package.json +22 -27
  65. package/src/codec.ts +18 -9
  66. package/src/create.ts +9 -0
  67. package/src/identity.ts +27 -0
  68. package/src/index.ts +10 -19
  69. package/src/message.ts +5 -5
  70. package/src/proof.ts +67 -0
  71. package/src/rln.ts +219 -260
  72. package/src/root_tracker.ts +4 -1
  73. package/src/zerokit.ts +181 -0
  74. package/bundle/assets/rln_wasm_bg-6f96f821.wasm +0 -0
  75. package/dist/.tsbuildinfo +0 -1
  76. package/dist/byte_utils.d.ts +0 -7
  77. package/dist/byte_utils.js +0 -33
  78. package/dist/byte_utils.js.map +0 -1
  79. package/dist/constants.js.map +0 -1
  80. package/dist/epoch.js.map +0 -1
  81. package/dist/rln_contract.js.map +0 -1
  82. package/dist/witness_calculator.js.map +0 -1
  83. package/src/byte_utils.ts +0 -49
  84. package/src/constants.ts +0 -68
  85. package/src/epoch.ts +0 -30
  86. package/src/rln_contract.ts +0 -346
  87. package/src/witness_calculator.d.ts +0 -8
  88. package/src/witness_calculator.js +0 -335
  89. /package/dist/{constants.d.ts → contract/constants.d.ts} +0 -0
  90. /package/dist/{witness_calculator.d.ts → resources/witness_calculator.d.ts} +0 -0
  91. /package/dist/{witness_calculator.js → resources/witness_calculator.js} +0 -0
  92. /package/dist/{epoch.d.ts → utils/epoch.d.ts} +0 -0
  93. /package/dist/{epoch.js → utils/epoch.js} +0 -0
package/dist/rln.js CHANGED
@@ -1,29 +1,13 @@
1
- import { default as init } from "@waku/zerokit-rln-wasm";
1
+ import { createDecoder, createEncoder } from "@waku/core";
2
+ import init from "@waku/zerokit-rln-wasm";
2
3
  import * as zerokitRLN from "@waku/zerokit-rln-wasm";
3
- import { buildBigIntFromUint8Array, writeUIntLE } from "./byte_utils.js";
4
- import { dateToEpoch, epochIntToBytes } from "./epoch.js";
4
+ import { createRLNDecoder, createRLNEncoder } from "./codec.js";
5
+ import { RLNContract, SEPOLIA_CONTRACT } from "./contract/index.js";
6
+ import { Keystore } from "./keystore/index.js";
5
7
  import verificationKey from "./resources/verification_key.js";
6
- import * as wc from "./witness_calculator.js";
7
- /**
8
- * Concatenate Uint8Arrays
9
- * @param input
10
- * @returns concatenation of all Uint8Array received as input
11
- */
12
- function concatenate(...input) {
13
- let totalLength = 0;
14
- for (const arr of input) {
15
- totalLength += arr.length;
16
- }
17
- const result = new Uint8Array(totalLength);
18
- let offset = 0;
19
- for (const arr of input) {
20
- result.set(arr, offset);
21
- offset += arr.length;
22
- }
23
- return result;
24
- }
25
- const stringEncoder = new TextEncoder();
26
- 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";
27
11
  async function loadWitnessCalculator() {
28
12
  const url = new URL("./resources/rln.wasm", import.meta.url);
29
13
  const response = await fetch(url);
@@ -39,172 +23,149 @@ async function loadZkey() {
39
23
  * @returns RLNInstance
40
24
  */
41
25
  export async function create() {
42
- await init();
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ await init?.();
43
28
  zerokitRLN.init_panic_hook();
44
29
  const witnessCalculator = await loadWitnessCalculator();
45
30
  const zkey = await loadZkey();
31
+ const stringEncoder = new TextEncoder();
46
32
  const vkey = stringEncoder.encode(JSON.stringify(verificationKey));
33
+ const DEPTH = 20;
47
34
  const zkRLN = zerokitRLN.newRLN(DEPTH, zkey, vkey);
48
- return new RLNInstance(zkRLN, witnessCalculator);
49
- }
50
- export class IdentityCredential {
51
- constructor(IDTrapdoor, IDNullifier, IDSecretHash, IDCommitment, IDCommitmentBigInt) {
52
- this.IDTrapdoor = IDTrapdoor;
53
- this.IDNullifier = IDNullifier;
54
- this.IDSecretHash = IDSecretHash;
55
- this.IDCommitment = IDCommitment;
56
- this.IDCommitmentBigInt = IDCommitmentBigInt;
57
- }
58
- static fromBytes(memKeys) {
59
- const idTrapdoor = memKeys.subarray(0, 32);
60
- const idNullifier = memKeys.subarray(32, 64);
61
- const idSecretHash = memKeys.subarray(64, 96);
62
- const idCommitment = memKeys.subarray(96);
63
- const idCommitmentBigInt = buildBigIntFromUint8Array(idCommitment);
64
- return new IdentityCredential(idTrapdoor, idNullifier, idSecretHash, idCommitment, idCommitmentBigInt);
65
- }
66
- }
67
- const proofOffset = 128;
68
- const rootOffset = proofOffset + 32;
69
- const epochOffset = rootOffset + 32;
70
- const shareXOffset = epochOffset + 32;
71
- const shareYOffset = shareXOffset + 32;
72
- const nullifierOffset = shareYOffset + 32;
73
- const rlnIdentifierOffset = nullifierOffset + 32;
74
- export class ProofMetadata {
75
- constructor(nullifier, shareX, shareY, externalNullifier) {
76
- this.nullifier = nullifier;
77
- this.shareX = shareX;
78
- this.shareY = shareY;
79
- this.externalNullifier = externalNullifier;
80
- }
81
- }
82
- export class Proof {
83
- constructor(proofBytes) {
84
- if (proofBytes.length < rlnIdentifierOffset)
85
- throw "invalid proof";
86
- // parse the proof as proof<128> | share_y<32> | nullifier<32> | root<32> | epoch<32> | share_x<32> | rln_identifier<32>
87
- this.proof = proofBytes.subarray(0, proofOffset);
88
- this.merkleRoot = proofBytes.subarray(proofOffset, rootOffset);
89
- this.epoch = proofBytes.subarray(rootOffset, epochOffset);
90
- this.shareX = proofBytes.subarray(epochOffset, shareXOffset);
91
- this.shareY = proofBytes.subarray(shareXOffset, shareYOffset);
92
- this.nullifier = proofBytes.subarray(shareYOffset, nullifierOffset);
93
- this.rlnIdentifier = proofBytes.subarray(nullifierOffset, rlnIdentifierOffset);
94
- }
95
- extractMetadata() {
96
- const externalNullifier = poseidonHash(this.epoch, this.rlnIdentifier);
97
- return new ProofMetadata(this.nullifier, this.shareX, this.shareY, externalNullifier);
98
- }
99
- }
100
- export function proofToBytes(p) {
101
- return concatenate(p.proof, p.merkleRoot, p.epoch, p.shareX, p.shareY, p.nullifier, p.rlnIdentifier);
102
- }
103
- export function poseidonHash(...input) {
104
- const inputLen = writeUIntLE(new Uint8Array(8), input.length, 0, 8);
105
- const lenPrefixedData = concatenate(inputLen, ...input);
106
- return zerokitRLN.poseidonHash(lenPrefixedData);
107
- }
108
- export function sha256(input) {
109
- const inputLen = writeUIntLE(new Uint8Array(8), input.length, 0, 8);
110
- const lenPrefixedData = concatenate(inputLen, input);
111
- return zerokitRLN.hash(lenPrefixedData);
35
+ const zerokit = new Zerokit(zkRLN, witnessCalculator);
36
+ return new RLNInstance(zerokit);
112
37
  }
113
38
  export class RLNInstance {
114
- constructor(zkRLN, witnessCalculator) {
115
- this.zkRLN = zkRLN;
116
- this.witnessCalculator = witnessCalculator;
117
- }
118
- generateIdentityCredentials() {
119
- const memKeys = zerokitRLN.generateExtendedMembershipKey(this.zkRLN); // TODO: rename this function in zerokit rln-wasm
120
- return IdentityCredential.fromBytes(memKeys);
121
- }
122
- generateSeededIdentityCredential(seed) {
123
- const seedBytes = stringEncoder.encode(seed);
124
- // TODO: rename this function in zerokit rln-wasm
125
- const memKeys = zerokitRLN.generateSeededExtendedMembershipKey(this.zkRLN, seedBytes);
126
- return IdentityCredential.fromBytes(memKeys);
127
- }
128
- insertMember(idCommitment) {
129
- zerokitRLN.insertMember(this.zkRLN, idCommitment);
130
- }
131
- insertMembers(index, ...idCommitments) {
132
- // serializes a seq of IDCommitments to a byte seq
133
- // the order of serialization is |id_commitment_len<8>|id_commitment<var>|
134
- const idCommitmentLen = writeUIntLE(new Uint8Array(8), idCommitments.length, 0, 8);
135
- const idCommitmentBytes = concatenate(idCommitmentLen, ...idCommitments);
136
- zerokitRLN.setLeavesFrom(this.zkRLN, index, idCommitmentBytes);
137
- }
138
- deleteMember(index) {
139
- zerokitRLN.deleteLeaf(this.zkRLN, index);
140
- }
141
- getMerkleRoot() {
142
- return zerokitRLN.getRoot(this.zkRLN);
143
- }
144
- serializeMessage(uint8Msg, memIndex, epoch, idKey) {
145
- // calculate message length
146
- const msgLen = writeUIntLE(new Uint8Array(8), uint8Msg.length, 0, 8);
147
- // Converting index to LE bytes
148
- const memIndexBytes = writeUIntLE(new Uint8Array(8), memIndex, 0, 8);
149
- // [ id_key<32> | id_index<8> | epoch<32> | signal_len<8> | signal<var> ]
150
- return concatenate(idKey, memIndexBytes, epoch, msgLen, uint8Msg);
151
- }
152
- async generateRLNProof(msg, index, epoch, idSecretHash) {
153
- if (epoch == undefined) {
154
- 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;
155
58
  }
156
- else if (epoch instanceof Date) {
157
- epoch = epochIntToBytes(dateToEpoch(epoch));
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;
73
+ }
74
+ finally {
75
+ this.starting = false;
158
76
  }
159
- if (epoch.length != 32)
160
- throw "invalid epoch";
161
- if (idSecretHash.length != 32)
162
- throw "invalid id secret hash";
163
- if (index < 0)
164
- throw "index must be >= 0";
165
- const serialized_msg = this.serializeMessage(msg, index, epoch, idSecretHash);
166
- const rlnWitness = zerokitRLN.getSerializedRLNWitness(this.zkRLN, serialized_msg);
167
- const inputs = zerokitRLN.RLNWitnessToJson(this.zkRLN, rlnWitness);
168
- const calculatedWitness = await this.witnessCalculator.calculateWitness(inputs, false); // no sanity check being used in zerokit
169
- const proofBytes = zerokitRLN.generate_rln_proof_with_witness(this.zkRLN, calculatedWitness, rlnWitness);
170
- return new Proof(proofBytes);
171
77
  }
172
- verifyRLNProof(proof, msg) {
173
- let pBytes;
174
- if (proof instanceof Uint8Array) {
175
- 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;
176
85
  }
177
- else {
178
- 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}`);
179
90
  }
180
- // calculate message length
181
- const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
182
- return zerokitRLN.verifyRLNProof(this.zkRLN, concatenate(pBytes, msgLen, msg));
183
- }
184
- verifyWithRoots(proof, msg, ...roots) {
185
- let pBytes;
186
- if (proof instanceof Uint8Array) {
187
- pBytes = proof;
91
+ return {
92
+ signer,
93
+ registryAddress
94
+ };
95
+ }
96
+ static async decryptCredentialsIfNeeded(credentials) {
97
+ if (!credentials) {
98
+ return {};
188
99
  }
189
- else {
190
- pBytes = proofToBytes(proof);
100
+ if ("identity" in credentials) {
101
+ return { credentials };
191
102
  }
192
- // calculate message length
193
- const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
194
- const rootsBytes = concatenate(...roots);
195
- return zerokitRLN.verifyWithRoots(this.zkRLN, concatenate(pBytes, msgLen, msg), rootsBytes);
196
- }
197
- verifyWithNoRoot(proof, msg) {
198
- let pBytes;
199
- if (proof instanceof Uint8Array) {
200
- 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.");
201
123
  }
202
- else {
203
- 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.");
204
139
  }
205
- // calculate message length
206
- const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
207
- 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
+ });
208
169
  }
209
170
  }
210
171
  //# sourceMappingURL=rln.js.map
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
+ }