@aztec/simulator 0.0.1-commit.b655e406 → 0.0.1-commit.bf2612ae

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 (350) hide show
  1. package/README.md +2 -0
  2. package/dest/client.d.ts +1 -1
  3. package/dest/common/errors.d.ts +2 -2
  4. package/dest/common/errors.d.ts.map +1 -1
  5. package/dest/common/index.d.ts +1 -1
  6. package/dest/common/stats/index.d.ts +1 -1
  7. package/dest/common/stats/stats.d.ts +1 -1
  8. package/dest/private/acvm/acvm.d.ts +1 -1
  9. package/dest/private/acvm/acvm_types.d.ts +1 -1
  10. package/dest/private/acvm/deserialize.d.ts +2 -2
  11. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  12. package/dest/private/acvm/deserialize.js +1 -1
  13. package/dest/private/acvm/index.d.ts +1 -1
  14. package/dest/private/acvm/serialize.d.ts +2 -2
  15. package/dest/private/acvm/serialize.d.ts.map +1 -1
  16. package/dest/private/acvm/serialize.js +1 -1
  17. package/dest/private/acvm_native.d.ts +1 -1
  18. package/dest/private/acvm_native.d.ts.map +1 -1
  19. package/dest/private/acvm_wasm.d.ts +1 -1
  20. package/dest/private/acvm_wasm.d.ts.map +1 -1
  21. package/dest/private/acvm_wasm_with_blobs.d.ts +1 -1
  22. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -1
  23. package/dest/private/circuit_recording/circuit_recorder.d.ts +1 -1
  24. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  25. package/dest/private/circuit_recording/circuit_recorder.js +16 -15
  26. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +1 -1
  27. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  28. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +1 -1
  29. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
  30. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  31. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  32. package/dest/private/circuit_simulator.d.ts +1 -1
  33. package/dest/private/factory.d.ts +1 -1
  34. package/dest/public/avm/avm_context.d.ts +3 -3
  35. package/dest/public/avm/avm_context.d.ts.map +1 -1
  36. package/dest/public/avm/avm_contract_call_result.d.ts +6 -6
  37. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  38. package/dest/public/avm/avm_contract_call_result.js +3 -3
  39. package/dest/public/avm/avm_execution_environment.d.ts +9 -8
  40. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  41. package/dest/public/avm/avm_execution_environment.js +5 -8
  42. package/dest/public/avm/avm_gas.d.ts +2 -2
  43. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  44. package/dest/public/avm/avm_machine_state.d.ts +7 -6
  45. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  46. package/dest/public/avm/avm_machine_state.js +3 -2
  47. package/dest/public/avm/avm_memory_types.d.ts +14 -14
  48. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  49. package/dest/public/avm/avm_memory_types.js +4 -1
  50. package/dest/public/avm/avm_simulator.d.ts +5 -3
  51. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  52. package/dest/public/avm/avm_simulator.js +13 -11
  53. package/dest/public/avm/avm_simulator_interface.d.ts +1 -1
  54. package/dest/public/avm/calldata.d.ts +51 -0
  55. package/dest/public/avm/calldata.d.ts.map +1 -0
  56. package/dest/public/avm/calldata.js +63 -0
  57. package/dest/public/avm/errors.d.ts +8 -2
  58. package/dest/public/avm/errors.d.ts.map +1 -1
  59. package/dest/public/avm/errors.js +14 -2
  60. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +1 -1
  61. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  62. package/dest/public/avm/fixtures/avm_simulation_tester.js +15 -5
  63. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -2
  64. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  65. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +1 -1
  66. package/dest/public/avm/fixtures/initializers.d.ts +2 -3
  67. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
  68. package/dest/public/avm/fixtures/initializers.js +8 -5
  69. package/dest/public/avm/fixtures/utils.d.ts +4 -3
  70. package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
  71. package/dest/public/avm/fixtures/utils.js +3 -2
  72. package/dest/public/avm/index.d.ts +1 -1
  73. package/dest/public/avm/opcodes/accrued_substate.d.ts +15 -15
  74. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  75. package/dest/public/avm/opcodes/accrued_substate.js +33 -29
  76. package/dest/public/avm/opcodes/addressing_mode.d.ts +1 -1
  77. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  78. package/dest/public/avm/opcodes/addressing_mode.js +2 -2
  79. package/dest/public/avm/opcodes/arithmetic.d.ts +3 -1
  80. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  81. package/dest/public/avm/opcodes/arithmetic.js +12 -2
  82. package/dest/public/avm/opcodes/bitwise.d.ts +3 -3
  83. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  84. package/dest/public/avm/opcodes/bitwise.js +5 -5
  85. package/dest/public/avm/opcodes/comparators.d.ts +1 -1
  86. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  87. package/dest/public/avm/opcodes/comparators.js +1 -1
  88. package/dest/public/avm/opcodes/contract.d.ts +3 -3
  89. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  90. package/dest/public/avm/opcodes/contract.js +8 -8
  91. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  92. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  93. package/dest/public/avm/opcodes/control_flow.js +4 -4
  94. package/dest/public/avm/opcodes/conversion.d.ts +3 -3
  95. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  96. package/dest/public/avm/opcodes/conversion.js +4 -4
  97. package/dest/public/avm/opcodes/ec_add.d.ts +3 -3
  98. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  99. package/dest/public/avm/opcodes/ec_add.js +17 -8
  100. package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
  101. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  102. package/dest/public/avm/opcodes/environment_getters.js +6 -6
  103. package/dest/public/avm/opcodes/external_calls.d.ts +9 -9
  104. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  105. package/dest/public/avm/opcodes/external_calls.js +23 -22
  106. package/dest/public/avm/opcodes/hashing.d.ts +7 -7
  107. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  108. package/dest/public/avm/opcodes/hashing.js +21 -16
  109. package/dest/public/avm/opcodes/index.d.ts +1 -1
  110. package/dest/public/avm/opcodes/instruction.d.ts +2 -2
  111. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  112. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  113. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  114. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  115. package/dest/public/avm/opcodes/memory.d.ts +13 -13
  116. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  117. package/dest/public/avm/opcodes/memory.js +26 -26
  118. package/dest/public/avm/opcodes/misc.d.ts +3 -3
  119. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  120. package/dest/public/avm/opcodes/misc.js +8 -8
  121. package/dest/public/avm/opcodes/storage.d.ts +14 -13
  122. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  123. package/dest/public/avm/opcodes/storage.js +34 -24
  124. package/dest/public/avm/revert_reason.d.ts +2 -2
  125. package/dest/public/avm/revert_reason.d.ts.map +1 -1
  126. package/dest/public/avm/revert_reason.js +3 -2
  127. package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -1
  128. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  129. package/dest/public/avm/serialization/bytecode_serialization.d.ts +1 -1
  130. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  131. package/dest/public/avm/serialization/bytecode_serialization.js +9 -6
  132. package/dest/public/avm/serialization/instruction_serialization.d.ts +1 -1
  133. package/dest/public/avm/serialization/instruction_serialization.js +1 -1
  134. package/dest/public/avm/test_utils.d.ts +2 -2
  135. package/dest/public/avm/test_utils.d.ts.map +1 -1
  136. package/dest/public/avm/test_utils.js +1 -1
  137. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  138. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  139. package/dest/public/contracts_db_checkpoint.js +30 -0
  140. package/dest/public/db_interfaces.d.ts +14 -2
  141. package/dest/public/db_interfaces.d.ts.map +1 -1
  142. package/dest/public/debug_fn_name.d.ts +16 -3
  143. package/dest/public/debug_fn_name.d.ts.map +1 -1
  144. package/dest/public/debug_fn_name.js +31 -3
  145. package/dest/public/executor_metrics.d.ts +3 -2
  146. package/dest/public/executor_metrics.d.ts.map +1 -1
  147. package/dest/public/executor_metrics.js +9 -35
  148. package/dest/public/executor_metrics_interface.d.ts +3 -2
  149. package/dest/public/executor_metrics_interface.d.ts.map +1 -1
  150. package/dest/public/fixtures/amm_test.d.ts +1 -1
  151. package/dest/public/fixtures/amm_test.js +2 -2
  152. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  153. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  154. package/dest/public/fixtures/bulk_test.js +5 -69
  155. package/dest/public/fixtures/custom_bytecode_tester.d.ts +29 -7
  156. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  157. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  158. package/dest/public/fixtures/custom_bytecode_tests.d.ts +11 -8
  159. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  160. package/dest/public/fixtures/custom_bytecode_tests.js +83 -18
  161. package/dest/public/fixtures/index.d.ts +4 -2
  162. package/dest/public/fixtures/index.d.ts.map +1 -1
  163. package/dest/public/fixtures/index.js +3 -1
  164. package/dest/public/fixtures/minimal_public_tx.d.ts +2 -8
  165. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
  166. package/dest/public/fixtures/minimal_public_tx.js +6 -16
  167. package/dest/public/fixtures/opcode_spammer.d.ts +123 -0
  168. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
  169. package/dest/public/fixtures/opcode_spammer.js +1693 -0
  170. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +24 -6
  171. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  172. package/dest/public/fixtures/public_tx_simulation_tester.js +62 -21
  173. package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
  174. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  175. package/dest/public/fixtures/simple_contract_data_source.js +4 -4
  176. package/dest/public/fixtures/token_test.d.ts +6 -2
  177. package/dest/public/fixtures/token_test.d.ts.map +1 -1
  178. package/dest/public/fixtures/token_test.js +13 -12
  179. package/dest/public/fixtures/utils.d.ts +2 -2
  180. package/dest/public/fixtures/utils.d.ts.map +1 -1
  181. package/dest/public/fixtures/utils.js +4 -3
  182. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
  183. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  184. package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
  185. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  186. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  187. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  188. package/dest/public/hinting_db_sources.d.ts +14 -4
  189. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  190. package/dest/public/hinting_db_sources.js +71 -13
  191. package/dest/public/index.d.ts +3 -2
  192. package/dest/public/index.d.ts.map +1 -1
  193. package/dest/public/index.js +1 -1
  194. package/dest/public/public_db_sources.d.ts +22 -63
  195. package/dest/public/public_db_sources.d.ts.map +1 -1
  196. package/dest/public/public_db_sources.js +74 -131
  197. package/dest/public/public_errors.d.ts +1 -1
  198. package/dest/public/public_errors.d.ts.map +1 -1
  199. package/dest/public/public_processor/guarded_merkle_tree.d.ts +6 -4
  200. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  201. package/dest/public/public_processor/guarded_merkle_tree.js +5 -0
  202. package/dest/public/public_processor/public_processor.d.ts +12 -19
  203. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  204. package/dest/public/public_processor/public_processor.js +456 -64
  205. package/dest/public/public_processor/public_processor_metrics.d.ts +1 -1
  206. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  207. package/dest/public/public_processor/public_processor_metrics.js +12 -45
  208. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +18 -0
  209. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  210. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +98 -0
  211. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +34 -22
  212. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  213. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +93 -50
  214. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
  215. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
  216. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
  217. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
  218. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
  219. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +171 -0
  220. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +22 -0
  221. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
  222. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
  223. package/dest/public/public_tx_simulator/factories.d.ts +13 -0
  224. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  225. package/dest/public/public_tx_simulator/factories.js +28 -0
  226. package/dest/public/public_tx_simulator/index.d.ts +5 -1
  227. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  228. package/dest/public/public_tx_simulator/index.js +3 -0
  229. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +14 -7
  230. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
  231. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +5 -5
  232. package/dest/public/public_tx_simulator/public_tx_context.d.ts +6 -3
  233. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  234. package/dest/public/public_tx_simulator/public_tx_context.js +13 -5
  235. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +13 -32
  236. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  237. package/dest/public/public_tx_simulator/public_tx_simulator.js +115 -129
  238. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +25 -2
  239. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  240. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +4 -4
  241. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
  242. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +395 -19
  243. package/dest/public/side_effect_errors.d.ts +1 -1
  244. package/dest/public/side_effect_errors.d.ts.map +1 -1
  245. package/dest/public/side_effect_trace.d.ts +2 -2
  246. package/dest/public/side_effect_trace.d.ts.map +1 -1
  247. package/dest/public/side_effect_trace.js +1 -1
  248. package/dest/public/side_effect_trace_interface.d.ts +3 -4
  249. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  250. package/dest/public/state_manager/index.d.ts +1 -1
  251. package/dest/public/state_manager/nullifiers.d.ts +2 -2
  252. package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
  253. package/dest/public/state_manager/public_storage.d.ts +2 -2
  254. package/dest/public/state_manager/public_storage.d.ts.map +1 -1
  255. package/dest/public/state_manager/public_storage.js +1 -1
  256. package/dest/public/state_manager/state_manager.d.ts +9 -11
  257. package/dest/public/state_manager/state_manager.d.ts.map +1 -1
  258. package/dest/public/state_manager/state_manager.js +12 -8
  259. package/dest/public/test_executor_metrics.d.ts +4 -3
  260. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  261. package/dest/public/test_executor_metrics.js +5 -4
  262. package/dest/public/unique_class_ids.d.ts +1 -1
  263. package/dest/public/unique_class_ids.d.ts.map +1 -1
  264. package/dest/public/utils.d.ts +1 -1
  265. package/dest/server.d.ts +1 -1
  266. package/dest/testing.d.ts +1 -1
  267. package/package.json +21 -20
  268. package/src/common/errors.ts +1 -1
  269. package/src/private/acvm/deserialize.ts +1 -1
  270. package/src/private/acvm/serialize.ts +1 -1
  271. package/src/private/circuit_recording/circuit_recorder.ts +17 -16
  272. package/src/public/avm/avm_context.ts +2 -2
  273. package/src/public/avm/avm_contract_call_result.ts +8 -6
  274. package/src/public/avm/avm_execution_environment.ts +13 -10
  275. package/src/public/avm/avm_gas.ts +3 -3
  276. package/src/public/avm/avm_machine_state.ts +7 -6
  277. package/src/public/avm/avm_memory_types.ts +5 -1
  278. package/src/public/avm/avm_simulator.ts +19 -14
  279. package/src/public/avm/calldata.ts +100 -0
  280. package/src/public/avm/errors.ts +17 -3
  281. package/src/public/avm/fixtures/avm_simulation_tester.ts +18 -4
  282. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +1 -1
  283. package/src/public/avm/fixtures/initializers.ts +10 -11
  284. package/src/public/avm/fixtures/utils.ts +3 -2
  285. package/src/public/avm/opcodes/accrued_substate.ts +21 -15
  286. package/src/public/avm/opcodes/addressing_mode.ts +2 -2
  287. package/src/public/avm/opcodes/arithmetic.ts +14 -2
  288. package/src/public/avm/opcodes/bitwise.ts +3 -3
  289. package/src/public/avm/opcodes/comparators.ts +1 -1
  290. package/src/public/avm/opcodes/contract.ts +4 -7
  291. package/src/public/avm/opcodes/control_flow.ts +2 -2
  292. package/src/public/avm/opcodes/conversion.ts +3 -3
  293. package/src/public/avm/opcodes/ec_add.ts +15 -6
  294. package/src/public/avm/opcodes/environment_getters.ts +7 -7
  295. package/src/public/avm/opcodes/external_calls.ts +17 -15
  296. package/src/public/avm/opcodes/hashing.ts +16 -10
  297. package/src/public/avm/opcodes/instruction_impl.ts +2 -2
  298. package/src/public/avm/opcodes/memory.ts +20 -20
  299. package/src/public/avm/opcodes/misc.ts +6 -6
  300. package/src/public/avm/opcodes/storage.ts +30 -22
  301. package/src/public/avm/revert_reason.ts +6 -3
  302. package/src/public/avm/serialization/bytecode_serialization.ts +17 -6
  303. package/src/public/avm/serialization/instruction_serialization.ts +1 -1
  304. package/src/public/avm/test_utils.ts +1 -1
  305. package/src/public/contracts_db_checkpoint.ts +41 -0
  306. package/src/public/db_interfaces.ts +16 -1
  307. package/src/public/debug_fn_name.ts +39 -5
  308. package/src/public/executor_metrics.ts +9 -35
  309. package/src/public/executor_metrics_interface.ts +2 -1
  310. package/src/public/fixtures/amm_test.ts +2 -2
  311. package/src/public/fixtures/bulk_test.ts +9 -9
  312. package/src/public/fixtures/custom_bytecode_tester.ts +54 -20
  313. package/src/public/fixtures/custom_bytecode_tests.ts +111 -18
  314. package/src/public/fixtures/index.ts +7 -1
  315. package/src/public/fixtures/minimal_public_tx.ts +7 -17
  316. package/src/public/fixtures/opcode_spammer.ts +1754 -0
  317. package/src/public/fixtures/public_tx_simulation_tester.ts +85 -21
  318. package/src/public/fixtures/simple_contract_data_source.ts +8 -9
  319. package/src/public/fixtures/token_test.ts +18 -10
  320. package/src/public/fixtures/utils.ts +2 -3
  321. package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
  322. package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
  323. package/src/public/hinting_db_sources.ts +112 -10
  324. package/src/public/index.ts +6 -4
  325. package/src/public/public_db_sources.ts +93 -172
  326. package/src/public/public_processor/guarded_merkle_tree.ts +8 -3
  327. package/src/public/public_processor/public_processor.ts +86 -59
  328. package/src/public/public_processor/public_processor_metrics.ts +11 -45
  329. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +121 -0
  330. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +137 -57
  331. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +132 -0
  332. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +237 -0
  333. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +81 -0
  334. package/src/public/public_tx_simulator/factories.ts +41 -0
  335. package/src/public/public_tx_simulator/index.ts +4 -0
  336. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +10 -14
  337. package/src/public/public_tx_simulator/public_tx_context.ts +9 -3
  338. package/src/public/public_tx_simulator/public_tx_simulator.ts +171 -196
  339. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +24 -2
  340. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +3 -3
  341. package/src/public/side_effect_trace.ts +1 -1
  342. package/src/public/side_effect_trace_interface.ts +1 -1
  343. package/src/public/state_manager/nullifiers.ts +1 -1
  344. package/src/public/state_manager/public_storage.ts +1 -1
  345. package/src/public/state_manager/state_manager.ts +16 -30
  346. package/src/public/test_executor_metrics.ts +7 -5
  347. package/dest/public/tx_contract_cache.d.ts +0 -41
  348. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  349. package/dest/public/tx_contract_cache.js +0 -49
  350. package/src/public/tx_contract_cache.ts +0 -69
