@snapshot-labs/snapshot.js 0.12.1 → 0.12.3
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/dist/snapshot.cjs.js +32 -11
- package/dist/snapshot.esm.js +32 -11
- package/dist/snapshot.min.js +15 -15
- package/package.json +2 -1
- package/src/utils.spec.js +17 -1
- package/src/utils.ts +17 -2
- package/src/verify/starknet.spec.ts +57 -23
- package/src/verify/starknet.ts +26 -13
package/dist/snapshot.cjs.js
CHANGED
|
@@ -14,6 +14,7 @@ var set = require('lodash.set');
|
|
|
14
14
|
var providers$1 = require('@ethersproject/providers');
|
|
15
15
|
var bytes = require('@ethersproject/bytes');
|
|
16
16
|
var starknet$1 = require('starknet');
|
|
17
|
+
var bignumber = require('@ethersproject/bignumber');
|
|
17
18
|
var wallet = require('@ethersproject/wallet');
|
|
18
19
|
|
|
19
20
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -1405,11 +1406,11 @@ const RPC_URLS = {
|
|
|
1405
1406
|
};
|
|
1406
1407
|
const ABI = [
|
|
1407
1408
|
{
|
|
1408
|
-
name: 'argent::account::
|
|
1409
|
+
name: 'argent::common::account::IAccount',
|
|
1409
1410
|
type: 'interface',
|
|
1410
1411
|
items: [
|
|
1411
1412
|
{
|
|
1412
|
-
name: '
|
|
1413
|
+
name: 'is_valid_signature',
|
|
1413
1414
|
type: 'function',
|
|
1414
1415
|
inputs: [
|
|
1415
1416
|
{
|
|
@@ -1417,7 +1418,7 @@ const ABI = [
|
|
|
1417
1418
|
type: 'core::felt252'
|
|
1418
1419
|
},
|
|
1419
1420
|
{
|
|
1420
|
-
name: '
|
|
1421
|
+
name: 'signature',
|
|
1421
1422
|
type: 'core::array::Array::<core::felt252>'
|
|
1422
1423
|
}
|
|
1423
1424
|
],
|
|
@@ -1448,12 +1449,20 @@ function getHash(data, address) {
|
|
|
1448
1449
|
}
|
|
1449
1450
|
function verify(address_1, sig_1, data_1) {
|
|
1450
1451
|
return __awaiter(this, arguments, void 0, function* (address, sig, data, network = 'SN_MAIN', options = {}) {
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
sig
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1452
|
+
try {
|
|
1453
|
+
const contractAccount = new starknet$1.Contract(ABI, address, getProvider$1(network, options));
|
|
1454
|
+
if (sig.length < 2) {
|
|
1455
|
+
throw new Error('Invalid signature format');
|
|
1456
|
+
}
|
|
1457
|
+
const result = yield contractAccount.is_valid_signature(getHash(data, address), sig.slice(-2));
|
|
1458
|
+
return bignumber.BigNumber.from(result).eq(bignumber.BigNumber.from('370462705988'));
|
|
1459
|
+
}
|
|
1460
|
+
catch (e) {
|
|
1461
|
+
if (e.message.includes('Contract not found')) {
|
|
1462
|
+
throw new Error('Contract not deployed');
|
|
1463
|
+
}
|
|
1464
|
+
throw e;
|
|
1465
|
+
}
|
|
1457
1466
|
});
|
|
1458
1467
|
}
|
|
1459
1468
|
|
|
@@ -4044,7 +4053,13 @@ function getEnsTextRecord(ens_1, record_1) {
|
|
|
4044
4053
|
var _a, _b;
|
|
4045
4054
|
const { ensResolvers = ((_a = networks[network]) === null || _a === void 0 ? void 0 : _a.ensResolvers) ||
|
|
4046
4055
|
networks['1'].ensResolvers, broviderUrl } = options, multicallOptions = __rest(options, ["ensResolvers", "broviderUrl"]);
|
|
4047
|
-
|
|
4056
|
+
let ensHash;
|
|
4057
|
+
try {
|
|
4058
|
+
ensHash = hash.namehash(hash.ensNormalize(ens));
|
|
4059
|
+
}
|
|
4060
|
+
catch (e) {
|
|
4061
|
+
return null;
|
|
4062
|
+
}
|
|
4048
4063
|
const provider = getProvider(network, { broviderUrl });
|
|
4049
4064
|
const calls = [
|
|
4050
4065
|
[ENS_REGISTRY, 'resolver', [ensHash]], // Query for resolver from registry
|
|
@@ -4074,8 +4089,14 @@ function getEnsOwner(ens_1) {
|
|
|
4074
4089
|
return __awaiter(this, arguments, void 0, function* (ens, network = '1', options = {}) {
|
|
4075
4090
|
const provider = getProvider(network, options);
|
|
4076
4091
|
const ensRegistry = new contracts.Contract(ENS_REGISTRY, ['function owner(bytes32) view returns (address)'], provider);
|
|
4092
|
+
let ensHash;
|
|
4093
|
+
try {
|
|
4094
|
+
ensHash = hash.namehash(hash.ensNormalize(ens));
|
|
4095
|
+
}
|
|
4096
|
+
catch (e) {
|
|
4097
|
+
return null;
|
|
4098
|
+
}
|
|
4077
4099
|
const ensNameWrapper = options.ensNameWrapper || networks[network].ensNameWrapper;
|
|
4078
|
-
const ensHash = hash.namehash(hash.ensNormalize(ens));
|
|
4079
4100
|
let owner = yield ensRegistry.owner(ensHash);
|
|
4080
4101
|
// If owner is the ENSNameWrapper contract, resolve the owner of the name
|
|
4081
4102
|
if (owner === ensNameWrapper) {
|
package/dist/snapshot.esm.js
CHANGED
|
@@ -12,6 +12,7 @@ import set from 'lodash.set';
|
|
|
12
12
|
import { StaticJsonRpcProvider } from '@ethersproject/providers';
|
|
13
13
|
import { hexlify, arrayify } from '@ethersproject/bytes';
|
|
14
14
|
import { Contract, RpcProvider, typedData, validateAndParseAddress } from 'starknet';
|
|
15
|
+
import { BigNumber } from '@ethersproject/bignumber';
|
|
15
16
|
import { verifyTypedData } from '@ethersproject/wallet';
|
|
16
17
|
|
|
17
18
|
/*! *****************************************************************************
|
|
@@ -1395,11 +1396,11 @@ const RPC_URLS = {
|
|
|
1395
1396
|
};
|
|
1396
1397
|
const ABI = [
|
|
1397
1398
|
{
|
|
1398
|
-
name: 'argent::account::
|
|
1399
|
+
name: 'argent::common::account::IAccount',
|
|
1399
1400
|
type: 'interface',
|
|
1400
1401
|
items: [
|
|
1401
1402
|
{
|
|
1402
|
-
name: '
|
|
1403
|
+
name: 'is_valid_signature',
|
|
1403
1404
|
type: 'function',
|
|
1404
1405
|
inputs: [
|
|
1405
1406
|
{
|
|
@@ -1407,7 +1408,7 @@ const ABI = [
|
|
|
1407
1408
|
type: 'core::felt252'
|
|
1408
1409
|
},
|
|
1409
1410
|
{
|
|
1410
|
-
name: '
|
|
1411
|
+
name: 'signature',
|
|
1411
1412
|
type: 'core::array::Array::<core::felt252>'
|
|
1412
1413
|
}
|
|
1413
1414
|
],
|
|
@@ -1438,12 +1439,20 @@ function getHash(data, address) {
|
|
|
1438
1439
|
}
|
|
1439
1440
|
function verify(address_1, sig_1, data_1) {
|
|
1440
1441
|
return __awaiter(this, arguments, void 0, function* (address, sig, data, network = 'SN_MAIN', options = {}) {
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
sig
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1442
|
+
try {
|
|
1443
|
+
const contractAccount = new Contract(ABI, address, getProvider$1(network, options));
|
|
1444
|
+
if (sig.length < 2) {
|
|
1445
|
+
throw new Error('Invalid signature format');
|
|
1446
|
+
}
|
|
1447
|
+
const result = yield contractAccount.is_valid_signature(getHash(data, address), sig.slice(-2));
|
|
1448
|
+
return BigNumber.from(result).eq(BigNumber.from('370462705988'));
|
|
1449
|
+
}
|
|
1450
|
+
catch (e) {
|
|
1451
|
+
if (e.message.includes('Contract not found')) {
|
|
1452
|
+
throw new Error('Contract not deployed');
|
|
1453
|
+
}
|
|
1454
|
+
throw e;
|
|
1455
|
+
}
|
|
1447
1456
|
});
|
|
1448
1457
|
}
|
|
1449
1458
|
|
|
@@ -4034,7 +4043,13 @@ function getEnsTextRecord(ens_1, record_1) {
|
|
|
4034
4043
|
var _a, _b;
|
|
4035
4044
|
const { ensResolvers = ((_a = networks[network]) === null || _a === void 0 ? void 0 : _a.ensResolvers) ||
|
|
4036
4045
|
networks['1'].ensResolvers, broviderUrl } = options, multicallOptions = __rest(options, ["ensResolvers", "broviderUrl"]);
|
|
4037
|
-
|
|
4046
|
+
let ensHash;
|
|
4047
|
+
try {
|
|
4048
|
+
ensHash = namehash(ensNormalize(ens));
|
|
4049
|
+
}
|
|
4050
|
+
catch (e) {
|
|
4051
|
+
return null;
|
|
4052
|
+
}
|
|
4038
4053
|
const provider = getProvider(network, { broviderUrl });
|
|
4039
4054
|
const calls = [
|
|
4040
4055
|
[ENS_REGISTRY, 'resolver', [ensHash]], // Query for resolver from registry
|
|
@@ -4064,8 +4079,14 @@ function getEnsOwner(ens_1) {
|
|
|
4064
4079
|
return __awaiter(this, arguments, void 0, function* (ens, network = '1', options = {}) {
|
|
4065
4080
|
const provider = getProvider(network, options);
|
|
4066
4081
|
const ensRegistry = new Contract$1(ENS_REGISTRY, ['function owner(bytes32) view returns (address)'], provider);
|
|
4082
|
+
let ensHash;
|
|
4083
|
+
try {
|
|
4084
|
+
ensHash = namehash(ensNormalize(ens));
|
|
4085
|
+
}
|
|
4086
|
+
catch (e) {
|
|
4087
|
+
return null;
|
|
4088
|
+
}
|
|
4067
4089
|
const ensNameWrapper = options.ensNameWrapper || networks[network].ensNameWrapper;
|
|
4068
|
-
const ensHash = namehash(ensNormalize(ens));
|
|
4069
4090
|
let owner = yield ensRegistry.owner(ensHash);
|
|
4070
4091
|
// If owner is the ENSNameWrapper contract, resolve the owner of the name
|
|
4071
4092
|
if (owner === ensNameWrapper) {
|