@aztec/simulator 3.0.0-devnet.5 → 3.0.0-devnet.6-patch.1

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 (314) hide show
  1. package/dest/client.d.ts +1 -1
  2. package/dest/common/errors.d.ts +2 -8
  3. package/dest/common/errors.d.ts.map +1 -1
  4. package/dest/common/index.d.ts +1 -1
  5. package/dest/common/stats/index.d.ts +1 -1
  6. package/dest/common/stats/stats.d.ts +1 -1
  7. package/dest/private/acvm/acvm.d.ts +1 -1
  8. package/dest/private/acvm/acvm_types.d.ts +1 -1
  9. package/dest/private/acvm/deserialize.d.ts +2 -2
  10. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  11. package/dest/private/acvm/deserialize.js +1 -1
  12. package/dest/private/acvm/index.d.ts +1 -1
  13. package/dest/private/acvm/serialize.d.ts +2 -2
  14. package/dest/private/acvm/serialize.d.ts.map +1 -1
  15. package/dest/private/acvm/serialize.js +1 -1
  16. package/dest/private/acvm_native.d.ts +1 -1
  17. package/dest/private/acvm_native.d.ts.map +1 -1
  18. package/dest/private/acvm_native.js +15 -13
  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 +1 -1
  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 +2 -2
  35. package/dest/public/avm/avm_context.d.ts.map +1 -1
  36. package/dest/public/avm/avm_contract_call_result.d.ts +2 -2
  37. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  38. package/dest/public/avm/avm_execution_environment.d.ts +5 -5
  39. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  40. package/dest/public/avm/avm_execution_environment.js +5 -8
  41. package/dest/public/avm/avm_gas.d.ts +2 -2
  42. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  43. package/dest/public/avm/avm_machine_state.d.ts +2 -2
  44. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  45. package/dest/public/avm/avm_memory_types.d.ts +14 -14
  46. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  47. package/dest/public/avm/avm_memory_types.js +1 -1
  48. package/dest/public/avm/avm_simulator.d.ts +4 -3
  49. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  50. package/dest/public/avm/avm_simulator.js +8 -7
  51. package/dest/public/avm/avm_simulator_interface.d.ts +1 -1
  52. package/dest/public/avm/errors.d.ts +8 -2
  53. package/dest/public/avm/errors.d.ts.map +1 -1
  54. package/dest/public/avm/errors.js +14 -2
  55. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +1 -1
  56. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  57. package/dest/public/avm/fixtures/avm_simulation_tester.js +12 -3
  58. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -2
  59. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  60. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +1 -1
  61. package/dest/public/avm/fixtures/initializers.d.ts +2 -3
  62. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
  63. package/dest/public/avm/fixtures/initializers.js +7 -5
  64. package/dest/public/avm/fixtures/utils.d.ts +4 -3
  65. package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
  66. package/dest/public/avm/fixtures/utils.js +3 -2
  67. package/dest/public/avm/index.d.ts +1 -1
  68. package/dest/public/avm/opcodes/accrued_substate.d.ts +1 -1
  69. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  70. package/dest/public/avm/opcodes/addressing_mode.d.ts +1 -1
  71. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  72. package/dest/public/avm/opcodes/addressing_mode.js +2 -2
  73. package/dest/public/avm/opcodes/arithmetic.d.ts +10 -8
  74. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  75. package/dest/public/avm/opcodes/arithmetic.js +11 -1
  76. package/dest/public/avm/opcodes/bitwise.d.ts +5 -5
  77. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  78. package/dest/public/avm/opcodes/comparators.d.ts +4 -4
  79. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  80. package/dest/public/avm/opcodes/contract.d.ts +1 -1
  81. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  82. package/dest/public/avm/opcodes/control_flow.d.ts +1 -1
  83. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  84. package/dest/public/avm/opcodes/conversion.d.ts +1 -1
  85. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  86. package/dest/public/avm/opcodes/ec_add.d.ts +2 -2
  87. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  88. package/dest/public/avm/opcodes/ec_add.js +3 -4
  89. package/dest/public/avm/opcodes/environment_getters.d.ts +1 -1
  90. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  91. package/dest/public/avm/opcodes/external_calls.d.ts +1 -1
  92. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  93. package/dest/public/avm/opcodes/external_calls.js +0 -1
  94. package/dest/public/avm/opcodes/hashing.d.ts +2 -2
  95. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  96. package/dest/public/avm/opcodes/hashing.js +3 -1
  97. package/dest/public/avm/opcodes/index.d.ts +1 -1
  98. package/dest/public/avm/opcodes/instruction.d.ts +2 -2
  99. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  100. package/dest/public/avm/opcodes/instruction_impl.d.ts +1 -1
  101. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  102. package/dest/public/avm/opcodes/memory.d.ts +2 -2
  103. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  104. package/dest/public/avm/opcodes/memory.js +1 -1
  105. package/dest/public/avm/opcodes/misc.d.ts +1 -1
  106. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  107. package/dest/public/avm/opcodes/misc.js +4 -4
  108. package/dest/public/avm/opcodes/storage.d.ts +3 -3
  109. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  110. package/dest/public/avm/revert_reason.d.ts +2 -2
  111. package/dest/public/avm/revert_reason.d.ts.map +1 -1
  112. package/dest/public/avm/revert_reason.js +3 -2
  113. package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -1
  114. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  115. package/dest/public/avm/serialization/bytecode_serialization.d.ts +1 -1
  116. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  117. package/dest/public/avm/serialization/bytecode_serialization.js +9 -6
  118. package/dest/public/avm/serialization/instruction_serialization.d.ts +1 -1
  119. package/dest/public/avm/serialization/instruction_serialization.js +1 -1
  120. package/dest/public/avm/test_utils.d.ts +2 -2
  121. package/dest/public/avm/test_utils.d.ts.map +1 -1
  122. package/dest/public/avm/test_utils.js +1 -1
  123. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  124. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  125. package/dest/public/contracts_db_checkpoint.js +30 -0
  126. package/dest/public/db_interfaces.d.ts +14 -2
  127. package/dest/public/db_interfaces.d.ts.map +1 -1
  128. package/dest/public/debug_fn_name.d.ts +15 -2
  129. package/dest/public/debug_fn_name.d.ts.map +1 -1
  130. package/dest/public/debug_fn_name.js +19 -0
  131. package/dest/public/executor_metrics.d.ts +3 -2
  132. package/dest/public/executor_metrics.d.ts.map +1 -1
  133. package/dest/public/executor_metrics.js +1 -1
  134. package/dest/public/executor_metrics_interface.d.ts +3 -2
  135. package/dest/public/executor_metrics_interface.d.ts.map +1 -1
  136. package/dest/public/fixtures/amm_test.d.ts +1 -1
  137. package/dest/public/fixtures/amm_test.js +2 -2
  138. package/dest/public/fixtures/bulk_test.d.ts +1 -1
  139. package/dest/public/fixtures/bulk_test.js +1 -1
  140. package/dest/public/fixtures/custom_bytecode_tester.d.ts +2 -2
  141. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  142. package/dest/public/fixtures/custom_bytecode_tests.d.ts +2 -1
  143. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  144. package/dest/public/fixtures/custom_bytecode_tests.js +21 -0
  145. package/dest/public/fixtures/index.d.ts +1 -1
  146. package/dest/public/fixtures/minimal_public_tx.d.ts +2 -3
  147. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
  148. package/dest/public/fixtures/minimal_public_tx.js +2 -2
  149. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +10 -5
  150. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  151. package/dest/public/fixtures/public_tx_simulation_tester.js +28 -14
  152. package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
  153. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  154. package/dest/public/fixtures/simple_contract_data_source.js +4 -4
  155. package/dest/public/fixtures/token_test.d.ts +6 -2
  156. package/dest/public/fixtures/token_test.d.ts.map +1 -1
  157. package/dest/public/fixtures/token_test.js +13 -12
  158. package/dest/public/fixtures/utils.d.ts +2 -2
  159. package/dest/public/fixtures/utils.d.ts.map +1 -1
  160. package/dest/public/fixtures/utils.js +4 -4
  161. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +46 -0
  162. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  163. package/dest/public/fuzzing/avm_fuzzer_simulator.js +136 -0
  164. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  165. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  166. package/dest/public/fuzzing/avm_simulator_bin.js +84 -0
  167. package/dest/public/hinting_db_sources.d.ts +13 -4
  168. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  169. package/dest/public/hinting_db_sources.js +66 -13
  170. package/dest/public/index.d.ts +3 -2
  171. package/dest/public/index.d.ts.map +1 -1
  172. package/dest/public/index.js +1 -1
  173. package/dest/public/public_db_sources.d.ts +22 -63
  174. package/dest/public/public_db_sources.d.ts.map +1 -1
  175. package/dest/public/public_db_sources.js +74 -131
  176. package/dest/public/public_errors.d.ts +1 -1
  177. package/dest/public/public_errors.d.ts.map +1 -1
  178. package/dest/public/public_processor/guarded_merkle_tree.d.ts +5 -4
  179. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  180. package/dest/public/public_processor/public_processor.d.ts +11 -18
  181. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  182. package/dest/public/public_processor/public_processor.js +37 -36
  183. package/dest/public/public_processor/public_processor_metrics.d.ts +1 -1
  184. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  185. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +18 -0
  186. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  187. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +94 -0
  188. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +19 -22
  189. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  190. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +54 -50
  191. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
  192. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
  193. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
  194. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
  195. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
  196. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +170 -0
  197. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +22 -0
  198. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
  199. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
  200. package/dest/public/public_tx_simulator/factories.d.ts +13 -0
  201. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  202. package/dest/public/public_tx_simulator/factories.js +28 -0
  203. package/dest/public/public_tx_simulator/index.d.ts +5 -1
  204. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  205. package/dest/public/public_tx_simulator/index.js +3 -0
  206. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +14 -7
  207. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
  208. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +5 -5
  209. package/dest/public/public_tx_simulator/public_tx_context.d.ts +6 -3
  210. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  211. package/dest/public/public_tx_simulator/public_tx_context.js +13 -5
  212. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +11 -31
  213. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  214. package/dest/public/public_tx_simulator/public_tx_simulator.js +109 -126
  215. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +2 -2
  216. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  217. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +4 -4
  218. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
  219. package/dest/public/side_effect_errors.d.ts +1 -1
  220. package/dest/public/side_effect_errors.d.ts.map +1 -1
  221. package/dest/public/side_effect_trace.d.ts +2 -3
  222. package/dest/public/side_effect_trace.d.ts.map +1 -1
  223. package/dest/public/side_effect_trace.js +1 -1
  224. package/dest/public/side_effect_trace_interface.d.ts +3 -4
  225. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  226. package/dest/public/state_manager/index.d.ts +1 -1
  227. package/dest/public/state_manager/nullifiers.d.ts +2 -2
  228. package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
  229. package/dest/public/state_manager/public_storage.d.ts +2 -2
  230. package/dest/public/state_manager/public_storage.d.ts.map +1 -1
  231. package/dest/public/state_manager/public_storage.js +1 -1
  232. package/dest/public/state_manager/state_manager.d.ts +9 -11
  233. package/dest/public/state_manager/state_manager.d.ts.map +1 -1
  234. package/dest/public/state_manager/state_manager.js +10 -6
  235. package/dest/public/test_executor_metrics.d.ts +4 -3
  236. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  237. package/dest/public/test_executor_metrics.js +5 -4
  238. package/dest/public/unique_class_ids.d.ts +1 -1
  239. package/dest/public/unique_class_ids.d.ts.map +1 -1
  240. package/dest/public/utils.d.ts +1 -1
  241. package/dest/server.d.ts +1 -1
  242. package/dest/testing.d.ts +1 -1
  243. package/package.json +21 -20
  244. package/src/common/errors.ts +1 -1
  245. package/src/private/acvm/deserialize.ts +1 -1
  246. package/src/private/acvm/serialize.ts +1 -1
  247. package/src/private/acvm_native.ts +17 -9
  248. package/src/private/circuit_recording/circuit_recorder.ts +1 -1
  249. package/src/public/avm/avm_context.ts +1 -1
  250. package/src/public/avm/avm_contract_call_result.ts +1 -1
  251. package/src/public/avm/avm_execution_environment.ts +4 -6
  252. package/src/public/avm/avm_gas.ts +3 -3
  253. package/src/public/avm/avm_machine_state.ts +1 -1
  254. package/src/public/avm/avm_memory_types.ts +1 -1
  255. package/src/public/avm/avm_simulator.ts +11 -9
  256. package/src/public/avm/errors.ts +17 -3
  257. package/src/public/avm/fixtures/avm_simulation_tester.ts +10 -2
  258. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +1 -1
  259. package/src/public/avm/fixtures/initializers.ts +8 -10
  260. package/src/public/avm/fixtures/utils.ts +3 -2
  261. package/src/public/avm/opcodes/addressing_mode.ts +2 -2
  262. package/src/public/avm/opcodes/arithmetic.ts +13 -1
  263. package/src/public/avm/opcodes/ec_add.ts +3 -4
  264. package/src/public/avm/opcodes/external_calls.ts +0 -1
  265. package/src/public/avm/opcodes/hashing.ts +3 -1
  266. package/src/public/avm/opcodes/memory.ts +1 -1
  267. package/src/public/avm/opcodes/misc.ts +4 -4
  268. package/src/public/avm/revert_reason.ts +6 -3
  269. package/src/public/avm/serialization/bytecode_serialization.ts +17 -6
  270. package/src/public/avm/serialization/instruction_serialization.ts +1 -1
  271. package/src/public/avm/test_utils.ts +1 -1
  272. package/src/public/contracts_db_checkpoint.ts +41 -0
  273. package/src/public/db_interfaces.ts +16 -1
  274. package/src/public/debug_fn_name.ts +26 -1
  275. package/src/public/executor_metrics.ts +2 -1
  276. package/src/public/executor_metrics_interface.ts +2 -1
  277. package/src/public/fixtures/amm_test.ts +2 -2
  278. package/src/public/fixtures/bulk_test.ts +1 -1
  279. package/src/public/fixtures/custom_bytecode_tester.ts +1 -1
  280. package/src/public/fixtures/custom_bytecode_tests.ts +24 -0
  281. package/src/public/fixtures/minimal_public_tx.ts +3 -4
  282. package/src/public/fixtures/public_tx_simulation_tester.ts +47 -16
  283. package/src/public/fixtures/simple_contract_data_source.ts +8 -9
  284. package/src/public/fixtures/token_test.ts +18 -10
  285. package/src/public/fixtures/utils.ts +4 -4
  286. package/src/public/fuzzing/avm_fuzzer_simulator.ts +233 -0
  287. package/src/public/fuzzing/avm_simulator_bin.ts +121 -0
  288. package/src/public/hinting_db_sources.ts +108 -10
  289. package/src/public/index.ts +6 -4
  290. package/src/public/public_db_sources.ts +93 -172
  291. package/src/public/public_processor/guarded_merkle_tree.ts +4 -3
  292. package/src/public/public_processor/public_processor.ts +63 -48
  293. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +116 -0
  294. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +84 -57
  295. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +132 -0
  296. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +236 -0
  297. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +81 -0
  298. package/src/public/public_tx_simulator/factories.ts +41 -0
  299. package/src/public/public_tx_simulator/index.ts +4 -0
  300. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +10 -14
  301. package/src/public/public_tx_simulator/public_tx_context.ts +9 -3
  302. package/src/public/public_tx_simulator/public_tx_simulator.ts +161 -193
  303. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +1 -2
  304. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +3 -3
  305. package/src/public/side_effect_trace.ts +1 -1
  306. package/src/public/side_effect_trace_interface.ts +1 -1
  307. package/src/public/state_manager/nullifiers.ts +1 -1
  308. package/src/public/state_manager/public_storage.ts +1 -1
  309. package/src/public/state_manager/state_manager.ts +14 -14
  310. package/src/public/test_executor_metrics.ts +7 -5
  311. package/dest/public/tx_contract_cache.d.ts +0 -41
  312. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  313. package/dest/public/tx_contract_cache.js +0 -49
  314. package/src/public/tx_contract_cache.ts +0 -69