@@ -1,21 +1,27 @@
1
1
  import { type ContractArtifact } from '@aztec/stdlib/abi';
2
+ import { PublicSimulatorConfig, type PublicTxResult } from '@aztec/stdlib/avm';
2
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
4
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
4
5
  import { GlobalVariables, type Tx } from '@aztec/stdlib/tx';
5
6
  import { NativeWorldStateService } from '@aztec/world-state';
6
7
  import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
7
- import type { PublicTxResult } from '../public_tx_simulator/public_tx_simulator.js';
8
+ import { PublicContractsDB } from '../public_db_sources.js';
9
+ import type { MeasuredPublicTxSimulatorInterface } from '../public_tx_simulator/public_tx_simulator_interface.js';
8
10
  import { TestExecutorMetrics } from '../test_executor_metrics.js';
9
11
  import { SimpleContractDataSource } from './simple_contract_data_source.js';
10
12
  import { type TestPrivateInsertions } from './utils.js';
11
13
  export type TestEnqueuedCall = {
12
14
  sender?: AztecAddress;
13
15
  address: AztecAddress;
14
- fnName: string;
16
+ fnName?: string;
15
17
  args: any[];
16
18
  isStaticCall?: boolean;
17
19
  contractArtifact?: ContractArtifact;
18
20
  };
