@aztec/simulator 0.0.0-test.1 → 0.0.1-commit.0b941701

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 (527) hide show
  1. package/README.md +8 -0
  2. package/dest/client.d.ts +6 -4
  3. package/dest/client.d.ts.map +1 -1
  4. package/dest/client.js +4 -2
  5. package/dest/common/errors.d.ts +6 -9
  6. package/dest/common/errors.d.ts.map +1 -1
  7. package/dest/common/errors.js +51 -32
  8. package/dest/common/index.d.ts +1 -2
  9. package/dest/common/index.d.ts.map +1 -1
  10. package/dest/common/index.js +0 -1
  11. package/dest/common/stats/index.d.ts +1 -1
  12. package/dest/common/stats/stats.d.ts +1 -1
  13. package/dest/private/acvm/acvm.d.ts +12 -6
  14. package/dest/private/acvm/acvm.d.ts.map +1 -1
  15. package/dest/private/acvm/acvm.js +10 -16
  16. package/dest/private/acvm/acvm_types.d.ts +2 -2
  17. package/dest/private/acvm/acvm_types.d.ts.map +1 -1
  18. package/dest/private/acvm/deserialize.d.ts +19 -20
  19. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  20. package/dest/private/acvm/deserialize.js +32 -24
  21. package/dest/private/acvm/index.d.ts +1 -2
  22. package/dest/private/acvm/index.d.ts.map +1 -1
  23. package/dest/private/acvm/index.js +0 -1
  24. package/dest/private/acvm/serialize.d.ts +21 -4
  25. package/dest/private/acvm/serialize.d.ts.map +1 -1
  26. package/dest/private/acvm/serialize.js +54 -1
  27. package/dest/private/acvm_native.d.ts +39 -0
  28. package/dest/private/acvm_native.d.ts.map +1 -0
  29. package/dest/private/{providers/acvm_native.js → acvm_native.js} +26 -20
  30. package/dest/private/acvm_wasm.d.ts +15 -0
  31. package/dest/private/acvm_wasm.d.ts.map +1 -0
  32. package/dest/private/{providers/acvm_wasm.js → acvm_wasm.js} +22 -19
  33. package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
  34. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
  35. package/dest/private/acvm_wasm_with_blobs.js +35 -0
  36. package/dest/private/circuit_recording/circuit_recorder.d.ts +108 -0
  37. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
  38. package/dest/private/circuit_recording/circuit_recorder.js +210 -0
  39. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +31 -0
  40. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
  41. package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
  42. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +5 -0
  43. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
  44. package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
  45. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
  46. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
  47. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
  48. package/dest/private/circuit_simulator.d.ts +35 -0
  49. package/dest/private/circuit_simulator.d.ts.map +1 -0
  50. package/dest/private/circuit_simulator.js +43 -0
  51. package/dest/private/factory.d.ts +12 -0
  52. package/dest/private/factory.d.ts.map +1 -0
  53. package/dest/private/{providers/factory.js → factory.js} +2 -2
  54. package/dest/public/avm/avm_context.d.ts +8 -8
  55. package/dest/public/avm/avm_context.d.ts.map +1 -1
  56. package/dest/public/avm/avm_contract_call_result.d.ts +8 -6
  57. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  58. package/dest/public/avm/avm_contract_call_result.js +12 -8
  59. package/dest/public/avm/avm_execution_environment.d.ts +9 -6
  60. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  61. package/dest/public/avm/avm_execution_environment.js +5 -3
  62. package/dest/public/avm/avm_gas.d.ts +5 -21
  63. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  64. package/dest/public/avm/avm_gas.js +27 -35
  65. package/dest/public/avm/avm_machine_state.d.ts +9 -6
  66. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  67. package/dest/public/avm/avm_machine_state.js +5 -2
  68. package/dest/public/avm/avm_memory_types.d.ts +100 -89
  69. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  70. package/dest/public/avm/avm_memory_types.js +21 -7
  71. package/dest/public/avm/avm_simulator.d.ts +8 -7
  72. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  73. package/dest/public/avm/avm_simulator.js +32 -42
  74. package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
  75. package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
  76. package/dest/public/avm/avm_simulator_interface.js +3 -0
  77. package/dest/public/avm/calldata.d.ts +51 -0
  78. package/dest/public/avm/calldata.d.ts.map +1 -0
  79. package/dest/public/avm/calldata.js +63 -0
  80. package/dest/public/avm/errors.d.ts +11 -29
  81. package/dest/public/avm/errors.d.ts.map +1 -1
  82. package/dest/public/avm/errors.js +19 -57
  83. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +6 -5
  84. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  85. package/dest/public/avm/fixtures/avm_simulation_tester.js +26 -18
  86. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +8 -6
  87. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  88. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +38 -15
  89. package/dest/public/avm/fixtures/initializers.d.ts +42 -0
  90. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
  91. package/dest/public/avm/fixtures/initializers.js +45 -0
  92. package/dest/public/avm/fixtures/utils.d.ts +39 -0
  93. package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
  94. package/dest/public/avm/fixtures/utils.js +96 -0
  95. package/dest/public/avm/index.d.ts +1 -3
  96. package/dest/public/avm/index.d.ts.map +1 -1
  97. package/dest/public/avm/index.js +0 -2
  98. package/dest/public/avm/opcodes/accrued_substate.d.ts +16 -16
  99. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  100. package/dest/public/avm/opcodes/accrued_substate.js +52 -45
  101. package/dest/public/avm/opcodes/addressing_mode.d.ts +12 -8
  102. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  103. package/dest/public/avm/opcodes/addressing_mode.js +46 -26
  104. package/dest/public/avm/opcodes/arithmetic.d.ts +14 -2
  105. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  106. package/dest/public/avm/opcodes/arithmetic.js +27 -3
  107. package/dest/public/avm/opcodes/bitwise.d.ts +8 -16
  108. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  109. package/dest/public/avm/opcodes/bitwise.js +22 -29
  110. package/dest/public/avm/opcodes/comparators.d.ts +1 -1
  111. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  112. package/dest/public/avm/opcodes/comparators.js +3 -3
  113. package/dest/public/avm/opcodes/contract.d.ts +3 -4
  114. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  115. package/dest/public/avm/opcodes/contract.js +11 -12
  116. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  117. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  118. package/dest/public/avm/opcodes/control_flow.js +13 -11
  119. package/dest/public/avm/opcodes/conversion.d.ts +4 -3
  120. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  121. package/dest/public/avm/opcodes/conversion.js +270 -6
  122. package/dest/public/avm/opcodes/ec_add.d.ts +3 -3
  123. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  124. package/dest/public/avm/opcodes/ec_add.js +21 -12
  125. package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
  126. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  127. package/dest/public/avm/opcodes/environment_getters.js +20 -22
  128. package/dest/public/avm/opcodes/external_calls.d.ts +14 -13
  129. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  130. package/dest/public/avm/opcodes/external_calls.js +52 -46
  131. package/dest/public/avm/opcodes/hashing.d.ts +7 -7
  132. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  133. package/dest/public/avm/opcodes/hashing.js +24 -19
  134. package/dest/public/avm/opcodes/index.d.ts +1 -1
  135. package/dest/public/avm/opcodes/instruction.d.ts +15 -11
  136. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  137. package/dest/public/avm/opcodes/instruction.js +23 -19
  138. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  139. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  140. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  141. package/dest/public/avm/opcodes/memory.d.ts +15 -15
  142. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  143. package/dest/public/avm/opcodes/memory.js +52 -48
  144. package/dest/public/avm/opcodes/misc.d.ts +4 -3
  145. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  146. package/dest/public/avm/opcodes/misc.js +42 -17
  147. package/dest/public/avm/opcodes/storage.d.ts +14 -13
  148. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  149. package/dest/public/avm/opcodes/storage.js +39 -27
  150. package/dest/public/avm/revert_reason.d.ts +18 -0
  151. package/dest/public/avm/revert_reason.d.ts.map +1 -0
  152. package/dest/public/avm/revert_reason.js +39 -0
  153. package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -3
  154. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  155. package/dest/public/avm/serialization/bytecode_serialization.d.ts +3 -7
  156. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  157. package/dest/public/avm/serialization/bytecode_serialization.js +79 -75
  158. package/dest/public/avm/serialization/instruction_serialization.d.ts +14 -5
  159. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  160. package/dest/public/avm/serialization/instruction_serialization.js +70 -35
  161. package/dest/public/avm/test_utils.d.ts +12 -15
  162. package/dest/public/avm/test_utils.d.ts.map +1 -1
  163. package/dest/public/avm/test_utils.js +17 -25
  164. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  165. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  166. package/dest/public/contracts_db_checkpoint.js +30 -0
  167. package/dest/public/db_interfaces.d.ts +68 -0
  168. package/dest/public/db_interfaces.d.ts.map +1 -0
  169. package/dest/public/db_interfaces.js +3 -0
  170. package/dest/public/debug_fn_name.d.ts +18 -0
  171. package/dest/public/debug_fn_name.d.ts.map +1 -0
  172. package/dest/public/debug_fn_name.js +37 -0
  173. package/dest/public/executor_metrics.d.ts +12 -4
  174. package/dest/public/executor_metrics.d.ts.map +1 -1
  175. package/dest/public/executor_metrics.js +29 -24
  176. package/dest/public/executor_metrics_interface.d.ts +10 -0
  177. package/dest/public/executor_metrics_interface.d.ts.map +1 -0
  178. package/dest/public/executor_metrics_interface.js +1 -0
  179. package/dest/public/fixtures/amm_test.d.ts +10 -0
  180. package/dest/public/fixtures/amm_test.d.ts.map +1 -0
  181. package/dest/public/fixtures/amm_test.js +213 -0
  182. package/dest/public/fixtures/bulk_test.d.ts +6 -0
  183. package/dest/public/fixtures/bulk_test.d.ts.map +1 -0
  184. package/dest/public/fixtures/bulk_test.js +262 -0
  185. package/dest/public/fixtures/custom_bytecode_tester.d.ts +34 -0
  186. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
  187. package/dest/public/fixtures/custom_bytecode_tester.js +53 -0
  188. package/dest/public/fixtures/custom_bytecode_tests.d.ts +12 -0
  189. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
  190. package/dest/public/fixtures/custom_bytecode_tests.js +174 -0
  191. package/dest/public/fixtures/index.d.ts +10 -1
  192. package/dest/public/fixtures/index.d.ts.map +1 -1
  193. package/dest/public/fixtures/index.js +9 -0
  194. package/dest/public/fixtures/minimal_public_tx.d.ts +4 -0
  195. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
  196. package/dest/public/fixtures/minimal_public_tx.js +19 -0
  197. package/dest/public/fixtures/opcode_spammer.d.ts +123 -0
  198. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
  199. package/dest/public/fixtures/opcode_spammer.js +1693 -0
  200. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +55 -15
  201. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  202. package/dest/public/fixtures/public_tx_simulation_tester.js +138 -72
  203. package/dest/public/fixtures/simple_contract_data_source.d.ts +36 -0
  204. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -0
  205. package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.js +31 -10
  206. package/dest/public/fixtures/token_test.d.ts +12 -0
  207. package/dest/public/fixtures/token_test.d.ts.map +1 -0
  208. package/dest/public/fixtures/token_test.js +96 -0
  209. package/dest/public/fixtures/utils.d.ts +18 -5
  210. package/dest/public/fixtures/utils.d.ts.map +1 -1
  211. package/dest/public/fixtures/utils.js +102 -59
  212. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
  213. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  214. package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
  215. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  216. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  217. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  218. package/dest/public/hinting_db_sources.d.ts +80 -0
  219. package/dest/public/hinting_db_sources.d.ts.map +1 -0
  220. package/dest/public/hinting_db_sources.js +355 -0
  221. package/dest/public/index.d.ts +6 -9
  222. package/dest/public/index.d.ts.map +1 -1
  223. package/dest/public/index.js +4 -7
  224. package/dest/public/public_db_sources.d.ts +52 -102
  225. package/dest/public/public_db_sources.d.ts.map +1 -1
  226. package/dest/public/public_db_sources.js +220 -193
  227. package/dest/public/public_errors.d.ts +12 -0
  228. package/dest/public/public_errors.d.ts.map +1 -0
  229. package/dest/public/public_errors.js +13 -0
  230. package/dest/public/public_processor/guarded_merkle_tree.d.ts +51 -0
  231. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
  232. package/dest/public/public_processor/guarded_merkle_tree.js +113 -0
  233. package/dest/public/public_processor/public_processor.d.ts +26 -38
  234. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  235. package/dest/public/public_processor/public_processor.js +573 -136
  236. package/dest/public/public_processor/public_processor_metrics.d.ts +3 -3
  237. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  238. package/dest/public/public_processor/public_processor_metrics.js +13 -46
  239. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +18 -0
  240. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  241. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +98 -0
  242. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +53 -0
  243. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
  244. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +132 -0
  245. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
  246. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
  247. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
  248. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
  249. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
  250. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +171 -0
  251. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +22 -0
  252. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
  253. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
  254. package/dest/public/public_tx_simulator/factories.d.ts +13 -0
  255. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  256. package/dest/public/public_tx_simulator/factories.js +28 -0
  257. package/dest/public/public_tx_simulator/index.d.ts +8 -0
  258. package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
  259. package/dest/public/public_tx_simulator/index.js +5 -0
  260. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +31 -0
  261. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
  262. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +51 -0
  263. package/dest/public/public_tx_simulator/public_tx_context.d.ts +24 -31
  264. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  265. package/dest/public/public_tx_simulator/public_tx_context.js +72 -92
  266. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +37 -58
  267. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  268. package/dest/public/public_tx_simulator/public_tx_simulator.js +217 -206
  269. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +32 -0
  270. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
  271. package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
  272. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +21 -0
  273. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
  274. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +415 -0
  275. package/dest/public/side_effect_errors.d.ts +42 -2
  276. package/dest/public/side_effect_errors.d.ts.map +1 -1
  277. package/dest/public/side_effect_errors.js +70 -1
  278. package/dest/public/side_effect_trace.d.ts +22 -67
  279. package/dest/public/side_effect_trace.d.ts.map +1 -1
  280. package/dest/public/side_effect_trace.js +72 -122
  281. package/dest/public/side_effect_trace_interface.d.ts +13 -25
  282. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  283. package/dest/public/state_manager/index.d.ts +2 -0
  284. package/dest/public/state_manager/index.d.ts.map +1 -0
  285. package/dest/public/state_manager/index.js +1 -0
  286. package/dest/public/{avm/journal → state_manager}/nullifiers.d.ts +4 -7
  287. package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
  288. package/dest/public/{avm/journal → state_manager}/nullifiers.js +3 -8
  289. package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +4 -4
  290. package/dest/public/state_manager/public_storage.d.ts.map +1 -0
  291. package/dest/public/{avm/journal → state_manager}/public_storage.js +1 -1
  292. package/dest/public/state_manager/state_manager.d.ts +164 -0
  293. package/dest/public/state_manager/state_manager.d.ts.map +1 -0
  294. package/dest/public/state_manager/state_manager.js +395 -0
  295. package/dest/public/test_executor_metrics.d.ts +55 -0
  296. package/dest/public/test_executor_metrics.d.ts.map +1 -0
  297. package/dest/public/test_executor_metrics.js +307 -0
  298. package/dest/public/unique_class_ids.d.ts +1 -1
  299. package/dest/public/unique_class_ids.d.ts.map +1 -1
  300. package/dest/public/utils.d.ts +3 -5
  301. package/dest/public/utils.d.ts.map +1 -1
  302. package/dest/public/utils.js +4 -21
  303. package/dest/server.d.ts +7 -4
  304. package/dest/server.d.ts.map +1 -1
  305. package/dest/server.js +5 -2
  306. package/dest/testing.d.ts +2 -0
  307. package/dest/testing.d.ts.map +1 -0
  308. package/dest/testing.js +1 -0
  309. package/package.json +39 -33
  310. package/src/client.ts +5 -3
  311. package/src/common/errors.ts +80 -45
  312. package/src/common/index.ts +0 -1
  313. package/src/private/acvm/acvm.ts +17 -32
  314. package/src/private/acvm/acvm_types.ts +1 -1
  315. package/src/private/acvm/deserialize.ts +36 -30
  316. package/src/private/acvm/index.ts +0 -1
  317. package/src/private/acvm/serialize.ts +64 -1
  318. package/src/private/{providers/acvm_native.ts → acvm_native.ts} +47 -24
  319. package/src/private/acvm_wasm.ts +72 -0
  320. package/src/private/acvm_wasm_with_blobs.ts +54 -0
  321. package/src/private/circuit_recording/circuit_recorder.ts +261 -0
  322. package/src/private/circuit_recording/file_circuit_recorder.ts +158 -0
  323. package/src/private/circuit_recording/memory_circuit_recorder.ts +11 -0
  324. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
  325. package/src/private/circuit_simulator.ts +90 -0
  326. package/src/private/{providers/factory.ts → factory.ts} +6 -6
  327. package/src/public/avm/avm_context.ts +6 -6
  328. package/src/public/avm/avm_contract_call_result.ts +23 -9
  329. package/src/public/avm/avm_execution_environment.ts +17 -5
  330. package/src/public/avm/avm_gas.ts +26 -38
  331. package/src/public/avm/avm_machine_state.ts +12 -6
  332. package/src/public/avm/avm_memory_types.ts +24 -7
  333. package/src/public/avm/avm_simulator.ts +57 -62
  334. package/src/public/avm/avm_simulator_interface.ts +8 -0
  335. package/src/public/avm/calldata.ts +100 -0
  336. package/src/public/avm/errors.ts +20 -75
  337. package/src/public/avm/fixtures/avm_simulation_tester.ts +41 -24
  338. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +46 -13
  339. package/src/public/avm/fixtures/initializers.ts +103 -0
  340. package/src/public/avm/fixtures/utils.ts +151 -0
  341. package/src/public/avm/index.ts +0 -2
  342. package/src/public/avm/opcodes/accrued_substate.ts +74 -33
  343. package/src/public/avm/opcodes/addressing_mode.ts +56 -32
  344. package/src/public/avm/opcodes/arithmetic.ts +37 -3
  345. package/src/public/avm/opcodes/bitwise.ts +33 -29
  346. package/src/public/avm/opcodes/comparators.ts +6 -3
  347. package/src/public/avm/opcodes/contract.ts +10 -10
  348. package/src/public/avm/opcodes/control_flow.ts +19 -10
  349. package/src/public/avm/opcodes/conversion.ts +29 -5
  350. package/src/public/avm/opcodes/ec_add.ts +22 -10
  351. package/src/public/avm/opcodes/environment_getters.ts +28 -23
  352. package/src/public/avm/opcodes/external_calls.ts +70 -36
  353. package/src/public/avm/opcodes/hashing.ts +39 -13
  354. package/src/public/avm/opcodes/instruction.ts +31 -21
  355. package/src/public/avm/opcodes/instruction_impl.ts +2 -2
  356. package/src/public/avm/opcodes/memory.ts +81 -42
  357. package/src/public/avm/opcodes/misc.ts +61 -19
  358. package/src/public/avm/opcodes/storage.ts +47 -23
  359. package/src/public/avm/revert_reason.ts +58 -0
  360. package/src/public/avm/serialization/buffer_cursor.ts +4 -1
  361. package/src/public/avm/serialization/bytecode_serialization.ts +89 -80
  362. package/src/public/avm/serialization/instruction_serialization.ts +75 -34
  363. package/src/public/avm/test_utils.ts +25 -42
  364. package/src/public/contracts_db_checkpoint.ts +41 -0
  365. package/src/public/db_interfaces.ts +76 -0
  366. package/src/public/debug_fn_name.ts +52 -0
  367. package/src/public/executor_metrics.ts +47 -24
  368. package/src/public/executor_metrics_interface.ts +15 -0
  369. package/src/public/fixtures/amm_test.ts +331 -0
  370. package/src/public/fixtures/bulk_test.ts +169 -0
  371. package/src/public/fixtures/custom_bytecode_tester.ts +83 -0
  372. package/src/public/fixtures/custom_bytecode_tests.ts +228 -0
  373. package/src/public/fixtures/index.ts +13 -0
  374. package/src/public/fixtures/minimal_public_tx.ts +26 -0
  375. package/src/public/fixtures/opcode_spammer.ts +1754 -0
  376. package/src/public/fixtures/public_tx_simulation_tester.ts +223 -114
  377. package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +37 -20
  378. package/src/public/fixtures/token_test.ts +148 -0
  379. package/src/public/fixtures/utils.ts +141 -69
  380. package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
  381. package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
  382. package/src/public/hinting_db_sources.ts +607 -0
  383. package/src/public/index.ts +11 -8
  384. package/src/public/public_db_sources.ts +279 -259
  385. package/src/public/public_errors.ts +14 -0
  386. package/src/public/public_processor/guarded_merkle_tree.ts +158 -0
  387. package/src/public/public_processor/public_processor.ts +243 -178
  388. package/src/public/public_processor/public_processor_metrics.ts +13 -47
  389. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +121 -0
  390. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +208 -0
  391. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +132 -0
  392. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +237 -0
  393. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +81 -0
  394. package/src/public/public_tx_simulator/factories.ts +41 -0
  395. package/src/public/public_tx_simulator/index.ts +7 -0
  396. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
  397. package/src/public/public_tx_simulator/public_tx_context.ts +168 -195
  398. package/src/public/public_tx_simulator/public_tx_simulator.ts +310 -261
  399. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +33 -0
  400. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +63 -0
  401. package/src/public/side_effect_errors.ts +91 -1
  402. package/src/public/side_effect_trace.ts +95 -321
  403. package/src/public/side_effect_trace_interface.ts +11 -59
  404. package/src/public/state_manager/index.ts +1 -0
  405. package/src/public/{avm/journal → state_manager}/nullifiers.ts +6 -12
  406. package/src/public/{avm/journal → state_manager}/public_storage.ts +3 -3
  407. package/src/public/state_manager/state_manager.ts +546 -0
  408. package/src/public/test_executor_metrics.ts +397 -0
  409. package/src/public/utils.ts +5 -21
  410. package/src/server.ts +6 -3
  411. package/src/testing.ts +1 -0
  412. package/dest/common/db_interfaces.d.ts +0 -80
  413. package/dest/common/db_interfaces.d.ts.map +0 -1
  414. package/dest/common/db_interfaces.js +0 -1
  415. package/dest/common/debug_fn_name.d.ts +0 -5
  416. package/dest/common/debug_fn_name.d.ts.map +0 -1
  417. package/dest/common/debug_fn_name.js +0 -6
  418. package/dest/common/message_load_oracle_inputs.d.ts +0 -15
  419. package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
  420. package/dest/common/message_load_oracle_inputs.js +0 -15
  421. package/dest/private/acvm/oracle/index.d.ts +0 -14
  422. package/dest/private/acvm/oracle/index.d.ts.map +0 -1
  423. package/dest/private/acvm/oracle/index.js +0 -2
  424. package/dest/private/acvm/oracle/oracle.d.ts +0 -49
  425. package/dest/private/acvm/oracle/oracle.d.ts.map +0 -1
  426. package/dest/private/acvm/oracle/oracle.js +0 -263
  427. package/dest/private/acvm/oracle/typed_oracle.d.ts +0 -83
  428. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +0 -1
  429. package/dest/private/acvm/oracle/typed_oracle.js +0 -132
  430. package/dest/private/execution_data_provider.d.ts +0 -261
  431. package/dest/private/execution_data_provider.d.ts.map +0 -1
  432. package/dest/private/execution_data_provider.js +0 -14
  433. package/dest/private/execution_note_cache.d.ts +0 -93
  434. package/dest/private/execution_note_cache.d.ts.map +0 -1
  435. package/dest/private/execution_note_cache.js +0 -180
  436. package/dest/private/hashed_values_cache.d.ts +0 -28
  437. package/dest/private/hashed_values_cache.d.ts.map +0 -1
  438. package/dest/private/hashed_values_cache.js +0 -46
  439. package/dest/private/index.d.ts +0 -13
  440. package/dest/private/index.d.ts.map +0 -1
  441. package/dest/private/index.js +0 -12
  442. package/dest/private/pick_notes.d.ts +0 -85
  443. package/dest/private/pick_notes.d.ts.map +0 -1
  444. package/dest/private/pick_notes.js +0 -51
  445. package/dest/private/private_execution.d.ts +0 -25
  446. package/dest/private/private_execution.d.ts.map +0 -1
  447. package/dest/private/private_execution.js +0 -92
  448. package/dest/private/private_execution_oracle.d.ts +0 -215
  449. package/dest/private/private_execution_oracle.d.ts.map +0 -1
  450. package/dest/private/private_execution_oracle.js +0 -382
  451. package/dest/private/providers/acvm_native.d.ts +0 -40
  452. package/dest/private/providers/acvm_native.d.ts.map +0 -1
  453. package/dest/private/providers/acvm_wasm.d.ts +0 -15
  454. package/dest/private/providers/acvm_wasm.d.ts.map +0 -1
  455. package/dest/private/providers/acvm_wasm_with_blobs.d.ts +0 -19
  456. package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
  457. package/dest/private/providers/acvm_wasm_with_blobs.js +0 -32
  458. package/dest/private/providers/factory.d.ts +0 -12
  459. package/dest/private/providers/factory.d.ts.map +0 -1
  460. package/dest/private/providers/simulation_provider.d.ts +0 -19
  461. package/dest/private/providers/simulation_provider.d.ts.map +0 -1
  462. package/dest/private/providers/simulation_provider.js +0 -24
  463. package/dest/private/simulator.d.ts +0 -34
  464. package/dest/private/simulator.d.ts.map +0 -1
  465. package/dest/private/simulator.js +0 -76
  466. package/dest/private/unconstrained_execution.d.ts +0 -10
  467. package/dest/private/unconstrained_execution.d.ts.map +0 -1
  468. package/dest/private/unconstrained_execution.js +0 -27
  469. package/dest/private/unconstrained_execution_oracle.d.ts +0 -161
  470. package/dest/private/unconstrained_execution_oracle.d.ts.map +0 -1
  471. package/dest/private/unconstrained_execution_oracle.js +0 -258
  472. package/dest/public/avm/bytecode_utils.d.ts +0 -5
  473. package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
  474. package/dest/public/avm/bytecode_utils.js +0 -17
  475. package/dest/public/avm/fixtures/index.d.ts +0 -84
  476. package/dest/public/avm/fixtures/index.d.ts.map +0 -1
  477. package/dest/public/avm/fixtures/index.js +0 -175
  478. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts +0 -35
  479. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
  480. package/dest/public/avm/journal/index.d.ts +0 -2
  481. package/dest/public/avm/journal/index.d.ts.map +0 -1
  482. package/dest/public/avm/journal/index.js +0 -1
  483. package/dest/public/avm/journal/journal.d.ts +0 -209
  484. package/dest/public/avm/journal/journal.d.ts.map +0 -1
  485. package/dest/public/avm/journal/journal.js +0 -486
  486. package/dest/public/avm/journal/nullifiers.d.ts.map +0 -1
  487. package/dest/public/avm/journal/public_storage.d.ts.map +0 -1
  488. package/dest/public/bytecode_errors.d.ts +0 -4
  489. package/dest/public/bytecode_errors.d.ts.map +0 -1
  490. package/dest/public/bytecode_errors.js +0 -6
  491. package/dest/public/execution.d.ts +0 -108
  492. package/dest/public/execution.d.ts.map +0 -1
  493. package/dest/public/execution.js +0 -9
  494. package/dest/public/tx_contract_cache.d.ts +0 -41
  495. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  496. package/dest/public/tx_contract_cache.js +0 -49
  497. package/dest/test/utils.d.ts +0 -13
  498. package/dest/test/utils.d.ts.map +0 -1
  499. package/dest/test/utils.js +0 -22
  500. package/src/common/db_interfaces.ts +0 -94
  501. package/src/common/debug_fn_name.ts +0 -18
  502. package/src/common/message_load_oracle_inputs.ts +0 -15
  503. package/src/private/acvm/oracle/index.ts +0 -16
  504. package/src/private/acvm/oracle/oracle.ts +0 -455
  505. package/src/private/acvm/oracle/typed_oracle.ts +0 -259
  506. package/src/private/execution_data_provider.ts +0 -323
  507. package/src/private/execution_note_cache.ts +0 -217
  508. package/src/private/hashed_values_cache.ts +0 -55
  509. package/src/private/index.ts +0 -16
  510. package/src/private/pick_notes.ts +0 -141
  511. package/src/private/private_execution.ts +0 -151
  512. package/src/private/private_execution_oracle.ts +0 -614
  513. package/src/private/providers/acvm_wasm.ts +0 -63
  514. package/src/private/providers/acvm_wasm_with_blobs.ts +0 -50
  515. package/src/private/providers/simulation_provider.ts +0 -45
  516. package/src/private/simulator.ts +0 -147
  517. package/src/private/unconstrained_execution.ts +0 -50
  518. package/src/private/unconstrained_execution_oracle.ts +0 -373
  519. package/src/public/avm/bytecode_utils.ts +0 -17
  520. package/src/public/avm/fixtures/index.ts +0 -296
  521. package/src/public/avm/journal/index.ts +0 -1
  522. package/src/public/avm/journal/journal.ts +0 -742
  523. package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
  524. package/src/public/bytecode_errors.ts +0 -6
  525. package/src/public/execution.ts +0 -140
  526. package/src/public/tx_contract_cache.ts +0 -69
  527. package/src/test/utils.ts +0 -36
