@aztec/simulator 0.0.1-commit.b6e433891 → 0.0.1-commit.b8a057fa

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 (363) hide show
  1. package/dest/client.d.ts +1 -3
  2. package/dest/client.d.ts.map +1 -1
  3. package/dest/client.js +0 -2
  4. package/dest/private/acvm_wasm.d.ts +1 -1
  5. package/dest/private/acvm_wasm.d.ts.map +1 -1
  6. package/dest/private/acvm_wasm.js +3 -1
  7. package/dest/private/circuit_recording/circuit_recorder.d.ts +36 -23
  8. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  9. package/dest/private/circuit_recording/circuit_recorder.js +65 -69
  10. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +7 -19
  11. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  12. package/dest/private/circuit_recording/file_circuit_recorder.js +38 -42
  13. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  14. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  15. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
  16. package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
  17. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  18. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +2 -1
  19. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  20. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +18 -3
  21. package/dest/public/avm/testing/utils.d.ts +32 -0
  22. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  23. package/dest/public/avm/{fixtures → testing}/utils.js +4 -34
  24. package/dest/public/avm_simulator.d.ts +28 -0
  25. package/dest/public/avm_simulator.d.ts.map +1 -0
  26. package/dest/public/avm_simulator.js +4 -0
  27. package/dest/public/avm_simulator_pool.d.ts +45 -0
  28. package/dest/public/avm_simulator_pool.d.ts.map +1 -0
  29. package/dest/public/avm_simulator_pool.js +197 -0
  30. package/dest/public/cdb/generated/api_types.d.ts +171 -0
  31. package/dest/public/cdb/generated/api_types.d.ts.map +1 -0
  32. package/dest/public/cdb/generated/api_types.js +314 -0
  33. package/dest/public/cdb/generated/server.d.ts +26 -0
  34. package/dest/public/cdb/generated/server.d.ts.map +1 -0
  35. package/dest/public/cdb/generated/server.js +135 -0
  36. package/dest/public/cdb_ipc_server.d.ts +33 -0
  37. package/dest/public/cdb_ipc_server.d.ts.map +1 -0
  38. package/dest/public/cdb_ipc_server.js +153 -0
  39. package/dest/public/contracts_db_checkpoint.d.ts +2 -2
  40. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
  41. package/dest/public/contracts_db_checkpoint.js +1 -1
  42. package/dest/public/fixtures/amm_test.js +2 -2
  43. package/dest/public/fixtures/bulk_test.d.ts +1 -1
  44. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  45. package/dest/public/fixtures/bulk_test.js +33 -6
  46. package/dest/public/fixtures/custom_bytecode_tester.d.ts +1 -1
  47. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  48. package/dest/public/fixtures/custom_bytecode_tester.js +2 -2
  49. package/dest/public/fixtures/index.d.ts +2 -4
  50. package/dest/public/fixtures/index.d.ts.map +1 -1
  51. package/dest/public/fixtures/index.js +1 -3
  52. package/dest/public/fixtures/public_processor_test_env.d.ts +30 -0
  53. package/dest/public/fixtures/public_processor_test_env.d.ts.map +1 -0
  54. package/dest/public/fixtures/public_processor_test_env.js +73 -0
  55. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +11 -7
  56. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  57. package/dest/public/fixtures/public_tx_simulation_tester.js +33 -43
  58. package/dest/public/fixtures/simple_contract_data_source.js +1 -1
  59. package/dest/public/fixtures/token_test.js +3 -3
  60. package/dest/public/fixtures/utils.d.ts +1 -1
  61. package/dest/public/fixtures/utils.d.ts.map +1 -1
  62. package/dest/public/fixtures/utils.js +16 -15
  63. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +11 -4
  64. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
  65. package/dest/public/fuzzing/avm_fuzzer_simulator.js +24 -10
  66. package/dest/public/fuzzing/avm_simulator_bin.js +4 -4
  67. package/dest/public/index.d.ts +5 -2
  68. package/dest/public/index.d.ts.map +1 -1
  69. package/dest/public/index.js +2 -1
  70. package/dest/public/public_db_sources.d.ts +6 -3
  71. package/dest/public/public_db_sources.d.ts.map +1 -1
  72. package/dest/public/public_db_sources.js +16 -10
  73. package/dest/public/public_processor/guarded_merkle_tree.d.ts +4 -3
  74. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  75. package/dest/public/public_processor/guarded_merkle_tree.js +3 -0
  76. package/dest/public/public_processor/public_processor.d.ts +11 -6
  77. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  78. package/dest/public/public_processor/public_processor.js +68 -39
  79. package/dest/public/public_processor/public_processor_metrics.d.ts +4 -1
  80. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  81. package/dest/public/public_processor/public_processor_metrics.js +8 -0
  82. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +17 -0
  83. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  84. package/dest/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.js → dumping_public_tx_simulator.js} +10 -23
  85. package/dest/public/public_tx_simulator/factories.d.ts +8 -8
  86. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
  87. package/dest/public/public_tx_simulator/factories.js +8 -8
  88. package/dest/public/public_tx_simulator/index.d.ts +4 -6
  89. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  90. package/dest/public/public_tx_simulator/index.js +2 -4
  91. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +42 -71
  92. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  93. package/dest/public/public_tx_simulator/public_tx_simulator.js +98 -318
  94. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +24 -0
  95. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  96. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +31 -0
  97. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +5 -5
  98. package/dest/public/test_executor_metrics.d.ts +1 -6
  99. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  100. package/dest/public/test_executor_metrics.js +0 -22
  101. package/package.json +22 -18
  102. package/src/client.ts +0 -2
  103. package/src/private/acvm_wasm.ts +4 -1
  104. package/src/private/circuit_recording/circuit_recorder.ts +84 -78
  105. package/src/private/circuit_recording/file_circuit_recorder.ts +38 -48
  106. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
  107. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +23 -3
  108. package/src/public/avm/{fixtures → testing}/utils.ts +4 -40
  109. package/src/public/avm_simulator.ts +29 -0
  110. package/src/public/avm_simulator_pool.ts +226 -0
  111. package/src/public/cdb/generated/api_types.ts +457 -0
  112. package/src/public/cdb/generated/server.ts +109 -0
  113. package/src/public/cdb_ipc_server.ts +197 -0
  114. package/src/public/contracts_db_checkpoint.ts +1 -1
  115. package/src/public/fixtures/amm_test.ts +2 -2
  116. package/src/public/fixtures/bulk_test.ts +31 -6
  117. package/src/public/fixtures/custom_bytecode_tester.ts +2 -2
  118. package/src/public/fixtures/index.ts +1 -3
  119. package/src/public/fixtures/public_processor_test_env.ts +88 -0
  120. package/src/public/fixtures/public_tx_simulation_tester.ts +41 -60
  121. package/src/public/fixtures/simple_contract_data_source.ts +1 -1
  122. package/src/public/fixtures/token_test.ts +3 -3
  123. package/src/public/fixtures/utils.ts +18 -20
  124. package/src/public/fuzzing/avm_fuzzer_simulator.ts +25 -10
  125. package/src/public/fuzzing/avm_simulator_bin.ts +3 -5
  126. package/src/public/index.ts +7 -3
  127. package/src/public/public_db_sources.ts +21 -14
  128. package/src/public/public_processor/guarded_merkle_tree.ts +5 -2
  129. package/src/public/public_processor/public_processor.ts +90 -47
  130. package/src/public/public_processor/public_processor_metrics.ts +12 -0
  131. package/src/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.ts → dumping_public_tx_simulator.ts} +15 -31
  132. package/src/public/public_tx_simulator/factories.ts +27 -10
  133. package/src/public/public_tx_simulator/index.ts +6 -5
  134. package/src/public/public_tx_simulator/public_tx_simulator.ts +139 -476
  135. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
  136. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +5 -5
  137. package/src/public/test_executor_metrics.ts +0 -24
  138. package/dest/public/avm/avm_context.d.ts +0 -41
  139. package/dest/public/avm/avm_context.d.ts.map +0 -1
  140. package/dest/public/avm/avm_context.js +0 -44
  141. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  142. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  143. package/dest/public/avm/avm_contract_call_result.js +0 -54
  144. package/dest/public/avm/avm_execution_environment.d.ts +0 -24
  145. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  146. package/dest/public/avm/avm_execution_environment.js +0 -33
  147. package/dest/public/avm/avm_gas.d.ts +0 -44
  148. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  149. package/dest/public/avm/avm_gas.js +0 -195
  150. package/dest/public/avm/avm_machine_state.d.ts +0 -98
  151. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  152. package/dest/public/avm/avm_machine_state.js +0 -110
  153. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  154. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  155. package/dest/public/avm/avm_memory_types.js +0 -354
  156. package/dest/public/avm/avm_simulator.d.ts +0 -41
  157. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  158. package/dest/public/avm/avm_simulator.js +0 -192
  159. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  160. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  161. package/dest/public/avm/avm_simulator_interface.js +0 -3
  162. package/dest/public/avm/calldata.d.ts +0 -51
  163. package/dest/public/avm/calldata.d.ts.map +0 -1
  164. package/dest/public/avm/calldata.js +0 -63
  165. package/dest/public/avm/errors.d.ts +0 -104
  166. package/dest/public/avm/errors.d.ts.map +0 -1
  167. package/dest/public/avm/errors.js +0 -141
  168. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +0 -2
  169. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +0 -1
  170. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  171. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  172. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -84
  173. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  174. package/dest/public/avm/fixtures/initializers.d.ts +0 -42
  175. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  176. package/dest/public/avm/fixtures/initializers.js +0 -45
  177. package/dest/public/avm/fixtures/utils.d.ts +0 -39
  178. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  179. package/dest/public/avm/index.d.ts +0 -2
  180. package/dest/public/avm/index.d.ts.map +0 -1
  181. package/dest/public/avm/index.js +0 -1
  182. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -74
  183. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  184. package/dest/public/avm/opcodes/accrued_substate.js +0 -254
  185. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  186. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  187. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  188. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -49
  189. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  190. package/dest/public/avm/opcodes/arithmetic.js +0 -97
  191. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  192. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  193. package/dest/public/avm/opcodes/bitwise.js +0 -99
  194. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  195. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  196. package/dest/public/avm/opcodes/comparators.js +0 -43
  197. package/dest/public/avm/opcodes/contract.d.ts +0 -20
  198. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  199. package/dest/public/avm/opcodes/contract.js +0 -65
  200. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  201. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  202. package/dest/public/avm/opcodes/control_flow.js +0 -107
  203. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  204. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  205. package/dest/public/avm/opcodes/conversion.js +0 -333
  206. package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
  207. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  208. package/dest/public/avm/opcodes/ec_add.js +0 -93
  209. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  210. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  211. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  212. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  213. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  214. package/dest/public/avm/opcodes/external_calls.js +0 -210
  215. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  216. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  217. package/dest/public/avm/opcodes/hashing.js +0 -119
  218. package/dest/public/avm/opcodes/index.d.ts +0 -16
  219. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  220. package/dest/public/avm/opcodes/index.js +0 -15
  221. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  222. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  223. package/dest/public/avm/opcodes/instruction.js +0 -95
  224. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  225. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  226. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  227. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  228. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  229. package/dest/public/avm/opcodes/memory.js +0 -257
  230. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  231. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  232. package/dest/public/avm/opcodes/misc.js +0 -73
  233. package/dest/public/avm/opcodes/storage.d.ts +0 -25
  234. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  235. package/dest/public/avm/opcodes/storage.js +0 -78
  236. package/dest/public/avm/revert_reason.d.ts +0 -18
  237. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  238. package/dest/public/avm/revert_reason.js +0 -39
  239. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  240. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  241. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  242. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  243. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  244. package/dest/public/avm/serialization/bytecode_serialization.js +0 -336
  245. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  246. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  247. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  248. package/dest/public/avm/test_utils.d.ts +0 -15
  249. package/dest/public/avm/test_utils.d.ts.map +0 -1
  250. package/dest/public/avm/test_utils.js +0 -44
  251. package/dest/public/debug_fn_name.d.ts +0 -18
  252. package/dest/public/debug_fn_name.d.ts.map +0 -1
  253. package/dest/public/debug_fn_name.js +0 -37
  254. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -12
  255. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  256. package/dest/public/fixtures/custom_bytecode_tests.js +0 -174
  257. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -4
  258. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  259. package/dest/public/fixtures/minimal_public_tx.js +0 -19
  260. package/dest/public/fixtures/opcode_spammer.d.ts +0 -122
  261. package/dest/public/fixtures/opcode_spammer.d.ts.map +0 -1
  262. package/dest/public/fixtures/opcode_spammer.js +0 -1653
  263. package/dest/public/hinting_db_sources.d.ts +0 -80
  264. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  265. package/dest/public/hinting_db_sources.js +0 -356
  266. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +0 -19
  267. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +0 -1
  268. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +0 -98
  269. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -53
  270. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  271. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -131
  272. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +0 -42
  273. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +0 -1
  274. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +0 -86
  275. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +0 -30
  276. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +0 -1
  277. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +0 -171
  278. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +0 -23
  279. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +0 -1
  280. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -31
  281. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  282. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  283. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -131
  284. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  285. package/dest/public/public_tx_simulator/public_tx_context.js +0 -300
  286. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  287. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  288. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -415
  289. package/dest/public/side_effect_trace.d.ts +0 -87
  290. package/dest/public/side_effect_trace.d.ts.map +0 -1
  291. package/dest/public/side_effect_trace.js +0 -199
  292. package/dest/public/side_effect_trace_interface.d.ts +0 -22
  293. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  294. package/dest/public/side_effect_trace_interface.js +0 -1
  295. package/dest/public/state_manager/index.d.ts +0 -2
  296. package/dest/public/state_manager/index.d.ts.map +0 -1
  297. package/dest/public/state_manager/index.js +0 -1
  298. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  299. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  300. package/dest/public/state_manager/nullifiers.js +0 -92
  301. package/dest/public/state_manager/public_storage.d.ts +0 -66
  302. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  303. package/dest/public/state_manager/public_storage.js +0 -145
  304. package/dest/public/state_manager/state_manager.d.ts +0 -170
  305. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  306. package/dest/public/state_manager/state_manager.js +0 -402
  307. package/src/public/avm/avm_context.ts +0 -61
  308. package/src/public/avm/avm_contract_call_result.ts +0 -69
  309. package/src/public/avm/avm_execution_environment.ts +0 -51
  310. package/src/public/avm/avm_gas.ts +0 -183
  311. package/src/public/avm/avm_machine_state.ts +0 -170
  312. package/src/public/avm/avm_memory_types.ts +0 -440
  313. package/src/public/avm/avm_simulator.ts +0 -279
  314. package/src/public/avm/avm_simulator_interface.ts +0 -8
  315. package/src/public/avm/calldata.ts +0 -100
  316. package/src/public/avm/errors.ts +0 -177
  317. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -122
  318. package/src/public/avm/fixtures/initializers.ts +0 -103
  319. package/src/public/avm/index.ts +0 -1
  320. package/src/public/avm/opcodes/accrued_substate.ts +0 -285
  321. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  322. package/src/public/avm/opcodes/arithmetic.ts +0 -129
  323. package/src/public/avm/opcodes/bitwise.ts +0 -113
  324. package/src/public/avm/opcodes/comparators.ts +0 -55
  325. package/src/public/avm/opcodes/contract.ts +0 -72
  326. package/src/public/avm/opcodes/control_flow.ts +0 -123
  327. package/src/public/avm/opcodes/conversion.ts +0 -104
  328. package/src/public/avm/opcodes/ec_add.ts +0 -105
  329. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  330. package/src/public/avm/opcodes/external_calls.ts +0 -262
  331. package/src/public/avm/opcodes/hashing.ts +0 -151
  332. package/src/public/avm/opcodes/index.ts +0 -15
  333. package/src/public/avm/opcodes/instruction.ts +0 -136
  334. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  335. package/src/public/avm/opcodes/memory.ts +0 -293
  336. package/src/public/avm/opcodes/misc.ts +0 -102
  337. package/src/public/avm/opcodes/storage.ts +0 -95
  338. package/src/public/avm/revert_reason.ts +0 -58
  339. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  340. package/src/public/avm/serialization/bytecode_serialization.ts +0 -215
  341. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  342. package/src/public/avm/test_utils.ts +0 -64
  343. package/src/public/debug_fn_name.ts +0 -52
  344. package/src/public/fixtures/custom_bytecode_tests.ts +0 -228
  345. package/src/public/fixtures/minimal_public_tx.ts +0 -26
  346. package/src/public/fixtures/opcode_spammer.ts +0 -1717
  347. package/src/public/hinting_db_sources.ts +0 -609
  348. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +0 -124
  349. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -210
  350. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +0 -134
  351. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +0 -239
  352. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -105
  353. package/src/public/public_tx_simulator/public_tx_context.ts +0 -484
  354. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  355. package/src/public/side_effect_trace.ts +0 -293
  356. package/src/public/side_effect_trace_interface.ts +0 -28
  357. package/src/public/state_manager/index.ts +0 -1
  358. package/src/public/state_manager/nullifiers.ts +0 -103
  359. package/src/public/state_manager/public_storage.ts +0 -174
  360. package/src/public/state_manager/state_manager.ts +0 -569
  361. /package/dest/public/avm/{fixtures → testing}/account_proof_fetcher.js +0 -0
  362. /package/src/public/avm/{fixtures → testing}/account_proof.json +0 -0
  363. /package/src/public/avm/{fixtures → testing}/account_proof_fetcher.ts +0 -0