21
+ /**
22
+ * Factory type for creating a MeasuredPublicTxSimulatorInterface.
23
+ */
24
+ export type MeasuredSimulatorFactory = (merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globals: GlobalVariables, metrics: TestExecutorMetrics, config: PublicSimulatorConfig) => MeasuredPublicTxSimulatorInterface;
19
25
  /**
20
26
  * A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
21
27
  * It provides an interface for simulating one transaction at a time and maintains state between subsequent
@@ -27,9 +33,8 @@ export declare class PublicTxSimulationTester extends BaseAvmSimulationTester {
27
33
  protected txCount: number;
28
34
  private simulator;
29
35
  private metricsPrefix?;
30
- constructor(merkleTree: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource, globals?: GlobalVariables, metrics?: TestExecutorMetrics, useCppSimulator?: boolean);
31
- static create(worldStateService: NativeWorldStateService, // make sure to close this later
32
- globals?: GlobalVariables, metrics?: TestExecutorMetrics, useCppSimulator?: boolean): Promise<PublicTxSimulationTester>;
36
+ constructor(merkleTree: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource, globals?: GlobalVariables, metrics?: TestExecutorMetrics, simulatorFactory?: MeasuredSimulatorFactory, config?: PublicSimulatorConfig);
37
+ static create(worldStateService: NativeWorldStateService, globals?: GlobalVariables, metrics?: TestExecutorMetrics, useCppSimulator?: boolean, config?: PublicSimulatorConfig): Promise<PublicTxSimulationTester>;
33
38
  setMetricsPrefix(prefix: string): void;
34
39
  createTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions): Promise<Tx>;
35
40
  simulateTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, txLabel?: string): Promise<PublicTxResult>;
@@ -49,6 +54,19 @@ export declare class PublicTxSimulationTester extends BaseAvmSimulationTester {
49
54
  */
50
55
  executeTxWithLabel(txLabel: string, sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions): Promise<PublicTxResult>;
51
56
  prettyPrintMetrics(): void;
57
+ /**
58
+ * Cancel the current simulation if one is in progress.
59
+ * This signals the underlying simulator (e.g., C++) to stop at the next safe point.
60
+ * Safe to call even if no simulation is in progress.
61
+ *
62
+ * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
63
+ */
64
+ cancel(waitTimeoutMs?: number): Promise<void>;
65
+ /**
66
+ * Get the underlying simulator for advanced test scenarios.
67
+ * Use this when you need direct control over simulation (e.g., for testing cancellation).
68
+ */
69
+ getSimulator(): MeasuredPublicTxSimulatorInterface;
52
70
  }
53
71
  export declare function defaultGlobals(): GlobalVariables;
