@aztec/simulator 0.0.1-commit.c2eed6949 → 0.0.1-commit.c52d6e7

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 (351) hide show
  1. package/dest/client.d.ts +1 -3
  2. package/dest/client.d.ts.map +1 -1
  3. package/dest/client.js +0 -2
  4. package/dest/private/acvm_wasm.d.ts +1 -1
  5. package/dest/private/acvm_wasm.d.ts.map +1 -1
  6. package/dest/private/acvm_wasm.js +3 -1
  7. package/dest/private/circuit_recording/circuit_recorder.d.ts +36 -23
  8. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  9. package/dest/private/circuit_recording/circuit_recorder.js +65 -69
  10. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +7 -19
  11. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  12. package/dest/private/circuit_recording/file_circuit_recorder.js +38 -42
  13. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  14. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  15. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
  16. package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
  17. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  18. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +2 -1
  19. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  20. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +18 -3
  21. package/dest/public/avm/testing/utils.d.ts +32 -0
  22. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  23. package/dest/public/avm/{fixtures → testing}/utils.js +4 -34
  24. package/dest/public/avm_simulator.d.ts +28 -0
  25. package/dest/public/avm_simulator.d.ts.map +1 -0
  26. package/dest/public/avm_simulator.js +4 -0
  27. package/dest/public/avm_simulator_pool.d.ts +45 -0
  28. package/dest/public/avm_simulator_pool.d.ts.map +1 -0
  29. package/dest/public/avm_simulator_pool.js +197 -0
  30. package/dest/public/cdb_ipc_server.d.ts +40 -0
  31. package/dest/public/cdb_ipc_server.d.ts.map +1 -0
  32. package/dest/public/cdb_ipc_server.js +153 -0
  33. package/dest/public/fixtures/amm_test.js +2 -2
  34. package/dest/public/fixtures/bulk_test.d.ts +1 -1
  35. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  36. package/dest/public/fixtures/bulk_test.js +33 -6
  37. package/dest/public/fixtures/custom_bytecode_tester.d.ts +1 -1
  38. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  39. package/dest/public/fixtures/custom_bytecode_tester.js +2 -2
  40. package/dest/public/fixtures/index.d.ts +2 -4
  41. package/dest/public/fixtures/index.d.ts.map +1 -1
  42. package/dest/public/fixtures/index.js +1 -3
  43. package/dest/public/fixtures/public_processor_test_env.d.ts +30 -0
  44. package/dest/public/fixtures/public_processor_test_env.d.ts.map +1 -0
  45. package/dest/public/fixtures/public_processor_test_env.js +73 -0
  46. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +11 -7
  47. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  48. package/dest/public/fixtures/public_tx_simulation_tester.js +33 -43
  49. package/dest/public/fixtures/simple_contract_data_source.js +1 -1
  50. package/dest/public/fixtures/token_test.js +3 -3
  51. package/dest/public/fixtures/utils.d.ts +1 -1
  52. package/dest/public/fixtures/utils.d.ts.map +1 -1
  53. package/dest/public/fixtures/utils.js +16 -15
  54. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +11 -4
  55. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
  56. package/dest/public/fuzzing/avm_fuzzer_simulator.js +24 -10
  57. package/dest/public/fuzzing/avm_simulator_bin.js +4 -4
  58. package/dest/public/index.d.ts +5 -2
  59. package/dest/public/index.d.ts.map +1 -1
  60. package/dest/public/index.js +2 -1
  61. package/dest/public/public_db_sources.d.ts +5 -2
  62. package/dest/public/public_db_sources.d.ts.map +1 -1
  63. package/dest/public/public_db_sources.js +9 -3
  64. package/dest/public/public_processor/guarded_merkle_tree.d.ts +4 -3
  65. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  66. package/dest/public/public_processor/guarded_merkle_tree.js +3 -0
  67. package/dest/public/public_processor/public_processor.d.ts +11 -6
  68. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  69. package/dest/public/public_processor/public_processor.js +67 -38
  70. package/dest/public/public_processor/public_processor_metrics.d.ts +4 -1
  71. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  72. package/dest/public/public_processor/public_processor_metrics.js +8 -0
  73. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +17 -0
  74. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  75. package/dest/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.js → dumping_public_tx_simulator.js} +10 -23
  76. package/dest/public/public_tx_simulator/factories.d.ts +8 -8
  77. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
  78. package/dest/public/public_tx_simulator/factories.js +8 -8
  79. package/dest/public/public_tx_simulator/index.d.ts +4 -6
  80. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  81. package/dest/public/public_tx_simulator/index.js +2 -4
  82. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +42 -71
  83. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  84. package/dest/public/public_tx_simulator/public_tx_simulator.js +98 -318
  85. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +24 -0
  86. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  87. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +31 -0
  88. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +5 -5
  89. package/dest/public/test_executor_metrics.d.ts +1 -6
  90. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  91. package/dest/public/test_executor_metrics.js +0 -22
  92. package/package.json +20 -17
  93. package/src/client.ts +0 -2
  94. package/src/private/acvm_wasm.ts +4 -1
  95. package/src/private/circuit_recording/circuit_recorder.ts +84 -78
  96. package/src/private/circuit_recording/file_circuit_recorder.ts +38 -48
  97. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
  98. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +23 -3
  99. package/src/public/avm/{fixtures → testing}/utils.ts +4 -40
  100. package/src/public/avm_simulator.ts +29 -0
  101. package/src/public/avm_simulator_pool.ts +226 -0
  102. package/src/public/cdb_ipc_server.ts +198 -0
  103. package/src/public/fixtures/amm_test.ts +2 -2
  104. package/src/public/fixtures/bulk_test.ts +31 -6
  105. package/src/public/fixtures/custom_bytecode_tester.ts +2 -2
  106. package/src/public/fixtures/index.ts +1 -3
  107. package/src/public/fixtures/public_processor_test_env.ts +88 -0
  108. package/src/public/fixtures/public_tx_simulation_tester.ts +41 -60
  109. package/src/public/fixtures/simple_contract_data_source.ts +1 -1
  110. package/src/public/fixtures/token_test.ts +3 -3
  111. package/src/public/fixtures/utils.ts +18 -20
  112. package/src/public/fuzzing/avm_fuzzer_simulator.ts +25 -10
  113. package/src/public/fuzzing/avm_simulator_bin.ts +3 -5
  114. package/src/public/index.ts +7 -3
  115. package/src/public/public_db_sources.ts +12 -3
  116. package/src/public/public_processor/guarded_merkle_tree.ts +5 -2
  117. package/src/public/public_processor/public_processor.ts +89 -46
  118. package/src/public/public_processor/public_processor_metrics.ts +12 -0
  119. package/src/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.ts → dumping_public_tx_simulator.ts} +15 -31
  120. package/src/public/public_tx_simulator/factories.ts +27 -10
  121. package/src/public/public_tx_simulator/index.ts +6 -5
  122. package/src/public/public_tx_simulator/public_tx_simulator.ts +139 -476
  123. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
  124. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +5 -5
  125. package/src/public/test_executor_metrics.ts +0 -24
  126. package/dest/public/avm/avm_context.d.ts +0 -41
  127. package/dest/public/avm/avm_context.d.ts.map +0 -1
  128. package/dest/public/avm/avm_context.js +0 -44
  129. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  130. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  131. package/dest/public/avm/avm_contract_call_result.js +0 -54
  132. package/dest/public/avm/avm_execution_environment.d.ts +0 -24
  133. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  134. package/dest/public/avm/avm_execution_environment.js +0 -33
  135. package/dest/public/avm/avm_gas.d.ts +0 -44
  136. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  137. package/dest/public/avm/avm_gas.js +0 -195
  138. package/dest/public/avm/avm_machine_state.d.ts +0 -98
  139. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  140. package/dest/public/avm/avm_machine_state.js +0 -110
  141. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  142. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  143. package/dest/public/avm/avm_memory_types.js +0 -354
  144. package/dest/public/avm/avm_simulator.d.ts +0 -41
  145. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  146. package/dest/public/avm/avm_simulator.js +0 -192
  147. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  148. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  149. package/dest/public/avm/avm_simulator_interface.js +0 -3
  150. package/dest/public/avm/calldata.d.ts +0 -51
  151. package/dest/public/avm/calldata.d.ts.map +0 -1
  152. package/dest/public/avm/calldata.js +0 -63
  153. package/dest/public/avm/errors.d.ts +0 -104
  154. package/dest/public/avm/errors.d.ts.map +0 -1
  155. package/dest/public/avm/errors.js +0 -141
  156. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +0 -2
  157. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +0 -1
  158. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  159. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  160. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -84
  161. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  162. package/dest/public/avm/fixtures/initializers.d.ts +0 -42
  163. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  164. package/dest/public/avm/fixtures/initializers.js +0 -45
  165. package/dest/public/avm/fixtures/utils.d.ts +0 -39
  166. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  167. package/dest/public/avm/index.d.ts +0 -2
  168. package/dest/public/avm/index.d.ts.map +0 -1
  169. package/dest/public/avm/index.js +0 -1
  170. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -74
  171. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  172. package/dest/public/avm/opcodes/accrued_substate.js +0 -254
  173. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  174. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  175. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  176. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -49
  177. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  178. package/dest/public/avm/opcodes/arithmetic.js +0 -97
  179. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  180. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  181. package/dest/public/avm/opcodes/bitwise.js +0 -99
  182. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  183. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  184. package/dest/public/avm/opcodes/comparators.js +0 -43
  185. package/dest/public/avm/opcodes/contract.d.ts +0 -20
  186. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  187. package/dest/public/avm/opcodes/contract.js +0 -65
  188. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  189. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  190. package/dest/public/avm/opcodes/control_flow.js +0 -107
  191. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  192. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  193. package/dest/public/avm/opcodes/conversion.js +0 -333
  194. package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
  195. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  196. package/dest/public/avm/opcodes/ec_add.js +0 -93
  197. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  198. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  199. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  200. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  201. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  202. package/dest/public/avm/opcodes/external_calls.js +0 -210
  203. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  204. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  205. package/dest/public/avm/opcodes/hashing.js +0 -119
  206. package/dest/public/avm/opcodes/index.d.ts +0 -16
  207. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  208. package/dest/public/avm/opcodes/index.js +0 -15
  209. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  210. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  211. package/dest/public/avm/opcodes/instruction.js +0 -95
  212. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  213. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  214. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  215. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  216. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  217. package/dest/public/avm/opcodes/memory.js +0 -257
  218. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  219. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  220. package/dest/public/avm/opcodes/misc.js +0 -73
  221. package/dest/public/avm/opcodes/storage.d.ts +0 -25
  222. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  223. package/dest/public/avm/opcodes/storage.js +0 -78
  224. package/dest/public/avm/revert_reason.d.ts +0 -18
  225. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  226. package/dest/public/avm/revert_reason.js +0 -39
  227. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  228. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  229. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  230. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  231. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  232. package/dest/public/avm/serialization/bytecode_serialization.js +0 -336
  233. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  234. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  235. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  236. package/dest/public/avm/test_utils.d.ts +0 -15
  237. package/dest/public/avm/test_utils.d.ts.map +0 -1
  238. package/dest/public/avm/test_utils.js +0 -44
  239. package/dest/public/debug_fn_name.d.ts +0 -18
  240. package/dest/public/debug_fn_name.d.ts.map +0 -1
  241. package/dest/public/debug_fn_name.js +0 -37
  242. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -12
  243. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  244. package/dest/public/fixtures/custom_bytecode_tests.js +0 -174
  245. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -4
  246. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  247. package/dest/public/fixtures/minimal_public_tx.js +0 -19
  248. package/dest/public/fixtures/opcode_spammer.d.ts +0 -122
  249. package/dest/public/fixtures/opcode_spammer.d.ts.map +0 -1
  250. package/dest/public/fixtures/opcode_spammer.js +0 -1653
  251. package/dest/public/hinting_db_sources.d.ts +0 -80
  252. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  253. package/dest/public/hinting_db_sources.js +0 -356
  254. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +0 -19
  255. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +0 -1
  256. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +0 -99
  257. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -53
  258. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  259. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -131
  260. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +0 -42
  261. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +0 -1
  262. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +0 -86
  263. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +0 -30
  264. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +0 -1
  265. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +0 -171
  266. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +0 -23
  267. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +0 -1
  268. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -31
  269. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  270. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  271. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -131
  272. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  273. package/dest/public/public_tx_simulator/public_tx_context.js +0 -300
  274. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  275. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  276. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -415
  277. package/dest/public/side_effect_trace.d.ts +0 -87
  278. package/dest/public/side_effect_trace.d.ts.map +0 -1
  279. package/dest/public/side_effect_trace.js +0 -199
  280. package/dest/public/side_effect_trace_interface.d.ts +0 -22
  281. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  282. package/dest/public/side_effect_trace_interface.js +0 -1
  283. package/dest/public/state_manager/index.d.ts +0 -2
  284. package/dest/public/state_manager/index.d.ts.map +0 -1
  285. package/dest/public/state_manager/index.js +0 -1
  286. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  287. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  288. package/dest/public/state_manager/nullifiers.js +0 -92
  289. package/dest/public/state_manager/public_storage.d.ts +0 -66
  290. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  291. package/dest/public/state_manager/public_storage.js +0 -145
  292. package/dest/public/state_manager/state_manager.d.ts +0 -170
  293. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  294. package/dest/public/state_manager/state_manager.js +0 -402
  295. package/src/public/avm/avm_context.ts +0 -61
  296. package/src/public/avm/avm_contract_call_result.ts +0 -69
  297. package/src/public/avm/avm_execution_environment.ts +0 -51
  298. package/src/public/avm/avm_gas.ts +0 -183
  299. package/src/public/avm/avm_machine_state.ts +0 -170
  300. package/src/public/avm/avm_memory_types.ts +0 -440
  301. package/src/public/avm/avm_simulator.ts +0 -279
  302. package/src/public/avm/avm_simulator_interface.ts +0 -8
  303. package/src/public/avm/calldata.ts +0 -100
  304. package/src/public/avm/errors.ts +0 -177
  305. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -122
  306. package/src/public/avm/fixtures/initializers.ts +0 -103
  307. package/src/public/avm/index.ts +0 -1
  308. package/src/public/avm/opcodes/accrued_substate.ts +0 -285
  309. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  310. package/src/public/avm/opcodes/arithmetic.ts +0 -129
  311. package/src/public/avm/opcodes/bitwise.ts +0 -113
  312. package/src/public/avm/opcodes/comparators.ts +0 -55
  313. package/src/public/avm/opcodes/contract.ts +0 -72
  314. package/src/public/avm/opcodes/control_flow.ts +0 -123
  315. package/src/public/avm/opcodes/conversion.ts +0 -104
  316. package/src/public/avm/opcodes/ec_add.ts +0 -105
  317. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  318. package/src/public/avm/opcodes/external_calls.ts +0 -262
  319. package/src/public/avm/opcodes/hashing.ts +0 -151
  320. package/src/public/avm/opcodes/index.ts +0 -15
  321. package/src/public/avm/opcodes/instruction.ts +0 -136
  322. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  323. package/src/public/avm/opcodes/memory.ts +0 -293
  324. package/src/public/avm/opcodes/misc.ts +0 -102
  325. package/src/public/avm/opcodes/storage.ts +0 -95
  326. package/src/public/avm/revert_reason.ts +0 -58
  327. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  328. package/src/public/avm/serialization/bytecode_serialization.ts +0 -215
  329. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  330. package/src/public/avm/test_utils.ts +0 -64
  331. package/src/public/debug_fn_name.ts +0 -52
  332. package/src/public/fixtures/custom_bytecode_tests.ts +0 -228
  333. package/src/public/fixtures/minimal_public_tx.ts +0 -26
  334. package/src/public/fixtures/opcode_spammer.ts +0 -1717
  335. package/src/public/hinting_db_sources.ts +0 -609
  336. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +0 -125
  337. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -210
  338. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +0 -134
  339. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +0 -239
  340. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -105
  341. package/src/public/public_tx_simulator/public_tx_context.ts +0 -484
  342. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  343. package/src/public/side_effect_trace.ts +0 -293
  344. package/src/public/side_effect_trace_interface.ts +0 -28
  345. package/src/public/state_manager/index.ts +0 -1
  346. package/src/public/state_manager/nullifiers.ts +0 -103
  347. package/src/public/state_manager/public_storage.ts +0 -174
  348. package/src/public/state_manager/state_manager.ts +0 -569
  349. /package/dest/public/avm/{fixtures → testing}/account_proof_fetcher.js +0 -0
  350. /package/src/public/avm/{fixtures → testing}/account_proof.json +0 -0
  351. /package/src/public/avm/{fixtures → testing}/account_proof_fetcher.ts +0 -0
