@aztec/simulator 0.0.1-commit.993d240 → 0.0.1-commit.9a89641

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 (341) 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/circuit_recording/circuit_recorder.d.ts +36 -23
  5. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  6. package/dest/private/circuit_recording/circuit_recorder.js +65 -69
  7. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +7 -19
  8. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  9. package/dest/private/circuit_recording/file_circuit_recorder.js +38 -42
  10. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  11. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  12. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
  13. package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
  14. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  15. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +1 -1
  16. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  17. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +1 -1
  18. package/dest/public/avm/testing/utils.d.ts +32 -0
  19. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  20. package/dest/public/avm/{fixtures → testing}/utils.js +1 -34
  21. package/dest/public/avm_simulator.d.ts +28 -0
  22. package/dest/public/avm_simulator.d.ts.map +1 -0
  23. package/dest/public/avm_simulator.js +4 -0
  24. package/dest/public/avm_simulator_pool.d.ts +45 -0
  25. package/dest/public/avm_simulator_pool.d.ts.map +1 -0
  26. package/dest/public/avm_simulator_pool.js +197 -0
  27. package/dest/public/cdb_ipc_server.d.ts +40 -0
  28. package/dest/public/cdb_ipc_server.d.ts.map +1 -0
  29. package/dest/public/cdb_ipc_server.js +153 -0
  30. package/dest/public/fixtures/amm_test.js +2 -2
  31. package/dest/public/fixtures/bulk_test.js +2 -2
  32. package/dest/public/fixtures/custom_bytecode_tester.d.ts +1 -1
  33. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  34. package/dest/public/fixtures/custom_bytecode_tester.js +2 -2
  35. package/dest/public/fixtures/index.d.ts +2 -4
  36. package/dest/public/fixtures/index.d.ts.map +1 -1
  37. package/dest/public/fixtures/index.js +1 -3
  38. package/dest/public/fixtures/public_processor_test_env.d.ts +30 -0
  39. package/dest/public/fixtures/public_processor_test_env.d.ts.map +1 -0
  40. package/dest/public/fixtures/public_processor_test_env.js +73 -0
  41. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +11 -7
  42. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  43. package/dest/public/fixtures/public_tx_simulation_tester.js +33 -43
  44. package/dest/public/fixtures/simple_contract_data_source.js +1 -1
  45. package/dest/public/fixtures/token_test.js +3 -3
  46. package/dest/public/fixtures/utils.d.ts +1 -1
  47. package/dest/public/fixtures/utils.d.ts.map +1 -1
  48. package/dest/public/fixtures/utils.js +5 -3
  49. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +11 -4
  50. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
  51. package/dest/public/fuzzing/avm_fuzzer_simulator.js +24 -10
  52. package/dest/public/fuzzing/avm_simulator_bin.js +4 -4
  53. package/dest/public/index.d.ts +5 -2
  54. package/dest/public/index.d.ts.map +1 -1
  55. package/dest/public/index.js +2 -1
  56. package/dest/public/public_db_sources.d.ts +2 -2
  57. package/dest/public/public_db_sources.d.ts.map +1 -1
  58. package/dest/public/public_db_sources.js +1 -1
  59. package/dest/public/public_processor/guarded_merkle_tree.d.ts +4 -3
  60. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  61. package/dest/public/public_processor/guarded_merkle_tree.js +3 -0
  62. package/dest/public/public_processor/public_processor.d.ts +8 -4
  63. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  64. package/dest/public/public_processor/public_processor.js +18 -14
  65. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +17 -0
  66. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  67. package/dest/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.js → dumping_public_tx_simulator.js} +10 -23
  68. package/dest/public/public_tx_simulator/factories.d.ts +8 -8
  69. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
  70. package/dest/public/public_tx_simulator/factories.js +8 -8
  71. package/dest/public/public_tx_simulator/index.d.ts +4 -6
  72. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  73. package/dest/public/public_tx_simulator/index.js +2 -4
  74. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +42 -75
  75. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  76. package/dest/public/public_tx_simulator/public_tx_simulator.js +98 -323
  77. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +24 -0
  78. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  79. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +31 -0
  80. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +5 -5
  81. package/dest/public/test_executor_metrics.d.ts +1 -6
  82. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  83. package/dest/public/test_executor_metrics.js +0 -22
  84. package/package.json +20 -18
  85. package/src/client.ts +0 -2
  86. package/src/private/circuit_recording/circuit_recorder.ts +84 -78
  87. package/src/private/circuit_recording/file_circuit_recorder.ts +38 -48
  88. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
  89. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +1 -1
  90. package/src/public/avm/{fixtures → testing}/utils.ts +1 -40
  91. package/src/public/avm_simulator.ts +29 -0
  92. package/src/public/avm_simulator_pool.ts +226 -0
  93. package/src/public/cdb_ipc_server.ts +198 -0
  94. package/src/public/fixtures/amm_test.ts +2 -2
  95. package/src/public/fixtures/bulk_test.ts +2 -2
  96. package/src/public/fixtures/custom_bytecode_tester.ts +2 -2
  97. package/src/public/fixtures/index.ts +1 -3
  98. package/src/public/fixtures/public_processor_test_env.ts +88 -0
  99. package/src/public/fixtures/public_tx_simulation_tester.ts +41 -55
  100. package/src/public/fixtures/simple_contract_data_source.ts +1 -1
  101. package/src/public/fixtures/token_test.ts +3 -3
  102. package/src/public/fixtures/utils.ts +6 -11
  103. package/src/public/fuzzing/avm_fuzzer_simulator.ts +25 -10
  104. package/src/public/fuzzing/avm_simulator_bin.ts +3 -5
  105. package/src/public/index.ts +7 -3
  106. package/src/public/public_db_sources.ts +1 -1
  107. package/src/public/public_processor/guarded_merkle_tree.ts +5 -2
  108. package/src/public/public_processor/public_processor.ts +24 -17
  109. package/src/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.ts → dumping_public_tx_simulator.ts} +15 -31
  110. package/src/public/public_tx_simulator/factories.ts +27 -10
  111. package/src/public/public_tx_simulator/index.ts +6 -5
  112. package/src/public/public_tx_simulator/public_tx_simulator.ts +139 -480
  113. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
  114. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +5 -5
  115. package/src/public/test_executor_metrics.ts +0 -24
  116. package/dest/public/avm/avm_context.d.ts +0 -41
  117. package/dest/public/avm/avm_context.d.ts.map +0 -1
  118. package/dest/public/avm/avm_context.js +0 -44
  119. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  120. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  121. package/dest/public/avm/avm_contract_call_result.js +0 -54
  122. package/dest/public/avm/avm_execution_environment.d.ts +0 -24
  123. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  124. package/dest/public/avm/avm_execution_environment.js +0 -33
  125. package/dest/public/avm/avm_gas.d.ts +0 -44
  126. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  127. package/dest/public/avm/avm_gas.js +0 -195
  128. package/dest/public/avm/avm_machine_state.d.ts +0 -98
  129. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  130. package/dest/public/avm/avm_machine_state.js +0 -110
  131. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  132. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  133. package/dest/public/avm/avm_memory_types.js +0 -354
  134. package/dest/public/avm/avm_simulator.d.ts +0 -41
  135. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  136. package/dest/public/avm/avm_simulator.js +0 -192
  137. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  138. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  139. package/dest/public/avm/avm_simulator_interface.js +0 -3
  140. package/dest/public/avm/calldata.d.ts +0 -51
  141. package/dest/public/avm/calldata.d.ts.map +0 -1
  142. package/dest/public/avm/calldata.js +0 -64
  143. package/dest/public/avm/errors.d.ts +0 -104
  144. package/dest/public/avm/errors.d.ts.map +0 -1
  145. package/dest/public/avm/errors.js +0 -141
  146. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +0 -2
  147. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +0 -1
  148. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  149. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  150. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -84
  151. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  152. package/dest/public/avm/fixtures/initializers.d.ts +0 -42
  153. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  154. package/dest/public/avm/fixtures/initializers.js +0 -45
  155. package/dest/public/avm/fixtures/utils.d.ts +0 -39
  156. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  157. package/dest/public/avm/index.d.ts +0 -2
  158. package/dest/public/avm/index.d.ts.map +0 -1
  159. package/dest/public/avm/index.js +0 -1
  160. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -74
  161. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  162. package/dest/public/avm/opcodes/accrued_substate.js +0 -254
  163. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  164. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  165. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  166. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -49
  167. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  168. package/dest/public/avm/opcodes/arithmetic.js +0 -97
  169. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  170. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  171. package/dest/public/avm/opcodes/bitwise.js +0 -99
  172. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  173. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  174. package/dest/public/avm/opcodes/comparators.js +0 -43
  175. package/dest/public/avm/opcodes/contract.d.ts +0 -21
  176. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  177. package/dest/public/avm/opcodes/contract.js +0 -69
  178. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  179. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  180. package/dest/public/avm/opcodes/control_flow.js +0 -107
  181. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  182. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  183. package/dest/public/avm/opcodes/conversion.js +0 -333
  184. package/dest/public/avm/opcodes/ec_add.d.ts +0 -17
  185. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  186. package/dest/public/avm/opcodes/ec_add.js +0 -79
  187. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  188. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  189. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  190. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  191. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  192. package/dest/public/avm/opcodes/external_calls.js +0 -210
  193. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  194. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  195. package/dest/public/avm/opcodes/hashing.js +0 -119
  196. package/dest/public/avm/opcodes/index.d.ts +0 -16
  197. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  198. package/dest/public/avm/opcodes/index.js +0 -15
  199. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  200. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  201. package/dest/public/avm/opcodes/instruction.js +0 -95
  202. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  203. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  204. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  205. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  206. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  207. package/dest/public/avm/opcodes/memory.js +0 -257
  208. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  209. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  210. package/dest/public/avm/opcodes/misc.js +0 -73
  211. package/dest/public/avm/opcodes/storage.d.ts +0 -25
  212. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  213. package/dest/public/avm/opcodes/storage.js +0 -78
  214. package/dest/public/avm/revert_reason.d.ts +0 -18
  215. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  216. package/dest/public/avm/revert_reason.js +0 -39
  217. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  218. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  219. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  220. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  221. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  222. package/dest/public/avm/serialization/bytecode_serialization.js +0 -336
  223. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  224. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  225. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  226. package/dest/public/avm/test_utils.d.ts +0 -15
  227. package/dest/public/avm/test_utils.d.ts.map +0 -1
  228. package/dest/public/avm/test_utils.js +0 -44
  229. package/dest/public/debug_fn_name.d.ts +0 -18
  230. package/dest/public/debug_fn_name.d.ts.map +0 -1
  231. package/dest/public/debug_fn_name.js +0 -37
  232. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -14
  233. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  234. package/dest/public/fixtures/custom_bytecode_tests.js +0 -234
  235. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -4
  236. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  237. package/dest/public/fixtures/minimal_public_tx.js +0 -19
  238. package/dest/public/fixtures/opcode_spammer.d.ts +0 -122
  239. package/dest/public/fixtures/opcode_spammer.d.ts.map +0 -1
  240. package/dest/public/fixtures/opcode_spammer.js +0 -1645
  241. package/dest/public/hinting_db_sources.d.ts +0 -80
  242. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  243. package/dest/public/hinting_db_sources.js +0 -356
  244. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +0 -19
  245. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +0 -1
  246. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +0 -99
  247. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -53
  248. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  249. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -131
  250. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +0 -42
  251. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +0 -1
  252. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +0 -86
  253. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +0 -30
  254. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +0 -1
  255. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +0 -171
  256. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +0 -23
  257. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +0 -1
  258. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -31
  259. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  260. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  261. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -135
  262. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  263. package/dest/public/public_tx_simulator/public_tx_context.js +0 -298
  264. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  265. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  266. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -415
  267. package/dest/public/side_effect_trace.d.ts +0 -87
  268. package/dest/public/side_effect_trace.d.ts.map +0 -1
  269. package/dest/public/side_effect_trace.js +0 -199
  270. package/dest/public/side_effect_trace_interface.d.ts +0 -22
  271. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  272. package/dest/public/side_effect_trace_interface.js +0 -1
  273. package/dest/public/state_manager/index.d.ts +0 -2
  274. package/dest/public/state_manager/index.d.ts.map +0 -1
  275. package/dest/public/state_manager/index.js +0 -1
  276. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  277. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  278. package/dest/public/state_manager/nullifiers.js +0 -92
  279. package/dest/public/state_manager/public_storage.d.ts +0 -66
  280. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  281. package/dest/public/state_manager/public_storage.js +0 -145
  282. package/dest/public/state_manager/state_manager.d.ts +0 -170
  283. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  284. package/dest/public/state_manager/state_manager.js +0 -402
  285. package/src/public/avm/avm_context.ts +0 -61
  286. package/src/public/avm/avm_contract_call_result.ts +0 -69
  287. package/src/public/avm/avm_execution_environment.ts +0 -51
  288. package/src/public/avm/avm_gas.ts +0 -183
  289. package/src/public/avm/avm_machine_state.ts +0 -170
  290. package/src/public/avm/avm_memory_types.ts +0 -440
  291. package/src/public/avm/avm_simulator.ts +0 -279
  292. package/src/public/avm/avm_simulator_interface.ts +0 -8
  293. package/src/public/avm/calldata.ts +0 -101
  294. package/src/public/avm/errors.ts +0 -177
  295. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -122
  296. package/src/public/avm/fixtures/initializers.ts +0 -103
  297. package/src/public/avm/index.ts +0 -1
  298. package/src/public/avm/opcodes/accrued_substate.ts +0 -285
  299. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  300. package/src/public/avm/opcodes/arithmetic.ts +0 -129
  301. package/src/public/avm/opcodes/bitwise.ts +0 -113
  302. package/src/public/avm/opcodes/comparators.ts +0 -55
  303. package/src/public/avm/opcodes/contract.ts +0 -76
  304. package/src/public/avm/opcodes/control_flow.ts +0 -123
  305. package/src/public/avm/opcodes/conversion.ts +0 -104
  306. package/src/public/avm/opcodes/ec_add.ts +0 -86
  307. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  308. package/src/public/avm/opcodes/external_calls.ts +0 -262
  309. package/src/public/avm/opcodes/hashing.ts +0 -151
  310. package/src/public/avm/opcodes/index.ts +0 -15
  311. package/src/public/avm/opcodes/instruction.ts +0 -136
  312. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  313. package/src/public/avm/opcodes/memory.ts +0 -293
  314. package/src/public/avm/opcodes/misc.ts +0 -102
  315. package/src/public/avm/opcodes/storage.ts +0 -95
  316. package/src/public/avm/revert_reason.ts +0 -58
  317. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  318. package/src/public/avm/serialization/bytecode_serialization.ts +0 -215
  319. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  320. package/src/public/avm/test_utils.ts +0 -64
  321. package/src/public/debug_fn_name.ts +0 -52
  322. package/src/public/fixtures/custom_bytecode_tests.ts +0 -366
  323. package/src/public/fixtures/minimal_public_tx.ts +0 -26
  324. package/src/public/fixtures/opcode_spammer.ts +0 -1713
  325. package/src/public/hinting_db_sources.ts +0 -610
  326. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +0 -125
  327. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -210
  328. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +0 -134
  329. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +0 -239
  330. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -105
  331. package/src/public/public_tx_simulator/public_tx_context.ts +0 -482
  332. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  333. package/src/public/side_effect_trace.ts +0 -293
  334. package/src/public/side_effect_trace_interface.ts +0 -28
  335. package/src/public/state_manager/index.ts +0 -1
  336. package/src/public/state_manager/nullifiers.ts +0 -103
  337. package/src/public/state_manager/public_storage.ts +0 -174
  338. package/src/public/state_manager/state_manager.ts +0 -569
  339. /package/dest/public/avm/{fixtures → testing}/account_proof_fetcher.js +0 -0
  340. /package/src/public/avm/{fixtures → testing}/account_proof.json +0 -0
  341. /package/src/public/avm/{fixtures → testing}/account_proof_fetcher.ts +0 -0
