@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
@@ -0,0 +1,37 @@
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
+ import { ProtocolContractsList } from '@aztec/protocol-contracts';
3
+ import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
4
+ import type { GlobalVariables, ProtocolContracts, Tx } from '@aztec/stdlib/tx';
5
+
6
+ import type { AvmSimulator } from '../avm_simulator.js';
7
+ import type { PublicContractsDB } from '../public_db_sources.js';
8
+
9
+ /**
10
+ * Shared base for public tx simulators: holds the common configuration, the {@link AvmSimulator} used
11
+ * to run the transaction's public calls, the contracts DB and fork id that scope the simulation's
12
+ * contract-data lookups, the logger, and the tx-hash helper. Concrete simulators extend this and
13
+ * implement `simulate`.
14
+ */
15
+ export abstract class PublicTxSimulatorBase {
16
+ protected log: Logger;
17
+ protected readonly config: PublicSimulatorConfig;
18
+ protected readonly bindings?: LoggerBindings;
19
+
20
+ constructor(
21
+ protected avmSimulator: AvmSimulator,
22
+ protected globalVariables: GlobalVariables,
23
+ protected contractsDB: PublicContractsDB,
24
+ protected forkId: number,
25
+ config?: Partial<PublicSimulatorConfig>,
26
+ protected protocolContracts: ProtocolContracts = ProtocolContractsList,
27
+ bindings?: LoggerBindings,
28
+ ) {
29
+ this.config = PublicSimulatorConfig.from(config ?? {});
30
+ this.bindings = bindings;
31
+ this.log = createLogger(`simulator:public_tx_simulator`, bindings);
32
+ }
33
+
34
+ protected computeTxHash(tx: Tx) {
35
+ return tx.getTxHash();
36
+ }
37
+ }
@@ -5,14 +5,14 @@ export interface PublicTxSimulatorInterface {
5
5
  simulate(tx: Tx): Promise<PublicTxResult>;
6
6
  /**
7
7
  * Cancel the current simulation if one is in progress.
8
- * This signals the underlying simulator (e.g., C++) to stop at the next safe point.
8
+ * This signals the underlying simulator to stop at the next safe point.
9
9
  * Safe to call even if no simulation is in progress.
10
10
  * Optional - not all implementations support cancellation.
11
11
  *
12
12
  * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
13
- * This is important because signaling cancellation doesn't immediately stop C++ -
14
- * it only sets a flag that C++ checks at certain points. If C++ is in the middle
15
- * of a slow operation (e.g., pad_trees), it won't stop until that completes.
13
+ * Cancellation is cooperative: signaling it only sets a flag the simulator
14
+ * checks at certain points, so if it's mid slow-operation it won't stop until
15
+ * that completes.
16
16
  * @returns Promise that resolves when cancellation is signaled (and optionally when simulation stops)
17
17
  */
18
18
  cancel?(waitTimeoutMs?: number): Promise<void>;
@@ -22,7 +22,7 @@ export interface MeasuredPublicTxSimulatorInterface {
22
22
  simulate(tx: Tx, txLabel: string): Promise<PublicTxResult>;
23
23
  /**
24
24
  * Cancel the current simulation if one is in progress.
25
- * This signals the underlying simulator (e.g., C++) to stop at the next safe point.
25
+ * This signals the underlying simulator to stop at the next safe point.
26
26
  * Safe to call even if no simulation is in progress.
27
27
  * Optional - not all implementations support cancellation.
28
28
  *
@@ -21,7 +21,6 @@ export interface PublicTxMetrics {
21
21
  totalDurationMs: number;
22
22
  manaUsed: number | undefined;
23
23
  totalInstructionsExecuted: number;
24
- bytecodeSizes: { contractName: string; sizeBytes: number }[];
25
24
  nonRevertiblePrivateInsertionsUs: number | undefined;
26
25
  revertiblePrivateInsertionsUs: number | undefined;
27
26
  enqueuedCalls: PublicEnqueuedCallMetrics[];
@@ -63,7 +62,6 @@ function createEmptyTxMetrics(): PublicTxMetrics {
63
62
  totalDurationMs: 0,
64
63
  manaUsed: 0,
65
64
  totalInstructionsExecuted: 0,
66
- bytecodeSizes: [],
67
65
  nonRevertiblePrivateInsertionsUs: undefined,
68
66
  revertiblePrivateInsertionsUs: undefined,
69
67
  enqueuedCalls: [],
@@ -174,12 +172,6 @@ export class TestExecutorMetrics implements ExecutorMetricsInterface {
174
172
  }
175
173
  }
176
174
 
177
- recordBytecodeSize(txLabel: string, contractName: string, sizeBytes: number) {
178
- const txMetrics = this.txMetrics.get(txLabel);
179
- assert(txMetrics, `Cannot record bytecode size for unknown tx label: ${txLabel}`);
180
- txMetrics.bytecodeSizes.push({ contractName, sizeBytes });
181
- }
182
-
183
175
  recordProverMetrics(txLabel: string, metrics: Partial<PublicTxMetrics>) {
184
176
  if (!this.txMetrics.has(txLabel)) {
185
177
  this.txMetrics.set(txLabel, createEmptyTxMetrics());
@@ -224,15 +216,6 @@ export class TestExecutorMetrics implements ExecutorMetricsInterface {
224
216
  ) {
225
217
  pretty += `${INDENT0}Total instructions executed: ${fmtNum(txMetrics.totalInstructionsExecuted)}\n`;
226
218
  }
227
- if (
228
- (filter === PublicTxMetricsFilter.TOTALS || filter === PublicTxMetricsFilter.ALL) &&
229
- txMetrics.bytecodeSizes.length > 0
230
- ) {
231
- pretty += `${INDENT0}Bytecode sizes:\n`;
232
- for (const { contractName, sizeBytes } of txMetrics.bytecodeSizes) {
233
- pretty += `${INDENT1}${contractName}: ${fmtNum(sizeBytes, 'bytes')}\n`;
234
- }
235
- }
236
219
  if (filter === PublicTxMetricsFilter.DURATIONS || filter === PublicTxMetricsFilter.ALL) {
237
220
  pretty += `${INDENT0}Private insertions:\n`;
238
221
  pretty += `${INDENT1}Non-revertible: ${fmtNum(txMetrics.nonRevertiblePrivateInsertionsUs! / 1_000, 'ms')}\n`;
@@ -404,13 +387,6 @@ export class TestExecutorMetrics implements ExecutorMetricsInterface {
404
387
  });
405
388
  }
406
389
  }
407
- for (const { contractName, sizeBytes } of txMetrics.bytecodeSizes) {
408
- data.push({
409
- name: `${txLabel}/bytecodeSizeBytes/${contractName}`,
410
- value: sizeBytes,
411
- unit: 'bytes',
412
- });
413
- }
414
390
  }
415
391
  return JSON.stringify(data, null, indent);
416
392
  }
@@ -1,41 +0,0 @@
1
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
2
- import type { PublicPersistableStateManager } from '../state_manager/state_manager.js';
3
- import type { AvmExecutionEnvironment } from './avm_execution_environment.js';
4
- import { type Gas } from './avm_gas.js';
5
- import { AvmMachineState } from './avm_machine_state.js';
6
- import type { AvmSimulatorInterface } from './avm_simulator_interface.js';
7
- import type { CallData } from './calldata.js';
8
- /**
9
- * An execution context includes the information necessary to initiate AVM
10
- * execution along with all state maintained by the AVM throughout execution.
11
- */
12
- export declare class AvmContext {
13
- persistableState: PublicPersistableStateManager;
14
- environment: AvmExecutionEnvironment;
15
- machineState: AvmMachineState;
16
- /**
17
- * Create a new AVM context
18
- * @param persistableState - Manages world state and accrued substate during execution - (caching, fetching, tracing)
19
- * @param environment - Contains constant variables provided by the kernel
20
- * @param machineState - VM state that is modified on an instruction-by-instruction basis
21
- * @returns new AvmContext instance
22
- */
23
- constructor(persistableState: PublicPersistableStateManager, environment: AvmExecutionEnvironment, machineState: AvmMachineState);
24
- provideSimulator?: (context: AvmContext) => Promise<AvmSimulatorInterface>;
25
- /**
26
- * Prepare a new AVM context that will be ready for an external/nested call
27
- * - Fork the world state journal
28
- * - Derive a machine state from the current state
29
- * - E.g., gas metering is preserved but pc is reset
30
- * - Derive an execution environment from the caller/parent
31
- * - Alter address
32
- *
33
- * @param address - The contract instance to initialize a context for
34
- * @param calldata - Data/arguments for nested call
35
- * @param allocatedGas - Gas allocated for the nested call
36
- * @param callType - Type of call (CALL or STATICCALL)
37
- * @returns new AvmContext instance
38
- */
39
- createNestedContractCallContext(address: AztecAddress, calldata: CallData, allocatedGas: Gas, callType: 'CALL' | 'STATICCALL'): Promise<AvmContext>;
40
- }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2NvbnRleHQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2F2bV9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkYsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsS0FBSyxHQUFHLEVBQWdCLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5Qzs7O0dBR0c7QUFDSCxxQkFBYSxVQUFVO0lBU1osZ0JBQWdCLEVBQUUsNkJBQTZCO0lBQy9DLFdBQVcsRUFBRSx1QkFBdUI7SUFDcEMsWUFBWSxFQUFFLGVBQWU7SUFWdEM7Ozs7OztPQU1HO0lBQ0gsWUFDUyxnQkFBZ0IsRUFBRSw2QkFBNkIsRUFDL0MsV0FBVyxFQUFFLHVCQUF1QixFQUNwQyxZQUFZLEVBQUUsZUFBZSxFQUNsQztJQUlHLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxLQUFLLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRWxGOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDVSwrQkFBK0IsQ0FDMUMsT0FBTyxFQUFFLFlBQVksRUFDckIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsWUFBWSxFQUFFLEdBQUcsRUFDakIsUUFBUSxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQzlCLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FTckI7Q0FDRiJ9
@@ -1 +0,0 @@
1
- {"version":3,"file":"avm_context.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,KAAK,GAAG,EAAgB,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;GAGG;AACH,qBAAa,UAAU;IASZ,gBAAgB,EAAE,6BAA6B;IAC/C,WAAW,EAAE,uBAAuB;IACpC,YAAY,EAAE,eAAe;IAVtC;;;;;;OAMG;IACH,YACS,gBAAgB,EAAE,6BAA6B,EAC/C,WAAW,EAAE,uBAAuB,EACpC,YAAY,EAAE,eAAe,EAClC;IAIG,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAElF;;;;;;;;;;;;;OAaG;IACU,+BAA+B,CAC1C,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,GAAG,EACjB,QAAQ,EAAE,MAAM,GAAG,YAAY,GAC9B,OAAO,CAAC,UAAU,CAAC,CASrB;CACF"}
@@ -1,44 +0,0 @@
1
- import { gasToGasLeft } from './avm_gas.js';
2
- import { AvmMachineState } from './avm_machine_state.js';
3
- /**
4
- * An execution context includes the information necessary to initiate AVM
5
- * execution along with all state maintained by the AVM throughout execution.
6
- */ export class AvmContext {
7
- persistableState;
8
- environment;
9
- machineState;
10
- /**
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){
17
- this.persistableState = persistableState;
18
- this.environment = environment;
19
- this.machineState = machineState;
20
- }
21
- // This is needed to break a dependency cycle created by the CALL opcode,
22
- // which needs to create a new simulator but cannot depend directly on AvmSimulator.
23
- provideSimulator;
24
- /**
25
- * Prepare a new AVM context that will be ready for an external/nested call
26
- * - Fork the world state journal
27
- * - Derive a machine state from the current state
28
- * - E.g., gas metering is preserved but pc is reset
29
- * - Derive an execution environment from the caller/parent
30
- * - Alter address
31
- *
32
- * @param address - The contract instance to initialize a context for
33
- * @param calldata - Data/arguments for nested call
34
- * @param allocatedGas - Gas allocated for the nested call
35
- * @param callType - Type of call (CALL or STATICCALL)
36
- * @returns new AvmContext instance
37
- */ async createNestedContractCallContext(address, calldata, allocatedGas, callType) {
38
- const deriveFn = callType === 'CALL' ? this.environment.deriveEnvironmentForNestedCall : this.environment.deriveEnvironmentForNestedStaticCall;
39
- const newExecutionEnvironment = deriveFn.call(this.environment, address, calldata);
40
- const forkedWorldState = await this.persistableState.fork();
41
- const machineState = AvmMachineState.fromState(gasToGasLeft(allocatedGas));
42
- return new AvmContext(forkedWorldState, newExecutionEnvironment, machineState);
43
- }
44
- }
@@ -1,32 +0,0 @@
1
- import type { SimulationError } from '@aztec/stdlib/errors';
2
- import { Gas } from '@aztec/stdlib/gas';
3
- import type { Gas as AvmGas } from './avm_gas.js';
4
- import type { ReturnData } from './calldata.js';
5
- import type { AvmRevertReason } from './errors.js';
6
- /**
7
- * Results of an contract call's execution in the AVM.
8
- */
9
- export declare class AvmContractCallResult {
10
- reverted: boolean;
11
- output: ReturnData;
12
- gasLeft: AvmGas;
13
- revertReason?: AvmRevertReason | undefined;
14
- totalInstructions: number;
15
- constructor(reverted: boolean, output: ReturnData, gasLeft: AvmGas, revertReason?: AvmRevertReason | undefined, totalInstructions?: number);
16
- toString(): string;
17
- finalize(): AvmFinalizedCallResult;
18
- }
19
- /**
20
- * Similar to AvmContractCallResult, but with a SimulationError and standard Gas
21
- * which are useful for consumption external to core AVM simulation.
22
- */
23
- export declare class AvmFinalizedCallResult {
24
- reverted: boolean;
25
- output: ReturnData;
26
- gasLeft: Gas;
27
- revertReason?: SimulationError | undefined;
28
- totalInstructions: number;
29
- constructor(reverted: boolean, output: ReturnData, gasLeft: Gas, revertReason?: SimulationError | undefined, totalInstructions?: number);
30
- toString(): string;
31
- }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2NvbnRyYWN0X2NhbGxfcmVzdWx0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL2F2bS9hdm1fY29udHJhY3RfY2FsbF9yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBS3hDLE9BQU8sS0FBSyxFQUFFLEdBQUcsSUFBSSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRDs7R0FFRztBQUNILHFCQUFhLHFCQUFxQjtJQUV2QixRQUFRLEVBQUUsT0FBTztJQUNqQixNQUFNLEVBQUUsVUFBVTtJQUNsQixPQUFPLEVBQUUsTUFBTTtJQUNmLFlBQVksQ0FBQztJQUNiLGlCQUFpQixFQUFFLE1BQU07SUFMbEMsWUFDUyxRQUFRLEVBQUUsT0FBTyxFQUNqQixNQUFNLEVBQUUsVUFBVSxFQUNsQixPQUFPLEVBQUUsTUFBTSxFQUNmLFlBQVksQ0FBQyw2QkFBaUIsRUFDOUIsaUJBQWlCLEdBQUUsTUFBVSxFQUNsQztJQUVKLFFBQVEsSUFBSSxNQUFNLENBUWpCO0lBRUQsUUFBUSxJQUFJLHNCQUFzQixDQVdqQztDQUNGO0FBRUQ7OztHQUdHO0FBQ0gscUJBQWEsc0JBQXNCO0lBRXhCLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLE1BQU0sRUFBRSxVQUFVO0lBQ2xCLE9BQU8sRUFBRSxHQUFHO0lBQ1osWUFBWSxDQUFDO0lBQ2IsaUJBQWlCLEVBQUUsTUFBTTtJQUxsQyxZQUNTLFFBQVEsRUFBRSxPQUFPLEVBQ2pCLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQ1osWUFBWSxDQUFDLDZCQUFpQixFQUM5QixpQkFBaUIsR0FBRSxNQUFVLEVBQ2xDO0lBRUosUUFBUSxJQUFJLE1BQU0sQ0FRakI7Q0FDRiJ9
@@ -1 +0,0 @@
1
- {"version":3,"file":"avm_contract_call_result.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_contract_call_result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAKxC,OAAO,KAAK,EAAE,GAAG,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,qBAAa,qBAAqB;IAEvB,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,MAAM;IACf,YAAY,CAAC;IACb,iBAAiB,EAAE,MAAM;IALlC,YACS,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,6BAAiB,EAC9B,iBAAiB,GAAE,MAAU,EAClC;IAEJ,QAAQ,IAAI,MAAM,CAQjB;IAED,QAAQ,IAAI,sBAAsB,CAWjC;CACF;AAED;;;GAGG;AACH,qBAAa,sBAAsB;IAExB,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,GAAG;IACZ,YAAY,CAAC;IACb,iBAAiB,EAAE,MAAM;IALlC,YACS,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,GAAG,EACZ,YAAY,CAAC,6BAAiB,EAC9B,iBAAiB,GAAE,MAAU,EAClC;IAEJ,QAAQ,IAAI,MAAM,CAQjB;CACF"}
@@ -1,54 +0,0 @@
1
- import { Gas } from '@aztec/stdlib/gas';
2
- import { inspect } from 'util';
3
- import { createSimulationError } from '../../common/errors.js';
4
- /**
5
- * Results of an contract call's execution in the AVM.
6
- */ export class AvmContractCallResult {
7
- reverted;
8
- output;
9
- gasLeft;
10
- revertReason;
11
- totalInstructions;
12
- constructor(reverted, output, gasLeft, revertReason, totalInstructions = 0){
13
- this.reverted = reverted;
14
- this.output = output;
15
- this.gasLeft = gasLeft;
16
- this.revertReason = revertReason;
17
- this.totalInstructions = totalInstructions;
18
- }
19
- toString() {
20
- let resultsStr = `reverted: ${this.reverted}, output: ${this.output.bestEffortReadAll(10)}${this.output.length() > 10 ? ' ...' : ''}, gasLeft: ${inspect(this.gasLeft)}, totalInstructions: ${this.totalInstructions}`;
21
- if (this.revertReason) {
22
- resultsStr += `, revertReason: ${this.revertReason.message}`;
23
- }
24
- return resultsStr;
25
- }
26
- finalize() {
27
- const revertReason = this.revertReason ? createSimulationError(this.revertReason, this.output.bestEffortReadAll()) : undefined;
28
- return new AvmFinalizedCallResult(this.reverted, this.output, Gas.from(this.gasLeft), revertReason, this.totalInstructions);
29
- }
30
- }
31
- /**
32
- * Similar to AvmContractCallResult, but with a SimulationError and standard Gas
33
- * which are useful for consumption external to core AVM simulation.
34
- */ export class AvmFinalizedCallResult {
35
- reverted;
36
- output;
37
- gasLeft;
38
- revertReason;
39
- totalInstructions;
40
- constructor(reverted, output, gasLeft, revertReason, totalInstructions = 0){
41
- this.reverted = reverted;
42
- this.output = output;
43
- this.gasLeft = gasLeft;
44
- this.revertReason = revertReason;
45
- this.totalInstructions = totalInstructions;
46
- }
47
- toString() {
48
- let resultsStr = `reverted: ${this.reverted}, output: ${this.output.bestEffortReadAll(10)}${this.output.length() > 10 ? ' ...' : ''}, gasLeft: ${inspect(this.gasLeft)}, totalInstructions: ${this.totalInstructions}`;
49
- if (this.revertReason) {
50
- resultsStr += `, revertReason: ${this.revertReason.message}`;
51
- }
52
- return resultsStr;
53
- }
54
- }
@@ -1,24 +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
- import type { CallData } from './calldata.js';
6
- /**
7
- * Contains variables that remain constant during AVM execution
8
- * These variables are provided by the public kernel circuit
9
- */
10
- export declare class AvmExecutionEnvironment {
11
- readonly address: AztecAddress;
12
- readonly sender: AztecAddress;
13
- readonly contractCallDepth: Fr;
14
- readonly transactionFee: Fr;
15
- readonly globals: GlobalVariables;
16
- readonly isStaticCall: boolean;
17
- readonly calldata: CallData;
18
- readonly config: PublicSimulatorConfig;
19
- constructor(address: AztecAddress, sender: AztecAddress, contractCallDepth: Fr, transactionFee: Fr, globals: GlobalVariables, isStaticCall: boolean, calldata: CallData, config: PublicSimulatorConfig);
20
- private deriveEnvironmentForNestedCallInternal;
21
- deriveEnvironmentForNestedCall(targetAddress: AztecAddress, calldata: CallData): AvmExecutionEnvironment;
22
- deriveEnvironmentForNestedStaticCall(targetAddress: AztecAddress, calldata: CallData): AvmExecutionEnvironment;
23
- }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2V4ZWN1dGlvbl9lbnZpcm9ubWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vYXZtX2V4ZWN1dGlvbl9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUM7OztHQUdHO0FBQ0gscUJBQWEsdUJBQXVCO2FBRWhCLE9BQU8sRUFBRSxZQUFZO2FBQ3JCLE1BQU0sRUFBRSxZQUFZO2FBQ3BCLGlCQUFpQixFQUFFLEVBQUU7YUFDckIsY0FBYyxFQUFFLEVBQUU7YUFDbEIsT0FBTyxFQUFFLGVBQWU7YUFDeEIsWUFBWSxFQUFFLE9BQU87YUFDckIsUUFBUSxFQUFFLFFBQVE7YUFDbEIsTUFBTSxFQUFFLHFCQUFxQjtJQVIvQyxZQUNrQixPQUFPLEVBQUUsWUFBWSxFQUNyQixNQUFNLEVBQUUsWUFBWSxFQUNwQixpQkFBaUIsRUFBRSxFQUFFLEVBQ3JCLGNBQWMsRUFBRSxFQUFFLEVBQ2xCLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLFlBQVksRUFBRSxPQUFPLEVBQ3JCLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLE1BQU0sRUFBRSxxQkFBcUIsRUFDM0M7SUFFSixPQUFPLENBQUMsc0NBQXNDO0lBaUJ2Qyw4QkFBOEIsQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEdBQUcsdUJBQXVCLENBRTlHO0lBRU0sb0NBQW9DLENBQ3pDLGFBQWEsRUFBRSxZQUFZLEVBQzNCLFFBQVEsRUFBRSxRQUFRLEdBQ2pCLHVCQUF1QixDQUV6QjtDQUNGIn0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"avm_execution_environment.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_execution_environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;GAGG;AACH,qBAAa,uBAAuB;aAEhB,OAAO,EAAE,YAAY;aACrB,MAAM,EAAE,YAAY;aACpB,iBAAiB,EAAE,EAAE;aACrB,cAAc,EAAE,EAAE;aAClB,OAAO,EAAE,eAAe;aACxB,YAAY,EAAE,OAAO;aACrB,QAAQ,EAAE,QAAQ;aAClB,MAAM,EAAE,qBAAqB;IAR/C,YACkB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,iBAAiB,EAAE,EAAE,EACrB,cAAc,EAAE,EAAE,EAClB,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,qBAAqB,EAC3C;IAEJ,OAAO,CAAC,sCAAsC;IAiBvC,8BAA8B,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,GAAG,uBAAuB,CAE9G;IAEM,oCAAoC,CACzC,aAAa,EAAE,YAAY,EAC3B,QAAQ,EAAE,QAAQ,GACjB,uBAAuB,CAEzB;CACF"}
@@ -1,33 +0,0 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
2
- /**
3
- * Contains variables that remain constant during AVM execution
4
- * These variables are provided by the public kernel circuit
5
- */ export class AvmExecutionEnvironment {
6
- address;
7
- sender;
8
- contractCallDepth;
9
- transactionFee;
10
- globals;
11
- isStaticCall;
12
- calldata;
13
- config;
14
- constructor(address, sender, contractCallDepth, transactionFee, globals, isStaticCall, calldata, config){
15
- this.address = address;
16
- this.sender = sender;
17
- this.contractCallDepth = contractCallDepth;
18
- this.transactionFee = transactionFee;
19
- this.globals = globals;
20
- this.isStaticCall = isStaticCall;
21
- this.calldata = calldata;
22
- this.config = config;
23
- }
24
- deriveEnvironmentForNestedCallInternal(targetAddress, calldata, isStaticCall) {
25
- return new AvmExecutionEnvironment(/*address=*/ targetAddress, /*sender=*/ this.address, this.contractCallDepth.add(Fr.ONE), this.transactionFee, this.globals, isStaticCall, calldata, this.config);
26
- }
27
- deriveEnvironmentForNestedCall(targetAddress, calldata) {
28
- return this.deriveEnvironmentForNestedCallInternal(targetAddress, calldata, /*isStaticCall=*/ false);
29
- }
30
- deriveEnvironmentForNestedStaticCall(targetAddress, calldata) {
31
- return this.deriveEnvironmentForNestedCallInternal(targetAddress, calldata, /*isStaticCall=*/ true);
32
- }
33
- }
@@ -1,44 +0,0 @@
1
- import { TypeTag } from './avm_memory_types.js';
2
- import { Opcode } from './serialization/instruction_serialization.js';
3
- /** Gas counters in L1, L2, and DA. */
4
- export type Gas = {
5
- l2Gas: number;
6
- daGas: number;
7
- };
8
- /** Maps a Gas struct to gasLeft properties. */
9
- export declare function gasToGasLeft(gas: Gas): {
10
- l2GasLeft: number;
11
- daGasLeft: number;
12
- };
13
- /** Maps gasLeft properties to a gas struct. */
14
- export declare function gasLeftToGas(gasLeft: {
15
- l2GasLeft: number;
16
- daGasLeft: number;
17
- }): {
18
- l2Gas: number;
19
- daGas: number;
20
- };
21
- /** Creates a new instance with all values set to zero except the ones set. */
22
- export declare function makeGas(gasCost: Partial<Gas>): {
23
- l2Gas: number;
24
- daGas: number;
25
- };
26
- /** Sums together multiple instances of Gas. */
27
- export declare function sumGas(...gases: Partial<Gas>[]): Gas;
28
- /** Multiplies a gas instance by a scalar. */
29
- export declare function mulGas(gas: Partial<Gas>, scalar: number): {
30
- l2Gas: number;
31
- daGas: number;
32
- };
33
- /** Zero gas across all gas dimensions. */
34
- export declare const EmptyGas: Gas;
35
- /** Dimensions of gas usage: L1, L2, and DA. */
36
- export declare const GAS_DIMENSIONS: readonly ["l2Gas", "daGas"];
37
- /** Returns the fixed base gas cost for a given opcode. */
38
- export declare function getBaseGasCost(opcode: Opcode): Gas;
39
- export declare function computeAddressingCost(indirectOperandsCount: number, relativeOperandsCount: number): Gas;
40
- export declare function getDynamicGasCost(opcode: Opcode): Gas;
41
- /** Returns a multiplier based on the byte size of the type represented by the integer tag.
42
- * Used to account for necessary rows in the bitwise trace. Throws on invalid. */
43
- export declare function getBitwiseDynamicGasMultiplier(tag: TypeTag): 0 | 1 | 2 | 4 | 8 | 16;
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2dhcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vYXZtX2dhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXRFLHNDQUFzQztBQUN0QyxNQUFNLE1BQU0sR0FBRyxHQUFHO0lBQ2hCLEtBQUssRUFBRSxNQUFNLENBQUM7SUFDZCxLQUFLLEVBQUUsTUFBTSxDQUFDO0NBQ2YsQ0FBQztBQUVGLCtDQUErQztBQUMvQyx3QkFBZ0IsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHOzs7RUFFcEM7QUFFRCwrQ0FBK0M7QUFDL0Msd0JBQWdCLFlBQVksQ0FBQyxPQUFPLEVBQUU7SUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQTtDQUFFOzs7RUFFN0U7QUFFRCw4RUFBOEU7QUFDOUUsd0JBQWdCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQzs7O0VBRTVDO0FBRUQsK0NBQStDO0FBQy9DLHdCQUFnQixNQUFNLENBQUMsR0FBRyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQVFwRDtBQUVELDZDQUE2QztBQUM3Qyx3QkFBZ0IsTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU07OztFQUV2RDtBQUVELDBDQUEwQztBQUMxQyxlQUFPLE1BQU0sUUFBUSxFQUFFLEdBR3RCLENBQUM7QUFNRiwrQ0FBK0M7QUFDL0MsZUFBTyxNQUFNLGNBQWMsNkJBQThCLENBQUM7QUF5RjFELDBEQUEwRDtBQUMxRCx3QkFBZ0IsY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUVsRDtBQUVELHdCQUFnQixxQkFBcUIsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FPdkc7QUFFRCx3QkFBZ0IsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxHQUFHLENBRXJEO0FBRUQ7aUZBQ2lGO0FBQ2pGLHdCQUFnQiw4QkFBOEIsQ0FBQyxHQUFHLEVBQUUsT0FBTywwQkFtQjFEIn0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"avm_gas.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_gas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAEtE,sCAAsC;AACtC,MAAM,MAAM,GAAG,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG;;;EAEpC;AAED,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;;;EAE7E;AAED,8EAA8E;AAC9E,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;;;EAE5C;AAED,+CAA+C;AAC/C,wBAAgB,MAAM,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAQpD;AAED,6CAA6C;AAC7C,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM;;;EAEvD;AAED,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,EAAE,GAGtB,CAAC;AAMF,+CAA+C;AAC/C,eAAO,MAAM,cAAc,6BAA8B,CAAC;AAyF1D,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAElD;AAED,wBAAgB,qBAAqB,CAAC,qBAAqB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,GAAG,CAOvG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAErD;AAED;iFACiF;AACjF,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,0BAmB1D"}
@@ -1,195 +0,0 @@
1
- import * as c from '@aztec/constants';
2
- import { TypeTag } from './avm_memory_types.js';
3
- import { InstructionExecutionError } from './errors.js';
4
- import { Opcode } from './serialization/instruction_serialization.js';
5
- /** Maps a Gas struct to gasLeft properties. */ export function gasToGasLeft(gas) {
6
- return {
7
- l2GasLeft: gas.l2Gas,
8
- daGasLeft: gas.daGas
9
- };
10
- }
11
- /** Maps gasLeft properties to a gas struct. */ export function gasLeftToGas(gasLeft) {
12
- return {
13
- l2Gas: gasLeft.l2GasLeft,
14
- daGas: gasLeft.daGasLeft
15
- };
16
- }
17
- /** Creates a new instance with all values set to zero except the ones set. */ export function makeGas(gasCost) {
18
- return {
19
- ...EmptyGas,
20
- ...gasCost
21
- };
22
- }
23
- /** Sums together multiple instances of Gas. */ export function sumGas(...gases) {
24
- return gases.reduce((acc, gas)=>({
25
- l2Gas: acc.l2Gas + (gas.l2Gas ?? 0),
26
- daGas: acc.daGas + (gas.daGas ?? 0)
27
- }), EmptyGas);
28
- }
29
- /** Multiplies a gas instance by a scalar. */ export function mulGas(gas, scalar) {
30
- return {
31
- l2Gas: (gas.l2Gas ?? 0) * scalar,
32
- daGas: (gas.daGas ?? 0) * scalar
33
- };
34
- }
35
- /** Zero gas across all gas dimensions. */ export const EmptyGas = {
36
- l2Gas: 0,
37
- daGas: 0
38
- };
39
- function makeCost(l2Gas, daGas) {
40
- return {
41
- l2Gas,
42
- daGas
43
- };
44
- }
45
- /** Dimensions of gas usage: L1, L2, and DA. */ export const GAS_DIMENSIONS = [
46
- 'l2Gas',
47
- 'daGas'
48
- ];
49
- /** 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 = {
50
- [Opcode.ADD_8]: makeCost(c.AVM_ADD_BASE_L2_GAS, 0),
51
- [Opcode.ADD_16]: makeCost(c.AVM_ADD_BASE_L2_GAS, 0),
52
- [Opcode.SUB_8]: makeCost(c.AVM_SUB_BASE_L2_GAS, 0),
53
- [Opcode.SUB_16]: makeCost(c.AVM_SUB_BASE_L2_GAS, 0),
54
- [Opcode.MUL_8]: makeCost(c.AVM_MUL_BASE_L2_GAS, 0),
55
- [Opcode.MUL_16]: makeCost(c.AVM_MUL_BASE_L2_GAS, 0),
56
- [Opcode.DIV_8]: makeCost(c.AVM_DIV_BASE_L2_GAS, 0),
57
- [Opcode.DIV_16]: makeCost(c.AVM_DIV_BASE_L2_GAS, 0),
58
- [Opcode.FDIV_8]: makeCost(c.AVM_FDIV_BASE_L2_GAS, 0),
59
- [Opcode.FDIV_16]: makeCost(c.AVM_FDIV_BASE_L2_GAS, 0),
60
- [Opcode.EQ_8]: makeCost(c.AVM_EQ_BASE_L2_GAS, 0),
61
- [Opcode.EQ_16]: makeCost(c.AVM_EQ_BASE_L2_GAS, 0),
62
- [Opcode.LT_8]: makeCost(c.AVM_LT_BASE_L2_GAS, 0),
63
- [Opcode.LT_16]: makeCost(c.AVM_LT_BASE_L2_GAS, 0),
64
- [Opcode.LTE_8]: makeCost(c.AVM_LTE_BASE_L2_GAS, 0),
65
- [Opcode.LTE_16]: makeCost(c.AVM_LTE_BASE_L2_GAS, 0),
66
- [Opcode.AND_8]: makeCost(c.AVM_AND_BASE_L2_GAS, 0),
67
- [Opcode.AND_16]: makeCost(c.AVM_AND_BASE_L2_GAS, 0),
68
- [Opcode.OR_8]: makeCost(c.AVM_OR_BASE_L2_GAS, 0),
69
- [Opcode.OR_16]: makeCost(c.AVM_OR_BASE_L2_GAS, 0),
70
- [Opcode.XOR_8]: makeCost(c.AVM_XOR_BASE_L2_GAS, 0),
71
- [Opcode.XOR_16]: makeCost(c.AVM_XOR_BASE_L2_GAS, 0),
72
- [Opcode.NOT_8]: makeCost(c.AVM_NOT_BASE_L2_GAS, 0),
73
- [Opcode.NOT_16]: makeCost(c.AVM_NOT_BASE_L2_GAS, 0),
74
- [Opcode.SHL_8]: makeCost(c.AVM_SHL_BASE_L2_GAS, 0),
75
- [Opcode.SHL_16]: makeCost(c.AVM_SHL_BASE_L2_GAS, 0),
76
- [Opcode.SHR_8]: makeCost(c.AVM_SHR_BASE_L2_GAS, 0),
77
- [Opcode.SHR_16]: makeCost(c.AVM_SHR_BASE_L2_GAS, 0),
78
- [Opcode.CAST_8]: makeCost(c.AVM_CAST_BASE_L2_GAS, 0),
79
- [Opcode.CAST_16]: makeCost(c.AVM_CAST_BASE_L2_GAS, 0),
80
- [Opcode.GETENVVAR_16]: makeCost(c.AVM_GETENVVAR_BASE_L2_GAS, 0),
81
- [Opcode.CALLDATACOPY]: makeCost(c.AVM_CALLDATACOPY_BASE_L2_GAS, 0),
82
- [Opcode.SUCCESSCOPY]: makeCost(c.AVM_SUCCESSCOPY_BASE_L2_GAS, 0),
83
- [Opcode.RETURNDATASIZE]: makeCost(c.AVM_RETURNDATASIZE_BASE_L2_GAS, 0),
84
- [Opcode.RETURNDATACOPY]: makeCost(c.AVM_RETURNDATACOPY_BASE_L2_GAS, 0),
85
- [Opcode.JUMP_32]: makeCost(c.AVM_JUMP_BASE_L2_GAS, 0),
86
- [Opcode.JUMPI_32]: makeCost(c.AVM_JUMPI_BASE_L2_GAS, 0),
87
- [Opcode.INTERNALCALL]: makeCost(c.AVM_INTERNALCALL_BASE_L2_GAS, 0),
88
- [Opcode.INTERNALRETURN]: makeCost(c.AVM_INTERNALRETURN_BASE_L2_GAS, 0),
89
- [Opcode.SET_8]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
90
- [Opcode.SET_16]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
91
- [Opcode.SET_32]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
92
- [Opcode.SET_64]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
93
- [Opcode.SET_128]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
94
- [Opcode.SET_FF]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
95
- [Opcode.MOV_8]: makeCost(c.AVM_MOV_BASE_L2_GAS, 0),
96
- [Opcode.MOV_16]: makeCost(c.AVM_MOV_BASE_L2_GAS, 0),
97
- [Opcode.SLOAD]: makeCost(c.AVM_SLOAD_BASE_L2_GAS, 0),
98
- [Opcode.SSTORE]: makeCost(c.AVM_SSTORE_BASE_L2_GAS, 0),
99
- [Opcode.NOTEHASHEXISTS]: makeCost(c.AVM_NOTEHASHEXISTS_BASE_L2_GAS, 0),
100
- [Opcode.EMITNOTEHASH]: makeCost(c.AVM_EMITNOTEHASH_BASE_L2_GAS, c.AVM_EMITNOTEHASH_BASE_DA_GAS),
101
- [Opcode.NULLIFIEREXISTS]: makeCost(c.AVM_NULLIFIEREXISTS_BASE_L2_GAS, 0),
102
- [Opcode.EMITNULLIFIER]: makeCost(c.AVM_EMITNULLIFIER_BASE_L2_GAS, c.AVM_EMITNULLIFIER_BASE_DA_GAS),
103
- [Opcode.L1TOL2MSGEXISTS]: makeCost(c.AVM_L1TOL2MSGEXISTS_BASE_L2_GAS, 0),
104
- [Opcode.EMITPUBLICLOG]: makeCost(c.AVM_EMITPUBLICLOG_BASE_L2_GAS, c.AVM_EMITPUBLICLOG_BASE_DA_GAS),
105
- [Opcode.SENDL2TOL1MSG]: makeCost(c.AVM_SENDL2TOL1MSG_BASE_L2_GAS, c.AVM_SENDL2TOL1MSG_BASE_DA_GAS),
106
- [Opcode.GETCONTRACTINSTANCE]: makeCost(c.AVM_GETCONTRACTINSTANCE_BASE_L2_GAS, 0),
107
- [Opcode.CALL]: makeCost(c.AVM_CALL_BASE_L2_GAS, 0),
108
- [Opcode.STATICCALL]: makeCost(c.AVM_STATICCALL_BASE_L2_GAS, 0),
109
- [Opcode.RETURN]: makeCost(c.AVM_RETURN_BASE_L2_GAS, 0),
110
- [Opcode.REVERT_8]: makeCost(c.AVM_REVERT_BASE_L2_GAS, 0),
111
- [Opcode.REVERT_16]: makeCost(c.AVM_REVERT_BASE_L2_GAS, 0),
112
- [Opcode.DEBUGLOG]: makeCost(c.AVM_DEBUGLOG_BASE_L2_GAS, 0),
113
- [Opcode.POSEIDON2]: makeCost(c.AVM_POSEIDON2_BASE_L2_GAS, 0),
114
- [Opcode.SHA256COMPRESSION]: makeCost(c.AVM_SHA256COMPRESSION_BASE_L2_GAS, 0),
115
- [Opcode.KECCAKF1600]: makeCost(c.AVM_KECCAKF1600_BASE_L2_GAS, 0),
116
- [Opcode.ECADD]: makeCost(c.AVM_ECADD_BASE_L2_GAS, 0),
117
- [Opcode.TORADIXBE]: makeCost(c.AVM_TORADIXBE_BASE_L2_GAS, 0)
118
- };
119
- const DYNAMIC_GAS_COSTS = new Map([
120
- [
121
- Opcode.CALLDATACOPY,
122
- makeCost(c.AVM_CALLDATACOPY_DYN_L2_GAS, 0)
123
- ],
124
- [
125
- Opcode.RETURNDATACOPY,
126
- makeCost(c.AVM_RETURNDATACOPY_DYN_L2_GAS, 0)
127
- ],
128
- // TODO: Call and static call based on bytecode length
129
- [
130
- Opcode.EMITPUBLICLOG,
131
- makeCost(c.AVM_EMITPUBLICLOG_DYN_L2_GAS, c.AVM_EMITPUBLICLOG_DYN_DA_GAS)
132
- ],
133
- [
134
- Opcode.TORADIXBE,
135
- makeCost(c.AVM_TORADIXBE_DYN_L2_GAS, 0)
136
- ],
137
- [
138
- Opcode.AND_8,
139
- makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)
140
- ],
141
- [
142
- Opcode.AND_16,
143
- makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)
144
- ],
145
- [
146
- Opcode.OR_8,
147
- makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)
148
- ],
149
- [
150
- Opcode.OR_16,
151
- makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)
152
- ],
153
- [
154
- Opcode.XOR_8,
155
- makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)
156
- ],
157
- [
158
- Opcode.XOR_16,
159
- makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)
160
- ],
161
- [
162
- Opcode.SSTORE,
163
- makeCost(0, c.AVM_SSTORE_DYN_DA_GAS)
164
- ]
165
- ]);
166
- /** Returns the fixed base gas cost for a given opcode. */ export function getBaseGasCost(opcode) {
167
- return BASE_GAS_COSTS[opcode];
168
- }
169
- export function computeAddressingCost(indirectOperandsCount, relativeOperandsCount) {
170
- return makeCost((relativeOperandsCount !== 0 ? c.AVM_ADDRESSING_BASE_RESOLUTION_L2_GAS : 0) + indirectOperandsCount * c.AVM_ADDRESSING_INDIRECT_L2_GAS + relativeOperandsCount * c.AVM_ADDRESSING_RELATIVE_L2_GAS, 0);
171
- }
172
- export function getDynamicGasCost(opcode) {
173
- return DYNAMIC_GAS_COSTS.has(opcode) ? DYNAMIC_GAS_COSTS.get(opcode) : makeCost(0, 0);
174
- }
175
- /** Returns a multiplier based on the byte size of the type represented by the integer tag.
176
- * Used to account for necessary rows in the bitwise trace. Throws on invalid. */ export function getBitwiseDynamicGasMultiplier(tag) {
177
- switch(tag){
178
- case TypeTag.UINT1:
179
- return 1;
180
- case TypeTag.UINT8:
181
- return 1;
182
- case TypeTag.UINT16:
183
- return 2;
184
- case TypeTag.UINT32:
185
- return 4;
186
- case TypeTag.UINT64:
187
- return 8;
188
- case TypeTag.UINT128:
189
- return 16;
190
- case TypeTag.FIELD:
191
- return 0; // Field is not allowed for bitwise operations. However we don't fail in gas, since we'll fail in bitwise.
192
- case TypeTag.INVALID:
193
- throw new InstructionExecutionError(`Invalid tag type for gas cost multiplier: ${TypeTag[tag]}`);
194
- }
195
- }