@waku/rln 0.1.6-f7c290d.0 → 0.1.6
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.
- package/CHANGELOG.md +29 -0
- package/bundle/_virtual/utils.js +2 -2
- package/bundle/_virtual/utils2.js +2 -2
- package/bundle/index.js +1 -1
- package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/_sha2.js +1 -1
- package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/hmac.js +1 -1
- package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/pbkdf2.js +1 -1
- package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/scrypt.js +1 -1
- package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/sha256.js +1 -1
- package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/sha512.js +1 -1
- package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/utils.js +1 -1
- package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/random.js +1 -1
- package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/utils.js +2 -2
- package/bundle/node_modules/@chainsafe/is-ip/lib/is-ip.js +12 -0
- package/bundle/node_modules/@chainsafe/is-ip/lib/parse.js +26 -0
- package/bundle/node_modules/@chainsafe/is-ip/lib/parser.js +202 -0
- package/bundle/node_modules/@ethersproject/bignumber/lib.esm/bignumber.js +1 -1
- package/bundle/node_modules/@multiformats/multiaddr/dist/src/constants.js +43 -0
- package/bundle/node_modules/@multiformats/multiaddr/dist/src/errors.js +17 -0
- package/bundle/node_modules/@multiformats/multiaddr/dist/src/registry.js +245 -0
- package/bundle/node_modules/@multiformats/multiaddr/dist/src/utils.js +191 -0
- package/bundle/node_modules/@multiformats/multiaddr/dist/src/validation.js +30 -0
- package/bundle/node_modules/debug/src/browser.js +1 -1
- package/bundle/node_modules/debug/src/common.js +1 -1
- package/bundle/node_modules/lodash/lodash.js +5 -5
- package/bundle/node_modules/multiformats/dist/src/bases/base.js +12 -9
- package/bundle/node_modules/multiformats/dist/src/bytes.js +19 -3
- package/bundle/node_modules/multiformats/dist/src/cid.js +371 -0
- package/bundle/node_modules/multiformats/dist/src/hashes/digest.js +62 -0
- package/bundle/node_modules/multiformats/dist/src/varint.js +15 -0
- package/bundle/node_modules/multiformats/dist/src/vendor/varint.js +78 -0
- package/bundle/node_modules/uint8arrays/dist/src/concat.js +20 -0
- package/bundle/node_modules/uint8arrays/dist/src/to-string.js +19 -0
- package/bundle/node_modules/uint8arrays/dist/src/util/as-uint8array.js +9 -0
- package/bundle/packages/core/dist/lib/connection_manager/connection_manager.js +1 -3
- package/bundle/packages/proto/dist/generated/filter.js +2 -0
- package/bundle/packages/proto/dist/generated/filter_v2.js +2 -0
- package/bundle/packages/proto/dist/generated/light_push.js +2 -0
- package/bundle/packages/proto/dist/generated/message.js +2 -0
- package/bundle/packages/proto/dist/generated/metadata.js +2 -0
- package/bundle/packages/proto/dist/generated/peer_exchange.js +2 -0
- package/bundle/packages/proto/dist/generated/sds_message.js +2 -0
- package/bundle/packages/proto/dist/generated/store_v3.js +2 -0
- package/bundle/packages/proto/dist/generated/topic_only_message.js +2 -0
- package/bundle/packages/rln/dist/contract/constants.js +1 -7
- package/bundle/packages/rln/dist/contract/rln_base_contract.js +2 -5
- package/bundle/packages/rln/dist/contract/rln_contract.js +2 -2
- package/bundle/packages/rln/dist/credentials_manager.js +16 -24
- package/bundle/packages/rln/dist/identity.js +6 -8
- package/bundle/packages/rln/dist/keystore/keystore.js +10 -21
- package/bundle/packages/rln/dist/proof.js +2 -2
- package/bundle/packages/rln/dist/utils/bytes.js +58 -103
- package/bundle/packages/rln/dist/utils/hash.js +3 -3
- package/bundle/packages/rln/dist/zerokit.js +17 -17
- package/dist/.tsbuildinfo +1 -1
- package/dist/codec.test-utils.d.ts +1 -1
- package/dist/contract/constants.d.ts +0 -6
- package/dist/contract/constants.js +0 -6
- package/dist/contract/constants.js.map +1 -1
- package/dist/contract/rln_base_contract.js +2 -5
- package/dist/contract/rln_base_contract.js.map +1 -1
- package/dist/contract/rln_contract.js +2 -2
- package/dist/contract/rln_contract.js.map +1 -1
- package/dist/contract/test-setup.d.ts +1 -1
- package/dist/contract/test-utils.d.ts +39 -0
- package/dist/contract/test-utils.js +118 -0
- package/dist/contract/test-utils.js.map +1 -0
- package/dist/credentials_manager.d.ts +0 -4
- package/dist/credentials_manager.js +16 -25
- package/dist/credentials_manager.js.map +1 -1
- package/dist/identity.d.ts +2 -5
- package/dist/identity.js +5 -8
- package/dist/identity.js.map +1 -1
- package/dist/keystore/credential_validation_generated.d.ts +0 -2
- package/dist/keystore/keystore.js +10 -21
- package/dist/keystore/keystore.js.map +1 -1
- package/dist/keystore/keystore_validation_generated.d.ts +0 -2
- package/dist/proof.js +2 -2
- package/dist/proof.js.map +1 -1
- package/dist/utils/bytes.d.ts +20 -42
- package/dist/utils/bytes.js +57 -102
- package/dist/utils/bytes.js.map +1 -1
- package/dist/utils/hash.js +5 -5
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/zerokit.js +17 -17
- package/dist/zerokit.js.map +1 -1
- package/package.json +93 -1
- package/src/contract/constants.ts +0 -9
- package/src/contract/rln_base_contract.ts +3 -5
- package/src/contract/rln_contract.ts +2 -5
- package/src/contract/test-utils.ts +179 -0
- package/src/credentials_manager.ts +24 -46
- package/src/identity.ts +7 -11
- package/src/keystore/keystore.ts +22 -38
- package/src/proof.ts +2 -2
- package/src/utils/bytes.ts +72 -118
- package/src/utils/hash.ts +5 -15
- package/src/utils/index.ts +6 -1
- package/src/zerokit.ts +22 -30
- package/bundle/node_modules/@multiformats/multiaddr/dist/src/convert.js +0 -15
- package/bundle/node_modules/@multiformats/multiaddr/dist/src/multiaddr.js +0 -21
- package/bundle/node_modules/@multiformats/multiaddr/dist/src/protocols-table.js +0 -92
@@ -1,8 +1,6 @@
|
|
1
1
|
export declare const Keystore: typeof validate11;
|
2
2
|
declare function validate11(data: any, { instancePath, parentData, parentDataProperty, rootData }?: {
|
3
3
|
instancePath?: string | undefined;
|
4
|
-
parentData: any;
|
5
|
-
parentDataProperty: any;
|
6
4
|
rootData?: any;
|
7
5
|
}): boolean;
|
8
6
|
export {};
|
package/dist/proof.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { concatenate, poseidonHash } from "./utils/index.js";
|
2
2
|
const proofOffset = 128;
|
3
3
|
const rootOffset = proofOffset + 32;
|
4
4
|
const epochOffset = rootOffset + 32;
|
@@ -45,6 +45,6 @@ export class Proof {
|
|
45
45
|
}
|
46
46
|
}
|
47
47
|
export function proofToBytes(p) {
|
48
|
-
return
|
48
|
+
return concatenate(p.proof, p.merkleRoot, p.epoch, p.shareX, p.shareY, p.nullifier, p.rlnIdentifier);
|
49
49
|
}
|
50
50
|
//# sourceMappingURL=proof.js.map
|
package/dist/proof.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"proof.js","sourceRoot":"","sources":["../src/proof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
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;IACA,KAAK,CAAa;IAClB,UAAU,CAAa;IACvB,KAAK,CAAa;IAClB,MAAM,CAAa;IACnB,MAAM,CAAa;IACnB,SAAS,CAAa;IACtB,aAAa,CAAa;IAE1C,YAAmB,UAAsB;QACvC,IAAI,UAAU,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;QACD,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;IAEM,eAAe;QACpB,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"}
|
package/dist/utils/bytes.d.ts
CHANGED
@@ -1,42 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
* @returns A 32-byte big-endian Uint8Array
|
22
|
-
*/
|
23
|
-
static bigIntToUint8Array32BE(value: bigint): Uint8Array;
|
24
|
-
/**
|
25
|
-
* Writes an unsigned integer to a buffer in little-endian format
|
26
|
-
*/
|
27
|
-
static writeUIntLE(buf: Uint8Array, value: number, offset: number, byteLength: number, noAssert?: boolean): Uint8Array;
|
28
|
-
/**
|
29
|
-
* Fills with zeros to set length
|
30
|
-
* @param array little endian Uint8Array
|
31
|
-
* @param length amount to pad
|
32
|
-
* @returns little endian Uint8Array padded with zeros to set length
|
33
|
-
*/
|
34
|
-
static zeroPadLE(array: Uint8Array, length: number): Uint8Array;
|
35
|
-
static checkInt(buf: Uint8Array, value: number, offset: number, ext: number, max: number, min: number): void;
|
36
|
-
/**
|
37
|
-
* Concatenate Uint8Arrays
|
38
|
-
* @param input
|
39
|
-
* @returns concatenation of all Uint8Array received as input
|
40
|
-
*/
|
41
|
-
static concatenate(...input: Uint8Array[]): Uint8Array;
|
42
|
-
}
|
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;
|
package/dist/utils/bytes.js
CHANGED
@@ -1,109 +1,64 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
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;
|
7
10
|
}
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
static buildBigIntFromUint8ArrayBE(bytes) {
|
14
|
-
let result = 0n;
|
15
|
-
for (let i = 0; i < bytes.length; i++) {
|
16
|
-
result = (result << 8n) + BigInt(bytes[i]);
|
17
|
-
}
|
18
|
-
return result;
|
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;
|
19
16
|
}
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
.reduce((acc, byte) => (acc << 8n) + BigInt(byte), 0n);
|
37
|
-
}
|
38
|
-
/**
|
39
|
-
* Converts a big-endian bigint to a 32-byte big-endian Uint8Array
|
40
|
-
* @param value The big-endian bigint to convert
|
41
|
-
* @returns A 32-byte big-endian Uint8Array
|
42
|
-
*/
|
43
|
-
static bigIntToUint8Array32BE(value) {
|
44
|
-
const bytes = new Uint8Array(32);
|
45
|
-
for (let i = 31; i >= 0; i--) {
|
46
|
-
bytes[i] = Number(value & 0xffn);
|
47
|
-
value >>= 8n;
|
48
|
-
}
|
49
|
-
return bytes;
|
50
|
-
}
|
51
|
-
/**
|
52
|
-
* Writes an unsigned integer to a buffer in little-endian format
|
53
|
-
*/
|
54
|
-
static writeUIntLE(buf, value, offset, byteLength, noAssert) {
|
55
|
-
value = +value;
|
56
|
-
offset = offset >>> 0;
|
57
|
-
byteLength = byteLength >>> 0;
|
58
|
-
if (!noAssert) {
|
59
|
-
const maxBytes = Math.pow(2, 8 * byteLength) - 1;
|
60
|
-
BytesUtils.checkInt(buf, value, offset, byteLength, maxBytes, 0);
|
61
|
-
}
|
62
|
-
let mul = 1;
|
63
|
-
let i = 0;
|
64
|
-
buf[offset] = value & 0xff;
|
65
|
-
while (++i < byteLength && (mul *= 0x100)) {
|
66
|
-
buf[offset + i] = (value / mul) & 0xff;
|
67
|
-
}
|
68
|
-
return buf;
|
69
|
-
}
|
70
|
-
/**
|
71
|
-
* Fills with zeros to set length
|
72
|
-
* @param array little endian Uint8Array
|
73
|
-
* @param length amount to pad
|
74
|
-
* @returns little endian Uint8Array padded with zeros to set length
|
75
|
-
*/
|
76
|
-
static zeroPadLE(array, length) {
|
77
|
-
const result = new Uint8Array(length);
|
78
|
-
for (let i = 0; i < length; i++) {
|
79
|
-
result[i] = array[i] || 0;
|
80
|
-
}
|
81
|
-
return result;
|
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);
|
82
33
|
}
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
throw new RangeError("Index out of range");
|
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;
|
89
39
|
}
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
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;
|
107
61
|
}
|
62
|
+
return result;
|
108
63
|
}
|
109
64
|
//# sourceMappingURL=bytes.js.map
|
package/dist/utils/bytes.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/utils/bytes.ts"],"names":[],"mappings":"AAAA,MAAM,
|
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"}
|
package/dist/utils/hash.js
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
import * as zerokitRLN from "@waku/zerokit-rln-wasm";
|
2
|
-
import {
|
2
|
+
import { concatenate, writeUIntLE } from "./bytes.js";
|
3
3
|
export function poseidonHash(...input) {
|
4
|
-
const inputLen =
|
5
|
-
const lenPrefixedData =
|
4
|
+
const inputLen = writeUIntLE(new Uint8Array(8), input.length, 0, 8);
|
5
|
+
const lenPrefixedData = concatenate(inputLen, ...input);
|
6
6
|
return zerokitRLN.poseidonHash(lenPrefixedData);
|
7
7
|
}
|
8
8
|
export function sha256(input) {
|
9
|
-
const inputLen =
|
10
|
-
const lenPrefixedData =
|
9
|
+
const inputLen = writeUIntLE(new Uint8Array(8), input.length, 0, 8);
|
10
|
+
const lenPrefixedData = concatenate(inputLen, input);
|
11
11
|
return zerokitRLN.hash(lenPrefixedData);
|
12
12
|
}
|
13
13
|
//# sourceMappingURL=hash.js.map
|
package/dist/utils/hash.js.map
CHANGED
@@ -1 +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,
|
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"}
|
package/dist/utils/index.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
export { extractMetaMaskSigner } from "./metamask.js";
|
2
|
-
export {
|
2
|
+
export { concatenate, writeUIntLE, buildBigIntFromUint8Array, zeroPadLE } from "./bytes.js";
|
3
3
|
export { sha256, poseidonHash } from "./hash.js";
|
4
4
|
export { dateToEpoch, epochIntToBytes, epochBytesToInt } from "./epoch.js";
|
package/dist/utils/index.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
export { extractMetaMaskSigner } from "./metamask.js";
|
2
|
-
export {
|
2
|
+
export { concatenate, writeUIntLE, buildBigIntFromUint8Array, zeroPadLE } from "./bytes.js";
|
3
3
|
export { sha256, poseidonHash } from "./hash.js";
|
4
4
|
export { dateToEpoch, epochIntToBytes, epochBytesToInt } from "./epoch.js";
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
@@ -1 +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,
|
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"}
|
package/dist/zerokit.js
CHANGED
@@ -2,7 +2,7 @@ import * as zerokitRLN from "@waku/zerokit-rln-wasm";
|
|
2
2
|
import { DEFAULT_RATE_LIMIT, RATE_LIMIT_PARAMS } from "./contract/constants.js";
|
3
3
|
import { IdentityCredential } from "./identity.js";
|
4
4
|
import { Proof, proofToBytes } from "./proof.js";
|
5
|
-
import {
|
5
|
+
import { concatenate, dateToEpoch, epochIntToBytes, writeUIntLE } from "./utils/index.js";
|
6
6
|
export class Zerokit {
|
7
7
|
zkRLN;
|
8
8
|
witnessCalculator;
|
@@ -38,8 +38,8 @@ export class Zerokit {
|
|
38
38
|
insertMembers(index, ...idCommitments) {
|
39
39
|
// serializes a seq of IDCommitments to a byte seq
|
40
40
|
// the order of serialization is |id_commitment_len<8>|id_commitment<var>|
|
41
|
-
const idCommitmentLen =
|
42
|
-
const idCommitmentBytes =
|
41
|
+
const idCommitmentLen = writeUIntLE(new Uint8Array(8), idCommitments.length, 0, 8);
|
42
|
+
const idCommitmentBytes = concatenate(idCommitmentLen, ...idCommitments);
|
43
43
|
zerokitRLN.setLeavesFrom(this.zkRLN, index, idCommitmentBytes);
|
44
44
|
}
|
45
45
|
deleteMember(index) {
|
@@ -50,11 +50,11 @@ export class Zerokit {
|
|
50
50
|
}
|
51
51
|
serializeMessage(uint8Msg, memIndex, epoch, idKey, rateLimit) {
|
52
52
|
// calculate message length
|
53
|
-
const msgLen =
|
54
|
-
const memIndexBytes =
|
55
|
-
const rateLimitBytes =
|
53
|
+
const msgLen = writeUIntLE(new Uint8Array(8), uint8Msg.length, 0, 8);
|
54
|
+
const memIndexBytes = writeUIntLE(new Uint8Array(8), memIndex, 0, 8);
|
55
|
+
const rateLimitBytes = writeUIntLE(new Uint8Array(8), rateLimit ?? this.rateLimit, 0, 8);
|
56
56
|
// [ id_key<32> | id_index<8> | epoch<32> | signal_len<8> | signal<var> | rate_limit<8> ]
|
57
|
-
return
|
57
|
+
return concatenate(idKey, memIndexBytes, epoch, msgLen, uint8Msg, rateLimitBytes);
|
58
58
|
}
|
59
59
|
async generateRLNProof(msg, index, epoch, idSecretHash, rateLimit) {
|
60
60
|
if (epoch === undefined) {
|
@@ -90,9 +90,9 @@ export class Zerokit {
|
|
90
90
|
pBytes = proofToBytes(proof);
|
91
91
|
}
|
92
92
|
// calculate message length
|
93
|
-
const msgLen =
|
94
|
-
const rateLimitBytes =
|
95
|
-
return zerokitRLN.verifyRLNProof(this.zkRLN,
|
93
|
+
const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
|
94
|
+
const rateLimitBytes = writeUIntLE(new Uint8Array(8), rateLimit ?? this.rateLimit, 0, 8);
|
95
|
+
return zerokitRLN.verifyRLNProof(this.zkRLN, concatenate(pBytes, msgLen, msg, rateLimitBytes));
|
96
96
|
}
|
97
97
|
verifyWithRoots(proof, msg, roots, rateLimit) {
|
98
98
|
let pBytes;
|
@@ -103,10 +103,10 @@ export class Zerokit {
|
|
103
103
|
pBytes = proofToBytes(proof);
|
104
104
|
}
|
105
105
|
// calculate message length
|
106
|
-
const msgLen =
|
107
|
-
const rateLimitBytes =
|
108
|
-
const rootsBytes =
|
109
|
-
return zerokitRLN.verifyWithRoots(this.zkRLN,
|
106
|
+
const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
|
107
|
+
const rateLimitBytes = writeUIntLE(new Uint8Array(8), rateLimit ?? this.rateLimit, 0, 8);
|
108
|
+
const rootsBytes = concatenate(...roots);
|
109
|
+
return zerokitRLN.verifyWithRoots(this.zkRLN, concatenate(pBytes, msgLen, msg, rateLimitBytes), rootsBytes);
|
110
110
|
}
|
111
111
|
verifyWithNoRoot(proof, msg, rateLimit) {
|
112
112
|
let pBytes;
|
@@ -117,9 +117,9 @@ export class Zerokit {
|
|
117
117
|
pBytes = proofToBytes(proof);
|
118
118
|
}
|
119
119
|
// calculate message length
|
120
|
-
const msgLen =
|
121
|
-
const rateLimitBytes =
|
122
|
-
return zerokitRLN.verifyWithRoots(this.zkRLN,
|
120
|
+
const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
|
121
|
+
const rateLimitBytes = writeUIntLE(new Uint8Array(8), rateLimit ?? this.rateLimit, 0, 8);
|
122
|
+
return zerokitRLN.verifyWithRoots(this.zkRLN, concatenate(pBytes, msgLen, msg, rateLimitBytes), new Uint8Array());
|
123
123
|
}
|
124
124
|
}
|
125
125
|
//# sourceMappingURL=zerokit.js.map
|
package/dist/zerokit.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"zerokit.js","sourceRoot":"","sources":["../src/zerokit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,
|
1
|
+
{"version":3,"file":"zerokit.js","sourceRoot":"","sources":["../src/zerokit.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1 +1,93 @@
|
|
1
|
-
{
|
1
|
+
{
|
2
|
+
"name": "@waku/rln",
|
3
|
+
"version": "0.1.6",
|
4
|
+
"description": "RLN (Rate Limiting Nullifier) implementation for Waku",
|
5
|
+
"types": "./dist/index.d.ts",
|
6
|
+
"module": "./dist/index.js",
|
7
|
+
"exports": {
|
8
|
+
".": {
|
9
|
+
"types": "./dist/index.d.ts",
|
10
|
+
"import": "./dist/index.js"
|
11
|
+
}
|
12
|
+
},
|
13
|
+
"type": "module",
|
14
|
+
"homepage": "https://github.com/waku-org/js-waku/tree/master/packages/rln#readme",
|
15
|
+
"repository": {
|
16
|
+
"type": "git",
|
17
|
+
"url": "https://github.com/waku-org/js-waku.git"
|
18
|
+
},
|
19
|
+
"bugs": {
|
20
|
+
"url": "https://github.com/waku-org/js-waku/issues"
|
21
|
+
},
|
22
|
+
"license": "MIT OR Apache-2.0",
|
23
|
+
"keywords": [
|
24
|
+
"waku",
|
25
|
+
"rln",
|
26
|
+
"rate-limiting",
|
27
|
+
"privacy",
|
28
|
+
"web3"
|
29
|
+
],
|
30
|
+
"scripts": {
|
31
|
+
"build": "run-s build:**",
|
32
|
+
"build:copy": "mkdir -p dist/resources && cp -r src/resources/* dist/resources/",
|
33
|
+
"build:esm": "tsc",
|
34
|
+
"build:bundle": "rollup --config rollup.config.js",
|
35
|
+
"fix": "run-s fix:*",
|
36
|
+
"fix:lint": "eslint src *.js --fix",
|
37
|
+
"check": "run-s check:*",
|
38
|
+
"check:tsc": "tsc -p tsconfig.dev.json",
|
39
|
+
"check:lint": "eslint \"src/!(resources)/**/*.{ts,js}\" *.js",
|
40
|
+
"check:spelling": "cspell \"{README.md,src/**/*.ts}\"",
|
41
|
+
"test": "NODE_ENV=test run-s test:*",
|
42
|
+
"test:browser": "karma start karma.conf.cjs",
|
43
|
+
"watch:build": "tsc -p tsconfig.json -w",
|
44
|
+
"watch:test": "mocha --watch",
|
45
|
+
"prepublish": "npm run build",
|
46
|
+
"reset-hard": "git clean -dfx -e .idea && git reset --hard && npm i && npm run build"
|
47
|
+
},
|
48
|
+
"engines": {
|
49
|
+
"node": ">=22"
|
50
|
+
},
|
51
|
+
"devDependencies": {
|
52
|
+
"@rollup/plugin-commonjs": "^25.0.7",
|
53
|
+
"@rollup/plugin-json": "^6.0.0",
|
54
|
+
"@rollup/plugin-node-resolve": "^15.2.3",
|
55
|
+
"@types/chai": "^5.0.1",
|
56
|
+
"@types/chai-spies": "^1.0.6",
|
57
|
+
"@waku/interfaces": "0.0.31",
|
58
|
+
"@types/deep-equal-in-any-order": "^1.0.4",
|
59
|
+
"@types/lodash": "^4.17.15",
|
60
|
+
"@types/sinon": "^17.0.3",
|
61
|
+
"@waku/build-utils": "^1.0.0",
|
62
|
+
"@waku/message-encryption": "^0.0.34",
|
63
|
+
"deep-equal-in-any-order": "^2.0.6",
|
64
|
+
"fast-check": "^3.23.2",
|
65
|
+
"rollup-plugin-copy": "^3.5.0"
|
66
|
+
},
|
67
|
+
"files": [
|
68
|
+
"dist",
|
69
|
+
"bundle",
|
70
|
+
"src/**/*.ts",
|
71
|
+
"!**/*.spec.*",
|
72
|
+
"!**/*.json",
|
73
|
+
"CHANGELOG.md",
|
74
|
+
"LICENSE",
|
75
|
+
"README.md"
|
76
|
+
],
|
77
|
+
"dependencies": {
|
78
|
+
"@chainsafe/bls-keystore": "3.0.0",
|
79
|
+
"@waku/core": "^0.0.36",
|
80
|
+
"@waku/utils": "^0.0.24",
|
81
|
+
"@noble/hashes": "^1.2.0",
|
82
|
+
"@waku/zerokit-rln-wasm": "^0.0.13",
|
83
|
+
"ethereum-cryptography": "^3.1.0",
|
84
|
+
"ethers": "^5.7.2",
|
85
|
+
"lodash": "^4.17.21",
|
86
|
+
"uuid": "^11.0.5",
|
87
|
+
"chai": "^5.1.2",
|
88
|
+
"chai-as-promised": "^8.0.1",
|
89
|
+
"chai-spies": "^1.1.0",
|
90
|
+
"chai-subset": "^1.6.0",
|
91
|
+
"sinon": "^19.0.2"
|
92
|
+
}
|
93
|
+
}
|
@@ -25,13 +25,4 @@ export const RATE_LIMIT_PARAMS = {
|
|
25
25
|
EPOCH_LENGTH: 600 // Epoch length in seconds (10 minutes)
|
26
26
|
} as const;
|
27
27
|
|
28
|
-
/**
|
29
|
-
* Default Q value for the RLN contract
|
30
|
-
* This is the upper bound for the ID commitment
|
31
|
-
* @see https://github.com/waku-org/specs/blob/master/standards/core/rln-contract.md#implementation-suggestions
|
32
|
-
*/
|
33
|
-
export const DEFAULT_Q = BigInt(
|
34
|
-
"21888242871839275222246405745257275088548364400416034343698204186575808495617"
|
35
|
-
);
|
36
|
-
|
37
28
|
export const DEFAULT_RATE_LIMIT = RATE_LIMIT_PARAMS.MAX_RATE;
|
@@ -3,7 +3,6 @@ import { ethers } from "ethers";
|
|
3
3
|
|
4
4
|
import { IdentityCredential } from "../identity.js";
|
5
5
|
import { DecryptedCredentials } from "../keystore/types.js";
|
6
|
-
import { BytesUtils } from "../utils/bytes.js";
|
7
6
|
|
8
7
|
import { RLN_ABI } from "./abi.js";
|
9
8
|
import { DEFAULT_RATE_LIMIT, RATE_LIMIT_PARAMS } from "./constants.js";
|
@@ -491,6 +490,7 @@ export class RLNBaseContract {
|
|
491
490
|
log.error(`Error in withdraw: ${(error as Error).message}`);
|
492
491
|
}
|
493
492
|
}
|
493
|
+
|
494
494
|
public async registerWithIdentity(
|
495
495
|
identity: IdentityCredential
|
496
496
|
): Promise<DecryptedCredentials | undefined> {
|
@@ -529,9 +529,7 @@ export class RLNBaseContract {
|
|
529
529
|
identity.IDCommitmentBigInt,
|
530
530
|
this.rateLimit,
|
531
531
|
[],
|
532
|
-
{
|
533
|
-
gasLimit
|
534
|
-
}
|
532
|
+
{ gasLimit }
|
535
533
|
);
|
536
534
|
|
537
535
|
const txRegisterReceipt = await txRegisterResponse.wait();
|
@@ -628,7 +626,7 @@ export class RLNBaseContract {
|
|
628
626
|
permit.v,
|
629
627
|
permit.r,
|
630
628
|
permit.s,
|
631
|
-
|
629
|
+
identity.IDCommitmentBigInt,
|
632
630
|
this.rateLimit,
|
633
631
|
idCommitmentsToErase.map((id) => ethers.BigNumber.from(id))
|
634
632
|
);
|
@@ -4,7 +4,7 @@ import { ethers } from "ethers";
|
|
4
4
|
|
5
5
|
import type { RLNInstance } from "../rln.js";
|
6
6
|
import { MerkleRootTracker } from "../root_tracker.js";
|
7
|
-
import {
|
7
|
+
import { zeroPadLE } from "../utils/bytes.js";
|
8
8
|
|
9
9
|
import { RLNBaseContract } from "./rln_base_contract.js";
|
10
10
|
import { RLNContractInitOptions } from "./types.js";
|
@@ -110,10 +110,7 @@ export class RLNContract extends RLNBaseContract {
|
|
110
110
|
index = ethers.BigNumber.from(index);
|
111
111
|
}
|
112
112
|
|
113
|
-
const idCommitment =
|
114
|
-
hexToBytes(_idCommitment),
|
115
|
-
32
|
116
|
-
);
|
113
|
+
const idCommitment = zeroPadLE(hexToBytes(_idCommitment), 32);
|
117
114
|
rlnInstance.zerokit.insertMember(idCommitment);
|
118
115
|
|
119
116
|
const numericIndex = index.toNumber();
|