@waku/rln 0.1.5-f6b9809.0 → 0.1.5-fdaf129.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/index.js +2 -1
- package/bundle/packages/rln/dist/contract/constants.js +5 -1
- package/bundle/packages/rln/dist/contract/rln_base_contract.js +42 -29
- 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/index.d.ts +1 -0
- package/dist/contract/index.js +1 -0
- package/dist/contract/index.js.map +1 -1
- package/dist/contract/rln_base_contract.d.ts +5 -5
- package/dist/contract/rln_base_contract.js +42 -29
- package/dist/contract/rln_base_contract.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/keystore/keystore.js.map +1 -1
- package/dist/keystore/types.d.ts +2 -2
- package/package.json +1 -1
- package/src/contract/index.ts +1 -0
- package/src/contract/rln_base_contract.ts +59 -35
- package/src/index.ts +3 -1
- package/src/keystore/keystore.ts +4 -2
- package/src/keystore/types.ts +2 -2
package/bundle/_virtual/utils.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
var utils = {};
|
1
|
+
var utils = {exports: {}};
|
2
2
|
|
3
|
-
export { utils as
|
3
|
+
export { utils as __module };
|
@@ -1,3 +1,3 @@
|
|
1
|
-
var utils = {
|
1
|
+
var utils = {};
|
2
2
|
|
3
|
-
export { utils as
|
3
|
+
export { utils as __exports };
|
package/bundle/index.js
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
export { RLNDecoder, RLNEncoder } from './packages/rln/dist/codec.js';
|
2
2
|
export { RLN_ABI } from './packages/rln/dist/contract/abi.js';
|
3
3
|
export { RLNContract } from './packages/rln/dist/contract/rln_contract.js';
|
4
|
-
export { LINEA_CONTRACT } from './packages/rln/dist/contract/constants.js';
|
4
|
+
export { DEFAULT_RATE_LIMIT, LINEA_CONTRACT, RATE_LIMIT_PARAMS, RATE_LIMIT_TIERS } from './packages/rln/dist/contract/constants.js';
|
5
|
+
export { MembershipState } from './packages/rln/dist/contract/types.js';
|
5
6
|
export { RLNBaseContract } from './packages/rln/dist/contract/rln_base_contract.js';
|
6
7
|
export { createRLN } from './packages/rln/dist/create.js';
|
7
8
|
export { RLNCredentialsManager } from './packages/rln/dist/credentials_manager.js';
|
@@ -12,12 +12,16 @@ const LINEA_CONTRACT = {
|
|
12
12
|
*/
|
13
13
|
const RATE_LIMIT_TIERS = {
|
14
14
|
LOW: 20, // Suggested minimum rate - 20 messages per epoch
|
15
|
+
MEDIUM: 200,
|
15
16
|
HIGH: 600 // Suggested maximum rate - 600 messages per epoch
|
16
17
|
};
|
17
18
|
// Global rate limit parameters
|
18
19
|
const RATE_LIMIT_PARAMS = {
|
19
20
|
MIN_RATE: RATE_LIMIT_TIERS.LOW,
|
20
|
-
MAX_RATE: RATE_LIMIT_TIERS.HIGH
|
21
|
+
MAX_RATE: RATE_LIMIT_TIERS.HIGH,
|
22
|
+
MAX_TOTAL_RATE: 160_000, // Maximum total rate limit across all memberships
|
23
|
+
EPOCH_LENGTH: 600 // Epoch length in seconds (10 minutes)
|
24
|
+
};
|
21
25
|
const DEFAULT_RATE_LIMIT = RATE_LIMIT_PARAMS.MAX_RATE;
|
22
26
|
|
23
27
|
export { DEFAULT_RATE_LIMIT, LINEA_CONTRACT, RATE_LIMIT_PARAMS, RATE_LIMIT_TIERS };
|
@@ -19,6 +19,7 @@ import { MembershipState } from './types.js';
|
|
19
19
|
import { Contract } from '../../../../node_modules/@ethersproject/contracts/lib.esm/index.js';
|
20
20
|
import { BigNumber } from '../../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js';
|
21
21
|
|
22
|
+
/* eslint-disable no-console */
|
22
23
|
const log = new Logger("waku:rln:contract:base");
|
23
24
|
class RLNBaseContract {
|
24
25
|
contract;
|
@@ -34,12 +35,21 @@ class RLNBaseContract {
|
|
34
35
|
*/
|
35
36
|
constructor(options) {
|
36
37
|
const { address, signer, rateLimit = DEFAULT_RATE_LIMIT, contract } = options;
|
38
|
+
log.info("Initializing RLNBaseContract", { address, rateLimit });
|
37
39
|
this.contract = contract || new Contract(address, RLN_ABI, signer);
|
38
40
|
this.rateLimit = rateLimit;
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
41
|
+
try {
|
42
|
+
log.info("Setting up event filters");
|
43
|
+
// Initialize event filters
|
44
|
+
this._membersFilter = this.contract.filters.MembershipRegistered();
|
45
|
+
this._membershipErasedFilter = this.contract.filters.MembershipErased();
|
46
|
+
this._membersExpiredFilter = this.contract.filters.MembershipExpired();
|
47
|
+
log.info("Event filters initialized successfully");
|
48
|
+
}
|
49
|
+
catch (error) {
|
50
|
+
log.error("Failed to initialize event filters", { error });
|
51
|
+
throw new Error("Failed to initialize event filters: " + error.message);
|
52
|
+
}
|
43
53
|
// Initialize members and subscriptions
|
44
54
|
this.fetchMembers()
|
45
55
|
.then(() => {
|
@@ -250,55 +260,58 @@ class RLNBaseContract {
|
|
250
260
|
this.processEvents([event]);
|
251
261
|
});
|
252
262
|
}
|
253
|
-
async getMembershipInfo(
|
263
|
+
async getMembershipInfo(idCommitmentBigInt) {
|
254
264
|
try {
|
255
|
-
const membershipData = await this.contract.memberships(
|
265
|
+
const membershipData = await this.contract.memberships(idCommitmentBigInt);
|
256
266
|
const currentBlock = await this.contract.provider.getBlockNumber();
|
267
|
+
console.log("membershipData", membershipData);
|
268
|
+
const [depositAmount, activeDuration, gracePeriodStartTimestamp, gracePeriodDuration, rateLimit, index, holder, token] = membershipData;
|
269
|
+
const gracePeriodEnd = gracePeriodStartTimestamp.add(gracePeriodDuration);
|
257
270
|
let state;
|
258
|
-
|
259
|
-
if (currentBlock < membershipData.gracePeriodStartTimestamp) {
|
271
|
+
if (currentBlock < gracePeriodStartTimestamp.toNumber()) {
|
260
272
|
state = MembershipState.Active;
|
261
273
|
}
|
262
|
-
else if (currentBlock < gracePeriodEnd) {
|
274
|
+
else if (currentBlock < gracePeriodEnd.toNumber()) {
|
263
275
|
state = MembershipState.GracePeriod;
|
264
276
|
}
|
265
277
|
else {
|
266
278
|
state = MembershipState.Expired;
|
267
279
|
}
|
268
280
|
return {
|
269
|
-
index
|
270
|
-
idCommitment,
|
271
|
-
rateLimit:
|
272
|
-
startBlock:
|
281
|
+
index,
|
282
|
+
idCommitment: idCommitmentBigInt.toString(),
|
283
|
+
rateLimit: Number(rateLimit),
|
284
|
+
startBlock: gracePeriodStartTimestamp.toNumber(),
|
273
285
|
endBlock: gracePeriodEnd.toNumber(),
|
274
286
|
state,
|
275
|
-
depositAmount
|
276
|
-
activeDuration
|
277
|
-
gracePeriodDuration
|
278
|
-
holder
|
279
|
-
token
|
287
|
+
depositAmount,
|
288
|
+
activeDuration,
|
289
|
+
gracePeriodDuration,
|
290
|
+
holder,
|
291
|
+
token
|
280
292
|
};
|
281
293
|
}
|
282
294
|
catch (error) {
|
295
|
+
console.error("Error in getMembershipInfo:", error);
|
283
296
|
return undefined;
|
284
297
|
}
|
285
298
|
}
|
286
|
-
async extendMembership(
|
287
|
-
return this.contract.extendMemberships([
|
299
|
+
async extendMembership(idCommitmentBigInt) {
|
300
|
+
return this.contract.extendMemberships([idCommitmentBigInt]);
|
288
301
|
}
|
289
|
-
async eraseMembership(
|
290
|
-
return this.contract.eraseMemberships([
|
302
|
+
async eraseMembership(idCommitmentBigInt, eraseFromMembershipSet = true) {
|
303
|
+
return this.contract.eraseMemberships([idCommitmentBigInt], eraseFromMembershipSet);
|
291
304
|
}
|
292
|
-
async registerMembership(
|
305
|
+
async registerMembership(idCommitmentBigInt, rateLimit = DEFAULT_RATE_LIMIT) {
|
293
306
|
if (rateLimit < RATE_LIMIT_PARAMS.MIN_RATE ||
|
294
307
|
rateLimit > RATE_LIMIT_PARAMS.MAX_RATE) {
|
295
308
|
throw new Error(`Rate limit must be between ${RATE_LIMIT_PARAMS.MIN_RATE} and ${RATE_LIMIT_PARAMS.MAX_RATE}`);
|
296
309
|
}
|
297
|
-
return this.contract.register(
|
310
|
+
return this.contract.register(idCommitmentBigInt, rateLimit, []);
|
298
311
|
}
|
299
|
-
async withdraw(token) {
|
312
|
+
async withdraw(token, from) {
|
300
313
|
try {
|
301
|
-
const tx = await this.contract.withdraw(token);
|
314
|
+
const tx = await this.contract.withdraw(token, from);
|
302
315
|
await tx.wait();
|
303
316
|
}
|
304
317
|
catch (error) {
|
@@ -309,7 +322,7 @@ class RLNBaseContract {
|
|
309
322
|
try {
|
310
323
|
log.info(`Registering identity with rate limit: ${this.rateLimit} messages/epoch`);
|
311
324
|
// Check if the ID commitment is already registered
|
312
|
-
const existingIndex = await this.getMemberIndex(identity.IDCommitmentBigInt
|
325
|
+
const existingIndex = await this.getMemberIndex(identity.IDCommitmentBigInt);
|
313
326
|
if (existingIndex) {
|
314
327
|
throw new Error(`ID commitment is already registered with index ${existingIndex}`);
|
315
328
|
}
|
@@ -447,9 +460,9 @@ class RLNBaseContract {
|
|
447
460
|
}
|
448
461
|
return this._membersExpiredFilter;
|
449
462
|
}
|
450
|
-
async getMemberIndex(
|
463
|
+
async getMemberIndex(idCommitmentBigInt) {
|
451
464
|
try {
|
452
|
-
const events = await this.contract.queryFilter(this.contract.filters.MembershipRegistered(
|
465
|
+
const events = await this.contract.queryFilter(this.contract.filters.MembershipRegistered(idCommitmentBigInt));
|
453
466
|
if (events.length === 0)
|
454
467
|
return undefined;
|
455
468
|
// Get the most recent registration event
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { __exports as random } from '../../../../../../../_virtual/random.js';
|
2
2
|
import '../../../../@noble/hashes/utils.js';
|
3
|
-
import { __exports as utils } from '../../../../../../../_virtual/
|
3
|
+
import { __exports as utils } from '../../../../../../../_virtual/utils2.js';
|
4
4
|
|
5
5
|
Object.defineProperty(random, "__esModule", { value: true });
|
6
6
|
random.getRandomBytes = random.getRandomBytesSync = void 0;
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import { commonjsGlobal } from '../../../../../../../_virtual/_commonjsHelpers.js';
|
2
2
|
import { commonjsRequire } from '../../../../../../../_virtual/_commonjs-dynamic-modules.js';
|
3
|
-
import { __module as utils } from '../../../../../../../_virtual/
|
3
|
+
import { __module as utils } from '../../../../../../../_virtual/utils.js';
|
4
4
|
import '../../../../@noble/hashes/_assert.js';
|
5
5
|
import '../../../../@noble/hashes/utils.js';
|
6
6
|
import { __exports as _assert } from '../../../../../../../_virtual/_assert.js';
|
7
|
-
import { __exports as utils$1 } from '../../../../../../../_virtual/
|
7
|
+
import { __exports as utils$1 } from '../../../../../../../_virtual/utils2.js';
|
8
8
|
|
9
9
|
utils.exports;
|
10
10
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { __exports as _sha2 } from '../../../../../_virtual/_sha2.js';
|
2
2
|
import './_assert.js';
|
3
3
|
import './utils.js';
|
4
|
-
import { __exports as utils } from '../../../../../_virtual/
|
4
|
+
import { __exports as utils } from '../../../../../_virtual/utils2.js';
|
5
5
|
import { __exports as _assert } from '../../../../../_virtual/_assert.js';
|
6
6
|
|
7
7
|
Object.defineProperty(_sha2, "__esModule", { value: true });
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { __exports as hmac } from '../../../../../_virtual/hmac.js';
|
2
2
|
import './_assert.js';
|
3
3
|
import './utils.js';
|
4
|
-
import { __exports as utils } from '../../../../../_virtual/
|
4
|
+
import { __exports as utils } from '../../../../../_virtual/utils2.js';
|
5
5
|
import { __exports as _assert } from '../../../../../_virtual/_assert.js';
|
6
6
|
|
7
7
|
(function (exports) {
|
@@ -2,7 +2,7 @@ import { __exports as pbkdf2$1 } from '../../../../../_virtual/pbkdf22.js';
|
|
2
2
|
import './_assert.js';
|
3
3
|
import './hmac.js';
|
4
4
|
import './utils.js';
|
5
|
-
import { __exports as utils } from '../../../../../_virtual/
|
5
|
+
import { __exports as utils } from '../../../../../_virtual/utils2.js';
|
6
6
|
import { __exports as _assert } from '../../../../../_virtual/_assert.js';
|
7
7
|
import { __exports as hmac } from '../../../../../_virtual/hmac.js';
|
8
8
|
|
@@ -3,7 +3,7 @@ import './_assert.js';
|
|
3
3
|
import './sha256.js';
|
4
4
|
import './pbkdf2.js';
|
5
5
|
import './utils.js';
|
6
|
-
import { __exports as utils } from '../../../../../_virtual/
|
6
|
+
import { __exports as utils } from '../../../../../_virtual/utils2.js';
|
7
7
|
import { __exports as _assert } from '../../../../../_virtual/_assert.js';
|
8
8
|
import { __exports as pbkdf2 } from '../../../../../_virtual/pbkdf22.js';
|
9
9
|
import { __exports as sha256 } from '../../../../../_virtual/sha2562.js';
|
@@ -2,7 +2,7 @@ import { __exports as sha256 } from '../../../../../_virtual/sha2562.js';
|
|
2
2
|
import './_sha2.js';
|
3
3
|
import './utils.js';
|
4
4
|
import { __exports as _sha2 } from '../../../../../_virtual/_sha2.js';
|
5
|
-
import { __exports as utils } from '../../../../../_virtual/
|
5
|
+
import { __exports as utils } from '../../../../../_virtual/utils2.js';
|
6
6
|
|
7
7
|
Object.defineProperty(sha256, "__esModule", { value: true });
|
8
8
|
sha256.sha224 = sha256.sha256 = void 0;
|
@@ -4,7 +4,7 @@ import './_u64.js';
|
|
4
4
|
import './utils.js';
|
5
5
|
import { __exports as _u64 } from '../../../../../_virtual/_u64.js';
|
6
6
|
import { __exports as _sha2 } from '../../../../../_virtual/_sha2.js';
|
7
|
-
import { __exports as utils } from '../../../../../_virtual/
|
7
|
+
import { __exports as utils } from '../../../../../_virtual/utils2.js';
|
8
8
|
|
9
9
|
Object.defineProperty(sha512, "__esModule", { value: true });
|
10
10
|
sha512.sha384 = sha512.sha512_256 = sha512.sha512_224 = sha512.sha512 = sha512.SHA512 = void 0;
|