@@ -1,69 +0,0 @@
1
- import type { SimulationError } from '@aztec/stdlib/errors';
2
- import { Gas } from '@aztec/stdlib/gas';
3
-
4
- import { inspect } from 'util';
5
-
6
- import { createSimulationError } from '../../common/errors.js';
7
- import type { Gas as AvmGas } from './avm_gas.js';
8
- import type { ReturnData } from './calldata.js';
9
- import type { AvmRevertReason } from './errors.js';
10
-
11
- /**
12
- * Results of an contract call's execution in the AVM.
13
- */
14
- export class AvmContractCallResult {
15
- constructor(
16
- public reverted: boolean,
17
- public output: ReturnData,
18
- public gasLeft: AvmGas,
19
- public revertReason?: AvmRevertReason,
20
- public totalInstructions: number = 0, // including nested calls
21
- ) {}
22
-
23
- toString(): string {
24
- let resultsStr = `reverted: ${this.reverted}, output: ${this.output.bestEffortReadAll(10)}${this.output.length() > 10 ? ' ...' : ''}, gasLeft: ${inspect(
25
- this.gasLeft,
26
- )}, totalInstructions: ${this.totalInstructions}`;
27
- if (this.revertReason) {
28
- resultsStr += `, revertReason: ${this.revertReason.message}`;
29
- }
30
- return resultsStr;
31
- }
32
-
33
- finalize(): AvmFinalizedCallResult {
34
- const revertReason = this.revertReason
35
- ? createSimulationError(this.revertReason, this.output.bestEffortReadAll())
36
- : undefined;
37
- return new AvmFinalizedCallResult(
38
- this.reverted,
39
- this.output,
40
- Gas.from(this.gasLeft),
41
- revertReason,
42
- this.totalInstructions,
43
- );
44
- }
45
- }
46
-
47
- /**
48
- * Similar to AvmContractCallResult, but with a SimulationError and standard Gas
49
- * which are useful for consumption external to core AVM simulation.
50
- */
51
- export class AvmFinalizedCallResult {
52
- constructor(
53
- public reverted: boolean,
54
- public output: ReturnData,
55
- public gasLeft: Gas,
56
- public revertReason?: SimulationError,
57
- public totalInstructions: number = 0, // including nested calls
58
- ) {}
59
-
60
- toString(): string {
61
- let resultsStr = `reverted: ${this.reverted}, output: ${this.output.bestEffortReadAll(10)}${this.output.length() > 10 ? ' ...' : ''}, gasLeft: ${inspect(
62
- this.gasLeft,
63
- )}, totalInstructions: ${this.totalInstructions}`;
64
- if (this.revertReason) {
65
- resultsStr += `, revertReason: ${this.revertReason.message}`;
66
- }
67
- return resultsStr;
68
- }
69
- }
@@ -1,51 +0,0 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
2
- import type { PublicSimulatorConfig } from '@aztec/stdlib/avm';
3
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- import type { GlobalVariables } from '@aztec/stdlib/tx';
5
-
6
- import type { CallData } from './calldata.js';
7
-
8
- /**
9
- * Contains variables that remain constant during AVM execution
10
- * These variables are provided by the public kernel circuit
11
- */
12
- export class AvmExecutionEnvironment {
13
- constructor(
14
- public readonly address: AztecAddress,
15
- public readonly sender: AztecAddress,
16
- public readonly contractCallDepth: Fr,
17
- public readonly transactionFee: Fr,
18
- public readonly globals: GlobalVariables,
19
- public readonly isStaticCall: boolean,
20
- public readonly calldata: CallData,
21
- public readonly config: PublicSimulatorConfig,
22
- ) {}
23
-
24
- private deriveEnvironmentForNestedCallInternal(
25
- targetAddress: AztecAddress,
26
- calldata: CallData,
27
- isStaticCall: boolean,
28
- ): AvmExecutionEnvironment {
29
- return new AvmExecutionEnvironment(
30
- /*address=*/ targetAddress,
31
- /*sender=*/ this.address,
32
- this.contractCallDepth.add(Fr.ONE),
33
- this.transactionFee,
34
- this.globals,
35
- isStaticCall,
36
- calldata,
37
- this.config,
38
- );
39
- }
40
-
41
- public deriveEnvironmentForNestedCall(targetAddress: AztecAddress, calldata: CallData): AvmExecutionEnvironment {
42
- return this.deriveEnvironmentForNestedCallInternal(targetAddress, calldata, /*isStaticCall=*/ false);
43
- }
44
-
45
- public deriveEnvironmentForNestedStaticCall(
46
- targetAddress: AztecAddress,
47
- calldata: CallData,
48
- ): AvmExecutionEnvironment {
49
- return this.deriveEnvironmentForNestedCallInternal(targetAddress, calldata, /*isStaticCall=*/ true);
50
- }
51
- }
@@ -1,183 +0,0 @@
1
- import * as c from '@aztec/constants';
2
-
3
- import { TypeTag } from './avm_memory_types.js';
4
- import { InstructionExecutionError } from './errors.js';
5
- import { Opcode } from './serialization/instruction_serialization.js';
6
-
7
- /** Gas counters in L1, L2, and DA. */
8
- export type Gas = {
9
- l2Gas: number;
10
- daGas: number;
11
- };
12
-
13
- /** Maps a Gas struct to gasLeft properties. */
14
- export function gasToGasLeft(gas: Gas) {
15
- return { l2GasLeft: gas.l2Gas, daGasLeft: gas.daGas };
16
- }
17
-
18
- /** Maps gasLeft properties to a gas struct. */
19
- export function gasLeftToGas(gasLeft: { l2GasLeft: number; daGasLeft: number }) {
20
- return { l2Gas: gasLeft.l2GasLeft, daGas: gasLeft.daGasLeft };
21
- }
22
-
23
- /** Creates a new instance with all values set to zero except the ones set. */
24
- export function makeGas(gasCost: Partial<Gas>) {
25
- return { ...EmptyGas, ...gasCost };
26
- }
27
-
28
- /** Sums together multiple instances of Gas. */
29
- export function sumGas(...gases: Partial<Gas>[]): Gas {
30
- return gases.reduce<Gas>(
31
- (acc, gas) => ({
32
- l2Gas: acc.l2Gas + (gas.l2Gas ?? 0),
33
- daGas: acc.daGas + (gas.daGas ?? 0),
34
- }),
35
- EmptyGas,
36
- );
37
- }
38
-
39
- /** Multiplies a gas instance by a scalar. */
40
- export function mulGas(gas: Partial<Gas>, scalar: number) {
41
- return { l2Gas: (gas.l2Gas ?? 0) * scalar, daGas: (gas.daGas ?? 0) * scalar };
42
- }
43
-
44
- /** Zero gas across all gas dimensions. */
45
- export const EmptyGas: Gas = {
46
- l2Gas: 0,
47
- daGas: 0,
48
- };
49
-
50
- function makeCost(l2Gas: number, daGas: number): Gas {
51
- return { l2Gas, daGas };
52
- }
53
-
54
- /** Dimensions of gas usage: L1, L2, and DA. */
55
- export const GAS_DIMENSIONS = ['l2Gas', 'daGas'] as const;
56
-
57
- /** Base gas costs for each instruction. Additional gas cost may be added on top due to memory or storage accesses, etc. */
58
- const BASE_GAS_COSTS: Record<Opcode, Gas> = {
59
- [Opcode.ADD_8]: makeCost(c.AVM_ADD_BASE_L2_GAS, 0),
60
- [Opcode.ADD_16]: makeCost(c.AVM_ADD_BASE_L2_GAS, 0),
61
- [Opcode.SUB_8]: makeCost(c.AVM_SUB_BASE_L2_GAS, 0),
62
- [Opcode.SUB_16]: makeCost(c.AVM_SUB_BASE_L2_GAS, 0),
63
- [Opcode.MUL_8]: makeCost(c.AVM_MUL_BASE_L2_GAS, 0),
64
- [Opcode.MUL_16]: makeCost(c.AVM_MUL_BASE_L2_GAS, 0),
65
- [Opcode.DIV_8]: makeCost(c.AVM_DIV_BASE_L2_GAS, 0),
66
- [Opcode.DIV_16]: makeCost(c.AVM_DIV_BASE_L2_GAS, 0),
67
- [Opcode.FDIV_8]: makeCost(c.AVM_FDIV_BASE_L2_GAS, 0),
68
- [Opcode.FDIV_16]: makeCost(c.AVM_FDIV_BASE_L2_GAS, 0),
69
- [Opcode.EQ_8]: makeCost(c.AVM_EQ_BASE_L2_GAS, 0),
70
- [Opcode.EQ_16]: makeCost(c.AVM_EQ_BASE_L2_GAS, 0),
71
- [Opcode.LT_8]: makeCost(c.AVM_LT_BASE_L2_GAS, 0),
72
- [Opcode.LT_16]: makeCost(c.AVM_LT_BASE_L2_GAS, 0),
73
- [Opcode.LTE_8]: makeCost(c.AVM_LTE_BASE_L2_GAS, 0),
74
- [Opcode.LTE_16]: makeCost(c.AVM_LTE_BASE_L2_GAS, 0),
75
- [Opcode.AND_8]: makeCost(c.AVM_AND_BASE_L2_GAS, 0),
76
- [Opcode.AND_16]: makeCost(c.AVM_AND_BASE_L2_GAS, 0),
77
- [Opcode.OR_8]: makeCost(c.AVM_OR_BASE_L2_GAS, 0),
78
- [Opcode.OR_16]: makeCost(c.AVM_OR_BASE_L2_GAS, 0),
79
- [Opcode.XOR_8]: makeCost(c.AVM_XOR_BASE_L2_GAS, 0),
80
- [Opcode.XOR_16]: makeCost(c.AVM_XOR_BASE_L2_GAS, 0),
81
- [Opcode.NOT_8]: makeCost(c.AVM_NOT_BASE_L2_GAS, 0),
82
- [Opcode.NOT_16]: makeCost(c.AVM_NOT_BASE_L2_GAS, 0),
83
- [Opcode.SHL_8]: makeCost(c.AVM_SHL_BASE_L2_GAS, 0),
84
- [Opcode.SHL_16]: makeCost(c.AVM_SHL_BASE_L2_GAS, 0),
85
- [Opcode.SHR_8]: makeCost(c.AVM_SHR_BASE_L2_GAS, 0),
86
- [Opcode.SHR_16]: makeCost(c.AVM_SHR_BASE_L2_GAS, 0),
87
- [Opcode.CAST_8]: makeCost(c.AVM_CAST_BASE_L2_GAS, 0),
88
- [Opcode.CAST_16]: makeCost(c.AVM_CAST_BASE_L2_GAS, 0),
89
- [Opcode.GETENVVAR_16]: makeCost(c.AVM_GETENVVAR_BASE_L2_GAS, 0),
90
- [Opcode.CALLDATACOPY]: makeCost(c.AVM_CALLDATACOPY_BASE_L2_GAS, 0),
91
- [Opcode.SUCCESSCOPY]: makeCost(c.AVM_SUCCESSCOPY_BASE_L2_GAS, 0),
92
- [Opcode.RETURNDATASIZE]: makeCost(c.AVM_RETURNDATASIZE_BASE_L2_GAS, 0),
93
- [Opcode.RETURNDATACOPY]: makeCost(c.AVM_RETURNDATACOPY_BASE_L2_GAS, 0),
94
- [Opcode.JUMP_32]: makeCost(c.AVM_JUMP_BASE_L2_GAS, 0),
95
- [Opcode.JUMPI_32]: makeCost(c.AVM_JUMPI_BASE_L2_GAS, 0),
96
- [Opcode.INTERNALCALL]: makeCost(c.AVM_INTERNALCALL_BASE_L2_GAS, 0),
97
- [Opcode.INTERNALRETURN]: makeCost(c.AVM_INTERNALRETURN_BASE_L2_GAS, 0),
98
- [Opcode.SET_8]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
99
- [Opcode.SET_16]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
100
- [Opcode.SET_32]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
101
- [Opcode.SET_64]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
102
- [Opcode.SET_128]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
103
- [Opcode.SET_FF]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
104
- [Opcode.MOV_8]: makeCost(c.AVM_MOV_BASE_L2_GAS, 0),
105
- [Opcode.MOV_16]: makeCost(c.AVM_MOV_BASE_L2_GAS, 0),
106
- [Opcode.SLOAD]: makeCost(c.AVM_SLOAD_BASE_L2_GAS, 0),
107
- [Opcode.SSTORE]: makeCost(c.AVM_SSTORE_BASE_L2_GAS, 0), // DA gas is dynamic
108
- [Opcode.NOTEHASHEXISTS]: makeCost(c.AVM_NOTEHASHEXISTS_BASE_L2_GAS, 0),
109
- [Opcode.EMITNOTEHASH]: makeCost(c.AVM_EMITNOTEHASH_BASE_L2_GAS, c.AVM_EMITNOTEHASH_BASE_DA_GAS),
110
- [Opcode.NULLIFIEREXISTS]: makeCost(c.AVM_NULLIFIEREXISTS_BASE_L2_GAS, 0),
111
- [Opcode.EMITNULLIFIER]: makeCost(c.AVM_EMITNULLIFIER_BASE_L2_GAS, c.AVM_EMITNULLIFIER_BASE_DA_GAS),
112
- [Opcode.L1TOL2MSGEXISTS]: makeCost(c.AVM_L1TOL2MSGEXISTS_BASE_L2_GAS, 0),
113
- [Opcode.EMITPUBLICLOG]: makeCost(c.AVM_EMITPUBLICLOG_BASE_L2_GAS, c.AVM_EMITPUBLICLOG_BASE_DA_GAS),
114
- [Opcode.SENDL2TOL1MSG]: makeCost(c.AVM_SENDL2TOL1MSG_BASE_L2_GAS, c.AVM_SENDL2TOL1MSG_BASE_DA_GAS),
115
- [Opcode.GETCONTRACTINSTANCE]: makeCost(c.AVM_GETCONTRACTINSTANCE_BASE_L2_GAS, 0),
116
- [Opcode.CALL]: makeCost(c.AVM_CALL_BASE_L2_GAS, 0),
117
- [Opcode.STATICCALL]: makeCost(c.AVM_STATICCALL_BASE_L2_GAS, 0),
118
- [Opcode.RETURN]: makeCost(c.AVM_RETURN_BASE_L2_GAS, 0),
119
- [Opcode.REVERT_8]: makeCost(c.AVM_REVERT_BASE_L2_GAS, 0),
120
- [Opcode.REVERT_16]: makeCost(c.AVM_REVERT_BASE_L2_GAS, 0),
121
- [Opcode.DEBUGLOG]: makeCost(c.AVM_DEBUGLOG_BASE_L2_GAS, 0),
122
- [Opcode.POSEIDON2]: makeCost(c.AVM_POSEIDON2_BASE_L2_GAS, 0),
123
- [Opcode.SHA256COMPRESSION]: makeCost(c.AVM_SHA256COMPRESSION_BASE_L2_GAS, 0),
124
- [Opcode.KECCAKF1600]: makeCost(c.AVM_KECCAKF1600_BASE_L2_GAS, 0),
125
- [Opcode.ECADD]: makeCost(c.AVM_ECADD_BASE_L2_GAS, 0),
126
- [Opcode.TORADIXBE]: makeCost(c.AVM_TORADIXBE_BASE_L2_GAS, 0),
127
- };
128
-
129
- const DYNAMIC_GAS_COSTS = new Map<Opcode, Gas>([
130
- [Opcode.CALLDATACOPY, makeCost(c.AVM_CALLDATACOPY_DYN_L2_GAS, 0)],
131
- [Opcode.RETURNDATACOPY, makeCost(c.AVM_RETURNDATACOPY_DYN_L2_GAS, 0)],
132
- // TODO: Call and static call based on bytecode length
133
- [Opcode.EMITPUBLICLOG, makeCost(c.AVM_EMITPUBLICLOG_DYN_L2_GAS, c.AVM_EMITPUBLICLOG_DYN_DA_GAS)],
134
- [Opcode.TORADIXBE, makeCost(c.AVM_TORADIXBE_DYN_L2_GAS, 0)],
135
- [Opcode.AND_8, makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)],
136
- [Opcode.AND_16, makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)],
137
- [Opcode.OR_8, makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)],
138
- [Opcode.OR_16, makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)],
139
- [Opcode.XOR_8, makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)],
140
- [Opcode.XOR_16, makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)],
141
- [Opcode.SSTORE, makeCost(0, c.AVM_SSTORE_DYN_DA_GAS)],
142
- ]);
143
-
144
- /** Returns the fixed base gas cost for a given opcode. */
145
- export function getBaseGasCost(opcode: Opcode): Gas {
146
- return BASE_GAS_COSTS[opcode];
147
- }
148
-
149
- export function computeAddressingCost(indirectOperandsCount: number, relativeOperandsCount: number): Gas {
150
- return makeCost(
151
- (relativeOperandsCount !== 0 ? c.AVM_ADDRESSING_BASE_RESOLUTION_L2_GAS : 0) +
152
- indirectOperandsCount * c.AVM_ADDRESSING_INDIRECT_L2_GAS +
153
- relativeOperandsCount * c.AVM_ADDRESSING_RELATIVE_L2_GAS,
154
- 0,
155
- );
156
- }
157
-
158
- export function getDynamicGasCost(opcode: Opcode): Gas {
159
- return DYNAMIC_GAS_COSTS.has(opcode) ? DYNAMIC_GAS_COSTS.get(opcode)! : makeCost(0, 0);
160
- }
161
-
162
- /** Returns a multiplier based on the byte size of the type represented by the integer tag.
163
- * Used to account for necessary rows in the bitwise trace. Throws on invalid. */
164
- export function getBitwiseDynamicGasMultiplier(tag: TypeTag) {
165
- switch (tag) {
166
- case TypeTag.UINT1: // same as u8
167
- return 1;
168
- case TypeTag.UINT8:
169
- return 1;
170
- case TypeTag.UINT16:
171
- return 2;
172
- case TypeTag.UINT32:
173
- return 4;
174
- case TypeTag.UINT64:
175
- return 8;
176
- case TypeTag.UINT128:
177
- return 16;
178
- case TypeTag.FIELD:
179
- return 0; // Field is not allowed for bitwise operations. However we don't fail in gas, since we'll fail in bitwise.
180
- case TypeTag.INVALID:
181
- throw new InstructionExecutionError(`Invalid tag type for gas cost multiplier: ${TypeTag[tag]}`);
182
- }
183
- }
@@ -1,170 +0,0 @@
1
- import type { Fr } from '@aztec/foundation/curves/bn254';
2
-
3
- import type { Gas } from './avm_gas.js';
4
- import { TaggedMemory } from './avm_memory_types.js';
5
- import { type ReturnData, ReturnDataArray } from './calldata.js';
6
- import { type AvmRevertReason, OutOfGasError } from './errors.js';
7
-
8
- /**
9
- * A few fields of machine state are initialized from AVM session inputs or call instruction arguments
10
- */
11
- export type InitialAvmMachineState = {
12
- l2GasLeft: number;
13
- daGasLeft: number;
14
- };
15
-
16
- /**
17
- * Used to track the call stack and revert data of nested calls.
18
- * This is used to provide a more detailed revert reason when a contract call reverts.
19
- * It is only a heuristic and may not always provide the correct revert reason.
20
- */
21
- type TrackedRevertInfo = {
22
- revertDataRepresentative: Fr[];
23
- recursiveRevertReason: AvmRevertReason;
24
- };
25
-
26
- type CallStackEntry = {
27
- callPc: number;
28
- returnPc: number;
29
- };
30
-
31
- /**
32
- * Avm state modified on an instruction-per-instruction basis.
33
- */
34
- export class AvmMachineState {
35
- /** gas remaining of the gas allocated for a contract call */
36
- public l2GasLeft: number;
37
- public daGasLeft: number;
38
- /** program counter, byte based */
39
- public pc: number = 0;
40
- /** program counter of the next instruction, byte based */
41
- public nextPc: number = 0;
42
- /** return/revertdata of the last nested call. */
43
- public nestedReturndata: ReturnData = new ReturnDataArray([]);
44
- /** Tracks whether the last external call was successful */
45
- public nestedCallSuccess: boolean = false;
46
- /**
47
- * Used to track the call stack and revert data of nested calls.
48
- * This is used to provide a more detailed revert reason when a contract call reverts.
49
- * It is only a heuristic and may not always provide the correct revert reason.
50
- */
51
- public collectedRevertInfo: TrackedRevertInfo | undefined;
52
-
53
- /**
54
- * On INTERNALCALL, internal call stack is pushed to with the current pc and the return pc.
55
- * On INTERNALRETURN, value is popped from the internal call stack and assigned to the return pc.
56
- */
57
- public internalCallStack: CallStackEntry[] = [];
58
-
59
- /** Memory accessible to user code */
60
- public readonly memory: TaggedMemory = new TaggedMemory();
61
-
62
- /**
63
- * Signals that execution should end.
64
- * AvmContext execution continues executing instructions until the machine state signals "halted"
65
- */
66
- private halted: boolean = false;
67
- /** Signals that execution has reverted normally (this does not cover exceptional halts) */
68
- private reverted: boolean = false;
69
- /** Output data must NOT be modified once it is set */
70
- private output: ReturnData = new ReturnDataArray([]);
71
-
72
- // Metrics only - not needed for execution
73
- /** instruction counter, including nested calls */
74
- public instrCounter: number = 0;
75
- // End metrics only
76
-
77
- constructor(gasLeft: Gas);
78
- constructor(l2GasLeft: number, daGasLeft: number);
79
- constructor(gasLeftOrL2GasLeft: Gas | number, daGasLeft?: number) {
80
- if (typeof gasLeftOrL2GasLeft === 'object') {
81
- ({ l2Gas: this.l2GasLeft, daGas: this.daGasLeft } = gasLeftOrL2GasLeft);
82
- } else {
83
- this.l2GasLeft = gasLeftOrL2GasLeft!;
84
- this.daGasLeft = daGasLeft!;
85
- }
86
- }
87
-
88
- public get gasLeft(): Gas {
89
- return { l2Gas: this.l2GasLeft, daGas: this.daGasLeft };
90
- }
91
-
92
- public static fromState(state: InitialAvmMachineState): AvmMachineState {
93
- return new AvmMachineState(state.l2GasLeft, state.daGasLeft);
94
- }
95
-
96
- /**
97
- * Consumes the given gas.
98
- * Should any of the gas dimensions get depleted, it sets all gas left to zero and triggers
99
- * an exceptional halt by throwing an OutOfGasError.
100
- */
101
- public consumeGas(gasCost: Partial<Gas>) {
102
- // Assert there is enough gas on every dimension.
103
- const outOfL2Gas = this.l2GasLeft - (gasCost.l2Gas ?? 0) < 0;
104
- const outOfDaGas = this.daGasLeft - (gasCost.daGas ?? 0) < 0;
105
- // If not, trigger an exceptional halt.
106
- if (outOfL2Gas || outOfDaGas) {
107
- this.exceptionalHalt();
108
- const dimensions = [];
109
- if (outOfL2Gas) {
110
- dimensions.push('l2Gas');
111
- }
112
- if (outOfDaGas) {
113
- dimensions.push('daGas');
114
- }
115
- throw new OutOfGasError(dimensions);
116
- }
117
- // Otherwise, charge the corresponding gas
118
- this.l2GasLeft -= gasCost.l2Gas ?? 0;
119
- this.daGasLeft -= gasCost.daGas ?? 0;
120
- }
121
-
122
- /** Increases the gas left by the amounts specified. */
123
- public refundGas(gasRefund: Partial<Gas>) {
124
- this.l2GasLeft += gasRefund.l2Gas ?? 0;
125
- this.daGasLeft += gasRefund.daGas ?? 0;
126
- }
127
-
128
- /**
129
- * Halt as successful
130
- * Output data must NOT be modified once it is set
131
- * @param output
132
- */
133
- public return(output: ReturnData) {
134
- this.halted = true;
135
- this.output = output;
136
- }
137
-
138
- /**
139
- * Halt as reverted
140
- * Output data must NOT be modified once it is set
141
- * @param output
142
- */
143
- public revert(output: ReturnData) {
144
- this.halted = true;
145
- this.reverted = true;
146
- this.output = output;
147
- }
148
-
149
- public getHalted(): boolean {
150
- return this.halted;
151
- }
152
-
153
- public getReverted(): boolean {
154
- return this.reverted;
155
- }
156
-
157
- public getOutput(): ReturnData {
158
- return this.output;
159
- }
160
-
161
- /**
162
- * Flag an exceptional halt. Clears gas left and sets the reverted flag. No output data.
163
- */
164
- private exceptionalHalt() {
165
- this.l2GasLeft = 0;
166
- this.daGasLeft = 0;
167
- this.reverted = true;
168
- this.halted = true;
169
- }
170
- }