@aztec/simulator 0.0.1-commit.24de95ac → 0.0.1-commit.2606882

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 (371) hide show
  1. package/README.md +6 -4
  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 +4 -2
  9. package/dest/private/acvm/acvm.d.ts.map +1 -1
  10. package/dest/private/acvm/acvm.js +4 -3
  11. package/dest/private/acvm/acvm_types.d.ts +1 -1
  12. package/dest/private/acvm/deserialize.d.ts +2 -2
  13. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  14. package/dest/private/acvm/deserialize.js +1 -1
  15. package/dest/private/acvm/index.d.ts +1 -1
  16. package/dest/private/acvm/serialize.d.ts +2 -2
  17. package/dest/private/acvm/serialize.d.ts.map +1 -1
  18. package/dest/private/acvm/serialize.js +1 -1
  19. package/dest/private/acvm_native.d.ts +5 -3
  20. package/dest/private/acvm_native.d.ts.map +1 -1
  21. package/dest/private/acvm_native.js +8 -6
  22. package/dest/private/acvm_wasm.d.ts +4 -3
  23. package/dest/private/acvm_wasm.d.ts.map +1 -1
  24. package/dest/private/acvm_wasm.js +7 -5
  25. package/dest/private/acvm_wasm_with_blobs.d.ts +1 -1
  26. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -1
  27. package/dest/private/circuit_recording/circuit_recorder.d.ts +4 -3
  28. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  29. package/dest/private/circuit_recording/circuit_recorder.js +23 -20
  30. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +3 -2
  31. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  32. package/dest/private/circuit_recording/file_circuit_recorder.js +2 -2
  33. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
  34. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
  35. package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
  36. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  37. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  38. package/dest/private/circuit_simulator.d.ts +1 -1
  39. package/dest/private/factory.d.ts +3 -3
  40. package/dest/private/factory.d.ts.map +1 -1
  41. package/dest/private/factory.js +7 -4
  42. package/dest/public/avm/avm_context.d.ts +3 -3
  43. package/dest/public/avm/avm_context.d.ts.map +1 -1
  44. package/dest/public/avm/avm_contract_call_result.d.ts +6 -6
  45. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  46. package/dest/public/avm/avm_contract_call_result.js +3 -3
  47. package/dest/public/avm/avm_execution_environment.d.ts +9 -8
  48. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  49. package/dest/public/avm/avm_execution_environment.js +5 -8
  50. package/dest/public/avm/avm_gas.d.ts +2 -2
  51. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  52. package/dest/public/avm/avm_gas.js +3 -3
  53. package/dest/public/avm/avm_machine_state.d.ts +7 -6
  54. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  55. package/dest/public/avm/avm_machine_state.js +3 -2
  56. package/dest/public/avm/avm_memory_types.d.ts +14 -14
  57. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  58. package/dest/public/avm/avm_memory_types.js +4 -1
  59. package/dest/public/avm/avm_simulator.d.ts +5 -3
  60. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  61. package/dest/public/avm/avm_simulator.js +14 -12
  62. package/dest/public/avm/avm_simulator_interface.d.ts +1 -1
  63. package/dest/public/avm/calldata.d.ts +51 -0
  64. package/dest/public/avm/calldata.d.ts.map +1 -0
  65. package/dest/public/avm/calldata.js +64 -0
  66. package/dest/public/avm/errors.d.ts +8 -2
  67. package/dest/public/avm/errors.d.ts.map +1 -1
  68. package/dest/public/avm/errors.js +14 -2
  69. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +2 -0
  70. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +1 -0
  71. package/dest/public/avm/fixtures/account_proof_fetcher.js +152 -0
  72. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +1 -1
  73. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  74. package/dest/public/avm/fixtures/avm_simulation_tester.js +15 -5
  75. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +3 -2
  76. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  77. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +18 -3
  78. package/dest/public/avm/fixtures/initializers.d.ts +2 -3
  79. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
  80. package/dest/public/avm/fixtures/initializers.js +8 -5
  81. package/dest/public/avm/fixtures/utils.d.ts +4 -3
  82. package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
  83. package/dest/public/avm/fixtures/utils.js +6 -2
  84. package/dest/public/avm/index.d.ts +1 -1
  85. package/dest/public/avm/opcodes/accrued_substate.d.ts +17 -18
  86. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  87. package/dest/public/avm/opcodes/accrued_substate.js +42 -43
  88. package/dest/public/avm/opcodes/addressing_mode.d.ts +1 -1
  89. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  90. package/dest/public/avm/opcodes/addressing_mode.js +2 -2
  91. package/dest/public/avm/opcodes/arithmetic.d.ts +3 -1
  92. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  93. package/dest/public/avm/opcodes/arithmetic.js +12 -2
  94. package/dest/public/avm/opcodes/bitwise.d.ts +3 -3
  95. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  96. package/dest/public/avm/opcodes/bitwise.js +5 -5
  97. package/dest/public/avm/opcodes/comparators.d.ts +1 -1
  98. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  99. package/dest/public/avm/opcodes/comparators.js +1 -1
  100. package/dest/public/avm/opcodes/contract.d.ts +5 -4
  101. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  102. package/dest/public/avm/opcodes/contract.js +13 -9
  103. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  104. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  105. package/dest/public/avm/opcodes/control_flow.js +4 -4
  106. package/dest/public/avm/opcodes/conversion.d.ts +3 -3
  107. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  108. package/dest/public/avm/opcodes/conversion.js +4 -4
  109. package/dest/public/avm/opcodes/ec_add.d.ts +3 -5
  110. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  111. package/dest/public/avm/opcodes/ec_add.js +24 -29
  112. package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
  113. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  114. package/dest/public/avm/opcodes/environment_getters.js +6 -6
  115. package/dest/public/avm/opcodes/external_calls.d.ts +9 -9
  116. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  117. package/dest/public/avm/opcodes/external_calls.js +23 -22
  118. package/dest/public/avm/opcodes/hashing.d.ts +7 -7
  119. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  120. package/dest/public/avm/opcodes/hashing.js +21 -16
  121. package/dest/public/avm/opcodes/index.d.ts +1 -1
  122. package/dest/public/avm/opcodes/instruction.d.ts +2 -2
  123. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  124. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  125. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  126. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  127. package/dest/public/avm/opcodes/memory.d.ts +13 -13
  128. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  129. package/dest/public/avm/opcodes/memory.js +26 -26
  130. package/dest/public/avm/opcodes/misc.d.ts +3 -3
  131. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  132. package/dest/public/avm/opcodes/misc.js +8 -8
  133. package/dest/public/avm/opcodes/storage.d.ts +14 -13
  134. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  135. package/dest/public/avm/opcodes/storage.js +34 -24
  136. package/dest/public/avm/revert_reason.d.ts +2 -2
  137. package/dest/public/avm/revert_reason.d.ts.map +1 -1
  138. package/dest/public/avm/revert_reason.js +3 -2
  139. package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -1
  140. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  141. package/dest/public/avm/serialization/bytecode_serialization.d.ts +1 -1
  142. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  143. package/dest/public/avm/serialization/bytecode_serialization.js +12 -9
  144. package/dest/public/avm/serialization/instruction_serialization.d.ts +2 -2
  145. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  146. package/dest/public/avm/serialization/instruction_serialization.js +2 -2
  147. package/dest/public/avm/test_utils.d.ts +2 -2
  148. package/dest/public/avm/test_utils.d.ts.map +1 -1
  149. package/dest/public/avm/test_utils.js +1 -1
  150. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  151. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  152. package/dest/public/contracts_db_checkpoint.js +30 -0
  153. package/dest/public/db_interfaces.d.ts +14 -2
  154. package/dest/public/db_interfaces.d.ts.map +1 -1
  155. package/dest/public/debug_fn_name.d.ts +16 -3
  156. package/dest/public/debug_fn_name.d.ts.map +1 -1
  157. package/dest/public/debug_fn_name.js +31 -3
  158. package/dest/public/executor_metrics.d.ts +3 -2
  159. package/dest/public/executor_metrics.d.ts.map +1 -1
  160. package/dest/public/executor_metrics.js +13 -34
  161. package/dest/public/executor_metrics_interface.d.ts +3 -2
  162. package/dest/public/executor_metrics_interface.d.ts.map +1 -1
  163. package/dest/public/fixtures/amm_test.d.ts +1 -1
  164. package/dest/public/fixtures/amm_test.js +4 -4
  165. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  166. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  167. package/dest/public/fixtures/bulk_test.js +36 -73
  168. package/dest/public/fixtures/custom_bytecode_tester.d.ts +29 -7
  169. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  170. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  171. package/dest/public/fixtures/custom_bytecode_tests.d.ts +13 -8
  172. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  173. package/dest/public/fixtures/custom_bytecode_tests.js +143 -18
  174. package/dest/public/fixtures/index.d.ts +4 -2
  175. package/dest/public/fixtures/index.d.ts.map +1 -1
  176. package/dest/public/fixtures/index.js +3 -1
  177. package/dest/public/fixtures/minimal_public_tx.d.ts +2 -8
  178. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
  179. package/dest/public/fixtures/minimal_public_tx.js +6 -16
  180. package/dest/public/fixtures/opcode_spammer.d.ts +122 -0
  181. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
  182. package/dest/public/fixtures/opcode_spammer.js +1645 -0
  183. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +29 -10
  184. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  185. package/dest/public/fixtures/public_tx_simulation_tester.js +97 -29
  186. package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
  187. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  188. package/dest/public/fixtures/simple_contract_data_source.js +4 -4
  189. package/dest/public/fixtures/token_test.d.ts +6 -2
  190. package/dest/public/fixtures/token_test.d.ts.map +1 -1
  191. package/dest/public/fixtures/token_test.js +13 -12
  192. package/dest/public/fixtures/utils.d.ts +3 -3
  193. package/dest/public/fixtures/utils.d.ts.map +1 -1
  194. package/dest/public/fixtures/utils.js +23 -23
  195. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
  196. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  197. package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
  198. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  199. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  200. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  201. package/dest/public/hinting_db_sources.d.ts +17 -7
  202. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  203. package/dest/public/hinting_db_sources.js +77 -18
  204. package/dest/public/index.d.ts +3 -2
  205. package/dest/public/index.d.ts.map +1 -1
  206. package/dest/public/index.js +1 -1
  207. package/dest/public/public_db_sources.d.ts +29 -66
  208. package/dest/public/public_db_sources.d.ts.map +1 -1
  209. package/dest/public/public_db_sources.js +83 -134
  210. package/dest/public/public_errors.d.ts +1 -1
  211. package/dest/public/public_errors.d.ts.map +1 -1
  212. package/dest/public/public_processor/guarded_merkle_tree.d.ts +9 -7
  213. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  214. package/dest/public/public_processor/guarded_merkle_tree.js +9 -4
  215. package/dest/public/public_processor/public_processor.d.ts +19 -21
  216. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  217. package/dest/public/public_processor/public_processor.js +554 -124
  218. package/dest/public/public_processor/public_processor_metrics.d.ts +5 -2
  219. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  220. package/dest/public/public_processor/public_processor_metrics.js +36 -45
  221. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +19 -0
  222. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  223. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +99 -0
  224. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +35 -23
  225. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  226. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +95 -53
  227. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
  228. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
  229. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
  230. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
  231. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
  232. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +171 -0
  233. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +23 -0
  234. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
  235. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
  236. package/dest/public/public_tx_simulator/factories.d.ts +14 -0
  237. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  238. package/dest/public/public_tx_simulator/factories.js +28 -0
  239. package/dest/public/public_tx_simulator/index.d.ts +5 -1
  240. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  241. package/dest/public/public_tx_simulator/index.js +3 -0
  242. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +14 -7
  243. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
  244. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +5 -5
  245. package/dest/public/public_tx_simulator/public_tx_context.d.ts +14 -6
  246. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  247. package/dest/public/public_tx_simulator/public_tx_context.js +25 -19
  248. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +20 -34
  249. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  250. package/dest/public/public_tx_simulator/public_tx_simulator.js +127 -134
  251. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +25 -2
  252. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  253. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +4 -4
  254. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
  255. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +395 -19
  256. package/dest/public/side_effect_errors.d.ts +1 -1
  257. package/dest/public/side_effect_errors.d.ts.map +1 -1
  258. package/dest/public/side_effect_trace.d.ts +5 -5
  259. package/dest/public/side_effect_trace.d.ts.map +1 -1
  260. package/dest/public/side_effect_trace.js +4 -4
  261. package/dest/public/side_effect_trace_interface.d.ts +3 -4
  262. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  263. package/dest/public/state_manager/index.d.ts +1 -1
  264. package/dest/public/state_manager/nullifiers.d.ts +2 -2
  265. package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
  266. package/dest/public/state_manager/public_storage.d.ts +2 -2
  267. package/dest/public/state_manager/public_storage.d.ts.map +1 -1
  268. package/dest/public/state_manager/public_storage.js +1 -1
  269. package/dest/public/state_manager/state_manager.d.ts +16 -12
  270. package/dest/public/state_manager/state_manager.d.ts.map +1 -1
  271. package/dest/public/state_manager/state_manager.js +21 -10
  272. package/dest/public/test_executor_metrics.d.ts +11 -4
  273. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  274. package/dest/public/test_executor_metrics.js +29 -6
  275. package/dest/public/unique_class_ids.d.ts +1 -1
  276. package/dest/public/unique_class_ids.d.ts.map +1 -1
  277. package/dest/public/utils.d.ts +1 -1
  278. package/dest/server.d.ts +1 -1
  279. package/dest/testing.d.ts +1 -1
  280. package/package.json +21 -20
  281. package/src/common/errors.ts +1 -1
  282. package/src/private/acvm/acvm.ts +4 -3
  283. package/src/private/acvm/deserialize.ts +1 -1
  284. package/src/private/acvm/serialize.ts +1 -1
  285. package/src/private/acvm_native.ts +11 -5
  286. package/src/private/acvm_wasm.ts +11 -4
  287. package/src/private/circuit_recording/circuit_recorder.ts +24 -21
  288. package/src/private/circuit_recording/file_circuit_recorder.ts +7 -2
  289. package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
  290. package/src/private/factory.ts +7 -4
  291. package/src/public/avm/avm_context.ts +2 -2
  292. package/src/public/avm/avm_contract_call_result.ts +8 -6
  293. package/src/public/avm/avm_execution_environment.ts +13 -10
  294. package/src/public/avm/avm_gas.ts +5 -5
  295. package/src/public/avm/avm_machine_state.ts +7 -6
  296. package/src/public/avm/avm_memory_types.ts +5 -1
  297. package/src/public/avm/avm_simulator.ts +20 -15
  298. package/src/public/avm/calldata.ts +101 -0
  299. package/src/public/avm/errors.ts +17 -3
  300. package/src/public/avm/fixtures/account_proof.json +553 -0
  301. package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
  302. package/src/public/avm/fixtures/avm_simulation_tester.ts +18 -4
  303. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +23 -3
  304. package/src/public/avm/fixtures/initializers.ts +10 -11
  305. package/src/public/avm/fixtures/utils.ts +6 -2
  306. package/src/public/avm/opcodes/accrued_substate.ts +31 -34
  307. package/src/public/avm/opcodes/addressing_mode.ts +2 -2
  308. package/src/public/avm/opcodes/arithmetic.ts +14 -2
  309. package/src/public/avm/opcodes/bitwise.ts +3 -3
  310. package/src/public/avm/opcodes/comparators.ts +1 -1
  311. package/src/public/avm/opcodes/contract.ts +9 -8
  312. package/src/public/avm/opcodes/control_flow.ts +2 -2
  313. package/src/public/avm/opcodes/conversion.ts +3 -3
  314. package/src/public/avm/opcodes/ec_add.ts +23 -33
  315. package/src/public/avm/opcodes/environment_getters.ts +7 -7
  316. package/src/public/avm/opcodes/external_calls.ts +18 -16
  317. package/src/public/avm/opcodes/hashing.ts +16 -10
  318. package/src/public/avm/opcodes/instruction_impl.ts +2 -2
  319. package/src/public/avm/opcodes/memory.ts +20 -20
  320. package/src/public/avm/opcodes/misc.ts +6 -6
  321. package/src/public/avm/opcodes/storage.ts +30 -22
  322. package/src/public/avm/revert_reason.ts +6 -3
  323. package/src/public/avm/serialization/bytecode_serialization.ts +19 -8
  324. package/src/public/avm/serialization/instruction_serialization.ts +2 -2
  325. package/src/public/avm/test_utils.ts +1 -1
  326. package/src/public/contracts_db_checkpoint.ts +41 -0
  327. package/src/public/db_interfaces.ts +16 -1
  328. package/src/public/debug_fn_name.ts +39 -5
  329. package/src/public/executor_metrics.ts +11 -34
  330. package/src/public/executor_metrics_interface.ts +2 -1
  331. package/src/public/fixtures/amm_test.ts +4 -4
  332. package/src/public/fixtures/bulk_test.ts +38 -13
  333. package/src/public/fixtures/custom_bytecode_tester.ts +54 -20
  334. package/src/public/fixtures/custom_bytecode_tests.ts +249 -18
  335. package/src/public/fixtures/index.ts +7 -1
  336. package/src/public/fixtures/minimal_public_tx.ts +7 -17
  337. package/src/public/fixtures/opcode_spammer.ts +1713 -0
  338. package/src/public/fixtures/public_tx_simulation_tester.ts +129 -24
  339. package/src/public/fixtures/simple_contract_data_source.ts +8 -9
  340. package/src/public/fixtures/token_test.ts +18 -10
  341. package/src/public/fixtures/utils.ts +28 -25
  342. package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
  343. package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
  344. package/src/public/hinting_db_sources.ts +121 -16
  345. package/src/public/index.ts +6 -4
  346. package/src/public/public_db_sources.ts +112 -174
  347. package/src/public/public_processor/guarded_merkle_tree.ts +13 -8
  348. package/src/public/public_processor/public_processor.ts +226 -137
  349. package/src/public/public_processor/public_processor_metrics.ts +28 -44
  350. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +125 -0
  351. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +141 -59
  352. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +134 -0
  353. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +239 -0
  354. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +83 -0
  355. package/src/public/public_tx_simulator/factories.ts +44 -0
  356. package/src/public/public_tx_simulator/index.ts +4 -0
  357. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +10 -14
  358. package/src/public/public_tx_simulator/public_tx_context.ts +30 -19
  359. package/src/public/public_tx_simulator/public_tx_simulator.ts +185 -202
  360. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +24 -2
  361. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +3 -3
  362. package/src/public/side_effect_trace.ts +6 -3
  363. package/src/public/side_effect_trace_interface.ts +1 -1
  364. package/src/public/state_manager/nullifiers.ts +1 -1
  365. package/src/public/state_manager/public_storage.ts +1 -1
  366. package/src/public/state_manager/state_manager.ts +35 -26
  367. package/src/public/test_executor_metrics.ts +34 -8
  368. package/dest/public/tx_contract_cache.d.ts +0 -41
  369. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  370. package/dest/public/tx_contract_cache.js +0 -49
  371. package/src/public/tx_contract_cache.ts +0 -69