54
- //# sourceMappingURL=public_tx_simulation_tester.d.ts.map
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X3NpbXVsYXRpb25fdGVzdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL2ZpeHR1cmVzL3B1YmxpY190eF9zaW11bGF0aW9uX3Rlc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBbUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVoRSxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxlQUFlLEVBQWlDLEtBQUssRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFPeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHNUQsT0FBTyxLQUFLLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNsSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsS0FBSyxxQkFBcUIsRUFBMEIsTUFBTSxZQUFZLENBQUM7QUFJaEYsTUFBTSxNQUFNLGdCQUFnQixHQUFHO0lBQzdCLE1BQU0sQ0FBQyxFQUFFLFlBQVksQ0FBQztJQUN0QixPQUFPLEVBQUUsWUFBWSxDQUFDO0lBQ3RCLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNoQixJQUFJLEVBQUUsR0FBRyxFQUFF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
@@ -1 +1 @@
1
- {"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,29 @@
1
+ import { DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT } from '@aztec/constants';
1
2
  import { asyncMap } from '@aztec/foundation/async-map';
2
- import { Fr } from '@aztec/foundation/fields';
3
+ import { BlockNumber } from '@aztec/foundation/branded-types';
4
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
5
  import { encodeArguments } from '@aztec/stdlib/abi';
6
+ import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
4
7
  import { Gas, GasFees } from '@aztec/stdlib/gas';
5
8
  import { PublicCallRequest } from '@aztec/stdlib/kernel';
6
9
  import { GlobalVariables, PublicCallRequestWithCalldata } from '@aztec/stdlib/tx';
7
10
  import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
8
11
  import { DEFAULT_BLOCK_NUMBER, DEFAULT_TIMESTAMP, getContractFunctionAbi, getFunctionSelector } from '../avm/fixtures/utils.js';
9
12
  import { PublicContractsDB } from '../public_db_sources.js';
10
- import { MeasuredCppPublicTxSimulatorHintedDbs } from '../public_tx_simulator/cpp_public_tx_simulator.js';
11
- import { MeasuredPublicTxSimulator } from '../public_tx_simulator/measured_public_tx_simulator.js';
13
+ import { MeasuredCppPublicTxSimulator } from '../public_tx_simulator/cpp_public_tx_simulator.js';
14
+ import { MeasuredCppVsTsPublicTxSimulator } from '../public_tx_simulator/cpp_vs_ts_public_tx_simulator.js';
12
15
  import { TestExecutorMetrics } from '../test_executor_metrics.js';
13
16
  import { SimpleContractDataSource } from './simple_contract_data_source.js';
14
17
  import { createTxForPublicCalls } from './utils.js';
15
18
  const DEFAULT_GAS_FEES = new GasFees(2, 3);
19
+ const defaultConfig = PublicSimulatorConfig.from({
20
+ skipFeeEnforcement: false,
21
+ collectCallMetadata: true,
22
+ collectDebugLogs: true,
23
+ collectHints: false,
24
+ collectPublicInputs: false,
25
+ collectStatistics: false
26
+ });
16
27
  /**
17
28
  * A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
18
29
  * It provides an interface for simulating one transaction at a time and maintains state between subsequent
@@ -22,20 +33,20 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
22
33
  txCount;
23
34
  simulator;
24
35
  metricsPrefix;
25
- constructor(merkleTree, contractDataSource, globals = defaultGlobals(), metrics = new TestExecutorMetrics(), useCppSimulator = false){
36
+ constructor(merkleTree, contractDataSource, globals = defaultGlobals(), metrics = new TestExecutorMetrics(), simulatorFactory, config = defaultConfig){
26
37
  super(contractDataSource, merkleTree), this.metrics = metrics, this.txCount = 0;
27
38
  const contractsDB = new PublicContractsDB(contractDataSource);
28
- const config = {
29
- doMerkleOperations: true,
30
- skipFeeEnforcement: false,
31
- clientInitiatedSimulation: true
32
- };
33
- this.simulator = useCppSimulator ? new MeasuredCppPublicTxSimulatorHintedDbs(merkleTree, contractsDB, globals, this.metrics, config) : new MeasuredPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
39
+ if (simulatorFactory) {
40
+ this.simulator = simulatorFactory(merkleTree, contractsDB, globals, this.metrics, config);
41
+ } else {
42
+ this.simulator = new MeasuredCppPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
43
+ }
34
44
  }
35
- static async create(worldStateService, globals = defaultGlobals(), metrics = new TestExecutorMetrics(), useCppSimulator = false) {
45
+ static async create(worldStateService, globals = defaultGlobals(), metrics = new TestExecutorMetrics(), useCppSimulator = false, config = defaultConfig) {
36
46
  const contractDataSource = new SimpleContractDataSource();
37
47
  const merkleTree = await worldStateService.fork();
38
- return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, useCppSimulator);
48
+ const simulatorFactory = useCppSimulator ? (mt, cdb, g, m, c)=>new MeasuredCppPublicTxSimulator(mt, cdb, g, m, c) : (mt, cdb, g, m, c)=>new MeasuredCppVsTsPublicTxSimulator(mt, cdb, g, m, c);
49
+ return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, simulatorFactory, config);
39
50
  }
40
51
  setMetricsPrefix(prefix) {
41
52
  this.metricsPrefix = prefix;
@@ -51,13 +62,16 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
51
62
  const appCallRequests = await asyncMap(appCalls, (call)=>this.#createPubicCallRequestForCall(call, call.sender ?? sender));
52
63
  const teardownCallRequest = teardownCall ? await this.#createPubicCallRequestForCall(teardownCall, teardownCall.sender ?? sender) : undefined;
53
64
  this.txCount++;
54
- return createTxForPublicCalls(privateInsertions, setupCallRequests, appCallRequests, teardownCallRequest, feePayer, /*gasUsedByPrivate*/ Gas.empty(), defaultGlobals());
65
+ return createTxForPublicCalls(privateInsertions, setupCallRequests, appCallRequests, teardownCallRequest, feePayer, /*gasUsedByPrivate*/ teardownCall ? new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT) : Gas.empty(), defaultGlobals());
55
66
  }
56
67
  async simulateTx(sender, setupCalls = [], appCalls = [], teardownCall, feePayer = sender, /* need some unique first nullifier for note-nonce computations */ privateInsertions, txLabel = 'unlabeledTx') {
57
68
  const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions);
58
69
  await this.setFeePayerBalance(feePayer);
59
70
  const txLabelWithCount = `${txLabel}/${this.txCount - 1}`;
60
71
  const fullTxLabel = this.metricsPrefix ? `${this.metricsPrefix}/${txLabelWithCount}` : txLabelWithCount;
72
+ if (!this.simulator) {
73
+ throw new Error('No simulator configured. Pass a simulatorFactory to the constructor or use PublicTxSimulationTester.create()');
74
+ }
61
75
  const avmResult = await this.simulator.simulate(tx, fullTxLabel);
62
76
  // Something like this is often useful for debugging:
63
77
  //if (avmResult.revertReason) {
@@ -91,19 +105,46 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
91
105
  prettyPrintMetrics() {
92
106
  this.metrics.prettyPrint();
93
107
  }
108
+ /**
109
+ * Cancel the current simulation if one is in progress.
110
+ * This signals the underlying simulator (e.g., C++) to stop at the next safe point.
111
+ * Safe to call even if no simulation is in progress.
112
+ *
113
+ * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
114
+ */ async cancel(waitTimeoutMs) {
115
+ await this.simulator.cancel?.(waitTimeoutMs);
116
+ }
117
+ /**
118
+ * Get the underlying simulator for advanced test scenarios.
119
+ * Use this when you need direct control over simulation (e.g., for testing cancellation).
120
+ */ getSimulator() {
121
+ return this.simulator;
122
+ }
94
123
  async #createPubicCallRequestForCall(call, sender) {