@@ -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) {
@@ -113,6 +127,6 @@ export function defaultGlobals() {
113
127
  const globals = GlobalVariables.empty();
114
128
  globals.timestamp = DEFAULT_TIMESTAMP;
115
129
  globals.gasFees = DEFAULT_GAS_FEES; // apply some nonzero default gas fees
116
- globals.blockNumber = DEFAULT_BLOCK_NUMBER;
130
+ globals.blockNumber = BlockNumber(DEFAULT_BLOCK_NUMBER);
117
131
  return globals;
118
132
  }
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZml4dHVyZXMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFBRSxHQUFHLEVBQXdCLE1BQU0sbUJBQW1CLENBQUM7QUFVOUQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxPQUFPLEVBRUwsZUFBZSxFQUVmLDZCQUE2QixFQUM3QixFQUFFLEVBR0gsTUFBTSxrQkFBa0IsQ0FBQztBQUkxQixNQUFNLE1BQU0scUJBQXFCLEdBQUc7SUFDbEMsVUFBVSxDQUFDLEVBQUU7UUFDWCxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNsQixVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNsQixVQUFVLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0tBQ3BDLENBQUM7SUFDRixhQUFhLENBQUMsRUFBRTtRQUNkLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLENBQUM7S0FDcEMsQ0FBQztDQUNILENBQUM7QUFFRjs7R0FFRztBQUNILHdCQUFzQixzQkFBc0IsQ0FDMUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQ3hDLGlCQUFpQixFQUFFLDZCQUE2QixFQUFFLEVBQ2xELGVBQWUsRUFBRSw2QkFBNkIsRUFBRSxFQUNoRCxtQkFBbUIsQ0FBQyxFQUFFLDZCQUE2QixFQUNuRCxRQUFRLGVBQXNCLEVBQzlCLGdCQUFnQixHQUFFLEdBQWlCLEVBQ25DLE9BQU8sR0FBRSxlQUF5QyxHQUNqRCxPQUFPLENBQUMsRUFBRSxDQUFDLENBK0ZiO0FBRUQsd0JBQXNCLHNCQUFzQixDQUMxQyxRQUFRLGVBQXNCLEVBQzlCLGdCQUFnQixHQUFFLEdBQXFCLEdBQ3RDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0EwQmI7QUFFRCx3QkFBc0IsdUJBQXVCLENBQzNDLEVBQUUsRUFBRSxFQUFFLEVBQ04sYUFBYSxFQUFFLG1CQUFtQixFQUNsQyxzQkFBc0IsVUFBUSxpQkE2Qi9CO0FBRUQsd0JBQXNCLDBCQUEwQixDQUM5QyxFQUFFLEVBQUUsRUFBRSxFQUNOLGdCQUFnQixFQUFFLDJCQUEyQixFQUM3QyxzQkFBc0IsVUFBUSxpQkEwQy9CIn0=
@@ -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,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,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';
@@ -8,7 +8,7 @@ import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
8
8
  import { siloNullifier } from '@aztec/stdlib/hash';
9
9
  import { LogHash, PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, countAccumulatedItems } from '@aztec/stdlib/kernel';
10
10
  import { ContractClassLogFields, PrivateLog } from '@aztec/stdlib/logs';
11
- import { ClientIvcProof } from '@aztec/stdlib/proofs';
11
+ import { ChonkProof } from '@aztec/stdlib/proofs';
12
12
  import { BlockHeader, GlobalVariables, HashedValues, Tx, TxConstantData, TxContext } from '@aztec/stdlib/tx';
13
13
  import { strict as assert } from 'assert';
14
14
  /**
@@ -86,7 +86,7 @@ import { strict as assert } from 'assert';
86
86
  ].map((r)=>new HashedValues(r.calldata, r.request.calldataHash));
87
87
  return await Tx.create({
88
88
  data: txData,
89
- clientIvcProof: ClientIvcProof.random(),
89
+ chonkProof: ChonkProof.random(),
90
90
  contractClassLogFields: [],
91
91
  publicFunctionCalldata: calldata
92
92
  });
@@ -103,7 +103,7 @@ export async function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gas
103
103
  const txData = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ gasUsedByPrivate, feePayer, includeByTimestamp, /*forPublic=*/ undefined, forRollup);
