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

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 (380) 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/testing/account_proof_fetcher.d.ts +2 -0
  43. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  44. package/dest/public/avm/testing/account_proof_fetcher.js +152 -0
  45. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +3 -2
  46. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  47. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +18 -3
  48. package/dest/public/avm/{fixtures → testing}/utils.d.ts +4 -10
  49. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  50. package/dest/public/avm/{fixtures → testing}/utils.js +6 -35
  51. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  52. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  53. package/dest/public/contracts_db_checkpoint.js +30 -0
  54. package/dest/public/db_interfaces.d.ts +14 -2
  55. package/dest/public/db_interfaces.d.ts.map +1 -1
  56. package/dest/public/executor_metrics.d.ts +3 -2
  57. package/dest/public/executor_metrics.d.ts.map +1 -1
  58. package/dest/public/executor_metrics.js +13 -34
  59. package/dest/public/executor_metrics_interface.d.ts +3 -2
  60. package/dest/public/executor_metrics_interface.d.ts.map +1 -1
  61. package/dest/public/fixtures/amm_test.d.ts +1 -1
  62. package/dest/public/fixtures/amm_test.js +4 -4
  63. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  64. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  65. package/dest/public/fixtures/bulk_test.js +36 -73
  66. package/dest/public/fixtures/custom_bytecode_tester.d.ts +29 -7
  67. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  68. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  69. package/dest/public/fixtures/index.d.ts +2 -3
  70. package/dest/public/fixtures/index.d.ts.map +1 -1
  71. package/dest/public/fixtures/index.js +1 -2
  72. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +30 -11
  73. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  74. package/dest/public/fixtures/public_tx_simulation_tester.js +98 -31
  75. package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
  76. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  77. package/dest/public/fixtures/simple_contract_data_source.js +5 -5
  78. package/dest/public/fixtures/token_test.d.ts +6 -2
  79. package/dest/public/fixtures/token_test.d.ts.map +1 -1
  80. package/dest/public/fixtures/token_test.js +13 -12
  81. package/dest/public/fixtures/utils.d.ts +3 -3
  82. package/dest/public/fixtures/utils.d.ts.map +1 -1
  83. package/dest/public/fixtures/utils.js +23 -23
  84. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +62 -0
  85. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  86. package/dest/public/fuzzing/avm_fuzzer_simulator.js +176 -0
  87. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  88. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  89. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  90. package/dest/public/index.d.ts +3 -2
  91. package/dest/public/index.d.ts.map +1 -1
  92. package/dest/public/index.js +1 -1
  93. package/dest/public/public_db_sources.d.ts +29 -66
  94. package/dest/public/public_db_sources.d.ts.map +1 -1
  95. package/dest/public/public_db_sources.js +83 -134
  96. package/dest/public/public_errors.d.ts +1 -1
  97. package/dest/public/public_errors.d.ts.map +1 -1
  98. package/dest/public/public_processor/guarded_merkle_tree.d.ts +8 -5
  99. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  100. package/dest/public/public_processor/guarded_merkle_tree.js +12 -4
  101. package/dest/public/public_processor/public_processor.d.ts +19 -21
  102. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  103. package/dest/public/public_processor/public_processor.js +553 -123
  104. package/dest/public/public_processor/public_processor_metrics.d.ts +5 -2
  105. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  106. package/dest/public/public_processor/public_processor_metrics.js +36 -45
  107. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +19 -0
  108. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  109. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +99 -0
  110. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +23 -0
  111. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  112. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.js +52 -0
  113. package/dest/public/public_tx_simulator/factories.d.ts +14 -0
  114. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  115. package/dest/public/public_tx_simulator/factories.js +28 -0
  116. package/dest/public/public_tx_simulator/index.d.ts +5 -3
  117. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  118. package/dest/public/public_tx_simulator/index.js +3 -2
  119. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +42 -89
  120. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  121. package/dest/public/public_tx_simulator/public_tx_simulator.js +101 -334
  122. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +22 -0
  123. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  124. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +28 -0
  125. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +25 -2
  126. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  127. package/dest/public/side_effect_errors.d.ts +1 -1
  128. package/dest/public/side_effect_errors.d.ts.map +1 -1
  129. package/dest/public/test_executor_metrics.d.ts +11 -4
  130. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  131. package/dest/public/test_executor_metrics.js +29 -6
  132. package/dest/public/unique_class_ids.d.ts +1 -1
  133. package/dest/public/unique_class_ids.d.ts.map +1 -1
  134. package/dest/public/utils.d.ts +1 -1
  135. package/dest/server.d.ts +1 -1
  136. package/dest/testing.d.ts +1 -1
  137. package/package.json +22 -22
  138. package/src/common/errors.ts +1 -1
  139. package/src/private/acvm/acvm.ts +4 -3
  140. package/src/private/acvm/deserialize.ts +1 -1
  141. package/src/private/acvm/serialize.ts +1 -1
  142. package/src/private/acvm_native.ts +11 -5
  143. package/src/private/acvm_wasm.ts +11 -4
  144. package/src/private/circuit_recording/circuit_recorder.ts +24 -21
  145. package/src/private/circuit_recording/file_circuit_recorder.ts +7 -2
  146. package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
  147. package/src/private/factory.ts +7 -4
  148. package/src/public/avm/testing/account_proof.json +553 -0
  149. package/src/public/avm/testing/account_proof_fetcher.ts +166 -0
  150. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +23 -3
  151. package/src/public/avm/{fixtures → testing}/utils.ts +6 -41
  152. package/src/public/contracts_db_checkpoint.ts +41 -0
  153. package/src/public/db_interfaces.ts +16 -1
  154. package/src/public/executor_metrics.ts +11 -34
  155. package/src/public/executor_metrics_interface.ts +2 -1
  156. package/src/public/fixtures/amm_test.ts +4 -4
  157. package/src/public/fixtures/bulk_test.ts +38 -13
  158. package/src/public/fixtures/custom_bytecode_tester.ts +54 -20
  159. package/src/public/fixtures/index.ts +5 -2
  160. package/src/public/fixtures/public_tx_simulation_tester.ts +129 -27
  161. package/src/public/fixtures/simple_contract_data_source.ts +9 -10
  162. package/src/public/fixtures/token_test.ts +18 -10
  163. package/src/public/fixtures/utils.ts +28 -25
  164. package/src/public/fuzzing/avm_fuzzer_simulator.ts +285 -0
  165. package/src/public/fuzzing/avm_simulator_bin.ts +173 -0
  166. package/src/public/index.ts +4 -2
  167. package/src/public/public_db_sources.ts +112 -174
  168. package/src/public/public_processor/guarded_merkle_tree.ts +14 -6
  169. package/src/public/public_processor/public_processor.ts +225 -136
  170. package/src/public/public_processor/public_processor_metrics.ts +28 -44
  171. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +125 -0
  172. package/src/public/public_tx_simulator/dumping_public_tx_simulator.ts +83 -0
  173. package/src/public/public_tx_simulator/factories.ts +44 -0
  174. package/src/public/public_tx_simulator/index.ts +4 -2
  175. package/src/public/public_tx_simulator/public_tx_simulator.ts +153 -500
  176. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +35 -0
  177. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +24 -2
  178. package/src/public/test_executor_metrics.ts +34 -8
  179. package/dest/public/avm/avm_context.d.ts +0 -41
  180. package/dest/public/avm/avm_context.d.ts.map +0 -1
  181. package/dest/public/avm/avm_context.js +0 -44
  182. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  183. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  184. package/dest/public/avm/avm_contract_call_result.js +0 -54
  185. package/dest/public/avm/avm_execution_environment.d.ts +0 -23
  186. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  187. package/dest/public/avm/avm_execution_environment.js +0 -36
  188. package/dest/public/avm/avm_gas.d.ts +0 -44
  189. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  190. package/dest/public/avm/avm_gas.js +0 -195
  191. package/dest/public/avm/avm_machine_state.d.ts +0 -97
  192. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  193. package/dest/public/avm/avm_machine_state.js +0 -109
  194. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  195. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  196. package/dest/public/avm/avm_memory_types.js +0 -351
  197. package/dest/public/avm/avm_simulator.d.ts +0 -39
  198. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  199. package/dest/public/avm/avm_simulator.js +0 -190
  200. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  201. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  202. package/dest/public/avm/avm_simulator_interface.js +0 -3
  203. package/dest/public/avm/errors.d.ts +0 -98
  204. package/dest/public/avm/errors.d.ts.map +0 -1
  205. package/dest/public/avm/errors.js +0 -129
  206. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  207. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  208. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -74
  209. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  210. package/dest/public/avm/fixtures/initializers.d.ts +0 -43
  211. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  212. package/dest/public/avm/fixtures/initializers.js +0 -42
  213. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  214. package/dest/public/avm/index.d.ts +0 -2
  215. package/dest/public/avm/index.d.ts.map +0 -1
  216. package/dest/public/avm/index.js +0 -1
  217. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -75
  218. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  219. package/dest/public/avm/opcodes/accrued_substate.js +0 -255
  220. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  221. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  222. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  223. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -47
  224. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  225. package/dest/public/avm/opcodes/arithmetic.js +0 -87
  226. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  227. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  228. package/dest/public/avm/opcodes/bitwise.js +0 -99
  229. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  230. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  231. package/dest/public/avm/opcodes/comparators.js +0 -43
  232. package/dest/public/avm/opcodes/contract.d.ts +0 -20
  233. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  234. package/dest/public/avm/opcodes/contract.js +0 -65
  235. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  236. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  237. package/dest/public/avm/opcodes/control_flow.js +0 -107
  238. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  239. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  240. package/dest/public/avm/opcodes/conversion.js +0 -333
  241. package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
  242. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  243. package/dest/public/avm/opcodes/ec_add.js +0 -84
  244. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  245. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  246. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  247. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  248. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  249. package/dest/public/avm/opcodes/external_calls.js +0 -209
  250. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  251. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  252. package/dest/public/avm/opcodes/hashing.js +0 -114
  253. package/dest/public/avm/opcodes/index.d.ts +0 -16
  254. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  255. package/dest/public/avm/opcodes/index.js +0 -15
  256. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  257. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  258. package/dest/public/avm/opcodes/instruction.js +0 -95
  259. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  260. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  261. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  262. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  263. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  264. package/dest/public/avm/opcodes/memory.js +0 -257
  265. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  266. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  267. package/dest/public/avm/opcodes/misc.js +0 -73
  268. package/dest/public/avm/opcodes/storage.d.ts +0 -24
  269. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  270. package/dest/public/avm/opcodes/storage.js +0 -68
  271. package/dest/public/avm/revert_reason.d.ts +0 -18
  272. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  273. package/dest/public/avm/revert_reason.js +0 -38
  274. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  275. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  276. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  277. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  278. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  279. package/dest/public/avm/serialization/bytecode_serialization.js +0 -333
  280. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  281. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  282. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  283. package/dest/public/avm/test_utils.d.ts +0 -15
  284. package/dest/public/avm/test_utils.d.ts.map +0 -1
  285. package/dest/public/avm/test_utils.js +0 -44
  286. package/dest/public/debug_fn_name.d.ts +0 -5
  287. package/dest/public/debug_fn_name.d.ts.map +0 -1
  288. package/dest/public/debug_fn_name.js +0 -9
  289. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -9
  290. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  291. package/dest/public/fixtures/custom_bytecode_tests.js +0 -109
  292. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -10
  293. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  294. package/dest/public/fixtures/minimal_public_tx.js +0 -29
  295. package/dest/public/hinting_db_sources.d.ts +0 -70
  296. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  297. package/dest/public/hinting_db_sources.js +0 -297
  298. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -41
  299. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  300. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -89
  301. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -24
  302. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  303. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  304. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -127
  305. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  306. package/dest/public/public_tx_simulator/public_tx_context.js +0 -292
  307. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  308. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  309. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -39
  310. package/dest/public/side_effect_trace.d.ts +0 -87
  311. package/dest/public/side_effect_trace.d.ts.map +0 -1
  312. package/dest/public/side_effect_trace.js +0 -199
  313. package/dest/public/side_effect_trace_interface.d.ts +0 -23
  314. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  315. package/dest/public/side_effect_trace_interface.js +0 -1
  316. package/dest/public/state_manager/index.d.ts +0 -2
  317. package/dest/public/state_manager/index.d.ts.map +0 -1
  318. package/dest/public/state_manager/index.js +0 -1
  319. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  320. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  321. package/dest/public/state_manager/nullifiers.js +0 -92
  322. package/dest/public/state_manager/public_storage.d.ts +0 -66
  323. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  324. package/dest/public/state_manager/public_storage.js +0 -145
  325. package/dest/public/state_manager/state_manager.d.ts +0 -166
  326. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  327. package/dest/public/state_manager/state_manager.js +0 -391
  328. package/dest/public/tx_contract_cache.d.ts +0 -41
  329. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  330. package/dest/public/tx_contract_cache.js +0 -49
  331. package/src/public/avm/avm_context.ts +0 -61
  332. package/src/public/avm/avm_contract_call_result.ts +0 -67
  333. package/src/public/avm/avm_execution_environment.ts +0 -48
  334. package/src/public/avm/avm_gas.ts +0 -183
  335. package/src/public/avm/avm_machine_state.ts +0 -169
  336. package/src/public/avm/avm_memory_types.ts +0 -436
  337. package/src/public/avm/avm_simulator.ts +0 -274
  338. package/src/public/avm/avm_simulator_interface.ts +0 -8
  339. package/src/public/avm/errors.ts +0 -163
  340. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -108
  341. package/src/public/avm/fixtures/initializers.ts +0 -104
  342. package/src/public/avm/index.ts +0 -1
  343. package/src/public/avm/opcodes/accrued_substate.ts +0 -288
  344. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  345. package/src/public/avm/opcodes/arithmetic.ts +0 -117
  346. package/src/public/avm/opcodes/bitwise.ts +0 -113
  347. package/src/public/avm/opcodes/comparators.ts +0 -55
  348. package/src/public/avm/opcodes/contract.ts +0 -75
  349. package/src/public/avm/opcodes/control_flow.ts +0 -123
  350. package/src/public/avm/opcodes/conversion.ts +0 -104
  351. package/src/public/avm/opcodes/ec_add.ts +0 -96
  352. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  353. package/src/public/avm/opcodes/external_calls.ts +0 -260
  354. package/src/public/avm/opcodes/hashing.ts +0 -145
  355. package/src/public/avm/opcodes/index.ts +0 -15
  356. package/src/public/avm/opcodes/instruction.ts +0 -136
  357. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  358. package/src/public/avm/opcodes/memory.ts +0 -293
  359. package/src/public/avm/opcodes/misc.ts +0 -102
  360. package/src/public/avm/opcodes/storage.ts +0 -87
  361. package/src/public/avm/revert_reason.ts +0 -55
  362. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  363. package/src/public/avm/serialization/bytecode_serialization.ts +0 -204
  364. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  365. package/src/public/avm/test_utils.ts +0 -64
  366. package/src/public/debug_fn_name.ts +0 -18
  367. package/src/public/fixtures/custom_bytecode_tests.ts +0 -135
  368. package/src/public/fixtures/minimal_public_tx.ts +0 -36
  369. package/src/public/hinting_db_sources.ts +0 -505
  370. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -128
  371. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -109
  372. package/src/public/public_tx_simulator/public_tx_context.ts +0 -471
  373. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  374. package/src/public/side_effect_trace.ts +0 -290
  375. package/src/public/side_effect_trace_interface.ts +0 -28
  376. package/src/public/state_manager/index.ts +0 -1
  377. package/src/public/state_manager/nullifiers.ts +0 -103
  378. package/src/public/state_manager/public_storage.ts +0 -174
  379. package/src/public/state_manager/state_manager.ts +0 -560
  380. package/src/public/tx_contract_cache.ts +0 -69
