@aztec/simulator 0.74.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2

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 (304) hide show
  1. package/dest/acvm/acvm.js +18 -21
  2. package/dest/acvm/acvm_types.js +3 -2
  3. package/dest/acvm/deserialize.js +9 -13
  4. package/dest/acvm/index.js +0 -1
  5. package/dest/acvm/oracle/index.js +0 -1
  6. package/dest/acvm/oracle/oracle.js +42 -23
  7. package/dest/acvm/oracle/typed_oracle.js +36 -38
  8. package/dest/acvm/serialize.js +7 -14
  9. package/dest/avm/avm_context.js +24 -27
  10. package/dest/avm/avm_contract_call_result.js +12 -7
  11. package/dest/avm/avm_execution_environment.js +10 -7
  12. package/dest/avm/avm_gas.js +93 -56
  13. package/dest/avm/avm_machine_state.js +60 -61
  14. package/dest/avm/avm_memory_types.js +166 -255
  15. package/dest/avm/avm_simulator.js +68 -47
  16. package/dest/avm/avm_tree.js +282 -276
  17. package/dest/avm/bytecode_utils.js +8 -6
  18. package/dest/avm/errors.js +46 -63
  19. package/dest/avm/fixtures/avm_simulation_tester.js +18 -17
  20. package/dest/avm/fixtures/base_avm_simulation_tester.js +21 -16
  21. package/dest/avm/fixtures/index.js +27 -26
  22. package/dest/avm/fixtures/simple_contract_data_source.js +9 -13
  23. package/dest/avm/index.js +0 -1
  24. package/dest/avm/journal/index.js +0 -1
  25. package/dest/avm/journal/journal.js +147 -200
  26. package/dest/avm/journal/nullifiers.js +43 -46
  27. package/dest/avm/journal/public_storage.js +73 -87
  28. package/dest/avm/opcodes/accrued_substate.js +140 -110
  29. package/dest/avm/opcodes/addressing_mode.js +29 -31
  30. package/dest/avm/opcodes/arithmetic.js +17 -15
  31. package/dest/avm/opcodes/bitwise.js +40 -26
  32. package/dest/avm/opcodes/comparators.js +12 -10
  33. package/dest/avm/opcodes/contract.js +31 -29
  34. package/dest/avm/opcodes/control_flow.js +47 -43
  35. package/dest/avm/opcodes/conversion.js +30 -26
  36. package/dest/avm/opcodes/ec_add.js +35 -34
  37. package/dest/avm/opcodes/environment_getters.js +33 -33
  38. package/dest/avm/opcodes/external_calls.js +83 -74
  39. package/dest/avm/opcodes/hashing.js +69 -61
  40. package/dest/avm/opcodes/index.js +0 -1
  41. package/dest/avm/opcodes/instruction.js +31 -40
  42. package/dest/avm/opcodes/instruction_impl.js +12 -15
  43. package/dest/avm/opcodes/memory.js +177 -156
  44. package/dest/avm/opcodes/misc.js +27 -25
  45. package/dest/avm/opcodes/multi_scalar_mul.js +43 -41
  46. package/dest/avm/opcodes/storage.js +28 -25
  47. package/dest/avm/serialization/buffer_cursor.js +4 -4
  48. package/dest/avm/serialization/bytecode_serialization.js +292 -89
  49. package/dest/avm/serialization/instruction_serialization.js +67 -28
  50. package/dest/avm/test_utils.js +6 -9
  51. package/dest/client/client_execution_context.js +197 -219
  52. package/dest/client/db_oracle.js +4 -7
  53. package/dest/client/execution_note_cache.js +80 -81
  54. package/dest/client/index.js +0 -1
  55. package/dest/client/pick_notes.js +27 -30
  56. package/dest/client/private_execution.js +13 -14
  57. package/dest/client/simulator.js +44 -48
  58. package/dest/client/unconstrained_execution.js +8 -11
  59. package/dest/client/view_data_oracle.js +130 -139
  60. package/dest/common/debug_fn_name.js +1 -4
  61. package/dest/common/errors.js +30 -39
  62. package/dest/common/hashed_values_cache.js +16 -20
  63. package/dest/common/index.js +0 -1
  64. package/dest/common/message_load_oracle_inputs.js +7 -7
  65. package/dest/common/simulation_provider.js +3 -6
  66. package/dest/common.js +0 -1
  67. package/dest/providers/acvm_native.js +46 -32
  68. package/dest/providers/acvm_wasm.js +18 -10
  69. package/dest/providers/acvm_wasm_with_blobs.js +2 -5
  70. package/dest/providers/factory.js +5 -5
  71. package/dest/providers/index.js +0 -1
  72. package/dest/public/bytecode_errors.js +1 -2
  73. package/dest/public/db_interfaces.js +1 -2
  74. package/dest/public/execution.js +2 -4
  75. package/dest/public/executor_metrics.js +16 -12
  76. package/dest/public/fee_payment.js +2 -5
  77. package/dest/public/fixtures/index.js +0 -1
  78. package/dest/public/fixtures/public_tx_simulation_tester.js +13 -17
  79. package/dest/public/fixtures/utils.js +11 -14
  80. package/dest/public/index.js +0 -1
  81. package/dest/public/public_db_sources.js +79 -87
  82. package/dest/public/public_processor.js +310 -306
  83. package/dest/public/public_processor_metrics.js +46 -27
  84. package/dest/public/public_tx_context.js +97 -118
  85. package/dest/public/public_tx_simulator.js +299 -314
  86. package/dest/public/side_effect_errors.js +1 -2
  87. package/dest/public/side_effect_trace.js +44 -71
  88. package/dest/public/side_effect_trace_interface.js +1 -2
  89. package/dest/public/unique_class_ids.js +22 -27
  90. package/dest/public/utils.js +16 -11
  91. package/dest/server.js +0 -1
  92. package/dest/stats/index.js +0 -1
  93. package/dest/stats/stats.js +1 -2
  94. package/dest/test/utils.js +5 -4
  95. package/package.json +11 -11
  96. package/src/acvm/oracle/typed_oracle.ts +34 -34
  97. package/src/avm/avm_machine_state.ts +18 -14
  98. package/src/avm/avm_memory_types.ts +43 -183
  99. package/src/avm/avm_simulator.ts +37 -11
  100. package/src/avm/opcodes/accrued_substate.ts +7 -21
  101. package/src/avm/opcodes/addressing_mode.ts +9 -2
  102. package/src/avm/opcodes/arithmetic.ts +1 -3
  103. package/src/avm/opcodes/bitwise.ts +2 -6
  104. package/src/avm/opcodes/comparators.ts +1 -3
  105. package/src/avm/opcodes/contract.ts +1 -3
  106. package/src/avm/opcodes/control_flow.ts +1 -9
  107. package/src/avm/opcodes/conversion.ts +1 -3
  108. package/src/avm/opcodes/ec_add.ts +1 -3
  109. package/src/avm/opcodes/environment_getters.ts +1 -3
  110. package/src/avm/opcodes/external_calls.ts +3 -6
  111. package/src/avm/opcodes/hashing.ts +3 -9
  112. package/src/avm/opcodes/memory.ts +6 -20
  113. package/src/avm/opcodes/misc.ts +1 -3
  114. package/src/avm/opcodes/multi_scalar_mul.ts +1 -7
  115. package/src/avm/opcodes/storage.ts +2 -6
  116. package/src/client/index.ts +2 -2
  117. package/dest/acvm/acvm.d.ts +0 -35
  118. package/dest/acvm/acvm.d.ts.map +0 -1
  119. package/dest/acvm/acvm_types.d.ts +0 -10
  120. package/dest/acvm/acvm_types.d.ts.map +0 -1
  121. package/dest/acvm/deserialize.d.ts +0 -36
  122. package/dest/acvm/deserialize.d.ts.map +0 -1
  123. package/dest/acvm/index.d.ts +0 -6
  124. package/dest/acvm/index.d.ts.map +0 -1
  125. package/dest/acvm/oracle/index.d.ts +0 -14
  126. package/dest/acvm/oracle/index.d.ts.map +0 -1
  127. package/dest/acvm/oracle/oracle.d.ts +0 -49
  128. package/dest/acvm/oracle/oracle.d.ts.map +0 -1
  129. package/dest/acvm/oracle/typed_oracle.d.ts +0 -75
  130. package/dest/acvm/oracle/typed_oracle.d.ts.map +0 -1
  131. package/dest/acvm/serialize.d.ts +0 -20
  132. package/dest/acvm/serialize.d.ts.map +0 -1
  133. package/dest/avm/avm_context.d.ts +0 -39
  134. package/dest/avm/avm_context.d.ts.map +0 -1
  135. package/dest/avm/avm_contract_call_result.d.ts +0 -30
  136. package/dest/avm/avm_contract_call_result.d.ts.map +0 -1
  137. package/dest/avm/avm_execution_environment.d.ts +0 -21
  138. package/dest/avm/avm_execution_environment.d.ts.map +0 -1
  139. package/dest/avm/avm_gas.d.ts +0 -60
  140. package/dest/avm/avm_gas.d.ts.map +0 -1
  141. package/dest/avm/avm_machine_state.d.ts +0 -93
  142. package/dest/avm/avm_machine_state.d.ts.map +0 -1
  143. package/dest/avm/avm_memory_types.d.ts +0 -310
  144. package/dest/avm/avm_memory_types.d.ts.map +0 -1
  145. package/dest/avm/avm_simulator.d.ts +0 -37
  146. package/dest/avm/avm_simulator.d.ts.map +0 -1
  147. package/dest/avm/avm_tree.d.ts +0 -281
  148. package/dest/avm/avm_tree.d.ts.map +0 -1
  149. package/dest/avm/bytecode_utils.d.ts +0 -5
  150. package/dest/avm/bytecode_utils.d.ts.map +0 -1
  151. package/dest/avm/errors.d.ts +0 -121
  152. package/dest/avm/errors.d.ts.map +0 -1
  153. package/dest/avm/fixtures/avm_simulation_tester.d.ts +0 -21
  154. package/dest/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  155. package/dest/avm/fixtures/base_avm_simulation_tester.d.ts +0 -35
  156. package/dest/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  157. package/dest/avm/fixtures/index.d.ts +0 -67
  158. package/dest/avm/fixtures/index.d.ts.map +0 -1
  159. package/dest/avm/fixtures/simple_contract_data_source.d.ts +0 -31
  160. package/dest/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
  161. package/dest/avm/index.d.ts +0 -4
  162. package/dest/avm/index.d.ts.map +0 -1
  163. package/dest/avm/journal/index.d.ts +0 -2
  164. package/dest/avm/journal/index.d.ts.map +0 -1
  165. package/dest/avm/journal/journal.d.ts +0 -176
  166. package/dest/avm/journal/journal.d.ts.map +0 -1
  167. package/dest/avm/journal/nullifiers.d.ts +0 -62
  168. package/dest/avm/journal/nullifiers.d.ts.map +0 -1
  169. package/dest/avm/journal/public_storage.d.ts +0 -66
  170. package/dest/avm/journal/public_storage.d.ts.map +0 -1
  171. package/dest/avm/opcodes/accrued_substate.d.ts +0 -75
  172. package/dest/avm/opcodes/accrued_substate.d.ts.map +0 -1
  173. package/dest/avm/opcodes/addressing_mode.d.ts +0 -27
  174. package/dest/avm/opcodes/addressing_mode.d.ts.map +0 -1
  175. package/dest/avm/opcodes/arithmetic.d.ts +0 -37
  176. package/dest/avm/opcodes/arithmetic.d.ts.map +0 -1
  177. package/dest/avm/opcodes/bitwise.d.ts +0 -50
  178. package/dest/avm/opcodes/bitwise.d.ts.map +0 -1
  179. package/dest/avm/opcodes/comparators.d.ts +0 -25
  180. package/dest/avm/opcodes/comparators.d.ts.map +0 -1
  181. package/dest/avm/opcodes/contract.d.ts +0 -21
  182. package/dest/avm/opcodes/contract.d.ts.map +0 -1
  183. package/dest/avm/opcodes/control_flow.d.ts +0 -41
  184. package/dest/avm/opcodes/control_flow.d.ts.map +0 -1
  185. package/dest/avm/opcodes/conversion.d.ts +0 -17
  186. package/dest/avm/opcodes/conversion.d.ts.map +0 -1
  187. package/dest/avm/opcodes/ec_add.d.ts +0 -19
  188. package/dest/avm/opcodes/ec_add.d.ts.map +0 -1
  189. package/dest/avm/opcodes/environment_getters.d.ts +0 -28
  190. package/dest/avm/opcodes/environment_getters.d.ts.map +0 -1
  191. package/dest/avm/opcodes/external_calls.d.ts +0 -50
  192. package/dest/avm/opcodes/external_calls.d.ts.map +0 -1
  193. package/dest/avm/opcodes/hashing.d.ts +0 -36
  194. package/dest/avm/opcodes/hashing.d.ts.map +0 -1
  195. package/dest/avm/opcodes/index.d.ts +0 -16
  196. package/dest/avm/opcodes/index.d.ts.map +0 -1
  197. package/dest/avm/opcodes/instruction.d.ts +0 -70
  198. package/dest/avm/opcodes/instruction.d.ts.map +0 -1
  199. package/dest/avm/opcodes/instruction_impl.d.ts +0 -19
  200. package/dest/avm/opcodes/instruction_impl.d.ts.map +0 -1
  201. package/dest/avm/opcodes/memory.d.ts +0 -74
  202. package/dest/avm/opcodes/memory.d.ts.map +0 -1
  203. package/dest/avm/opcodes/misc.d.ts +0 -17
  204. package/dest/avm/opcodes/misc.d.ts.map +0 -1
  205. package/dest/avm/opcodes/multi_scalar_mul.d.ts +0 -16
  206. package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +0 -1
  207. package/dest/avm/opcodes/storage.d.ts +0 -24
  208. package/dest/avm/opcodes/storage.d.ts.map +0 -1
  209. package/dest/avm/serialization/buffer_cursor.d.ts +0 -28
  210. package/dest/avm/serialization/buffer_cursor.d.ts.map +0 -1
  211. package/dest/avm/serialization/bytecode_serialization.d.ts +0 -21
  212. package/dest/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  213. package/dest/avm/serialization/instruction_serialization.d.ts +0 -105
  214. package/dest/avm/serialization/instruction_serialization.d.ts.map +0 -1
  215. package/dest/avm/test_utils.d.ts +0 -16
  216. package/dest/avm/test_utils.d.ts.map +0 -1
  217. package/dest/client/client_execution_context.d.ts +0 -214
  218. package/dest/client/client_execution_context.d.ts.map +0 -1
  219. package/dest/client/db_oracle.d.ts +0 -229
  220. package/dest/client/db_oracle.d.ts.map +0 -1
  221. package/dest/client/execution_note_cache.d.ts +0 -93
  222. package/dest/client/execution_note_cache.d.ts.map +0 -1
  223. package/dest/client/index.d.ts +0 -15
  224. package/dest/client/index.d.ts.map +0 -1
  225. package/dest/client/pick_notes.d.ts +0 -85
  226. package/dest/client/pick_notes.d.ts.map +0 -1
  227. package/dest/client/private_execution.d.ts +0 -19
  228. package/dest/client/private_execution.d.ts.map +0 -1
  229. package/dest/client/simulator.d.ts +0 -60
  230. package/dest/client/simulator.d.ts.map +0 -1
  231. package/dest/client/unconstrained_execution.d.ts +0 -10
  232. package/dest/client/unconstrained_execution.d.ts.map +0 -1
  233. package/dest/client/view_data_oracle.d.ts +0 -159
  234. package/dest/client/view_data_oracle.d.ts.map +0 -1
  235. package/dest/common/debug_fn_name.d.ts +0 -4
  236. package/dest/common/debug_fn_name.d.ts.map +0 -1
  237. package/dest/common/errors.d.ts +0 -54
  238. package/dest/common/errors.d.ts.map +0 -1
  239. package/dest/common/hashed_values_cache.d.ts +0 -28
  240. package/dest/common/hashed_values_cache.d.ts.map +0 -1
  241. package/dest/common/index.d.ts +0 -3
  242. package/dest/common/index.d.ts.map +0 -1
  243. package/dest/common/message_load_oracle_inputs.d.ts +0 -15
  244. package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
  245. package/dest/common/simulation_provider.d.ts +0 -19
  246. package/dest/common/simulation_provider.d.ts.map +0 -1
  247. package/dest/common.d.ts +0 -2
  248. package/dest/common.d.ts.map +0 -1
  249. package/dest/providers/acvm_native.d.ts +0 -40
  250. package/dest/providers/acvm_native.d.ts.map +0 -1
  251. package/dest/providers/acvm_wasm.d.ts +0 -15
  252. package/dest/providers/acvm_wasm.d.ts.map +0 -1
  253. package/dest/providers/acvm_wasm_with_blobs.d.ts +0 -19
  254. package/dest/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
  255. package/dest/providers/factory.d.ts +0 -12
  256. package/dest/providers/factory.d.ts.map +0 -1
  257. package/dest/providers/index.d.ts +0 -5
  258. package/dest/providers/index.d.ts.map +0 -1
  259. package/dest/public/bytecode_errors.d.ts +0 -4
  260. package/dest/public/bytecode_errors.d.ts.map +0 -1
  261. package/dest/public/db_interfaces.d.ts +0 -105
  262. package/dest/public/db_interfaces.d.ts.map +0 -1
  263. package/dest/public/execution.d.ts +0 -102
  264. package/dest/public/execution.d.ts.map +0 -1
  265. package/dest/public/executor_metrics.d.ts +0 -13
  266. package/dest/public/executor_metrics.d.ts.map +0 -1
  267. package/dest/public/fee_payment.d.ts +0 -11
  268. package/dest/public/fee_payment.d.ts.map +0 -1
  269. package/dest/public/fixtures/index.d.ts +0 -3
  270. package/dest/public/fixtures/index.d.ts.map +0 -1
  271. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +0 -21
  272. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +0 -1
  273. package/dest/public/fixtures/utils.d.ts +0 -17
  274. package/dest/public/fixtures/utils.d.ts.map +0 -1
  275. package/dest/public/index.d.ts +0 -9
  276. package/dest/public/index.d.ts.map +0 -1
  277. package/dest/public/public_db_sources.d.ts +0 -81
  278. package/dest/public/public_db_sources.d.ts.map +0 -1
  279. package/dest/public/public_processor.d.ts +0 -72
  280. package/dest/public/public_processor.d.ts.map +0 -1
  281. package/dest/public/public_processor_metrics.d.ts +0 -27
  282. package/dest/public/public_processor_metrics.d.ts.map +0 -1
  283. package/dest/public/public_tx_context.d.ts +0 -131
  284. package/dest/public/public_tx_context.d.ts.map +0 -1
  285. package/dest/public/public_tx_simulator.d.ts +0 -99
  286. package/dest/public/public_tx_simulator.d.ts.map +0 -1
  287. package/dest/public/side_effect_errors.d.ts +0 -4
  288. package/dest/public/side_effect_errors.d.ts.map +0 -1
  289. package/dest/public/side_effect_trace.d.ts +0 -126
  290. package/dest/public/side_effect_trace.d.ts.map +0 -1
  291. package/dest/public/side_effect_trace_interface.d.ts +0 -32
  292. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  293. package/dest/public/unique_class_ids.d.ts +0 -37
  294. package/dest/public/unique_class_ids.d.ts.map +0 -1
  295. package/dest/public/utils.d.ts +0 -5
  296. package/dest/public/utils.d.ts.map +0 -1
  297. package/dest/server.d.ts +0 -6
  298. package/dest/server.d.ts.map +0 -1
  299. package/dest/stats/index.d.ts +0 -2
  300. package/dest/stats/index.d.ts.map +0 -1
  301. package/dest/stats/stats.d.ts +0 -4
  302. package/dest/stats/stats.d.ts.map +0 -1
  303. package/dest/test/utils.d.ts +0 -12
  304. package/dest/test/utils.d.ts.map +0 -1