104
104
  return await Tx.create({
105
105
  data: txData,
106
- clientIvcProof: ClientIvcProof.empty(),
106
+ chonkProof: ChonkProof.empty(),
107
107
  contractClassLogFields: [],
108
108
  publicFunctionCalldata: []
109
109
  });
@@ -0,0 +1,46 @@
1
+ import { AvmTxHint, type PublicTxResult } from '@aztec/stdlib/avm';
2
+ import type { MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
3
+ import { GlobalVariables } 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
+ constructor(wsDataDir: string, wsMapSizeKb: number, tx: AvmTxHint, globals: GlobalVariables, contractClasses: any[], contractInstances: [any, any][]);
19
+ static fromPlainObject(obj: any): FuzzerSimulationRequest;
20
+ }
21
+ /**
22
+ * A simulator class for the AVM fuzzer that extends BaseAvmSimulationTester.
23
+ * It provides methods for registering contracts from C++ msgpack data and simulating transactions.
24
+ */
25
+ export declare class AvmFuzzerSimulator extends BaseAvmSimulationTester {
26
+ private simulator;
27
+ constructor(merkleTrees: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource, globals: GlobalVariables);
28
+ /**
29
+ * Static factory method to create an AvmFuzzerSimulator.
30
+ */
31
+ static create(worldStateService: NativeWorldStateService, globals: GlobalVariables): Promise<AvmFuzzerSimulator>;
32
+ /**
33
+ * Simulate a transaction from a C++ AvmTxHint.
34
+ */
35
+ simulate(txHint: AvmTxHint): Promise<PublicTxResult>;
36
+ /**
37
+ * Add a contract class from C++ raw msgpack data.
38
+ */
39
+ addContractClassFromCpp(rawClass: any): Promise<void>;
40
+ /**
41
+ * Add a contract instance from C++ raw msgpack data.
42
+ * This also inserts the contract address nullifier into the nullifier tree.
43
+ */
44
+ addContractInstanceFromCpp(rawAddress: any, rawInstance: any): Promise<void>;
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2Z1enplcl9zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZnV6emluZy9hdm1fZnV6emVyX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFZbkUsT0FBTyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEVBQWUsZUFBZSxFQUF1RCxNQUFNLGtCQUFrQixDQUFDO0FBQ3JILE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFJdEY7OztHQUdHO0FBQ0gscUJBQWEsdUJBQXVCO2FBRWhCLFNBQVMsRUFBRSxNQUFNO2FBQ2pCLFdBQVcsRUFBRSxNQUFNO2FBQ25CLEVBQUUsRUFBRSxTQUFTO2FBQ2IsT0FBTyxFQUFFLGVBQWU7YUFDeEIsZUFBZSxFQUFFLEdBQUcsRUFBRTthQUN0QixpQkFBaUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtJQU5qRCxZQUNrQixTQUFTLEVBQUUsTUFBTSxFQUNqQixXQUFXLEVBQUUsTUFBTSxFQUNuQixFQUFFLEVBQUUsU0FBUyxFQUNiLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLGVBQWUsRUFBRSxHQUFHLEVBQUUsRUFDdEIsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFDN0M7SUFFSixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsdUJBQXVCLENBWXhEO0NBQ0Y7QUFtSEQ7OztHQUdHO0FBQ0gscUJBQWEsa0JBQW1CLFNBQVEsdUJBQXVCO0lBQzdELE9BQU8sQ0FBQyxTQUFTLENBQW9CO0lBRXJDLFlBQ0UsV0FBVyxFQUFFLHlCQUF5QixFQUN0QyxrQkFBa0IsRUFBRSx3QkFBd0IsRUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFXekI7SUFFRDs7T0FFRztJQUNILE9BQW9CLE1BQU0sQ0FDeEIsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQzFDLE9BQU8sRUFBRSxlQUFlLEdBQ3ZCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUk3QjtJQUVEOztPQUVHO0lBQ1UsUUFBUSxDQUFDLE1BQU0sRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUdoRTtJQUVEOztPQUVHO0lBQ1UsdUJBQXVCLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBR2pFO0lBRUQ7OztPQUdHO0lBQ1UsMEJBQTBCLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FJeEY7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avm_fuzzer_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/fuzzing/avm_fuzzer_simulator.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAe,eAAe,EAAuD,MAAM,kBAAkB,CAAC;AACrH,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;IANjD,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,EAC7C;IAEJ,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,uBAAuB,CAYxD;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,EAWzB;IAED;;OAEG;IACH,OAAoB,MAAM,CACxB,iBAAiB,EAAE,uBAAuB,EAC1C,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAI7B;IAED;;OAEG;IACU,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAGhE;IAED;;OAEG;IACU,uBAAuB,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;IAED;;;OAGG;IACU,0BAA0B,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxF;CACF"}
@@ -0,0 +1,136 @@
1
+ import { MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX } from '@aztec/constants';
2
+ import { padArrayEnd } from '@aztec/foundation/collection';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
+ import { AvmTxHint } from '@aztec/stdlib/avm';
5
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
6
+ import { contractClassPublicFromPlainObject, contractInstanceWithAddressFromPlainObject } from '@aztec/stdlib/contract';
7
+ import { PartialPrivateTailPublicInputsForPublic, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PublicCallRequest } from '@aztec/stdlib/kernel';
8
+ import { PrivateLog } from '@aztec/stdlib/logs';
9
+ import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
10
+ import { ChonkProof } from '@aztec/stdlib/proofs';
11
+ import { BlockHeader, GlobalVariables, HashedValues, Tx, TxConstantData, TxContext, TxHash } from '@aztec/stdlib/tx';
12
+ import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
13
+ import { SimpleContractDataSource } from '../fixtures/simple_contract_data_source.js';
14
+ import { PublicContractsDB } from '../public_db_sources.js';
15
+ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
16
+ /**
17
+ * Request structure for fuzzer simulation communication from C++.
18
+ * Matches the C++ FuzzerSimulationRequest struct
19
+ */ export class FuzzerSimulationRequest {
20
+ wsDataDir;
21
+ wsMapSizeKb;
22
+ tx;
23
+ globals;
24
+ contractClasses;
25
+ contractInstances;
26
+ constructor(wsDataDir, wsMapSizeKb, tx, globals, contractClasses, contractInstances){
27
+ this.wsDataDir = wsDataDir;
28
+ this.wsMapSizeKb = wsMapSizeKb;
29
+ this.tx = tx;
30
+ this.globals = globals;
31
+ this.contractClasses = contractClasses;
32
+ this.contractInstances = contractInstances;
33
+ }
34
+ static fromPlainObject(obj) {
35
+ if (obj instanceof FuzzerSimulationRequest) {
36
+ return obj;
37
+ }
38
+ return new FuzzerSimulationRequest(obj.wsDataDir, obj.wsMapSizeKb, AvmTxHint.fromPlainObject(obj.tx), GlobalVariables.fromPlainObject(obj.globals), obj.contractClasses, obj.contractInstances);
39
+ }
40
+ }
41
+ /**
42
+ * Creates a TypeScript Tx object from a deserialized C++ Tx (AvmTxHint-like structure).
43
+ * This allows using PublicTxSimulator.simulate() with fuzzer-generated transactions.
44
+ */ async function createTxFromHint(cppTx) {
45
+ // Create TxHash from the C++ tx hash string
46
+ if (!cppTx.hash) {
47
+ throw new Error(`cppTx.hash is undefined. Keys: ${Object.keys(cppTx || {}).join(', ')}`);
48
+ }
49
+ const txHash = TxHash.fromString(cppTx.hash);
50
+ // Extract PublicCallRequest instances from enqueued calls
51
+ const setupCallRequests = cppTx.setupEnqueuedCalls.map((call)=>call.request);
52
+ const paddedSetupCalls = padArrayEnd(setupCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX);
53
+ const appLogicCallRequests = cppTx.appLogicEnqueuedCalls.map((call)=>call.request);
54
+ const paddedAppLogicCalls = padArrayEnd(appLogicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX);
55
+ // Build non-revertible accumulated data from C++ tx
56
+ const emptyNonRevertible = PrivateToPublicAccumulatedData.empty();
57
+ const nonRevertibleAccumulatedData = new PrivateToPublicAccumulatedData(padArrayEnd(cppTx.nonRevertibleAccumulatedData.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(cppTx.nonRevertibleAccumulatedData.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(cppTx.nonRevertibleAccumulatedData.l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(cppTx.nonRevertibleContractDeploymentData.privateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), emptyNonRevertible.contractClassLogsHashes, paddedSetupCalls);
58
+ // Build revertible accumulated data from C++ tx
59
+ const emptyRevertible = PrivateToPublicAccumulatedData.empty();
60
+ const revertibleAccumulatedData = new PrivateToPublicAccumulatedData(padArrayEnd(cppTx.revertibleAccumulatedData.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(cppTx.revertibleAccumulatedData.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(cppTx.revertibleAccumulatedData.l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(cppTx.revertibleContractDeploymentData.privateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), emptyRevertible.contractClassLogsHashes, paddedAppLogicCalls);
61
+ // Build teardown call request (if exists)
62
+ const teardownCallRequest = cppTx.teardownEnqueuedCall?.request ?? PublicCallRequest.empty();
63
+ // Create forPublic structure
64
+ const forPublic = new PartialPrivateTailPublicInputsForPublic(nonRevertibleAccumulatedData, revertibleAccumulatedData, teardownCallRequest);
65
+ // Build TxContext - gasSettings is already a proper GasSettings after AvmTxHint.fromPlainObject
66
+ const txContext = new TxContext(Fr.ZERO, Fr.ZERO, cppTx.gasSettings);
67
+ // Build TxConstantData
68
+ const constants = new TxConstantData(BlockHeader.empty(), txContext, Fr.ZERO, Fr.ZERO);
69
+ const data = new PrivateKernelTailCircuitPublicInputs(constants, cppTx.gasUsedByPrivate, cppTx.feePayer, 0n, forPublic, undefined);
70
+ // Build publicFunctionCalldata from all enqueued calls
71
+ // Calldata is already Fr[] after AvmTxHint.fromPlainObject
72
+ const publicFunctionCalldata = [];
73
+ // Add setup calls
74
+ for (const call of cppTx.setupEnqueuedCalls || []){
75
+ publicFunctionCalldata.push(await HashedValues.fromCalldata(call.calldata));
76
+ }
77
+ // Add app logic calls
78
+ for (const call of cppTx.appLogicEnqueuedCalls || []){
79
+ publicFunctionCalldata.push(await HashedValues.fromCalldata(call.calldata));
80
+ }
81
+ // Add teardown call if present
82
+ if (cppTx.teardownEnqueuedCall) {
83
+ publicFunctionCalldata.push(await HashedValues.fromCalldata(cppTx.teardownEnqueuedCall.calldata));
84
+ }
85
+ // Extract contract class log fields from ContractDeploymentData
86
+ const contractClassLogFields = [
87
+ ...cppTx.nonRevertibleContractDeploymentData.contractClassLogs.map((log)=>log.fields),
88
+ ...cppTx.revertibleContractDeploymentData.contractClassLogs.map((log)=>log.fields)
89
+ ];
90
+ // Create the Tx
91
+ return new Tx(txHash, data, ChonkProof.empty(), contractClassLogFields, publicFunctionCalldata);
92
+ }
93
+ /**
94
+ * A simulator class for the AVM fuzzer that extends BaseAvmSimulationTester.
95
+ * It provides methods for registering contracts from C++ msgpack data and simulating transactions.
96
+ */ export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
97
+ simulator;
98
+ constructor(merkleTrees, contractDataSource, globals){
99
+ super(contractDataSource, merkleTrees);
100
+ const contractsDb = new PublicContractsDB(contractDataSource);
101
+ this.simulator = new PublicTxSimulator(merkleTrees, contractsDb, globals, {
102
+ skipFeeEnforcement: true,
103
+ collectDebugLogs: false,
104
+ collectHints: false,
105
+ collectStatistics: false,
106
+ collectCallMetadata: false
107
+ });
108
+ }
109
+ /**
110
+ * Static factory method to create an AvmFuzzerSimulator.
111
+ */ static async create(worldStateService, globals) {
112
+ const contractDataSource = new SimpleContractDataSource();
113
+ const merkleTrees = await worldStateService.fork();
114
+ return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals);
115
+ }
116
+ /**
117
+ * Simulate a transaction from a C++ AvmTxHint.
118
+ */ async simulate(txHint) {
119
+ const tx = await createTxFromHint(txHint);
120
+ return await this.simulator.simulate(tx);
121
+ }
122
+ /**
123
+ * Add a contract class from C++ raw msgpack data.
124
+ */ async addContractClassFromCpp(rawClass) {
125
+ const contractClass = contractClassPublicFromPlainObject(rawClass);
126
+ await this.contractDataSource.addContractClass(contractClass);
127
+ }
128
+ /**
129
+ * Add a contract instance from C++ raw msgpack data.
130
+ * This also inserts the contract address nullifier into the nullifier tree.
131
+ */ async addContractInstanceFromCpp(rawAddress, rawInstance) {
132
+ const address = AztecAddress.fromPlainObject(rawAddress);
133
+ const instance = contractInstanceWithAddressFromPlainObject(address, rawInstance);
134
+ await this.addContractInstance(instance);
135
+ }
136
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRvcl9iaW4uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZnV6emluZy9hdm1fc2ltdWxhdG9yX2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avm_simulator_bin.d.ts","sourceRoot":"","sources":["../../../src/public/fuzzing/avm_simulator_bin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,84 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { deserializeFromMessagePack, serializeWithMessagePack } from '@aztec/stdlib/avm';
3
+ import { TreeSnapshots } from '@aztec/stdlib/tx';
4
+ import { NativeWorldStateService } from '@aztec/world-state';
5
+ import { writeSync } from 'fs';
6
+ import { createInterface } from 'readline';
7
+ import { AvmFuzzerSimulator, FuzzerSimulationRequest } from './avm_fuzzer_simulator.js';
8
+ // This cache holds opened world states to avoid reopening them for each invocation.
9
+ // It's a map so that in the future we could support multiple world states (if we had multiple fuzzers).
10
+ const worldStateCache = new Map();
11
+ async function openExistingWorldState(dataDir, mapSizeKb) {
12
+ const cached = worldStateCache.get(dataDir);
13
+ if (cached) {
14
+ return cached;
15
+ }
16
+ const ws = await NativeWorldStateService.new(EthAddress.ZERO, dataDir, {
17
+ archiveTreeMapSizeKb: mapSizeKb,
18
+ nullifierTreeMapSizeKb: mapSizeKb,
19
+ noteHashTreeMapSizeKb: mapSizeKb,
20
+ messageTreeMapSizeKb: mapSizeKb,
21
+ publicDataTreeMapSizeKb: mapSizeKb
22
+ });
23
+ worldStateCache.set(dataDir, ws);
24
+ return ws;
25
+ }
26
+ async function simulateWithFuzzer(dataDir, mapSizeKb, txHint, globals, rawContractClasses, rawContractInstances) {
27
+ const worldStateService = await openExistingWorldState(dataDir, mapSizeKb);
28
+ const simulator = await AvmFuzzerSimulator.create(worldStateService, globals);
29
+ // Register contract classes from C++
30
+ for (const rawClass of rawContractClasses){
31
+ await simulator.addContractClassFromCpp(rawClass);
32
+ }
33
+ // Register contract instances from C++
34
+ for (const [rawAddress, rawInstance] of rawContractInstances){
35
+ await simulator.addContractInstanceFromCpp(rawAddress, rawInstance);
36
+ }
37
+ const result = await simulator.simulate(txHint);
38
+ const output = result.getAppLogicReturnValues().flatMap((rv)=>rv?.values?.filter((v)=>v != null) ?? []);
39
+ return {
40
+ reverted: !result.revertCode.isOK(),
41
+ output,
42
+ revertReason: result.findRevertReason()?.message,
43
+ publicInputs: result.publicInputs
44
+ };
45
+ }
46
+ async function execute(base64Line) {
47
+ try {
48
+ // Decode base64 and deserialize the entire request from msgpack
49
+ const buffer = Buffer.from(base64Line.trim(), 'base64');
50
+ const rawRequest = deserializeFromMessagePack(buffer);
51
+ const request = FuzzerSimulationRequest.fromPlainObject(rawRequest);
52
+ // Run the TS simulation
53
+ const result = await simulateWithFuzzer(request.wsDataDir, request.wsMapSizeKb, request.tx, request.globals, request.contractClasses, request.contractInstances);
54
+ // Serialize the result to msgpack and encode it in base64 for output
55
+ const resultBuffer = serializeWithMessagePack({
56
+ reverted: result.reverted,
57
+ output: result.output,
58
+ revertReason: result.revertReason ?? '',
59
+ endTreeSnapshots: result.publicInputs.endTreeSnapshots
60
+ });
61
+ writeSync(process.stdout.fd, resultBuffer.toString('base64') + '\n');
62
+ } catch (error) {
63
+ const errorResult = serializeWithMessagePack({
64
+ reverted: true,
65
+ output: [],
66
+ revertReason: `Unexpected Error ${error.message}`,
67
+ endTreeSnapshots: TreeSnapshots.empty()
68
+ });
69
+ writeSync(process.stdout.fd, errorResult.toString('base64') + '\n');
70
+ }
71
+ }
72
+ function mainLoop() {
73
+ const rl = createInterface({
74
+ input: process.stdin,
75
+ terminal: false
76
+ });
77
+ rl.on('line', (line)=>{
78
+ if (line.trim()) {
79
+ void execute(line);
80
+ }
81
+ });
82
+ rl.on('close', ()=>process.exit(0));
83
+ }
84
+ mainLoop();