@waku/rln 0.1.1-5b9414a → 0.1.1-7e8cb89

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,8 +1,8 @@
1
- export declare type MembershipHash = string;
2
- export declare type Sha256Hash = string;
3
- export declare type Keccak256Hash = string;
4
- export declare type Password = string | Uint8Array;
5
- export declare type MembershipInfo = {
1
+ export type MembershipHash = string;
2
+ export type Sha256Hash = string;
3
+ export type Keccak256Hash = string;
4
+ export type Password = string | Uint8Array;
5
+ export type MembershipInfo = {
6
6
  chainId: number;
7
7
  address: string;
8
8
  treeIndex: number;
package/dist/message.d.ts CHANGED
@@ -5,7 +5,7 @@ export declare class RlnMessage<T extends IDecodedMessage> implements IDecodedMe
5
5
  rlnInstance: RLNInstance;
6
6
  msg: T;
7
7
  rateLimitProof: IRateLimitProof | undefined;
8
- pubSubTopic: string;
8
+ pubsubTopic: string;
9
9
  constructor(rlnInstance: RLNInstance, msg: T, rateLimitProof: IRateLimitProof | undefined);
10
10
  verify(roots: Uint8Array[]): boolean | undefined;
11
11
  verifyNoRoot(): boolean | undefined;
package/dist/message.js CHANGED
@@ -9,7 +9,7 @@ export class RlnMessage {
9
9
  this.rlnInstance = rlnInstance;
10
10
  this.msg = msg;
11
11
  this.rateLimitProof = rateLimitProof;
12
- this.pubSubTopic = "";
12
+ this.pubsubTopic = "";
13
13
  }
14
14
  verify(roots) {
15
15
  return this.rateLimitProof
package/dist/rln.js CHANGED
@@ -1,4 +1,4 @@
1
- import { default as init } from "@waku/zerokit-rln-wasm";
1
+ import init from "@waku/zerokit-rln-wasm";
2
2
  import * as zerokitRLN from "@waku/zerokit-rln-wasm";
3
3
  import { buildBigIntFromUint8Array, writeUIntLE } from "./byte_utils.js";
4
4
  import { dateToEpoch, epochIntToBytes } from "./epoch.js";
@@ -39,7 +39,7 @@ async function loadZkey() {
39
39
  * @returns RLNInstance
40
40
  */
41
41
  export async function create() {
42
- await init();
42
+ await init?.();
43
43
  zerokitRLN.init_panic_hook();
44
44
  const witnessCalculator = await loadWitnessCalculator();
45
45
  const zkey = await loadZkey();
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,15 +1,19 @@
1
1
  import { ethers } from "ethers";
2
2
  import { IdentityCredential, RLNInstance } from "./rln.js";
3
- declare type Member = {
4
- pubkey: string;
5
- index: number;
3
+ type Member = {
4
+ idCommitment: string;
5
+ index: ethers.BigNumber;
6
6
  };
7
- declare type Provider = ethers.Signer | ethers.providers.Provider;
8
- declare type ContractOptions = {
9
- address: string;
7
+ type Provider = ethers.Signer | ethers.providers.Provider;
8
+ type RLNContractOptions = {
10
9
  provider: Provider;
10
+ registryAddress: string;
11
11
  };
12
- declare type FetchMembersOptions = {
12
+ type RLNStorageOptions = {
13
+ storageIndex?: number;
14
+ };
15
+ type RLNContractInitOptions = RLNContractOptions & RLNStorageOptions;
16
+ type FetchMembersOptions = {
13
17
  fromBlock?: number;
14
18
  fetchRange?: number;
15
19
  fetchChunks?: number;
@@ -22,8 +26,8 @@ export declare class RLNContract {
22
26
  private storageContract;
23
27
  private _membersFilter;
24
28
  private _members;
25
- static init(rlnInstance: RLNInstance, options: ContractOptions): Promise<RLNContract>;
26
- constructor(rlnInstance: RLNInstance, { address, provider }: ContractOptions);
29
+ static init(rlnInstance: RLNInstance, options: RLNContractInitOptions): Promise<RLNContract>;
30
+ constructor(rlnInstance: RLNInstance, { registryAddress, provider }: RLNContractOptions);
27
31
  private initStorageContract;
28
32
  get contract(): ethers.Contract;
29
33
  get members(): Member[];
@@ -33,8 +37,8 @@ export declare class RLNContract {
33
37
  private insertMembers;
34
38
  private removeMembers;
35
39
  subscribeToMembers(rlnInstance: RLNInstance): void;
36
- registerWithSignature(rlnInstance: RLNInstance, signature: string): Promise<ethers.Event | undefined>;
37
- registerWithKey(credential: IdentityCredential): Promise<ethers.Event | undefined>;
40
+ registerWithSignature(rlnInstance: RLNInstance, signature: string): Promise<Member | undefined>;
41
+ registerWithKey(credential: IdentityCredential): Promise<Member | undefined>;
38
42
  roots(): Uint8Array[];
39
43
  }
40
44
  export {};
@@ -2,12 +2,6 @@ import { ethers } from "ethers";
2
2
  import { RLN_REGISTRY_ABI, RLN_STORAGE_ABI } from "./constants.js";
3
3
  import { MerkleRootTracker } from "./root_tracker.js";
4
4
  export class RLNContract {
5
- constructor(rlnInstance, { address, provider }) {
6
- this._members = [];
7
- const initialRoot = rlnInstance.getMerkleRoot();
8
- this.registryContract = new ethers.Contract(address, RLN_REGISTRY_ABI, provider);
9
- this.merkleRootTracker = new MerkleRootTracker(5, initialRoot);
10
- }
11
5
  static async init(rlnInstance, options) {
12
6
  const rlnContract = new RLNContract(rlnInstance, options);
13
7
  await rlnContract.initStorageContract(options.provider);
@@ -15,22 +9,34 @@ export class RLNContract {
15
9
  rlnContract.subscribeToMembers(rlnInstance);
16
10
  return rlnContract;
17
11
  }
18
- async initStorageContract(provider) {
19
- const index = await this.registryContract.usingStorageIndex();
20
- const address = await this.registryContract.storages(index);
21
- this.storageIndex = index;
22
- this.storageContract = new ethers.Contract(address, RLN_STORAGE_ABI, provider);
12
+ constructor(rlnInstance, { registryAddress, provider }) {
13
+ this._members = new Map();
14
+ const initialRoot = rlnInstance.getMerkleRoot();
15
+ this.registryContract = new ethers.Contract(registryAddress, RLN_REGISTRY_ABI, provider);
16
+ this.merkleRootTracker = new MerkleRootTracker(5, initialRoot);
17
+ }
18
+ async initStorageContract(provider, options = {}) {
19
+ const storageIndex = options?.storageIndex
20
+ ? options.storageIndex
21
+ : await this.registryContract.usingStorageIndex();
22
+ const storageAddress = await this.registryContract.storages(storageIndex);
23
+ if (!storageAddress || storageAddress === ethers.constants.AddressZero) {
24
+ throw Error("No RLN Storage initialized on registry contract.");
25
+ }
26
+ this.storageIndex = storageIndex;
27
+ this.storageContract = new ethers.Contract(storageAddress, RLN_STORAGE_ABI, provider);
23
28
  this._membersFilter = this.storageContract.filters.MemberRegistered();
24
29
  this.deployBlock = await this.storageContract.deployedBlockNumber();
25
30
  }
26
31
  get contract() {
27
32
  if (!this.storageContract) {
28
- throw Error("Storage contract was not initialized.");
33
+ throw Error("Storage contract was not initialized");
29
34
  }
30
35
  return this.storageContract;
31
36
  }
32
37
  get members() {
33
- return this._members;
38
+ const sortedMembers = Array.from(this._members.values()).sort((left, right) => left.index.toNumber() - right.index.toNumber());
39
+ return sortedMembers;
34
40
  }
35
41
  get membersFilter() {
36
42
  if (!this._membersFilter) {
@@ -57,11 +63,11 @@ export class RLNContract {
57
63
  const index = evt.args.index;
58
64
  const toRemoveVal = toRemoveTable.get(evt.blockNumber);
59
65
  if (toRemoveVal != undefined) {
60
- toRemoveVal.push(index);
66
+ toRemoveVal.push(index.toNumber());
61
67
  toRemoveTable.set(evt.blockNumber, toRemoveVal);
62
68
  }
63
69
  else {
64
- toRemoveTable.set(evt.blockNumber, [index]);
70
+ toRemoveTable.set(evt.blockNumber, [index.toNumber()]);
65
71
  }
66
72
  }
67
73
  else {
@@ -79,14 +85,17 @@ export class RLNContract {
79
85
  insertMembers(rlnInstance, toInsert) {
80
86
  toInsert.forEach((events, blockNumber) => {
81
87
  events.forEach((evt) => {
82
- if (!evt.args) {
88
+ const _idCommitment = evt?.args?.idCommitment;
89
+ const index = evt?.args?.index;
90
+ if (!_idCommitment || !index) {
83
91
  return;
84
92
  }
85
- const pubkey = evt.args.pubkey;
86
- const index = evt.args.index;
87
- const idCommitment = ethers.utils.zeroPad(ethers.utils.arrayify(pubkey), 32);
93
+ const idCommitment = ethers.utils.zeroPad(ethers.utils.arrayify(_idCommitment), 32);
88
94
  rlnInstance.insertMember(idCommitment);
89
- this.members.push({ index, pubkey });
95
+ this._members.set(index.toNumber(), {
96
+ index,
97
+ idCommitment: _idCommitment?._hex || ethers.utils.hexlify(idCommitment),
98
+ });
90
99
  });
91
100
  const currentRoot = rlnInstance.getMerkleRoot();
92
101
  this.merkleRootTracker.pushRoot(blockNumber, currentRoot);
@@ -96,9 +105,8 @@ export class RLNContract {
96
105
  const removeDescending = new Map([...toRemove].sort().reverse());
97
106
  removeDescending.forEach((indexes, blockNumber) => {
98
107
  indexes.forEach((index) => {
99
- const idx = this.members.findIndex((m) => m.index === index);
100
- if (idx > -1) {
101
- this.members.splice(idx, 1);
108
+ if (this._members.has(index)) {
109
+ this._members.delete(index);
102
110
  }
103
111
  rlnInstance.deleteMember(index);
104
112
  });
@@ -106,21 +114,28 @@ export class RLNContract {
106
114
  });
107
115
  }
108
116
  subscribeToMembers(rlnInstance) {
109
- this.contract.on(this.membersFilter, (_pubkey, _index, event) => this.processEvents(rlnInstance, event));
117
+ this.contract.on(this.membersFilter, (_pubkey, _index, event) => this.processEvents(rlnInstance, [event]));
110
118
  }
111
119
  async registerWithSignature(rlnInstance, signature) {
112
120
  const identityCredential = await rlnInstance.generateSeededIdentityCredential(signature);
113
121
  return this.registerWithKey(identityCredential);
114
122
  }
115
123
  async registerWithKey(credential) {
116
- if (!this.storageIndex) {
124
+ if (this.storageIndex === undefined) {
117
125
  throw Error("Cannot register credential, no storage contract index found.");
118
126
  }
119
- const txRegisterResponse = await this.registryContract.register(this.storageIndex, credential.IDCommitmentBigInt, {
120
- gasLimit: 100000,
121
- });
127
+ const txRegisterResponse = await this.registryContract["register(uint16,uint256)"](this.storageIndex, credential.IDCommitmentBigInt, { gasLimit: 100000 });
122
128
  const txRegisterReceipt = await txRegisterResponse.wait();
123
- return txRegisterReceipt?.events?.[0];
129
+ // assumption: register(uint16,uint256) emits one event
130
+ const memberRegistered = txRegisterReceipt?.events?.[0];
131
+ if (!memberRegistered) {
132
+ return undefined;
133
+ }
134
+ const decodedData = this.contract.interface.decodeEventLog("MemberRegistered", memberRegistered.data);
135
+ return {
136
+ idCommitment: decodedData.idCommitment,
137
+ index: decodedData.index,
138
+ };
124
139
  }
125
140
  roots() {
126
141
  return this.merkleRootTracker.roots();
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@waku/rln",
3
- "version": "0.1.1-5b9414a",
3
+ "version": "0.1.1-7e8cb89",
4
4
  "description": "Rate Limit Nullifier for js-waku",
5
5
  "types": "./dist/index.d.ts",
6
6
  "module": "./dist/index.js",
@@ -72,9 +72,9 @@
72
72
  "@types/uuid": "^8.3.0",
73
73
  "@typescript-eslint/eslint-plugin": "^5.8.1",
74
74
  "@typescript-eslint/parser": "^5.8.1",
75
- "@waku/core": "^0.0.18",
76
- "@waku/interfaces": "^0.0.13",
77
- "@waku/message-encryption": "^0.0.16",
75
+ "@waku/core": "^0.0.24",
76
+ "@waku/interfaces": "^0.0.19",
77
+ "@waku/message-encryption": "^0.0.22",
78
78
  "@web/rollup-plugin-import-meta-assets": "^1.0.7",
79
79
  "ajv": "^8.12.0",
80
80
  "ajv-formats": "^2.1.1",
@@ -140,7 +140,7 @@
140
140
  },
141
141
  "dependencies": {
142
142
  "@chainsafe/bls-keystore": "^3.0.0",
143
- "@waku/utils": "^0.0.11",
143
+ "@waku/utils": "^0.0.12",
144
144
  "@waku/zerokit-rln-wasm": "^0.0.10",
145
145
  "ethereum-cryptography": "^2.1.2",
146
146
  "ethers": "^5.7.2",
package/src/codec.ts CHANGED
@@ -56,6 +56,10 @@ export class RLNEncoder implements IEncoder {
56
56
  return proof;
57
57
  }
58
58
 
59
+ get pubsubTopic(): string {
60
+ return this.encoder.pubsubTopic;
61
+ }
62
+
59
63
  get contentTopic(): string {
60
64
  return this.encoder.contentTopic;
61
65
  }
@@ -86,6 +90,10 @@ export class RLNDecoder<T extends IDecodedMessage>
86
90
  {
87
91
  constructor(private rlnInstance: RLNInstance, private decoder: IDecoder<T>) {}
88
92
 
93
+ get pubsubTopic(): string {
94
+ return this.decoder.pubsubTopic;
95
+ }
96
+
89
97
  get contentTopic(): string {
90
98
  return this.decoder.contentTopic;
91
99
  }
@@ -97,11 +105,11 @@ export class RLNDecoder<T extends IDecodedMessage>
97
105
  }
98
106
 
99
107
  async fromProtoObj(
100
- pubSubTopic: string,
108
+ pubsubTopic: string,
101
109
  proto: IProtoMessage
102
110
  ): Promise<RlnMessage<T> | undefined> {
103
111
  const msg: T | undefined = await this.decoder.fromProtoObj(
104
- pubSubTopic,
112
+ pubsubTopic,
105
113
  proto
106
114
  );
107
115
  if (!msg) return;
package/src/constants.ts CHANGED
@@ -63,6 +63,6 @@ export const RLN_STORAGE_ABI = [
63
63
 
64
64
  export const SEPOLIA_CONTRACT = {
65
65
  chainId: 11155111,
66
- address: "0xF1935b338321013f11068abCafC548A7B0db732C",
66
+ address: "0xF471d71E9b1455bBF4b85d475afb9BB0954A29c4",
67
67
  abi: RLN_REGISTRY_ABI,
68
68
  };
package/src/message.ts CHANGED
@@ -14,7 +14,7 @@ export function toRLNSignal(contentTopic: string, msg: IMessage): Uint8Array {
14
14
  }
15
15
 
16
16
  export class RlnMessage<T extends IDecodedMessage> implements IDecodedMessage {
17
- public pubSubTopic = "";
17
+ public pubsubTopic = "";
18
18
 
19
19
  constructor(
20
20
  public rlnInstance: RLNInstance,
package/src/rln.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { IRateLimitProof } from "@waku/interfaces";
2
- import { default as init } from "@waku/zerokit-rln-wasm";
2
+ import init from "@waku/zerokit-rln-wasm";
3
3
  import * as zerokitRLN from "@waku/zerokit-rln-wasm";
4
4
 
5
5
  import { buildBigIntFromUint8Array, writeUIntLE } from "./byte_utils.js";
@@ -48,7 +48,7 @@ async function loadZkey(): Promise<Uint8Array> {
48
48
  * @returns RLNInstance
49
49
  */
50
50
  export async function create(): Promise<RLNInstance> {
51
- await init();
51
+ await (init as any)?.();
52
52
  zerokitRLN.init_panic_hook();
53
53
  const witnessCalculator = await loadWitnessCalculator();
54
54
  const zkey = await loadZkey();
@@ -5,17 +5,23 @@ import { IdentityCredential, RLNInstance } from "./rln.js";
5
5
  import { MerkleRootTracker } from "./root_tracker.js";
6
6
 
7
7
  type Member = {
8
- pubkey: string;
9
- index: number;
8
+ idCommitment: string;
9
+ index: ethers.BigNumber;
10
10
  };
11
11
 
12
12
  type Provider = ethers.Signer | ethers.providers.Provider;
13
13
 
14
- type ContractOptions = {
15
- address: string;
14
+ type RLNContractOptions = {
16
15
  provider: Provider;
16
+ registryAddress: string;
17
17
  };
18
18
 
19
+ type RLNStorageOptions = {
20
+ storageIndex?: number;
21
+ };
22
+
23
+ type RLNContractInitOptions = RLNContractOptions & RLNStorageOptions;
24
+
19
25
  type FetchMembersOptions = {
20
26
  fromBlock?: number;
21
27
  fetchRange?: number;
@@ -31,11 +37,11 @@ export class RLNContract {
31
37
  private storageContract: undefined | ethers.Contract;
32
38
  private _membersFilter: undefined | ethers.EventFilter;
33
39
 
34
- private _members: Member[] = [];
40
+ private _members: Map<number, Member> = new Map();
35
41
 
36
42
  public static async init(
37
43
  rlnInstance: RLNInstance,
38
- options: ContractOptions
44
+ options: RLNContractInitOptions
39
45
  ): Promise<RLNContract> {
40
46
  const rlnContract = new RLNContract(rlnInstance, options);
41
47
 
@@ -48,25 +54,34 @@ export class RLNContract {
48
54
 
49
55
  constructor(
50
56
  rlnInstance: RLNInstance,
51
- { address, provider }: ContractOptions
57
+ { registryAddress, provider }: RLNContractOptions
52
58
  ) {
53
59
  const initialRoot = rlnInstance.getMerkleRoot();
54
60
 
55
61
  this.registryContract = new ethers.Contract(
56
- address,
62
+ registryAddress,
57
63
  RLN_REGISTRY_ABI,
58
64
  provider
59
65
  );
60
66
  this.merkleRootTracker = new MerkleRootTracker(5, initialRoot);
61
67
  }
62
68
 
63
- private async initStorageContract(provider: Provider): Promise<void> {
64
- const index = await this.registryContract.usingStorageIndex();
65
- const address = await this.registryContract.storages(index);
69
+ private async initStorageContract(
70
+ provider: Provider,
71
+ options: RLNStorageOptions = {}
72
+ ): Promise<void> {
73
+ const storageIndex = options?.storageIndex
74
+ ? options.storageIndex
75
+ : await this.registryContract.usingStorageIndex();
76
+ const storageAddress = await this.registryContract.storages(storageIndex);
66
77
 
67
- this.storageIndex = index;
78
+ if (!storageAddress || storageAddress === ethers.constants.AddressZero) {
79
+ throw Error("No RLN Storage initialized on registry contract.");
80
+ }
81
+
82
+ this.storageIndex = storageIndex;
68
83
  this.storageContract = new ethers.Contract(
69
- address,
84
+ storageAddress,
70
85
  RLN_STORAGE_ABI,
71
86
  provider
72
87
  );
@@ -77,13 +92,16 @@ export class RLNContract {
77
92
 
78
93
  public get contract(): ethers.Contract {
79
94
  if (!this.storageContract) {
80
- throw Error("Storage contract was not initialized.");
95
+ throw Error("Storage contract was not initialized");
81
96
  }
82
97
  return this.storageContract as ethers.Contract;
83
98
  }
84
99
 
85
100
  public get members(): Member[] {
86
- return this._members;
101
+ const sortedMembers = Array.from(this._members.values()).sort(
102
+ (left, right) => left.index.toNumber() - right.index.toNumber()
103
+ );
104
+ return sortedMembers;
87
105
  }
88
106
 
89
107
  private get membersFilter(): ethers.EventFilter {
@@ -115,13 +133,13 @@ export class RLNContract {
115
133
  }
116
134
 
117
135
  if (evt.removed) {
118
- const index: number = evt.args.index;
136
+ const index: ethers.BigNumber = evt.args.index;
119
137
  const toRemoveVal = toRemoveTable.get(evt.blockNumber);
120
138
  if (toRemoveVal != undefined) {
121
- toRemoveVal.push(index);
139
+ toRemoveVal.push(index.toNumber());
122
140
  toRemoveTable.set(evt.blockNumber, toRemoveVal);
123
141
  } else {
124
- toRemoveTable.set(evt.blockNumber, [index]);
142
+ toRemoveTable.set(evt.blockNumber, [index.toNumber()]);
125
143
  }
126
144
  } else {
127
145
  let eventsPerBlock = toInsertTable.get(evt.blockNumber);
@@ -144,18 +162,23 @@ export class RLNContract {
144
162
  ): void {
145
163
  toInsert.forEach((events: ethers.Event[], blockNumber: number) => {
146
164
  events.forEach((evt) => {
147
- if (!evt.args) {
165
+ const _idCommitment = evt?.args?.idCommitment;
166
+ const index: ethers.BigNumber = evt?.args?.index;
167
+
168
+ if (!_idCommitment || !index) {
148
169
  return;
149
170
  }
150
171
 
151
- const pubkey = evt.args.pubkey;
152
- const index = evt.args.index;
153
172
  const idCommitment = ethers.utils.zeroPad(
154
- ethers.utils.arrayify(pubkey),
173
+ ethers.utils.arrayify(_idCommitment),
155
174
  32
156
175
  );
157
176
  rlnInstance.insertMember(idCommitment);
158
- this.members.push({ index, pubkey });
177
+ this._members.set(index.toNumber(), {
178
+ index,
179
+ idCommitment:
180
+ _idCommitment?._hex || ethers.utils.hexlify(idCommitment),
181
+ });
159
182
  });
160
183
 
161
184
  const currentRoot = rlnInstance.getMerkleRoot();
@@ -170,9 +193,8 @@ export class RLNContract {
170
193
  const removeDescending = new Map([...toRemove].sort().reverse());
171
194
  removeDescending.forEach((indexes: number[], blockNumber: number) => {
172
195
  indexes.forEach((index) => {
173
- const idx = this.members.findIndex((m) => m.index === index);
174
- if (idx > -1) {
175
- this.members.splice(idx, 1);
196
+ if (this._members.has(index)) {
197
+ this._members.delete(index);
176
198
  }
177
199
  rlnInstance.deleteMember(index);
178
200
  });
@@ -183,14 +205,14 @@ export class RLNContract {
183
205
 
184
206
  public subscribeToMembers(rlnInstance: RLNInstance): void {
185
207
  this.contract.on(this.membersFilter, (_pubkey, _index, event) =>
186
- this.processEvents(rlnInstance, event)
208
+ this.processEvents(rlnInstance, [event])
187
209
  );
188
210
  }
189
211
 
190
212
  public async registerWithSignature(
191
213
  rlnInstance: RLNInstance,
192
214
  signature: string
193
- ): Promise<ethers.Event | undefined> {
215
+ ): Promise<Member | undefined> {
194
216
  const identityCredential =
195
217
  await rlnInstance.generateSeededIdentityCredential(signature);
196
218
 
@@ -199,23 +221,36 @@ export class RLNContract {
199
221
 
200
222
  public async registerWithKey(
201
223
  credential: IdentityCredential
202
- ): Promise<ethers.Event | undefined> {
203
- if (!this.storageIndex) {
224
+ ): Promise<Member | undefined> {
225
+ if (this.storageIndex === undefined) {
204
226
  throw Error(
205
227
  "Cannot register credential, no storage contract index found."
206
228
  );
207
229
  }
208
230
  const txRegisterResponse: ethers.ContractTransaction =
209
- await this.registryContract.register(
231
+ await this.registryContract["register(uint16,uint256)"](
210
232
  this.storageIndex,
211
233
  credential.IDCommitmentBigInt,
212
- {
213
- gasLimit: 100000,
214
- }
234
+ { gasLimit: 100000 }
215
235
  );
216
236
  const txRegisterReceipt = await txRegisterResponse.wait();
217
237
 
218
- return txRegisterReceipt?.events?.[0];
238
+ // assumption: register(uint16,uint256) emits one event
239
+ const memberRegistered = txRegisterReceipt?.events?.[0];
240
+
241
+ if (!memberRegistered) {
242
+ return undefined;
243
+ }
244
+
245
+ const decodedData = this.contract.interface.decodeEventLog(
246
+ "MemberRegistered",
247
+ memberRegistered.data
248
+ );
249
+
250
+ return {
251
+ idCommitment: decodedData.idCommitment,
252
+ index: decodedData.index,
253
+ };
219
254
  }
220
255
 
221
256
  public roots(): Uint8Array[] {