@@ -0,0 +1,88 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { TestDateProvider } from '@aztec/foundation/timer';
3
+ import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
4
+ import { GasFees } from '@aztec/stdlib/gas';
5
+ import { GlobalVariables } from '@aztec/stdlib/tx';
6
+ import { getTelemetryClient } from '@aztec/telemetry-client';
7
+ import { NativeWorldStateService } from '@aztec/world-state';
8
+
9
+ import { AvmSimulatorPool } from '../avm_simulator_pool.js';
10
+ import { PublicContractsDB } from '../public_db_sources.js';
11
+ import { GuardedMerkleTreeOperations } from '../public_processor/guarded_merkle_tree.js';
12
+ import { PublicProcessor } from '../public_processor/public_processor.js';
13
+ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
14
+ import { PublicTxSimulationTester } from './public_tx_simulation_tester.js';
15
+ import { SimpleContractDataSource } from './simple_contract_data_source.js';
16
+
17
+ /** Options for {@link PublicProcessorTestEnv.create}. */
18
+ export interface PublicProcessorTestEnvOptions {
19
+ /** Global variables shared by the processor and the tester. Defaults to empty with nonzero gas fees. */
20
+ globals?: GlobalVariables;
21
+ /** Simulator config for the processor's PublicTxSimulator. */
22
+ config?: Partial<PublicSimulatorConfig>;
23
+ }
24
+
25
+ function defaultGlobals(): GlobalVariables {
26
+ const globals = GlobalVariables.empty();
27
+ globals.gasFees = new GasFees(2, 3);
28
+ return globals;
29
+ }
30
+
31
+ const defaultConfig = PublicSimulatorConfig.from({
32
+ skipFeeEnforcement: false,
33
+ collectDebugLogs: true,
34
+ collectHints: false,
35
+ collectStatistics: false,
36
+ collectCallMetadata: true,
37
+ });
38
+
39
+ /**
40
+ * Bundles the real-AVM wiring shared by public-processor app tests: a live WSDB world state, a CDB IPC
41
+ * server, a spawned AVM simulator, a {@link PublicProcessor} backed by all three, and a setup-only
42
+ * {@link PublicTxSimulationTester} sharing the same fork and contract data source for building txs and
43
+ * seeding balances. Own it with `await using`, or call {@link Symbol.asyncDispose} from `afterEach`.
44
+ */
45
+ export class PublicProcessorTestEnv implements AsyncDisposable {
46
+ private constructor(
47
+ public readonly processor: PublicProcessor,
48
+ public readonly tester: PublicTxSimulationTester,
49
+ public readonly contractsDB: PublicContractsDB,
50
+ public readonly globals: GlobalVariables,
51
+ private readonly worldStateService: NativeWorldStateService,
52
+ private readonly avmSimulator: AvmSimulatorPool,
53
+ ) {}
54
+
55
+ static async create(opts: PublicProcessorTestEnvOptions = {}): Promise<PublicProcessorTestEnv> {
56
+ const globals = opts.globals ?? defaultGlobals();
57
+ const config = opts.config ? PublicSimulatorConfig.from({ ...defaultConfig, ...opts.config }) : defaultConfig;
58
+
59
+ const contractDataSource = new SimpleContractDataSource();
60
+ const worldStateService = await NativeWorldStateService.tmp();
61
+ const merkleTrees = await worldStateService.fork();
62
+ const contractsDB = new PublicContractsDB(contractDataSource);
63
+
64
+ const forkId = merkleTrees.getRevision().forkId;
65
+ const avmSimulator = await AvmSimulatorPool.spawn({ wsdbIpcPath: worldStateService.getIpcPath() });
66
+
67
+ const simulator = new PublicTxSimulator(avmSimulator, globals, contractsDB, forkId, config, undefined);
68
+ const processor = new PublicProcessor(
69
+ globals,
70
+ new GuardedMerkleTreeOperations(merkleTrees),
71
+ contractsDB,
72
+ simulator,
73
+ new TestDateProvider(),
74
+ getTelemetryClient(),
75
+ createLogger('simulator:public-processor'),
76
+ );
77
+
78
+ const tester = new PublicTxSimulationTester(merkleTrees, contractDataSource, globals);
79
+
80
+ return new PublicProcessorTestEnv(processor, tester, contractsDB, globals, worldStateService, avmSimulator);
81
+ }
82
+
83
+ async [Symbol.asyncDispose](): Promise<void> {
84
+ await this.avmSimulator[Symbol.asyncDispose]();
85
+ await this.tester.close();
86
+ await this.worldStateService.close();
87
+ }
88
+ }
@@ -5,28 +5,30 @@ import { Fr } from '@aztec/foundation/curves/bn254';
5
5
  import { type ContractArtifact, encodeArguments } from '@aztec/stdlib/abi';
