@waku/rln 0.1.5-1e590d7.0 → 0.1.5-3038c48.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/__node-resolve_empty.js +6 -0
- package/bundle/_virtual/_node-resolve_empty.js +3 -0
- package/bundle/_virtual/bn.js +3 -0
- package/bundle/_virtual/common.js +3 -0
- package/bundle/_virtual/common2.js +3 -0
- package/bundle/_virtual/hash.js +3 -0
- package/bundle/_virtual/inherits_browser.js +3 -0
- package/bundle/_virtual/ripemd.js +3 -0
- package/bundle/_virtual/sha.js +3 -0
- package/bundle/_virtual/sha3.js +3 -0
- package/bundle/_virtual/utils3.js +3 -0
- package/bundle/index.js +1 -2
- package/bundle/node_modules/@ethersproject/abi/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/abi-coder.js +96 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/abstract-coder.js +148 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/address.js +26 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/anonymous.js +20 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/array.js +210 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/boolean.js +18 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/bytes.js +30 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/fixed-bytes.js +26 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/null.js +22 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/number.js +43 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/string.js +19 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/tuple.js +58 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/fragments.js +854 -0
- package/bundle/node_modules/@ethersproject/abi/lib.esm/interface.js +609 -0
- package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/index.js +66 -0
- package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/index.js +302 -0
- package/bundle/node_modules/@ethersproject/address/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/address/lib.esm/index.js +110 -0
- package/bundle/node_modules/@ethersproject/base64/lib.esm/base64.js +20 -0
- package/bundle/node_modules/@ethersproject/basex/lib.esm/index.js +120 -0
- package/bundle/node_modules/@ethersproject/bignumber/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/bignumber/lib.esm/bignumber.js +287 -0
- package/bundle/node_modules/@ethersproject/bytes/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/bytes/lib.esm/index.js +402 -0
- package/bundle/node_modules/@ethersproject/constants/lib.esm/addresses.js +3 -0
- package/bundle/node_modules/@ethersproject/constants/lib.esm/bignumbers.js +8 -0
- package/bundle/node_modules/@ethersproject/constants/lib.esm/hashes.js +3 -0
- package/bundle/node_modules/@ethersproject/contracts/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/contracts/lib.esm/index.js +893 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js +256 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js +36 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js +135 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/id.js +8 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/namehash.js +64 -0
- package/bundle/node_modules/@ethersproject/hash/lib.esm/typed-data.js +443 -0
- package/bundle/node_modules/@ethersproject/keccak256/lib.esm/index.js +8 -0
- package/bundle/node_modules/@ethersproject/keccak256/node_modules/js-sha3/src/sha3.js +660 -0
- package/bundle/node_modules/@ethersproject/logger/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/logger/lib.esm/index.js +352 -0
- package/bundle/node_modules/@ethersproject/networks/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/networks/lib.esm/index.js +248 -0
- package/bundle/node_modules/@ethersproject/properties/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/properties/lib.esm/index.js +127 -0
- package/bundle/node_modules/@ethersproject/providers/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/providers/lib.esm/base-provider.js +2007 -0
- package/bundle/node_modules/@ethersproject/providers/lib.esm/formatter.js +422 -0
- package/bundle/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js +674 -0
- package/bundle/node_modules/@ethersproject/providers/lib.esm/web3-provider.js +132 -0
- package/bundle/node_modules/@ethersproject/rlp/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/rlp/lib.esm/index.js +120 -0
- package/bundle/node_modules/@ethersproject/sha2/lib.esm/sha2.js +8 -0
- package/bundle/node_modules/@ethersproject/signing-key/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/signing-key/lib.esm/elliptic.js +2430 -0
- package/bundle/node_modules/@ethersproject/signing-key/lib.esm/index.js +76 -0
- package/bundle/node_modules/@ethersproject/strings/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/strings/lib.esm/utf8.js +219 -0
- package/bundle/node_modules/@ethersproject/transactions/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/transactions/lib.esm/index.js +279 -0
- package/bundle/node_modules/@ethersproject/web/lib.esm/_version.js +3 -0
- package/bundle/node_modules/@ethersproject/web/lib.esm/geturl.js +69 -0
- package/bundle/node_modules/@ethersproject/web/lib.esm/index.js +404 -0
- package/bundle/node_modules/bech32/index.js +187 -0
- package/bundle/node_modules/bn.js/lib/bn.js +3361 -0
- package/bundle/node_modules/hash.js/lib/hash/common.js +97 -0
- package/bundle/node_modules/hash.js/lib/hash/hmac.js +51 -0
- package/bundle/node_modules/hash.js/lib/hash/ripemd.js +152 -0
- package/bundle/node_modules/hash.js/lib/hash/sha/1.js +81 -0
- package/bundle/node_modules/hash.js/lib/hash/sha/224.js +33 -0
- package/bundle/node_modules/hash.js/lib/hash/sha/256.js +113 -0
- package/bundle/node_modules/hash.js/lib/hash/sha/384.js +39 -0
- package/bundle/node_modules/hash.js/lib/hash/sha/512.js +336 -0
- package/bundle/node_modules/hash.js/lib/hash/sha/common.js +53 -0
- package/bundle/node_modules/hash.js/lib/hash/sha.js +14 -0
- package/bundle/node_modules/hash.js/lib/hash/utils.js +282 -0
- package/bundle/node_modules/hash.js/lib/hash.js +33 -0
- package/bundle/node_modules/inherits/inherits_browser.js +33 -0
- package/bundle/node_modules/minimalistic-assert/index.js +13 -0
- package/bundle/packages/rln/dist/contract/constants.js +0 -1
- package/bundle/packages/rln/dist/contract/rln_base_contract.js +61 -66
- package/bundle/packages/rln/dist/contract/rln_contract.js +1 -1
- package/bundle/packages/rln/dist/utils/bytes.js +2 -8
- package/bundle/packages/rln/dist/utils/metamask.js +2 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/contract/index.d.ts +0 -1
- package/dist/contract/index.js +0 -1
- package/dist/contract/index.js.map +1 -1
- package/dist/contract/rln_base_contract.d.ts +11 -5
- package/dist/contract/rln_base_contract.js +59 -64
- package/dist/contract/rln_base_contract.js.map +1 -1
- package/dist/contract/types.d.ts +0 -5
- package/dist/contract/types.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.js +0 -1
- 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 +2 -8
- package/dist/utils/bytes.js.map +1 -1
- package/package.json +1 -1
- package/src/contract/index.ts +0 -1
- package/src/contract/rln_base_contract.ts +89 -96
- package/src/contract/types.ts +0 -5
- package/src/index.ts +1 -3
- package/src/keystore/keystore.ts +2 -4
- package/src/keystore/types.ts +2 -2
- package/src/utils/bytes.ts +2 -10
@@ -0,0 +1,33 @@
|
|
1
|
+
import { __module as inherits_browser } from '../../_virtual/inherits_browser.js';
|
2
|
+
|
3
|
+
if (typeof Object.create === 'function') {
|
4
|
+
// implementation from standard node.js 'util' module
|
5
|
+
inherits_browser.exports = function inherits(ctor, superCtor) {
|
6
|
+
if (superCtor) {
|
7
|
+
ctor.super_ = superCtor;
|
8
|
+
ctor.prototype = Object.create(superCtor.prototype, {
|
9
|
+
constructor: {
|
10
|
+
value: ctor,
|
11
|
+
enumerable: false,
|
12
|
+
writable: true,
|
13
|
+
configurable: true
|
14
|
+
}
|
15
|
+
});
|
16
|
+
}
|
17
|
+
};
|
18
|
+
} else {
|
19
|
+
// old school shim for old browsers
|
20
|
+
inherits_browser.exports = function inherits(ctor, superCtor) {
|
21
|
+
if (superCtor) {
|
22
|
+
ctor.super_ = superCtor;
|
23
|
+
var TempCtor = function () {};
|
24
|
+
TempCtor.prototype = superCtor.prototype;
|
25
|
+
ctor.prototype = new TempCtor();
|
26
|
+
ctor.prototype.constructor = ctor;
|
27
|
+
}
|
28
|
+
};
|
29
|
+
}
|
30
|
+
|
31
|
+
var inherits_browserExports = inherits_browser.exports;
|
32
|
+
|
33
|
+
export { inherits_browserExports as i };
|
@@ -0,0 +1,13 @@
|
|
1
|
+
var minimalisticAssert = assert;
|
2
|
+
|
3
|
+
function assert(val, msg) {
|
4
|
+
if (!val)
|
5
|
+
throw new Error(msg || 'Assertion failed');
|
6
|
+
}
|
7
|
+
|
8
|
+
assert.equal = function assertEqual(l, r, msg) {
|
9
|
+
if (l != r)
|
10
|
+
throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));
|
11
|
+
};
|
12
|
+
|
13
|
+
export { minimalisticAssert as m };
|
@@ -16,8 +16,8 @@ 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 '../../../../node_modules/@ethersproject/contracts/lib.esm/index.js';
|
20
|
+
import { BigNumber } from '../../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js';
|
21
21
|
|
22
22
|
const log = new Logger("waku:rln:contract:base");
|
23
23
|
class RLNBaseContract {
|
@@ -33,22 +33,6 @@ class RLNBaseContract {
|
|
33
33
|
* Allows injecting a mocked contract for testing purposes.
|
34
34
|
*/
|
35
35
|
constructor(options) {
|
36
|
-
const { address, signer, rateLimit = DEFAULT_RATE_LIMIT, contract } = options;
|
37
|
-
log.info("Initializing RLNBaseContract", { address, rateLimit });
|
38
|
-
this.contract = contract || new Contract(address, RLN_ABI, signer);
|
39
|
-
this.rateLimit = rateLimit;
|
40
|
-
try {
|
41
|
-
log.info("Setting up event filters");
|
42
|
-
// Initialize event filters
|
43
|
-
this._membersFilter = this.contract.filters.MembershipRegistered();
|
44
|
-
this._membershipErasedFilter = this.contract.filters.MembershipErased();
|
45
|
-
this._membersExpiredFilter = this.contract.filters.MembershipExpired();
|
46
|
-
log.info("Event filters initialized successfully");
|
47
|
-
}
|
48
|
-
catch (error) {
|
49
|
-
log.error("Failed to initialize event filters", { error });
|
50
|
-
throw new Error("Failed to initialize event filters: " + error.message);
|
51
|
-
}
|
52
36
|
// Initialize members and subscriptions
|
53
37
|
this.fetchMembers()
|
54
38
|
.then(() => {
|
@@ -57,10 +41,14 @@ class RLNBaseContract {
|
|
57
41
|
.catch((error) => {
|
58
42
|
log.error("Failed to initialize members", { error });
|
59
43
|
});
|
60
|
-
|
61
|
-
this.validateRateLimit(rateLimit)
|
62
|
-
|
63
|
-
|
44
|
+
const { address, signer, rateLimit = DEFAULT_RATE_LIMIT, contract } = options;
|
45
|
+
this.validateRateLimit(rateLimit);
|
46
|
+
this.contract = contract || new Contract(address, RLN_ABI, signer);
|
47
|
+
this.rateLimit = rateLimit;
|
48
|
+
// Initialize event filters
|
49
|
+
this._membersFilter = this.contract.filters.MembershipRegistered();
|
50
|
+
this._membershipErasedFilter = this.contract.filters.MembershipErased();
|
51
|
+
this._membersExpiredFilter = this.contract.filters.MembershipExpired();
|
64
52
|
}
|
65
53
|
/**
|
66
54
|
* Gets the current rate limit for this contract instance
|
@@ -128,7 +116,7 @@ class RLNBaseContract {
|
|
128
116
|
* @param newRateLimit The new rate limit to use
|
129
117
|
*/
|
130
118
|
async setRateLimit(newRateLimit) {
|
131
|
-
|
119
|
+
this.validateRateLimit(newRateLimit);
|
132
120
|
this.rateLimit = newRateLimit;
|
133
121
|
}
|
134
122
|
get members() {
|
@@ -259,63 +247,75 @@ class RLNBaseContract {
|
|
259
247
|
this.processEvents([event]);
|
260
248
|
});
|
261
249
|
}
|
262
|
-
|
250
|
+
/**
|
251
|
+
* Helper method to get remaining messages in current epoch
|
252
|
+
* @param membershipId The ID of the membership to check
|
253
|
+
* @returns number of remaining messages allowed in current epoch
|
254
|
+
*/
|
255
|
+
async getRemainingMessages(membershipId) {
|
263
256
|
try {
|
264
|
-
const
|
257
|
+
const [startTime, , rateLimit] = await this.contract.getMembershipInfo(membershipId);
|
258
|
+
// Calculate current epoch
|
259
|
+
const currentTime = Math.floor(Date.now() / 1000);
|
260
|
+
const epochsPassed = Math.floor((currentTime - startTime) / RATE_LIMIT_PARAMS.EPOCH_LENGTH);
|
261
|
+
const currentEpochStart = startTime + epochsPassed * RATE_LIMIT_PARAMS.EPOCH_LENGTH;
|
262
|
+
// Get message count in current epoch using contract's function
|
263
|
+
const messageCount = await this.contract.getMessageCount(membershipId, currentEpochStart);
|
264
|
+
return Math.max(0, BigNumber.from(rateLimit)
|
265
|
+
.sub(BigNumber.from(messageCount))
|
266
|
+
.toNumber());
|
267
|
+
}
|
268
|
+
catch (error) {
|
269
|
+
log.error(`Error getting remaining messages: ${error.message}`);
|
270
|
+
return 0; // Fail safe: assume no messages remaining on error
|
271
|
+
}
|
272
|
+
}
|
273
|
+
async getMembershipInfo(idCommitment) {
|
274
|
+
try {
|
275
|
+
const [startBlock, endBlock, rateLimit] = await this.contract.getMembershipInfo(idCommitment);
|
265
276
|
const currentBlock = await this.contract.provider.getBlockNumber();
|
266
|
-
const [depositAmount, activeDuration, gracePeriodStartTimestamp, gracePeriodDuration, rateLimit, index, holder, token] = membershipData;
|
267
|
-
const gracePeriodEnd = gracePeriodStartTimestamp.add(gracePeriodDuration);
|
268
277
|
let state;
|
269
|
-
if (currentBlock <
|
278
|
+
if (currentBlock < startBlock) {
|
270
279
|
state = MembershipState.Active;
|
271
280
|
}
|
272
|
-
else if (currentBlock <
|
281
|
+
else if (currentBlock < endBlock) {
|
273
282
|
state = MembershipState.GracePeriod;
|
274
283
|
}
|
275
284
|
else {
|
276
285
|
state = MembershipState.Expired;
|
277
286
|
}
|
287
|
+
const index = await this.getMemberIndex(idCommitment);
|
288
|
+
if (!index)
|
289
|
+
return undefined;
|
278
290
|
return {
|
279
291
|
index,
|
280
|
-
idCommitment
|
281
|
-
rateLimit:
|
282
|
-
startBlock:
|
283
|
-
endBlock:
|
284
|
-
state
|
285
|
-
depositAmount,
|
286
|
-
activeDuration,
|
287
|
-
gracePeriodDuration,
|
288
|
-
holder,
|
289
|
-
token
|
292
|
+
idCommitment,
|
293
|
+
rateLimit: rateLimit.toNumber(),
|
294
|
+
startBlock: startBlock.toNumber(),
|
295
|
+
endBlock: endBlock.toNumber(),
|
296
|
+
state
|
290
297
|
};
|
291
298
|
}
|
292
299
|
catch (error) {
|
293
|
-
log.error("Error in getMembershipInfo:", error);
|
294
300
|
return undefined;
|
295
301
|
}
|
296
302
|
}
|
297
|
-
async extendMembership(
|
298
|
-
|
299
|
-
await tx.wait();
|
300
|
-
return tx;
|
303
|
+
async extendMembership(idCommitment) {
|
304
|
+
return this.contract.extendMemberships([idCommitment]);
|
301
305
|
}
|
302
|
-
async eraseMembership(
|
303
|
-
|
304
|
-
const gasLimit = estimatedGas.add(10000);
|
305
|
-
const tx = await this.contract["eraseMemberships(uint256[],bool)"]([idCommitmentBigInt], eraseFromMembershipSet, { gasLimit });
|
306
|
-
await tx.wait();
|
307
|
-
return tx;
|
306
|
+
async eraseMembership(idCommitment, eraseFromMembershipSet = true) {
|
307
|
+
return this.contract.eraseMemberships([idCommitment], eraseFromMembershipSet);
|
308
308
|
}
|
309
|
-
async registerMembership(
|
309
|
+
async registerMembership(idCommitment, rateLimit = DEFAULT_RATE_LIMIT) {
|
310
310
|
if (rateLimit < RATE_LIMIT_PARAMS.MIN_RATE ||
|
311
311
|
rateLimit > RATE_LIMIT_PARAMS.MAX_RATE) {
|
312
312
|
throw new Error(`Rate limit must be between ${RATE_LIMIT_PARAMS.MIN_RATE} and ${RATE_LIMIT_PARAMS.MAX_RATE}`);
|
313
313
|
}
|
314
|
-
return this.contract.register(
|
314
|
+
return this.contract.register(idCommitment, rateLimit, []);
|
315
315
|
}
|
316
|
-
async withdraw(token,
|
316
|
+
async withdraw(token, holder) {
|
317
317
|
try {
|
318
|
-
const tx = await this.contract.withdraw(token, from);
|
318
|
+
const tx = await this.contract.withdraw(token, { from: holder });
|
319
319
|
await tx.wait();
|
320
320
|
}
|
321
321
|
catch (error) {
|
@@ -326,7 +326,7 @@ class RLNBaseContract {
|
|
326
326
|
try {
|
327
327
|
log.info(`Registering identity with rate limit: ${this.rateLimit} messages/epoch`);
|
328
328
|
// Check if the ID commitment is already registered
|
329
|
-
const existingIndex = await this.getMemberIndex(identity.IDCommitmentBigInt);
|
329
|
+
const existingIndex = await this.getMemberIndex(identity.IDCommitmentBigInt.toString());
|
330
330
|
if (existingIndex) {
|
331
331
|
throw new Error(`ID commitment is already registered with index ${existingIndex}`);
|
332
332
|
}
|
@@ -435,15 +435,10 @@ class RLNBaseContract {
|
|
435
435
|
* Validates that the rate limit is within the allowed range
|
436
436
|
* @throws Error if the rate limit is outside the allowed range
|
437
437
|
*/
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
]);
|
443
|
-
const minRateNum = BigNumber.from(minRate).toNumber();
|
444
|
-
const maxRateNum = BigNumber.from(maxRate).toNumber();
|
445
|
-
if (rateLimit < minRateNum || rateLimit > maxRateNum) {
|
446
|
-
throw new Error(`Rate limit must be between ${minRateNum} and ${maxRateNum} messages per epoch`);
|
438
|
+
validateRateLimit(rateLimit) {
|
439
|
+
if (rateLimit < RATE_LIMIT_PARAMS.MIN_RATE ||
|
440
|
+
rateLimit > RATE_LIMIT_PARAMS.MAX_RATE) {
|
441
|
+
throw new Error(`Rate limit must be between ${RATE_LIMIT_PARAMS.MIN_RATE} and ${RATE_LIMIT_PARAMS.MAX_RATE} messages per epoch`);
|
447
442
|
}
|
448
443
|
}
|
449
444
|
get membersFilter() {
|
@@ -464,9 +459,9 @@ class RLNBaseContract {
|
|
464
459
|
}
|
465
460
|
return this._membersExpiredFilter;
|
466
461
|
}
|
467
|
-
async getMemberIndex(
|
462
|
+
async getMemberIndex(idCommitment) {
|
468
463
|
try {
|
469
|
-
const events = await this.contract.queryFilter(this.contract.filters.MembershipRegistered(
|
464
|
+
const events = await this.contract.queryFilter(this.contract.filters.MembershipRegistered(idCommitment));
|
470
465
|
if (events.length === 0)
|
471
466
|
return undefined;
|
472
467
|
// 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 '../../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js';
|
10
10
|
|
11
11
|
const log = new Logger("waku:rln:contract");
|
12
12
|
class RLNContract extends RLNBaseContract {
|
@@ -45,14 +45,8 @@ function writeUIntLE(buf, value, offset, byteLength, noAssert) {
|
|
45
45
|
* @returns BigInt
|
46
46
|
*/
|
47
47
|
function buildBigIntFromUint8Array(array, byteOffset = 0) {
|
48
|
-
|
49
|
-
|
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;
|
48
|
+
const dataView = new DataView(array.buffer);
|
49
|
+
return dataView.getBigUint64(byteOffset, true);
|
56
50
|
}
|
57
51
|
/**
|
58
52
|
* Fills with zeros to set length
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import
|
1
|
+
import { Web3Provider } from '../../../../node_modules/@ethersproject/providers/lib.esm/web3-provider.js';
|
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
|
10
|
+
const provider = new Web3Provider(ethereum, "any");
|
11
11
|
return provider.getSigner();
|
12
12
|
};
|
13
13
|
|