@@ -1,8 +1,11 @@
1
+ import { PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } 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 { type ContractArtifact, encodeArguments } from '@aztec/stdlib/abi';
6
+ import { PublicSimulatorConfig, type PublicTxResult } from '@aztec/stdlib/avm';
4
7
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
5
- import { Gas, GasFees } from '@aztec/stdlib/gas';
8
+ import { FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT, Gas, GasFees } from '@aztec/stdlib/gas';
6
9
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
7
10
  import { PublicCallRequest } from '@aztec/stdlib/kernel';
8
11
  import { GlobalVariables, PublicCallRequestWithCalldata, type Tx } from '@aztec/stdlib/tx';
@@ -16,9 +19,8 @@ import {
16
19
  getFunctionSelector,
17
20
  } from '../avm/fixtures/utils.js';
18
21
  import { PublicContractsDB } from '../public_db_sources.js';
19
- import { MeasuredCppPublicTxSimulatorHintedDbs } from '../public_tx_simulator/cpp_public_tx_simulator.js';
20
- import { MeasuredPublicTxSimulator } from '../public_tx_simulator/measured_public_tx_simulator.js';
21
- import type { PublicTxResult } from '../public_tx_simulator/public_tx_simulator.js';
22
+ import { MeasuredCppPublicTxSimulator } from '../public_tx_simulator/cpp_public_tx_simulator.js';
23
+ import { MeasuredCppVsTsPublicTxSimulator } from '../public_tx_simulator/cpp_vs_ts_public_tx_simulator.js';
22
24
  import type { MeasuredPublicTxSimulatorInterface } from '../public_tx_simulator/public_tx_simulator_interface.js';