6
6
  import { PublicSimulatorConfig, type PublicTxResult } from '@aztec/stdlib/avm';
7
7
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
8
- import { FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT, Gas, GasFees } from '@aztec/stdlib/gas';
8
+ import { Gas, GasFees } from '@aztec/stdlib/gas';
9
9
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
10
10
  import { PublicCallRequest } from '@aztec/stdlib/kernel';
11
11
  import { GlobalVariables, PublicCallRequestWithCalldata, type Tx } from '@aztec/stdlib/tx';
12
12
  import { NativeWorldStateService } from '@aztec/world-state';
13
13
 
14
- import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
14
+ import { BaseAvmSimulationTester } from '../avm/testing/base_avm_simulation_tester.js';
15
15
  import {
16
16
  DEFAULT_BLOCK_NUMBER,
17
17
  DEFAULT_TIMESTAMP,
18
18
  getContractFunctionAbi,
19
19
  getFunctionSelector,
20
- } from '../avm/fixtures/utils.js';
20
+ } from '../avm/testing/utils.js';
21
+ import { AvmSimulatorPool } from '../avm_simulator_pool.js';
21
22
  import { PublicContractsDB } from '../public_db_sources.js';
22
- import { MeasuredCppPublicTxSimulator } from '../public_tx_simulator/cpp_public_tx_simulator.js';
23
- import { MeasuredCppVsTsPublicTxSimulator } from '../public_tx_simulator/cpp_vs_ts_public_tx_simulator.js';
23
+ import { MeasuredPublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
24
24
  import type { MeasuredPublicTxSimulatorInterface } from '../public_tx_simulator/public_tx_simulator_interface.js';
25
25
  import { TestExecutorMetrics } from '../test_executor_metrics.js';
26
26
  import { SimpleContractDataSource } from './simple_contract_data_source.js';
27
27
  import { type TestPrivateInsertions, createTxForPublicCalls } from './utils.js';
28
28
 
29
29
  const DEFAULT_GAS_FEES = new GasFees(2, 3);
30
+ const TEARDOWN_DA_GAS_LIMIT = 98_304;
31
+ const TEARDOWN_L2_GAS_LIMIT = 817_500;
30
32
 
31
33
  export type TestEnqueuedCall = {
32
34
  sender?: AztecAddress;
@@ -64,8 +66,9 @@ export type MeasuredSimulatorFactory = (
64
66
  */
65
67
  export class PublicTxSimulationTester extends BaseAvmSimulationTester {
66
68
  protected txCount: number = 0;
67
- private simulator: MeasuredPublicTxSimulatorInterface;
69
+ private simulator: MeasuredPublicTxSimulatorInterface | undefined;
68
70
  private metricsPrefix?: string;
71
+ protected avmSimulator?: AvmSimulatorPool;
69
72
 
70
73
  constructor(
71
74
  merkleTree: MerkleTreeWriteOperations,
@@ -81,7 +84,9 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
81
84
  if (simulatorFactory) {
82
85
  this.simulator = simulatorFactory(merkleTree, contractsDB, globals, this.metrics, config);
83
86
  } else {
84
- this.simulator = new MeasuredCppPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
87
+ // No simulator this tester can only be used for setup (setFeePayerBalance, createTx, etc.)
88
+ // To simulate, use PublicTxSimulationTester.create() or pass a simulatorFactory.
89
+ this.simulator = undefined;
85
90
  }
86
91
  }
87
92
 
@@ -89,15 +94,25 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
89
94
  worldStateService: NativeWorldStateService, // make sure to close this later
90
95
  globals: GlobalVariables = defaultGlobals(),
91
96
  metrics: TestExecutorMetrics = new TestExecutorMetrics(),
92
- useCppSimulator = false,
93
97
  config: PublicSimulatorConfig = defaultConfig,
94
98
  ): Promise<PublicTxSimulationTester> {
95
99
  const contractDataSource = new SimpleContractDataSource();
96
100
  const merkleTree = await worldStateService.fork();
97
- const simulatorFactory: MeasuredSimulatorFactory = useCppSimulator
98
- ? (mt, cdb, g, m, c) => new MeasuredCppPublicTxSimulator(mt, cdb, g, m, c)
99
- : (mt, cdb, g, m, c) => new MeasuredCppVsTsPublicTxSimulator(mt, cdb, g, m, c);
100
- return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, simulatorFactory, config);
101
+
102
+ const avmSimulator = await AvmSimulatorPool.spawn({ wsdbIpcPath: worldStateService.getIpcPath() });
103
+ const simulatorFactory: MeasuredSimulatorFactory = (mt, cdb, g, m, c) =>
104
+ new MeasuredPublicTxSimulator(avmSimulator, g, cdb, mt.getRevision().forkId, m, c, undefined);
105
+
106
+ const tester = new PublicTxSimulationTester(
107
+ merkleTree,
108
+ contractDataSource,
109
+ globals,
110
+ metrics,
111
+ simulatorFactory,
112
+ config,
113
+ );
114
+ tester.avmSimulator = avmSimulator;
115
+ return tester;
101
116
  }
102
117
 
103
118
  public setMetricsPrefix(prefix: string) {
@@ -132,10 +147,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
132
147
  teardownCallRequest,
133
148
  feePayer,
134
149
  /*gasUsedByPrivate*/ teardownCall
135
- ? new Gas(
136
- FALLBACK_TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD,
137
- FALLBACK_TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD,
138
- )
150
+ ? new Gas(TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD, TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD)
139
151
  : new Gas(TX_DA_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD),
140
152
  defaultGlobals(),
141
153
  gasLimits,
@@ -167,8 +179,6 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
167
179
  }
168
180
  const avmResult = await this.simulator.simulate(tx, fullTxLabel);
169
181
 
170
- await this.#recordBytecodeSizes(fullTxLabel, [...setupCalls, ...appCalls, ...(teardownCall ? [teardownCall] : [])]);
171
-
172
182
  // Something like this is often useful for debugging:
173
183
  //if (avmResult.revertReason) {
174
184
  // // resolve / enrich revert reason
@@ -198,18 +208,8 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
198
208
  teardownCall?: TestEnqueuedCall,
199
209
  feePayer?: AztecAddress,
200
210
  privateInsertions?: TestPrivateInsertions,
201
- gasLimits?: Gas,
202
211
  ): Promise<PublicTxResult> {
203
- return await this.simulateTx(
204
- sender,
205
- setupCalls,
206
- appCalls,
207
- teardownCall,
208
- feePayer,
209
- privateInsertions,
210
- txLabel,
211
- gasLimits,
212
- );
212
+ return await this.simulateTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, txLabel);
213
213
  }