@@ -1,41 +1,40 @@
1
1
  import {
2
- MAX_L2_GAS_PER_TX_PUBLIC_PORTION,
2
+ MAX_ENQUEUED_CALLS_PER_TX,
3
3
  MAX_L2_TO_L1_MSGS_PER_TX,
4
4
  MAX_NOTE_HASHES_PER_TX,
5
5
  MAX_NULLIFIERS_PER_TX,
6
6
  MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
7
- NULLIFIER_SUBTREE_HEIGHT,
8
7
  } from '@aztec/constants';
9
8
  import { padArrayEnd } from '@aztec/foundation/collection';
10
- import { Fr } from '@aztec/foundation/fields';
9
+ import { Fr } from '@aztec/foundation/curves/bn254';
11
10
  import { type Logger, createLogger } from '@aztec/foundation/log';
12
- import { assertLength } from '@aztec/foundation/serialize';
13
11
  import {
14
- AvmCircuitInputs,
15
- type AvmCircuitPublicInputs,
16
- type AvmProvingRequest,
12
+ AvmAccumulatedData,
13
+ AvmAccumulatedDataArrayLengths,
14
+ AvmCircuitPublicInputs,
17
15
  PublicDataWrite,
18
16
  RevertCode,
19
17
  } from '@aztec/stdlib/avm';
