starknet 3.18.2 → 4.0.1
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/CHANGELOG.md +70 -0
- package/README.md +1 -2
- package/__tests__/account.test.ts +11 -56
- package/__tests__/contract.test.ts +11 -49
- package/__tests__/defaultProvider.test.ts +321 -0
- package/__tests__/fixtures.ts +32 -11
- package/__tests__/jest.setup.ts +2 -3
- package/__tests__/rpcProvider.test.ts +17 -0
- package/__tests__/sequencerProvider.test.ts +45 -0
- package/account/default.d.ts +54 -77
- package/account/default.js +271 -596
- package/account/index.js +18 -31
- package/account/interface.d.ts +66 -95
- package/account/interface.js +20 -30
- package/constants.d.ts +17 -19
- package/constants.js +2038 -2059
- package/contract/contractFactory.d.ts +25 -29
- package/contract/contractFactory.js +94 -210
- package/contract/default.d.ts +117 -146
- package/contract/default.js +582 -776
- package/contract/index.js +19 -32
- package/contract/interface.d.ts +72 -92
- package/contract/interface.js +6 -5
- package/dist/account/default.d.ts +5 -9
- package/dist/account/default.js +35 -169
- package/dist/account/interface.d.ts +3 -15
- package/dist/contract/contractFactory.js +4 -4
- package/dist/contract/default.d.ts +3 -3
- package/dist/contract/default.js +3 -2
- package/dist/contract/interface.d.ts +2 -2
- package/dist/provider/default.d.ts +18 -134
- package/dist/provider/default.js +47 -411
- package/dist/provider/index.d.ts +2 -0
- package/dist/provider/index.js +2 -0
- package/dist/provider/interface.d.ts +45 -50
- package/dist/provider/rpc.d.ts +57 -0
- package/dist/provider/rpc.js +364 -0
- package/dist/provider/sequencer.d.ts +66 -0
- package/dist/provider/sequencer.js +444 -0
- package/dist/types/account.d.ts +2 -3
- package/dist/types/api/index.d.ts +16 -0
- package/dist/types/api/index.js +18 -0
- package/dist/types/api/rpc.d.ts +221 -0
- package/dist/types/{api.js → api/rpc.js} +0 -0
- package/dist/types/api/sequencer.d.ts +289 -0
- package/dist/types/api/sequencer.js +2 -0
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.js +15 -1
- package/dist/types/lib.d.ts +3 -1
- package/dist/types/provider.d.ts +86 -0
- package/dist/types/provider.js +2 -0
- package/dist/utils/fetchPonyfill.d.ts +2 -0
- package/dist/utils/fetchPonyfill.js +6 -0
- package/dist/utils/provider.d.ts +4 -0
- package/dist/utils/provider.js +38 -0
- package/dist/utils/responseParser/index.d.ts +11 -0
- package/dist/utils/responseParser/index.js +9 -0
- package/dist/utils/responseParser/rpc.d.ts +13 -0
- package/dist/utils/responseParser/rpc.js +96 -0
- package/dist/utils/responseParser/sequencer.d.ts +13 -0
- package/dist/utils/responseParser/sequencer.js +124 -0
- package/index.js +42 -75
- package/package.json +2 -3
- package/provider/default.d.ts +21 -175
- package/provider/default.js +139 -704
- package/provider/errors.d.ts +4 -4
- package/provider/errors.js +30 -40
- package/provider/index.d.ts +2 -0
- package/provider/index.js +22 -33
- package/provider/interface.d.ts +104 -131
- package/provider/interface.js +6 -5
- package/provider/rpc.d.ts +57 -0
- package/provider/rpc.js +364 -0
- package/provider/sequencer.d.ts +66 -0
- package/provider/sequencer.js +444 -0
- package/provider/utils.d.ts +7 -9
- package/provider/utils.js +39 -44
- package/signer/default.d.ts +5 -9
- package/signer/default.js +72 -177
- package/signer/index.js +18 -31
- package/signer/interface.d.ts +29 -33
- package/signer/interface.js +6 -5
- package/src/account/default.ts +26 -146
- package/src/account/interface.ts +5 -20
- package/src/contract/contractFactory.ts +3 -6
- package/src/contract/default.ts +6 -4
- package/src/contract/interface.ts +2 -2
- package/src/provider/default.ts +63 -395
- package/src/provider/index.ts +2 -0
- package/src/provider/interface.ts +68 -63
- package/src/provider/rpc.ts +299 -0
- package/src/provider/sequencer.ts +385 -0
- package/src/types/account.ts +2 -3
- package/src/types/api/index.ts +17 -0
- package/src/types/api/rpc.ts +247 -0
- package/src/types/api/sequencer.ts +331 -0
- package/src/types/index.ts +3 -1
- package/src/types/lib.ts +3 -1
- package/src/types/provider.ts +108 -0
- package/src/utils/fetchPonyfill.ts +4 -0
- package/src/utils/provider.ts +28 -0
- package/src/utils/responseParser/index.ts +28 -0
- package/src/utils/responseParser/rpc.ts +93 -0
- package/src/utils/responseParser/sequencer.ts +127 -0
- package/types/account.d.ts +5 -7
- package/types/account.js +2 -2
- package/types/api/index.d.ts +16 -0
- package/types/api/index.js +18 -0
- package/types/api/rpc.d.ts +221 -0
- package/types/api/rpc.js +2 -0
- package/types/api/sequencer.d.ts +289 -0
- package/types/api/sequencer.js +2 -0
- package/types/contract.d.ts +1 -1
- package/types/contract.js +2 -2
- package/types/index.d.ts +3 -1
- package/types/index.js +35 -34
- package/types/lib.d.ts +36 -41
- package/types/lib.js +2 -2
- package/types/provider.d.ts +86 -0
- package/types/provider.js +2 -0
- package/types/signer.d.ts +2 -2
- package/types/signer.js +2 -2
- package/utils/address.js +26 -37
- package/utils/ellipticCurve.d.ts +1 -6
- package/utils/ellipticCurve.js +73 -137
- package/utils/encode.js +49 -85
- package/utils/fetchPonyfill.d.ts +2 -0
- package/utils/fetchPonyfill.js +6 -0
- package/utils/hash.d.ts +4 -31
- package/utils/hash.js +76 -141
- package/utils/json.d.ts +13 -45
- package/utils/json.js +15 -22
- package/utils/number.d.ts +2 -9
- package/utils/number.js +47 -81
- package/utils/provider.d.ts +4 -0
- package/utils/provider.js +38 -0
- package/utils/responseParser/index.d.ts +11 -0
- package/utils/responseParser/index.js +9 -0
- package/utils/responseParser/rpc.d.ts +13 -0
- package/utils/responseParser/rpc.js +96 -0
- package/utils/responseParser/sequencer.d.ts +13 -0
- package/utils/responseParser/sequencer.js +124 -0
- package/utils/shortString.js +13 -21
- package/utils/stark.d.ts +0 -1
- package/utils/stark.js +59 -93
- package/utils/transaction.d.ts +3 -6
- package/utils/transaction.js +50 -81
- package/utils/typedData/index.d.ts +3 -15
- package/utils/typedData/index.js +109 -175
- package/utils/typedData/types.d.ts +9 -9
- package/utils/typedData/types.js +2 -2
- package/utils/typedData/utils.js +6 -6
- package/utils/uint256.d.ts +5 -5
- package/utils/uint256.js +16 -26
- package/www/docs/API/account.md +3 -4
- package/www/docs/API/contract.md +2 -2
- package/www/docs/API/contractFactory.md +2 -2
- package/www/docs/API/provider.md +185 -74
- package/www/guides/account.md +1 -8
- package/www/guides/erc20.md +3 -0
- package/__tests__/provider.test.ts +0 -168
- package/dist/types/api.d.ts +0 -261
- package/src/types/api.ts +0 -303
- package/types/api.d.ts +0 -287
- package/types/api.js +0 -2
package/utils/ellipticCurve.js
CHANGED
|
@@ -1,48 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
var __read =
|
|
3
|
-
|
|
4
|
-
function (o, n) {
|
|
5
|
-
var m = typeof Symbol === 'function' && o[Symbol.iterator];
|
|
1
|
+
"use strict";
|
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
6
4
|
if (!m) return o;
|
|
7
|
-
var i = m.call(o),
|
|
8
|
-
r,
|
|
9
|
-
ar = [],
|
|
10
|
-
e;
|
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
|
11
6
|
try {
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (e) throw e.error;
|
|
20
|
-
}
|
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) { e = { error: error }; }
|
|
10
|
+
finally {
|
|
11
|
+
try {
|
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
+
}
|
|
14
|
+
finally { if (e) throw e.error; }
|
|
21
15
|
}
|
|
22
16
|
return ar;
|
|
23
|
-
|
|
24
|
-
var __importDefault =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
exports.ec =
|
|
37
|
-
void 0;
|
|
38
|
-
var elliptic_1 = require('elliptic');
|
|
39
|
-
var hash_js_1 = __importDefault(require('hash.js'));
|
|
40
|
-
var minimalistic_assert_1 = __importDefault(require('minimalistic-assert'));
|
|
41
|
-
var constants_1 = require('../constants');
|
|
42
|
-
var encode_1 = require('./encode');
|
|
43
|
-
var number_1 = require('./number');
|
|
44
|
-
exports.ec = new elliptic_1.ec(
|
|
45
|
-
new elliptic_1.curves.PresetCurve({
|
|
17
|
+
};
|
|
18
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
19
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.verify = exports.sign = exports.getKeyPairFromPublicKey = exports.getStarkKey = exports.getKeyPair = exports.genKeyPair = exports.ec = void 0;
|
|
23
|
+
var elliptic_1 = require("elliptic");
|
|
24
|
+
var hash_js_1 = __importDefault(require("hash.js"));
|
|
25
|
+
var minimalistic_assert_1 = __importDefault(require("minimalistic-assert"));
|
|
26
|
+
var constants_1 = require("../constants");
|
|
27
|
+
var encode_1 = require("./encode");
|
|
28
|
+
var number_1 = require("./number");
|
|
29
|
+
exports.ec = new elliptic_1.ec(new elliptic_1.curves.PresetCurve({
|
|
46
30
|
type: 'short',
|
|
47
31
|
prime: null,
|
|
48
32
|
p: constants_1.FIELD_PRIME,
|
|
@@ -52,37 +36,34 @@ exports.ec = new elliptic_1.ec(
|
|
|
52
36
|
hash: hash_js_1.default.sha256,
|
|
53
37
|
gRed: false,
|
|
54
38
|
g: constants_1.CONSTANT_POINTS[1],
|
|
55
|
-
|
|
56
|
-
);
|
|
39
|
+
}));
|
|
57
40
|
/*
|
|
58
41
|
The function _truncateToN in lib/elliptic/ec/index.js does a shift-right of 4 bits
|
|
59
42
|
in some cases. This function does the opposite operation so that
|
|
60
43
|
_truncateToN(fixMessage(msg)) == msg.
|
|
61
44
|
*/
|
|
62
45
|
function fixMessage(msg) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
46
|
+
var pureHex = msg.replace(/^0x0*/, '');
|
|
47
|
+
if (pureHex.length <= 62) {
|
|
48
|
+
// In this case, pureHex should not be transformed, as the byteLength() is at most 31,
|
|
49
|
+
// so delta < 0 (see _truncateToN).
|
|
50
|
+
return pureHex;
|
|
51
|
+
}
|
|
52
|
+
(0, minimalistic_assert_1.default)(pureHex.length === 63);
|
|
53
|
+
// In this case delta will be 4 so we perform a shift-left of 4 bits by adding a ZERO_BN.
|
|
54
|
+
return "".concat(pureHex, "0");
|
|
72
55
|
}
|
|
73
56
|
exports.genKeyPair = exports.ec.genKeyPair.bind(exports.ec);
|
|
74
57
|
function getKeyPair(pk) {
|
|
75
|
-
|
|
76
|
-
|
|
58
|
+
var pkBn = (0, number_1.toBN)(pk);
|
|
59
|
+
return exports.ec.keyFromPrivate((0, encode_1.removeHexPrefix)((0, number_1.toHex)(pkBn)), 'hex');
|
|
77
60
|
}
|
|
78
61
|
exports.getKeyPair = getKeyPair;
|
|
79
62
|
function getStarkKey(keyPair) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
(0, encode_1.sanitizeBytes)(keyPair.pub.getX().toString(16), 2)
|
|
85
|
-
);
|
|
63
|
+
// this method needs to be run to generate the .pub property used below
|
|
64
|
+
// the result can be dumped
|
|
65
|
+
keyPair.getPublic(true, 'hex');
|
|
66
|
+
return (0, encode_1.addHexPrefix)((0, encode_1.sanitizeBytes)(keyPair.pub.getX().toString(16), 2));
|
|
86
67
|
}
|
|
87
68
|
exports.getStarkKey = getStarkKey;
|
|
88
69
|
/**
|
|
@@ -92,11 +73,8 @@ exports.getStarkKey = getStarkKey;
|
|
|
92
73
|
* @returns keyPair with public key only, which can be used to verify signatures, but cant sign anything
|
|
93
74
|
*/
|
|
94
75
|
function getKeyPairFromPublicKey(publicKey) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
(0, encode_1.removeHexPrefix)((0, number_1.toHex)(publicKeyBn)),
|
|
98
|
-
'hex'
|
|
99
|
-
);
|
|
76
|
+
var publicKeyBn = (0, number_1.toBN)(publicKey);
|
|
77
|
+
return exports.ec.keyFromPublic((0, encode_1.removeHexPrefix)((0, number_1.toHex)(publicKeyBn)), 'hex');
|
|
100
78
|
}
|
|
101
79
|
exports.getKeyPairFromPublicKey = getKeyPairFromPublicKey;
|
|
102
80
|
/*
|
|
@@ -105,46 +83,23 @@ exports.getKeyPairFromPublicKey = getKeyPairFromPublicKey;
|
|
|
105
83
|
Returns an Signature.
|
|
106
84
|
*/
|
|
107
85
|
function sign(keyPair, msgHash) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
var w = s.invm(exports.ec.n);
|
|
120
|
-
// Verify signature has valid length.
|
|
121
|
-
(0, number_1.assertInRange)(
|
|
122
|
-
r,
|
|
123
|
-
constants_1.ONE,
|
|
124
|
-
(0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)),
|
|
125
|
-
'r'
|
|
126
|
-
);
|
|
127
|
-
(0, number_1.assertInRange)(
|
|
128
|
-
s,
|
|
129
|
-
constants_1.ONE,
|
|
130
|
-
(0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.EC_ORDER)),
|
|
131
|
-
's'
|
|
132
|
-
);
|
|
133
|
-
(0, number_1.assertInRange)(
|
|
134
|
-
w,
|
|
135
|
-
constants_1.ONE,
|
|
136
|
-
(0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)),
|
|
137
|
-
'w'
|
|
138
|
-
);
|
|
139
|
-
return [r.toString(), s.toString()];
|
|
86
|
+
var msgHashBN = (0, number_1.toBN)((0, encode_1.addHexPrefix)(msgHash));
|
|
87
|
+
// Verify message hash has valid length.
|
|
88
|
+
(0, number_1.assertInRange)(msgHashBN, constants_1.ZERO, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'msgHash');
|
|
89
|
+
var msgSignature = keyPair.sign(fixMessage(msgHash));
|
|
90
|
+
var r = msgSignature.r, s = msgSignature.s;
|
|
91
|
+
var w = s.invm(exports.ec.n);
|
|
92
|
+
// Verify signature has valid length.
|
|
93
|
+
(0, number_1.assertInRange)(r, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'r');
|
|
94
|
+
(0, number_1.assertInRange)(s, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.EC_ORDER)), 's');
|
|
95
|
+
(0, number_1.assertInRange)(w, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'w');
|
|
96
|
+
return [r.toString(), s.toString()];
|
|
140
97
|
}
|
|
141
98
|
exports.sign = sign;
|
|
142
99
|
function chunkArray(arr, n) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return arr.slice(i * n, i * n + n);
|
|
147
|
-
});
|
|
100
|
+
return Array(Math.ceil(arr.length / n))
|
|
101
|
+
.fill('')
|
|
102
|
+
.map(function (_, i) { return arr.slice(i * n, i * n + n); });
|
|
148
103
|
}
|
|
149
104
|
/*
|
|
150
105
|
Verifies a message using the provided key.
|
|
@@ -153,40 +108,21 @@ function chunkArray(arr, n) {
|
|
|
153
108
|
Returns a boolean true if the verification succeeds.
|
|
154
109
|
*/
|
|
155
110
|
function verify(keyPair, msgHash, sig) {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
return chunkArray(sig, 2).every(function (_a, i) {
|
|
173
|
-
var _b;
|
|
174
|
-
var _c = __read(_a, 2),
|
|
175
|
-
r = _c[0],
|
|
176
|
-
s = _c[1];
|
|
177
|
-
var rBN = (0, number_1.toBN)(r);
|
|
178
|
-
var sBN = (0, number_1.toBN)(s);
|
|
179
|
-
var w = sBN.invm(exports.ec.n);
|
|
180
|
-
(0,
|
|
181
|
-
number_1.assertInRange)(rBN, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'r');
|
|
182
|
-
(0,
|
|
183
|
-
number_1.assertInRange)(sBN, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.EC_ORDER)), 's');
|
|
184
|
-
(0,
|
|
185
|
-
number_1.assertInRange)(w, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'w');
|
|
186
|
-
return (_b = exports.ec.verify(fixMessage(msgHash), { r: rBN, s: sBN }, keyPairArray[i])) !==
|
|
187
|
-
null && _b !== void 0
|
|
188
|
-
? _b
|
|
189
|
-
: false;
|
|
190
|
-
});
|
|
111
|
+
var keyPairArray = Array.isArray(keyPair) ? keyPair : [keyPair];
|
|
112
|
+
var msgHashBN = (0, number_1.toBN)((0, encode_1.addHexPrefix)(msgHash));
|
|
113
|
+
(0, minimalistic_assert_1.default)(sig.length % 2 === 0, 'Signature must be an array of length dividable by 2');
|
|
114
|
+
(0, number_1.assertInRange)(msgHashBN, constants_1.ZERO, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'msgHash');
|
|
115
|
+
(0, minimalistic_assert_1.default)(keyPairArray.length === sig.length / 2, 'Signature and keyPair length must be equal');
|
|
116
|
+
return chunkArray(sig, 2).every(function (_a, i) {
|
|
117
|
+
var _b;
|
|
118
|
+
var _c = __read(_a, 2), r = _c[0], s = _c[1];
|
|
119
|
+
var rBN = (0, number_1.toBN)(r);
|
|
120
|
+
var sBN = (0, number_1.toBN)(s);
|
|
121
|
+
var w = sBN.invm(exports.ec.n);
|
|
122
|
+
(0, number_1.assertInRange)(rBN, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'r');
|
|
123
|
+
(0, number_1.assertInRange)(sBN, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.EC_ORDER)), 's');
|
|
124
|
+
(0, number_1.assertInRange)(w, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'w');
|
|
125
|
+
return (_b = exports.ec.verify(fixMessage(msgHash), { r: rBN, s: sBN }, keyPairArray[i])) !== null && _b !== void 0 ? _b : false;
|
|
126
|
+
});
|
|
191
127
|
}
|
|
192
128
|
exports.verify = verify;
|
package/utils/encode.js
CHANGED
|
@@ -1,70 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
var __read =
|
|
3
|
-
|
|
4
|
-
function (o, n) {
|
|
5
|
-
var m = typeof Symbol === 'function' && o[Symbol.iterator];
|
|
1
|
+
"use strict";
|
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
6
4
|
if (!m) return o;
|
|
7
|
-
var i = m.call(o),
|
|
8
|
-
r,
|
|
9
|
-
ar = [],
|
|
10
|
-
e;
|
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
|
11
6
|
try {
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (e) throw e.error;
|
|
20
|
-
}
|
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) { e = { error: error }; }
|
|
10
|
+
finally {
|
|
11
|
+
try {
|
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
+
}
|
|
14
|
+
finally { if (e) throw e.error; }
|
|
21
15
|
}
|
|
22
16
|
return ar;
|
|
23
|
-
|
|
24
|
-
var __spreadArray =
|
|
25
|
-
|
|
26
|
-
function (to, from, pack) {
|
|
27
|
-
if (pack || arguments.length === 2)
|
|
28
|
-
for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
17
|
+
};
|
|
18
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
29
20
|
if (ar || !(i in from)) {
|
|
30
|
-
|
|
31
|
-
|
|
21
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
+
ar[i] = from[i];
|
|
32
23
|
}
|
|
33
|
-
|
|
24
|
+
}
|
|
34
25
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
35
|
-
|
|
36
|
-
Object.defineProperty(exports,
|
|
37
|
-
exports.utf8ToArray =
|
|
38
|
-
exports.sanitizeHex =
|
|
39
|
-
exports.sanitizeBytes =
|
|
40
|
-
exports.calcByteLength =
|
|
41
|
-
exports.padLeft =
|
|
42
|
-
exports.addHexPrefix =
|
|
43
|
-
exports.removeHexPrefix =
|
|
44
|
-
exports.buf2hex =
|
|
45
|
-
exports.btoaUniversal =
|
|
46
|
-
exports.arrayBufferToString =
|
|
47
|
-
exports.IS_BROWSER =
|
|
48
|
-
void 0;
|
|
26
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.utf8ToArray = exports.sanitizeHex = exports.sanitizeBytes = exports.calcByteLength = exports.padLeft = exports.addHexPrefix = exports.removeHexPrefix = exports.buf2hex = exports.btoaUniversal = exports.arrayBufferToString = exports.IS_BROWSER = void 0;
|
|
49
29
|
/* eslint-disable no-param-reassign */
|
|
50
30
|
exports.IS_BROWSER = typeof window !== 'undefined';
|
|
51
31
|
var STRING_ZERO = '0';
|
|
52
32
|
function arrayBufferToString(array) {
|
|
53
|
-
|
|
54
|
-
return data + String.fromCharCode(byte);
|
|
55
|
-
}, '');
|
|
33
|
+
return new Uint8Array(array).reduce(function (data, byte) { return data + String.fromCharCode(byte); }, '');
|
|
56
34
|
}
|
|
57
35
|
exports.arrayBufferToString = arrayBufferToString;
|
|
58
36
|
function btoaUniversal(b) {
|
|
59
|
-
|
|
37
|
+
return exports.IS_BROWSER ? btoa(arrayBufferToString(b)) : Buffer.from(b).toString('base64');
|
|
60
38
|
}
|
|
61
39
|
exports.btoaUniversal = btoaUniversal;
|
|
62
40
|
function buf2hex(buffer) {
|
|
63
|
-
|
|
64
|
-
.map(function (x) {
|
|
65
|
-
return x.toString(16).padStart(2, '0');
|
|
66
|
-
})
|
|
67
|
-
.join('');
|
|
41
|
+
return __spreadArray([], __read(buffer), false).map(function (x) { return x.toString(16).padStart(2, '0'); }).join('');
|
|
68
42
|
}
|
|
69
43
|
exports.buf2hex = buf2hex;
|
|
70
44
|
/**
|
|
@@ -72,61 +46,51 @@ exports.buf2hex = buf2hex;
|
|
|
72
46
|
* enc-utils is no dependency to avoid using `Buffer` which just works in node and no browsers
|
|
73
47
|
*/
|
|
74
48
|
function removeHexPrefix(hex) {
|
|
75
|
-
|
|
49
|
+
return hex.replace(/^0x/, '');
|
|
76
50
|
}
|
|
77
51
|
exports.removeHexPrefix = removeHexPrefix;
|
|
78
52
|
function addHexPrefix(hex) {
|
|
79
|
-
|
|
53
|
+
return "0x".concat(removeHexPrefix(hex));
|
|
80
54
|
}
|
|
81
55
|
exports.addHexPrefix = addHexPrefix;
|
|
82
56
|
function padString(str, length, left, padding) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
result
|
|
91
|
-
}
|
|
92
|
-
return result;
|
|
57
|
+
if (padding === void 0) { padding = STRING_ZERO; }
|
|
58
|
+
var diff = length - str.length;
|
|
59
|
+
var result = str;
|
|
60
|
+
if (diff > 0) {
|
|
61
|
+
var pad = padding.repeat(diff);
|
|
62
|
+
result = left ? pad + str : str + pad;
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
93
65
|
}
|
|
94
66
|
function padLeft(str, length, padding) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
return padString(str, length, true, padding);
|
|
67
|
+
if (padding === void 0) { padding = STRING_ZERO; }
|
|
68
|
+
return padString(str, length, true, padding);
|
|
99
69
|
}
|
|
100
70
|
exports.padLeft = padLeft;
|
|
101
71
|
function calcByteLength(length, byteSize) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
var remainder = length % byteSize;
|
|
106
|
-
return remainder ? ((length - remainder) / byteSize) * byteSize + byteSize : length;
|
|
72
|
+
if (byteSize === void 0) { byteSize = 8; }
|
|
73
|
+
var remainder = length % byteSize;
|
|
74
|
+
return remainder ? ((length - remainder) / byteSize) * byteSize + byteSize : length;
|
|
107
75
|
}
|
|
108
76
|
exports.calcByteLength = calcByteLength;
|
|
109
77
|
function sanitizeBytes(str, byteSize, padding) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
if (padding === void 0) {
|
|
114
|
-
padding = STRING_ZERO;
|
|
115
|
-
}
|
|
116
|
-
return padLeft(str, calcByteLength(str.length, byteSize), padding);
|
|
78
|
+
if (byteSize === void 0) { byteSize = 8; }
|
|
79
|
+
if (padding === void 0) { padding = STRING_ZERO; }
|
|
80
|
+
return padLeft(str, calcByteLength(str.length, byteSize), padding);
|
|
117
81
|
}
|
|
118
82
|
exports.sanitizeBytes = sanitizeBytes;
|
|
119
83
|
function sanitizeHex(hex) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
84
|
+
hex = removeHexPrefix(hex);
|
|
85
|
+
hex = sanitizeBytes(hex, 2);
|
|
86
|
+
if (hex) {
|
|
87
|
+
hex = addHexPrefix(hex);
|
|
88
|
+
}
|
|
89
|
+
return hex;
|
|
126
90
|
}
|
|
127
91
|
exports.sanitizeHex = sanitizeHex;
|
|
128
92
|
// implemented using TextEncoder to make it isomorphic
|
|
129
93
|
function utf8ToArray(str) {
|
|
130
|
-
|
|
94
|
+
return new TextEncoder().encode(str);
|
|
131
95
|
}
|
|
132
96
|
exports.utf8ToArray = utf8ToArray;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = (typeof window !== 'undefined' && window.fetch) || // use buildin fetch in browser if available
|
|
4
|
+
(typeof global !== 'undefined' && global.fetch) || // use buildin fetch in node, react-native and service worker if available
|
|
5
|
+
// eslint-disable-next-line global-require
|
|
6
|
+
require('isomorphic-fetch'); // ponyfill fetch in node and browsers that don't have it
|
package/utils/hash.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import BN from 'bn.js';
|
|
2
|
-
|
|
3
2
|
import { StarknetChainId, TransactionHashPrefix } from '../constants';
|
|
4
3
|
import { RawCalldata } from '../types/lib';
|
|
5
4
|
import { BigNumberish } from './number';
|
|
@@ -23,33 +22,7 @@ export declare function starknetKeccak(value: string): BN;
|
|
|
23
22
|
export declare function getSelectorFromName(funcName: string): string;
|
|
24
23
|
export declare function pedersen(input: [BigNumberish, BigNumberish]): string;
|
|
25
24
|
export declare function computeHashOnElements(data: BigNumberish[]): string;
|
|
26
|
-
export declare function calculateTransactionHashCommon(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
entryPointSelector: BigNumberish,
|
|
31
|
-
calldata: BigNumberish[],
|
|
32
|
-
maxFee: BigNumberish,
|
|
33
|
-
chainId: StarknetChainId,
|
|
34
|
-
additionalData?: BigNumberish[]
|
|
35
|
-
): string;
|
|
36
|
-
export declare function calculateDeployTransactionHash(
|
|
37
|
-
contractAddress: BigNumberish,
|
|
38
|
-
constructorCalldata: BigNumberish[],
|
|
39
|
-
version: BigNumberish,
|
|
40
|
-
chainId: StarknetChainId
|
|
41
|
-
): string;
|
|
42
|
-
export declare function calculcateTransactionHash(
|
|
43
|
-
contractAddress: BigNumberish,
|
|
44
|
-
version: BigNumberish,
|
|
45
|
-
entryPointSelector: BigNumberish,
|
|
46
|
-
calldata: BigNumberish[],
|
|
47
|
-
maxFee: BigNumberish,
|
|
48
|
-
chainId: StarknetChainId
|
|
49
|
-
): string;
|
|
50
|
-
export declare function calculateContractAddressFromHash(
|
|
51
|
-
salt: BigNumberish,
|
|
52
|
-
classHash: BigNumberish,
|
|
53
|
-
constructorCalldata: RawCalldata,
|
|
54
|
-
deployerAddress: BigNumberish
|
|
55
|
-
): string;
|
|
25
|
+
export declare function calculateTransactionHashCommon(txHashPrefix: TransactionHashPrefix, version: BigNumberish, contractAddress: BigNumberish, entryPointSelector: BigNumberish, calldata: BigNumberish[], maxFee: BigNumberish, chainId: StarknetChainId, additionalData?: BigNumberish[]): string;
|
|
26
|
+
export declare function calculateDeployTransactionHash(contractAddress: BigNumberish, constructorCalldata: BigNumberish[], version: BigNumberish, chainId: StarknetChainId): string;
|
|
27
|
+
export declare function calculcateTransactionHash(contractAddress: BigNumberish, version: BigNumberish, entryPointSelector: BigNumberish, calldata: BigNumberish[], maxFee: BigNumberish, chainId: StarknetChainId): string;
|
|
28
|
+
export declare function calculateContractAddressFromHash(salt: BigNumberish, classHash: BigNumberish, constructorCalldata: RawCalldata, deployerAddress: BigNumberish): string;
|