214
214
 
215
215
  /**
@@ -227,7 +227,6 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
227
227
  teardownCall?: TestEnqueuedCall,
228
228
  feePayer?: AztecAddress,
229
229
  privateInsertions?: TestPrivateInsertions,
230
- gasLimits?: Gas,
231
230
  ): Promise<PublicTxResult> {
232
231
  return await this.simulateTxWithLabel(
233
232
  txLabel,
@@ -237,7 +236,6 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
237
236
  teardownCall,
238
237
  feePayer,
239
238
  privateInsertions,
240
- gasLimits,
241
239
  );
242
240
  }
243
241
 
@@ -245,22 +243,31 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
245
243
  this.metrics.prettyPrint();
246
244
  }
247
245
 
246
+ /** Clean up IPC resources (AVM simulator pool and merkle tree fork) created by create(). */
247
+ public async close(): Promise<void> {
248
+ await this.avmSimulator?.[Symbol.asyncDispose]();
249
+ // Close the merkle tree fork to release IPC resources before the wsdb process is killed.
250
+ if (this.merkleTrees?.close) {
251
+ await this.merkleTrees.close().catch(() => {});
252
+ }
253
+ }
254
+
248
255
  /**
249
256
  * Cancel the current simulation if one is in progress.
250
- * This signals the underlying simulator (e.g., C++) to stop at the next safe point.
257
+ * This signals the underlying simulator to stop at the next safe point.
251
258
  * Safe to call even if no simulation is in progress.
252
259
  *
253
260
  * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
254
261
  */
