@theqrl/hypc 0.0.2

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.
Files changed (63) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +361 -0
  3. package/abi.js +80 -0
  4. package/bindings/compile.js +157 -0
  5. package/bindings/core.js +116 -0
  6. package/bindings/helpers.js +35 -0
  7. package/bindings/index.js +16 -0
  8. package/build/clean.js +6 -0
  9. package/build/pack-publish-block.js +10 -0
  10. package/build/postbuild.js +3 -0
  11. package/common/helpers.js +24 -0
  12. package/common/types.js +2 -0
  13. package/contractA_hyp_A.bin +1 -0
  14. package/contractB_hyp_B.bin +1 -0
  15. package/downloadCurrentVersion.js +93 -0
  16. package/formatters.js +17 -0
  17. package/hypc.js +259 -0
  18. package/hypjson.js +1733 -0
  19. package/importA_hyp_C.bin +1 -0
  20. package/importB_hyp_D.bin +1 -0
  21. package/index.js +7 -0
  22. package/libX_hyp_X.bin +1 -0
  23. package/libY_hyp_Y.bin +1 -0
  24. package/libZ_hyp_Z.bin +1 -0
  25. package/linker.js +156 -0
  26. package/package.json +74 -0
  27. package/smtchecker.js +39 -0
  28. package/smtsolver.js +89 -0
  29. package/test/abi.js +77 -0
  30. package/test/cli.js +245 -0
  31. package/test/compiler.js +791 -0
  32. package/test/index.js +36 -0
  33. package/test/linker.js +132 -0
  34. package/test/resources/fixtureAsmJson.hyp +8 -0
  35. package/test/resources/fixtureAsmJson.json +528 -0
  36. package/test/resources/fixtureAsmJson.output +101 -0
  37. package/test/resources/fixtureIncorrectSource.hyp +1 -0
  38. package/test/resources/fixtureSmoke.hyp +5 -0
  39. package/test/resources/importA.hyp +7 -0
  40. package/test/resources/importB.hyp +5 -0
  41. package/test/resources/importCallback/base/contractA.hyp +8 -0
  42. package/test/resources/importCallback/base/contractB.hyp +6 -0
  43. package/test/resources/importCallback/contractC.hyp +4 -0
  44. package/test/resources/importCallback/includeA/libX.hyp +4 -0
  45. package/test/resources/importCallback/includeA/libY.hyp +6 -0
  46. package/test/resources/importCallback/includeA/utils.hyp +4 -0
  47. package/test/resources/importCallback/includeB/libZ.hyp +4 -0
  48. package/test/resources/smtChecker/loop.hyp +8 -0
  49. package/test/resources/smtChecker/smoke.hyp +5 -0
  50. package/test/resources/smtChecker/smoke_with_engine.hyp +6 -0
  51. package/test/resources/smtChecker/smoke_with_multi_engine.hyp +8 -0
  52. package/test/smtcallback.js +221 -0
  53. package/test/smtchecker.js +83 -0
  54. package/test/translate.js +83 -0
  55. package/test_resources_fixtureSmoke_hyp_C.abi +1 -0
  56. package/test_resources_fixtureSmoke_hyp_C.bin +1 -0
  57. package/test_resources_importA_hyp_C.bin +1 -0
  58. package/test_resources_importB_hyp_D.bin +1 -0
  59. package/translate.js +186 -0
  60. package/tsconfig.json +25 -0
  61. package/utils_hyp_Utils.bin +1 -0
  62. package/verifyVersion.js +43 -0
  63. package/wrapper.js +143 -0
