@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,42 +3,39 @@ import { AvmMachineState } from './avm_machine_state.js';
3
3
  /**
4
4
  * An execution context includes the information necessary to initiate AVM
5
5
  * execution along with all state maintained by the AVM throughout execution.
6
- */
7
- export class AvmContext {
6
+ */ export class AvmContext {
7
+ persistableState;
8
+ environment;
9
+ machineState;
8
10
  /**
9
- * Create a new AVM context
10
- * @param persistableState - Manages world state and accrued substate during execution - (caching, fetching, tracing)
11
- * @param environment - Contains constant variables provided by the kernel
12
- * @param machineState - VM state that is modified on an instruction-by-instruction basis
13
- * @returns new AvmContext instance
14
- */
15
- constructor(persistableState, environment, machineState) {
11
+ * Create a new AVM context
12
+ * @param persistableState - Manages world state and accrued substate during execution - (caching, fetching, tracing)
13
+ * @param environment - Contains constant variables provided by the kernel
14
+ * @param machineState - VM state that is modified on an instruction-by-instruction basis
15
+ * @returns new AvmContext instance
16
+ */ constructor(persistableState, environment, machineState){
16
17
  this.persistableState = persistableState;
17
18
  this.environment = environment;
18
19
  this.machineState = machineState;
19
20
  }
20
21
  /**
21
- * Prepare a new AVM context that will be ready for an external/nested call
22
- * - Fork the world state journal
23
- * - Derive a machine state from the current state
24
- * - E.g., gas metering is preserved but pc is reset
25
- * - Derive an execution environment from the caller/parent
26
- * - Alter address
27
- *
28
- * @param address - The contract instance to initialize a context for
29
- * @param calldata - Data/arguments for nested call
30
- * @param allocatedGas - Gas allocated for the nested call
31
- * @param callType - Type of call (CALL or STATICCALL)
32
- * @returns new AvmContext instance
33
- */
34
- createNestedContractCallContext(address, calldata, allocatedGas, callType) {
35
- const deriveFn = callType === 'CALL'
36
- ? this.environment.deriveEnvironmentForNestedCall
37
- : this.environment.deriveEnvironmentForNestedStaticCall;
22
+ * Prepare a new AVM context that will be ready for an external/nested call
23
+ * - Fork the world state journal
24
+ * - Derive a machine state from the current state
25
+ * - E.g., gas metering is preserved but pc is reset
26
+ * - Derive an execution environment from the caller/parent
27
+ * - Alter address
28
+ *
29
+ * @param address - The contract instance to initialize a context for
30
+ * @param calldata - Data/arguments for nested call
31
+ * @param allocatedGas - Gas allocated for the nested call
32
+ * @param callType - Type of call (CALL or STATICCALL)
33
+ * @returns new AvmContext instance
34
+ */ createNestedContractCallContext(address, calldata, allocatedGas, callType) {
35
+ const deriveFn = callType === 'CALL' ? this.environment.deriveEnvironmentForNestedCall : this.environment.deriveEnvironmentForNestedStaticCall;
38
36
  const newExecutionEnvironment = deriveFn.call(this.environment, address, calldata);
39
37
  const forkedWorldState = this.persistableState.fork();
40
38
  const machineState = AvmMachineState.fromState(gasToGasLeft(allocatedGas));
41
39
  return new AvmContext(forkedWorldState, newExecutionEnvironment, machineState);
42
40
  }
43
41
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtL2F2bV9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBWSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3pEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBQ3JCOzs7Ozs7T0FNRztJQUNILFlBQ1MsZ0JBQTRDLEVBQzVDLFdBQW9DLEVBQ3BDLFlBQTZCO1FBRjdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBNEI7UUFDNUMsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtJQUNuQyxDQUFDO0lBRUo7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNJLCtCQUErQixDQUNwQyxPQUFxQixFQUNyQixRQUFjLEVBQ2QsWUFBaUIsRUFDakIsUUFBK0I7UUFFL0IsTUFBTSxRQUFRLEdBQ1osUUFBUSxLQUFLLE1BQU07WUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsOEJBQThCO1lBQ2pELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9DQUFvQyxDQUFDO1FBQzVELE1BQU0sdUJBQXVCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNuRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sSUFBSSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGIn0=
@@ -3,9 +3,12 @@ import { inspect } from 'util';
3
3
  import { createSimulationError } from '../common/errors.js';
4
4
  /**
5
5
  * Results of an contract call's execution in the AVM.
6
- */
7
- export class AvmContractCallResult {
8
- constructor(reverted, output, gasLeft, revertReason) {
6
+ */ export class AvmContractCallResult {
7
+ reverted;
8
+ output;
9
+ gasLeft;
10
+ revertReason;
11
+ constructor(reverted, output, gasLeft, revertReason){
9
12
  this.reverted = reverted;
10
13
  this.output = output;
11
14
  this.gasLeft = gasLeft;
@@ -26,9 +29,12 @@ export class AvmContractCallResult {
26
29
  /**
27
30
  * Similar to AvmContractCallResult, but with a SimulationError and standard Gas
28
31
  * which are useful for consumption external to core AVM simulation.
29
- */
30
- export class AvmFinalizedCallResult {
31
- constructor(reverted, output, gasLeft, revertReason) {
32
+ */ export class AvmFinalizedCallResult {
33
+ reverted;
34
+ output;
35
+ gasLeft;
36
+ revertReason;
37
+ constructor(reverted, output, gasLeft, revertReason){
32
38
  this.reverted = reverted;
33
39
  this.output = output;
34
40
  this.gasLeft = gasLeft;
@@ -42,4 +48,3 @@ export class AvmFinalizedCallResult {
42
48
  return resultsStr;
43
49
  }
44
50
  }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2NvbnRyYWN0X2NhbGxfcmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F2bS9hdm1fY29udHJhY3RfY2FsbF9yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJNUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQ1MsUUFBaUIsRUFDakIsTUFBWSxFQUNaLE9BQWUsRUFDZixZQUE4QjtRQUg5QixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQU07UUFDWixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsaUJBQVksR0FBWixZQUFZLENBQWtCO0lBQ3BDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxVQUFVLEdBQUcsYUFBYSxJQUFJLENBQUMsUUFBUSxhQUFhLElBQUksQ0FBQyxNQUFNLGNBQWMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3pHLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLFVBQVUsSUFBSSxtQkFBbUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZELENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDM0csT0FBTyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RyxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQ1MsUUFBaUIsRUFDakIsTUFBWSxFQUNaLE9BQVksRUFDWixZQUE4QjtRQUg5QixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQU07UUFDWixZQUFPLEdBQVAsT0FBTyxDQUFLO1FBQ1osaUJBQVksR0FBWixZQUFZLENBQWtCO0lBQ3BDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxVQUFVLEdBQUcsYUFBYSxJQUFJLENBQUMsUUFBUSxhQUFhLElBQUksQ0FBQyxNQUFNLGNBQWMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3pHLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLFVBQVUsSUFBSSxtQkFBbUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZELENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0YifQ==
@@ -2,9 +2,15 @@ import { Fr } from '@aztec/foundation/fields';
2
2
  /**
3
3
  * Contains variables that remain constant during AVM execution
4
4
  * These variables are provided by the public kernel circuit
5
- */
6
- export class AvmExecutionEnvironment {
7
- constructor(address, sender, contractCallDepth, transactionFee, globals, isStaticCall, calldata) {
5
+ */ export class AvmExecutionEnvironment {
6
+ address;
7
+ sender;
8
+ contractCallDepth;
9
+ transactionFee;
10
+ globals;
11
+ isStaticCall;
12
+ calldata;
13
+ constructor(address, sender, contractCallDepth, transactionFee, globals, isStaticCall, calldata){
8
14
  this.address = address;
9
15
  this.sender = sender;
10
16
  this.contractCallDepth = contractCallDepth;
@@ -14,9 +20,7 @@ export class AvmExecutionEnvironment {
14
20
  this.calldata = calldata;
15
21
  }
16
22
  deriveEnvironmentForNestedCallInternal(targetAddress, calldata, isStaticCall) {
17
- return new AvmExecutionEnvironment(
18
- /*address=*/ targetAddress,
19
- /*sender=*/ this.address, this.contractCallDepth.add(Fr.ONE), this.transactionFee, this.globals, isStaticCall, calldata);
23
+ return new AvmExecutionEnvironment(/*address=*/ targetAddress, /*sender=*/ this.address, this.contractCallDepth.add(Fr.ONE), this.transactionFee, this.globals, isStaticCall, calldata);
20
24
  }
21
25
  deriveEnvironmentForNestedCall(targetAddress, calldata) {
22
26
  return this.deriveEnvironmentForNestedCallInternal(targetAddress, calldata, /*isStaticCall=*/ false);
@@ -25,4 +29,3 @@ export class AvmExecutionEnvironment {
25
29
  return this.deriveEnvironmentForNestedCallInternal(targetAddress, calldata, /*isStaticCall=*/ true);
26
30
  }
27
31
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2V4ZWN1dGlvbl9lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX2V4ZWN1dGlvbl9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUNrQixPQUFxQixFQUNyQixNQUFvQixFQUNwQixpQkFBcUIsRUFDckIsY0FBa0IsRUFDbEIsT0FBd0IsRUFDeEIsWUFBcUIsRUFDckIsUUFBYztRQU5kLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQUk7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQUk7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQVM7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBTTtJQUM3QixDQUFDO0lBRUksc0NBQXNDLENBQUMsYUFBMkIsRUFBRSxRQUFjLEVBQUUsWUFBcUI7UUFDL0csT0FBTyxJQUFJLHVCQUF1QjtRQUNoQyxZQUFZLENBQUMsYUFBYTtRQUMxQixXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFDeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQ2xDLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxPQUFPLEVBQ1osWUFBWSxFQUNaLFFBQVEsQ0FDVCxDQUFDO0lBQ0osQ0FBQztJQUVNLDhCQUE4QixDQUFDLGFBQTJCLEVBQUUsUUFBYztRQUMvRSxPQUFPLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFTSxvQ0FBb0MsQ0FBQyxhQUEyQixFQUFFLFFBQWM7UUFDckYsT0FBTyxJQUFJLENBQUMsc0NBQXNDLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RyxDQUFDO0NBQ0YifQ==
@@ -3,41 +3,51 @@ import { TypeTag } from './avm_memory_types.js';
3
3
  import { InstructionExecutionError } from './errors.js';
4
4
  import { Addressing, AddressingMode } from './opcodes/addressing_mode.js';
5
5
  import { Opcode } from './serialization/instruction_serialization.js';
6
- /** Maps a Gas struct to gasLeft properties. */
7
- export function gasToGasLeft(gas) {
8
- return { l2GasLeft: gas.l2Gas, daGasLeft: gas.daGas };
6
+ /** Maps a Gas struct to gasLeft properties. */ export function gasToGasLeft(gas) {
7
+ return {
8
+ l2GasLeft: gas.l2Gas,
9
+ daGasLeft: gas.daGas
10
+ };
9
11
  }
10
- /** Maps gasLeft properties to a gas struct. */
11
- export function gasLeftToGas(gasLeft) {
12
- return { l2Gas: gasLeft.l2GasLeft, daGas: gasLeft.daGasLeft };
12
+ /** Maps gasLeft properties to a gas struct. */ export function gasLeftToGas(gasLeft) {
13
+ return {
14
+ l2Gas: gasLeft.l2GasLeft,
15
+ daGas: gasLeft.daGasLeft
16
+ };
13
17
  }
14
- /** Creates a new instance with all values set to zero except the ones set. */
15
- export function makeGas(gasCost) {
16
- return { ...EmptyGas, ...gasCost };
18
+ /** Creates a new instance with all values set to zero except the ones set. */ export function makeGas(gasCost) {
19
+ return {
20
+ ...EmptyGas,
21
+ ...gasCost
22
+ };
17
23
  }
18
- /** Sums together multiple instances of Gas. */
19
- export function sumGas(...gases) {
20
- return gases.reduce((acc, gas) => ({
21
- l2Gas: acc.l2Gas + (gas.l2Gas ?? 0),
22
- daGas: acc.daGas + (gas.daGas ?? 0),
23
- }), EmptyGas);
24
+ /** Sums together multiple instances of Gas. */ export function sumGas(...gases) {
25
+ return gases.reduce((acc, gas)=>({
26
+ l2Gas: acc.l2Gas + (gas.l2Gas ?? 0),
27
+ daGas: acc.daGas + (gas.daGas ?? 0)
28
+ }), EmptyGas);
24
29
  }
25
- /** Multiplies a gas instance by a scalar. */
26
- export function mulGas(gas, scalar) {
27
- return { l2Gas: (gas.l2Gas ?? 0) * scalar, daGas: (gas.daGas ?? 0) * scalar };
30
+ /** Multiplies a gas instance by a scalar. */ export function mulGas(gas, scalar) {
31
+ return {
32
+ l2Gas: (gas.l2Gas ?? 0) * scalar,
33
+ daGas: (gas.daGas ?? 0) * scalar
34
+ };
28
35
  }
29
- /** Zero gas across all gas dimensions. */
30
- export const EmptyGas = {
36
+ /** Zero gas across all gas dimensions. */ export const EmptyGas = {
31
37
  l2Gas: 0,
32
- daGas: 0,
38
+ daGas: 0
33
39
  };
34
40
  function makeCost(l2Gas, daGas) {
35
- return { l2Gas, daGas };
41
+ return {
42
+ l2Gas,
43
+ daGas
44
+ };
36
45
  }
37
- /** Dimensions of gas usage: L1, L2, and DA. */
38
- export const GAS_DIMENSIONS = ['l2Gas', 'daGas'];
39
- /** Base gas costs for each instruction. Additional gas cost may be added on top due to memory or storage accesses, etc. */
40
- const BASE_GAS_COSTS = {
46
+ /** Dimensions of gas usage: L1, L2, and DA. */ export const GAS_DIMENSIONS = [
47
+ 'l2Gas',
48
+ 'daGas'
49
+ ];
50
+ /** Base gas costs for each instruction. Additional gas cost may be added on top due to memory or storage accesses, etc. */ const BASE_GAS_COSTS = {
41
51
  [Opcode.ADD_8]: makeCost(c.AVM_ADD_BASE_L2_GAS, 0),
42
52
  [Opcode.ADD_16]: makeCost(c.AVM_ADD_BASE_L2_GAS, 0),
43
53
  [Opcode.SUB_8]: makeCost(c.AVM_SUB_BASE_L2_GAS, 0),
@@ -105,51 +115,79 @@ const BASE_GAS_COSTS = {
105
115
  [Opcode.KECCAKF1600]: makeCost(c.AVM_KECCAKF1600_BASE_L2_GAS, 0),
106
116
  [Opcode.ECADD]: makeCost(c.AVM_ECADD_BASE_L2_GAS, 0),
107
117
  [Opcode.MSM]: makeCost(c.AVM_MSM_BASE_L2_GAS, 0),
108
- [Opcode.TORADIXBE]: makeCost(c.AVM_TORADIXBE_BASE_L2_GAS, 0),
118
+ [Opcode.TORADIXBE]: makeCost(c.AVM_TORADIXBE_BASE_L2_GAS, 0)
109
119
  };
110
120
  const DYNAMIC_GAS_COSTS = new Map([
111
- [Opcode.CALLDATACOPY, makeCost(c.AVM_CALLDATACOPY_DYN_L2_GAS, 0)],
112
- [Opcode.RETURNDATACOPY, makeCost(c.AVM_RETURNDATACOPY_DYN_L2_GAS, 0)],
113
- [Opcode.EMITUNENCRYPTEDLOG, makeCost(c.AVM_EMITUNENCRYPTEDLOG_DYN_L2_GAS, c.AVM_EMITUNENCRYPTEDLOG_DYN_DA_GAS)],
114
- [Opcode.CALL, makeCost(c.AVM_CALL_DYN_L2_GAS, 0)],
115
- [Opcode.STATICCALL, makeCost(c.AVM_STATICCALL_DYN_L2_GAS, 0)],
116
- [Opcode.RETURN, makeCost(c.AVM_RETURN_DYN_L2_GAS, 0)],
117
- [Opcode.REVERT_8, makeCost(c.AVM_REVERT_DYN_L2_GAS, 0)],
118
- [Opcode.REVERT_16, makeCost(c.AVM_REVERT_DYN_L2_GAS, 0)],
119
- [Opcode.DEBUGLOG, makeCost(c.AVM_DEBUGLOG_DYN_L2_GAS, 0)],
120
- [Opcode.MSM, makeCost(c.AVM_MSM_DYN_L2_GAS, 0)],
121
- [Opcode.TORADIXBE, makeCost(c.AVM_TORADIXBE_DYN_L2_GAS, 0)],
121
+ [
122
+ Opcode.CALLDATACOPY,
123
+ makeCost(c.AVM_CALLDATACOPY_DYN_L2_GAS, 0)
124
+ ],
125
+ [
126
+ Opcode.RETURNDATACOPY,
127
+ makeCost(c.AVM_RETURNDATACOPY_DYN_L2_GAS, 0)
128
+ ],
129
+ [
130
+ Opcode.EMITUNENCRYPTEDLOG,
131
+ makeCost(c.AVM_EMITUNENCRYPTEDLOG_DYN_L2_GAS, c.AVM_EMITUNENCRYPTEDLOG_DYN_DA_GAS)
132
+ ],
133
+ [
134
+ Opcode.CALL,
135
+ makeCost(c.AVM_CALL_DYN_L2_GAS, 0)
136
+ ],
137
+ [
138
+ Opcode.STATICCALL,
139
+ makeCost(c.AVM_STATICCALL_DYN_L2_GAS, 0)
140
+ ],
141
+ [
142
+ Opcode.RETURN,
143
+ makeCost(c.AVM_RETURN_DYN_L2_GAS, 0)
144
+ ],
145
+ [
146
+ Opcode.REVERT_8,
147
+ makeCost(c.AVM_REVERT_DYN_L2_GAS, 0)
148
+ ],
149
+ [
150
+ Opcode.REVERT_16,
151
+ makeCost(c.AVM_REVERT_DYN_L2_GAS, 0)
152
+ ],
153
+ [
154
+ Opcode.DEBUGLOG,
155
+ makeCost(c.AVM_DEBUGLOG_DYN_L2_GAS, 0)
156
+ ],
157
+ [
158
+ Opcode.MSM,
159
+ makeCost(c.AVM_MSM_DYN_L2_GAS, 0)
160
+ ],
161
+ [
162
+ Opcode.TORADIXBE,
163
+ makeCost(c.AVM_TORADIXBE_DYN_L2_GAS, 0)
164
+ ]
122
165
  ]);
123
- /** Returns the fixed base gas cost for a given opcode. */
124
- export function getBaseGasCost(opcode) {
166
+ /** Returns the fixed base gas cost for a given opcode. */ export function getBaseGasCost(opcode) {
125
167
  return BASE_GAS_COSTS[opcode];
126
168
  }
127
169
  export function getDynamicGasCost(opcode) {
128
170
  return DYNAMIC_GAS_COSTS.has(opcode) ? DYNAMIC_GAS_COSTS.get(opcode) : makeCost(0, 0);
129
171
  }
130
- /** Returns the gas cost associated with the memory operations performed. */
131
- export function getMemoryGasCost(args) {
172
+ /** Returns the gas cost associated with the memory operations performed. */ export function getMemoryGasCost(args) {
132
173
  const { reads, writes, indirect } = args;
133
174
  const indirectCount = Addressing.fromWire(indirect ?? 0).count(AddressingMode.INDIRECT);
134
- const l2MemoryGasCost = (reads ?? 0) * GAS_COST_CONSTANTS.MEMORY_READ +
135
- (writes ?? 0) * GAS_COST_CONSTANTS.MEMORY_WRITE +
136
- indirectCount * GAS_COST_CONSTANTS.MEMORY_INDIRECT_READ_PENALTY;
137
- return makeGas({ l2Gas: l2MemoryGasCost });
175
+ const l2MemoryGasCost = (reads ?? 0) * GAS_COST_CONSTANTS.MEMORY_READ + (writes ?? 0) * GAS_COST_CONSTANTS.MEMORY_WRITE + indirectCount * GAS_COST_CONSTANTS.MEMORY_INDIRECT_READ_PENALTY;
176
+ return makeGas({
177
+ l2Gas: l2MemoryGasCost
178
+ });
138
179
  }
139
- /** Constants used in base cost calculations. */
140
- export const GAS_COST_CONSTANTS = {
180
+ /** Constants used in base cost calculations. */ export const GAS_COST_CONSTANTS = {
141
181
  MEMORY_READ: 10,
142
182
  MEMORY_INDIRECT_READ_PENALTY: 10,
143
- MEMORY_WRITE: 100,
183
+ MEMORY_WRITE: 100
144
184
  };
145
- /** Returns gas cost for an operation on a given type tag based on the base cost per byte. */
146
- export function getGasCostForTypeTag(tag, baseCost) {
185
+ /** Returns gas cost for an operation on a given type tag based on the base cost per byte. */ export function getGasCostForTypeTag(tag, baseCost) {
147
186
  return mulGas(baseCost, getGasCostMultiplierFromTypeTag(tag));
148
187
  }
149
- /** Returns a multiplier based on the size of the type represented by the tag. Throws on uninitialized or invalid. */
150
- function getGasCostMultiplierFromTypeTag(tag) {
151
- switch (tag) {
152
- case TypeTag.UINT1: // same as u8
188
+ /** Returns a multiplier based on the size of the type represented by the tag. Throws on uninitialized or invalid. */ function getGasCostMultiplierFromTypeTag(tag) {
189
+ switch(tag){
190
+ case TypeTag.UINT1:
153
191
  return 1;
154
192
  case TypeTag.UINT8:
155
193
  return 1;
@@ -167,4 +205,3 @@ function getGasCostMultiplierFromTypeTag(tag) {
167
205
  throw new InstructionExecutionError(`Invalid tag type for gas cost multiplier: ${TypeTag[tag]}`);
168
206
  }
169
207
  }
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2dhcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX2dhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssQ0FBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWxELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFRdEUsK0NBQStDO0FBQy9DLE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBUTtJQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN4RCxDQUFDO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBaUQ7SUFDNUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDaEUsQ0FBQztBQUVELDhFQUE4RTtBQUM5RSxNQUFNLFVBQVUsT0FBTyxDQUFDLE9BQXFCO0lBQzNDLE9BQU8sRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0FBQ3JDLENBQUM7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBTSxVQUFVLE1BQU0sQ0FBQyxHQUFHLEtBQXFCO0lBQzdDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FDakIsQ0FBQyxHQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDbkMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztLQUNwQyxDQUFDLEVBQ0YsUUFBUSxDQUNULENBQUM7QUFDSixDQUFDO0FBRUQsNkNBQTZDO0FBQzdDLE1BQU0sVUFBVSxNQUFNLENBQUMsR0FBaUIsRUFBRSxNQUFjO0lBQ3RELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2hGLENBQUM7QUFFRCwwQ0FBMEM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFRO0lBQzNCLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLENBQUM7Q0FDVCxDQUFDO0FBRUYsU0FBUyxRQUFRLENBQUMsS0FBYSxFQUFFLEtBQWE7SUFDNUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQVUsQ0FBQztBQUUxRCwySEFBMkg7QUFDM0gsTUFBTSxjQUFjLEdBQXdCO0lBQzFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO0lBQzdFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsNEJB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
@@ -1,87 +1,87 @@
1
- import { GAS_DIMENSIONS } from './avm_gas.js';
2
1
  import { TaggedMemory } from './avm_memory_types.js';
3
2
  import { OutOfGasError } from './errors.js';
4
3
  /**
5
4
  * Avm state modified on an instruction-per-instruction basis.
6
- */
7
- export class AvmMachineState {
8
- constructor(gasLeftOrL2GasLeft, daGasLeft) {
9
- /** program counter, byte based */
10
- this.pc = 0;
11
- /** program counter of the next instruction, byte based */
12
- this.nextPc = 0;
13
- /** return/revertdata of the last nested call. */
14
- this.nestedReturndata = [];
15
- /**
16
- * On INTERNALCALL, internal call stack is pushed to with the current pc and the return pc.
17
- * On INTERNALRETURN, value is popped from the internal call stack and assigned to the return pc.
18
- */
19
- this.internalCallStack = [];
20
- /** Memory accessible to user code */
21
- this.memory = new TaggedMemory();
22
- /**
23
- * Signals that execution should end.
24
- * AvmContext execution continues executing instructions until the machine state signals "halted"
25
- */
26
- this.halted = false;
27
- /** Signals that execution has reverted normally (this does not cover exceptional halts) */
28
- this.reverted = false;
29
- /** Output data must NOT be modified once it is set */
30
- this.output = [];
5
+ */ export class AvmMachineState {
6
+ /** gas remaining of the gas allocated for a contract call */ l2GasLeft;
7
+ daGasLeft;
8
+ /** program counter, byte based */ pc = 0;
9
+ /** program counter of the next instruction, byte based */ nextPc = 0;
10
+ /** return/revertdata of the last nested call. */ nestedReturndata = [];
11
+ /**
12
+ * Used to track the call stack and revert data of nested calls.
13
+ * This is used to provide a more detailed revert reason when a contract call reverts.
14
+ * It is only a heuristic and may not always provide the correct revert reason.
15
+ */ collectedRevertInfo;
16
+ /**
17
+ * On INTERNALCALL, internal call stack is pushed to with the current pc and the return pc.
18
+ * On INTERNALRETURN, value is popped from the internal call stack and assigned to the return pc.
19
+ */ internalCallStack = [];
20
+ /** Memory accessible to user code */ memory = new TaggedMemory();
21
+ /**
22
+ * Signals that execution should end.
23
+ * AvmContext execution continues executing instructions until the machine state signals "halted"
24
+ */ halted = false;
25
+ /** Signals that execution has reverted normally (this does not cover exceptional halts) */ reverted = false;
26
+ /** Output data must NOT be modified once it is set */ output = [];
27
+ constructor(gasLeftOrL2GasLeft, daGasLeft){
31
28
  if (typeof gasLeftOrL2GasLeft === 'object') {
32
29
  ({ l2Gas: this.l2GasLeft, daGas: this.daGasLeft } = gasLeftOrL2GasLeft);
33
- }
34
- else {
30
+ } else {
35
31
  this.l2GasLeft = gasLeftOrL2GasLeft;
36
32
  this.daGasLeft = daGasLeft;
37
33
  }
38
34
  }
39
35
  get gasLeft() {
40
- return { l2Gas: this.l2GasLeft, daGas: this.daGasLeft };
36
+ return {
37
+ l2Gas: this.l2GasLeft,
38
+ daGas: this.daGasLeft
39
+ };
41
40
  }
42
41
  static fromState(state) {
43
42
  return new AvmMachineState(state.l2GasLeft, state.daGasLeft);
44
43
  }
45
44
  /**
46
- * Consumes the given gas.
47
- * Should any of the gas dimensions get depleted, it sets all gas left to zero and triggers
48
- * an exceptional halt by throwing an OutOfGasError.
49
- */
50
- consumeGas(gasCost) {
45
+ * Consumes the given gas.
46
+ * Should any of the gas dimensions get depleted, it sets all gas left to zero and triggers
47
+ * an exceptional halt by throwing an OutOfGasError.
48
+ */ consumeGas(gasCost) {
51
49
  // Assert there is enough gas on every dimension.
52
- const outOfGasDimensions = GAS_DIMENSIONS.filter(dimension => this[`${dimension}Left`] - (gasCost[dimension] ?? 0) < 0);
50
+ const outOfL2Gas = this.l2GasLeft - (gasCost.l2Gas ?? 0) < 0;
51
+ const outOfDaGas = this.daGasLeft - (gasCost.daGas ?? 0) < 0;
53
52
  // If not, trigger an exceptional halt.
54
- // See https://yp-aztec.netlify.app/docs/public-vm/execution#gas-checks-and-tracking
55
- if (outOfGasDimensions.length > 0) {
53
+ if (outOfL2Gas || outOfDaGas) {
56
54
  this.exceptionalHalt();
57
- throw new OutOfGasError(outOfGasDimensions);
55
+ const dimensions = [];
56
+ if (outOfL2Gas) {
57
+ dimensions.push('l2Gas');
58
+ }
59
+ if (outOfDaGas) {
60
+ dimensions.push('daGas');
61
+ }
62
+ throw new OutOfGasError(dimensions);
58
63
  }
59
64
  // Otherwise, charge the corresponding gas
60
- for (const dimension of GAS_DIMENSIONS) {
61
- this[`${dimension}Left`] -= gasCost[dimension] ?? 0;
62
- }
65
+ this.l2GasLeft -= gasCost.l2Gas ?? 0;
66
+ this.daGasLeft -= gasCost.daGas ?? 0;
63
67
  }
64
- /** Increases the gas left by the amounts specified. */
65
- refundGas(gasRefund) {
66
- for (const dimension of GAS_DIMENSIONS) {
67
- this[`${dimension}Left`] += gasRefund[dimension] ?? 0;
68
- }
68
+ /** Increases the gas left by the amounts specified. */ refundGas(gasRefund) {
69
+ this.l2GasLeft += gasRefund.l2Gas ?? 0;
70
+ this.daGasLeft += gasRefund.daGas ?? 0;
69
71
  }
70
72
  /**
71
- * Halt as successful
72
- * Output data must NOT be modified once it is set
73
- * @param output
74
- */
75
- return(output) {
73
+ * Halt as successful
74
+ * Output data must NOT be modified once it is set
75
+ * @param output
76
+ */ return(output) {
76
77
  this.halted = true;
77
78
  this.output = output;
78
79
  }
79
80
  /**
80
- * Halt as reverted
81
- * Output data must NOT be modified once it is set
82
- * @param output
83
- */
84
- revert(output) {
81
+ * Halt as reverted
82
+ * Output data must NOT be modified once it is set
83
+ * @param output
84
+ */ revert(output) {
85
85
  this.halted = true;
86
86
  this.reverted = true;
87
87
  this.output = output;
@@ -96,12 +96,11 @@ export class AvmMachineState {
96
96
  return this.output;
97
97
  }
98
98
  /**
99
- * Flag an exceptional halt. Clears gas left and sets the reverted flag. No output data.
100
- */
101
- exceptionalHalt() {
102
- GAS_DIMENSIONS.forEach(dimension => (this[`${dimension}Left`] = 0));
99
+ * Flag an exceptional halt. Clears gas left and sets the reverted flag. No output data.
100
+ */ exceptionalHalt() {
101
+ this.l2GasLeft = 0;
102
+ this.daGasLeft = 0;
103
103
  this.reverted = true;
104
104
  this.halted = true;
105
105
  }
106
106
  }
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX21hY2hpbmVfc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtL2F2bV9tYWNoaW5lX3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxjQUFjLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBd0IsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBeUJsRTs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBc0MxQixZQUFZLGtCQUFnQyxFQUFFLFNBQWtCO1FBbENoRSxrQ0FBa0M7UUFDM0IsT0FBRSxHQUFXLENBQUMsQ0FBQztRQUN0QiwwREFBMEQ7UUFDbkQsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUMxQixpREFBaUQ7UUFDMUMscUJBQWdCLEdBQVMsRUFBRSxDQUFDO1FBUW5DOzs7V0FHRztRQUNJLHNCQUFpQixHQUFxQixFQUFFLENBQUM7UUFFaEQscUNBQXFDO1FBQ3JCLFdBQU0sR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxRDs7O1dBR0c7UUFDSyxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ2hDLDJGQUEyRjtRQUNuRixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ2xDLHNEQUFzRDtRQUM5QyxXQUFNLEdBQVMsRUFBRSxDQUFDO1FBS3hCLElBQUksT0FBTyxrQkFBa0IsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzFFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxrQkFBbUIsQ0FBQztZQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FB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