23
25
  import { TestExecutorMetrics } from '../test_executor_metrics.js';
24
26
  import { SimpleContractDataSource } from './simple_contract_data_source.js';
@@ -29,12 +31,32 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
29
31
  export type TestEnqueuedCall = {
30
32
  sender?: AztecAddress;
31
33
  address: AztecAddress;
32
- fnName: string;
34
+ fnName?: string;
33
35
  args: any[];
34
36
  isStaticCall?: boolean;
35
37
  contractArtifact?: ContractArtifact;
36
38
  };
37
39
 
40
+ const defaultConfig: PublicSimulatorConfig = PublicSimulatorConfig.from({
41
+ skipFeeEnforcement: false,
42
+ collectCallMetadata: true,
43
+ collectDebugLogs: true,
44
+ collectHints: false,
45
+ collectPublicInputs: false,
46
+ collectStatistics: false,
47
+ });
48
+
49
+ /**
50
+ * Factory type for creating a MeasuredPublicTxSimulatorInterface.
51
+ */
52
+ export type MeasuredSimulatorFactory = (
53
+ merkleTree: MerkleTreeWriteOperations,
54
+ contractsDB: PublicContractsDB,
55
+ globals: GlobalVariables,
56
+ metrics: TestExecutorMetrics,
57
+ config: PublicSimulatorConfig,
58
+ ) => MeasuredPublicTxSimulatorInterface;
59
+
38
60
  /**
39
61
  * A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
40
62
  * It provides an interface for simulating one transaction at a time and maintains state between subsequent
@@ -50,19 +72,17 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
50
72
  contractDataSource: SimpleContractDataSource,
51
73
  globals: GlobalVariables = defaultGlobals(),
52
74
  private metrics: TestExecutorMetrics = new TestExecutorMetrics(),
53
- useCppSimulator: boolean = false,
75
+ simulatorFactory?: MeasuredSimulatorFactory,
76
+ config: PublicSimulatorConfig = defaultConfig,
54
77
  ) {
55
78
  super(contractDataSource, merkleTree);
56
79
 
57
80
  const contractsDB = new PublicContractsDB(contractDataSource);
58
- const config = {
59
- doMerkleOperations: true,
60
- skipFeeEnforcement: false,
61
- clientInitiatedSimulation: true,
62
- };
63
- this.simulator = useCppSimulator
64
- ? new MeasuredCppPublicTxSimulatorHintedDbs(merkleTree, contractsDB, globals, this.metrics, config)
65
- : new MeasuredPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
81
+ if (simulatorFactory) {
82
+ this.simulator = simulatorFactory(merkleTree, contractsDB, globals, this.metrics, config);
83
+ } else {
84
+ this.simulator = new MeasuredCppPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
85
+ }
66
86
  }
67
87
 
68
88
  public static async create(
@@ -70,10 +90,14 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
70
90
  globals: GlobalVariables = defaultGlobals(),
71
91
  metrics: TestExecutorMetrics = new TestExecutorMetrics(),
72
92
  useCppSimulator = false,
93
+ config: PublicSimulatorConfig = defaultConfig,
73
94
  ): Promise<PublicTxSimulationTester> {
74
95
  const contractDataSource = new SimpleContractDataSource();
75
96
  const merkleTree = await worldStateService.fork();
76
- return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, useCppSimulator);
97
+ const simulatorFactory: MeasuredSimulatorFactory = useCppSimulator
98
+ ? (mt, cdb, g, m, c) => new MeasuredCppPublicTxSimulator(mt, cdb, g, m, c)
99
+ : (mt, cdb, g, m, c) => new MeasuredCppVsTsPublicTxSimulator(mt, cdb, g, m, c);
100
+ return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, simulatorFactory, config);
77
101
  }
78
102
 
79
103
  public setMetricsPrefix(prefix: string) {
@@ -88,6 +112,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
88
112
  feePayer: AztecAddress = sender,
89
113
  /* need some unique first nullifier for note-nonce computations */