95
124
  const address = call.address;
96
125
  const contractArtifact = call.contractArtifact || await this.contractDataSource.getContractArtifact(address);
97
126
  if (!contractArtifact) {
98
127
  throw new Error(`Contract artifact not found for address: ${address}`);
99
128
  }
100
- const fnSelector = await getFunctionSelector(call.fnName, contractArtifact);
101
- const fnAbi = getContractFunctionAbi(call.fnName, contractArtifact);
102
- const encodedArgs = encodeArguments(fnAbi, call.args);
103
- const calldata = [
104
- fnSelector.toField(),
105
- ...encodedArgs
106
- ];
129
+ let calldata = [];
130
+ if (!call.fnName) {
131
+ this.logger.debug(`No function name specified for call to contract ${call.address.toString()}. Assuming this is a custom bytecode with no public_dispatch function.`);
132
+ this.logger.debug(`Not using ABI to encode arguments. Not prepending fn selector to calldata.`);
133
+ try {
134
+ calldata = call.args.map((arg)=>new Fr(arg));
135
+ } catch (error) {
136
+ this.logger.warn(`Tried assuming that all arguments are Field-like. Failed. Error: ${error}`);
137
+ throw error;
138
+ }
139
+ } else {
140
+ const fnSelector = await getFunctionSelector(call.fnName, contractArtifact);
141
+ const fnAbi = getContractFunctionAbi(call.fnName, contractArtifact);
142
+ const encodedArgs = encodeArguments(fnAbi, call.args);
143
+ calldata = [
144
+ fnSelector.toField(),
145
+ ...encodedArgs
146
+ ];
147
+ }
107
148
  const isStaticCall = call.isStaticCall ?? false;
108
149
  const request = await PublicCallRequest.fromCalldata(sender, address, isStaticCall, calldata);
109
150
  return new PublicCallRequestWithCalldata(request, calldata);
@@ -113,6 +154,6 @@ export function defaultGlobals() {
113
154
  const globals = GlobalVariables.empty();
114
155
  globals.timestamp = DEFAULT_TIMESTAMP;
115
156
  globals.gasFees = DEFAULT_GAS_FEES; // apply some nonzero default gas fees
116
- globals.blockNumber = DEFAULT_BLOCK_NUMBER;
157
+ globals.blockNumber = BlockNumber(DEFAULT_BLOCK_NUMBER);
117
158
  return globals;
118
159
  }
@@ -1,4 +1,5 @@
1
- import type { Fr } from '@aztec/foundation/fields';
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
3
  import type { ContractArtifact, FunctionSelector } from '@aztec/stdlib/abi';
3
4
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
5
  import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
@@ -21,15 +22,15 @@ export declare class SimpleContractDataSource implements ContractDataSource {
21
22
  */
22
23
  addNewContract(contractArtifact: ContractArtifact, contractClass: ContractClassPublic, contractInstance: ContractInstanceWithAddress): Promise<void>;
23
24
  addContractArtifact(classId: Fr, artifact: ContractArtifact): Promise<void>;
24
- getBlockNumber(): Promise<number>;
25
+ getBlockNumber(): Promise<BlockNumber>;
25
26
  getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
26
27
  getBytecodeCommitment(_id: Fr): Promise<Fr | undefined>;
27
28
  getContract(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
28
29
  getContractClassIds(): Promise<Fr[]>;
29
30
  getContractArtifact(address: AztecAddress): Promise<ContractArtifact | undefined>;
30
- getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string>;
31
+ getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
31
32
  registerContractFunctionSignatures(_signatures: string[]): Promise<void>;
32
33
  addContractClass(contractClass: ContractClassPublic): Promise<void>;
33
34
  addContractInstance(contractInstance: ContractInstanceWithAddress): Promise<void>;
34
35
  }
35
- //# sourceMappingURL=simple_contract_data_source.d.ts.map
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlX2NvbnRyYWN0X2RhdGFfc291cmNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL2ZpeHR1cmVzL3NpbXBsZV9jb250cmFjdF9kYXRhX3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSW5IOzs7Ozs7R0FNRztBQUNILHFCQUFhLHdCQUF5QixZQUFXLGtCQUFrQjtJQUMxRCxNQUFNLHlDQUErQztJQUc1RCxPQUFPLENBQUMsZUFBZSxDQUErQztJQUV0RSxPQUFPLENBQUMsaUJBQWlCLENBQXVEO0lBRWhGLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBNEM7SUFFckUsT0FBTyxDQUFDLGlCQUFpQixDQUFrQztJQUkzRDs7O09BR0c7SUFDRyxjQUFjLENBQ2xCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxhQUFhLEVBQUUsbUJBQW1CLEVBQ2xDLGdCQUFnQixFQUFFLDJCQUEyQixpQkFLOUM7SUFFSyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsaUJBY2hFO0lBSUQsY0FBYyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FFckM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsQ0FFakU7SUFFRCxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBRXREO0lBRUQsV0FBVyxDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixHQUFHLFNBQVMsQ0FBQyxDQUVuRjtJQUVELG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUVuQztJQUVLLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxDQVN0RjtJQUVLLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBYXpHO0lBRUQsa0NBQWtDLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFdkU7SUFFRCxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUdsRTtJQUVELG1CQUFtQixDQUFDLGdCQUFnQixFQUFFLDJCQUEyQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHaEY7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"simple_contract_data_source.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/simple_contract_data_source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAInH;;;;;;GAMG;AACH,qBAAa,wBAAyB,YAAW,kBAAkB;IAC1D,MAAM,yCAA+C;IAG5D,OAAO,CAAC,eAAe,CAA+C;IAEtE,OAAO,CAAC,iBAAiB,CAAuD;IAEhF,OAAO,CAAC,iBAAiB,CAA4C;IAErE,OAAO,CAAC,iBAAiB,CAAkC;IAI3D;;;OAGG;IACG,cAAc,CAClB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,mBAAmB,EAClC,gBAAgB,EAAE,2BAA2B;IAOzC,mBAAmB,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,gBAAgB;IAkBjE,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAIlE,qBAAqB,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIvD,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAIpF,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAI9B,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAWjF,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB9F,kCAAkC,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnE,mBAAmB,CAAC,gBAAgB,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;CAIlF"}
1
+ {"version":3,"file":"simple_contract_data_source.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/simple_contract_data_source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAInH;;;;;;GAMG;AACH,qBAAa,wBAAyB,YAAW,kBAAkB;IAC1D,MAAM,yCAA+C;IAG5D,OAAO,CAAC,eAAe,CAA+C;IAEtE,OAAO,CAAC,iBAAiB,CAAuD;IAEhF,OAAO,CAAC,iBAAiB,CAA4C;IAErE,OAAO,CAAC,iBAAiB,CAAkC;IAI3D;;;OAGG;IACG,cAAc,CAClB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,mBAAmB,EAClC,gBAAgB,EAAE,2BAA2B,iBAK9C;IAEK,mBAAmB,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,gBAAgB,iBAchE;IAID,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAErC;IAED,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAEjE;IAED,qBAAqB,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAEtD;IAED,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAEnF;IAED,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAEnC;IAEK,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAStF;IAEK,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAazG;IAED,kCAAkC,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE;IAED,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlE;IAED,mBAAmB,CAAC,gBAAgB,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhF;CACF"}
@@ -70,14 +70,14 @@ import { getFunctionSelector } from '../avm/fixtures/utils.js';
70
70
  async getDebugFunctionName(address, selector) {
71
71
  const contractInstance = await this.getContract(address);
72
72
  if (!contractInstance) {
73
- this.logger.warn(`Couldn't get fn name for debugging. Contract not in tester's ContractDataSource. Using selector:${selector} instead...`);
74
- return `selector:${selector.toString()}`;
73
+ this.logger.warn(`Couldn't get fn name for debugging. Contract not in tester's ContractDataSource.`);
74
+ return undefined;
75
75
  }
76
76
  const key = `${contractInstance.currentContractClassId.toString()}:${selector.toString()}`;
77
77
  const fnName = this.debugFunctionName.get(key);
78
78
  if (!fnName) {
79
- this.logger.warn(`Couldn't get fn name for debugging. Using selector:${selector} instead...`);
80
- return selector.toString();
79
+ this.logger.warn(`Couldn't get fn name for debugging...`);
80
+ return undefined;
81
81
  }
82
82
  return fnName;
83
83
  }