@@ -1,49 +1,83 @@
1
1
  import { FunctionType, emptyContractArtifact, emptyFunctionArtifact } from '@aztec/stdlib/abi';
2
+ import type { PublicTxResult } from '@aztec/stdlib/avm';
2
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
3
5
 
4
- import type { PublicTxResult } from '../public_tx_simulator/public_tx_simulator.js';
5
6
  import { PublicTxSimulationTester } from './public_tx_simulation_tester.js';
6
7
 
7
8
  /**
8
- *
9
- * Test custom bytecode (simulation or proving) with the provided bytecode.
9
+ * Deploy a contract with the provided bytecode.
10
10
  * @param bytecode - The bytecode buffer to use
11
- * @param tester - The tester to use (simulation or proving)
12
- * @param txLabel - The label of the transaction
13
- * @param contractName - The name of the contract (default: 'CustomBytecodeContract')
11
+ * @param tester - The tester to use
12
+ * @param contractName - The name of the contract
13
+ * @param deployer - The deployer address
14
+ * @returns The deployed contract instance
14
15
  */
15
- export async function testCustomBytecode(
16
+ export async function deployCustomBytecode(
16
17
  bytecode: Buffer,
17
18
  tester: PublicTxSimulationTester,
18
- txLabel: string,
19
19
  contractName: string = 'CustomBytecodeContract',
20
- ): Promise<PublicTxResult> {
21
- const deployer = AztecAddress.fromNumber(42);
22
-
20
+ deployer: AztecAddress = AztecAddress.fromNumber(42),
21
+ ): Promise<ContractInstanceWithAddress> {
23
22
  const contractArtifact = emptyContractArtifact();
24
23
  contractArtifact.name = contractName;
25
24
  contractArtifact.functions = [emptyFunctionArtifact()];
25
+ // We use name 'public_dispatch' since that is what is expected
26
+ // in a ContractArtifact. But function selectors are not required
27
+ // when executing since the custom bytecode likely has no dispatch.
26
28
  contractArtifact.functions[0].name = 'public_dispatch';
27
29
  contractArtifact.functions[0].functionType = FunctionType.PUBLIC;
28
30
  contractArtifact.functions[0].bytecode = bytecode;
29
31
 
30
- const testContract = await tester.registerAndDeployContract(
32
+ // return the contract instance
33
+ return await tester.registerAndDeployContract(
31
34
  /*constructorArgs=*/ [],
32
35
  deployer,
33
36
  /*contractArtifact=*/ contractArtifact,
34
37
  );
38
+ }
35
39
 
40
+ /**
41
+ * Execute a custom bytecode contract.
42
+ * @param contract - The contract instance to execute
43
+ * @param tester - The tester to use
44
+ * @param txLabel - The label of the transaction
45
+ * @param calldata - The calldata to use
46
+ * @returns The execution result
47
+ */
48
+ export async function executeCustomBytecode(
49
+ contract: ContractInstanceWithAddress,
50
+ tester: PublicTxSimulationTester,
51
+ txLabel: string = 'CustomBytecodeTest',
52
+ calldata: any[] = [],
53
+ ): Promise<PublicTxResult> {
36
54
  // EXECUTE! This means that if using AvmProvingTester subclass, it will PROVE the transaction!
37
55
  return await tester.executeTxWithLabel(
38
56
  /*txLabel=*/ txLabel,
39
- /*sender=*/ deployer,
57
+ /*sender=*/ contract.deployer,
40
58
  /*setupCalls=*/ [],
41
- /*appCalls=*/ [
42
- {
43
- address: testContract.address,
44
- fnName: 'public_dispatch',
45
- args: [],
46
- },
47
- ],
59
+ /*appCalls=*/ [{ address: contract.address, args: calldata }],
48
60
  );
49
61
  }
62
+
63
+ /**
64
+ * Deploy and execute a custom bytecode contract.
65
+ * @param bytecode - The bytecode buffer to use
66
+ * @param tester - The tester to use
67
+ * @param txLabel - The label of the transaction
68
+ * @param contractName - The name of the contract
69
+ * @param deployer - The deployer address
70
+ * @param calldata - The calldata to use
71
+ * @returns The execution result
72
+ */
73
+ export async function deployAndExecuteCustomBytecode(
74
+ bytecode: Buffer,
75
+ tester: PublicTxSimulationTester,
76
+ txLabel: string = 'CustomBytecodeTest',
77
+ contractName: string = 'CustomBytecodeContract',
78
+ deployer: AztecAddress = AztecAddress.fromNumber(42),
79
+ calldata: any[] = [],
80
+ ): Promise<PublicTxResult> {
81
+ const testContract = await deployCustomBytecode(bytecode, tester, contractName, deployer);
82
+ return await executeCustomBytecode(testContract, tester, txLabel, calldata);
83
+ }
@@ -1,9 +1,12 @@
1
1
  export * from './public_tx_simulation_tester.js';
2
2
  export * from './utils.js';
3
3
  export * from './simple_contract_data_source.js';
4
- export { readAvmMinimalPublicTxInputsFromFile, executeAvmMinimalPublicTx } from './minimal_public_tx.js';
5
4
  export { TestExecutorMetrics } from '../test_executor_metrics.js';
6
5
  export { ammTest } from './amm_test.js';
7
6
  export { bulkTest, megaBulkTest } from './bulk_test.js';
8
7
  export { tokenTest } from './token_test.js';
9
- export * from './custom_bytecode_tests.js';
8
+ export {
9
+ deployCustomBytecode,
10
+ executeCustomBytecode,
11
+ deployAndExecuteCustomBytecode,
12
+ } from './custom_bytecode_tester.js';
@@ -1,24 +1,25 @@
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';
9
12
  import { NativeWorldStateService } from '@aztec/world-state';
10
13
 
11
- import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
14
+ import { BaseAvmSimulationTester } from '../avm/testing/base_avm_simulation_tester.js';
12
15
  import {
13
16
  DEFAULT_BLOCK_NUMBER,
14
17
  DEFAULT_TIMESTAMP,
15
18
  getContractFunctionAbi,
16
19
  getFunctionSelector,
17
- } from '../avm/fixtures/utils.js';
20
+ } from '../avm/testing/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 { MeasuredPublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
22
23
  import type { MeasuredPublicTxSimulatorInterface } from '../public_tx_simulator/public_tx_simulator_interface.js';
23
24
  import { TestExecutorMetrics } from '../test_executor_metrics.js';
24
25
  import { SimpleContractDataSource } from './simple_contract_data_source.js';
@@ -29,12 +30,32 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
29
30
  export type TestEnqueuedCall = {
30
31
  sender?: AztecAddress;
31
32
  address: AztecAddress;
32
- fnName: string;
33
+ fnName?: string;
33
34
  args: any[];
34
35
  isStaticCall?: boolean;
35
36
  contractArtifact?: ContractArtifact;
36
37
  };
37
38
 
39
+ const defaultConfig: PublicSimulatorConfig = PublicSimulatorConfig.from({
40
+ skipFeeEnforcement: false,
41
+ collectCallMetadata: true,
42
+ collectDebugLogs: true,
43
+ collectHints: false,
44
+ collectPublicInputs: false,
45
+ collectStatistics: false,
46
+ });
47
+
48
+ /**
49
+ * Factory type for creating a MeasuredPublicTxSimulatorInterface.
50
+ */
51
+ export type MeasuredSimulatorFactory = (
52
+ merkleTree: MerkleTreeWriteOperations,
53
+ contractsDB: PublicContractsDB,
54
+ globals: GlobalVariables,
55
+ metrics: TestExecutorMetrics,
56
+ config: PublicSimulatorConfig,
57
+ ) => MeasuredPublicTxSimulatorInterface;
58
+
38
59
  /**
39
60
  * A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
40
61
  * It provides an interface for simulating one transaction at a time and maintains state between subsequent
@@ -50,30 +71,30 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
50
71
  contractDataSource: SimpleContractDataSource,
51
72
  globals: GlobalVariables = defaultGlobals(),
52
73
  private metrics: TestExecutorMetrics = new TestExecutorMetrics(),
53
- useCppSimulator: boolean = false,
74
+ simulatorFactory?: MeasuredSimulatorFactory,
75
+ config: PublicSimulatorConfig = defaultConfig,
54
76
  ) {
55
77
  super(contractDataSource, merkleTree);
56
78
 
57
79
  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);
80
+ if (simulatorFactory) {
81
+ this.simulator = simulatorFactory(merkleTree, contractsDB, globals, this.metrics, config);
82
+ } else {
83
+ this.simulator = new MeasuredPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
84
+ }
66
85
  }
67
86
 
68
87
  public static async create(
69
88
  worldStateService: NativeWorldStateService, // make sure to close this later
70
89
  globals: GlobalVariables = defaultGlobals(),
71
90
  metrics: TestExecutorMetrics = new TestExecutorMetrics(),
72
- useCppSimulator = false,
91
+ config: PublicSimulatorConfig = defaultConfig,
73
92
  ): Promise<PublicTxSimulationTester> {
74
93
  const contractDataSource = new SimpleContractDataSource();
75
94
  const merkleTree = await worldStateService.fork();
76
- return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, useCppSimulator);
95
+ const simulatorFactory: MeasuredSimulatorFactory = (mt, cdb, g, m, c) =>
96
+ new MeasuredPublicTxSimulator(mt, cdb, g, m, c);
97
+ return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, simulatorFactory, config);
77
98
  }
78
99
 
79
100
  public setMetricsPrefix(prefix: string) {
@@ -88,6 +109,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
88
109
  feePayer: AztecAddress = sender,
89
110
  /* need some unique first nullifier for note-nonce computations */
90
111
  privateInsertions: TestPrivateInsertions = { nonRevertible: { nullifiers: [new Fr(420000 + this.txCount)] } },
112
+ gasLimits?: Gas,
91
113
  ): Promise<Tx> {
92
114
  const setupCallRequests = await asyncMap(setupCalls, call =>
93
115
  this.#createPubicCallRequestForCall(call, call.sender ?? sender),
@@ -106,8 +128,14 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
106
128
  appCallRequests,
107
129
  teardownCallRequest,
108
130
  feePayer,
109
- /*gasUsedByPrivate*/ Gas.empty(),
131
+ /*gasUsedByPrivate*/ teardownCall
132
+ ? new Gas(
133
+ FALLBACK_TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD,
134
+ FALLBACK_TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD,
135
+ )
136
+ : new Gas(TX_DA_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD),
110
137
  defaultGlobals(),
138
+ gasLimits,
111
139
  );
112
140
  }
