essential-eth 0.9.1-next.1 → 0.9.2-beta.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/dist/essential-eth.esm.mjs +2 -0
- package/dist/essential-eth.esm.mjs.map +1 -0
- package/dist/essential-eth.js +2 -0
- package/dist/essential-eth.js.map +1 -0
- package/dist/essential-eth.modern.mjs +2 -0
- package/dist/essential-eth.modern.mjs.map +1 -0
- package/dist/essential-eth.umd.js +2 -0
- package/dist/essential-eth.umd.js.map +1 -0
- package/dist/logger/package-version.d.ts +1 -0
- package/package.json +11 -13
- package/readme.md +1 -1
- package/dist/cjs/classes/Contract.js +0 -138
- package/dist/cjs/classes/test/Contract/crv-abi.js +0 -488
- package/dist/cjs/classes/test/Contract/ens-abi.js +0 -453
- package/dist/cjs/classes/test/Contract/fei-abi.js +0 -526
- package/dist/cjs/classes/test/Contract/foo-abi.js +0 -42
- package/dist/cjs/classes/test/Contract/uniswap-abi.js +0 -121
- package/dist/cjs/classes/utils/clean-block.js +0 -160
- package/dist/cjs/classes/utils/clean-log.js +0 -37
- package/dist/cjs/classes/utils/clean-transaction-receipt.js +0 -51
- package/dist/cjs/classes/utils/clean-transaction.js +0 -52
- package/dist/cjs/classes/utils/encode-decode-transaction.js +0 -177
- package/dist/cjs/classes/utils/fetchers.js +0 -94
- package/dist/cjs/classes/utils/hex-to-decimal.js +0 -24
- package/dist/cjs/classes/utils/prepare-transaction.js +0 -45
- package/dist/cjs/index.js +0 -56
- package/dist/cjs/index.umd.js +0 -2
- package/dist/cjs/index.umd.js.map +0 -1
- package/dist/cjs/logger/logger.js +0 -36
- package/dist/cjs/logger/package-version.d.ts +0 -1
- package/dist/cjs/logger/package-version.js +0 -5
- package/dist/cjs/providers/AlchemyProvider.js +0 -11
- package/dist/cjs/providers/BaseProvider.js +0 -549
- package/dist/cjs/providers/FallthroughProvider.js +0 -73
- package/dist/cjs/providers/JsonRpcProvider.js +0 -46
- package/dist/cjs/providers/test/json-rpc-provider/get-logs/mocks.js +0 -152
- package/dist/cjs/providers/test/mock-of.js +0 -12
- package/dist/cjs/providers/test/rpc-urls.js +0 -25
- package/dist/cjs/providers/utils/chains-info.js +0 -71
- package/dist/cjs/shared/tiny-big/helpers.js +0 -97
- package/dist/cjs/shared/tiny-big/tiny-big.js +0 -101
- package/dist/cjs/shared/validate-type.js +0 -9
- package/dist/cjs/types/Block.types.js +0 -2
- package/dist/cjs/types/Contract.types.js +0 -2
- package/dist/cjs/types/FeeData.types.js +0 -2
- package/dist/cjs/types/Filter.types.js +0 -2
- package/dist/cjs/types/Network.types.js +0 -2
- package/dist/cjs/types/Transaction.types.js +0 -2
- package/dist/cjs/utils/bytes.js +0 -711
- package/dist/cjs/utils/compute-address.js +0 -34
- package/dist/cjs/utils/compute-public-key.js +0 -26
- package/dist/cjs/utils/ether-to-gwei.js +0 -35
- package/dist/cjs/utils/ether-to-wei.js +0 -35
- package/dist/cjs/utils/gwei-to-ether.js +0 -35
- package/dist/cjs/utils/hash-message.js +0 -30
- package/dist/cjs/utils/is-address.js +0 -39
- package/dist/cjs/utils/keccak256.js +0 -31
- package/dist/cjs/utils/solidity-keccak256.js +0 -138
- package/dist/cjs/utils/split-signature.js +0 -163
- package/dist/cjs/utils/to-checksum-address.js +0 -46
- package/dist/cjs/utils/to-utf8-bytes.js +0 -21
- package/dist/cjs/utils/wei-to-ether.js +0 -45
- package/dist/esm/classes/Contract.d.ts +0 -11
- package/dist/esm/classes/Contract.js +0 -61
- package/dist/esm/classes/test/Contract/crv-abi.d.ts +0 -2
- package/dist/esm/classes/test/Contract/crv-abi.js +0 -470
- package/dist/esm/classes/test/Contract/ens-abi.d.ts +0 -2
- package/dist/esm/classes/test/Contract/ens-abi.js +0 -435
- package/dist/esm/classes/test/Contract/fei-abi.d.ts +0 -2
- package/dist/esm/classes/test/Contract/fei-abi.js +0 -521
- package/dist/esm/classes/test/Contract/foo-abi.d.ts +0 -2
- package/dist/esm/classes/test/Contract/foo-abi.js +0 -33
- package/dist/esm/classes/test/Contract/uniswap-abi.d.ts +0 -2
- package/dist/esm/classes/test/Contract/uniswap-abi.js +0 -116
- package/dist/esm/classes/utils/clean-block.d.ts +0 -2
- package/dist/esm/classes/utils/clean-block.js +0 -35
- package/dist/esm/classes/utils/clean-log.d.ts +0 -2
- package/dist/esm/classes/utils/clean-log.js +0 -26
- package/dist/esm/classes/utils/clean-transaction-receipt.d.ts +0 -2
- package/dist/esm/classes/utils/clean-transaction-receipt.js +0 -35
- package/dist/esm/classes/utils/clean-transaction.d.ts +0 -2
- package/dist/esm/classes/utils/clean-transaction.js +0 -34
- package/dist/esm/classes/utils/encode-decode-transaction.d.ts +0 -4
- package/dist/esm/classes/utils/encode-decode-transaction.js +0 -134
- package/dist/esm/classes/utils/fetchers.d.ts +0 -15
- package/dist/esm/classes/utils/fetchers.js +0 -46
- package/dist/esm/classes/utils/hex-to-decimal.d.ts +0 -1
- package/dist/esm/classes/utils/hex-to-decimal.js +0 -3
- package/dist/esm/classes/utils/prepare-transaction.d.ts +0 -2
- package/dist/esm/classes/utils/prepare-transaction.js +0 -34
- package/dist/esm/index.d.ts +0 -25
- package/dist/esm/index.js +0 -20
- package/dist/esm/logger/logger.d.ts +0 -11
- package/dist/esm/logger/logger.js +0 -33
- package/dist/esm/logger/package-version.d.ts +0 -1
- package/dist/esm/logger/package-version.js +0 -1
- package/dist/esm/providers/AlchemyProvider.d.ts +0 -4
- package/dist/esm/providers/AlchemyProvider.js +0 -7
- package/dist/esm/providers/BaseProvider.d.ts +0 -26
- package/dist/esm/providers/BaseProvider.js +0 -172
- package/dist/esm/providers/FallthroughProvider.d.ts +0 -11
- package/dist/esm/providers/FallthroughProvider.js +0 -49
- package/dist/esm/providers/JsonRpcProvider.d.ts +0 -7
- package/dist/esm/providers/JsonRpcProvider.js +0 -15
- package/dist/esm/providers/test/json-rpc-provider/get-logs/mocks.d.ts +0 -14
- package/dist/esm/providers/test/json-rpc-provider/get-logs/mocks.js +0 -142
- package/dist/esm/providers/test/mock-of.d.ts +0 -2
- package/dist/esm/providers/test/mock-of.js +0 -1
- package/dist/esm/providers/test/rpc-urls.d.ts +0 -12
- package/dist/esm/providers/test/rpc-urls.js +0 -19
- package/dist/esm/providers/utils/chains-info.d.ts +0 -24
- package/dist/esm/providers/utils/chains-info.js +0 -67
- package/dist/esm/shared/tiny-big/helpers.d.ts +0 -1
- package/dist/esm/shared/tiny-big/helpers.js +0 -58
- package/dist/esm/shared/tiny-big/tiny-big.d.ts +0 -10
- package/dist/esm/shared/tiny-big/tiny-big.js +0 -45
- package/dist/esm/shared/validate-type.d.ts +0 -3
- package/dist/esm/shared/validate-type.js +0 -5
- package/dist/esm/types/Block.types.d.ts +0 -40
- package/dist/esm/types/Block.types.js +0 -1
- package/dist/esm/types/Contract.types.d.ts +0 -24
- package/dist/esm/types/Contract.types.js +0 -1
- package/dist/esm/types/FeeData.types.d.ts +0 -7
- package/dist/esm/types/FeeData.types.js +0 -1
- package/dist/esm/types/Filter.types.d.ts +0 -12
- package/dist/esm/types/Filter.types.js +0 -1
- package/dist/esm/types/Network.types.d.ts +0 -5
- package/dist/esm/types/Network.types.js +0 -1
- package/dist/esm/types/Transaction.types.d.ts +0 -113
- package/dist/esm/types/Transaction.types.js +0 -1
- package/dist/esm/utils/bytes.d.ts +0 -40
- package/dist/esm/utils/bytes.js +0 -245
- package/dist/esm/utils/compute-address.d.ts +0 -1
- package/dist/esm/utils/compute-address.js +0 -12
- package/dist/esm/utils/compute-public-key.d.ts +0 -2
- package/dist/esm/utils/compute-public-key.js +0 -6
- package/dist/esm/utils/ether-to-gwei.d.ts +0 -3
- package/dist/esm/utils/ether-to-gwei.js +0 -7
- package/dist/esm/utils/ether-to-wei.d.ts +0 -3
- package/dist/esm/utils/ether-to-wei.js +0 -7
- package/dist/esm/utils/gwei-to-ether.d.ts +0 -3
- package/dist/esm/utils/gwei-to-ether.js +0 -7
- package/dist/esm/utils/hash-message.d.ts +0 -2
- package/dist/esm/utils/hash-message.js +0 -14
- package/dist/esm/utils/is-address.d.ts +0 -1
- package/dist/esm/utils/is-address.js +0 -12
- package/dist/esm/utils/keccak256.d.ts +0 -2
- package/dist/esm/utils/keccak256.js +0 -13
- package/dist/esm/utils/solidity-keccak256.d.ts +0 -2
- package/dist/esm/utils/solidity-keccak256.js +0 -85
- package/dist/esm/utils/split-signature.d.ts +0 -2
- package/dist/esm/utils/split-signature.js +0 -126
- package/dist/esm/utils/to-checksum-address.d.ts +0 -1
- package/dist/esm/utils/to-checksum-address.js +0 -25
- package/dist/esm/utils/to-utf8-bytes.d.ts +0 -1
- package/dist/esm/utils/to-utf8-bytes.js +0 -3
- package/dist/esm/utils/wei-to-ether.d.ts +0 -3
- package/dist/esm/utils/wei-to-ether.js +0 -16
- /package/dist/{cjs/classes → classes}/Contract.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/test/Contract/crv-abi.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/test/Contract/ens-abi.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/test/Contract/fei-abi.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/test/Contract/foo-abi.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/test/Contract/uniswap-abi.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/utils/clean-block.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/utils/clean-log.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/utils/clean-transaction-receipt.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/utils/clean-transaction.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/utils/encode-decode-transaction.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/utils/fetchers.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/utils/hex-to-decimal.d.ts +0 -0
- /package/dist/{cjs/classes → classes}/utils/prepare-transaction.d.ts +0 -0
- /package/dist/{cjs/index.d.ts → index.d.ts} +0 -0
- /package/dist/{cjs/logger → logger}/logger.d.ts +0 -0
- /package/dist/{cjs/providers → providers}/AlchemyProvider.d.ts +0 -0
- /package/dist/{cjs/providers → providers}/BaseProvider.d.ts +0 -0
- /package/dist/{cjs/providers → providers}/FallthroughProvider.d.ts +0 -0
- /package/dist/{cjs/providers → providers}/JsonRpcProvider.d.ts +0 -0
- /package/dist/{cjs/providers → providers}/test/json-rpc-provider/get-logs/mocks.d.ts +0 -0
- /package/dist/{cjs/providers → providers}/test/mock-of.d.ts +0 -0
- /package/dist/{cjs/providers → providers}/test/rpc-urls.d.ts +0 -0
- /package/dist/{cjs/providers → providers}/utils/chains-info.d.ts +0 -0
- /package/dist/{cjs/shared → shared}/tiny-big/helpers.d.ts +0 -0
- /package/dist/{cjs/shared → shared}/tiny-big/tiny-big.d.ts +0 -0
- /package/dist/{cjs/shared → shared}/validate-type.d.ts +0 -0
- /package/dist/{cjs/types → types}/Block.types.d.ts +0 -0
- /package/dist/{cjs/types → types}/Contract.types.d.ts +0 -0
- /package/dist/{cjs/types → types}/FeeData.types.d.ts +0 -0
- /package/dist/{cjs/types → types}/Filter.types.d.ts +0 -0
- /package/dist/{cjs/types → types}/Network.types.d.ts +0 -0
- /package/dist/{cjs/types → types}/Transaction.types.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/bytes.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/compute-address.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/compute-public-key.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/ether-to-gwei.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/ether-to-wei.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/gwei-to-ether.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/hash-message.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/is-address.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/keccak256.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/solidity-keccak256.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/split-signature.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/to-checksum-address.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/to-utf8-bytes.d.ts +0 -0
- /package/dist/{cjs/utils → utils}/wei-to-ether.d.ts +0 -0
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { Buffer } from 'buffer';
|
|
2
|
-
import { hexFalse } from '../classes/utils/encode-decode-transaction';
|
|
3
|
-
import { logger } from '../logger/logger';
|
|
4
|
-
import { tinyBig } from '../shared/tiny-big/tiny-big';
|
|
5
|
-
import { arrayify, concat, hexlify, zeroPad } from './bytes';
|
|
6
|
-
import { keccak256 } from './keccak256';
|
|
7
|
-
const regexBytes = new RegExp('^bytes([0-9]+)$');
|
|
8
|
-
const regexNumber = new RegExp('^(u?int)([0-9]*)$');
|
|
9
|
-
const regexArray = new RegExp('^(.*)\\[([0-9]*)\\]$');
|
|
10
|
-
function _pack(type, value, isArray) {
|
|
11
|
-
switch (type) {
|
|
12
|
-
case 'address':
|
|
13
|
-
if (isArray) {
|
|
14
|
-
return zeroPad(value, 32);
|
|
15
|
-
}
|
|
16
|
-
return arrayify(value);
|
|
17
|
-
case 'string':
|
|
18
|
-
return Buffer.from(value);
|
|
19
|
-
case 'bytes':
|
|
20
|
-
return arrayify(value);
|
|
21
|
-
case 'bool':
|
|
22
|
-
value = value ? '0x01' : '0x00';
|
|
23
|
-
if (isArray) {
|
|
24
|
-
return zeroPad(value, 32);
|
|
25
|
-
}
|
|
26
|
-
return arrayify(value);
|
|
27
|
-
}
|
|
28
|
-
let match = type.match(regexNumber);
|
|
29
|
-
if (match) {
|
|
30
|
-
let size = parseInt(match[2] || '256');
|
|
31
|
-
if ((match[2] && String(size) !== match[2]) ||
|
|
32
|
-
size % 8 !== 0 ||
|
|
33
|
-
size === 0 ||
|
|
34
|
-
size > 256) {
|
|
35
|
-
logger.throwArgumentError('invalid number type', 'type', type);
|
|
36
|
-
}
|
|
37
|
-
if (isArray) {
|
|
38
|
-
size = 256;
|
|
39
|
-
}
|
|
40
|
-
value = tinyBig(value).toTwos(size).toNumber();
|
|
41
|
-
const hexValue = hexlify(value);
|
|
42
|
-
return zeroPad(hexValue, size / 8);
|
|
43
|
-
}
|
|
44
|
-
match = type.match(regexBytes);
|
|
45
|
-
if (match) {
|
|
46
|
-
const size = parseInt(match[1]);
|
|
47
|
-
if (String(size) !== match[1] || size === 0 || size > 32) {
|
|
48
|
-
logger.throwArgumentError('invalid bytes type', 'type', type);
|
|
49
|
-
}
|
|
50
|
-
if (arrayify(value).byteLength !== size) {
|
|
51
|
-
logger.throwArgumentError(`invalid value for ${type}`, 'value', value);
|
|
52
|
-
}
|
|
53
|
-
if (isArray) {
|
|
54
|
-
return arrayify((value + hexFalse).substring(0, 66));
|
|
55
|
-
}
|
|
56
|
-
return value;
|
|
57
|
-
}
|
|
58
|
-
match = type.match(regexArray);
|
|
59
|
-
if (match && Array.isArray(value)) {
|
|
60
|
-
const baseType = match[1];
|
|
61
|
-
const count = parseInt(match[2] || String(value.length));
|
|
62
|
-
if (count != value.length) {
|
|
63
|
-
logger.throwArgumentError(`invalid array length for ${type}`, 'value', value);
|
|
64
|
-
}
|
|
65
|
-
const result = [];
|
|
66
|
-
value.forEach(function (value) {
|
|
67
|
-
result.push(_pack(baseType, value, true));
|
|
68
|
-
});
|
|
69
|
-
return concat(result);
|
|
70
|
-
}
|
|
71
|
-
return logger.throwArgumentError('invalid type', 'type', type);
|
|
72
|
-
}
|
|
73
|
-
export function pack(types, values) {
|
|
74
|
-
if (types.length != values.length) {
|
|
75
|
-
logger.throwArgumentError('wrong number of values; expected ${ types.length }', 'values', values);
|
|
76
|
-
}
|
|
77
|
-
const tight = [];
|
|
78
|
-
types.forEach(function (type, index) {
|
|
79
|
-
tight.push(_pack(type, values[index]));
|
|
80
|
-
});
|
|
81
|
-
return hexlify(concat(tight));
|
|
82
|
-
}
|
|
83
|
-
export function solidityKeccak256(types, values) {
|
|
84
|
-
return keccak256(pack(types, values));
|
|
85
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { logger } from './../logger/logger';
|
|
2
|
-
import { arrayify, hexlify, hexZeroPad, isBytesLike, isHexString, zeroPad, } from './bytes';
|
|
3
|
-
export function splitSignature(signature) {
|
|
4
|
-
const result = {
|
|
5
|
-
r: '0x',
|
|
6
|
-
s: '0x',
|
|
7
|
-
_vs: '0x',
|
|
8
|
-
recoveryParam: 0,
|
|
9
|
-
v: 0,
|
|
10
|
-
yParityAndS: '0x',
|
|
11
|
-
compact: '0x',
|
|
12
|
-
};
|
|
13
|
-
if (isBytesLike(signature)) {
|
|
14
|
-
const bytes = arrayify(signature);
|
|
15
|
-
if (bytes.length === 64) {
|
|
16
|
-
result.v = 27 + (bytes[32] >> 7);
|
|
17
|
-
bytes[32] &= 0x7f;
|
|
18
|
-
result.r = hexlify(bytes.slice(0, 32));
|
|
19
|
-
result.s = hexlify(bytes.slice(32, 64));
|
|
20
|
-
}
|
|
21
|
-
else if (bytes.length === 65) {
|
|
22
|
-
result.r = hexlify(bytes.slice(0, 32));
|
|
23
|
-
result.s = hexlify(bytes.slice(32, 64));
|
|
24
|
-
result.v = bytes[64];
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
logger.throwArgumentError('invalid signature string', 'signature', signature);
|
|
28
|
-
}
|
|
29
|
-
if (result.v < 27) {
|
|
30
|
-
if (result.v === 0 || result.v === 1) {
|
|
31
|
-
result.v += 27;
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
logger.throwArgumentError('signature invalid v byte', 'signature', signature);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
result.recoveryParam = 1 - (result.v % 2);
|
|
38
|
-
if (result.recoveryParam) {
|
|
39
|
-
bytes[32] |= 0x80;
|
|
40
|
-
}
|
|
41
|
-
result._vs = hexlify(bytes.slice(32, 64));
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
result.r = signature.r;
|
|
45
|
-
result.s = signature.s;
|
|
46
|
-
result.v = signature.v;
|
|
47
|
-
result.recoveryParam = signature.recoveryParam;
|
|
48
|
-
result._vs = signature._vs;
|
|
49
|
-
if (result._vs != null) {
|
|
50
|
-
const vs_1 = zeroPad(arrayify(result._vs), 32);
|
|
51
|
-
result._vs = hexlify(vs_1);
|
|
52
|
-
const recoveryParam = vs_1[0] >= 128 ? 1 : 0;
|
|
53
|
-
if (result.recoveryParam == null) {
|
|
54
|
-
result.recoveryParam = recoveryParam;
|
|
55
|
-
}
|
|
56
|
-
else if (result.recoveryParam !== recoveryParam) {
|
|
57
|
-
logger.throwArgumentError('signature recoveryParam mismatch _vs', 'signature', signature);
|
|
58
|
-
}
|
|
59
|
-
vs_1[0] &= 0x7f;
|
|
60
|
-
const s = hexlify(vs_1);
|
|
61
|
-
if (result.s == null) {
|
|
62
|
-
result.s = s;
|
|
63
|
-
}
|
|
64
|
-
else if (result.s !== s) {
|
|
65
|
-
logger.throwArgumentError('signature v mismatch _vs', 'signature', signature);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (result.recoveryParam == null) {
|
|
69
|
-
if (result.v == null) {
|
|
70
|
-
logger.throwArgumentError('signature missing v and recoveryParam', 'signature', signature);
|
|
71
|
-
}
|
|
72
|
-
else if (result.v === 0 || result.v === 1) {
|
|
73
|
-
result.recoveryParam = result.v;
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
result.recoveryParam = 1 - (result.v % 2);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
if (result.v == null) {
|
|
81
|
-
result.v = 27 + result.recoveryParam;
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
const recId = result.v === 0 || result.v === 1 ? result.v : 1 - (result.v % 2);
|
|
85
|
-
if (result.recoveryParam !== recId) {
|
|
86
|
-
logger.throwArgumentError('signature recoveryParam mismatch v', 'signature', signature);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
if (result.r == null || !isHexString(result.r)) {
|
|
91
|
-
logger.throwArgumentError('signature missing or invalid r', 'signature', signature);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
result.r = hexZeroPad(result.r, 32);
|
|
95
|
-
}
|
|
96
|
-
if (result.s == null || !isHexString(result.s)) {
|
|
97
|
-
logger.throwArgumentError('signature missing or invalid s', 'signature', signature);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
result.s = hexZeroPad(result.s, 32);
|
|
101
|
-
}
|
|
102
|
-
const vs = arrayify(result.s);
|
|
103
|
-
if (vs[0] >= 128) {
|
|
104
|
-
logger.throwArgumentError('signature s out of range', 'signature', signature);
|
|
105
|
-
}
|
|
106
|
-
if (result.recoveryParam) {
|
|
107
|
-
vs[0] |= 0x80;
|
|
108
|
-
}
|
|
109
|
-
const _vs = hexlify(vs);
|
|
110
|
-
if (result._vs) {
|
|
111
|
-
if (!isHexString(result._vs)) {
|
|
112
|
-
logger.throwArgumentError('signature invalid _vs', 'signature', signature);
|
|
113
|
-
}
|
|
114
|
-
result._vs = hexZeroPad(result._vs, 32);
|
|
115
|
-
}
|
|
116
|
-
if (result._vs == null) {
|
|
117
|
-
result._vs = _vs;
|
|
118
|
-
}
|
|
119
|
-
else if (result._vs !== _vs) {
|
|
120
|
-
logger.throwArgumentError('signature _vs mismatch v and s', 'signature', signature);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
result.yParityAndS = result._vs;
|
|
124
|
-
result.compact = result.r + result.yParityAndS.substring(2);
|
|
125
|
-
return result;
|
|
126
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function toChecksumAddress(address: string): string;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Keccak } from 'sha3';
|
|
2
|
-
import { validateType } from '../shared/validate-type';
|
|
3
|
-
export function toChecksumAddress(address) {
|
|
4
|
-
validateType(address, ['string']);
|
|
5
|
-
if (!/^(0x)?[0-9a-f]{40}$/i.test(address)) {
|
|
6
|
-
throw new Error(`Invalid Ethereum address "${address}"`);
|
|
7
|
-
}
|
|
8
|
-
const _address = address.toLowerCase().replace(/^0x/i, '');
|
|
9
|
-
const keccak = new Keccak(256);
|
|
10
|
-
const addressHash = keccak.update(_address).digest('hex').replace(/^0x/i, '');
|
|
11
|
-
let checksumAddress = '0x';
|
|
12
|
-
for (let i = 0; i < _address.length; i++) {
|
|
13
|
-
if (parseInt(addressHash[i], 16) > 7) {
|
|
14
|
-
checksumAddress += _address[i].toUpperCase();
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
checksumAddress += _address[i];
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) &&
|
|
21
|
-
checksumAddress !== address) {
|
|
22
|
-
throw new Error(`Invalid Checksum address for "${address}"`);
|
|
23
|
-
}
|
|
24
|
-
return checksumAddress;
|
|
25
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function toUtf8Bytes(data: string): Uint8Array;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { tinyBig } from '../shared/tiny-big/tiny-big';
|
|
2
|
-
import { validateType } from '../shared/validate-type';
|
|
3
|
-
export function weiToEther(weiQuantity) {
|
|
4
|
-
validateType(weiQuantity, ['string', 'number', 'object']);
|
|
5
|
-
try {
|
|
6
|
-
let _weiQuantity = weiQuantity;
|
|
7
|
-
if (typeof weiQuantity === 'string' && weiQuantity.slice(0, 2) === '0x') {
|
|
8
|
-
_weiQuantity = BigInt(weiQuantity).toString();
|
|
9
|
-
}
|
|
10
|
-
const result = tinyBig(_weiQuantity).div('1000000000000000000');
|
|
11
|
-
return tinyBig(result);
|
|
12
|
-
}
|
|
13
|
-
catch (error) {
|
|
14
|
-
throw error;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|