90
114
  privateInsertions: TestPrivateInsertions = { nonRevertible: { nullifiers: [new Fr(420000 + this.txCount)] } },
115
+ gasLimits?: Gas,
91
116
  ): Promise<Tx> {
92
117
  const setupCallRequests = await asyncMap(setupCalls, call =>
93
118
  this.#createPubicCallRequestForCall(call, call.sender ?? sender),
@@ -106,8 +131,14 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
106
131
  appCallRequests,
107
132
  teardownCallRequest,
108
133
  feePayer,
109
- /*gasUsedByPrivate*/ Gas.empty(),
134
+ /*gasUsedByPrivate*/ teardownCall
135
+ ? new Gas(
136
+ FALLBACK_TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD,
137
+ FALLBACK_TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD,
138
+ )
139
+ : new Gas(TX_DA_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD),
110
140
  defaultGlobals(),
141
+ gasLimits,
111
142
  );
112
143
  }
113
144
 
@@ -120,16 +151,24 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
120
151
  /* need some unique first nullifier for note-nonce computations */
121
152
  privateInsertions?: TestPrivateInsertions,
122
153
  txLabel: string = 'unlabeledTx',
154
+ gasLimits?: Gas,
123
155
  ): Promise<PublicTxResult> {
124
- const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions);
156
+ const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, gasLimits);
125
157
 