@@ -0,0 +1,198 @@
1
+ /**
2
+ * UDS server for AVM CDB requests.
3
+ *
4
+ * Transport (socket, framing, per-connection response ordering) is handled by the shared
5
+ * `UdsIpcServer` from `@aztec/ipc-runtime`; message dispatch comes from the generated CDB
6
+ * server. This class only implements the generated handler interface and routes requests to
7
+ * PublicContractsDB instances by fork ID.
8
+ */
9
+ import {
10
+ type CdbAddContracts,
11
+ type CdbAddContractsResponse,
12
+ type CdbCommitCheckpoint,
13
+ type CdbCommitCheckpointResponse,
14
+ type CdbCreateCheckpoint,
15
+ type CdbCreateCheckpointResponse,
16
+ type CdbGetBytecodeCommitment,
17
+ type CdbGetBytecodeCommitmentResponse,
18
+ type CdbGetContractClass,
19
+ type CdbGetContractClassResponse,
20
+ type CdbGetContractInstance,
21
+ type CdbGetContractInstanceResponse,
22
+ type CdbGetDebugFunctionName,
23
+ type CdbGetDebugFunctionNameResponse,
24
+ type Handler as CdbHandler,
25
+ type CdbRevertCheckpoint,
26
+ type CdbRevertCheckpointResponse,
27
+ handleRequest,
28
+ } from '@aztec/cdb';
29
+ import { Fr } from '@aztec/foundation/curves/bn254';
30
+ import { type Logger, createLogger } from '@aztec/foundation/log';
31
+ import { UdsIpcServer } from '@aztec/ipc-runtime';
32
+ import { FunctionSelector } from '@aztec/stdlib/abi';
33
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
34
+ import { ContractDeploymentData, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
35
+
36
+ import { Decoder, Encoder } from 'msgpackr';
37
+ import * as os from 'node:os';
38
+ import * as path from 'node:path';
39
+ import { threadId } from 'node:worker_threads';
40
+
41
+ import type { PublicContractsDB } from './public_db_sources.js';
42
+
43
+ const encoder = new Encoder({ useRecords: false });
44
+ const decoder = new Decoder({ useRecords: false });
45
+
46
+ let instanceCounter = 0;
47
+
48
+ function toFieldBuffer(field: Fr | AztecAddress): Buffer {
49
+ return field.toBuffer();
50
+ }
51
+
52
+ /** Serializes contract instances to the AVM CDB wire shape. */
53
+ export function serializeContractInstance(instance: ContractInstanceWithAddress): Record<string, unknown> {
54
+ return {
55
+ salt: toFieldBuffer(instance.salt),
56
+ deployer: toFieldBuffer(instance.deployer),
57
+ currentContractClassId: toFieldBuffer(instance.currentContractClassId),
58
+ originalContractClassId: toFieldBuffer(instance.originalContractClassId),
59
+ initializationHash: toFieldBuffer(instance.initializationHash),
60
+ immutablesHash: toFieldBuffer(instance.immutablesHash),
61
+ publicKeys: {
62
+ npkMHash: toFieldBuffer(instance.publicKeys.npkMHash),
63
+ ivpkM: {
64
+ x: toFieldBuffer(instance.publicKeys.ivpkM.x),
65
+ y: toFieldBuffer(instance.publicKeys.ivpkM.y),
66
+ },
67
+ ovpkMHash: toFieldBuffer(instance.publicKeys.ovpkMHash),
68
+ tpkMHash: toFieldBuffer(instance.publicKeys.tpkMHash),
69
+ mspkMHash: toFieldBuffer(instance.publicKeys.mspkMHash),
70
+ fbpkMHash: toFieldBuffer(instance.publicKeys.fbpkMHash),
71
+ },
72
+ };
73
+ }
74
+
75
+ /** Serializes contract classes to the AVM CDB wire shape. */
76
+ function serializeContractClass(contractClass: {
77
+ id: Fr;
78
+ artifactHash: Fr;
79
+ privateFunctionsRoot: Fr;
80
+ packedBytecode: Buffer;
81
+ }): Record<string, unknown> {
82
+ return {
83
+ id: toFieldBuffer(contractClass.id),
84
+ artifactHash: toFieldBuffer(contractClass.artifactHash),
85
+ privateFunctionsRoot: toFieldBuffer(contractClass.privateFunctionsRoot),
86
+ packedBytecode: contractClass.packedBytecode,
87
+ };
88
+ }
89
+
90
+ /** Routes AVM CDB IPC requests to registered PublicContractsDB forks. */
91
+ export class CdbIpcServer implements CdbHandler {
92
+ public readonly ipcPath: string;
93
+ private server: Promise<UdsIpcServer>;
94
+ private log: Logger;
95
+ /** Maps WSDB fork IDs to contracts DB/timestamp pairs for concurrent simulations. */
96
+ private forks = new Map<number, { db: PublicContractsDB; timestamp: bigint }>();
97
+
98
+ constructor() {
99
+ this.log = createLogger('cdb-ipc-server');
100
+ this.ipcPath = path.join(os.tmpdir(), `cdb-ts-${process.pid}-${threadId}-${instanceCounter++}.sock`);
101
+
102
+ // Listen asynchronously; the C++ AVM retries connecting until the socket is up.
103
+ this.server = UdsIpcServer.listen(this.ipcPath, (_clientId, request) => handleRequest(this, request));
104
+ this.server.then(
105
+ () => this.log.debug(`CDB IPC server listening on ${this.ipcPath}`),
106
+ err => this.log.error(`CDB IPC server failed to listen on ${this.ipcPath}`, { err }),
107
+ );
108
+ }
109
+
110
+ /** Register a PublicContractsDB for a given WSDB fork ID. */
111
+ registerFork(forkId: number, contractsDB: PublicContractsDB, timestamp: bigint): void {
112
+ this.forks.set(forkId, { db: contractsDB, timestamp });
113
+ }
114
+
115
+ /** Unregister a fork's contracts DB (call after simulation completes). */
116
+ unregisterFork(forkId: number): void {
117
+ this.forks.delete(forkId);
118
+ }
119
+
120
+ /** Close the server and all active connections. */
121
+ async close(): Promise<void> {
122
+ const server = await this.server.catch(() => undefined);
123
+ await server?.close();
124
+ }
125
+
126
+ async [Symbol.asyncDispose](): Promise<void> {
127
+ await this.close();
128
+ }
129
+
130
+ /** Look up the contracts DB for a given fork ID, throwing if not registered. */
131
+ private getFork(forkId: number): { db: PublicContractsDB; timestamp: bigint } {
132
+ const fork = this.forks.get(forkId);
133
+ if (!fork) {
134
+ const registered = Array.from(this.forks.keys()).sort((a, b) => a - b);
135
+ throw new Error(
136
+ `CDB server: no contracts DB registered for forkId ${forkId} (registered=[${registered.join(',')}])`,
137
+ );
138
+ }
139
+ return fork;
140
+ }
141
+
142
+ async getContractInstance(command: CdbGetContractInstance): Promise<CdbGetContractInstanceResponse> {
143
+ const { db, timestamp } = this.getFork(command.forkId);
144
+ const address = AztecAddress.fromBuffer(Buffer.from(command.address));
145
+ const instance = await db.getContractInstance(address, timestamp);
146
+ return { instance: instance ? encoder.encode(serializeContractInstance(instance)) : null };
147
+ }
148
+
149
+ async getContractClass(command: CdbGetContractClass): Promise<CdbGetContractClassResponse> {
150
+ const { db } = this.getFork(command.forkId);
151
+ const classId = Fr.fromBuffer(Buffer.from(command.classId));
152
+ const contractClass = await db.getContractClass(classId);
153
+ return { contractClass: contractClass ? encoder.encode(serializeContractClass(contractClass)) : null };
154
+ }
155
+
156
+ async getBytecodeCommitment(command: CdbGetBytecodeCommitment): Promise<CdbGetBytecodeCommitmentResponse> {
157
+ const { db } = this.getFork(command.forkId);
158
+ const classId = Fr.fromBuffer(Buffer.from(command.classId));
159
+ const commitment = await db.getBytecodeCommitment(classId);
160
+ return { commitment: commitment ? toFieldBuffer(commitment) : null };
161
+ }
162
+
163
+ async getDebugFunctionName(command: CdbGetDebugFunctionName): Promise<CdbGetDebugFunctionNameResponse> {
164
+ const { db } = this.getFork(command.forkId);
165
+ const address = AztecAddress.fromBuffer(Buffer.from(command.address));
166
+ const selectorField = Fr.fromBuffer(Buffer.from(command.selector));
167
+ const selector = FunctionSelector.fromFieldOrUndefined(selectorField);
168
+ const name = selector ? await db.getDebugFunctionName(address, selector) : undefined;
169
+ return { name: name ?? null };
170
+ }
171
+
172
+ addContracts(command: CdbAddContracts): Promise<CdbAddContractsResponse> {
173
+ const { db } = this.getFork(command.forkId);
174
+ const contractDeploymentData = ContractDeploymentData.fromPlainObject(
175
+ decoder.decode(command.contractDeploymentData),
176
+ );
177
+ db.addContractsFromLogs(contractDeploymentData);
178
+ return Promise.resolve({});
179
+ }
180
+
181
+ createCheckpoint(command: CdbCreateCheckpoint): Promise<CdbCreateCheckpointResponse> {
182
+ const { db } = this.getFork(command.forkId);
183
+ db.createCheckpoint();
184
+ return Promise.resolve({});
185
+ }
186
+
187
+ commitCheckpoint(command: CdbCommitCheckpoint): Promise<CdbCommitCheckpointResponse> {
188
+ const { db } = this.getFork(command.forkId);
189
+ db.commitCheckpoint();
190
+ return Promise.resolve({});
191
+ }
192
+
193
+ revertCheckpoint(command: CdbRevertCheckpoint): Promise<CdbRevertCheckpointResponse> {
194
+ const { db } = this.getFork(command.forkId);
195
+ db.revertCheckpoint();
196
+ return Promise.resolve({});
197
+ }
198
+ }
@@ -25,8 +25,8 @@ export async function ammTest(
25
25
  ) {
26
26
  const timer = new Timer();
27
27
 
28
- const admin = AztecAddress.fromNumber(42);
29
- const sender = AztecAddress.fromNumber(111);
28
+ const admin = AztecAddress.fromNumberUnsafe(42);
29
+ const sender = AztecAddress.fromNumberUnsafe(111);
30
30
 
31
31
  logger.debug(`Deploying tokens`);
32
32
  const token0 = await setUpToken(tester, tokenArtifact, admin, expectToBeTrue, /*seed=*/ 0);
@@ -13,7 +13,7 @@ export async function bulkTest(
13
13
  ) {
14
14
  const timer = new Timer();
15
15
 
16
- const deployer = AztecAddress.fromNumber(42);
16
+ const deployer = AztecAddress.fromNumberUnsafe(42);
17
17
  const avmTestContract = await tester.registerAndDeployContract(
18
18
  /*constructorArgs=*/ [],
19
19
  deployer,
@@ -25,14 +25,26 @@ export async function bulkTest(
25
25
  // Register multiple different protocol contracts (to ensure we don't dedup bytecode hashing events):
26
26
  await tester.registerAuthContract();
27
27
  await tester.registerInstanceRegistryContract();
28
+ await tester.registerClassRegistryContract();
28
29
 
29
30
  // Get a deployed contract instance to pass to the contract
30
31
  // for it to use as "expected" values when testing contract instance retrieval.
31
32
  const expectContractInstance = avmTestContract;
32
33
  const argsField = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
33
- const argsU8 = [1, 2, 3, 4, 5, 6, 7, 8].map(x => new Fr(x));
34
- argsU8.push(new Fr(2n ** 128n + 9n)); // Trigger truncation from large (> 128 bits) value (canonical decomposition event)
35
- argsU8.push(new Fr(2n ** 125n + 10n)); // Trigger truncation from small (< 128 bits) value (no canonical decomposition event)
34
+ const argsU8 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
35
+ // Pinned grumpkin-Poseidon2 Schnorr signature (mirrors the C++ `pinned_test_vector_large`
36
+ // and noir-lang/schnorr v0.4.0's `pinned_vector_large`). Passing these in as calldata
37
+ // (rather than baking them into Noir as constants) keeps MSM + Poseidon2 from being folded
38
+ // by the Noir compiler.
39
+ const schnorrInputs = [
40
+ Fr.fromHexString('0x065812e335a97c2108ea8cf4ccfe2f9dd6b117a0714f5e18461575be93f61da6'), // pubkey.x
41
+ Fr.fromHexString('0x1a915003e8ec534f9a15d926a7ded478e178468ccc4f28e236e67450a55ac622'), // pubkey.y
42
+ Fr.fromHexString('0xf3bc3b7147acb9c621fd9f72dbf15ffa'), // sig_s.lo
43
+ Fr.fromHexString('0x08599f379f0301dfefdbd0272554454d'), // sig_s.hi
44
+ Fr.fromHexString('0x97065383ebbbd76620398792bd259bc2'), // sig_e.lo
45
+ Fr.fromHexString('0x2ceaee87f45b7a417f0ffb05451a8c92'), // sig_e.hi
46
+ Fr.fromHexString('0x0123456789abcdef0fedcba9876543210123456789abcdef0fedcba987654321'), // message
47
+ ];
36
48
  const args = [
37
49
  argsField,
38
50
  argsU8,
@@ -40,6 +52,8 @@ export async function bulkTest(
40
52
  /*expectedDeployer=*/ expectContractInstance.deployer,
41
53
  /*expectedClassId=*/ expectContractInstance.currentContractClassId,
42
54
  /*expectedInitializationHash=*/ expectContractInstance.initializationHash,
55
+ /*expectedImmutablesHash=*/ expectContractInstance.immutablesHash,
56
+ /*schnorrInputs=*/ schnorrInputs,
43
57
  /*skip_strictly_limited_side_effects=*/ false,
44
58
  ];
45
59
 
@@ -62,7 +76,7 @@ export async function bulkTest(
62
76
  {
63
77
  address: avmTestContract.address,
64
78
  fnName: 'assert_calldata_copy',
65
- args: [argsField.slice(3), /* with_selector: */ true],
79
+ args: [argsField.slice(0, 3), /* with_selector: */ true],
66
80
  },
67
81
  {
68
82
  address: avmTestContract.address,
@@ -100,7 +114,7 @@ export async function megaBulkTest(
100
114
  ) {
101
115
  const timer = new Timer();
102
116
 
103
- const deployer = AztecAddress.fromNumber(42);
117
+ const deployer = AztecAddress.fromNumberUnsafe(42);
104
118
  const avmTestContract = await tester.registerAndDeployContract(
105
119
  /*constructorArgs=*/ [],
106
120
  deployer,
@@ -123,6 +137,15 @@ export async function megaBulkTest(
123
137
  //const argsField7 = [15, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
124
138
  //const argsField8 = [17, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
125
139
  const argsU8 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
140
+ const schnorrInputs = [
141
+ Fr.fromHexString('0x065812e335a97c2108ea8cf4ccfe2f9dd6b117a0714f5e18461575be93f61da6'), // pubkey.x
142
+ Fr.fromHexString('0x1a915003e8ec534f9a15d926a7ded478e178468ccc4f28e236e67450a55ac622'), // pubkey.y
143
+ Fr.fromHexString('0xf3bc3b7147acb9c621fd9f72dbf15ffa'), // sig_s.lo
144
+ Fr.fromHexString('0x08599f379f0301dfefdbd0272554454d'), // sig_s.hi
145
+ Fr.fromHexString('0x97065383ebbbd76620398792bd259bc2'), // sig_e.lo
146
+ Fr.fromHexString('0x2ceaee87f45b7a417f0ffb05451a8c92'), // sig_e.hi
147
+ Fr.fromHexString('0x0123456789abcdef0fedcba9876543210123456789abcdef0fedcba987654321'), // message
148
+ ];
126
149
  const genArgs = (argsField: Fr[]) => [
127
150
  argsField,
128
151
  argsU8,
@@ -130,6 +153,8 @@ export async function megaBulkTest(
130
153
  /*expectedDeployer=*/ expectContractInstance.deployer.toField(),
131
154
  /*expectedClassId=*/ expectContractInstance.currentContractClassId.toField(),
132
155
  /*expectedInitializationHash=*/ expectContractInstance.initializationHash.toField(),
156
+ /*expectedImmutablesHash=*/ expectContractInstance.immutablesHash.toField(),
157
+ /*schnorrInputs=*/ schnorrInputs,
133
158
  // Must skip strictly limited side effects (logs, messages) so we can spam the bulk test several times.
134
159
  /*skip_strictly_limited_side_effects=*/ true,
135
160
  ];
@@ -17,7 +17,7 @@ export async function deployCustomBytecode(
17
17
  bytecode: Buffer,
18
18
  tester: PublicTxSimulationTester,
19
19
  contractName: string = 'CustomBytecodeContract',
20
- deployer: AztecAddress = AztecAddress.fromNumber(42),
20
+ deployer: AztecAddress = AztecAddress.fromNumberUnsafe(42),
21
21
  ): Promise<ContractInstanceWithAddress> {
22
22
  const contractArtifact = emptyContractArtifact();
23
23
  contractArtifact.name = contractName;
@@ -75,7 +75,7 @@ export async function deployAndExecuteCustomBytecode(
75
75
  tester: PublicTxSimulationTester,
76
76
  txLabel: string = 'CustomBytecodeTest',
77
77
  contractName: string = 'CustomBytecodeContract',
78
- deployer: AztecAddress = AztecAddress.fromNumber(42),
78
+ deployer: AztecAddress = AztecAddress.fromNumberUnsafe(42),
79
79
  calldata: any[] = [],
80
80
  ): Promise<PublicTxResult> {
81
81
  const testContract = await deployCustomBytecode(bytecode, tester, contractName, deployer);
@@ -1,15 +1,13 @@
1
1
  export * from './public_tx_simulation_tester.js';
2
+ export * from './public_processor_test_env.js';
2
3
  export * from './utils.js';
3
4
  export * from './simple_contract_data_source.js';
4
- export { executeAvmMinimalPublicTx } from './minimal_public_tx.js';
5
5
  export { TestExecutorMetrics } from '../test_executor_metrics.js';
6
6
  export { ammTest } from './amm_test.js';
7
7
  export { bulkTest, megaBulkTest } from './bulk_test.js';
8
8
  export { tokenTest } from './token_test.js';
9
- export * from './custom_bytecode_tests.js';
10
9
  export {
11
10
  deployCustomBytecode,
12
11
  executeCustomBytecode,
13
12
  deployAndExecuteCustomBytecode,
14
13
  } from './custom_bytecode_tester.js';
15
- export { getSpamConfigsPerOpcode, testOpcodeSpamCase } from './opcode_spammer.js';
@@ -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
+ }
@@ -1,9 +1,4 @@
1
- import {
2
- DEFAULT_TEARDOWN_DA_GAS_LIMIT,
3
- DEFAULT_TEARDOWN_L2_GAS_LIMIT,
4
- PUBLIC_TX_L2_GAS_OVERHEAD,
5
- TX_DA_GAS_OVERHEAD,
6
- } from '@aztec/constants';
1
+ import { PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
7
2
  import { asyncMap } from '@aztec/foundation/async-map';
8
3
  import { BlockNumber } from '@aztec/foundation/branded-types';
9
4
  import { Fr } from '@aztec/foundation/curves/bn254';
@@ -16,22 +11,24 @@ import { PublicCallRequest } from '@aztec/stdlib/kernel';
16
11
  import { GlobalVariables, PublicCallRequestWithCalldata, type Tx } from '@aztec/stdlib/tx';
17
12
  import { NativeWorldStateService } from '@aztec/world-state';
18
13
 
19
- import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
14
+ import { BaseAvmSimulationTester } from '../avm/testing/base_avm_simulation_tester.js';
20
15
  import {
21
16
  DEFAULT_BLOCK_NUMBER,
22
17
  DEFAULT_TIMESTAMP,
23
18
  getContractFunctionAbi,
24
19
  getFunctionSelector,
25
- } from '../avm/fixtures/utils.js';
20
+ } from '../avm/testing/utils.js';
21
+ import { AvmSimulatorPool } from '../avm_simulator_pool.js';
26
22
  import { PublicContractsDB } from '../public_db_sources.js';
27
- import { MeasuredCppPublicTxSimulator } from '../public_tx_simulator/cpp_public_tx_simulator.js';
28
- import { MeasuredCppVsTsPublicTxSimulator } from '../public_tx_simulator/cpp_vs_ts_public_tx_simulator.js';
23
+ import { MeasuredPublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
29
24
  import type { MeasuredPublicTxSimulatorInterface } from '../public_tx_simulator/public_tx_simulator_interface.js';
30
25
  import { TestExecutorMetrics } from '../test_executor_metrics.js';
31
26
  import { SimpleContractDataSource } from './simple_contract_data_source.js';
32
27
  import { type TestPrivateInsertions, createTxForPublicCalls } from './utils.js';
33
28
 
34
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;
35
32
 
36
33
  export type TestEnqueuedCall = {
37
34
  sender?: AztecAddress;
@@ -69,8 +66,9 @@ export type MeasuredSimulatorFactory = (
69
66
  */
70
67
  export class PublicTxSimulationTester extends BaseAvmSimulationTester {
71
68
  protected txCount: number = 0;
72
- private simulator: MeasuredPublicTxSimulatorInterface;
69
+ private simulator: MeasuredPublicTxSimulatorInterface | undefined;
73
70
  private metricsPrefix?: string;
71
+ protected avmSimulator?: AvmSimulatorPool;
74
72
 
75
73
  constructor(
76
74
  merkleTree: MerkleTreeWriteOperations,
@@ -86,7 +84,9 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
86
84
  if (simulatorFactory) {
87
85
  this.simulator = simulatorFactory(merkleTree, contractsDB, globals, this.metrics, config);
88
86
  } else {
89
- 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;
90
90
  }
91
91
  }
92
92
 
@@ -94,15 +94,25 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
94
94
  worldStateService: NativeWorldStateService, // make sure to close this later
95
95
  globals: GlobalVariables = defaultGlobals(),
96
96
  metrics: TestExecutorMetrics = new TestExecutorMetrics(),
97
- useCppSimulator = false,
98
97
  config: PublicSimulatorConfig = defaultConfig,
99
98
  ): Promise<PublicTxSimulationTester> {
100
99
  const contractDataSource = new SimpleContractDataSource();
101
100
  const merkleTree = await worldStateService.fork();
102
- const simulatorFactory: MeasuredSimulatorFactory = useCppSimulator
103
- ? (mt, cdb, g, m, c) => new MeasuredCppPublicTxSimulator(mt, cdb, g, m, c)
104
- : (mt, cdb, g, m, c) => new MeasuredCppVsTsPublicTxSimulator(mt, cdb, g, m, c);
105
- 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;
106
116
  }
107
117
 
108
118
  public setMetricsPrefix(prefix: string) {
@@ -137,10 +147,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
137
147
  teardownCallRequest,
138
148
  feePayer,
139
149
  /*gasUsedByPrivate*/ teardownCall
140
- ? new Gas(
141
- DEFAULT_TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD,
142
- DEFAULT_TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD,
143
- )
150
+ ? new Gas(TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD, TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD)
144
151
  : new Gas(TX_DA_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD),
145
152
  defaultGlobals(),
146
153
  gasLimits,
@@ -172,8 +179,6 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
172
179
  }
173
180
  const avmResult = await this.simulator.simulate(tx, fullTxLabel);
174
181
 
175
- await this.#recordBytecodeSizes(fullTxLabel, [...setupCalls, ...appCalls, ...(teardownCall ? [teardownCall] : [])]);
176
-
177
182
  // Something like this is often useful for debugging:
178
183
  //if (avmResult.revertReason) {
179
184
  // // resolve / enrich revert reason
@@ -203,18 +208,8 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
203
208
  teardownCall?: TestEnqueuedCall,
204
209
  feePayer?: AztecAddress,
205
210
  privateInsertions?: TestPrivateInsertions,
206
- gasLimits?: Gas,
207
211
  ): Promise<PublicTxResult> {
208
- return await this.simulateTx(
209
- sender,
210
- setupCalls,
211
- appCalls,
212
- teardownCall,
213
- feePayer,
214
- privateInsertions,
215
- txLabel,
216
- gasLimits,
217
- );
212
+ return await this.simulateTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, txLabel);
218
213
  }
219
214
 
220
215
  /**
@@ -232,7 +227,6 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
232
227
  teardownCall?: TestEnqueuedCall,
233
228
  feePayer?: AztecAddress,
234
229
  privateInsertions?: TestPrivateInsertions,
235
- gasLimits?: Gas,
236
230
  ): Promise<PublicTxResult> {
237
231
  return await this.simulateTxWithLabel(
238
232
  txLabel,
@@ -242,7 +236,6 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
242
236
  teardownCall,
243
237
  feePayer,
244
238
  privateInsertions,
245
- gasLimits,
246
239
  );
247
240
  }
248
241
 
@@ -250,22 +243,31 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
250
243
  this.metrics.prettyPrint();
251
244
  }
252
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
+
253
255
  /**
254
256
  * Cancel the current simulation if one is in progress.
255
- * 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.
256
258
  * Safe to call even if no simulation is in progress.
257
259
  *
258
260
  * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
259
261
  */
260
262
  public async cancel(waitTimeoutMs?: number): Promise<void> {
261
- await this.simulator.cancel?.(waitTimeoutMs);
263
+ await this.simulator?.cancel?.(waitTimeoutMs);
262
264
  }
263
265
 
264
266
  /**
265
267
  * Get the underlying simulator for advanced test scenarios.
266
268
  * Use this when you need direct control over simulation (e.g., for testing cancellation).
267
269
  */
268
- public getSimulator(): MeasuredPublicTxSimulatorInterface {
270
+ public getSimulator(): MeasuredPublicTxSimulatorInterface | undefined {
269
271
  return this.simulator;
270
272
  }
271
273
 
@@ -302,27 +304,6 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
302
304
 
303
305
  return new PublicCallRequestWithCalldata(request, calldata);
304
306
  }
305
-
306
- // WARNING: Deduplicates by artifact name, so two different artifacts with the same name
307
- // in a single tx would only record the first one's bytecode size.
308
- async #recordBytecodeSizes(txLabel: string, calls: TestEnqueuedCall[]) {
309
- const seenArtifactNames = new Set<string>();
310
- for (const call of calls) {
311
- const artifact = await this.contractDataSource.getContractArtifact(call.address);
312
- if (!artifact || seenArtifactNames.has(artifact.name)) {
313
- continue;
314
- }
315
- seenArtifactNames.add(artifact.name);
316
- const instance = await this.contractDataSource.getContract(call.address);
317
- if (!instance) {
318
- continue;
319
- }
320
- const contractClass = await this.contractDataSource.getContractClass(instance.currentContractClassId);
321
- if (contractClass) {
322
- this.metrics.recordBytecodeSize(txLabel, artifact.name, contractClass.packedBytecode.length);
323
- }
324
- }
325
- }
326
307
  }
327
308
 
328
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