@waku/rln 0.1.5-bc093d3.0 → 0.1.5-d17562d.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/index.js +2 -1
- package/bundle/packages/rln/dist/contract/constants.js +5 -1
- package/bundle/packages/rln/dist/contract/rln_base_contract.js +33 -35
- package/bundle/packages/rln/dist/contract/rln_contract.js +1 -1
- package/bundle/packages/rln/dist/utils/bytes.js +8 -2
- package/bundle/packages/rln/dist/utils/metamask.js +2 -2
- 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 +4 -4
- package/dist/contract/rln_base_contract.js +31 -33
- 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/dist/utils/bytes.js +8 -2
- package/dist/utils/bytes.js.map +1 -1
- package/package.json +1 -1
- package/src/contract/index.ts +1 -0
- package/src/contract/rln_base_contract.ts +47 -47
- package/src/index.ts +3 -1
- package/src/keystore/keystore.ts +4 -2
- package/src/keystore/types.ts +2 -2
- package/src/utils/bytes.ts +10 -2
- package/bundle/_virtual/__node-resolve_empty.js +0 -6
- package/bundle/_virtual/_node-resolve_empty.js +0 -3
- package/bundle/_virtual/bn.js +0 -3
- package/bundle/_virtual/common.js +0 -3
- package/bundle/_virtual/common2.js +0 -3
- package/bundle/_virtual/hash.js +0 -3
- package/bundle/_virtual/inherits_browser.js +0 -3
- package/bundle/_virtual/ripemd.js +0 -3
- package/bundle/_virtual/sha.js +0 -3
- package/bundle/_virtual/sha3.js +0 -3
- package/bundle/_virtual/utils3.js +0 -3
- package/bundle/node_modules/@ethersproject/abi/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/abi/lib.esm/abi-coder.js +0 -96
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/abstract-coder.js +0 -148
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/address.js +0 -26
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/anonymous.js +0 -20
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/array.js +0 -210
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/boolean.js +0 -18
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/bytes.js +0 -30
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/fixed-bytes.js +0 -26
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/null.js +0 -22
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/number.js +0 -43
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/string.js +0 -19
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/tuple.js +0 -58
- package/bundle/node_modules/@ethersproject/abi/lib.esm/fragments.js +0 -854
- package/bundle/node_modules/@ethersproject/abi/lib.esm/interface.js +0 -609
- package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/index.js +0 -66
- package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/index.js +0 -302
- package/bundle/node_modules/@ethersproject/address/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/address/lib.esm/index.js +0 -110
- package/bundle/node_modules/@ethersproject/base64/lib.esm/base64.js +0 -20
- package/bundle/node_modules/@ethersproject/basex/lib.esm/index.js +0 -120
- package/bundle/node_modules/@ethersproject/bignumber/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/bignumber/lib.esm/bignumber.js +0 -287
- package/bundle/node_modules/@ethersproject/bytes/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/bytes/lib.esm/index.js +0 -402
- package/bundle/node_modules/@ethersproject/constants/lib.esm/addresses.js +0 -3
- package/bundle/node_modules/@ethersproject/constants/lib.esm/bignumbers.js +0 -8
- package/bundle/node_modules/@ethersproject/constants/lib.esm/hashes.js +0 -3
- package/bundle/node_modules/@ethersproject/contracts/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/contracts/lib.esm/index.js +0 -893
- package/bundle/node_modules/@ethersproject/hash/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js +0 -256
- package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js +0 -36
- package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js +0 -135
- package/bundle/node_modules/@ethersproject/hash/lib.esm/id.js +0 -8
- package/bundle/node_modules/@ethersproject/hash/lib.esm/namehash.js +0 -64
- package/bundle/node_modules/@ethersproject/hash/lib.esm/typed-data.js +0 -443
- package/bundle/node_modules/@ethersproject/keccak256/lib.esm/index.js +0 -8
- package/bundle/node_modules/@ethersproject/keccak256/node_modules/js-sha3/src/sha3.js +0 -660
- package/bundle/node_modules/@ethersproject/logger/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/logger/lib.esm/index.js +0 -352
- package/bundle/node_modules/@ethersproject/networks/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/networks/lib.esm/index.js +0 -248
- package/bundle/node_modules/@ethersproject/properties/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/properties/lib.esm/index.js +0 -127
- package/bundle/node_modules/@ethersproject/providers/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/providers/lib.esm/base-provider.js +0 -2007
- package/bundle/node_modules/@ethersproject/providers/lib.esm/formatter.js +0 -422
- package/bundle/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js +0 -674
- package/bundle/node_modules/@ethersproject/providers/lib.esm/web3-provider.js +0 -132
- package/bundle/node_modules/@ethersproject/rlp/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/rlp/lib.esm/index.js +0 -120
- package/bundle/node_modules/@ethersproject/sha2/lib.esm/sha2.js +0 -8
- package/bundle/node_modules/@ethersproject/signing-key/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/signing-key/lib.esm/elliptic.js +0 -2430
- package/bundle/node_modules/@ethersproject/signing-key/lib.esm/index.js +0 -76
- package/bundle/node_modules/@ethersproject/strings/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/strings/lib.esm/utf8.js +0 -219
- package/bundle/node_modules/@ethersproject/transactions/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/transactions/lib.esm/index.js +0 -279
- package/bundle/node_modules/@ethersproject/web/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/web/lib.esm/geturl.js +0 -69
- package/bundle/node_modules/@ethersproject/web/lib.esm/index.js +0 -404
- package/bundle/node_modules/bech32/index.js +0 -187
- package/bundle/node_modules/bn.js/lib/bn.js +0 -3361
- package/bundle/node_modules/hash.js/lib/hash/common.js +0 -97
- package/bundle/node_modules/hash.js/lib/hash/hmac.js +0 -51
- package/bundle/node_modules/hash.js/lib/hash/ripemd.js +0 -152
- package/bundle/node_modules/hash.js/lib/hash/sha/1.js +0 -81
- package/bundle/node_modules/hash.js/lib/hash/sha/224.js +0 -33
- package/bundle/node_modules/hash.js/lib/hash/sha/256.js +0 -113
- package/bundle/node_modules/hash.js/lib/hash/sha/384.js +0 -39
- package/bundle/node_modules/hash.js/lib/hash/sha/512.js +0 -336
- package/bundle/node_modules/hash.js/lib/hash/sha/common.js +0 -53
- package/bundle/node_modules/hash.js/lib/hash/sha.js +0 -14
- package/bundle/node_modules/hash.js/lib/hash/utils.js +0 -282
- package/bundle/node_modules/hash.js/lib/hash.js +0 -33
- package/bundle/node_modules/inherits/inherits_browser.js +0 -33
- package/bundle/node_modules/minimalistic-assert/index.js +0 -13
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 };
|
@@ -16,10 +16,9 @@ import { Logger } from '../../../utils/dist/logger/index.js';
|
|
16
16
|
import { RLN_ABI } from './abi.js';
|
17
17
|
import { DEFAULT_RATE_LIMIT, RATE_LIMIT_PARAMS } from './constants.js';
|
18
18
|
import { MembershipState } from './types.js';
|
19
|
-
import { Contract } from '
|
20
|
-
import { BigNumber } from '
|
19
|
+
import { Contract } from '@ethersproject/contracts';
|
20
|
+
import { BigNumber } from '@ethersproject/bignumber';
|
21
21
|
|
22
|
-
/* eslint-disable no-console */
|
23
22
|
const log = new Logger("waku:rln:contract:base");
|
24
23
|
class RLNBaseContract {
|
25
24
|
contract;
|
@@ -262,62 +261,61 @@ class RLNBaseContract {
|
|
262
261
|
}
|
263
262
|
async getMembershipInfo(idCommitmentBigInt) {
|
264
263
|
try {
|
265
|
-
console.log("idCommitmentBigInt", idCommitmentBigInt);
|
266
264
|
const membershipData = await this.contract.memberships(idCommitmentBigInt);
|
267
265
|
const currentBlock = await this.contract.provider.getBlockNumber();
|
268
|
-
|
266
|
+
const [depositAmount, activeDuration, gracePeriodStartTimestamp, gracePeriodDuration, rateLimit, index, holder, token] = membershipData;
|
267
|
+
const gracePeriodEnd = gracePeriodStartTimestamp.add(gracePeriodDuration);
|
269
268
|
let state;
|
270
|
-
|
271
|
-
console.log("gracePeriodEnd", gracePeriodEnd);
|
272
|
-
if (currentBlock < membershipData.gracePeriodStartTimestamp) {
|
269
|
+
if (currentBlock < gracePeriodStartTimestamp.toNumber()) {
|
273
270
|
state = MembershipState.Active;
|
274
271
|
}
|
275
|
-
else if (currentBlock < gracePeriodEnd) {
|
272
|
+
else if (currentBlock < gracePeriodEnd.toNumber()) {
|
276
273
|
state = MembershipState.GracePeriod;
|
277
274
|
}
|
278
275
|
else {
|
279
276
|
state = MembershipState.Expired;
|
280
277
|
}
|
281
|
-
console.log("state", state);
|
282
|
-
console.log("membershipData.index", membershipData.index);
|
283
|
-
console.log("membershipData.idCommitment", membershipData.idCommitment);
|
284
|
-
console.log("membershipData.rateLimit", membershipData.rateLimit);
|
285
|
-
console.log("membershipData.gracePeriodStartTimestamp", membershipData.gracePeriodStartTimestamp);
|
286
|
-
console.log("gracePeriodEnd", gracePeriodEnd);
|
287
278
|
return {
|
288
|
-
index
|
289
|
-
idCommitment:
|
290
|
-
rateLimit:
|
291
|
-
startBlock:
|
279
|
+
index,
|
280
|
+
idCommitment: idCommitmentBigInt.toString(),
|
281
|
+
rateLimit: Number(rateLimit),
|
282
|
+
startBlock: gracePeriodStartTimestamp.toNumber(),
|
292
283
|
endBlock: gracePeriodEnd.toNumber(),
|
293
284
|
state,
|
294
|
-
depositAmount
|
295
|
-
activeDuration
|
296
|
-
gracePeriodDuration
|
297
|
-
holder
|
298
|
-
token
|
285
|
+
depositAmount,
|
286
|
+
activeDuration,
|
287
|
+
gracePeriodDuration,
|
288
|
+
holder,
|
289
|
+
token
|
299
290
|
};
|
300
291
|
}
|
301
292
|
catch (error) {
|
293
|
+
log.error("Error in getMembershipInfo:", error);
|
302
294
|
return undefined;
|
303
295
|
}
|
304
296
|
}
|
305
|
-
async extendMembership(
|
306
|
-
|
297
|
+
async extendMembership(idCommitmentBigInt) {
|
298
|
+
const tx = await this.contract.extendMemberships([idCommitmentBigInt]);
|
299
|
+
await tx.wait();
|
300
|
+
return tx;
|
307
301
|
}
|
308
|
-
async eraseMembership(
|
309
|
-
|
302
|
+
async eraseMembership(idCommitmentBigInt, eraseFromMembershipSet = true) {
|
303
|
+
// eslint-disable-next-line no-console
|
304
|
+
console.log(Object.keys(this.contract));
|
305
|
+
const tx = await this.contract.eraseMemberships([idCommitmentBigInt], eraseFromMembershipSet);
|
306
|
+
await tx.wait();
|
307
|
+
return tx;
|
310
308
|
}
|
311
|
-
async registerMembership(
|
309
|
+
async registerMembership(idCommitmentBigInt, rateLimit = DEFAULT_RATE_LIMIT) {
|
312
310
|
if (rateLimit < RATE_LIMIT_PARAMS.MIN_RATE ||
|
313
311
|
rateLimit > RATE_LIMIT_PARAMS.MAX_RATE) {
|
314
312
|
throw new Error(`Rate limit must be between ${RATE_LIMIT_PARAMS.MIN_RATE} and ${RATE_LIMIT_PARAMS.MAX_RATE}`);
|
315
313
|
}
|
316
|
-
return this.contract.register(
|
314
|
+
return this.contract.register(idCommitmentBigInt, rateLimit, []);
|
317
315
|
}
|
318
|
-
async withdraw(token) {
|
316
|
+
async withdraw(token, from) {
|
319
317
|
try {
|
320
|
-
const tx = await this.contract.withdraw(token);
|
318
|
+
const tx = await this.contract.withdraw(token, from);
|
321
319
|
await tx.wait();
|
322
320
|
}
|
323
321
|
catch (error) {
|
@@ -328,7 +326,7 @@ class RLNBaseContract {
|
|
328
326
|
try {
|
329
327
|
log.info(`Registering identity with rate limit: ${this.rateLimit} messages/epoch`);
|
330
328
|
// Check if the ID commitment is already registered
|
331
|
-
const existingIndex = await this.getMemberIndex(identity.IDCommitmentBigInt
|
329
|
+
const existingIndex = await this.getMemberIndex(identity.IDCommitmentBigInt);
|
332
330
|
if (existingIndex) {
|
333
331
|
throw new Error(`ID commitment is already registered with index ${existingIndex}`);
|
334
332
|
}
|
@@ -466,9 +464,9 @@ class RLNBaseContract {
|
|
466
464
|
}
|
467
465
|
return this._membersExpiredFilter;
|
468
466
|
}
|
469
|
-
async getMemberIndex(
|
467
|
+
async getMemberIndex(idCommitmentBigInt) {
|
470
468
|
try {
|
471
|
-
const events = await this.contract.queryFilter(this.contract.filters.MembershipRegistered(
|
469
|
+
const events = await this.contract.queryFilter(this.contract.filters.MembershipRegistered(idCommitmentBigInt));
|
472
470
|
if (events.length === 0)
|
473
471
|
return undefined;
|
474
472
|
// Get the most recent registration event
|
@@ -6,7 +6,7 @@ import { Logger } from '../../../utils/dist/logger/index.js';
|
|
6
6
|
import { MerkleRootTracker } from '../root_tracker.js';
|
7
7
|
import { zeroPadLE } from '../utils/bytes.js';
|
8
8
|
import { RLNBaseContract } from './rln_base_contract.js';
|
9
|
-
import { BigNumber } from '
|
9
|
+
import { BigNumber } from '@ethersproject/bignumber';
|
10
10
|
|
11
11
|
const log = new Logger("waku:rln:contract");
|
12
12
|
class RLNContract extends RLNBaseContract {
|
@@ -45,8 +45,14 @@ function writeUIntLE(buf, value, offset, byteLength, noAssert) {
|
|
45
45
|
* @returns BigInt
|
46
46
|
*/
|
47
47
|
function buildBigIntFromUint8Array(array, byteOffset = 0) {
|
48
|
-
|
49
|
-
|
48
|
+
// Convert byte array to BigInt in big-endian format (to match nwaku)
|
49
|
+
let result = 0n;
|
50
|
+
// Process all 32 bytes (or the available bytes if less)
|
51
|
+
const length = Math.min(array.length - byteOffset, 32);
|
52
|
+
for (let i = 0; i < length; i++) {
|
53
|
+
result = (result << 8n) | BigInt(array[byteOffset + i]);
|
54
|
+
}
|
55
|
+
return result;
|
50
56
|
}
|
51
57
|
/**
|
52
58
|
* Fills with zeros to set length
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import
|
1
|
+
import * as providers from '@ethersproject/providers';
|
2
2
|
|
3
3
|
const extractMetaMaskSigner = async () => {
|
4
4
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
@@ -7,7 +7,7 @@ const extractMetaMaskSigner = async () => {
|
|
7
7
|
throw Error("Missing or invalid Ethereum provider. Please install a Web3 wallet such as MetaMask.");
|
8
8
|
}
|
9
9
|
await ethereum.request({ method: "eth_requestAccounts" });
|
10
|
-
const provider = new Web3Provider(ethereum, "any");
|
10
|
+
const provider = new providers.Web3Provider(ethereum, "any");
|
11
11
|
return provider.getSigner();
|
12
12
|
};
|
13
13
|
|