255
262
  public async cancel(waitTimeoutMs?: number): Promise<void> {
256
- await this.simulator.cancel?.(waitTimeoutMs);
263
+ await this.simulator?.cancel?.(waitTimeoutMs);
257
264
  }
258
265
 
259
266
  /**
260
267
  * Get the underlying simulator for advanced test scenarios.
261
268
  * Use this when you need direct control over simulation (e.g., for testing cancellation).
262
269
  */
263
- public getSimulator(): MeasuredPublicTxSimulatorInterface {
270
+ public getSimulator(): MeasuredPublicTxSimulatorInterface | undefined {
264
271
  return this.simulator;
265
272
  }
266
273
 
@@ -297,27 +304,6 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
297
304
 
298
305
  return new PublicCallRequestWithCalldata(request, calldata);
299
306
  }
300
-
301
- // WARNING: Deduplicates by artifact name, so two different artifacts with the same name
302
- // in a single tx would only record the first one's bytecode size.
303
- async #recordBytecodeSizes(txLabel: string, calls: TestEnqueuedCall[]) {
304
- const seenArtifactNames = new Set<string>();
305
- for (const call of calls) {
306
- const artifact = await this.contractDataSource.getContractArtifact(call.address);
307
- if (!artifact || seenArtifactNames.has(artifact.name)) {
308
- continue;
309
- }
310
- seenArtifactNames.add(artifact.name);
311
- const instance = await this.contractDataSource.getContract(call.address);
312
- if (!instance) {
313
- continue;
314
- }
315
- const contractClass = await this.contractDataSource.getContractClass(instance.currentContractClassId);
316
- if (contractClass) {
317
- this.metrics.recordBytecodeSize(txLabel, artifact.name, contractClass.packedBytecode.length);
318
- }
319
- }
320
- }
321
307
  }