113
141
 
@@ -120,16 +148,24 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
120
148
  /* need some unique first nullifier for note-nonce computations */
121
149
  privateInsertions?: TestPrivateInsertions,
122
150
  txLabel: string = 'unlabeledTx',
151
+ gasLimits?: Gas,
123
152
  ): Promise<PublicTxResult> {
124
- const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions);
153
+ const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, gasLimits);
125
154
 
126
155
  await this.setFeePayerBalance(feePayer);
127
156
 
128
157
  const txLabelWithCount = `${txLabel}/${this.txCount - 1}`;
129
158
  const fullTxLabel = this.metricsPrefix ? `${this.metricsPrefix}/${txLabelWithCount}` : txLabelWithCount;
130
159
 
160
+ if (!this.simulator) {
161
+ throw new Error(
162
+ 'No simulator configured. Pass a simulatorFactory to the constructor or use PublicTxSimulationTester.create()',
163
+ );
164
+ }
131
165
  const avmResult = await this.simulator.simulate(tx, fullTxLabel);
132
166
 
167
+ await this.#recordBytecodeSizes(fullTxLabel, [...setupCalls, ...appCalls, ...(teardownCall ? [teardownCall] : [])]);
168
+
133
169
  // Something like this is often useful for debugging:
134
170
  //if (avmResult.revertReason) {