20
18
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
19
+ import { AllContractDeploymentData, type ContractDeploymentData } from '@aztec/stdlib/contract';
21
20
  import type { SimulationError } from '@aztec/stdlib/errors';
22
- import { computeTransactionFee } from '@aztec/stdlib/fees';
21
+ import { computeEffectiveGasFees, computeTransactionFee } from '@aztec/stdlib/fees';
23
22
  import { Gas, GasSettings } from '@aztec/stdlib/gas';
24
- import type { MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
25
23
  import {
26
24
  PrivateToAvmAccumulatedData,
27
25
  PrivateToAvmAccumulatedDataArrayLengths,
28
- type PrivateToPublicAccumulatedData,
26
+ PrivateToPublicAccumulatedData,
29
27
  PublicCallRequest,
28
+ PublicCallRequestArrayLengths,
30
29
  countAccumulatedItems,
31
- mergeAccumulatedData,
32
30
  } from '@aztec/stdlib/kernel';
33
- import { ProvingRequestType } from '@aztec/stdlib/proofs';
31
+ import { FlatPublicLogs } from '@aztec/stdlib/logs';
32
+ import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
34
33
  import { MerkleTreeId } from '@aztec/stdlib/trees';
35
34
  import {
36
35
  type GlobalVariables,
37
- type PublicExecutionRequest,
38
- type StateReference,
36
+ ProtocolContracts,
37
+ PublicCallRequestWithCalldata,
39
38
  TreeSnapshots,
40
39
  type Tx,
41
40
  TxExecutionPhase,
@@ -45,10 +44,11 @@ import {
45
44
  import { strict as assert } from 'assert';
46
45
  import { inspect } from 'util';
47
46
 
48
- import { AvmPersistableStateManager } from '../avm/index.js';
49
- import type { WorldStateDB } from '../public_db_sources.js';
50
- import { SideEffectArrayLengths, SideEffectTrace } from '../side_effect_trace.js';
51
- import { getCallRequestsByPhase, getExecutionRequestsByPhase } from '../utils.js';
47
+ import type { PublicContractsDBInterface } from '../db_interfaces.js';
48
+ import type { PublicTreesDB } from '../public_db_sources.js';
49
+ import { SideEffectTrace } from '../side_effect_trace.js';
50
+ import { PublicPersistableStateManager } from '../state_manager/state_manager.js';
51
+ import { getCallRequestsWithCalldataByPhase } from '../utils.js';
52
52
 
53
53
  /**
54
54
  * The transaction-level context for public execution.
@@ -67,75 +67,77 @@ export class PublicTxContext {
67
67
  private revertCode: RevertCode = RevertCode.OK;
68
68
  /* What caused a revert (if one occurred)? */
69
69
  public revertReason: SimulationError | undefined;
70
-
71
- public avmProvingRequest: AvmProvingRequest | undefined; // FIXME(dbanks12): remove
72
-
73
- constructor(
70
+ private constructor(
74
71
  public readonly txHash: TxHash,
75
72
  public readonly state: PhaseStateManager,
73
+ private readonly startTreeSnapshots: TreeSnapshots,
76
74
  private readonly globalVariables: GlobalVariables,
77
- private readonly startStateReference: StateReference,
75
+ private readonly protocolContracts: ProtocolContracts,
76
+ private readonly proverId: Fr,
78
77
  private readonly gasSettings: GasSettings,
79
78
  private readonly gasUsedByPrivate: Gas,
80
79
  private readonly gasAllocatedToPublic: Gas,
81
- private readonly setupCallRequests: PublicCallRequest[],
82
- private readonly appLogicCallRequests: PublicCallRequest[],
83
- private readonly teardownCallRequests: PublicCallRequest[],
84
- private readonly setupExecutionRequests: PublicExecutionRequest[],
85
- private readonly appLogicExecutionRequests: PublicExecutionRequest[],
86
- private readonly teardownExecutionRequests: PublicExecutionRequest[],
80
+ private readonly gasAllocatedToPublicTeardown: Gas,
81
+ private readonly setupCallRequests: PublicCallRequestWithCalldata[],
82
+ private readonly appLogicCallRequests: PublicCallRequestWithCalldata[],
83
+ private readonly teardownCallRequests: PublicCallRequestWithCalldata[],
84
+ public readonly nonRevertibleContractDeploymentData: ContractDeploymentData,
85
+ public readonly revertibleContractDeploymentData: ContractDeploymentData,
87
86
  public readonly nonRevertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData,
88
87
  public readonly revertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData,
89
88
  public readonly feePayer: AztecAddress,
90
- public trace: SideEffectTrace, // FIXME(dbanks12): should be private
89
+ private readonly trace: SideEffectTrace,
91
90
  ) {
92
91
  this.log = createLogger(`simulator:public_tx_context`);
93
92
  }
94
93
 
95
94
  public static async create(
96
- db: MerkleTreeReadOperations,
97
- worldStateDB: WorldStateDB,
95
+ treesDB: PublicTreesDB,
96
+ contractsDB: PublicContractsDBInterface,
98
97
  tx: Tx,
99
98
  globalVariables: GlobalVariables,
100
- doMerkleOperations: boolean,
99
+ protocolContracts: ProtocolContracts,
100
+ proverId: Fr,
101
101
  ) {
102
+ const contractDeploymentData = AllContractDeploymentData.fromTx(tx);
103
+ const nonRevertibleContractDeploymentData = contractDeploymentData.getNonRevertibleContractDeploymentData();
104
+ const revertibleContractDeploymentData = contractDeploymentData.getRevertibleContractDeploymentData();
102
105
  const nonRevertibleAccumulatedDataFromPrivate = tx.data.forPublic!.nonRevertibleAccumulatedData;
103
106
 
104
- const previousAccumulatedDataArrayLengths = new SideEffectArrayLengths(
105
- /*publicDataWrites*/ 0,
106
- /*protocolPublicDataWrites*/ 0,
107
- /*noteHashes*/ 0,
108
- /*nullifiers=*/ 0,
109
- countAccumulatedItems(nonRevertibleAccumulatedDataFromPrivate.l2ToL1Msgs),
110
- /*publicLogs*/ 0,
111
- );
112
-
113
- const trace = new SideEffectTrace(/*startSideEffectCounter=*/ 0, previousAccumulatedDataArrayLengths);
107
+ const trace = new SideEffectTrace();
114
108
 
115
109
  const firstNullifier = nonRevertibleAccumulatedDataFromPrivate.nullifiers[0];
116
110
 
117
111
  // Transaction level state manager that will be forked for revertible phases.
118
- const txStateManager = AvmPersistableStateManager.create(worldStateDB, trace, doMerkleOperations, firstNullifier);
112
+ const txStateManager = PublicPersistableStateManager.create(
113
+ treesDB,
114
+ contractsDB,
115
+ trace,
116
+ firstNullifier,
117
+ globalVariables.timestamp,
118
+ );
119
119
 
120
120
  const gasSettings = tx.data.constants.txContext.gasSettings;
121
121
  const gasUsedByPrivate = tx.data.gasUsed;
122
- // Gas allocated to public is "whatever's left" after private, but with some max applied.
123
- const gasAllocatedToPublic = applyMaxToAvailableGas(gasSettings.gasLimits.sub(gasUsedByPrivate));
122
+ const gasAllocatedToPublic = gasSettings.gasLimits.sub(gasUsedByPrivate);
123
+ const gasAllocatedToPublicTeardown = gasSettings.teardownGasLimits;
124
124
 
125
125
  return new PublicTxContext(
126
- await tx.getTxHash(),
126
+ tx.getTxHash(),
127
127
  new PhaseStateManager(txStateManager),
128
+ await txStateManager.getTreeSnapshots(),
128
129
  globalVariables,
129
- await db.getStateReference(),
130
+ protocolContracts,
131
+ proverId,
130
132
  gasSettings,
131
133
  gasUsedByPrivate,
132
134
  gasAllocatedToPublic,
133
- getCallRequestsByPhase(tx, TxExecutionPhase.SETUP),
134
- getCallRequestsByPhase(tx, TxExecutionPhase.APP_LOGIC),
135
- getCallRequestsByPhase(tx, TxExecutionPhase.TEARDOWN),
136
- getExecutionRequestsByPhase(tx, TxExecutionPhase.SETUP),
137
- getExecutionRequestsByPhase(tx, TxExecutionPhase.APP_LOGIC),
138
- getExecutionRequestsByPhase(tx, TxExecutionPhase.TEARDOWN),
135
+ gasAllocatedToPublicTeardown,
136
+ getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.SETUP),
137
+ getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.APP_LOGIC),
138
+ getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.TEARDOWN),
139
+ nonRevertibleContractDeploymentData,
140
+ revertibleContractDeploymentData,
139
141
  tx.data.forPublic!.nonRevertibleAccumulatedData,
140
142
  tx.data.forPublic!.revertibleAccumulatedData,
141
143
  tx.data.feePayer,
@@ -148,10 +150,8 @@ export class PublicTxContext {
148
150
  * All phases have been processed.
149
151
  * Actual transaction fee and actual total consumed gas can now be queried.
150
152
  */
151
- async halt() {
152
- if (this.state.isForked()) {
153
- await this.state.mergeForkedState();
154
- }
153
+ halt() {
154
+ assert(!this.state.isForked(), 'Cannot halt when state is forked');
155
155
  this.halted = true;
156
156
  }
157
157
 
@@ -161,7 +161,7 @@ export class PublicTxContext {
161
161
  * NOTE: this does not "halt" the entire transaction execution.
162
162
  */
163
163
  revert(phase: TxExecutionPhase, revertReason: SimulationError | undefined = undefined, culprit = '') {
164
- this.log.warn(`${TxExecutionPhase[phase]} phase reverted! ${culprit} failed with reason: ${revertReason}`);
164
+ this.log.warn(`${TxExecutionPhase[phase]} phase reverted! ${culprit} failed with reason: ${revertReason?.message}`);
165
165
 
166
166
  if (revertReason && !this.revertReason) {
167
167
  // don't override revertReason
@@ -170,11 +170,6 @@ export class PublicTxContext {
170
170
  }
171
171
  if (phase === TxExecutionPhase.SETUP) {
172
172
  this.log.warn(`Setup phase reverted! The transaction will be thrown out.`);
173
- if (revertReason) {
174
- throw revertReason;
175
- } else {
176
- throw new Error(`Setup phase reverted! The transaction will be thrown out. ${culprit} failed`);
177
- }
178
173
  } else if (phase === TxExecutionPhase.APP_LOGIC) {
179
174
  this.revertCode = RevertCode.APP_LOGIC_REVERTED;
180
175
  } else if (phase === TxExecutionPhase.TEARDOWN) {
@@ -212,7 +207,7 @@ export class PublicTxContext {
212
207
  /**
213
208
  * Get the call requests for the specified phase (including args hashes).
214
209
  */
215
- getCallRequestsForPhase(phase: TxExecutionPhase): PublicCallRequest[] {
210
+ getCallRequestsForPhase(phase: TxExecutionPhase): PublicCallRequestWithCalldata[] {
216
211
  switch (phase) {
217
212
  case TxExecutionPhase.SETUP:
218
213
  return this.setupCallRequests;
@@ -223,26 +218,13 @@ export class PublicTxContext {
223
218
  }
224
219
  }
225
220
 
226
- /**
227
- * Get the call requests for the specified phase (including actual args).
228
- */
229
- getExecutionRequestsForPhase(phase: TxExecutionPhase): PublicExecutionRequest[] {
230
- switch (phase) {
231
- case TxExecutionPhase.SETUP:
232
- return this.setupExecutionRequests;
233
- case TxExecutionPhase.APP_LOGIC:
234
- return this.appLogicExecutionRequests;
235
- case TxExecutionPhase.TEARDOWN:
236
- return this.teardownExecutionRequests;
237
- }
238
- }
239
-
240
221
  /**
241
222
  * How much gas is left as of the specified phase?
242
223
  */
243
224
  getGasLeftAtPhase(phase: TxExecutionPhase): Gas {
244
225
  if (phase === TxExecutionPhase.TEARDOWN) {
245
- return applyMaxToAvailableGas(this.gasSettings.teardownGasLimits);
226
+ const gasLeftForPublicTeardown = this.gasAllocatedToPublicTeardown.sub(this.teardownGasUsed);
227
+ return gasLeftForPublicTeardown;
246
228
  } else {
247
229
  const gasLeftForPublic = this.gasAllocatedToPublic.sub(this.gasUsedByPublic);
248
230
  return gasLeftForPublic;
@@ -322,124 +304,125 @@ export class PublicTxContext {
322
304
  /**
323
305
  * Generate the public inputs for the AVM circuit.
324
306
  */
325
- private async generateAvmCircuitPublicInputs(endStateReference: StateReference): Promise<AvmCircuitPublicInputs> {
307
+ public async generateAvmCircuitPublicInputs(): Promise<AvmCircuitPublicInputs> {
326
308
  assert(this.halted, 'Can only get AvmCircuitPublicInputs after tx execution ends');
327
309
  const stateManager = this.state.getActiveStateManager();
328
310
 
329
- const startTreeSnapshots = new TreeSnapshots(
330
- this.startStateReference.l1ToL2MessageTree,
331
- this.startStateReference.partial.noteHashTree,
332
- this.startStateReference.partial.nullifierTree,
333
- this.startStateReference.partial.publicDataTree,
311
+ // We get the side effects from the AVM.
312
+ // The AVM will already have handled the conditional insertion of most private side-effects.
313
+ // (depending on the revert code of each stage). Only l2ToL1Msgs and publicLogs still need to be "merged".
314
+ const {
315
+ publicDataWrites: avmPublicDataWrites,
316
+ noteHashes: avmNoteHashes,
317
+ nullifiers: avmNullifiers,
318
+ l2ToL1Msgs: avmL2ToL1Msgs,
319
+ publicLogs: avmPublicLogs,
320
+ } = this.trace.getSideEffects();
321
+
322
+ // Private generates PrivateLogs, and public execution generates PublicLogs.
323
+ // Since these are two different categories, they should not be merged.
324
+ const finalPublicLogs = avmPublicLogs;
325
+
326
+ // We squash public data writes.
327
+ // Maps slot to value. Maps in TS are iterable in insertion order, which is exactly what we want for
328
+ // squashing "to the left", where the first occurrence of a slot uses the value of the last write to it,
329
+ // and the rest occurrences are omitted.
330
+ // Note: you can't write public state from private, so we only squash what we got from the AVM.
331
+ const finalPublicDataWrites = (() => {
332
+ const squashedPublicDataWrites: Map<bigint, Fr> = new Map();
333
+ for (const publicDataWrite of avmPublicDataWrites) {
334
+ squashedPublicDataWrites.set(publicDataWrite.leafSlot.toBigInt(), publicDataWrite.newValue);
335
+ }
336
+ return Array.from(squashedPublicDataWrites.entries()).map(
337
+ ([slot, value]) => new PublicDataWrite(new Fr(slot), value),
338
+ );
339
+ })();
340
+
341
+ // Count before padding.
342
+ const accumulatedDataArrayLengths = new AvmAccumulatedDataArrayLengths(
343
+ avmNoteHashes.length,
344
+ avmNullifiers.length,
345
+ avmL2ToL1Msgs.length,
346
+ finalPublicDataWrites.length,
334
347
  );
335
348
 
336
- // Will be patched/padded at the end of this fn
337
- const endTreeSnapshots = new TreeSnapshots(
338
- endStateReference.l1ToL2MessageTree,
339
- endStateReference.partial.noteHashTree,
340
- endStateReference.partial.nullifierTree,
341
- endStateReference.partial.publicDataTree,
349
+ const accumulatedData = new AvmAccumulatedData(
350
+ /*noteHashes=*/ padArrayEnd(
351
+ avmNoteHashes.map(n => n.value),
352
+ Fr.zero(),
353
+ MAX_NOTE_HASHES_PER_TX,
354
+ ),
355
+ /*nullifiers=*/ padArrayEnd(
356
+ avmNullifiers.map(n => n.value),
357
+ Fr.zero(),
358
+ MAX_NULLIFIERS_PER_TX,
359
+ ),
360
+ /*l2ToL1Msgs=*/ padArrayEnd(avmL2ToL1Msgs, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
361
+ /*publicLogs=*/ FlatPublicLogs.fromLogs(finalPublicLogs),
362
+ /*publicDataWrites=*/ padArrayEnd(
363
+ finalPublicDataWrites,
364
+ PublicDataWrite.empty(),
365
+ MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
366
+ ),
342
367
  );
343
368
 
344
- const avmCircuitPublicInputs = this.trace.toAvmCircuitPublicInputs(
345
- this.globalVariables,
346
- startTreeSnapshots,
347
- /*startGasUsed=*/ this.gasUsedByPrivate,
348
- this.gasSettings,
349
- this.feePayer,
350
- this.setupCallRequests,
351
- this.appLogicCallRequests,
352
- /*teardownCallRequest=*/ this.teardownCallRequests.length
353
- ? this.teardownCallRequests[0]
354
- : PublicCallRequest.empty(),
355
- endTreeSnapshots,
356
- /*endGasUsed=*/ this.getTotalGasUsed(),
357
- /*transactionFee=*/ this.getTransactionFeeUnsafe(),
358
- /*reverted=*/ !this.revertCode.isOK(),
359
- );
369
+ // Now we finally have enough information to pad the trees.
370
+ // NOTE(fcarreiro): a bit weird that a method that generates the PIs does this,
371
+ // but we do need the end tree snapshots. We can consider moving things to the caller.
372
+ const numNoteHashesToPad = MAX_NOTE_HASHES_PER_TX - avmNoteHashes.length;
373
+ const numNullifiersToPad = MAX_NULLIFIERS_PER_TX - avmNullifiers.length;
374
+ await stateManager.padTree(MerkleTreeId.NOTE_HASH_TREE, numNoteHashesToPad);
375
+ await stateManager.padTree(MerkleTreeId.NULLIFIER_TREE, numNullifiersToPad);
376
+ const endTreeSnapshots = await stateManager.getTreeSnapshots();
360
377
 
361
- const getArrayLengths = (from: PrivateToPublicAccumulatedData) =>
378
+ // This converts the private accumulated data to the avm accumulated data format.
379
+ const convertAccumulatedData = (from: PrivateToPublicAccumulatedData) =>
380
+ new PrivateToAvmAccumulatedData(from.noteHashes, from.nullifiers, from.l2ToL1Msgs);
381
+ const getPreviousAccumulatedDataArrayLengths = (from: PrivateToPublicAccumulatedData) =>
362
382
  new PrivateToAvmAccumulatedDataArrayLengths(
363
383
  countAccumulatedItems(from.noteHashes),
364
384
  countAccumulatedItems(from.nullifiers),
365
385
  countAccumulatedItems(from.l2ToL1Msgs),
366
386
  );
367
- const convertAccumulatedData = (from: PrivateToPublicAccumulatedData) =>
368
- new PrivateToAvmAccumulatedData(from.noteHashes, from.nullifiers, from.l2ToL1Msgs);
369
- // Temporary overrides as these entries aren't yet populated in trace
370
- avmCircuitPublicInputs.previousNonRevertibleAccumulatedDataArrayLengths = getArrayLengths(
371
- this.nonRevertibleAccumulatedDataFromPrivate,
372
- );
373
- avmCircuitPublicInputs.previousRevertibleAccumulatedDataArrayLengths = getArrayLengths(
374
- this.revertibleAccumulatedDataFromPrivate,
375
- );
376
- avmCircuitPublicInputs.previousNonRevertibleAccumulatedData = convertAccumulatedData(
377
- this.nonRevertibleAccumulatedDataFromPrivate,
378
- );
379
- avmCircuitPublicInputs.previousRevertibleAccumulatedData = convertAccumulatedData(
380
- this.revertibleAccumulatedDataFromPrivate,
381
- );
382
-
383
- const msgsFromPrivate = this.revertCode.isOK()
384
- ? mergeAccumulatedData(
385
- avmCircuitPublicInputs.previousNonRevertibleAccumulatedData.l2ToL1Msgs,
386
- avmCircuitPublicInputs.previousRevertibleAccumulatedData.l2ToL1Msgs,
387
- )
388
- : avmCircuitPublicInputs.previousNonRevertibleAccumulatedData.l2ToL1Msgs;
389
- avmCircuitPublicInputs.accumulatedData.l2ToL1Msgs = assertLength(
390
- mergeAccumulatedData(msgsFromPrivate, avmCircuitPublicInputs.accumulatedData.l2ToL1Msgs),
391
- MAX_L2_TO_L1_MSGS_PER_TX,
392
- );
393
-
394
- // Maps slot to value. Maps in TS are iterable in insertion order, which is exactly what we want for
395
- // squashing "to the left", where the first occurrence of a slot uses the value of the last write to it,
396
- // and the rest occurrences are omitted
397
- const squashedPublicDataWrites: Map<bigint, Fr> = new Map();
398
- for (const publicDataWrite of avmCircuitPublicInputs.accumulatedData.publicDataWrites) {
399
- squashedPublicDataWrites.set(publicDataWrite.leafSlot.toBigInt(), publicDataWrite.value);
400
- }
401
387
 
402
- avmCircuitPublicInputs.accumulatedData.publicDataWrites = padArrayEnd(
403
- Array.from(squashedPublicDataWrites.entries()).map(([slot, value]) => new PublicDataWrite(new Fr(slot), value)),
404
- PublicDataWrite.empty(),
405
- MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
406
- );
407
- const numNoteHashesToPad =
408
- MAX_NOTE_HASHES_PER_TX - countAccumulatedItems(avmCircuitPublicInputs.accumulatedData.noteHashes);
409
- await stateManager.db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, padArrayEnd([], Fr.ZERO, numNoteHashesToPad));
410
- const numNullifiersToPad =
411
- MAX_NULLIFIERS_PER_TX - countAccumulatedItems(avmCircuitPublicInputs.accumulatedData.nullifiers);
412
- await stateManager.db.batchInsert(
413
- MerkleTreeId.NULLIFIER_TREE,
414
- padArrayEnd([], Fr.ZERO, numNullifiersToPad).map(nullifier => nullifier.toBuffer()),
415
- NULLIFIER_SUBTREE_HEIGHT,
416
- );
417
-
418
- const paddedState = await stateManager.db.getStateReference();
419
- avmCircuitPublicInputs.endTreeSnapshots = new TreeSnapshots(
420
- paddedState.l1ToL2MessageTree,
421
- paddedState.partial.noteHashTree,
422
- paddedState.partial.nullifierTree,
423
- paddedState.partial.publicDataTree,
424
- );
425
-
426
- return avmCircuitPublicInputs;
427
- }
428
-
429
- /**
430
- * Generate the proving request for the AVM circuit.
431
- */
432
- async generateProvingRequest(endStateReference: StateReference): Promise<AvmProvingRequest> {
433
- const hints = this.trace.getAvmCircuitHints();
434
- return {
435
- type: ProvingRequestType.PUBLIC_VM,
436
- inputs: new AvmCircuitInputs(
437
- 'public_dispatch',
438
- [],
439
- hints,
440
- await this.generateAvmCircuitPublicInputs(endStateReference),
388
+ return new AvmCircuitPublicInputs(
389
+ this.globalVariables,
390
+ this.protocolContracts,
391
+ this.startTreeSnapshots,
392
+ /*startGasUsed=*/ this.gasUsedByPrivate,
393
+ this.gasSettings,
394
+ computeEffectiveGasFees(this.globalVariables.gasFees, this.gasSettings),
395
+ this.feePayer,
396
+ this.proverId,
397
+ /*publicCallRequestArrayLengths=*/ new PublicCallRequestArrayLengths(
398
+ this.setupCallRequests.length,
399
+ this.appLogicCallRequests.length,
400
+ this.teardownCallRequests.length > 0,
401
+ ),
402
+ /*publicSetupCallRequests=*/ padArrayEnd(
403
+ this.setupCallRequests.map(r => r.request),
404
+ PublicCallRequest.empty(),
405
+ MAX_ENQUEUED_CALLS_PER_TX,
406
+ ),
407
+ /*publicAppLogicCallRequests=*/ padArrayEnd(
408
+ this.appLogicCallRequests.map(r => r.request),
409
+ PublicCallRequest.empty(),
410
+ MAX_ENQUEUED_CALLS_PER_TX,
441
411
  ),
442
- };
412
+ /*publicTeardownCallRequests=*/ this.teardownCallRequests.length > 0
413
+ ? this.teardownCallRequests[0].request
414
+ : PublicCallRequest.empty(),
415
+ getPreviousAccumulatedDataArrayLengths(this.nonRevertibleAccumulatedDataFromPrivate),
416
+ getPreviousAccumulatedDataArrayLengths(this.revertibleAccumulatedDataFromPrivate),
417
+ convertAccumulatedData(this.nonRevertibleAccumulatedDataFromPrivate),
418
+ convertAccumulatedData(this.revertibleAccumulatedDataFromPrivate),
419
+ endTreeSnapshots,
420
+ this.getTotalGasUsed(),
421
+ accumulatedDataArrayLengths,
422
+ accumulatedData,
423
+ /*transactionFee=*/ this.getTransactionFeeUnsafe(),
424
+ /*isReverted=*/ !this.revertCode.isOK(),
425
+ );
443
426
  }
444
427
  }
445
428
 
@@ -456,9 +439,9 @@ export class PublicTxContext {
456
439
  class PhaseStateManager {
457
440
  private log: Logger;
458
441
 
459
- private currentlyActiveStateManager: AvmPersistableStateManager | undefined;
442
+ private currentlyActiveStateManager: PublicPersistableStateManager | undefined;
460
443
 
461
- constructor(private readonly txStateManager: AvmPersistableStateManager) {
444
+ constructor(private readonly txStateManager: PublicPersistableStateManager) {
462
445
  this.log = createLogger(`simulator:public_phase_state_manager`);
463
446
  }
464
447
 
@@ -492,13 +475,3 @@ class PhaseStateManager {
492
475
  this.currentlyActiveStateManager = undefined;
493
476
  }
494
477
  }
495
-
496
- /**
497
- * Apply L2 gas maximum.
498
- */
499
- function applyMaxToAvailableGas(availableGas: Gas) {
500
- return new Gas(
501
- /*daGas=*/ availableGas.daGas,
502
- /*l2Gas=*/ Math.min(availableGas.l2Gas, MAX_L2_GAS_PER_TX_PUBLIC_PORTION),
503
- );
504
- }