@@ -3,8 +3,7 @@ import { InstructionExecutionError } from '../errors.js';
3
3
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
4
4
  import { Addressing } from './addressing_mode.js';
5
5
  import { Instruction } from './instruction.js';
6
- export var EnvironmentVariable;
7
- (function (EnvironmentVariable) {
6
+ export var EnvironmentVariable = /*#__PURE__*/ function(EnvironmentVariable) {
8
7
  EnvironmentVariable[EnvironmentVariable["ADDRESS"] = 0] = "ADDRESS";
9
8
  EnvironmentVariable[EnvironmentVariable["SENDER"] = 1] = "SENDER";
10
9
  EnvironmentVariable[EnvironmentVariable["TRANSACTIONFEE"] = 2] = "TRANSACTIONFEE";
@@ -17,63 +16,64 @@ export var EnvironmentVariable;
17
16
  EnvironmentVariable[EnvironmentVariable["ISSTATICCALL"] = 9] = "ISSTATICCALL";
18
17
  EnvironmentVariable[EnvironmentVariable["L2GASLEFT"] = 10] = "L2GASLEFT";
19
18
  EnvironmentVariable[EnvironmentVariable["DAGASLEFT"] = 11] = "DAGASLEFT";
20
- })(EnvironmentVariable || (EnvironmentVariable = {}));
19
+ return EnvironmentVariable;
20
+ }({});
21
21
  function getValue(e, ctx) {
22
- switch (e) {
23
- case EnvironmentVariable.ADDRESS:
22
+ switch(e){
23
+ case 0:
24
24
  return new Field(ctx.environment.address.toField());
25
- case EnvironmentVariable.SENDER:
25
+ case 1:
26
26
  return new Field(ctx.environment.sender.toField());
27
- case EnvironmentVariable.TRANSACTIONFEE:
27
+ case 2:
28
28
  return new Field(ctx.environment.transactionFee);
29
- case EnvironmentVariable.CHAINID:
29
+ case 3:
30
30
  return new Field(ctx.environment.globals.chainId);
31
- case EnvironmentVariable.VERSION:
31
+ case 4:
32
32
  return new Field(ctx.environment.globals.version);
33
- case EnvironmentVariable.BLOCKNUMBER:
33
+ case 5:
34
34
  return new Field(ctx.environment.globals.blockNumber);
35
- case EnvironmentVariable.TIMESTAMP:
35
+ case 6:
36
36
  return new Uint64(ctx.environment.globals.timestamp.toBigInt());
37
- case EnvironmentVariable.FEEPERL2GAS:
37
+ case 7:
38
38
  return new Field(ctx.environment.globals.gasFees.feePerL2Gas);
39
- case EnvironmentVariable.FEEPERDAGAS:
39
+ case 8:
40
40
  return new Field(ctx.environment.globals.gasFees.feePerDaGas);
41
- case EnvironmentVariable.ISSTATICCALL:
41
+ case 9:
42
42
  return new Field(ctx.environment.isStaticCall ? 1 : 0);
43
- case EnvironmentVariable.L2GASLEFT:
43
+ case 10:
44
44
  return new Field(ctx.machineState.l2GasLeft);
45
- case EnvironmentVariable.DAGASLEFT:
45
+ case 11:
46
46
  return new Field(ctx.machineState.daGasLeft);
47
47
  default:
48
48
  throw new Error(`Unknown environment variable ${e}`);
49
49
  }
50
50
  }
51
51
  export class GetEnvVar extends Instruction {
52
- constructor(indirect, dstOffset, varEnum) {
53
- super();
54
- this.indirect = indirect;
55
- this.dstOffset = dstOffset;
56
- this.varEnum = varEnum;
52
+ indirect;
53
+ dstOffset;
54
+ varEnum;
55
+ static type = 'GETENVVAR';
56
+ static opcode = Opcode.GETENVVAR_16;
57
+ static wireFormat16 = [
58
+ OperandType.UINT8,
59
+ OperandType.UINT8,
60
+ OperandType.UINT16,
61
+ OperandType.UINT8
62
+ ];
63
+ constructor(indirect, dstOffset, varEnum){
64
+ super(), this.indirect = indirect, this.dstOffset = dstOffset, this.varEnum = varEnum;
57
65
  }
58
66
  async execute(context) {
59
- const memory = context.machineState.memory.track(this.type);
67
+ const memory = context.machineState.memory;
60
68
  context.machineState.consumeGas(this.gasCost());
61
69
  if (!(this.varEnum in EnvironmentVariable)) {
62
70
  throw new InstructionExecutionError(`Invalid GETENVVAR var enum ${this.varEnum}`);
63
71
  }
64
- const operands = [this.dstOffset];
72
+ const operands = [
73
+ this.dstOffset
74
+ ];
65
75
  const addressing = Addressing.fromWire(this.indirect, operands.length);
66
76
  const [dstOffset] = addressing.resolve(operands, memory);
67
77
  memory.set(dstOffset, getValue(this.varEnum, context));
68
- memory.assert({ writes: 1, addressing });
69
78
  }
70
79
  }
71
- GetEnvVar.type = 'GETENVVAR';
72
- GetEnvVar.opcode = Opcode.GETENVVAR_16;
73
- GetEnvVar.wireFormat16 = [
74
- OperandType.UINT8, // opcode
75
- OperandType.UINT8, // indirect
76
- OperandType.UINT16, // dstOffset
77
- OperandType.UINT8, // variable enum (immediate)
78
- ];
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRfZ2V0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9lbnZpcm9ubWVudF9nZXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFNLENBQU4sSUFBWSxtQkFhWDtBQWJELFdBQVksbUJBQW1CO0lBQzdCLG1FQUFPLENBQUE7SUFDUCxpRUFBTSxDQUFBO0lBQ04saUZBQWMsQ0FBQTtJQUNkLG1FQUFPLENBQUE7SUFDUCxtRUFBTyxDQUFBO0lBQ1AsMkVBQVcsQ0FBQTtJQUNYLHVFQUFTLENBQUE7SUFDVCwyRUFBVyxDQUFBO0lBQ1gsMkVBQVcsQ0FBQTtJQUNYLDZFQUFZLENBQUE7SUFDWix3RUFBUyxDQUFBO0lBQ1Qsd0VBQVMsQ0FBQTtBQUNYLENBQUMsRUFiVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBYTlCO0FBRUQsU0FBUyxRQUFRLENBQUMsQ0FBc0IsRUFBRSxHQUFlO0lBQ3ZELFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDVixLQUFLLG1CQUFtQixDQUFDLE9BQU87WUFDOUIsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELEtBQUssbUJBQW1CLENBQUMsTUFBTTtZQUM3QixPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFB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
@@ -4,25 +4,41 @@ import { Opcode, OperandType } from '../serialization/instruction_serialization.
4
4
  import { Addressing } from './addressing_mode.js';
5
5
  import { Instruction } from './instruction.js';
6
6
  class ExternalCall extends Instruction {
7
- constructor(indirect, gasOffset, addrOffset, argsOffset, argsSizeOffset, successOffset) {
8
- super();
9
- this.indirect = indirect;
10
- this.gasOffset = gasOffset;
11
- this.addrOffset = addrOffset;
12
- this.argsOffset = argsOffset;
13
- this.argsSizeOffset = argsSizeOffset;
14
- this.successOffset = successOffset;
7
+ indirect;
8
+ gasOffset;
9
+ addrOffset;
10
+ argsOffset;
11
+ argsSizeOffset;
12
+ successOffset;
13
+ // Informs (de)serialization. See Instruction.deserialize.
14
+ static wireFormat = [
15
+ OperandType.UINT8,
16
+ OperandType.UINT16,
17
+ OperandType.UINT16,
18
+ OperandType.UINT16,
19
+ OperandType.UINT16,
20
+ OperandType.UINT16,
21
+ OperandType.UINT16
22
+ ];
23
+ constructor(indirect, gasOffset, addrOffset, argsOffset, argsSizeOffset, successOffset){
24
+ super(), this.indirect = indirect, this.gasOffset = gasOffset, this.addrOffset = addrOffset, this.argsOffset = argsOffset, this.argsSizeOffset = argsSizeOffset, this.successOffset = successOffset;
15
25
  }
16
26
  async execute(context) {
17
- const memory = context.machineState.memory.track(this.type);
18
- const operands = [this.gasOffset, this.addrOffset, this.argsOffset, this.argsSizeOffset, this.successOffset];
27
+ const memory = context.machineState.memory;
28
+ const operands = [
29
+ this.gasOffset,
30
+ this.addrOffset,
31
+ this.argsOffset,
32
+ this.argsSizeOffset,
33
+ this.successOffset
34
+ ];
19
35
  const addressing = Addressing.fromWire(this.indirect, operands.length);
20
36
  const [gasOffset, addrOffset, argsOffset, argsSizeOffset, successOffset] = addressing.resolve(operands, memory);
21
37
  memory.checkTags(TypeTag.FIELD, gasOffset, gasOffset + 1);
22
38
  memory.checkTag(TypeTag.FIELD, addrOffset);
23
39
  memory.checkTag(TypeTag.UINT32, argsSizeOffset);
24
40
  const calldataSize = memory.get(argsSizeOffset).toNumber();
25
- const calldata = memory.getSlice(argsOffset, calldataSize).map(f => f.toFr());
41
+ const calldata = memory.getSlice(argsOffset, calldataSize).map((f)=>f.toFr());
26
42
  memory.checkTagsRange(TypeTag.FIELD, argsOffset, calldataSize);
27
43
  const callAddress = memory.getAs(addrOffset);
28
44
  // If we are already in a static call, we propagate the environment.
@@ -35,7 +51,10 @@ class ExternalCall extends Instruction {
35
51
  // but in the machine state we track gas as a number.
36
52
  const allocatedL2Gas = Number(BigIntMin(memory.get(gasOffset).toBigInt(), BigInt(context.machineState.l2GasLeft)));
37
53
  const allocatedDaGas = Number(BigIntMin(memory.get(gasOffset + 1).toBigInt(), BigInt(context.machineState.daGasLeft)));
38
- const allocatedGas = { l2Gas: allocatedL2Gas, daGas: allocatedDaGas };
54
+ const allocatedGas = {
55
+ l2Gas: allocatedL2Gas,
56
+ daGas: allocatedDaGas
57
+ };
39
58
  context.machineState.consumeGas(allocatedGas);
40
59
  const aztecAddress = callAddress.toAztecAddress();
41
60
  const nestedContext = context.createNestedContractCallContext(aztecAddress, calldata, allocatedGas, callType);
@@ -53,7 +72,7 @@ class ExternalCall extends Instruction {
53
72
  if (!success) {
54
73
  context.machineState.collectedRevertInfo = {
55
74
  revertDataRepresentative: fullReturnData,
56
- recursiveRevertReason: nestedCallResults.revertReason,
75
+ recursiveRevertReason: nestedCallResults.revertReason
57
76
  };
58
77
  }
59
78
  // Write our success flag into memory.
@@ -63,87 +82,93 @@ class ExternalCall extends Instruction {
63
82
  // Merge nested call's state and trace based on whether it succeeded.
64
83
  if (success) {
65
84
  context.persistableState.merge(nestedContext.persistableState);
66
- }
67
- else {
85
+ } else {
68
86
  context.persistableState.reject(nestedContext.persistableState);
69
87
  }
70
- memory.assert({ reads: calldataSize + 4, writes: 1, addressing });
71
88
  }
72
89
  }
73
- // Informs (de)serialization. See Instruction.deserialize.
74
- ExternalCall.wireFormat = [
75
- OperandType.UINT8,
76
- OperandType.UINT16, // Indirect
77
- OperandType.UINT16,
78
- OperandType.UINT16,
79
- OperandType.UINT16,
80
- OperandType.UINT16,
81
- OperandType.UINT16,
82
- ];
83
90
  export class Call extends ExternalCall {
91
+ static type = 'CALL';
92
+ static opcode = Opcode.CALL;
84
93
  get type() {
85
94
  return Call.type;
86
95
  }
87
96
  }
88
- Call.type = 'CALL';
89
- Call.opcode = Opcode.CALL;
90
97
  export class StaticCall extends ExternalCall {
98
+ static type = 'STATICCALL';
99
+ static opcode = Opcode.STATICCALL;
91
100
  get type() {
92
101
  return StaticCall.type;
93
102
  }
94
103
  }
95
- StaticCall.type = 'STATICCALL';
96
- StaticCall.opcode = Opcode.STATICCALL;
97
104
  export class Return extends Instruction {
98
- constructor(indirect, returnOffset, returnSizeOffset) {
99
- super();
100
- this.indirect = indirect;
101
- this.returnOffset = returnOffset;
102
- this.returnSizeOffset = returnSizeOffset;
105
+ indirect;
106
+ returnOffset;
107
+ returnSizeOffset;
108
+ static type = 'RETURN';
109
+ static opcode = Opcode.RETURN;
110
+ // Informs (de)serialization. See Instruction.deserialize.
111
+ static wireFormat = [
112
+ OperandType.UINT8,
113
+ OperandType.UINT8,
114
+ OperandType.UINT16,
115
+ OperandType.UINT16
116
+ ];
117
+ constructor(indirect, returnOffset, returnSizeOffset){
118
+ super(), this.indirect = indirect, this.returnOffset = returnOffset, this.returnSizeOffset = returnSizeOffset;
103
119
  }
104
120
  async execute(context) {
105
- const memory = context.machineState.memory.track(this.type);
106
- const operands = [this.returnOffset, this.returnSizeOffset];
121
+ const memory = context.machineState.memory;
122
+ const operands = [
123
+ this.returnOffset,
124
+ this.returnSizeOffset
125
+ ];
107
126
  const addressing = Addressing.fromWire(this.indirect, operands.length);
108
127
  const [returnOffset, returnSizeOffset] = addressing.resolve(operands, memory);
109
128
  memory.checkTag(TypeTag.UINT32, returnSizeOffset);
110
129
  const returnSize = memory.get(returnSizeOffset).toNumber();
111
130
  context.machineState.consumeGas(this.gasCost(returnSize));
112
- const output = memory.getSlice(returnOffset, returnSize).map(word => word.toFr());
131
+ const output = memory.getSlice(returnOffset, returnSize).map((word)=>word.toFr());
113
132
  context.machineState.return(output);
114
- memory.assert({ reads: returnSize + 1, addressing });
115
133
  }
116
134
  handlesPC() {
117
135
  return true;
118
136
  }
119
137
  }
120
- Return.type = 'RETURN';
121
- Return.opcode = Opcode.RETURN;
122
- // Informs (de)serialization. See Instruction.deserialize.
123
- Return.wireFormat = [
124
- OperandType.UINT8,
125
- OperandType.UINT8,
126
- OperandType.UINT16,
127
- OperandType.UINT16,
128
- ];
129
138
  export class Revert extends Instruction {
130
- constructor(indirect, returnOffset, retSizeOffset) {
131
- super();
132
- this.indirect = indirect;
133
- this.returnOffset = returnOffset;
134
- this.retSizeOffset = retSizeOffset;
139
+ indirect;
140
+ returnOffset;
141
+ retSizeOffset;
142
+ static type = 'REVERT';
143
+ static opcode = Opcode.REVERT_8;
144
+ static wireFormat8 = [
145
+ OperandType.UINT8,
146
+ OperandType.UINT8,
147
+ OperandType.UINT8,
148
+ OperandType.UINT8
149
+ ];
150
+ static wireFormat16 = [
151
+ OperandType.UINT8,
152
+ OperandType.UINT8,
153
+ OperandType.UINT16,
154
+ OperandType.UINT16
155
+ ];
156
+ constructor(indirect, returnOffset, retSizeOffset){
157
+ super(), this.indirect = indirect, this.returnOffset = returnOffset, this.retSizeOffset = retSizeOffset;
135
158
  }
136
159
  async execute(context) {
137
- const memory = context.machineState.memory.track(this.type);
138
- const operands = [this.returnOffset, this.retSizeOffset];
160
+ const memory = context.machineState.memory;
161
+ const operands = [
162
+ this.returnOffset,
163
+ this.retSizeOffset
164
+ ];
139
165
  const addressing = Addressing.fromWire(this.indirect, operands.length);
140
166
  const [returnOffset, retSizeOffset] = addressing.resolve(operands, memory);
141
167
  memory.checkTag(TypeTag.UINT32, retSizeOffset);
142
168
  const retSize = memory.get(retSizeOffset).toNumber();
143
169
  context.machineState.consumeGas(this.gasCost(retSize));
144
- const output = memory.getSlice(returnOffset, retSize).map(word => word.toFr());
170
+ const output = memory.getSlice(returnOffset, retSize).map((word)=>word.toFr());
145
171
  context.machineState.revert(output);
146
- memory.assert({ reads: retSize + 1, addressing });
147
172
  }
148
173
  // We don't want to increase the PC after reverting because it breaks messages.
149
174
  // Maybe we can remove this once messages don't depend on PCs.
@@ -151,22 +176,6 @@ export class Revert extends Instruction {
151
176
  return true;
152
177
  }
153
178
  }
154
- Revert.type = 'REVERT';
155
- Revert.opcode = Opcode.REVERT_8;
156
- Revert.wireFormat8 = [
157
- OperandType.UINT8,
158
- OperandType.UINT8,
159
- OperandType.UINT8,
160
- OperandType.UINT8,
161
- ];
162
- Revert.wireFormat16 = [
163
- OperandType.UINT8,
164
- OperandType.UINT8,
165
- OperandType.UINT16,
166
- OperandType.UINT16,
167
- ];
168
- /** Returns the smaller of two bigints. */
169
- function BigIntMin(a, b) {
179
+ /** Returns the smaller of two bigints. */ function BigIntMin(a, b) {
170
180
  return a < b ? a : b;
171
181
  }
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWxfY2FsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvZXh0ZXJuYWxfY2FsbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE1BQWUsWUFBYSxTQUFRLFdBQVc7SUFZN0MsWUFDVSxRQUFnQixFQUNoQixTQUFpQixFQUNqQixVQUFrQixFQUNsQixVQUFrQixFQUNsQixjQUFzQixFQUN0QixhQUFxQjtRQUU3QixLQUFLLEVBQUUsQ0FBQztRQVBBLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQVE7SUFHL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUI7UUFDdEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGFBQWEs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
@@ -4,103 +4,111 @@ import { Opcode, OperandType } from '../serialization/instruction_serialization.
4
4
  import { Addressing } from './addressing_mode.js';
5
5
  import { Instruction } from './instruction.js';
6
6
  export class Poseidon2 extends Instruction {
7
- constructor(indirect, inputStateOffset, outputStateOffset) {
8
- super();
9
- this.indirect = indirect;
10
- this.inputStateOffset = inputStateOffset;
11
- this.outputStateOffset = outputStateOffset;
7
+ indirect;
8
+ inputStateOffset;
9
+ outputStateOffset;
10
+ static type = 'POSEIDON2';
11
+ static opcode = Opcode.POSEIDON2;
12
+ static stateSize = 4;
13
+ // Informs (de)serialization. See Instruction.deserialize.
14
+ static wireFormat = [
15
+ OperandType.UINT8,
16
+ OperandType.UINT8,
17
+ OperandType.UINT16,
18
+ OperandType.UINT16
19
+ ];
20
+ constructor(indirect, inputStateOffset, outputStateOffset){
21
+ super(), this.indirect = indirect, this.inputStateOffset = inputStateOffset, this.outputStateOffset = outputStateOffset;
12
22
  }
13
23
  async execute(context) {
14
- const memory = context.machineState.memory.track(this.type);
24
+ const memory = context.machineState.memory;
15
25
  context.machineState.consumeGas(this.gasCost());
16
- const operands = [this.inputStateOffset, this.outputStateOffset];
26
+ const operands = [
27
+ this.inputStateOffset,
28
+ this.outputStateOffset
29
+ ];
17
30
  const addressing = Addressing.fromWire(this.indirect, operands.length);
18
31
  const [inputOffset, outputOffset] = addressing.resolve(operands, memory);
19
32
  const inputState = memory.getSlice(inputOffset, Poseidon2.stateSize);
20
33
  memory.checkTagsRange(TypeTag.FIELD, inputOffset, Poseidon2.stateSize);
21
34
  const outputState = await poseidon2Permutation(inputState);
22
- memory.setSlice(outputOffset, outputState.map(word => new Field(word)));
23
- memory.assert({ reads: Poseidon2.stateSize, writes: Poseidon2.stateSize, addressing });
35
+ memory.setSlice(outputOffset, outputState.map((word)=>new Field(word)));
24
36
  }
25
37
  }
26
- Poseidon2.type = 'POSEIDON2';
27
- Poseidon2.opcode = Opcode.POSEIDON2;
28
- Poseidon2.stateSize = 4;
29
- // Informs (de)serialization. See Instruction.deserialize.
30
- Poseidon2.wireFormat = [
31
- OperandType.UINT8,
32
- OperandType.UINT8,
33
- OperandType.UINT16,
34
- OperandType.UINT16,
35
- ];
36
38
  export class KeccakF1600 extends Instruction {
37
- constructor(indirect, dstOffset, inputOffset) {
38
- super();
39
- this.indirect = indirect;
40
- this.dstOffset = dstOffset;
41
- this.inputOffset = inputOffset;
39
+ indirect;
40
+ dstOffset;
41
+ inputOffset;
42
+ static type = 'KECCAKF1600';
43
+ static opcode = Opcode.KECCAKF1600;
44
+ // Informs (de)serialization. See Instruction.deserialize.
45
+ static wireFormat = [
46
+ OperandType.UINT8,
47
+ OperandType.UINT8,
48
+ OperandType.UINT16,
49
+ OperandType.UINT16
50
+ ];
51
+ constructor(indirect, dstOffset, inputOffset){
52
+ super(), this.indirect = indirect, this.dstOffset = dstOffset, this.inputOffset = inputOffset;
42
53
  }
43
54
  // pub fn keccakf1600(input: [u64; 25]) -> [u64; 25]
44
55
  async execute(context) {
45
56
  const inputSize = 25;
46
- const memory = context.machineState.memory.track(this.type);
47
- const operands = [this.dstOffset, this.inputOffset];
57
+ const memory = context.machineState.memory;
58
+ const operands = [
59
+ this.dstOffset,
60
+ this.inputOffset
61
+ ];
48
62
  const addressing = Addressing.fromWire(this.indirect, operands.length);
49
63
  const [dstOffset, inputOffset] = addressing.resolve(operands, memory);
50
64
  context.machineState.consumeGas(this.gasCost());
51
- const stateData = memory.getSlice(inputOffset, inputSize).map(word => word.toBigInt());
65
+ const stateData = memory.getSlice(inputOffset, inputSize).map((word)=>word.toBigInt());
52
66
  memory.checkTagsRange(TypeTag.UINT64, inputOffset, inputSize);
53
67
  const updatedState = keccakf1600(stateData);
54
- const res = updatedState.map(word => new Uint64(word));
68
+ const res = updatedState.map((word)=>new Uint64(word));
55
69
  memory.setSlice(dstOffset, res);
56
- memory.assert({ reads: inputSize, writes: inputSize, addressing });
57
70
  }
58
71
  }
59
- KeccakF1600.type = 'KECCAKF1600';
60
- KeccakF1600.opcode = Opcode.KECCAKF1600;
61
- // Informs (de)serialization. See Instruction.deserialize.
62
- KeccakF1600.wireFormat = [
63
- OperandType.UINT8,
64
- OperandType.UINT8,
65
- OperandType.UINT16,
66
- OperandType.UINT16,
67
- ];
68
72
  export class Sha256Compression extends Instruction {
69
- constructor(indirect, outputOffset, stateOffset, inputsOffset) {
70
- super();
71
- this.indirect = indirect;
72
- this.outputOffset = outputOffset;
73
- this.stateOffset = stateOffset;
74
- this.inputsOffset = inputsOffset;
73
+ indirect;
74
+ outputOffset;
75
+ stateOffset;
76
+ inputsOffset;
77
+ static type = 'SHA256COMPRESSION';
78
+ static opcode = Opcode.SHA256COMPRESSION;
79
+ // Informs (de)serialization. See Instruction.deserialize.
80
+ static wireFormat = [
81
+ OperandType.UINT8,
82
+ OperandType.UINT8,
83
+ OperandType.UINT16,
84
+ OperandType.UINT16,
85
+ OperandType.UINT16
86
+ ];
87
+ constructor(indirect, outputOffset, stateOffset, inputsOffset){
88
+ super(), this.indirect = indirect, this.outputOffset = outputOffset, this.stateOffset = stateOffset, this.inputsOffset = inputsOffset;
75
89
  }
76
90
  async execute(context) {
77
91
  const STATE_SIZE = 8;
78
92
  const INPUTS_SIZE = 16;
79
- const memory = context.machineState.memory.track(this.type);
80
- const operands = [this.outputOffset, this.stateOffset, this.inputsOffset];
93
+ const memory = context.machineState.memory;
94
+ const operands = [
95
+ this.outputOffset,
96
+ this.stateOffset,
97
+ this.inputsOffset
98
+ ];
81
99
  const addressing = Addressing.fromWire(this.indirect, operands.length);
82
100
  const [outputOffset, stateOffset, inputsOffset] = addressing.resolve(operands, memory);
83
101
  // Note: size of output is same as size of state
84
102
  context.machineState.consumeGas(this.gasCost());
85
- const inputs = Uint32Array.from(memory.getSlice(inputsOffset, INPUTS_SIZE).map(word => word.toNumber()));
86
- const state = Uint32Array.from(memory.getSlice(stateOffset, STATE_SIZE).map(word => word.toNumber()));
103
+ const inputs = Uint32Array.from(memory.getSlice(inputsOffset, INPUTS_SIZE).map((word)=>word.toNumber()));
104
+ const state = Uint32Array.from(memory.getSlice(stateOffset, STATE_SIZE).map((word)=>word.toNumber()));
87
105
  memory.checkTagsRange(TypeTag.UINT32, inputsOffset, INPUTS_SIZE);
88
106
  memory.checkTagsRange(TypeTag.UINT32, stateOffset, STATE_SIZE);
89
107
  const output = sha256Compression(state, inputs);
90
108
  // Conversion required from Uint32Array to Uint32[] (can't map directly, need `...`)
91
- const res = [...output].map(word => new Uint32(word));
109
+ const res = [
110
+ ...output
111
+ ].map((word)=>new Uint32(word));
92
112
  memory.setSlice(outputOffset, res);
93
- memory.assert({ reads: STATE_SIZE + INPUTS_SIZE, writes: STATE_SIZE, addressing });
94
113
  }
95
114
  }
96
- Sha256Compression.type = 'SHA256COMPRESSION';
97
- Sha256Compression.opcode = Opcode.SHA256COMPRESSION;
98
- // Informs (de)serialization. See Instruction.deserialize.
99
- Sha256Compression.wireFormat = [
100
- OperandType.UINT8,
101
- OperandType.UINT8,
102
- OperandType.UINT16,
103
- OperandType.UINT16,
104
- OperandType.UINT16,
105
- ];
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9oYXNoaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE1BQU0sT0FBTyxTQUFVLFNBQVEsV0FBVztJQWF4QyxZQUFvQixRQUFnQixFQUFVLGdCQUF3QixFQUFVLGlCQUF5QjtRQUN2RyxLQUFLLEVBQUUsQ0FBQztRQURVLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7SUFFekcsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUI7UUFDdEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUVoRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRSxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxR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
@@ -13,4 +13,3 @@ export * from './environment_getters.js';
13
13
  export * from './accrued_substate.js';
14
14
  export * from './hashing.js';
15
15
  export * from './ec_add.js';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDIn0=