@@ -3,6 +3,10 @@ import type { ContractArtifact } from '@aztec/stdlib/abi';
3
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
5
5
  import { PublicTxSimulationTester } from './public_tx_simulation_tester.js';
6
- export declare function tokenTest(tester: PublicTxSimulationTester, logger: Logger, tokenArtifact: ContractArtifact, expectToBeTrue: (x: boolean) => void): Promise<void>;
6
+ export type TokenTestOptions = {
7
+ /** Skip return value assertions in balance checks (useful for benchmarking with collectCallMetadata=false) */
8
+ skipReturnValueAssertions?: boolean;
9
+ };
10
+ export declare function tokenTest(tester: PublicTxSimulationTester, logger: Logger, tokenArtifact: ContractArtifact, expectToBeTrue: (x: boolean) => void, options?: TokenTestOptions): Promise<void>;
7
11
  export declare function setUpToken(tester: PublicTxSimulationTester, tokenArtifact: ContractArtifact, admin: AztecAddress, expectToBeTrue: (x: boolean) => void, seed?: number): Promise<ContractInstanceWithAddress>;
8
- //# sourceMappingURL=token_test.d.ts.map
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fdGVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9maXh0dXJlcy90b2tlbl90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFMUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFNUUsTUFBTSxNQUFNLGdCQUFnQixHQUFHO0lBQzdCLDhHQUE4RztJQUM5Ryx5QkFBeUIsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUNyQyxDQUFDO0FBRUYsd0JBQXNCLFNBQVMsQ0FDN0IsTUFBTSxFQUFFLHdCQUF3QixFQUNoQyxNQUFNLEVBQUUsTUFBTSxFQUNkLGFBQWEsRUFBRSxnQkFBZ0IsRUFDL0IsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sS0FBSyxJQUFJLEVBQ3BDLE9BQU8sR0FBRSxnQkFBcUIsaUJBK0QvQjtBQUVELHdCQUFzQixVQUFVLENBQzlCLE1BQU0sRUFBRSx3QkFBd0IsRUFDaEMsYUFBYSxFQUFFLGdCQUFnQixFQUMvQixLQUFLLEVBQUUsWUFBWSxFQUNuQixjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxLQUFLLElBQUksRUFDcEMsSUFBSSxTQUFJLHdDQTBCVCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"token_test.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/token_test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,wBAAsB,SAAS,CAC7B,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,gBAAgB,EAC/B,cAAc,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,iBA+DrC;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,wBAAwB,EAChC,aAAa,EAAE,gBAAgB,EAC/B,KAAK,EAAE,YAAY,EACnB,cAAc,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,EACpC,IAAI,SAAI,wCA0BT"}
1
+ {"version":3,"file":"token_test.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/token_test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8GAA8G;IAC9G,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC,CAAC;AAEF,wBAAsB,SAAS,CAC7B,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,gBAAgB,EAC/B,cAAc,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,EACpC,OAAO,GAAE,gBAAqB,iBA+D/B;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,wBAAwB,EAChC,aAAa,EAAE,gBAAgB,EAC/B,KAAK,EAAE,YAAY,EACnB,cAAc,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,EACpC,IAAI,SAAI,wCA0BT"}
@@ -1,7 +1,7 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { Timer } from '@aztec/foundation/timer';
3
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- export async function tokenTest(tester, logger, tokenArtifact, expectToBeTrue) {
4
+ export async function tokenTest(tester, logger, tokenArtifact, expectToBeTrue, options = {}) {
5
5
  const timer = new Timer();
6
6
  const admin = AztecAddress.fromNumber(42);
7
7
  const sender = AztecAddress.fromNumber(111);
@@ -20,7 +20,7 @@ export async function tokenTest(tester, logger, tokenArtifact, expectToBeTrue) {
20
20
  }
21
21
  ]);
22
22
  expectToBeTrue(mintResult.revertCode.isOK());
23
- await checkBalance(tester, token, sender, sender, mintAmount, expectToBeTrue);
23
+ await checkBalance(tester, token, sender, sender, mintAmount, expectToBeTrue, options);
24
24
  const authwitNonce = new Fr(0);
25
25
  const transferAmount = 50n;
26
26
  // EXECUTE! This means that if using AvmProvingTester subclass, it will PROVE the transaction!
@@ -37,8 +37,8 @@ export async function tokenTest(tester, logger, tokenArtifact, expectToBeTrue) {
37
37
  }
38
38
  ]);
39
39
  expectToBeTrue(transferResult.revertCode.isOK());
40
- await checkBalance(tester, token, sender, receiver, mintAmount - transferAmount, expectToBeTrue);
41
- await checkBalance(tester, token, sender, receiver, transferAmount, expectToBeTrue);
40
+ await checkBalance(tester, token, sender, sender, mintAmount - transferAmount, expectToBeTrue, options);
41
+ await checkBalance(tester, token, sender, receiver, transferAmount, expectToBeTrue, options);
42
42
  // EXECUTE! This means that if using AvmProvingTester subclass, it will PROVE the transaction!
43
43
  const burnResult = await tester.executeTxWithLabel(/*txLabel=*/ 'Token/burn_public', /*sender=*/ receiver, /*setupCalls=*/ [], /*appCalls=*/ [
44
44
  {
@@ -52,7 +52,7 @@ export async function tokenTest(tester, logger, tokenArtifact, expectToBeTrue) {
52
52
  }
53
53
  ]);
54
54
  expectToBeTrue(burnResult.revertCode.isOK());
55
- await checkBalance(tester, token, sender, receiver, 0n, expectToBeTrue);
55
+ await checkBalance(tester, token, sender, receiver, 0n, expectToBeTrue, options);
56
56
  logger.info(`TokenContract test took ${timer.ms()}ms\n`);
57
57
  }