126
158
  await this.setFeePayerBalance(feePayer);
127
159
 
128
160
  const txLabelWithCount = `${txLabel}/${this.txCount - 1}`;
129
161
  const fullTxLabel = this.metricsPrefix ? `${this.metricsPrefix}/${txLabelWithCount}` : txLabelWithCount;
130
162
 
163
+ if (!this.simulator) {
164
+ throw new Error(
165
+ 'No simulator configured. Pass a simulatorFactory to the constructor or use PublicTxSimulationTester.create()',
166
+ );
167
+ }
131
168
  const avmResult = await this.simulator.simulate(tx, fullTxLabel);
132
169
 
170
+ await this.#recordBytecodeSizes(fullTxLabel, [...setupCalls, ...appCalls, ...(teardownCall ? [teardownCall] : [])]);
171
+
133
172
  // Something like this is often useful for debugging:
134
173
  //if (avmResult.revertReason) {
135
174
  // // resolve / enrich revert reason
@@ -159,8 +198,18 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
159
198
  teardownCall?: TestEnqueuedCall,
160
199
  feePayer?: AztecAddress,
161
200
  privateInsertions?: TestPrivateInsertions,
201
+ gasLimits?: Gas,
162
202
  ): Promise<PublicTxResult> {
163
- return await this.simulateTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, txLabel);
203
+ return await this.simulateTx(
204
+ sender,
205
+ setupCalls,
206
+ appCalls,
207
+ teardownCall,
208
+ feePayer,
209
+ privateInsertions,
210
+ txLabel,
211
+ gasLimits,
212
+ );
164
213
  }
165
214
 
