@waku/rln 0.0.14 → 0.1.0-b7cb3f9
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/README.md +5 -5
- package/bundle/assets/{rln-fb4d7b4b.wasm → rln-6ded2896.wasm} +0 -0
- package/bundle/assets/rln_final-8b299152.zkey +0 -0
- package/bundle/assets/rln_wasm_bg-6f96f821.wasm +0 -0
- package/bundle/index.js +491 -212
- package/dist/.tsbuildinfo +1 -1
- package/dist/codec.d.ts +4 -4
- package/dist/codec.js +4 -4
- package/dist/codec.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/resources/rln.wasm +0 -0
- package/dist/resources/rln_final.zkey +0 -0
- package/dist/resources/verification_key.js +63 -72
- package/dist/resources/verification_key.js.map +1 -1
- package/dist/rln.d.ts +22 -8
- package/dist/rln.js +56 -20
- package/dist/rln.js.map +1 -1
- package/dist/rln_contract.d.ts +9 -3
- package/dist/rln_contract.js +61 -5
- package/dist/rln_contract.js.map +1 -1
- package/dist/root_tracker.d.ts +10 -0
- package/dist/root_tracker.js +72 -0
- package/dist/root_tracker.js.map +1 -0
- package/package.json +7 -7
- package/src/codec.ts +7 -7
- package/src/index.ts +10 -3
- package/src/rln.ts +83 -20
- package/src/rln_contract.ts +110 -11
- package/src/root_tracker.ts +88 -0
- package/bundle/assets/rln_final-a641c06e.zkey +0 -0
- package/bundle/assets/rln_wasm_bg-4d82d6a4.wasm +0 -0
@@ -1,121 +1,112 @@
|
|
1
1
|
const verificationKey = {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
"
|
7
|
-
"
|
8
|
-
"1"
|
2
|
+
protocol: "groth16",
|
3
|
+
curve: "bn128",
|
4
|
+
nPublic: 6,
|
5
|
+
vk_alpha_1: [
|
6
|
+
"20124996762962216725442980738609010303800849578410091356605067053491763969391",
|
7
|
+
"9118593021526896828671519912099489027245924097793322973632351264852174143923",
|
8
|
+
"1",
|
9
9
|
],
|
10
|
-
|
10
|
+
vk_beta_2: [
|
11
11
|
[
|
12
|
-
"
|
13
|
-
"
|
12
|
+
"4693952934005375501364248788849686435240706020501681709396105298107971354382",
|
13
|
+
"14346958885444710485362620645446987998958218205939139994511461437152241966681",
|
14
14
|
],
|
15
15
|
[
|
16
|
-
"
|
17
|
-
"
|
16
|
+
"16851772916911573982706166384196538392731905827088356034885868448550849804972",
|
17
|
+
"823612331030938060799959717749043047845343400798220427319188951998582076532",
|
18
18
|
],
|
19
|
-
[
|
20
|
-
"1",
|
21
|
-
"0"
|
22
|
-
]
|
19
|
+
["1", "0"],
|
23
20
|
],
|
24
|
-
|
21
|
+
vk_gamma_2: [
|
25
22
|
[
|
26
23
|
"10857046999023057135944570762232829481370756359578518086990519993285655852781",
|
27
|
-
"11559732032986387107991004021392285783925812861821192530917403151452391805634"
|
24
|
+
"11559732032986387107991004021392285783925812861821192530917403151452391805634",
|
28
25
|
],
|
29
26
|
[
|
30
27
|
"8495653923123431417604973247489272438418190587263600148770280649306958101930",
|
31
|
-
"4082367875863433681332203403145435568316851327593401208105741076214120093531"
|
28
|
+
"4082367875863433681332203403145435568316851327593401208105741076214120093531",
|
32
29
|
],
|
33
|
-
[
|
34
|
-
"1",
|
35
|
-
"0"
|
36
|
-
]
|
30
|
+
["1", "0"],
|
37
31
|
],
|
38
|
-
|
32
|
+
vk_delta_2: [
|
39
33
|
[
|
40
|
-
"
|
41
|
-
"
|
34
|
+
"8353516066399360694538747105302262515182301251524941126222712285088022964076",
|
35
|
+
"9329524012539638256356482961742014315122377605267454801030953882967973561832",
|
42
36
|
],
|
43
37
|
[
|
44
|
-
"
|
45
|
-
"
|
38
|
+
"16805391589556134376869247619848130874761233086443465978238468412168162326401",
|
39
|
+
"10111259694977636294287802909665108497237922060047080343914303287629927847739",
|
46
40
|
],
|
47
|
-
[
|
48
|
-
"1",
|
49
|
-
"0"
|
50
|
-
]
|
41
|
+
["1", "0"],
|
51
42
|
],
|
52
|
-
|
43
|
+
vk_alphabeta_12: [
|
53
44
|
[
|
54
45
|
[
|
55
|
-
"
|
56
|
-
"
|
46
|
+
"12608968655665301215455851857466367636344427685631271961542642719683786103711",
|
47
|
+
"9849575605876329747382930567422916152871921500826003490242628251047652318086",
|
57
48
|
],
|
58
49
|
[
|
59
|
-
"
|
60
|
-
"
|
50
|
+
"6322029441245076030714726551623552073612922718416871603535535085523083939021",
|
51
|
+
"8700115492541474338049149013125102281865518624059015445617546140629435818912",
|
61
52
|
],
|
62
53
|
[
|
63
|
-
"
|
64
|
-
"
|
65
|
-
]
|
54
|
+
"10674973475340072635573101639867487770811074181475255667220644196793546640210",
|
55
|
+
"2926286967251299230490668407790788696102889214647256022788211245826267484824",
|
56
|
+
],
|
66
57
|
],
|
67
58
|
[
|
68
59
|
[
|
69
|
-
"
|
70
|
-
"
|
60
|
+
"9660441540778523475944706619139394922744328902833875392144658911530830074820",
|
61
|
+
"19548113127774514328631808547691096362144426239827206966690021428110281506546",
|
71
62
|
],
|
72
63
|
[
|
73
|
-
"
|
74
|
-
"
|
64
|
+
"1870837942477655969123169532603615788122896469891695773961478956740992497097",
|
65
|
+
"12536105729661705698805725105036536744930776470051238187456307227425796690780",
|
75
66
|
],
|
76
67
|
[
|
77
|
-
"
|
78
|
-
"
|
79
|
-
]
|
80
|
-
]
|
68
|
+
"21811903352654147452884857281720047789720483752548991551595462057142824037334",
|
69
|
+
"19021616763967199151052893283384285352200445499680068407023236283004353578353",
|
70
|
+
],
|
71
|
+
],
|
81
72
|
],
|
82
|
-
|
73
|
+
IC: [
|
83
74
|
[
|
84
|
-
"
|
85
|
-
"
|
86
|
-
"1"
|
75
|
+
"11992897507809711711025355300535923222599547639134311050809253678876341466909",
|
76
|
+
"17181525095924075896332561978747020491074338784673526378866503154966799128110",
|
77
|
+
"1",
|
87
78
|
],
|
88
79
|
[
|
89
|
-
"
|
90
|
-
"
|
91
|
-
"1"
|
80
|
+
"17018665030246167677911144513385572506766200776123272044534328594850561667818",
|
81
|
+
"18601114175490465275436712413925513066546725461375425769709566180981674884464",
|
82
|
+
"1",
|
92
83
|
],
|
93
84
|
[
|
94
|
-
"
|
95
|
-
"
|
96
|
-
"1"
|
85
|
+
"18799470100699658367834559797874857804183288553462108031963980039244731716542",
|
86
|
+
"13064227487174191981628537974951887429496059857753101852163607049188825592007",
|
87
|
+
"1",
|
97
88
|
],
|
98
89
|
[
|
99
|
-
"
|
100
|
-
"
|
101
|
-
"1"
|
90
|
+
"17432501889058124609368103715904104425610382063762621017593209214189134571156",
|
91
|
+
"13406815149699834788256141097399354592751313348962590382887503595131085938635",
|
92
|
+
"1",
|
102
93
|
],
|
103
94
|
[
|
104
|
-
"
|
105
|
-
"
|
106
|
-
"1"
|
95
|
+
"10320964835612716439094703312987075811498239445882526576970512041988148264481",
|
96
|
+
"9024164961646353611176283204118089412001502110138072989569118393359029324867",
|
97
|
+
"1",
|
107
98
|
],
|
108
99
|
[
|
109
|
-
"
|
110
|
-
"
|
111
|
-
"1"
|
100
|
+
"718355081067365548229685160476620267257521491773976402837645005858953849298",
|
101
|
+
"14635482993933988261008156660773180150752190597753512086153001683711587601974",
|
102
|
+
"1",
|
112
103
|
],
|
113
104
|
[
|
114
|
-
"
|
115
|
-
"
|
116
|
-
"1"
|
117
|
-
]
|
118
|
-
]
|
105
|
+
"11777720285956632126519898515392071627539405001940313098390150593689568177535",
|
106
|
+
"8483603647274280691250972408211651407952870456587066148445913156086740744515",
|
107
|
+
"1",
|
108
|
+
],
|
109
|
+
],
|
119
110
|
};
|
120
111
|
export default verificationKey;
|
121
112
|
//# sourceMappingURL=verification_key.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verification_key.js","sourceRoot":"","sources":["../../src/resources/verification_key.js"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG;IACtB,
|
1
|
+
{"version":3,"file":"verification_key.js","sourceRoot":"","sources":["../../src/resources/verification_key.js"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG;IACtB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,CAAC;IACV,UAAU,EAAE;QACV,+EAA+E;QAC/E,8EAA8E;QAC9E,GAAG;KACJ;IACD,SAAS,EAAE;QACT;YACE,8EAA8E;YAC9E,+EAA+E;SAChF;QACD;YACE,+EAA+E;YAC/E,6EAA6E;SAC9E;QACD,CAAC,GAAG,EAAE,GAAG,CAAC;KACX;IACD,UAAU,EAAE;QACV;YACE,+EAA+E;YAC/E,+EAA+E;SAChF;QACD;YACE,8EAA8E;YAC9E,8EAA8E;SAC/E;QACD,CAAC,GAAG,EAAE,GAAG,CAAC;KACX;IACD,UAAU,EAAE;QACV;YACE,8EAA8E;YAC9E,8EAA8E;SAC/E;QACD;YACE,+EAA+E;YAC/E,+EAA+E;SAChF;QACD,CAAC,GAAG,EAAE,GAAG,CAAC;KACX;IACD,eAAe,EAAE;QACf;YACE;gBACE,+EAA+E;gBAC/E,8EAA8E;aAC/E;YACD;gBACE,8EAA8E;gBAC9E,8EAA8E;aAC/E;YACD;gBACE,+EAA+E;gBAC/E,8EAA8E;aAC/E;SACF;QACD;YACE;gBACE,8EAA8E;gBAC9E,+EAA+E;aAChF;YACD;gBACE,8EAA8E;gBAC9E,+EAA+E;aAChF;YACD;gBACE,+EAA+E;gBAC/E,+EAA+E;aAChF;SACF;KACF;IACD,EAAE,EAAE;QACF;YACE,+EAA+E;YAC/E,+EAA+E;YAC/E,GAAG;SACJ;QACD;YACE,+EAA+E;YAC/E,+EAA+E;YAC/E,GAAG;SACJ;QACD;YACE,+EAA+E;YAC/E,+EAA+E;YAC/E,GAAG;SACJ;QACD;YACE,+EAA+E;YAC/E,+EAA+E;YAC/E,GAAG;SACJ;QACD;YACE,+EAA+E;YAC/E,8EAA8E;YAC9E,GAAG;SACJ;QACD;YACE,6EAA6E;YAC7E,+EAA+E;YAC/E,GAAG;SACJ;QACD;YACE,+EAA+E;YAC/E,8EAA8E;YAC9E,GAAG;SACJ;KACF;CACF,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
package/dist/rln.d.ts
CHANGED
@@ -5,12 +5,21 @@ import { WitnessCalculator } from "./witness_calculator.js";
|
|
5
5
|
* @returns RLNInstance
|
6
6
|
*/
|
7
7
|
export declare function create(): Promise<RLNInstance>;
|
8
|
-
export declare class
|
9
|
-
readonly
|
8
|
+
export declare class IdentityCredential {
|
9
|
+
readonly IDTrapdoor: Uint8Array;
|
10
|
+
readonly IDNullifier: Uint8Array;
|
11
|
+
readonly IDSecretHash: Uint8Array;
|
10
12
|
readonly IDCommitment: Uint8Array;
|
11
13
|
readonly IDCommitmentBigInt: bigint;
|
12
|
-
constructor(
|
13
|
-
static fromBytes(memKeys: Uint8Array):
|
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);
|
14
23
|
}
|
15
24
|
export declare class Proof implements IRateLimitProof {
|
16
25
|
readonly proof: Uint8Array;
|
@@ -21,19 +30,24 @@ export declare class Proof implements IRateLimitProof {
|
|
21
30
|
readonly nullifier: Uint8Array;
|
22
31
|
readonly rlnIdentifier: Uint8Array;
|
23
32
|
constructor(proofBytes: Uint8Array);
|
33
|
+
extractMetadata(): ProofMetadata;
|
24
34
|
}
|
25
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;
|
26
38
|
export declare class RLNInstance {
|
27
39
|
private zkRLN;
|
28
40
|
private witnessCalculator;
|
29
41
|
constructor(zkRLN: number, witnessCalculator: WitnessCalculator);
|
30
|
-
|
31
|
-
|
42
|
+
generateIdentityCredentials(): IdentityCredential;
|
43
|
+
generateSeededIdentityCredential(seed: string): IdentityCredential;
|
32
44
|
insertMember(idCommitment: Uint8Array): void;
|
45
|
+
insertMembers(index: number, ...idCommitments: Array<Uint8Array>): void;
|
46
|
+
deleteMember(index: number): void;
|
33
47
|
getMerkleRoot(): Uint8Array;
|
34
48
|
serializeMessage(uint8Msg: Uint8Array, memIndex: number, epoch: Uint8Array, idKey: Uint8Array): Uint8Array;
|
35
|
-
generateRLNProof(msg: Uint8Array, index: number, epoch: Uint8Array | Date | undefined,
|
49
|
+
generateRLNProof(msg: Uint8Array, index: number, epoch: Uint8Array | Date | undefined, idSecretHash: Uint8Array): Promise<IRateLimitProof>;
|
36
50
|
verifyRLNProof(proof: IRateLimitProof | Uint8Array, msg: Uint8Array): boolean;
|
37
|
-
verifyWithRoots(proof: IRateLimitProof | Uint8Array, msg: Uint8Array): boolean;
|
51
|
+
verifyWithRoots(proof: IRateLimitProof | Uint8Array, msg: Uint8Array, ...roots: Array<Uint8Array>): boolean;
|
38
52
|
verifyWithNoRoot(proof: IRateLimitProof | Uint8Array, msg: Uint8Array): boolean;
|
39
53
|
}
|
package/dist/rln.js
CHANGED
@@ -55,17 +55,21 @@ export async function create() {
|
|
55
55
|
const zkRLN = zerokitRLN.newRLN(DEPTH, zkey, vkey);
|
56
56
|
return new RLNInstance(zkRLN, witnessCalculator);
|
57
57
|
}
|
58
|
-
export class
|
59
|
-
constructor(
|
60
|
-
this.
|
58
|
+
export class IdentityCredential {
|
59
|
+
constructor(IDTrapdoor, IDNullifier, IDSecretHash, IDCommitment, IDCommitmentBigInt) {
|
60
|
+
this.IDTrapdoor = IDTrapdoor;
|
61
|
+
this.IDNullifier = IDNullifier;
|
62
|
+
this.IDSecretHash = IDSecretHash;
|
61
63
|
this.IDCommitment = IDCommitment;
|
62
64
|
this.IDCommitmentBigInt = IDCommitmentBigInt;
|
63
65
|
}
|
64
66
|
static fromBytes(memKeys) {
|
65
|
-
const
|
66
|
-
const
|
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);
|
67
71
|
const idCommitmentBigInt = buildBigIntFromUint8Array(idCommitment);
|
68
|
-
return new
|
72
|
+
return new IdentityCredential(idTrapdoor, idNullifier, idSecretHash, idCommitment, idCommitmentBigInt);
|
69
73
|
}
|
70
74
|
}
|
71
75
|
const proofOffset = 128;
|
@@ -75,6 +79,14 @@ const shareXOffset = epochOffset + 32;
|
|
75
79
|
const shareYOffset = shareXOffset + 32;
|
76
80
|
const nullifierOffset = shareYOffset + 32;
|
77
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
|
+
}
|
78
90
|
export class Proof {
|
79
91
|
constructor(proofBytes) {
|
80
92
|
if (proofBytes.length < rlnIdentifierOffset)
|
@@ -88,27 +100,52 @@ export class Proof {
|
|
88
100
|
this.nullifier = proofBytes.subarray(shareYOffset, nullifierOffset);
|
89
101
|
this.rlnIdentifier = proofBytes.subarray(nullifierOffset, rlnIdentifierOffset);
|
90
102
|
}
|
103
|
+
extractMetadata() {
|
104
|
+
const externalNullifier = poseidonHash(this.epoch, this.rlnIdentifier);
|
105
|
+
return new ProofMetadata(this.nullifier, this.shareX, this.shareY, externalNullifier);
|
106
|
+
}
|
91
107
|
}
|
92
108
|
export function proofToBytes(p) {
|
93
109
|
return concatenate(p.proof, p.merkleRoot, p.epoch, p.shareX, p.shareY, p.nullifier, p.rlnIdentifier);
|
94
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);
|
120
|
+
}
|
95
121
|
export class RLNInstance {
|
96
122
|
constructor(zkRLN, witnessCalculator) {
|
97
123
|
this.zkRLN = zkRLN;
|
98
124
|
this.witnessCalculator = witnessCalculator;
|
99
125
|
}
|
100
|
-
|
101
|
-
const memKeys = zerokitRLN.
|
102
|
-
return
|
126
|
+
generateIdentityCredentials() {
|
127
|
+
const memKeys = zerokitRLN.generateExtendedMembershipKey(this.zkRLN); // TODO: rename this function in zerokit rln-wasm
|
128
|
+
return IdentityCredential.fromBytes(memKeys);
|
103
129
|
}
|
104
|
-
|
130
|
+
generateSeededIdentityCredential(seed) {
|
105
131
|
const seedBytes = stringEncoder.encode(seed);
|
106
|
-
|
107
|
-
|
132
|
+
// TODO: rename this function in zerokit rln-wasm
|
133
|
+
const memKeys = zerokitRLN.generateSeededExtendedMembershipKey(this.zkRLN, seedBytes);
|
134
|
+
return IdentityCredential.fromBytes(memKeys);
|
108
135
|
}
|
109
136
|
insertMember(idCommitment) {
|
110
137
|
zerokitRLN.insertMember(this.zkRLN, idCommitment);
|
111
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
|
+
}
|
112
149
|
getMerkleRoot() {
|
113
150
|
return zerokitRLN.getRoot(this.zkRLN);
|
114
151
|
}
|
@@ -120,7 +157,7 @@ export class RLNInstance {
|
|
120
157
|
// [ id_key<32> | id_index<8> | epoch<32> | signal_len<8> | signal<var> ]
|
121
158
|
return concatenate(idKey, memIndexBytes, epoch, msgLen, uint8Msg);
|
122
159
|
}
|
123
|
-
async generateRLNProof(msg, index, epoch,
|
160
|
+
async generateRLNProof(msg, index, epoch, idSecretHash) {
|
124
161
|
if (epoch == undefined) {
|
125
162
|
epoch = epochIntToBytes(dateToEpoch(new Date()));
|
126
163
|
}
|
@@ -129,11 +166,11 @@ export class RLNInstance {
|
|
129
166
|
}
|
130
167
|
if (epoch.length != 32)
|
131
168
|
throw "invalid epoch";
|
132
|
-
if (
|
133
|
-
throw "invalid id
|
169
|
+
if (idSecretHash.length != 32)
|
170
|
+
throw "invalid id secret hash";
|
134
171
|
if (index < 0)
|
135
172
|
throw "index must be >= 0";
|
136
|
-
const serialized_msg = this.serializeMessage(msg, index, epoch,
|
173
|
+
const serialized_msg = this.serializeMessage(msg, index, epoch, idSecretHash);
|
137
174
|
const rlnWitness = zerokitRLN.getSerializedRLNWitness(this.zkRLN, serialized_msg);
|
138
175
|
const inputs = zerokitRLN.RLNWitnessToJson(this.zkRLN, rlnWitness);
|
139
176
|
const calculatedWitness = await this.witnessCalculator.calculateWitness(inputs, false); // no sanity check being used in zerokit
|
@@ -152,7 +189,7 @@ export class RLNInstance {
|
|
152
189
|
const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
|
153
190
|
return zerokitRLN.verifyRLNProof(this.zkRLN, concatenate(pBytes, msgLen, msg));
|
154
191
|
}
|
155
|
-
verifyWithRoots(proof, msg) {
|
192
|
+
verifyWithRoots(proof, msg, ...roots) {
|
156
193
|
let pBytes;
|
157
194
|
if (proof instanceof Uint8Array) {
|
158
195
|
pBytes = proof;
|
@@ -162,9 +199,8 @@ export class RLNInstance {
|
|
162
199
|
}
|
163
200
|
// calculate message length
|
164
201
|
const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
|
165
|
-
|
166
|
-
|
167
|
-
return zerokitRLN.verifyWithRoots(this.zkRLN, concatenate(pBytes, msgLen, msg), root);
|
202
|
+
const rootsBytes = concatenate(...roots);
|
203
|
+
return zerokitRLN.verifyWithRoots(this.zkRLN, concatenate(pBytes, msgLen, msg), rootsBytes);
|
168
204
|
}
|
169
205
|
verifyWithNoRoot(proof, msg) {
|
170
206
|
let pBytes;
|
package/dist/rln.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rln.js","sourceRoot":"","sources":["../src/rln.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,EAAE,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,eAAe,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAG9C;;;;GAIG;AACH,SAAS,WAAW,CAAC,GAAG,KAAmB;IACzC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;QACvB,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC;KAC3B;IACD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;QACvB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;KACtB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,KAAiB;IAClD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,WAAW,EAAE,CAAC;AAExC,MAAM,KAAK,GAAG,EAAE,CAAC;AAEjB,KAAK,UAAU,qBAAqB;IAClC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,IAAI,EAAE,CAAC;IACb,UAAU,CAAC,eAAe,EAAE,CAAC;IAC7B,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,OAAO,
|
1
|
+
{"version":3,"file":"rln.js","sourceRoot":"","sources":["../src/rln.ts"],"names":[],"mappings":"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"}
|
package/dist/rln_contract.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { ethers } from "ethers";
|
2
|
-
import { RLNInstance } from "./rln.js";
|
2
|
+
import { IdentityCredential, RLNInstance } from "./rln.js";
|
3
3
|
declare type Member = {
|
4
4
|
pubkey: string;
|
5
5
|
index: number;
|
@@ -8,6 +8,11 @@ declare type ContractOptions = {
|
|
8
8
|
address: string;
|
9
9
|
provider: ethers.Signer | ethers.providers.Provider;
|
10
10
|
};
|
11
|
+
declare type FetchMembersOptions = {
|
12
|
+
fromBlock?: number;
|
13
|
+
fetchRange?: number;
|
14
|
+
fetchChunks?: number;
|
15
|
+
};
|
11
16
|
export declare class RLNContract {
|
12
17
|
private _contract;
|
13
18
|
private membersFilter;
|
@@ -16,9 +21,10 @@ export declare class RLNContract {
|
|
16
21
|
constructor({ address, provider }: ContractOptions);
|
17
22
|
get contract(): ethers.Contract;
|
18
23
|
get members(): Member[];
|
19
|
-
fetchMembers(rlnInstance: RLNInstance,
|
24
|
+
fetchMembers(rlnInstance: RLNInstance, options?: FetchMembersOptions): Promise<void>;
|
20
25
|
subscribeToMembers(rlnInstance: RLNInstance): void;
|
21
26
|
private addMemberFromEvent;
|
22
|
-
|
27
|
+
registerWithSignature(rlnInstance: RLNInstance, signature: string): Promise<ethers.Event | undefined>;
|
28
|
+
registerWithKey(credential: IdentityCredential): Promise<ethers.Event | undefined>;
|
23
29
|
}
|
24
30
|
export {};
|
package/dist/rln_contract.js
CHANGED
@@ -18,8 +18,11 @@ export class RLNContract {
|
|
18
18
|
get members() {
|
19
19
|
return this._members;
|
20
20
|
}
|
21
|
-
async fetchMembers(rlnInstance,
|
22
|
-
const registeredMemberEvents = await
|
21
|
+
async fetchMembers(rlnInstance, options = {}) {
|
22
|
+
const registeredMemberEvents = await queryFilter(this.contract, {
|
23
|
+
...options,
|
24
|
+
membersFilter: this.membersFilter,
|
25
|
+
});
|
23
26
|
for (const event of registeredMemberEvents) {
|
24
27
|
this.addMemberFromEvent(rlnInstance, event);
|
25
28
|
}
|
@@ -37,14 +40,67 @@ export class RLNContract {
|
|
37
40
|
const idCommitment = ethers.utils.zeroPad(ethers.utils.arrayify(pubkey), 32);
|
38
41
|
rlnInstance.insertMember(idCommitment);
|
39
42
|
}
|
40
|
-
async
|
41
|
-
const
|
43
|
+
async registerWithSignature(rlnInstance, signature) {
|
44
|
+
const identityCredential = await rlnInstance.generateSeededIdentityCredential(signature);
|
45
|
+
return this.registerWithKey(identityCredential);
|
46
|
+
}
|
47
|
+
async registerWithKey(credential) {
|
42
48
|
const depositValue = await this.contract.MEMBERSHIP_DEPOSIT();
|
43
|
-
const txRegisterResponse = await this.contract.register(
|
49
|
+
const txRegisterResponse = await this.contract.register(credential.IDCommitmentBigInt, {
|
44
50
|
value: depositValue,
|
45
51
|
});
|
46
52
|
const txRegisterReceipt = await txRegisterResponse.wait();
|
47
53
|
return txRegisterReceipt?.events?.[0];
|
48
54
|
}
|
49
55
|
}
|
56
|
+
// these value should be tested on other networks
|
57
|
+
const FETCH_CHUNK = 5;
|
58
|
+
const BLOCK_RANGE = 3000;
|
59
|
+
async function queryFilter(contract, options) {
|
60
|
+
const { fromBlock, membersFilter, fetchRange = BLOCK_RANGE, fetchChunks = FETCH_CHUNK, } = options;
|
61
|
+
if (!fromBlock) {
|
62
|
+
return contract.queryFilter(membersFilter);
|
63
|
+
}
|
64
|
+
if (!contract.signer.provider) {
|
65
|
+
throw Error("No provider found on the contract's signer.");
|
66
|
+
}
|
67
|
+
const toBlock = await contract.signer.provider.getBlockNumber();
|
68
|
+
if (toBlock - fromBlock < fetchRange) {
|
69
|
+
return contract.queryFilter(membersFilter);
|
70
|
+
}
|
71
|
+
const events = [];
|
72
|
+
const chunks = splitToChunks(fromBlock, toBlock, fetchRange);
|
73
|
+
for (const portion of takeN(chunks, fetchChunks)) {
|
74
|
+
const promises = portion.map(([left, right]) => ignoreErrors(contract.queryFilter(membersFilter, left, right), []));
|
75
|
+
const fetchedEvents = await Promise.all(promises);
|
76
|
+
events.push(fetchedEvents.flatMap((v) => v));
|
77
|
+
}
|
78
|
+
return events.flatMap((v) => v);
|
79
|
+
}
|
80
|
+
function splitToChunks(from, to, step) {
|
81
|
+
const chunks = [];
|
82
|
+
let left = from;
|
83
|
+
while (left < to) {
|
84
|
+
const right = left + step < to ? left + step : to;
|
85
|
+
chunks.push([left, right]);
|
86
|
+
left = right;
|
87
|
+
}
|
88
|
+
return chunks;
|
89
|
+
}
|
90
|
+
function* takeN(array, size) {
|
91
|
+
let start = 0;
|
92
|
+
let skip = size;
|
93
|
+
while (skip < array.length) {
|
94
|
+
const portion = array.slice(start, skip);
|
95
|
+
yield portion;
|
96
|
+
start = skip;
|
97
|
+
skip += size;
|
98
|
+
}
|
99
|
+
}
|
100
|
+
function ignoreErrors(promise, defaultValue) {
|
101
|
+
return promise.catch((err) => {
|
102
|
+
console.error(`Ignoring an error during query: ${err?.message}`);
|
103
|
+
return defaultValue;
|
104
|
+
});
|
105
|
+
}
|
50
106
|
//# sourceMappingURL=rln_contract.js.map
|
package/dist/rln_contract.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rln_contract.js","sourceRoot":"","sources":["../src/rln_contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;
|
1
|
+
{"version":3,"file":"rln_contract.js","sourceRoot":"","sources":["../src/rln_contract.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
export declare class MerkleRootTracker {
|
2
|
+
private acceptableRootWindowSize;
|
3
|
+
private validMerkleRoots;
|
4
|
+
private merkleRootBuffer;
|
5
|
+
constructor(acceptableRootWindowSize: number, initialRoot: Uint8Array);
|
6
|
+
backFill(fromBlockNumber: number): void;
|
7
|
+
pushRoot(blockNumber: number, root: Uint8Array): void;
|
8
|
+
roots(): Array<Uint8Array>;
|
9
|
+
buffer(): Array<Uint8Array>;
|
10
|
+
}
|