322
308
 
323
309
  export function defaultGlobals() {
@@ -5,7 +5,7 @@ import type { ContractArtifact, FunctionSelector } from '@aztec/stdlib/abi';
5
5
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
6
6
  import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
7
7
 
8
- import { getFunctionSelector } from '../avm/fixtures/utils.js';
8
+ import { getFunctionSelector } from '../avm/testing/utils.js';
9
9
 
10
10
  /**
11
11
  * This class is used during public/avm testing to function as a database of
@@ -21,9 +21,9 @@ export async function tokenTest(
21
21
  ) {
22
22
  const timer = new Timer();
23
23
 
24
- const admin = AztecAddress.fromNumber(42);
25
- const sender = AztecAddress.fromNumber(111);
26
- const receiver = AztecAddress.fromNumber(222);
24
+ const admin = AztecAddress.fromNumberUnsafe(42);
25
+ const sender = AztecAddress.fromNumberUnsafe(111);
26
+ const receiver = AztecAddress.fromNumberUnsafe(222);
27
27
 
28
28
  const token = await setUpToken(tester, tokenArtifact, admin, expectToBeTrue);
29
29
 
@@ -12,13 +12,7 @@ import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '@aztec/protocol-contracts
12
12
  import { bufferAsFields } from '@aztec/stdlib/abi';
13
13
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
14
14
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
15
- import {
16
- FALLBACK_TEARDOWN_DA_GAS_LIMIT,
17
- FALLBACK_TEARDOWN_L2_GAS_LIMIT,
18
- Gas,
19
- GasFees,
20
- GasSettings,
21
- } from '@aztec/stdlib/gas';
15
+ import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
22
16
  import { siloNullifier } from '@aztec/stdlib/hash';
23
17
  import {
24
18
  LogHash,
@@ -42,6 +36,9 @@ import {
42
36
 
43
37
  import { strict as assert } from 'assert';
44
38
 
39
+ const TEARDOWN_DA_GAS_LIMIT = 98_304;
40
+ const TEARDOWN_L2_GAS_LIMIT = 817_500;
41
+
45
42
  export type TestPrivateInsertions = {
46
43
  revertible?: {
47
44
  nullifiers?: Fr[];
@@ -132,9 +129,7 @@ export async function createTxForPublicCalls(
132
129
  }
133
130
 
134
131
  const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
135
- const teardownGasLimits = teardownCallRequest
136
- ? new Gas(FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT)
137
- : Gas.empty();
132
+ const teardownGasLimits = teardownCallRequest ? new Gas(TEARDOWN_DA_GAS_LIMIT, TEARDOWN_L2_GAS_LIMIT) : Gas.empty();
138
133
  const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
139
134
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
140
135
  const header = BlockHeader.empty({ globalVariables: globals });
@@ -260,7 +255,7 @@ export async function addNewContractInstanceToTx(
260
255
  );
261
256
 
262
257
  const contractAddressNullifier = await siloNullifier(
263
- AztecAddress.fromNumber(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS),
258
+ AztecAddress.fromNumberUnsafe(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS),
264
259
  contractInstance.address.toField(),
265
260
  );
266
261
 
@@ -33,7 +33,8 @@ import {
33
33
  } from '@aztec/stdlib/tx';
34
34
  import type { NativeWorldStateService } from '@aztec/world-state';
35
35
 
36
- import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
36
+ import { BaseAvmSimulationTester } from '../avm/testing/base_avm_simulation_tester.js';
37
+ import { AvmSimulatorPool } from '../avm_simulator_pool.js';
37
38
  import { SimpleContractDataSource } from '../fixtures/simple_contract_data_source.js';
38
39
  import { PublicContractsDB } from '../public_db_sources.js';
39
40
  import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
@@ -75,7 +76,7 @@ export class FuzzerSimulationRequest {
75
76
 
76
77
  /**
77
78
  * Creates a TypeScript Tx object from a deserialized C++ Tx (AvmTxHint-like structure).
78
- * This allows using PublicTxSimulator.simulate() with fuzzer-generated transactions.
79
+ * This allows simulating fuzzer-generated transactions with the C++ public tx simulator.
79
80
  */
80
81
  async function createTxFromHint(cppTx: AvmTxHint): Promise<Tx> {
81
82
  // Create TxHash from the C++ tx hash string
@@ -189,6 +190,8 @@ async function createTxFromHint(cppTx: AvmTxHint): Promise<Tx> {
189
190
  /**
190
191
  * A simulator class for the AVM fuzzer that extends BaseAvmSimulationTester.
191
192
  * It provides methods for registering contracts from C++ msgpack data and simulating transactions.
193
+ * The simulation itself runs on the production C++ AVM simulator, so the fuzzer compares brillig
194
+ * execution against the real AVM rather than a TS reference.
192
195
  */
193
196
  export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
194
197
  private simulator: PublicTxSimulator;
@@ -197,22 +200,27 @@ export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
197
200
  merkleTrees: MerkleTreeWriteOperations,
198
201
  contractDataSource: SimpleContractDataSource,
199
202
  globals: GlobalVariables,
200
- protocolContracts: ProtocolContracts,
203
+ private avmSimulator: AvmSimulatorPool,
204
+ contractsDB: PublicContractsDB,
205
+ forkId: number,
201
206
  ) {
202
207
  super(contractDataSource, merkleTrees);
203
- const contractsDb = new PublicContractsDB(contractDataSource);
208
+ // collectPublicInputs and collectCallMetadata are required so the C++ result carries the end
209
+ // tree snapshots and app-logic return values that the fuzzer bin reports back to the harness.
204
210
  this.simulator = new PublicTxSimulator(
205
- merkleTrees,
206
- contractsDb,
211
+ avmSimulator,
207
212
  globals,
213
+ contractsDB,
214
+ forkId,
208
215
  {
209
216
  skipFeeEnforcement: false,
210
217
  collectDebugLogs: false,
211
218
  collectHints: false,
219
+ collectPublicInputs: true,
212
220
  collectStatistics: false,
213
- collectCallMetadata: false,
221
+ collectCallMetadata: true,
214
222
  },
215
- protocolContracts,
223
+ undefined,
216
224
  );
217
225
  }
218
226
 
@@ -222,11 +230,18 @@ export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
222
230
  public static async create(
223
231
  worldStateService: NativeWorldStateService,
224
232
  globals: GlobalVariables,
225
- protocolContracts: ProtocolContracts,
226
233
  ): Promise<AvmFuzzerSimulator> {
227
234
  const contractDataSource = new SimpleContractDataSource();
228
235
  const merkleTrees = await worldStateService.fork();
229
- return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals, protocolContracts);
236
+ const forkId = merkleTrees.getRevision().forkId;
237
+ const avmSimulator = await AvmSimulatorPool.spawn({ wsdbIpcPath: worldStateService.getIpcPath() });
238
+ const contractsDB = new PublicContractsDB(contractDataSource);
239
+ return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals, avmSimulator, contractsDB, forkId);
240
+ }
241
+
242
+ /** Tear down the AVM simulator pool (AVM processes and CDB server). */
243
+ public async close(): Promise<void> {
244
+ await this.avmSimulator[Symbol.asyncDispose]();
230
245
  }