166
215
  /**
@@ -178,6 +227,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
178
227
  teardownCall?: TestEnqueuedCall,
179
228
  feePayer?: AztecAddress,
180
229
  privateInsertions?: TestPrivateInsertions,
230
+ gasLimits?: Gas,
181
231
  ): Promise<PublicTxResult> {
182
232
  return await this.simulateTxWithLabel(
183
233
  txLabel,
@@ -187,6 +237,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
187
237
  teardownCall,
188
238
  feePayer,
189
239
  privateInsertions,
240
+ gasLimits,
190
241
  );
191
242
  }
192
243
 
@@ -194,6 +245,25 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
194
245
  this.metrics.prettyPrint();
195
246
  }
196
247
 
248
+ /**
249
+ * Cancel the current simulation if one is in progress.
250
+ * This signals the underlying simulator (e.g., C++) to stop at the next safe point.
251
+ * Safe to call even if no simulation is in progress.
252
+ *
253
+ * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
254
+ */
255
+ public async cancel(waitTimeoutMs?: number): Promise<void> {
256
+ await this.simulator.cancel?.(waitTimeoutMs);
257
+ }
258
+
259
+ /**
260
+ * Get the underlying simulator for advanced test scenarios.
261
+ * Use this when you need direct control over simulation (e.g., for testing cancellation).
262
+ */
263
+ public getSimulator(): MeasuredPublicTxSimulatorInterface {
264
+ return this.simulator;
265
+ }
266
+
197
267
  async #createPubicCallRequestForCall(
198
268
  call: TestEnqueuedCall,
199
269
  sender: AztecAddress,
@@ -204,21 +274,56 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
204
274
  throw new Error(`Contract artifact not found for address: ${address}`);
205
275
  }
206
276
 
207
- const fnSelector = await getFunctionSelector(call.fnName, contractArtifact);
208
- const fnAbi = getContractFunctionAbi(call.fnName, contractArtifact)!;
209
- const encodedArgs = encodeArguments(fnAbi, call.args);
210
- const calldata = [fnSelector.toField(), ...encodedArgs];
277
+ let calldata: Fr[] = [];
278
+ if (!call.fnName) {
279
+ this.logger.debug(
280
+ `No function name specified for call to contract ${call.address.toString()}. Assuming this is a custom bytecode with no public_dispatch function.`,
281
+ );
282
+ this.logger.debug(`Not using ABI to encode arguments. Not prepending fn selector to calldata.`);
283
+ try {
284
+ calldata = call.args.map(arg => new Fr(arg));
285
+ } catch (error) {
286
+ this.logger.warn(`Tried assuming that all arguments are Field-like. Failed. Error: ${error}`);
287
+ throw error;
288
+ }
289
+ } else {
290
+ const fnSelector = await getFunctionSelector(call.fnName, contractArtifact);
291
+ const fnAbi = getContractFunctionAbi(call.fnName, contractArtifact)!;
292
+ const encodedArgs = encodeArguments(fnAbi, call.args);
293
+ calldata = [fnSelector.toField(), ...encodedArgs];
294
+ }
211
295
  const isStaticCall = call.isStaticCall ?? false;
212
296
  const request = await PublicCallRequest.fromCalldata(sender, address, isStaticCall, calldata);
213
297
 
214
298
  return new PublicCallRequestWithCalldata(request, calldata);
215
299
  }
300
+
301
+ // WARNING: Deduplicates by artifact name, so two different artifacts with the same name
302
+ // in a single tx would only record the first one's bytecode size.
303
+ async #recordBytecodeSizes(txLabel: string, calls: TestEnqueuedCall[]) {
304
+ const seenArtifactNames = new Set<string>();
305
+ for (const call of calls) {
306
+ const artifact = await this.contractDataSource.getContractArtifact(call.address);
307
+ if (!artifact || seenArtifactNames.has(artifact.name)) {
308
+ continue;
309
+ }
310
+ seenArtifactNames.add(artifact.name);
311
+ const instance = await this.contractDataSource.getContract(call.address);
312
+ if (!instance) {
313
+ continue;
314
+ }
315
+ const contractClass = await this.contractDataSource.getContractClass(instance.currentContractClassId);
316
+ if (contractClass) {
317
+ this.metrics.recordBytecodeSize(txLabel, artifact.name, contractClass.packedBytecode.length);
318
+ }
319
+ }
320
+ }
216
321
  }
217
322
 
218
323
  export function defaultGlobals() {
219
324
  const globals = GlobalVariables.empty();
220
325
  globals.timestamp = DEFAULT_TIMESTAMP;
221
326
  globals.gasFees = DEFAULT_GAS_FEES; // apply some nonzero default gas fees
222
- globals.blockNumber = DEFAULT_BLOCK_NUMBER;
327
+ globals.blockNumber = BlockNumber(DEFAULT_BLOCK_NUMBER);
223
328
  return globals;
224
329
  }
@@ -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 { createLogger } from '@aztec/foundation/log';
3
4
  import type { ContractArtifact, FunctionSelector } from '@aztec/stdlib/abi';