135
171
  // // resolve / enrich revert reason
@@ -159,8 +195,18 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
159
195
  teardownCall?: TestEnqueuedCall,
160
196
  feePayer?: AztecAddress,
161
197
  privateInsertions?: TestPrivateInsertions,
198
+ gasLimits?: Gas,
162
199
  ): Promise<PublicTxResult> {
163
- return await this.simulateTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, txLabel);
200
+ return await this.simulateTx(
201
+ sender,
202
+ setupCalls,
203
+ appCalls,
204
+ teardownCall,
205
+ feePayer,
206
+ privateInsertions,
207
+ txLabel,
208
+ gasLimits,
209
+ );
164
210
  }
165
211
 
166
212
  /**
@@ -178,6 +224,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
178
224
  teardownCall?: TestEnqueuedCall,
179
225
  feePayer?: AztecAddress,
180
226
  privateInsertions?: TestPrivateInsertions,
227
+ gasLimits?: Gas,
181
228
  ): Promise<PublicTxResult> {
182
229
  return await this.simulateTxWithLabel(
183
230
  txLabel,
@@ -187,6 +234,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
187
234
  teardownCall,
188
235
  feePayer,
189
236
  privateInsertions,
237
+ gasLimits,
190
238
  );
191
239
  }
192
240
 
@@ -194,6 +242,25 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
194
242
  this.metrics.prettyPrint();
195
243
  }
196
244
 
245
+ /**
246
+ * Cancel the current simulation if one is in progress.
247
+ * This signals the underlying simulator (e.g., C++) to stop at the next safe point.
248
+ * Safe to call even if no simulation is in progress.
249
+ *
250
+ * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
251
+ */
252
+ public async cancel(waitTimeoutMs?: number): Promise<void> {
253
+ await this.simulator.cancel?.(waitTimeoutMs);
254
+ }
255
+
256
+ /**
257
+ * Get the underlying simulator for advanced test scenarios.
258
+ * Use this when you need direct control over simulation (e.g., for testing cancellation).
259
+ */
260
+ public getSimulator(): MeasuredPublicTxSimulatorInterface {
261
+ return this.simulator;
262
+ }
263
+
197
264
  async #createPubicCallRequestForCall(
