@waku/rln 0.1.5-053bb95.0 → 0.1.5-1d384f2.0
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/bundle/_virtual/utils.js +2 -2
- package/bundle/_virtual/utils2.js +2 -2
- package/bundle/packages/rln/dist/contract/constants.js +5 -2
- package/bundle/packages/rln/dist/contract/rln_base_contract.js +244 -114
- package/bundle/packages/rln/dist/contract/rln_contract.js +74 -89
- package/bundle/packages/rln/dist/credentials_manager.js +1 -1
- package/bundle/packages/rln/dist/identity.js +0 -8
- package/bundle/packages/rln/dist/keystore/keystore.js +28 -15
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/random.js +1 -1
- package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/utils.js +2 -2
- package/bundle/packages/rln/node_modules/@noble/hashes/_sha2.js +1 -1
- package/bundle/packages/rln/node_modules/@noble/hashes/hmac.js +1 -1
- package/bundle/packages/rln/node_modules/@noble/hashes/pbkdf2.js +1 -1
- package/bundle/packages/rln/node_modules/@noble/hashes/scrypt.js +1 -1
- package/bundle/packages/rln/node_modules/@noble/hashes/sha256.js +1 -1
- package/bundle/packages/rln/node_modules/@noble/hashes/sha512.js +1 -1
- package/bundle/packages/rln/node_modules/@noble/hashes/utils.js +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/contract/constants.d.ts +1 -1
- package/dist/contract/constants.js +1 -1
- package/dist/contract/constants.js.map +1 -1
- package/dist/contract/rln_base_contract.d.ts +30 -22
- package/dist/contract/rln_base_contract.js +244 -114
- package/dist/contract/rln_base_contract.js.map +1 -1
- package/dist/contract/rln_contract.d.ts +4 -24
- package/dist/contract/rln_contract.js +74 -89
- package/dist/contract/rln_contract.js.map +1 -1
- package/dist/credentials_manager.js +1 -1
- package/dist/credentials_manager.js.map +1 -1
- package/dist/identity.d.ts +0 -1
- package/dist/identity.js +0 -8
- package/dist/identity.js.map +1 -1
- package/dist/keystore/keystore.d.ts +1 -0
- package/dist/keystore/keystore.js +28 -15
- package/dist/keystore/keystore.js.map +1 -1
- package/package.json +1 -1
- package/src/contract/constants.ts +1 -1
- package/src/contract/rln_base_contract.ts +390 -183
- package/src/contract/rln_contract.ts +95 -120
- package/src/credentials_manager.ts +1 -1
- package/src/identity.ts +0 -9
- package/src/keystore/keystore.ts +50 -27
- package/bundle/packages/rln/dist/contract/errors.js +0 -62
- package/dist/contract/errors.d.ts +0 -30
- package/dist/contract/errors.js +0 -61
- package/dist/contract/errors.js.map +0 -1
- package/src/contract/errors.ts +0 -75
@@ -1,10 +1,19 @@
|
|
1
1
|
import { ethers } from "ethers";
|
2
2
|
import { IdentityCredential } from "../identity.js";
|
3
3
|
import { DecryptedCredentials } from "../keystore/types.js";
|
4
|
-
import { Member, MembershipInfo, RLNContractInitOptions } from "./types.js";
|
4
|
+
import { CustomQueryOptions, FetchMembersOptions, Member, MembershipInfo, RLNContractInitOptions } from "./types.js";
|
5
5
|
export declare class RLNBaseContract {
|
6
6
|
contract: ethers.Contract;
|
7
|
+
private deployBlock;
|
7
8
|
private rateLimit;
|
9
|
+
protected _members: Map<number, Member>;
|
10
|
+
private _membersFilter;
|
11
|
+
private _membershipErasedFilter;
|
12
|
+
private _membersExpiredFilter;
|
13
|
+
/**
|
14
|
+
* Constructor for RLNBaseContract.
|
15
|
+
* Allows injecting a mocked contract for testing purposes.
|
16
|
+
*/
|
8
17
|
constructor(options: RLNContractInitOptions);
|
9
18
|
/**
|
10
19
|
* Gets the current rate limit for this contract instance
|
@@ -48,25 +57,24 @@ export declare class RLNBaseContract {
|
|
48
57
|
* @param newRateLimit The new rate limit to use
|
49
58
|
*/
|
50
59
|
setRateLimit(newRateLimit: number): Promise<void>;
|
60
|
+
get members(): Member[];
|
61
|
+
fetchMembers(options?: FetchMembersOptions): Promise<void>;
|
62
|
+
static queryFilter(contract: ethers.Contract, options: CustomQueryOptions): Promise<ethers.Event[]>;
|
63
|
+
processEvents(events: ethers.Event[]): void;
|
64
|
+
static splitToChunks(from: number, to: number, step: number): Array<[number, number]>;
|
65
|
+
static takeN<T>(array: T[], size: number): Iterable<T[]>;
|
66
|
+
static ignoreErrors<T>(promise: Promise<T>, defaultValue: T): Promise<T>;
|
67
|
+
subscribeToMembers(): void;
|
51
68
|
/**
|
52
|
-
*
|
53
|
-
* @param
|
54
|
-
* @
|
55
|
-
*/
|
56
|
-
getMembersInRange(startIndex: number, endIndex: number): Promise<Member[]>;
|
57
|
-
/**
|
58
|
-
* Gets all current members
|
59
|
-
*/
|
60
|
-
getAllMembers(): Promise<Member[]>;
|
61
|
-
/**
|
62
|
-
* Gets the member index if it exists, or null if it doesn't
|
63
|
-
* Throws only on actual errors (invalid input, network issues, etc)
|
69
|
+
* Helper method to get remaining messages in current epoch
|
70
|
+
* @param membershipId The ID of the membership to check
|
71
|
+
* @returns number of remaining messages allowed in current epoch
|
64
72
|
*/
|
65
|
-
|
66
|
-
getMembershipInfo(idCommitment: string): Promise<MembershipInfo>;
|
67
|
-
extendMembership(idCommitment: string): Promise<
|
68
|
-
eraseMembership(idCommitment: string, eraseFromMembershipSet?: boolean): Promise<
|
69
|
-
registerMembership(idCommitment: string, rateLimit?: number): Promise<
|
73
|
+
getRemainingMessages(membershipId: number): Promise<number>;
|
74
|
+
getMembershipInfo(idCommitment: string): Promise<MembershipInfo | undefined>;
|
75
|
+
extendMembership(idCommitment: string): Promise<ethers.ContractTransaction>;
|
76
|
+
eraseMembership(idCommitment: string, eraseFromMembershipSet?: boolean): Promise<ethers.ContractTransaction>;
|
77
|
+
registerMembership(idCommitment: string, rateLimit?: number): Promise<ethers.ContractTransaction>;
|
70
78
|
withdraw(token: string, holder: string): Promise<void>;
|
71
79
|
registerWithIdentity(identity: IdentityCredential): Promise<DecryptedCredentials | undefined>;
|
72
80
|
registerWithPermitAndErase(identity: IdentityCredential, permit: {
|
@@ -81,8 +89,8 @@ export declare class RLNBaseContract {
|
|
81
89
|
* @throws Error if the rate limit is outside the allowed range
|
82
90
|
*/
|
83
91
|
private validateRateLimit;
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
private
|
92
|
+
private get membersFilter();
|
93
|
+
private get membershipErasedFilter();
|
94
|
+
private get membersExpiredFilter();
|
95
|
+
private getMemberIndex;
|
88
96
|
}
|
@@ -2,17 +2,37 @@ import { Logger } from "@waku/utils";
|
|
2
2
|
import { ethers } from "ethers";
|
3
3
|
import { RLN_ABI } from "./abi.js";
|
4
4
|
import { DEFAULT_RATE_LIMIT, RATE_LIMIT_PARAMS } from "./constants.js";
|
5
|
-
import { InvalidMembershipError, InvalidRateLimitError, MembershipExistsError, MembershipNotFoundError, RateLimitExceededError, RLNContractError, TransactionError } from "./errors.js";
|
6
5
|
import { MembershipState } from "./types.js";
|
7
6
|
const log = new Logger("waku:rln:contract:base");
|
8
7
|
export class RLNBaseContract {
|
9
8
|
contract;
|
9
|
+
deployBlock;
|
10
10
|
rateLimit;
|
11
|
+
_members = new Map();
|
12
|
+
_membersFilter;
|
13
|
+
_membershipErasedFilter;
|
14
|
+
_membersExpiredFilter;
|
15
|
+
/**
|
16
|
+
* Constructor for RLNBaseContract.
|
17
|
+
* Allows injecting a mocked contract for testing purposes.
|
18
|
+
*/
|
11
19
|
constructor(options) {
|
20
|
+
// Initialize members and subscriptions
|
21
|
+
this.fetchMembers()
|
22
|
+
.then(() => {
|
23
|
+
this.subscribeToMembers();
|
24
|
+
})
|
25
|
+
.catch((error) => {
|
26
|
+
log.error("Failed to initialize members", { error });
|
27
|
+
});
|
12
28
|
const { address, signer, rateLimit = DEFAULT_RATE_LIMIT, contract } = options;
|
13
29
|
this.validateRateLimit(rateLimit);
|
14
30
|
this.contract = contract || new ethers.Contract(address, RLN_ABI, signer);
|
15
31
|
this.rateLimit = rateLimit;
|
32
|
+
// Initialize event filters
|
33
|
+
this._membersFilter = this.contract.filters.MembershipRegistered();
|
34
|
+
this._membershipErasedFilter = this.contract.filters.MembershipErased();
|
35
|
+
this._membersExpiredFilter = this.contract.filters.MembershipExpired();
|
16
36
|
}
|
17
37
|
/**
|
18
38
|
* Gets the current rate limit for this contract instance
|
@@ -83,60 +103,155 @@ export class RLNBaseContract {
|
|
83
103
|
this.validateRateLimit(newRateLimit);
|
84
104
|
this.rateLimit = newRateLimit;
|
85
105
|
}
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
106
|
+
get members() {
|
107
|
+
const sortedMembers = Array.from(this._members.values()).sort((left, right) => left.index.toNumber() - right.index.toNumber());
|
108
|
+
return sortedMembers;
|
109
|
+
}
|
110
|
+
async fetchMembers(options = {}) {
|
111
|
+
const registeredMemberEvents = await RLNBaseContract.queryFilter(this.contract, {
|
112
|
+
fromBlock: this.deployBlock,
|
113
|
+
...options,
|
114
|
+
membersFilter: this.membersFilter
|
115
|
+
});
|
116
|
+
const removedMemberEvents = await RLNBaseContract.queryFilter(this.contract, {
|
117
|
+
fromBlock: this.deployBlock,
|
118
|
+
...options,
|
119
|
+
membersFilter: this.membershipErasedFilter
|
120
|
+
});
|
121
|
+
const expiredMemberEvents = await RLNBaseContract.queryFilter(this.contract, {
|
122
|
+
fromBlock: this.deployBlock,
|
123
|
+
...options,
|
124
|
+
membersFilter: this.membersExpiredFilter
|
125
|
+
});
|
126
|
+
const events = [
|
127
|
+
...registeredMemberEvents,
|
128
|
+
...removedMemberEvents,
|
129
|
+
...expiredMemberEvents
|
130
|
+
];
|
131
|
+
this.processEvents(events);
|
132
|
+
}
|
133
|
+
static async queryFilter(contract, options) {
|
134
|
+
const FETCH_CHUNK = 5;
|
135
|
+
const BLOCK_RANGE = 3000;
|
136
|
+
const { fromBlock, membersFilter, fetchRange = BLOCK_RANGE, fetchChunks = FETCH_CHUNK } = options;
|
137
|
+
if (fromBlock === undefined) {
|
138
|
+
return contract.queryFilter(membersFilter);
|
139
|
+
}
|
140
|
+
if (!contract.provider) {
|
141
|
+
throw Error("No provider found on the contract.");
|
142
|
+
}
|
143
|
+
const toBlock = await contract.provider.getBlockNumber();
|
144
|
+
if (toBlock - fromBlock < fetchRange) {
|
145
|
+
return contract.queryFilter(membersFilter, fromBlock, toBlock);
|
146
|
+
}
|
147
|
+
const events = [];
|
148
|
+
const chunks = RLNBaseContract.splitToChunks(fromBlock, toBlock, fetchRange);
|
149
|
+
for (const portion of RLNBaseContract.takeN(chunks, fetchChunks)) {
|
150
|
+
const promises = portion.map(([left, right]) => RLNBaseContract.ignoreErrors(contract.queryFilter(membersFilter, left, right), []));
|
151
|
+
const fetchedEvents = await Promise.all(promises);
|
152
|
+
events.push(fetchedEvents.flatMap((v) => v));
|
153
|
+
}
|
154
|
+
return events.flatMap((v) => v);
|
155
|
+
}
|
156
|
+
processEvents(events) {
|
157
|
+
const toRemoveTable = new Map();
|
158
|
+
const toInsertTable = new Map();
|
159
|
+
events.forEach((evt) => {
|
160
|
+
if (!evt.args) {
|
161
|
+
return;
|
162
|
+
}
|
163
|
+
if (evt.event === "MembershipErased" ||
|
164
|
+
evt.event === "MembershipExpired") {
|
165
|
+
let index = evt.args.index;
|
166
|
+
if (!index) {
|
167
|
+
return;
|
168
|
+
}
|
169
|
+
if (typeof index === "number" || typeof index === "string") {
|
170
|
+
index = ethers.BigNumber.from(index);
|
171
|
+
}
|
172
|
+
const toRemoveVal = toRemoveTable.get(evt.blockNumber);
|
173
|
+
if (toRemoveVal != undefined) {
|
174
|
+
toRemoveVal.push(index.toNumber());
|
175
|
+
toRemoveTable.set(evt.blockNumber, toRemoveVal);
|
176
|
+
}
|
177
|
+
else {
|
178
|
+
toRemoveTable.set(evt.blockNumber, [index.toNumber()]);
|
179
|
+
}
|
180
|
+
}
|
181
|
+
else if (evt.event === "MembershipRegistered") {
|
182
|
+
let eventsPerBlock = toInsertTable.get(evt.blockNumber);
|
183
|
+
if (eventsPerBlock == undefined) {
|
184
|
+
eventsPerBlock = [];
|
185
|
+
}
|
186
|
+
eventsPerBlock.push(evt);
|
187
|
+
toInsertTable.set(evt.blockNumber, eventsPerBlock);
|
188
|
+
}
|
189
|
+
});
|
190
|
+
}
|
191
|
+
static splitToChunks(from, to, step) {
|
192
|
+
const chunks = [];
|
193
|
+
let left = from;
|
194
|
+
while (left < to) {
|
195
|
+
const right = left + step < to ? left + step : to;
|
196
|
+
chunks.push([left, right]);
|
197
|
+
left = right;
|
198
|
+
}
|
199
|
+
return chunks;
|
200
|
+
}
|
201
|
+
static *takeN(array, size) {
|
202
|
+
let start = 0;
|
203
|
+
while (start < array.length) {
|
204
|
+
const portion = array.slice(start, start + size);
|
205
|
+
yield portion;
|
206
|
+
start += size;
|
207
|
+
}
|
208
|
+
}
|
209
|
+
static async ignoreErrors(promise, defaultValue) {
|
92
210
|
try {
|
93
|
-
|
94
|
-
const idCommitments = await this.contract.getRateCommitmentsInRangeBoundsInclusive(startIndex, endIndex - 1 // -1 because getRateCommitmentsInRangeBoundsInclusive is inclusive
|
95
|
-
);
|
96
|
-
// Get membership info for each commitment in a single batch
|
97
|
-
const membershipPromises = idCommitments.map((idCommitment) => this.contract
|
98
|
-
.memberships(idCommitment)
|
99
|
-
.then((info) => ({
|
100
|
-
idCommitment: idCommitment.toString(),
|
101
|
-
index: ethers.BigNumber.from(info.index)
|
102
|
-
}))
|
103
|
-
.catch(() => null) // Skip invalid members
|
104
|
-
);
|
105
|
-
// Wait for all promises to resolve
|
106
|
-
const members = (await Promise.all(membershipPromises)).filter((m) => m !== null);
|
107
|
-
return members;
|
211
|
+
return await promise;
|
108
212
|
}
|
109
|
-
catch (
|
110
|
-
if (
|
111
|
-
error.message
|
112
|
-
|
213
|
+
catch (err) {
|
214
|
+
if (err instanceof Error) {
|
215
|
+
log.info(`Ignoring an error during query: ${err.message}`);
|
216
|
+
}
|
217
|
+
else {
|
218
|
+
log.info(`Ignoring an unknown error during query`);
|
113
219
|
}
|
114
|
-
|
220
|
+
return defaultValue;
|
115
221
|
}
|
116
222
|
}
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
223
|
+
subscribeToMembers() {
|
224
|
+
this.contract.on(this.membersFilter, (_idCommitment, _membershipRateLimit, _index, event) => {
|
225
|
+
this.processEvents([event]);
|
226
|
+
});
|
227
|
+
this.contract.on(this.membershipErasedFilter, (_idCommitment, _membershipRateLimit, _index, event) => {
|
228
|
+
this.processEvents([event]);
|
229
|
+
});
|
230
|
+
this.contract.on(this.membersExpiredFilter, (_idCommitment, _membershipRateLimit, _index, event) => {
|
231
|
+
this.processEvents([event]);
|
232
|
+
});
|
123
233
|
}
|
124
234
|
/**
|
125
|
-
*
|
126
|
-
*
|
235
|
+
* Helper method to get remaining messages in current epoch
|
236
|
+
* @param membershipId The ID of the membership to check
|
237
|
+
* @returns number of remaining messages allowed in current epoch
|
127
238
|
*/
|
128
|
-
async
|
239
|
+
async getRemainingMessages(membershipId) {
|
129
240
|
try {
|
130
|
-
const
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
const
|
135
|
-
|
241
|
+
const [startTime, , rateLimit] = await this.contract.getMembershipInfo(membershipId);
|
242
|
+
// Calculate current epoch
|
243
|
+
const currentTime = Math.floor(Date.now() / 1000);
|
244
|
+
const epochsPassed = Math.floor((currentTime - startTime) / RATE_LIMIT_PARAMS.EPOCH_LENGTH);
|
245
|
+
const currentEpochStart = startTime + epochsPassed * RATE_LIMIT_PARAMS.EPOCH_LENGTH;
|
246
|
+
// Get message count in current epoch using contract's function
|
247
|
+
const messageCount = await this.contract.getMessageCount(membershipId, currentEpochStart);
|
248
|
+
return Math.max(0, ethers.BigNumber.from(rateLimit)
|
249
|
+
.sub(ethers.BigNumber.from(messageCount))
|
250
|
+
.toNumber());
|
136
251
|
}
|
137
252
|
catch (error) {
|
138
|
-
log.error(`Error getting
|
139
|
-
|
253
|
+
log.error(`Error getting remaining messages: ${error.message}`);
|
254
|
+
return 0; // Fail safe: assume no messages remaining on error
|
140
255
|
}
|
141
256
|
}
|
142
257
|
async getMembershipInfo(idCommitment) {
|
@@ -154,9 +269,8 @@ export class RLNBaseContract {
|
|
154
269
|
state = MembershipState.Expired;
|
155
270
|
}
|
156
271
|
const index = await this.getMemberIndex(idCommitment);
|
157
|
-
if (index
|
158
|
-
|
159
|
-
}
|
272
|
+
if (!index)
|
273
|
+
return undefined;
|
160
274
|
return {
|
161
275
|
index,
|
162
276
|
idCommitment,
|
@@ -167,51 +281,29 @@ export class RLNBaseContract {
|
|
167
281
|
};
|
168
282
|
}
|
169
283
|
catch (error) {
|
170
|
-
|
171
|
-
throw error;
|
172
|
-
}
|
173
|
-
log.error(`Error getting membership info: ${error.message}`);
|
174
|
-
throw new InvalidMembershipError(idCommitment);
|
284
|
+
return undefined;
|
175
285
|
}
|
176
286
|
}
|
177
287
|
async extendMembership(idCommitment) {
|
178
|
-
|
179
|
-
await this.confirmTransaction(tx, "MembershipExtended", (event) => ({
|
180
|
-
idCommitment: event.args.idCommitment,
|
181
|
-
endBlock: event.args.endBlock
|
182
|
-
}));
|
288
|
+
return this.contract.extendMemberships([idCommitment]);
|
183
289
|
}
|
184
290
|
async eraseMembership(idCommitment, eraseFromMembershipSet = true) {
|
185
|
-
|
186
|
-
await this.confirmTransaction(tx, "MembershipErased", (event) => ({
|
187
|
-
idCommitment: event.args.idCommitment,
|
188
|
-
index: event.args.index
|
189
|
-
}));
|
291
|
+
return this.contract.eraseMemberships([idCommitment], eraseFromMembershipSet);
|
190
292
|
}
|
191
293
|
async registerMembership(idCommitment, rateLimit = DEFAULT_RATE_LIMIT) {
|
192
294
|
if (rateLimit < RATE_LIMIT_PARAMS.MIN_RATE ||
|
193
295
|
rateLimit > RATE_LIMIT_PARAMS.MAX_RATE) {
|
194
296
|
throw new Error(`Rate limit must be between ${RATE_LIMIT_PARAMS.MIN_RATE} and ${RATE_LIMIT_PARAMS.MAX_RATE}`);
|
195
297
|
}
|
196
|
-
|
197
|
-
await this.confirmTransaction(tx, "MembershipRegistered", (event) => ({
|
198
|
-
idCommitment: event.args.idCommitment,
|
199
|
-
membershipRateLimit: event.args.membershipRateLimit,
|
200
|
-
index: event.args.index
|
201
|
-
}));
|
298
|
+
return this.contract.register(idCommitment, rateLimit, []);
|
202
299
|
}
|
203
300
|
async withdraw(token, holder) {
|
204
301
|
try {
|
205
302
|
const tx = await this.contract.withdraw(token, { from: holder });
|
206
|
-
await
|
207
|
-
token: event.args.token,
|
208
|
-
holder: event.args.holder,
|
209
|
-
amount: event.args.amount
|
210
|
-
}));
|
303
|
+
await tx.wait();
|
211
304
|
}
|
212
305
|
catch (error) {
|
213
306
|
log.error(`Error in withdraw: ${error.message}`);
|
214
|
-
throw error;
|
215
307
|
}
|
216
308
|
}
|
217
309
|
async registerWithIdentity(identity) {
|
@@ -219,82 +311,100 @@ export class RLNBaseContract {
|
|
219
311
|
log.info(`Registering identity with rate limit: ${this.rateLimit} messages/epoch`);
|
220
312
|
// Check if the ID commitment is already registered
|
221
313
|
const existingIndex = await this.getMemberIndex(identity.IDCommitmentBigInt.toString());
|
222
|
-
if (existingIndex
|
223
|
-
throw new
|
314
|
+
if (existingIndex) {
|
315
|
+
throw new Error(`ID commitment is already registered with index ${existingIndex}`);
|
224
316
|
}
|
225
317
|
// Check if there's enough remaining rate limit
|
226
318
|
const remainingRateLimit = await this.getRemainingTotalRateLimit();
|
227
319
|
if (remainingRateLimit < this.rateLimit) {
|
228
|
-
throw new
|
320
|
+
throw new Error(`Not enough remaining rate limit. Requested: ${this.rateLimit}, Available: ${remainingRateLimit}`);
|
229
321
|
}
|
230
322
|
const estimatedGas = await this.contract.estimateGas.register(identity.IDCommitmentBigInt, this.rateLimit, []);
|
231
323
|
const gasLimit = estimatedGas.add(10000);
|
232
|
-
const
|
233
|
-
const
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
324
|
+
const txRegisterResponse = await this.contract.register(identity.IDCommitmentBigInt, this.rateLimit, [], { gasLimit });
|
325
|
+
const txRegisterReceipt = await txRegisterResponse.wait();
|
326
|
+
if (txRegisterReceipt.status === 0) {
|
327
|
+
throw new Error("Transaction failed on-chain");
|
328
|
+
}
|
329
|
+
const memberRegistered = txRegisterReceipt.events?.find((event) => event.event === "MembershipRegistered");
|
330
|
+
if (!memberRegistered || !memberRegistered.args) {
|
331
|
+
log.error("Failed to register membership: No MembershipRegistered event found");
|
332
|
+
return undefined;
|
333
|
+
}
|
334
|
+
const decodedData = {
|
335
|
+
idCommitment: memberRegistered.args.idCommitment,
|
336
|
+
membershipRateLimit: memberRegistered.args.membershipRateLimit,
|
337
|
+
index: memberRegistered.args.index
|
338
|
+
};
|
238
339
|
log.info(`Successfully registered membership with index ${decodedData.index} ` +
|
239
340
|
`and rate limit ${decodedData.membershipRateLimit}`);
|
240
341
|
const network = await this.contract.provider.getNetwork();
|
241
342
|
const address = this.contract.address;
|
242
|
-
const membershipId = decodedData.index
|
343
|
+
const membershipId = Number(decodedData.index);
|
243
344
|
return {
|
244
345
|
identity,
|
245
346
|
membership: {
|
246
347
|
address,
|
247
|
-
treeIndex:
|
348
|
+
treeIndex: membershipId,
|
248
349
|
chainId: network.chainId.toString(),
|
249
350
|
rateLimit: decodedData.membershipRateLimit.toNumber()
|
250
351
|
}
|
251
352
|
};
|
252
353
|
}
|
253
354
|
catch (error) {
|
254
|
-
if (error instanceof RLNContractError) {
|
255
|
-
throw error;
|
256
|
-
}
|
257
355
|
if (error instanceof Error) {
|
258
356
|
const errorMessage = error.message;
|
259
357
|
log.error("registerWithIdentity - error message:", errorMessage);
|
260
358
|
log.error("registerWithIdentity - error stack:", error.stack);
|
261
|
-
//
|
359
|
+
// Try to extract more specific error information
|
262
360
|
if (errorMessage.includes("CannotExceedMaxTotalRateLimit")) {
|
263
|
-
throw new
|
361
|
+
throw new Error("Registration failed: Cannot exceed maximum total rate limit");
|
264
362
|
}
|
265
363
|
else if (errorMessage.includes("InvalidIdCommitment")) {
|
266
|
-
throw new
|
364
|
+
throw new Error("Registration failed: Invalid ID commitment");
|
267
365
|
}
|
268
366
|
else if (errorMessage.includes("InvalidMembershipRateLimit")) {
|
269
|
-
throw new
|
367
|
+
throw new Error("Registration failed: Invalid membership rate limit");
|
270
368
|
}
|
271
369
|
else if (errorMessage.includes("execution reverted")) {
|
272
|
-
throw new
|
370
|
+
throw new Error("Contract execution reverted. Check contract requirements.");
|
371
|
+
}
|
372
|
+
else {
|
373
|
+
throw new Error(`Error in registerWithIdentity: ${errorMessage}`);
|
273
374
|
}
|
274
|
-
throw new RLNContractError(`Error in registerWithIdentity: ${errorMessage}`);
|
275
375
|
}
|
276
|
-
|
376
|
+
else {
|
377
|
+
throw new Error("Unknown error in registerWithIdentity", {
|
378
|
+
cause: error
|
379
|
+
});
|
380
|
+
}
|
277
381
|
}
|
278
382
|
}
|
279
383
|
async registerWithPermitAndErase(identity, permit, idCommitmentsToErase) {
|
280
384
|
try {
|
281
385
|
log.info(`Registering identity with permit and rate limit: ${this.rateLimit} messages/epoch`);
|
282
|
-
const
|
283
|
-
const
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
386
|
+
const txRegisterResponse = await this.contract.registerWithPermit(permit.owner, permit.deadline, permit.v, permit.r, permit.s, identity.IDCommitmentBigInt, this.rateLimit, idCommitmentsToErase.map((id) => ethers.BigNumber.from(id)));
|
387
|
+
const txRegisterReceipt = await txRegisterResponse.wait();
|
388
|
+
const memberRegistered = txRegisterReceipt.events?.find((event) => event.event === "MembershipRegistered");
|
389
|
+
if (!memberRegistered || !memberRegistered.args) {
|
390
|
+
log.error("Failed to register membership with permit: No MembershipRegistered event found");
|
391
|
+
return undefined;
|
392
|
+
}
|
393
|
+
const decodedData = {
|
394
|
+
idCommitment: memberRegistered.args.idCommitment,
|
395
|
+
membershipRateLimit: memberRegistered.args.membershipRateLimit,
|
396
|
+
index: memberRegistered.args.index
|
397
|
+
};
|
288
398
|
log.info(`Successfully registered membership with permit. Index: ${decodedData.index}, ` +
|
289
399
|
`Rate limit: ${decodedData.membershipRateLimit}, Erased ${idCommitmentsToErase.length} commitments`);
|
290
400
|
const network = await this.contract.provider.getNetwork();
|
291
401
|
const address = this.contract.address;
|
292
|
-
const membershipId = decodedData.index
|
402
|
+
const membershipId = Number(decodedData.index);
|
293
403
|
return {
|
294
404
|
identity,
|
295
405
|
membership: {
|
296
406
|
address,
|
297
|
-
treeIndex:
|
407
|
+
treeIndex: membershipId,
|
298
408
|
chainId: network.chainId.toString(),
|
299
409
|
rateLimit: decodedData.membershipRateLimit.toNumber()
|
300
410
|
}
|
@@ -302,7 +412,7 @@ export class RLNBaseContract {
|
|
302
412
|
}
|
303
413
|
catch (error) {
|
304
414
|
log.error(`Error in registerWithPermitAndErase: ${error.message}`);
|
305
|
-
|
415
|
+
return undefined;
|
306
416
|
}
|
307
417
|
}
|
308
418
|
/**
|
@@ -312,19 +422,39 @@ export class RLNBaseContract {
|
|
312
422
|
validateRateLimit(rateLimit) {
|
313
423
|
if (rateLimit < RATE_LIMIT_PARAMS.MIN_RATE ||
|
314
424
|
rateLimit > RATE_LIMIT_PARAMS.MAX_RATE) {
|
315
|
-
throw new
|
425
|
+
throw new Error(`Rate limit must be between ${RATE_LIMIT_PARAMS.MIN_RATE} and ${RATE_LIMIT_PARAMS.MAX_RATE} messages per epoch`);
|
316
426
|
}
|
317
427
|
}
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
428
|
+
get membersFilter() {
|
429
|
+
if (!this._membersFilter) {
|
430
|
+
throw Error("Members filter was not initialized.");
|
431
|
+
}
|
432
|
+
return this._membersFilter;
|
433
|
+
}
|
434
|
+
get membershipErasedFilter() {
|
435
|
+
if (!this._membershipErasedFilter) {
|
436
|
+
throw Error("MembershipErased filter was not initialized.");
|
437
|
+
}
|
438
|
+
return this._membershipErasedFilter;
|
439
|
+
}
|
440
|
+
get membersExpiredFilter() {
|
441
|
+
if (!this._membersExpiredFilter) {
|
442
|
+
throw Error("MembersExpired filter was not initialized.");
|
443
|
+
}
|
444
|
+
return this._membersExpiredFilter;
|
445
|
+
}
|
446
|
+
async getMemberIndex(idCommitment) {
|
447
|
+
try {
|
448
|
+
const events = await this.contract.queryFilter(this.contract.filters.MembershipRegistered(idCommitment));
|
449
|
+
if (events.length === 0)
|
450
|
+
return undefined;
|
451
|
+
// Get the most recent registration event
|
452
|
+
const event = events[events.length - 1];
|
453
|
+
return event.args?.index;
|
454
|
+
}
|
455
|
+
catch (error) {
|
456
|
+
return undefined;
|
326
457
|
}
|
327
|
-
return transform(event);
|
328
458
|
}
|
329
459
|
}
|
330
460
|
//# sourceMappingURL=rln_base_contract.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rln_base_contract.js","sourceRoot":"","sources":["../../src/contract/rln_base_contract.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"rln_base_contract.js","sourceRoot":"","sources":["../../src/contract/rln_base_contract.ts"],"names":[],"mappings":"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"}
|