@theqrl/hypc 0.2.0 → 0.3.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/test/index.js DELETED
@@ -1,36 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const semver = __importStar(require("semver"));
27
- Promise.resolve().then(() => __importStar(require('./linker')));
28
- Promise.resolve().then(() => __importStar(require('./translate')));
29
- Promise.resolve().then(() => __importStar(require('./compiler')));
30
- Promise.resolve().then(() => __importStar(require('./smtcallback')));
31
- Promise.resolve().then(() => __importStar(require('./smtchecker')));
32
- Promise.resolve().then(() => __importStar(require('./abi')));
33
- // The CLI doesn't support Node 4
34
- if (semver.gte(process.version, '5.0.0')) {
35
- Promise.resolve().then(() => __importStar(require('./cli')));
36
- }
package/test/linker.js DELETED
@@ -1,88 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const tape_1 = __importDefault(require("tape"));
7
- const linker_1 = __importDefault(require("../linker"));
8
- const LIB_HYP_L_64_BYTE_HASH = '7b407da2c9e54c64181b59f93be76d2e1be3a7a0dd4078c3bae5ca6125235fe45e6d0232229f7006f00e49901dd0bb51b52ac3ea8beef0422713a65cf0';
9
- const LIB_HYP_L_64_BYTE_PLACEHOLDER = `__$${LIB_HYP_L_64_BYTE_HASH}$__`;
10
- const ADDRESS_64_BYTES = '42'.repeat(64);
11
- const PREFIXED_ADDRESS_64_BYTES = `Q${ADDRESS_64_BYTES}`;
12
- function oldStylePlaceholder(libraryName) {
13
- return `__${libraryName.slice(0, 124).padEnd(124, '_')}__`;
14
- }
15
- (0, tape_1.default)('Link references', function (t) {
16
- t.test('Empty bytecode', function (st) {
17
- st.deepEqual(linker_1.default.findLinkReferences(''), {});
18
- st.end();
19
- });
20
- t.test('No references', function (st) {
21
- st.deepEqual(linker_1.default.findLinkReferences('6060604052341561000f57600080fd'), {});
22
- st.end();
23
- });
24
- t.test('One 64-byte hashed reference', function (st) {
25
- const bytecode = `6060${LIB_HYP_L_64_BYTE_PLACEHOLDER}6060`;
26
- st.deepEqual(linker_1.default.findLinkReferences(bytecode), { [`$${LIB_HYP_L_64_BYTE_HASH}$`]: [{ start: 2, length: 64 }] });
27
- st.end();
28
- });
29
- t.test('One 64-byte old-style reference', function (st) {
30
- const bytecode = `6060${oldStylePlaceholder('lib.hyp:L')}6060`;
31
- st.deepEqual(linker_1.default.findLinkReferences(bytecode), { 'lib.hyp:L': [{ start: 2, length: 64 }] });
32
- st.end();
33
- });
34
- t.test('Two references with same library name', function (st) {
35
- const bytecode = `6060${oldStylePlaceholder('lib.hyp:L')}6060${oldStylePlaceholder('lib.hyp:L')}6060`;
36
- st.deepEqual(linker_1.default.findLinkReferences(bytecode), { 'lib.hyp:L': [{ start: 2, length: 64 }, { start: 68, length: 64 }] });
37
- st.end();
38
- });
39
- t.test('Invalid 20-byte reference is ignored', function (st) {
40
- const bytecode = '6060__$7484607a72fb0587588e5a1e608f0b16de$__6060';
41
- st.deepEqual(linker_1.default.findLinkReferences(bytecode), {});
42
- st.end();
43
- });
44
- });
45
- (0, tape_1.default)('Linking', function (t) {
46
- t.test('64-byte hashed placeholder', function (st) {
47
- let bytecode = `6060${LIB_HYP_L_64_BYTE_PLACEHOLDER}6060`;
48
- bytecode = linker_1.default.linkBytecode(bytecode, { 'lib.hyp:L': PREFIXED_ADDRESS_64_BYTES });
49
- st.equal(bytecode, `6060${ADDRESS_64_BYTES}6060`);
50
- st.end();
51
- });
52
- t.test('64-byte old-style placeholder', function (st) {
53
- let bytecode = `6060${oldStylePlaceholder('lib.hyp:L')}6060`;
54
- bytecode = linker_1.default.linkBytecode(bytecode, { 'lib.hyp:L': PREFIXED_ADDRESS_64_BYTES });
55
- st.equal(bytecode, `6060${ADDRESS_64_BYTES}6060`);
56
- st.end();
57
- });
58
- t.test('64-byte old-style placeholder with two-level configuration', function (st) {
59
- let bytecode = `6060${oldStylePlaceholder('lib.hyp:L')}6060`;
60
- bytecode = linker_1.default.linkBytecode(bytecode, { 'lib.hyp': { L: PREFIXED_ADDRESS_64_BYTES } });
61
- st.equal(bytecode, `6060${ADDRESS_64_BYTES}6060`);
62
- st.end();
63
- });
64
- t.test('missing library leaves placeholder unresolved', function (st) {
65
- const bytecode = `6060${oldStylePlaceholder('lib.hyp:L')}6060`;
66
- st.equal(linker_1.default.linkBytecode(bytecode, {}), bytecode);
67
- st.end();
68
- });
69
- t.test('short address is invalid', function (st) {
70
- const bytecode = `6060${oldStylePlaceholder('lib.hyp:L')}6060`;
71
- st.throws(function () {
72
- linker_1.default.linkBytecode(bytecode, { 'lib.hyp:L': 'Q123456' });
73
- });
74
- st.end();
75
- });
76
- t.test('non-hex address is invalid', function (st) {
77
- const bytecode = `6060${oldStylePlaceholder('lib.hyp:L')}6060`;
78
- st.throws(function () {
79
- linker_1.default.linkBytecode(bytecode, { 'lib.hyp:L': `Q${'z'.repeat(128)}` });
80
- });
81
- st.end();
82
- });
83
- t.test('20-byte placeholder is not linked', function (st) {
84
- const bytecode = '6060__$7484607a72fb0587588e5a1e608f0b16de$__6060';
85
- st.equal(linker_1.default.linkBytecode(bytecode, { 'lib2.hyp:L': PREFIXED_ADDRESS_64_BYTES }), bytecode);
86
- st.end();
87
- });
88
- });
@@ -1,528 +0,0 @@
1
- {
2
- ".code": [
3
- {
4
- "begin": 0,
5
- "end": 135,
6
- "name": "PUSH",
7
- "value": "80"
8
- },
9
- {
10
- "begin": 0,
11
- "end": 135,
12
- "name": "PUSH",
13
- "value": "40"
14
- },
15
- {
16
- "begin": 0,
17
- "end": 135,
18
- "name": "MSTORE"
19
- },
20
- {
21
- "begin": 0,
22
- "end": 135,
23
- "name": "CALLVALUE"
24
- },
25
- {
26
- "begin": 8,
27
- "end": 17,
28
- "name": "DUP1"
29
- },
30
- {
31
- "begin": 5,
32
- "end": 7,
33
- "name": "ISZERO"
34
- },
35
- {
36
- "begin": 5,
37
- "end": 7,
38
- "name": "PUSH [tag]",
39
- "value": "1"
40
- },
41
- {
42
- "begin": 5,
43
- "end": 7,
44
- "name": "JUMPI"
45
- },
46
- {
47
- "begin": 30,
48
- "end": 31,
49
- "name": "PUSH",
50
- "value": "0"
51
- },
52
- {
53
- "begin": 27,
54
- "end": 28,
55
- "name": "DUP1"
56
- },
57
- {
58
- "begin": 20,
59
- "end": 32,
60
- "name": "REVERT"
61
- },
62
- {
63
- "begin": 5,
64
- "end": 7,
65
- "name": "tag",
66
- "value": "1"
67
- },
68
- {
69
- "begin": 5,
70
- "end": 7,
71
- "name": "JUMPDEST"
72
- },
73
- {
74
- "begin": 0,
75
- "end": 135,
76
- "name": "POP"
77
- },
78
- {
79
- "begin": 0,
80
- "end": 135,
81
- "name": "PUSH #[$]",
82
- "value": "0000000000000000000000000000000000000000000000000000000000000000"
83
- },
84
- {
85
- "begin": 0,
86
- "end": 135,
87
- "name": "DUP1"
88
- },
89
- {
90
- "begin": 0,
91
- "end": 135,
92
- "name": "PUSH [$]",
93
- "value": "0000000000000000000000000000000000000000000000000000000000000000"
94
- },
95
- {
96
- "begin": 0,
97
- "end": 135,
98
- "name": "PUSH",
99
- "value": "0"
100
- },
101
- {
102
- "begin": 0,
103
- "end": 135,
104
- "name": "CODECOPY"
105
- },
106
- {
107
- "begin": 0,
108
- "end": 135,
109
- "name": "PUSH",
110
- "value": "0"
111
- },
112
- {
113
- "begin": 0,
114
- "end": 135,
115
- "name": "RETURN"
116
- }
117
- ],
118
- ".data": {
119
- "0": {
120
- ".auxdata": "a165627a7a72305820d28aa368c3d228b3e3e38715067dcb2be2d066ecc02e7135b3bdd76e7603692e0029",
121
- ".code": [
122
- {
123
- "begin": 0,
124
- "end": 135,
125
- "name": "PUSH",
126
- "value": "80"
127
- },
128
- {
129
- "begin": 0,
130
- "end": 135,
131
- "name": "PUSH",
132
- "value": "40"
133
- },
134
- {
135
- "begin": 0,
136
- "end": 135,
137
- "name": "MSTORE"
138
- },
139
- {
140
- "begin": 0,
141
- "end": 135,
142
- "name": "CALLVALUE"
143
- },
144
- {
145
- "begin": 8,
146
- "end": 17,
147
- "name": "DUP1"
148
- },
149
- {
150
- "begin": 5,
151
- "end": 7,
152
- "name": "ISZERO"
153
- },
154
- {
155
- "begin": 5,
156
- "end": 7,
157
- "name": "PUSH [tag]",
158
- "value": "1"
159
- },
160
- {
161
- "begin": 5,
162
- "end": 7,
163
- "name": "JUMPI"
164
- },
165
- {
166
- "begin": 30,
167
- "end": 31,
168
- "name": "PUSH",
169
- "value": "0"
170
- },
171
- {
172
- "begin": 27,
173
- "end": 28,
174
- "name": "DUP1"
175
- },
176
- {
177
- "begin": 20,
178
- "end": 32,
179
- "name": "REVERT"
180
- },
181
- {
182
- "begin": 5,
183
- "end": 7,
184
- "name": "tag",
185
- "value": "1"
186
- },
187
- {
188
- "begin": 5,
189
- "end": 7,
190
- "name": "JUMPDEST"
191
- },
192
- {
193
- "begin": 0,
194
- "end": 135,
195
- "name": "POP"
196
- },
197
- {
198
- "begin": 0,
199
- "end": 135,
200
- "name": "PUSH",
201
- "value": "4"
202
- },
203
- {
204
- "begin": 0,
205
- "end": 135,
206
- "name": "CALLDATASIZE"
207
- },
208
- {
209
- "begin": 0,
210
- "end": 135,
211
- "name": "LT"
212
- },
213
- {
214
- "begin": 0,
215
- "end": 135,
216
- "name": "PUSH [tag]",
217
- "value": "2"
218
- },
219
- {
220
- "begin": 0,
221
- "end": 135,
222
- "name": "JUMPI"
223
- },
224
- {
225
- "begin": 0,
226
- "end": 135,
227
- "name": "PUSH",
228
- "value": "0"
229
- },
230
- {
231
- "begin": 0,
232
- "end": 135,
233
- "name": "CALLDATALOAD"
234
- },
235
- {
236
- "begin": 0,
237
- "end": 135,
238
- "name": "PUSH",
239
- "value": "100000000000000000000000000000000000000000000000000000000"
240
- },
241
- {
242
- "begin": 0,
243
- "end": 135,
244
- "name": "SWAP1"
245
- },
246
- {
247
- "begin": 0,
248
- "end": 135,
249
- "name": "DIV"
250
- },
251
- {
252
- "begin": 0,
253
- "end": 135,
254
- "name": "DUP1"
255
- },
256
- {
257
- "begin": 0,
258
- "end": 135,
259
- "name": "PUSH",
260
- "value": "26121FF0"
261
- },
262
- {
263
- "begin": 0,
264
- "end": 135,
265
- "name": "EQ"
266
- },
267
- {
268
- "begin": 0,
269
- "end": 135,
270
- "name": "PUSH [tag]",
271
- "value": "3"
272
- },
273
- {
274
- "begin": 0,
275
- "end": 135,
276
- "name": "JUMPI"
277
- },
278
- {
279
- "begin": 0,
280
- "end": 135,
281
- "name": "tag",
282
- "value": "2"
283
- },
284
- {
285
- "begin": 0,
286
- "end": 135,
287
- "name": "JUMPDEST"
288
- },
289
- {
290
- "begin": 0,
291
- "end": 135,
292
- "name": "PUSH",
293
- "value": "0"
294
- },
295
- {
296
- "begin": 0,
297
- "end": 135,
298
- "name": "DUP1"
299
- },
300
- {
301
- "begin": 0,
302
- "end": 135,
303
- "name": "REVERT"
304
- },
305
- {
306
- "begin": 63,
307
- "end": 133,
308
- "name": "tag",
309
- "value": "3"
310
- },
311
- {
312
- "begin": 63,
313
- "end": 133,
314
- "name": "JUMPDEST"
315
- },
316
- {
317
- "begin": 63,
318
- "end": 133,
319
- "name": "PUSH [tag]",
320
- "value": "4"
321
- },
322
- {
323
- "begin": 63,
324
- "end": 133,
325
- "name": "PUSH [tag]",
326
- "value": "5"
327
- },
328
- {
329
- "begin": 63,
330
- "end": 133,
331
- "name": "JUMP",
332
- "value": "[in]"
333
- },
334
- {
335
- "begin": 63,
336
- "end": 133,
337
- "name": "tag",
338
- "value": "4"
339
- },
340
- {
341
- "begin": 63,
342
- "end": 133,
343
- "name": "JUMPDEST"
344
- },
345
- {
346
- "begin": 63,
347
- "end": 133,
348
- "name": "PUSH",
349
- "value": "40"
350
- },
351
- {
352
- "begin": 63,
353
- "end": 133,
354
- "name": "MLOAD"
355
- },
356
- {
357
- "begin": 63,
358
- "end": 133,
359
- "name": "DUP1"
360
- },
361
- {
362
- "begin": 63,
363
- "end": 133,
364
- "name": "DUP3"
365
- },
366
- {
367
- "begin": 63,
368
- "end": 133,
369
- "name": "PUSH",
370
- "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
371
- },
372
- {
373
- "begin": 63,
374
- "end": 133,
375
- "name": "NOT"
376
- },
377
- {
378
- "begin": 63,
379
- "end": 133,
380
- "name": "AND"
381
- },
382
- {
383
- "begin": 63,
384
- "end": 133,
385
- "name": "PUSH",
386
- "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
387
- },
388
- {
389
- "begin": 63,
390
- "end": 133,
391
- "name": "NOT"
392
- },
393
- {
394
- "begin": 63,
395
- "end": 133,
396
- "name": "AND"
397
- },
398
- {
399
- "begin": 63,
400
- "end": 133,
401
- "name": "DUP2"
402
- },
403
- {
404
- "begin": 63,
405
- "end": 133,
406
- "name": "MSTORE"
407
- },
408
- {
409
- "begin": 63,
410
- "end": 133,
411
- "name": "PUSH",
412
- "value": "20"
413
- },
414
- {
415
- "begin": 63,
416
- "end": 133,
417
- "name": "ADD"
418
- },
419
- {
420
- "begin": 63,
421
- "end": 133,
422
- "name": "SWAP2"
423
- },
424
- {
425
- "begin": 63,
426
- "end": 133,
427
- "name": "POP"
428
- },
429
- {
430
- "begin": 63,
431
- "end": 133,
432
- "name": "POP"
433
- },
434
- {
435
- "begin": 63,
436
- "end": 133,
437
- "name": "PUSH",
438
- "value": "40"
439
- },
440
- {
441
- "begin": 63,
442
- "end": 133,
443
- "name": "MLOAD"
444
- },
445
- {
446
- "begin": 63,
447
- "end": 133,
448
- "name": "DUP1"
449
- },
450
- {
451
- "begin": 63,
452
- "end": 133,
453
- "name": "SWAP2"
454
- },
455
- {
456
- "begin": 63,
457
- "end": 133,
458
- "name": "SUB"
459
- },
460
- {
461
- "begin": 63,
462
- "end": 133,
463
- "name": "SWAP1"
464
- },
465
- {
466
- "begin": 63,
467
- "end": 133,
468
- "name": "RETURN"
469
- },
470
- {
471
- "begin": 63,
472
- "end": 133,
473
- "name": "tag",
474
- "value": "5"
475
- },
476
- {
477
- "begin": 63,
478
- "end": 133,
479
- "name": "JUMPDEST"
480
- },
481
- {
482
- "begin": 92,
483
- "end": 98,
484
- "name": "PUSH",
485
- "value": "0"
486
- },
487
- {
488
- "begin": 113,
489
- "end": 128,
490
- "name": "PUSH",
491
- "value": "26121FF0"
492
- },
493
- {
494
- "begin": 113,
495
- "end": 128,
496
- "name": "PUSH",
497
- "value": "100000000000000000000000000000000000000000000000000000000"
498
- },
499
- {
500
- "begin": 113,
501
- "end": 128,
502
- "name": "MUL"
503
- },
504
- {
505
- "begin": 106,
506
- "end": 128,
507
- "name": "SWAP1"
508
- },
509
- {
510
- "begin": 106,
511
- "end": 128,
512
- "name": "POP"
513
- },
514
- {
515
- "begin": 63,
516
- "end": 133,
517
- "name": "SWAP1"
518
- },
519
- {
520
- "begin": 63,
521
- "end": 133,
522
- "name": "JUMP",
523
- "value": "[out]"
524
- }
525
- ]
526
- }
527
- }
528
- }