198
265
  call: TestEnqueuedCall,
199
266
  sender: AztecAddress,
@@ -204,21 +271,56 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
204
271
  throw new Error(`Contract artifact not found for address: ${address}`);
205
272
  }
206
273
 
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];
274
+ let calldata: Fr[] = [];
275
+ if (!call.fnName) {
276
+ this.logger.debug(
277
+ `No function name specified for call to contract ${call.address.toString()}. Assuming this is a custom bytecode with no public_dispatch function.`,
278
+ );
279
+ this.logger.debug(`Not using ABI to encode arguments. Not prepending fn selector to calldata.`);
280
+ try {
281
+ calldata = call.args.map(arg => new Fr(arg));
282
+ } catch (error) {
283
+ this.logger.warn(`Tried assuming that all arguments are Field-like. Failed. Error: ${error}`);
284
+ throw error;
285
+ }
286
+ } else {
287
+ const fnSelector = await getFunctionSelector(call.fnName, contractArtifact);
288
+ const fnAbi = getContractFunctionAbi(call.fnName, contractArtifact)!;
289
+ const encodedArgs = encodeArguments(fnAbi, call.args);
290
+ calldata = [fnSelector.toField(), ...encodedArgs];
291
+ }
211
292
  const isStaticCall = call.isStaticCall ?? false;