58
58
  export async function setUpToken(tester, tokenArtifact, admin, expectToBeTrue, seed = 0) {
@@ -74,7 +74,7 @@ export async function setUpToken(tester, tokenArtifact, admin, expectToBeTrue, s
74
74
  expectToBeTrue(result.revertCode.isOK());
75
75
  return token;
76
76
  }
77
- async function checkBalance(tester, token, sender, account, expectedBalance, expectToBeTrue) {
77
+ async function checkBalance(tester, token, sender, account, expectedBalance, expectToBeTrue, options = {}) {
78
78
  // Strictly simulate this! No need to "execute" (aka prove if using AvmProvingTester subclass).
79
79
  const balResult = await tester.simulateTxWithLabel(/*txLabel=*/ 'Token/balance_of_public', sender, /*setupCalls=*/ [], /*appCalls=*/ [
80
80
  {
@@ -87,9 +87,10 @@ async function checkBalance(tester, token, sender, account, expectedBalance, exp
87
87
  }
88
88
  ]);
89
89
  expectToBeTrue(balResult.revertCode.isOK());
90
- // should be 1 call with 1 return value that is expectedBalance
91
- expectToBeTrue(balResult.processedPhases.length == 1);
92
- expectToBeTrue(balResult.processedPhases[0].returnValues.length == 1);
93
- expectToBeTrue(balResult.processedPhases[0].returnValues[0].values.length == 1);
94
- expectToBeTrue(balResult.processedPhases[0].returnValues[0].values[0].toBigInt() == expectedBalance);
90
+ if (!options.skipReturnValueAssertions) {
91
+ // should be 1 call with 1 return value that is expectedBalance
92
+ const appLogicReturnValues = balResult.getAppLogicReturnValues();
93
+ expectToBeTrue(appLogicReturnValues.length === 1);
94
+ expectToBeTrue(appLogicReturnValues[0].values?.[0]?.toBigInt() === expectedBalance);
95
+ }
95
96
  }
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
3
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
4
4
  import { Gas } from '@aztec/stdlib/gas';
@@ -23,4 +23,4 @@ export declare function createTxForPublicCalls(privateInsertions: TestPrivateIns
23
23
  export declare function createTxForPrivateOnly(feePayer?: AztecAddress, gasUsedByPrivate?: Gas): Promise<Tx>;
24
24
  export declare function addNewContractClassToTx(tx: Tx, contractClass: ContractClassPublic, skipNullifierInsertion?: boolean): Promise<void>;
25
25
  export declare function addNewContractInstanceToTx(tx: Tx, contractInstance: ContractInstanceWithAddress, skipNullifierInsertion?: boolean): Promise<void>;
26
- //# sourceMappingURL=utils.d.ts.map
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZml4dHVyZXMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFBRSxHQUFHLEVBQXdCLE1BQU0sbUJBQW1CLENBQUM7QUFVOUQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxPQUFPLEVBRUwsZUFBZSxFQUVmLDZCQUE2QixFQUM3QixFQUFFLEVBR0gsTUFBTSxrQkFBa0IsQ0FBQztBQUkxQixNQUFNLE1BQU0scUJBQXFCLEdBQUc7SUFDbEMsVUFBVSxDQUFDLEVBQUU7UUFDWCxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNsQixVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNsQixVQUFVLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0tBQ3BDLENBQUM7SUFDRixhQUFhLENBQUMsRUFBRTtRQUNkLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLENBQUM7S0FDcEMsQ0FBQztDQUNILENBQUM7QUFFRjs7R0FFRztBQUNILHdCQUFzQixzQkFBc0IsQ0FDMUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQ3hDLGlCQUFpQixFQUFFLDZCQUE2QixFQUFFLEVBQ2xELGVBQWUsRUFBRSw2QkFBNkIsRUFBRSxFQUNoRCxtQkFBbUIsQ0FBQyxFQUFFLDZCQUE2QixFQUNuRCxRQUFRLGVBQXNCLEVBQzlCLGdCQUFnQixHQUFFLEdBQWlCLEVBQ25DLE9BQU8sR0FBRSxlQUF5QyxHQUNqRCxPQUFPLENBQUMsRUFBRSxDQUFDLENBOEZiO0FBRUQsd0JBQXNCLHNCQUFzQixDQUMxQyxRQUFRLGVBQXNCLEVBQzlCLGdCQUFnQixHQUFFLEdBQXFCLEdBQ3RDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0EwQmI7QUFFRCx3QkFBc0IsdUJBQXVCLENBQzNDLEVBQUUsRUFBRSxFQUFFLEVBQ04sYUFBYSxFQUFFLG1CQUFtQixFQUNsQyxzQkFBc0IsVUFBUSxpQkE2Qi9CO0FBRUQsd0JBQXNCLDBCQUEwQixDQUM5QyxFQUFFLEVBQUUsRUFBRSxFQUNOLGdCQUFnQixFQUFFLDJCQUEyQixFQUM3QyxzQkFBc0IsVUFBUSxpQkEwQy9CIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/utils.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAwB,MAAM,mBAAmB,CAAC;AAU9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAEL,eAAe,EAEf,6BAA6B,EAC7B,EAAE,EAGH,MAAM,kBAAkB,CAAC;AAI1B,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;IACF,aAAa,CAAC,EAAE;QACd,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,iBAAiB,EAAE,qBAAqB,EACxC,iBAAiB,EAAE,6BAA6B,EAAE,EAClD,eAAe,EAAE,6BAA6B,EAAE,EAChD,mBAAmB,CAAC,EAAE,6BAA6B,EACnD,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAiB,EACnC,OAAO,GAAE,eAAyC,GACjD,OAAO,CAAC,EAAE,CAAC,CA+Fb;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAqB,GACtC,OAAO,CAAC,EAAE,CAAC,CA0Bb;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,aAAa,EAAE,mBAAmB,EAClC,sBAAsB,UAAQ,iBA6B/B;AAED,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,gBAAgB,EAAE,2BAA2B,EAC7C,sBAAsB,UAAQ,iBA0C/B"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/utils.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAwB,MAAM,mBAAmB,CAAC;AAU9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAEL,eAAe,EAEf,6BAA6B,EAC7B,EAAE,EAGH,MAAM,kBAAkB,CAAC;AAI1B,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;IACF,aAAa,CAAC,EAAE;QACd,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,iBAAiB,EAAE,qBAAqB,EACxC,iBAAiB,EAAE,6BAA6B,EAAE,EAClD,eAAe,EAAE,6BAA6B,EAAE,EAChD,mBAAmB,CAAC,EAAE,6BAA6B,EACnD,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAiB,EACnC,OAAO,GAAE,eAAyC,GACjD,OAAO,CAAC,EAAE,CAAC,CA8Fb;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAqB,GACtC,OAAO,CAAC,EAAE,CAAC,CA0Bb;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,aAAa,EAAE,mBAAmB,EAClC,sBAAsB,UAAQ,iBA6B/B;AAED,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,gBAAgB,EAAE,2BAA2B,EAC7C,sBAAsB,UAAQ,iBA0C/B"}
@@ -1,6 +1,6 @@
1
1
  import { CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE, CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS, CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS, DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT, DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT, PRIVATE_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
2
2
  import { padArrayEnd } from '@aztec/foundation/collection';
3
- import { Fr } from '@aztec/foundation/fields';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '@aztec/protocol-contracts';
5
5
  import { bufferAsFields } from '@aztec/stdlib/abi';
6
6
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
@@ -72,8 +72,9 @@ import { strict as assert } from 'assert';
72
72
  const teardownGasLimits = teardownCallRequest ? new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT) : Gas.empty();
73
73
  const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
74
74
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
75
- const header = BlockHeader.empty();
76
- header.globalVariables = globals;
75
+ const header = BlockHeader.empty({
76
+ globalVariables: globals
77
+ });
77
78
  const constantData = new TxConstantData(header, txContext, Fr.zero(), Fr.zero());
78
79
  const includeByTimestamp = 0n; // Not used in the simulator.
79
80
  const txData = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ gasUsedByPrivate, feePayer, includeByTimestamp, forPublic);
@@ -0,0 +1,60 @@
1
+ import { AvmTxHint, type PublicTxResult } from '@aztec/stdlib/avm';
2
+ import { type MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
3
+ import { GlobalVariables, ProtocolContracts } from '@aztec/stdlib/tx';
4
+ import type { NativeWorldStateService } from '@aztec/world-state';
5
+ import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
6
+ import { SimpleContractDataSource } from '../fixtures/simple_contract_data_source.js';
7
+ /**
8
+ * Request structure for fuzzer simulation communication from C++.
9
+ * Matches the C++ FuzzerSimulationRequest struct
10
+ */
11
+ export declare class FuzzerSimulationRequest {
12
+ readonly wsDataDir: string;
13
+ readonly wsMapSizeKb: number;
14
+ readonly tx: AvmTxHint;
15
+ readonly globals: GlobalVariables;
16
+ readonly contractClasses: any[];
17
+ readonly contractInstances: [any, any][];
18
+ readonly publicDataWrites: any[];
19
+ readonly noteHashes: any[];
20
+ readonly protocolContracts: ProtocolContracts;
21
+ constructor(wsDataDir: string, wsMapSizeKb: number, tx: AvmTxHint, globals: GlobalVariables, contractClasses: any[], contractInstances: [any, any][], publicDataWrites: any[], noteHashes: any[], protocolContracts: ProtocolContracts);
22
+ static fromPlainObject(obj: any): FuzzerSimulationRequest;
23
+ }
24
+ /**
25
+ * A simulator class for the AVM fuzzer that extends BaseAvmSimulationTester.
26
+ * It provides methods for registering contracts from C++ msgpack data and simulating transactions.
27
+ */
28
+ export declare class AvmFuzzerSimulator extends BaseAvmSimulationTester {
29
+ private simulator;
30
+ constructor(merkleTrees: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource, globals: GlobalVariables, protocolContracts: ProtocolContracts);
31
+ /**
32
+ * Static factory method to create an AvmFuzzerSimulator.
33
+ */
34
+ static create(worldStateService: NativeWorldStateService, globals: GlobalVariables, protocolContracts: ProtocolContracts): Promise<AvmFuzzerSimulator>;
35
+ /**
36
+ * Simulate a transaction from a C++ AvmTxHint.
37
+ */
38
+ simulate(txHint: AvmTxHint): Promise<PublicTxResult>;
39
+ /**
40
+ * Add a contract class from C++ raw msgpack data.
41
+ */
42
+ addContractClassFromCpp(rawClass: any): Promise<void>;
43
+ /**
44
+ * Add a contract instance from C++ raw msgpack data.
45
+ * This also inserts the contract address nullifier into the nullifier tree,
46
+ * unless the address is a protocol canonical address (1-11).
47
+ */
48
+ addContractInstanceFromCpp(rawAddress: any, rawInstance: any): Promise<void>;
49
+ /**
50
+ * Apply public data tree writes from C++ raw msgpack data.
51
+ * This is used to pre-populate the public data tree before simulation (e.g., for bytecode upgrades).
52
+ */
53
+ applyPublicDataWrites(rawWrites: any[]): Promise<void>;
54
+ /**
55
+ * Apply note hashes from C++ raw msgpack data.
56
+ * This is used to pre-populate the note hash tree before simulation.
57
+ */
58
+ applyNoteHashes(rawNoteHashes: any[]): Promise<void>;
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2Z1enplcl9zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZnV6emluZy9hdm1fZnV6emVyX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFZbkUsT0FBTyxFQUFnQixLQUFLLHlCQUF5QixFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBQ3ZHLE9BQU8sRUFFTCxlQUFlLEVBRWYsaUJBQWlCLEVBS2xCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUl0Rjs7O0dBR0c7QUFDSCxxQkFBYSx1QkFBdUI7YUFFaEIsU0FBUyxFQUFFLE1BQU07YUFDakIsV0FBVyxFQUFFLE1BQU07YUFDbkIsRUFBRSxFQUFFLFNBQVM7YUFDYixPQUFPLEVBQUUsZUFBZTthQUN4QixlQUFlLEVBQUUsR0FBRyxFQUFFO2FBQ3RCLGlCQUFpQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2FBQy9CLGdCQUFnQixFQUFFLEdBQUcsRUFBRTthQUN2QixVQUFVLEVBQUUsR0FBRyxFQUFFO2FBQ2pCLGlCQUFpQixFQUFFLGlCQUFpQjtJQVR0RCxZQUNrQixTQUFTLEVBQUUsTUFBTSxFQUNqQixXQUFXLEVBQUUsTUFBTSxFQUNuQixFQUFFLEVBQUUsU0FBUyxFQUNiLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLGVBQWUsRUFBRSxHQUFHLEVBQUUsRUFDdEIsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFDL0IsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLEVBQ3ZCLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFDakIsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQ2xEO0lBRUosTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLHVCQUF1QixDQWV4RDtDQUNGO0FBbUhEOzs7R0FHRztBQUNILHFCQUFhLGtCQUFtQixTQUFRLHVCQUF1QjtJQUM3RCxPQUFPLENBQUMsU0FBUyxDQUFvQjtJQUVyQyxZQUNFLFdBQVcsRUFBRSx5QkFBeUIsRUFDdEMsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLGlCQUFpQixFQUFFLGlCQUFpQixFQWlCckM7SUFFRDs7T0FFRztJQUNILE9BQW9CLE1BQU0sQ0FDeEIsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLGlCQUFpQixFQUFFLGlCQUFpQixHQUNuQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FJN0I7SUFFRDs7T0FFRztJQUNVLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FVaEU7SUFFRDs7T0FFRztJQUNVLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUdqRTtJQUVEOzs7O09BSUc7SUFDVSwwQkFBMEIsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQU14RjtJQUVEOzs7T0FHRztJQUNVLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBS2xFO0lBRUQ7OztPQUdHO0lBQ1UsZUFBZSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSWhFO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avm_fuzzer_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/fuzzing/avm_fuzzer_simulator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYnE,OAAO,EAAgB,KAAK,yBAAyB,EAAsB,MAAM,qBAAqB,CAAC;AACvG,OAAO,EAEL,eAAe,EAEf,iBAAiB,EAKlB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AAItF;;;GAGG;AACH,qBAAa,uBAAuB;aAEhB,SAAS,EAAE,MAAM;aACjB,WAAW,EAAE,MAAM;aACnB,EAAE,EAAE,SAAS;aACb,OAAO,EAAE,eAAe;aACxB,eAAe,EAAE,GAAG,EAAE;aACtB,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;aAC/B,gBAAgB,EAAE,GAAG,EAAE;aACvB,UAAU,EAAE,GAAG,EAAE;aACjB,iBAAiB,EAAE,iBAAiB;IATtD,YACkB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,GAAG,EAAE,EACtB,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC/B,gBAAgB,EAAE,GAAG,EAAE,EACvB,UAAU,EAAE,GAAG,EAAE,EACjB,iBAAiB,EAAE,iBAAiB,EAClD;IAEJ,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,uBAAuB,CAexD;CACF;AAmHD;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,uBAAuB;IAC7D,OAAO,CAAC,SAAS,CAAoB;IAErC,YACE,WAAW,EAAE,yBAAyB,EACtC,kBAAkB,EAAE,wBAAwB,EAC5C,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,iBAAiB,EAiBrC;IAED;;OAEG;IACH,OAAoB,MAAM,CACxB,iBAAiB,EAAE,uBAAuB,EAC1C,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,kBAAkB,CAAC,CAI7B;IAED;;OAEG;IACU,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAUhE;IAED;;OAEG;IACU,uBAAuB,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;IAED;;;;OAIG;IACU,0BAA0B,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxF;IAED;;;OAGG;IACU,qBAAqB,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlE;IAED;;;OAGG;IACU,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhE;CACF"}