4
5
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
@@ -59,7 +60,7 @@ export class SimpleContractDataSource implements ContractDataSource {
59
60
 
60
61
  /////////////////////////////////////////////////////////////
61
62
  // ContractDataSource function implementations
62
- getBlockNumber(): Promise<number> {
63
+ getBlockNumber(): Promise<BlockNumber> {
63
64
  throw new Error('Method not implemented.');
64
65
  }
65
66
 
@@ -90,19 +91,17 @@ export class SimpleContractDataSource implements ContractDataSource {
90
91
  return this.contractArtifacts.get(contractInstance!.currentContractClassId.toString());
91
92
  }
92
93
 
93
- async getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string> {
94
+ async getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined> {
94
95
  const contractInstance = await this.getContract(address);
95
96
  if (!contractInstance) {
96
- this.logger.warn(
97
- `Couldn't get fn name for debugging. Contract not in tester's ContractDataSource. Using selector:${selector} instead...`,
98
- );
99
- return `selector:${selector.toString()}`;
97
+ this.logger.warn(`Couldn't get fn name for debugging. Contract not in tester's ContractDataSource.`);
98
+ return undefined;
100
99
  }
101
100
  const key = `${contractInstance.currentContractClassId.toString()}:${selector.toString()}`;
102
101
  const fnName = this.debugFunctionName.get(key);
103
102
  if (!fnName) {
104
- this.logger.warn(`Couldn't get fn name for debugging. Using selector:${selector} instead...`);
105
- return selector.toString();
103
+ this.logger.warn(`Couldn't get fn name for debugging...`);
104
+ return undefined;
106
105
  }
107
106
  return fnName;
108
107
  }
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { Logger } from '@aztec/foundation/log';
3
3
  import { Timer } from '@aztec/foundation/timer';
4
4
  import type { ContractArtifact } from '@aztec/stdlib/abi';
@@ -7,11 +7,17 @@ import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
7
7
 
8
8
  import { PublicTxSimulationTester } from './public_tx_simulation_tester.js';
9
9
 
10
+ export type TokenTestOptions = {
11
+ /** Skip return value assertions in balance checks (useful for benchmarking with collectCallMetadata=false) */
12
+ skipReturnValueAssertions?: boolean;
13
+ };
14
+
10
15
  export async function tokenTest(
11
16
  tester: PublicTxSimulationTester,
12
17
  logger: Logger,
13
18
  tokenArtifact: ContractArtifact,
14
19
  expectToBeTrue: (x: boolean) => void,
20
+ options: TokenTestOptions = {},
15
21
  ) {
16
22
  const timer = new Timer();
17
23
 
@@ -36,7 +42,7 @@ export async function tokenTest(
36
42
  ],
37
43
  );
38
44
  expectToBeTrue(mintResult.revertCode.isOK());
39
- await checkBalance(tester, token, sender, sender, mintAmount, expectToBeTrue);
45
+ await checkBalance(tester, token, sender, sender, mintAmount, expectToBeTrue, options);
40
46
 
41
47
  const authwitNonce = new Fr(0);
42
48
  const transferAmount = 50n;
@@ -54,8 +60,8 @@ export async function tokenTest(
54
60
  ],
55
61
  );
56
62
  expectToBeTrue(transferResult.revertCode.isOK());
57
- await checkBalance(tester, token, sender, receiver, mintAmount - transferAmount, expectToBeTrue);
58
- await checkBalance(tester, token, sender, receiver, transferAmount, expectToBeTrue);
63
+ await checkBalance(tester, token, sender, sender, mintAmount - transferAmount, expectToBeTrue, options);
64
+ await checkBalance(tester, token, sender, receiver, transferAmount, expectToBeTrue, options);
59
65
 
60
66
  // EXECUTE! This means that if using AvmProvingTester subclass, it will PROVE the transaction!
61
67
  const burnResult = await tester.executeTxWithLabel(
@@ -71,7 +77,7 @@ export async function tokenTest(
71
77
  ],
72
78
  );
73
79
  expectToBeTrue(burnResult.revertCode.isOK());
74
- await checkBalance(tester, token, sender, receiver, 0n, expectToBeTrue);
80
+ await checkBalance(tester, token, sender, receiver, 0n, expectToBeTrue, options);
75
81
 
76
82
  logger.info(`TokenContract test took ${timer.ms()}ms\n`);
77
83
  }
@@ -116,6 +122,7 @@ async function checkBalance(
116
122
  account: AztecAddress,
117
123
  expectedBalance: bigint,
118
124
  expectToBeTrue: (x: boolean) => void,
125
+ options: TokenTestOptions = {},
119
126
  ) {
120
127
  // Strictly simulate this! No need to "execute" (aka prove if using AvmProvingTester subclass).
121
128
  const balResult = await tester.simulateTxWithLabel(
@@ -132,9 +139,10 @@ async function checkBalance(
132
139
  ],
133
140
  );
134
141
  expectToBeTrue(balResult.revertCode.isOK());
135
- // should be 1 call with 1 return value that is expectedBalance
136
- expectToBeTrue(balResult.processedPhases.length == 1);
137
- expectToBeTrue(balResult.processedPhases[0].returnValues.length == 1);
138
- expectToBeTrue(balResult.processedPhases[0].returnValues[0].values!.length == 1);
139
- expectToBeTrue(balResult.processedPhases[0].returnValues[0].values![0].toBigInt() == expectedBalance);
142
+ if (!options.skipReturnValueAssertions) {
143
+ // should be 1 call with 1 return value that is expectedBalance
144
+ const appLogicReturnValues = balResult.getAppLogicReturnValues();
145
+ expectToBeTrue(appLogicReturnValues.length === 1);
146
+ expectToBeTrue(appLogicReturnValues[0].values?.[0]?.toBigInt() === expectedBalance);
147
+ }
140
148
  }
@@ -2,19 +2,23 @@ import {
2
2
  CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE,
3
3
  CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS,
4
4
  CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS,
5
- DEFAULT_DA_GAS_LIMIT,
6
- DEFAULT_L2_GAS_LIMIT,
7
- DEFAULT_TEARDOWN_DA_GAS_LIMIT,
8
- DEFAULT_TEARDOWN_L2_GAS_LIMIT,
5
+ MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT,
6
+ MAX_PROCESSABLE_L2_GAS,
9
7
  PRIVATE_LOG_SIZE_IN_FIELDS,
10
8
  } from '@aztec/constants';
11
9
  import { padArrayEnd } from '@aztec/foundation/collection';
12
- import { Fr } from '@aztec/foundation/fields';
10
+ import { Fr } from '@aztec/foundation/curves/bn254';
13
11
  import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '@aztec/protocol-contracts';
14
12
  import { bufferAsFields } from '@aztec/stdlib/abi';
15
13
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
16
14
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
17
- import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
15
+ import {
16
+ FALLBACK_TEARDOWN_DA_GAS_LIMIT,
17
+ FALLBACK_TEARDOWN_L2_GAS_LIMIT,
18
+ Gas,
19
+ GasFees,
20
+ GasSettings,
21
+ } from '@aztec/stdlib/gas';
18
22
  import { siloNullifier } from '@aztec/stdlib/hash';
19
23
  import {
20
24
  LogHash,
@@ -62,13 +66,14 @@ export async function createTxForPublicCalls(
62
66
  feePayer = AztecAddress.zero(),
63
67
  gasUsedByPrivate: Gas = Gas.empty(),
64
68
  globals: GlobalVariables = GlobalVariables.empty(),
69
+ gasLimits?: Gas,
65
70
  ): Promise<Tx> {
66
71
  assert(
67
72
  setupCallRequests.length > 0 || appCallRequests.length > 0 || teardownCallRequest !== undefined,
68
73
  "Can't create public tx with no enqueued calls",
69
74
  );
70
75
  // use max limits
71
- const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
76
+ gasLimits = gasLimits ?? new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
72
77
 
73
78
  const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
74
79
 
@@ -128,20 +133,19 @@ export async function createTxForPublicCalls(
128
133
 
129
134
  const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
130
135
  const teardownGasLimits = teardownCallRequest
131
- ? new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT)
136
+ ? new Gas(FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT)
132
137
  : Gas.empty();
133
138
  const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
134
139
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
135
- const header = BlockHeader.empty();
136
- header.globalVariables = globals;
140
+ const header = BlockHeader.empty({ globalVariables: globals });
137
141
  const constantData = new TxConstantData(header, txContext, Fr.zero(), Fr.zero());
138
- const includeByTimestamp = 0n; // Not used in the simulator.
142
+ const expirationTimestamp = 0n; // Not used in the simulator.
139
143
 
140
144
  const txData = new PrivateKernelTailCircuitPublicInputs(
141
145
  constantData,
142
146
  /*gasUsed=*/ gasUsedByPrivate,
143
147
  feePayer,
144
- includeByTimestamp,
148
+ expirationTimestamp,
145
149
  forPublic,
146
150
  );
147
151
 
@@ -164,7 +168,7 @@ export async function createTxForPrivateOnly(
164
168
  gasUsedByPrivate: Gas = new Gas(10, 10),
165
169
  ): Promise<Tx> {
166
170
  // use max limits
167
- const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
171
+ const gasLimits = new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
168
172
 
169
173
  const forRollup = PartialPrivateTailPublicInputsForRollup.empty();
170
174
 
@@ -172,13 +176,13 @@ export async function createTxForPrivateOnly(
172
176
  const gasSettings = new GasSettings(gasLimits, Gas.empty(), maxFeesPerGas, GasFees.empty());
173
177
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
174
178
  const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
175
- const includeByTimestamp = 0n; // Not used in the simulator.
179
+ const expirationTimestamp = 0n; // Not used in the simulator.
176
180
 
177
181
  const txData = new PrivateKernelTailCircuitPublicInputs(
178
182
  constantData,
179
183
  /*gasUsed=*/ gasUsedByPrivate,
180
184
  feePayer,
181
- includeByTimestamp,
185
+ expirationTimestamp,
182
186
  /*forPublic=*/ undefined,
183
187
  forRollup,
184
188
  );
@@ -229,17 +233,15 @@ export async function addNewContractInstanceToTx(
229
233
  contractInstance: ContractInstanceWithAddress,
230
234
  skipNullifierInsertion = false,
231
235
  ) {
232
- // can't use publicKeys.toFields() because it includes isInfinite which
233
- // is not broadcast in such private logs
236
+ // Only ivpk_m is broadcast as a point (x, y); the other five keys are hashes.
234
237
  const publicKeysAsFields = [
235
- contractInstance.publicKeys.masterNullifierPublicKey.x,
236
- contractInstance.publicKeys.masterNullifierPublicKey.y,
237
- contractInstance.publicKeys.masterIncomingViewingPublicKey.x,
238
- contractInstance.publicKeys.masterIncomingViewingPublicKey.y,
239
- contractInstance.publicKeys.masterOutgoingViewingPublicKey.x,
240
- contractInstance.publicKeys.masterOutgoingViewingPublicKey.y,
241
- contractInstance.publicKeys.masterTaggingPublicKey.x,
242
- contractInstance.publicKeys.masterTaggingPublicKey.y,
238
+ contractInstance.publicKeys.npkMHash,
239
+ contractInstance.publicKeys.ivpkM.x,
240
+ contractInstance.publicKeys.ivpkM.y,
241
+ contractInstance.publicKeys.ovpkMHash,
242
+ contractInstance.publicKeys.tpkMHash,
243
+ contractInstance.publicKeys.mspkMHash,
244
+ contractInstance.publicKeys.fbpkMHash,
243
245
  ];
244
246
  const logFields = [
245
247
  CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG,
@@ -248,6 +250,7 @@ export async function addNewContractInstanceToTx(
248
250
  new Fr(contractInstance.salt),
249
251
  contractInstance.currentContractClassId,
250
252
  contractInstance.initializationHash,
253
+ contractInstance.immutablesHash,
251
254
  ...publicKeysAsFields,
252
255
  contractInstance.deployer.toField(),
253
256
  ];