@@ -0,0 +1,528 @@
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
+ }
@@ -0,0 +1,101 @@
1
+ .code
2
+ PUSH 80 contract C {\n // Leaving an ...
3
+ PUSH 40 contract C {\n // Leaving an ...
4
+ MSTORE contract C {\n // Leaving an ...
5
+ CALLVALUE contract C {\n // Leaving an ...
6
+ DUP1 C {\n //
7
+ ISZERO ac
8
+ PUSH [tag] 1 ac
9
+ JUMPI ac
10
+ PUSH 0 m
11
+ DUP1 n
12
+ REVERT aving an emp
13
+ tag 1 ac
14
+ JUMPDEST ac
15
+ POP contract C {\n // Leaving an ...
16
+ PUSH #[$] 0000000000000000000000000000000000000000000000000000000000000000 contract C {\n // Leaving an ...
17
+ DUP1 contract C {\n // Leaving an ...
18
+ PUSH [$] 0000000000000000000000000000000000000000000000000000000000000000 contract C {\n // Leaving an ...
19
+ PUSH 0 contract C {\n // Leaving an ...
20
+ CODECOPY contract C {\n // Leaving an ...
21
+ PUSH 0 contract C {\n // Leaving an ...
22
+ RETURN contract C {\n // Leaving an ...
23
+ .data
24
+ 0:
25
+ .code
26
+ PUSH 80 contract C {\n // Leaving an ...
27
+ PUSH 40 contract C {\n // Leaving an ...
28
+ MSTORE contract C {\n // Leaving an ...
29
+ CALLVALUE contract C {\n // Leaving an ...
30
+ DUP1 C {\n //
31
+ ISZERO ac
32
+ PUSH [tag] 1 ac
33
+ JUMPI ac
34
+ PUSH 0 m
35
+ DUP1 n
36
+ REVERT aving an emp
37
+ tag 1 ac
38
+ JUMPDEST ac
39
+ POP contract C {\n // Leaving an ...
40
+ PUSH 4 contract C {\n // Leaving an ...
41
+ CALLDATASIZE contract C {\n // Leaving an ...
42
+ LT contract C {\n // Leaving an ...
43
+ PUSH [tag] 2 contract C {\n // Leaving an ...
44
+ JUMPI contract C {\n // Leaving an ...
45
+ PUSH 0 contract C {\n // Leaving an ...
46
+ CALLDATALOAD contract C {\n // Leaving an ...
47
+ PUSH 100000000000000000000000000000000000000000000000000000000 contract C {\n // Leaving an ...
48
+ SWAP1 contract C {\n // Leaving an ...
49
+ DIV contract C {\n // Leaving an ...
50
+ DUP1 contract C {\n // Leaving an ...
51
+ PUSH 26121FF0 contract C {\n // Leaving an ...
52
+ EQ contract C {\n // Leaving an ...
53
+ PUSH [tag] 3 contract C {\n // Leaving an ...
54
+ JUMPI contract C {\n // Leaving an ...
55
+ tag 2 contract C {\n // Leaving an ...
56
+ JUMPDEST contract C {\n // Leaving an ...
57
+ PUSH 0 contract C {\n // Leaving an ...
58
+ DUP1 contract C {\n // Leaving an ...
59
+ REVERT contract C {\n // Leaving an ...
60
+ tag 3 function f() public returns (b...
61
+ JUMPDEST function f() public returns (b...
62
+ PUSH [tag] 4 function f() public returns (b...
63
+ PUSH [tag] 5 function f() public returns (b...
64
+ JUMP [in] function f() public returns (b...
65
+ tag 4 function f() public returns (b...
66
+ JUMPDEST function f() public returns (b...
67
+ PUSH 40 function f() public returns (b...
68
+ MLOAD function f() public returns (b...
69
+ DUP1 function f() public returns (b...
70
+ DUP3 function f() public returns (b...
71
+ PUSH FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF function f() public returns (b...
72
+ NOT function f() public returns (b...
73
+ AND function f() public returns (b...
74
+ PUSH FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF function f() public returns (b...
75
+ NOT function f() public returns (b...
76
+ AND function f() public returns (b...
77
+ DUP2 function f() public returns (b...
78
+ MSTORE function f() public returns (b...
79
+ PUSH 20 function f() public returns (b...
80
+ ADD function f() public returns (b...
81
+ SWAP2 function f() public returns (b...
82
+ POP function f() public returns (b...
83
+ POP function f() public returns (b...
84
+ PUSH 40 function f() public returns (b...
85
+ MLOAD function f() public returns (b...
86
+ DUP1 function f() public returns (b...
87
+ SWAP2 function f() public returns (b...
88
+ SUB function f() public returns (b...
89
+ SWAP1 function f() public returns (b...
90
+ RETURN function f() public returns (b...
91
+ tag 5 function f() public returns (b...
92
+ JUMPDEST function f() public returns (b...
93
+ PUSH 0 bytes4
94
+ PUSH 26121FF0 this.f.selector
95
+ PUSH 100000000000000000000000000000000000000000000000000000000 this.f.selector
96
+ MUL this.f.selector
97
+ SWAP1 return this.f.selector
98
+ POP return this.f.selector
99
+ SWAP1 function f() public returns (b...
100
+ JUMP [out] function f() public returns (b...
101
+ .data
@@ -0,0 +1 @@
1
+ pragma contract;
@@ -0,0 +1,5 @@
1
+ contract C {
2
+ function f() public returns (uint) {
3
+ return 0;
4
+ }
5
+ }
@@ -0,0 +1,7 @@
1
+ import "./importB.hyp";
2
+
3
+ contract C {
4
+ function f() public returns (uint) {
5
+ return 0;
6
+ }
7
+ }
@@ -0,0 +1,5 @@
1
+ contract D {
2
+ function f() public returns (uint) {
3
+ return 0;
4
+ }
5
+ }
@@ -0,0 +1,8 @@
1
+ // SPDX-License-Identifier: GPL-3.0
2
+ pragma hyperion >=0.0.1;
3
+
4
+ import "libX.hyp";
5
+ import "libY.hyp";
6
+ import "libZ.hyp";
7
+
8
+ contract A {}
@@ -0,0 +1,6 @@
1
+ // SPDX-License-Identifier: GPL-3.0
2
+ pragma hyperion >=0.0.1;
3
+
4
+ import "./contractA.hyp";
5
+
6
+ contract B {}
@@ -0,0 +1,4 @@
1
+ // SPDX-License-Identifier: GPL-3.0
2
+ pragma hyperion >=0.0.1;
3
+
4
+ contract C {}
@@ -0,0 +1,4 @@
1
+ // SPDX-License-Identifier: GPL-3.0
2
+ pragma hyperion >=0.0.1;
3
+
4
+ library X {}
@@ -0,0 +1,6 @@
1
+ // SPDX-License-Identifier: GPL-3.0
2
+ pragma hyperion >=0.0.1;
3
+
4
+ import "./utils.hyp";
5
+
6
+ library Y {}
@@ -0,0 +1,4 @@
1
+ // SPDX-License-Identifier: GPL-3.0
2
+ pragma hyperion >=0.0.1;
3
+
4
+ library Utils {}