@waku/rln 0.0.14-88a28a1 → 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.
@@ -1,121 +1,112 @@
1
1
  const verificationKey = {
2
- "protocol": "groth16",
3
- "curve": "bn128",
4
- "nPublic": 6,
5
- "vk_alpha_1": [
6
- "1805378556360488226980822394597799963030511477964155500103132920745199284516",
7
- "11990395240534218699464972016456017378439762088320057798320175886595281336136",
8
- "1"
2
+ protocol: "groth16",
3
+ curve: "bn128",
4
+ nPublic: 6,
5
+ vk_alpha_1: [
6
+ "20124996762962216725442980738609010303800849578410091356605067053491763969391",
7
+ "9118593021526896828671519912099489027245924097793322973632351264852174143923",
8
+ "1",
9
9
  ],
10
- "vk_beta_2": [
10
+ vk_beta_2: [
11
11
  [
12
- "11031529986141021025408838211017932346992429731488270384177563837022796743627",
13
- "16042159910707312759082561183373181639420894978640710177581040523252926273854"
12
+ "4693952934005375501364248788849686435240706020501681709396105298107971354382",
13
+ "14346958885444710485362620645446987998958218205939139994511461437152241966681",
14
14
  ],
15
15
  [
16
- "20112698439519222240302944148895052359035104222313380895334495118294612255131",
17
- "19441583024670359810872018179190533814486480928824742448673677460151702019379"
16
+ "16851772916911573982706166384196538392731905827088356034885868448550849804972",
17
+ "823612331030938060799959717749043047845343400798220427319188951998582076532",
18
18
  ],
19
- [
20
- "1",
21
- "0"
22
- ]
19
+ ["1", "0"],
23
20
  ],
24
- "vk_gamma_2": [
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
- "vk_delta_2": [
32
+ vk_delta_2: [
39
33
  [
40
- "1948496782571164085469528023647105317580208688174386157591917599801657832035",
41
- "20445814069256658101339037520922621162739470138213615104905368409238414511981"
34
+ "8353516066399360694538747105302262515182301251524941126222712285088022964076",
35
+ "9329524012539638256356482961742014315122377605267454801030953882967973561832",
42
36
  ],
43
37
  [
44
- "10024680869920840984813249386422727863826862577760330492647062850849851925340",
45
- "10512156247842686783409460795717734694774542185222602679117887145206209285142"
38
+ "16805391589556134376869247619848130874761233086443465978238468412168162326401",
39
+ "10111259694977636294287802909665108497237922060047080343914303287629927847739",
46
40
  ],
47
- [
48
- "1",
49
- "0"
50
- ]
41
+ ["1", "0"],
51
42
  ],
52
- "vk_alphabeta_12": [
43
+ vk_alphabeta_12: [
53
44
  [
54
45
  [
55
- "5151991366823434428398919091000210787450832786814248297320989361921939794156",
56
- "15735191313289001022885148627913534790382722933676436876510746491415970766821"
46
+ "12608968655665301215455851857466367636344427685631271961542642719683786103711",
47
+ "9849575605876329747382930567422916152871921500826003490242628251047652318086",
57
48
  ],
58
49
  [
59
- "3387907257437913904447588318761906430938415556102110876587455322225272831272",
60
- "1998779853452712881084781956683721603875246565720647583735935725110674288056"
50
+ "6322029441245076030714726551623552073612922718416871603535535085523083939021",
51
+ "8700115492541474338049149013125102281865518624059015445617546140629435818912",
61
52
  ],
62
53
  [
63
- "14280074182991498185075387990446437410077692353432005297922275464876153151820",
64
- "17092408446352310039633488224969232803092763095456307462247653153107223117633"
65
- ]
54
+ "10674973475340072635573101639867487770811074181475255667220644196793546640210",
55
+ "2926286967251299230490668407790788696102889214647256022788211245826267484824",
56
+ ],
66
57
  ],
67
58
  [
68
59
  [
69
- "4359046709531668109201634396816565829237358165496082832279660960675584351266",
70
- "4511888308846208349307186938266411423935335853916317436093178288331845821336"
60
+ "9660441540778523475944706619139394922744328902833875392144658911530830074820",
61
+ "19548113127774514328631808547691096362144426239827206966690021428110281506546",
71
62
  ],
72
63
  [
73
- "11429499807090785857812316277335883295048773373068683863667725283965356423273",
74
- "16232274853200678548795010078253506586114563833318973594428907292096178657392"
64
+ "1870837942477655969123169532603615788122896469891695773961478956740992497097",
65
+ "12536105729661705698805725105036536744930776470051238187456307227425796690780",
75
66
  ],
76
67
  [
77
- "18068999605870933925311275504102553573815570223888590384919752303726860800970",
78
- "17309569111965782732372130116757295842160193489132771344011460471298173784984"
79
- ]
80
- ]
68
+ "21811903352654147452884857281720047789720483752548991551595462057142824037334",
69
+ "19021616763967199151052893283384285352200445499680068407023236283004353578353",
70
+ ],
71
+ ],
81
72
  ],
82
- "IC": [
73
+ IC: [
83
74
  [
84
- "18693301901828818437917730940595978397160482710354161265484535387752523310572",
85
- "17985273354976640088538673802000794244421192643855111089693820179790551470769",
86
- "1"
75
+ "11992897507809711711025355300535923222599547639134311050809253678876341466909",
76
+ "17181525095924075896332561978747020491074338784673526378866503154966799128110",
77
+ "1",
87
78
  ],
88
79
  [
89
- "21164641723988537620541455173278629777250883365474191521194244273980931825942",
90
- "998385854410718613441067082771678946155853656328717326195057262123686425518",
91
- "1"
80
+ "17018665030246167677911144513385572506766200776123272044534328594850561667818",
81
+ "18601114175490465275436712413925513066546725461375425769709566180981674884464",
82
+ "1",
92
83
  ],
93
84
  [
94
- "21666968581672145768705229094968410656430989593283335488162701230986314747515",
95
- "17996457608540683483506630273632100555125353447506062045735279661096094677264",
96
- "1"
85
+ "18799470100699658367834559797874857804183288553462108031963980039244731716542",
86
+ "13064227487174191981628537974951887429496059857753101852163607049188825592007",
87
+ "1",
97
88
  ],
98
89
  [
99
- "20137761979695192602424300886442379728165712610493092740175904438282083668117",
100
- "19184814924890679891263780109959113289320127263583260218200636509492157834679",
101
- "1"
90
+ "17432501889058124609368103715904104425610382063762621017593209214189134571156",
91
+ "13406815149699834788256141097399354592751313348962590382887503595131085938635",
92
+ "1",
102
93
  ],
103
94
  [
104
- "10943171273393803842589314082509655332154393332394322726077270895078286354146",
105
- "10872472035685319847811233167729172672344935625121511932198535224727331126439",
106
- "1"
95
+ "10320964835612716439094703312987075811498239445882526576970512041988148264481",
96
+ "9024164961646353611176283204118089412001502110138072989569118393359029324867",
97
+ "1",
107
98
  ],
108
99
  [
109
- "13049169779481227658517545034348883391527506091990880778783387628208561946597",
110
- "10083689369261379027228809473568899816311684698866922944902456565434209079955",
111
- "1"
100
+ "718355081067365548229685160476620267257521491773976402837645005858953849298",
101
+ "14635482993933988261008156660773180150752190597753512086153001683711587601974",
102
+ "1",
112
103
  ],
113
104
  [
114
- "19633516378466409167014413361365552102431118630694133723053441455184566611083",
115
- "8059525100726933978719058611146131904598011633549012007359165766216730722269",
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,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE;QACZ,8EAA8E;QAC9E,+EAA+E;QAC/E,GAAG;KACJ;IACD,WAAW,EAAE;QACX;YACE,+EAA+E;YAC/E,+EAA+E;SAChF;QACD;YACE,+EAA+E;YAC/E,+EAA+E;SAChF;QACD;YACE,GAAG;YACH,GAAG;SACJ;KACF;IACD,YAAY,EAAE;QACZ;YACE,+EAA+E;YAC/E,+EAA+E;SAChF;QACD;YACE,8EAA8E;YAC9E,8EAA8E;SAC/E;QACD;YACE,GAAG;YACH,GAAG;SACJ;KACF;IACD,YAAY,EAAE;QACZ;YACE,8EAA8E;YAC9E,+EAA+E;SAChF;QACD;YACE,+EAA+E;YAC/E,+EAA+E;SAChF;QACD;YACE,GAAG;YACH,GAAG;SACJ;KACF;IACD,iBAAiB,EAAE;QACjB;YACE;gBACE,8EAA8E;gBAC9E,+EAA+E;aAChF;YACD;gBACE,8EAA8E;gBAC9E,8EAA8E;aAC/E;YACD;gBACE,+EAA+E;gBAC/E,+EAA+E;aAChF;SACF;QACD;YACE;gBACE,8EAA8E;gBAC9E,8EAA8E;aAC/E;YACD;gBACE,+EAA+E;gBAC/E,+EAA+E;aAChF;YACD;gBACE,+EAA+E;gBAC/E,+EAA+E;aAChF;SACF;KACF;IACD,IAAI,EAAE;QACJ;YACE,+EAA+E;YAC/E,+EAA+E;YAC/E,GAAG;SACJ;QACD;YACE,+EAA+E;YAC/E,6EAA6E;YAC7E,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,+EAA+E;YAC/E,GAAG;SACJ;QACD;YACE,+EAA+E;YAC/E,8EAA8E;YAC9E,GAAG;SACJ;KACF;CACF,CAAA;AACD,eAAe,eAAe,CAAA"}
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 MembershipKey {
9
- readonly IDKey: Uint8Array;
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(IDKey: Uint8Array, IDCommitment: Uint8Array, IDCommitmentBigInt: bigint);
13
- static fromBytes(memKeys: Uint8Array): MembershipKey;
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
- generateMembershipKey(): MembershipKey;
31
- generateSeededMembershipKey(seed: string): MembershipKey;
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, idKey: Uint8Array): Promise<IRateLimitProof>;
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 MembershipKey {
59
- constructor(IDKey, IDCommitment, IDCommitmentBigInt) {
60
- this.IDKey = IDKey;
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 idKey = memKeys.subarray(0, 32);
66
- const idCommitment = memKeys.subarray(32);
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 MembershipKey(idKey, idCommitment, idCommitmentBigInt);
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
- generateMembershipKey() {
101
- const memKeys = zerokitRLN.generateMembershipKey(this.zkRLN);
102
- return MembershipKey.fromBytes(memKeys);
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
- generateSeededMembershipKey(seed) {
130
+ generateSeededIdentityCredential(seed) {
105
131
  const seedBytes = stringEncoder.encode(seed);
106
- const memKeys = zerokitRLN.generateSeededMembershipKey(this.zkRLN, seedBytes);
107
- return MembershipKey.fromBytes(memKeys);
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, idKey) {
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 (idKey.length != 32)
133
- throw "invalid id key";
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, idKey);
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
- // obtain root
166
- const root = zerokitRLN.getRoot(this.zkRLN);
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,aAAa;IACxB,YACkB,KAAiB,EACjB,YAAwB,EACxB,kBAA0B;QAF1B,UAAK,GAAL,KAAK,CAAY;QACjB,iBAAY,GAAZ,YAAY,CAAY;QACxB,uBAAkB,GAAlB,kBAAkB,CAAQ;IACzC,CAAC;IAEJ,MAAM,CAAC,SAAS,CAAC,OAAmB;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;QACnE,OAAO,IAAI,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACpE,CAAC;CACF;AAED,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,OAAO,KAAK;IAShB,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;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;AAED,MAAM,OAAO,WAAW;IACtB,YACU,KAAa,EACb,iBAAoC;QADpC,UAAK,GAAL,KAAK,CAAQ;QACb,sBAAiB,GAAjB,iBAAiB,CAAmB;IAC3C,CAAC;IAEJ,qBAAqB;QACnB,MAAM,OAAO,GAAG,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,OAAO,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,2BAA2B,CAAC,IAAY;QACtC,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,2BAA2B,CACpD,IAAI,CAAC,KAAK,EACV,SAAS,CACV,CAAC;QACF,OAAO,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,YAAwB;QACnC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACpD,CAAC;IAED,aAAa;QACX,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,gBAAgB,CACd,QAAoB,EACpB,QAAgB,EAChB,KAAiB,EACjB,KAAiB;QAEjB,2BAA2B;QAC3B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAErE,+BAA+B;QAC/B,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAErE,yEAAyE;QACzE,OAAO,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,GAAe,EACf,KAAa,EACb,KAAoC,EACpC,KAAiB;QAEjB,IAAI,KAAK,IAAI,SAAS,EAAE;YACtB,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;SAClD;aAAM,IAAI,KAAK,YAAY,IAAI,EAAE;YAChC,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;SAC7C;QAED,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE;YAAE,MAAM,eAAe,CAAC;QAC9C,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE;YAAE,MAAM,gBAAgB,CAAC;QAC/C,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM,oBAAoB,CAAC;QAE1C,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,UAAU,CAAC,uBAAuB,CACnD,IAAI,CAAC,KAAK,EACV,cAAc,CACf,CAAC;QACF,MAAM,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACnE,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CACrE,MAAM,EACN,KAAK,CACN,CAAC,CAAC,wCAAwC;QAE3C,MAAM,UAAU,GAAG,UAAU,CAAC,+BAA+B,CAC3D,IAAI,CAAC,KAAK,EACV,iBAAiB,EACjB,UAAU,CACX,CAAC;QAEF,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,cAAc,CACZ,KAAmC,EACnC,GAAe;QAEf,IAAI,MAAkB,CAAC;QACvB,IAAI,KAAK,YAAY,UAAU,EAAE;YAC/B,MAAM,GAAG,KAAK,CAAC;SAChB;aAAM;YACL,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,2BAA2B;QAC3B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhE,OAAO,UAAU,CAAC,cAAc,CAC9B,IAAI,CAAC,KAAK,EACV,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CACjC,CAAC;IACJ,CAAC;IAED,eAAe,CACb,KAAmC,EACnC,GAAe;QAEf,IAAI,MAAkB,CAAC;QACvB,IAAI,KAAK,YAAY,UAAU,EAAE;YAC/B,MAAM,GAAG,KAAK,CAAC;SAChB;aAAM;YACL,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,2BAA2B;QAC3B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhE,cAAc;QACd,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE5C,OAAO,UAAU,CAAC,eAAe,CAC/B,IAAI,CAAC,KAAK,EACV,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAChC,IAAI,CACL,CAAC;IACJ,CAAC;IAED,gBAAgB,CACd,KAAmC,EACnC,GAAe;QAEf,IAAI,MAAkB,CAAC;QACvB,IAAI,KAAK,YAAY,UAAU,EAAE;YAC/B,MAAM,GAAG,KAAK,CAAC;SAChB;aAAM;YACL,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,2BAA2B;QAC3B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhE,OAAO,UAAU,CAAC,eAAe,CAC/B,IAAI,CAAC,KAAK,EACV,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAChC,IAAI,UAAU,EAAE,CACjB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"rln.js","sourceRoot":"","sources":["../src/rln.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ethers } from "ethers";
2
- import { MembershipKey, 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,10 +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, fromBlock?: number): Promise<void>;
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>;
23
- registerWithKey(membershipKey: MembershipKey): Promise<ethers.Event | undefined>;
28
+ registerWithKey(credential: IdentityCredential): Promise<ethers.Event | undefined>;
24
29
  }
25
30
  export {};
@@ -18,8 +18,11 @@ export class RLNContract {
18
18
  get members() {
19
19
  return this._members;
20
20
  }
21
- async fetchMembers(rlnInstance, fromBlock) {
22
- const registeredMemberEvents = await this.contract.queryFilter(this.membersFilter, fromBlock);
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
  }
@@ -38,16 +41,66 @@ export class RLNContract {
38
41
  rlnInstance.insertMember(idCommitment);
39
42
  }
40
43
  async registerWithSignature(rlnInstance, signature) {
41
- const membershipKey = await rlnInstance.generateSeededMembershipKey(signature);
42
- return this.registerWithKey(membershipKey);
44
+ const identityCredential = await rlnInstance.generateSeededIdentityCredential(signature);
45
+ return this.registerWithKey(identityCredential);
43
46
  }
44
- async registerWithKey(membershipKey) {
47
+ async registerWithKey(credential) {
45
48
  const depositValue = await this.contract.MEMBERSHIP_DEPOSIT();
46
- const txRegisterResponse = await this.contract.register(membershipKey.IDCommitmentBigInt, {
49
+ const txRegisterResponse = await this.contract.register(credential.IDCommitmentBigInt, {
47
50
  value: depositValue,
48
51
  });
49
52
  const txRegisterReceipt = await txRegisterResponse.wait();
50
53
  return txRegisterReceipt?.events?.[0];
51
54
  }
52
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
+ }
53
106
  //# sourceMappingURL=rln_contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rln_contract.js","sourceRoot":"","sources":["../src/rln_contract.ts"],"names":[],"mappings":"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"}
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
+ }