212
293
  const request = await PublicCallRequest.fromCalldata(sender, address, isStaticCall, calldata);
213
294
 
214
295
  return new PublicCallRequestWithCalldata(request, calldata);
215
296
  }
297
+
298
+ // WARNING: Deduplicates by artifact name, so two different artifacts with the same name
299
+ // in a single tx would only record the first one's bytecode size.
300
+ async #recordBytecodeSizes(txLabel: string, calls: TestEnqueuedCall[]) {
301
+ const seenArtifactNames = new Set<string>();
302
+ for (const call of calls) {
303
+ const artifact = await this.contractDataSource.getContractArtifact(call.address);
304
+ if (!artifact || seenArtifactNames.has(artifact.name)) {
305
+ continue;
306
+ }
307
+ seenArtifactNames.add(artifact.name);
308
+ const instance = await this.contractDataSource.getContract(call.address);
309
+ if (!instance) {
310
+ continue;
311
+ }
312
+ const contractClass = await this.contractDataSource.getContractClass(instance.currentContractClassId);
313
+ if (contractClass) {
314
+ this.metrics.recordBytecodeSize(txLabel, artifact.name, contractClass.packedBytecode.length);
315
+ }
316
+ }
317
+ }
216
318
  }
217
319
 
218
320
  export function defaultGlobals() {
219
321
  const globals = GlobalVariables.empty();
220
322
  globals.timestamp = DEFAULT_TIMESTAMP;
221
323
  globals.gasFees = DEFAULT_GAS_FEES; // apply some nonzero default gas fees
222
- globals.blockNumber = DEFAULT_BLOCK_NUMBER;
324
+ globals.blockNumber = BlockNumber(DEFAULT_BLOCK_NUMBER);
223
325
  return globals;
224
326
  }
@@ -1,10 +1,11 @@
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';
5
6
  import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
6
7
 
7
- import { getFunctionSelector } from '../avm/fixtures/utils.js';
8
+ import { getFunctionSelector } from '../avm/testing/utils.js';
8
9
 
9
10
  /**
10
11
  * This class is used during public/avm testing to function as a database of
@@ -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
  ];