231
246
 
232
247
  /**
@@ -7,7 +7,7 @@ import {
7
7
  deserializeFromMessagePack,
8
8
  serializeWithMessagePack,
9
9
  } from '@aztec/stdlib/avm';
10
- import { GlobalVariables, ProtocolContracts, TreeSnapshots } from '@aztec/stdlib/tx';
10
+ import { GlobalVariables, TreeSnapshots } from '@aztec/stdlib/tx';
11
11
  import { NativeWorldStateService } from '@aztec/world-state';
12
12
 
13
13
  import { createInterface } from 'readline';
@@ -58,7 +58,6 @@ async function simulateWithFuzzer(
58
58
  rawContractInstances: [any, any][], // Replace these when we are moving contract instances to TS
59
59
  rawPublicDataWrites: any[], // Public data tree writes to apply before simulation
60
60
  rawNoteHashes: any[], // Note hashes to apply before simulation
61
- protocolContracts: ProtocolContracts, // Protocol contracts mapping from C++
62
61
  ): Promise<{
63
62
  reverted: boolean;
64
63
  output: Fr[];
@@ -68,7 +67,7 @@ async function simulateWithFuzzer(
68
67
  }> {
69
68
  const worldStateService = await openExistingWorldState(dataDir, mapSizeKb);
70
69
 
71
- const simulator = await AvmFuzzerSimulator.create(worldStateService, globals, protocolContracts);
70
+ const simulator = await AvmFuzzerSimulator.create(worldStateService, globals);
72
71
 
73
72
  await simulator.applyNoteHashes(rawNoteHashes);
74
73
 
@@ -108,7 +107,7 @@ async function execute(base64Line: string): Promise<void> {
108
107
  const rawRequest = deserializeFromMessagePack(buffer);
109
108
  const request = FuzzerSimulationRequest.fromPlainObject(rawRequest);
110
109
 
111
- // Run the TS simulation
110
+ // Run the simulation on the C++ AVM simulator
112
111
  const result = await simulateWithFuzzer(
113
112
  request.wsDataDir,
114
113
  request.wsMapSizeKb,
@@ -118,7 +117,6 @@ async function execute(base64Line: string): Promise<void> {
118
117
  request.contractInstances,
119
118
  request.publicDataWrites,
120
119
  request.noteHashes,
121
- request.protocolContracts,
122
120
  );
123
121
 
124
122
  // Serialize the result to msgpack and encode it in base64 for output
@@ -1,12 +1,16 @@
1
+ export { AvmSimulatorPool, type AvmSimulatorPoolOptions } from './avm_simulator_pool.js';
2
+ export type { PublicContractsDBInterface } from './db_interfaces.js';
1
3
  export { PublicContractsDB } from './public_db_sources.js';
2
4
  export { GuardedMerkleTreeOperations } from './public_processor/guarded_merkle_tree.js';
3
5
  export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
6
+ export type { AvmContractsDBContext, AvmSimulator } from './avm_simulator.js';
4
7
  export {
5
- CppPublicTxSimulator,
8
+ PublicTxSimulator,
9
+ MeasuredPublicTxSimulator,
6
10
  createPublicTxSimulatorForBlockBuilding,
7
- DumpingCppPublicTxSimulator,
11
+ DumpingPublicTxSimulator,
8
12
  type PublicTxSimulatorInterface,
9
- TelemetryCppPublicTxSimulator,
13
+ TelemetryPublicTxSimulator,
10
14
  } from './public_tx_simulator/index.js';
11
15
  export type { PublicTxResult, PublicSimulatorConfig as PublicTxSimulatorConfig } from '@aztec/stdlib/avm';
12
16
  export { getCallRequestsWithCalldataByPhase } from './utils.js';
@@ -55,7 +55,7 @@ export class PublicContractsDB implements PublicContractsDBInterface {
55
55
  this.log = createLogger('simulator:contracts-data-source', bindings);
56
56
  }
57
57
 
58
- /** Parses raw log data from the C++/NAPI bridge and inserts the resulting contracts into the current checkpoint. */
58
+ /** Parses raw contract deployment data and inserts the resulting contracts into the current checkpoint. */
59
59
  public addContractsFromLogs(contractDeploymentData: ContractDeploymentData): void {
60
60
  const currentState = this.getCurrentState();
61
61
 
@@ -12,7 +12,7 @@ import type {
12
12
  TreeInfo,
13
13
  } from '@aztec/stdlib/trees';
14
14
  import type { BlockHeader, StateReference } from '@aztec/stdlib/tx';
15
- import type { WorldStateRevision, WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
15
+ import type { WorldStateRevision } from '@aztec/stdlib/world-state';
16
16
 
17
17
  /**
18
18
  * Wraps an instance of `MerkleTreeWriteOperations` to allow the sequencer to gate access.
@@ -94,9 +94,12 @@ export class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
94
94
  getInitialHeader(): BlockHeader {
95
95
  return this.target.getInitialHeader();
96
96
  }
97
- public getRevision(): WorldStateRevision | WorldStateRevisionWithHandle {
97
+ public getRevision(): WorldStateRevision {
98
98
  return this.target.getRevision();
99
99
  }
100
+ public getIpcPath(): string {
101
+ return this.target.getIpcPath();
102
+ }
100
103
  getSiblingPath<ID extends MerkleTreeId>(treeId: ID, index: bigint): Promise<SiblingPath<TreeHeights[ID]>> {
101
104
  return this.guardAndPush(() => this.target.getSiblingPath(treeId, index));
102
105
  }
@@ -50,11 +50,12 @@ import { ForkCheckpoint } from '@aztec/world-state/native';
50
50
 
51
51
  import { AssertionError } from 'assert';
52
52
 
53
+ import type { AvmSimulator } from '../avm_simulator.js';
53
54
  import { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js';
54
55
  import {
55
56
  type PublicTxSimulatorConfig,
56
57
  type PublicTxSimulatorInterface,
57
- TelemetryCppPublicTxSimulator,
58
+ TelemetryPublicTxSimulator,
58
59
  } from '../public_tx_simulator/index.js';
59
60
  import { GuardedMerkleTreeOperations } from './guarded_merkle_tree.js';
60
61
  import { PublicProcessorMetrics } from './public_processor_metrics.js';
@@ -66,6 +67,7 @@ export class PublicProcessorFactory {
66
67
  private log: Logger;
67
68
  constructor(
68
69
  private contractDataSource: ContractDataSource,
70
+ private avmSimulator: AvmSimulator,
69
71
  private dateProvider: DateProvider = new DateProvider(),
70
72
  protected telemetryClient: TelemetryClient = getTelemetryClient(),
71
73
  bindings?: LoggerBindings,
@@ -74,7 +76,9 @@ export class PublicProcessorFactory {
74
76
  }
75
77
 
76
78
  /**
77
- * Creates a new instance of a PublicProcessor.
79
+ * Creates a new instance of a PublicProcessor. The simulator it drives reads contract data from the fork's
80
+ * contracts DB, scoped by the fork id so AVM requests route to the right state.
81
+ *
78
82
  * @param globalVariables - The global variables for the block being processed.
79
83
  * @param contractsDB - Optional pre-populated contracts DB; a fresh one is constructed if omitted.
80
84
  * @returns A new instance of a PublicProcessor.
@@ -85,8 +89,10 @@ export class PublicProcessorFactory {
85
89
  config: PublicSimulatorConfig,
86
90
  contractsDB: PublicContractsDB = new PublicContractsDB(this.contractDataSource, this.log.getBindings()),
87
91
  ): PublicProcessor {
92
+ const forkId = merkleTree.getRevision().forkId;
93
+
88
94
  const guardedFork = new GuardedMerkleTreeOperations(merkleTree);
89
- const publicTxSimulator = this.createPublicTxSimulator(guardedFork, contractsDB, globalVariables, config);
95
+ const publicTxSimulator = this.createPublicTxSimulator(forkId, globalVariables, contractsDB, config);
90
96
 
91
97
  return new PublicProcessor(
92
98
  globalVariables,
@@ -100,15 +106,16 @@ export class PublicProcessorFactory {
100
106
  }
101
107
 
102
108
  protected createPublicTxSimulator(
103
- merkleTree: MerkleTreeWriteOperations,
104
- contractsDB: PublicContractsDB,
109
+ forkId: number,
105
110
  globalVariables: GlobalVariables,
111
+ contractsDB: PublicContractsDB,
106
112
  config?: Partial<PublicTxSimulatorConfig>,
107
113
  ): PublicTxSimulatorInterface {
108
- return new TelemetryCppPublicTxSimulator(
109
- merkleTree,
110
- contractsDB,
114
+ return new TelemetryPublicTxSimulator(
115
+ this.avmSimulator,
111
116
  globalVariables,
117
+ contractsDB,
118
+ forkId,
112
119
  this.telemetryClient,
113
120
  config,
114
121
  this.log.getBindings(),
@@ -130,10 +137,6 @@ class PublicProcessorAbortError extends Error {
130
137
  }
131
138
  }
132
139
 
133
- function isPublicProcessorInterruptError(err: any) {
134
- return err?.name === 'PublicProcessorTimeoutError' || err?.name === 'PublicProcessorAbortError';
135
- }
136
-
137
140
  /**
138
141
  * Converts Txs lifted from the P2P module into ProcessedTx objects by executing
139
142
  * any public function calls in them. Txs with private calls only are unaffected.
@@ -326,11 +329,15 @@ export class PublicProcessor implements Traceable {
326
329
  // Commit the tx-level contracts checkpoint on success
327
330
  this.contractsDB.commitCheckpoint();
328
331
  } catch (err: any) {
329
- if (isPublicProcessorInterruptError(err)) {
330
- const interruptReason = err.name === 'PublicProcessorTimeoutError' ? 'timeout' : 'abort signal';
331
- this.log.warn(`Stopping tx processing due to ${interruptReason}.`);
332
- // The tx may still be executing on a worker thread (C++ via NAPI).
333
- // Signal cancellation AND WAIT for the simulation to actually stop before touching fork checkpoints.
332
+ if (err?.name === 'PublicProcessorTimeoutError' || err?.name === 'PublicProcessorAbortError') {
333
+ this.log.warn(
334
+ `Stopping tx processing due to ${err.name === 'PublicProcessorTimeoutError' ? 'timeout' : 'abort'}.`,
335
+ );
336
+ // We hit the transaction execution deadline or an external abort signal.
337
+ // There may still be a simulation in progress.
338
+ // Signal cancellation AND WAIT for the simulation to actually stop. Cancellation is
339
+ // cooperative: the simulator may be mid slow-operation and won't observe the flag until it
340
+ // completes, and without waiting we'd revert checkpoints while it's still writing to state.
334
341
  await this.publicTxSimulator.cancel?.();
335
342
 
336
343
  // Now stop the guarded fork to prevent any further TS-side access to the world state.