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

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 (405) hide show
  1. package/README.md +6 -4
  2. package/dest/client.d.ts +1 -3
  3. package/dest/client.d.ts.map +1 -1
  4. package/dest/client.js +0 -2
  5. package/dest/common/errors.d.ts +2 -2
  6. package/dest/common/errors.d.ts.map +1 -1
  7. package/dest/common/index.d.ts +1 -1
  8. package/dest/common/stats/index.d.ts +1 -1
  9. package/dest/common/stats/stats.d.ts +1 -1
  10. package/dest/private/acvm/acvm.d.ts +4 -2
  11. package/dest/private/acvm/acvm.d.ts.map +1 -1
  12. package/dest/private/acvm/acvm.js +4 -3
  13. package/dest/private/acvm/acvm_types.d.ts +1 -1
  14. package/dest/private/acvm/deserialize.d.ts +2 -2
  15. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  16. package/dest/private/acvm/deserialize.js +1 -1
  17. package/dest/private/acvm/index.d.ts +1 -1
  18. package/dest/private/acvm/serialize.d.ts +2 -2
  19. package/dest/private/acvm/serialize.d.ts.map +1 -1
  20. package/dest/private/acvm/serialize.js +1 -1
  21. package/dest/private/acvm_native.d.ts +5 -3
  22. package/dest/private/acvm_native.d.ts.map +1 -1
  23. package/dest/private/acvm_native.js +8 -6
  24. package/dest/private/acvm_wasm.d.ts +4 -3
  25. package/dest/private/acvm_wasm.d.ts.map +1 -1
  26. package/dest/private/acvm_wasm.js +7 -5
  27. package/dest/private/acvm_wasm_with_blobs.d.ts +1 -1
  28. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -1
  29. package/dest/private/circuit_recording/circuit_recorder.d.ts +39 -25
  30. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  31. package/dest/private/circuit_recording/circuit_recorder.js +71 -72
  32. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +9 -20
  33. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  34. package/dest/private/circuit_recording/file_circuit_recorder.js +39 -43
  35. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
  36. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
  37. package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
  38. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  39. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  40. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
  41. package/dest/private/circuit_simulator.d.ts +1 -1
  42. package/dest/private/factory.d.ts +3 -3
  43. package/dest/private/factory.d.ts.map +1 -1
  44. package/dest/private/factory.js +7 -4
  45. package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
  46. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  47. package/dest/public/avm/testing/account_proof_fetcher.js +152 -0
  48. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +3 -2
  49. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  50. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +19 -4
  51. package/dest/public/avm/{fixtures → testing}/utils.d.ts +4 -10
  52. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  53. package/dest/public/avm/{fixtures → testing}/utils.js +7 -36
  54. package/dest/public/avm_simulator.d.ts +28 -0
  55. package/dest/public/avm_simulator.d.ts.map +1 -0
  56. package/dest/public/avm_simulator.js +4 -0
  57. package/dest/public/avm_simulator_pool.d.ts +45 -0
  58. package/dest/public/avm_simulator_pool.d.ts.map +1 -0
  59. package/dest/public/avm_simulator_pool.js +197 -0
  60. package/dest/public/cdb/generated/api_types.d.ts +171 -0
  61. package/dest/public/cdb/generated/api_types.d.ts.map +1 -0
  62. package/dest/public/cdb/generated/api_types.js +314 -0
  63. package/dest/public/cdb/generated/server.d.ts +26 -0
  64. package/dest/public/cdb/generated/server.d.ts.map +1 -0
  65. package/dest/public/cdb/generated/server.js +135 -0
  66. package/dest/public/cdb_ipc_server.d.ts +33 -0
  67. package/dest/public/cdb_ipc_server.d.ts.map +1 -0
  68. package/dest/public/cdb_ipc_server.js +153 -0
  69. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  70. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  71. package/dest/public/contracts_db_checkpoint.js +30 -0
  72. package/dest/public/db_interfaces.d.ts +14 -2
  73. package/dest/public/db_interfaces.d.ts.map +1 -1
  74. package/dest/public/executor_metrics.d.ts +3 -2
  75. package/dest/public/executor_metrics.d.ts.map +1 -1
  76. package/dest/public/executor_metrics.js +13 -34
  77. package/dest/public/executor_metrics_interface.d.ts +3 -2
  78. package/dest/public/executor_metrics_interface.d.ts.map +1 -1
  79. package/dest/public/fixtures/amm_test.d.ts +1 -1
  80. package/dest/public/fixtures/amm_test.js +6 -6
  81. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  82. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  83. package/dest/public/fixtures/bulk_test.js +38 -75
  84. package/dest/public/fixtures/custom_bytecode_tester.d.ts +29 -7
  85. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  86. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  87. package/dest/public/fixtures/index.d.ts +3 -3
  88. package/dest/public/fixtures/index.d.ts.map +1 -1
  89. package/dest/public/fixtures/index.js +2 -2
  90. package/dest/public/fixtures/public_processor_test_env.d.ts +30 -0
  91. package/dest/public/fixtures/public_processor_test_env.d.ts.map +1 -0
  92. package/dest/public/fixtures/public_processor_test_env.js +73 -0
  93. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +32 -9
  94. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  95. package/dest/public/fixtures/public_tx_simulation_tester.js +84 -26
  96. package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
  97. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  98. package/dest/public/fixtures/simple_contract_data_source.js +5 -5
  99. package/dest/public/fixtures/token_test.d.ts +6 -2
  100. package/dest/public/fixtures/token_test.d.ts.map +1 -1
  101. package/dest/public/fixtures/token_test.js +16 -15
  102. package/dest/public/fixtures/utils.d.ts +3 -3
  103. package/dest/public/fixtures/utils.d.ts.map +1 -1
  104. package/dest/public/fixtures/utils.js +25 -23
  105. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +67 -0
  106. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  107. package/dest/public/fuzzing/avm_fuzzer_simulator.js +185 -0
  108. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  109. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  110. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  111. package/dest/public/index.d.ts +6 -2
  112. package/dest/public/index.d.ts.map +1 -1
  113. package/dest/public/index.js +2 -1
  114. package/dest/public/public_db_sources.d.ts +29 -66
  115. package/dest/public/public_db_sources.d.ts.map +1 -1
  116. package/dest/public/public_db_sources.js +83 -134
  117. package/dest/public/public_errors.d.ts +1 -1
  118. package/dest/public/public_errors.d.ts.map +1 -1
  119. package/dest/public/public_processor/guarded_merkle_tree.d.ts +8 -5
  120. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  121. package/dest/public/public_processor/guarded_merkle_tree.js +12 -4
  122. package/dest/public/public_processor/public_processor.d.ts +24 -22
  123. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  124. package/dest/public/public_processor/public_processor.js +559 -125
  125. package/dest/public/public_processor/public_processor_metrics.d.ts +5 -2
  126. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  127. package/dest/public/public_processor/public_processor_metrics.js +36 -45
  128. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +17 -0
  129. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  130. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.js +39 -0
  131. package/dest/public/public_tx_simulator/factories.d.ts +14 -0
  132. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  133. package/dest/public/public_tx_simulator/factories.js +28 -0
  134. package/dest/public/public_tx_simulator/index.d.ts +6 -4
  135. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  136. package/dest/public/public_tx_simulator/index.js +3 -2
  137. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +43 -90
  138. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  139. package/dest/public/public_tx_simulator/public_tx_simulator.js +99 -331
  140. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +24 -0
  141. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  142. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +31 -0
  143. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +25 -2
  144. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  145. package/dest/public/side_effect_errors.d.ts +1 -1
  146. package/dest/public/side_effect_errors.d.ts.map +1 -1
  147. package/dest/public/test_executor_metrics.d.ts +6 -4
  148. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  149. package/dest/public/test_executor_metrics.js +7 -6
  150. package/dest/public/unique_class_ids.d.ts +1 -1
  151. package/dest/public/unique_class_ids.d.ts.map +1 -1
  152. package/dest/public/utils.d.ts +1 -1
  153. package/dest/server.d.ts +1 -1
  154. package/dest/testing.d.ts +1 -1
  155. package/package.json +26 -22
  156. package/src/client.ts +0 -2
  157. package/src/common/errors.ts +1 -1
  158. package/src/private/acvm/acvm.ts +4 -3
  159. package/src/private/acvm/deserialize.ts +1 -1
  160. package/src/private/acvm/serialize.ts +1 -1
  161. package/src/private/acvm_native.ts +11 -5
  162. package/src/private/acvm_wasm.ts +11 -4
  163. package/src/private/circuit_recording/circuit_recorder.ts +90 -81
  164. package/src/private/circuit_recording/file_circuit_recorder.ts +45 -50
  165. package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
  166. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
  167. package/src/private/factory.ts +7 -4
  168. package/src/public/avm/testing/account_proof.json +553 -0
  169. package/src/public/avm/testing/account_proof_fetcher.ts +166 -0
  170. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +24 -4
  171. package/src/public/avm/{fixtures → testing}/utils.ts +7 -42
  172. package/src/public/avm_simulator.ts +29 -0
  173. package/src/public/avm_simulator_pool.ts +226 -0
  174. package/src/public/cdb/generated/api_types.ts +457 -0
  175. package/src/public/cdb/generated/server.ts +109 -0
  176. package/src/public/cdb_ipc_server.ts +197 -0
  177. package/src/public/contracts_db_checkpoint.ts +41 -0
  178. package/src/public/db_interfaces.ts +16 -1
  179. package/src/public/executor_metrics.ts +11 -34
  180. package/src/public/executor_metrics_interface.ts +2 -1
  181. package/src/public/fixtures/amm_test.ts +6 -6
  182. package/src/public/fixtures/bulk_test.ts +40 -15
  183. package/src/public/fixtures/custom_bytecode_tester.ts +54 -20
  184. package/src/public/fixtures/index.ts +6 -2
  185. package/src/public/fixtures/public_processor_test_env.ts +88 -0
  186. package/src/public/fixtures/public_tx_simulation_tester.ts +117 -26
  187. package/src/public/fixtures/simple_contract_data_source.ts +9 -10
  188. package/src/public/fixtures/token_test.ts +21 -13
  189. package/src/public/fixtures/utils.ts +25 -27
  190. package/src/public/fuzzing/avm_fuzzer_simulator.ts +303 -0
  191. package/src/public/fuzzing/avm_simulator_bin.ts +173 -0
  192. package/src/public/index.ts +8 -2
  193. package/src/public/public_db_sources.ts +112 -174
  194. package/src/public/public_processor/guarded_merkle_tree.ts +14 -6
  195. package/src/public/public_processor/public_processor.ts +234 -138
  196. package/src/public/public_processor/public_processor_metrics.ts +28 -44
  197. package/src/public/public_tx_simulator/dumping_public_tx_simulator.ts +67 -0
  198. package/src/public/public_tx_simulator/factories.ts +61 -0
  199. package/src/public/public_tx_simulator/index.ts +8 -3
  200. package/src/public/public_tx_simulator/public_tx_simulator.ts +142 -500
  201. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
  202. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +24 -2
  203. package/src/public/test_executor_metrics.ts +10 -8
  204. package/dest/public/avm/avm_context.d.ts +0 -41
  205. package/dest/public/avm/avm_context.d.ts.map +0 -1
  206. package/dest/public/avm/avm_context.js +0 -44
  207. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  208. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  209. package/dest/public/avm/avm_contract_call_result.js +0 -54
  210. package/dest/public/avm/avm_execution_environment.d.ts +0 -23
  211. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  212. package/dest/public/avm/avm_execution_environment.js +0 -36
  213. package/dest/public/avm/avm_gas.d.ts +0 -44
  214. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  215. package/dest/public/avm/avm_gas.js +0 -195
  216. package/dest/public/avm/avm_machine_state.d.ts +0 -97
  217. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  218. package/dest/public/avm/avm_machine_state.js +0 -109
  219. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  220. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  221. package/dest/public/avm/avm_memory_types.js +0 -351
  222. package/dest/public/avm/avm_simulator.d.ts +0 -39
  223. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  224. package/dest/public/avm/avm_simulator.js +0 -190
  225. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  226. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  227. package/dest/public/avm/avm_simulator_interface.js +0 -3
  228. package/dest/public/avm/errors.d.ts +0 -98
  229. package/dest/public/avm/errors.d.ts.map +0 -1
  230. package/dest/public/avm/errors.js +0 -129
  231. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  232. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  233. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -74
  234. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  235. package/dest/public/avm/fixtures/initializers.d.ts +0 -43
  236. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  237. package/dest/public/avm/fixtures/initializers.js +0 -42
  238. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  239. package/dest/public/avm/index.d.ts +0 -2
  240. package/dest/public/avm/index.d.ts.map +0 -1
  241. package/dest/public/avm/index.js +0 -1
  242. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -75
  243. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  244. package/dest/public/avm/opcodes/accrued_substate.js +0 -255
  245. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  246. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  247. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  248. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -47
  249. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  250. package/dest/public/avm/opcodes/arithmetic.js +0 -87
  251. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  252. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  253. package/dest/public/avm/opcodes/bitwise.js +0 -99
  254. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  255. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  256. package/dest/public/avm/opcodes/comparators.js +0 -43
  257. package/dest/public/avm/opcodes/contract.d.ts +0 -20
  258. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  259. package/dest/public/avm/opcodes/contract.js +0 -65
  260. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  261. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  262. package/dest/public/avm/opcodes/control_flow.js +0 -107
  263. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  264. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  265. package/dest/public/avm/opcodes/conversion.js +0 -333
  266. package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
  267. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  268. package/dest/public/avm/opcodes/ec_add.js +0 -84
  269. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  270. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  271. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  272. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  273. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  274. package/dest/public/avm/opcodes/external_calls.js +0 -209
  275. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  276. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  277. package/dest/public/avm/opcodes/hashing.js +0 -114
  278. package/dest/public/avm/opcodes/index.d.ts +0 -16
  279. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  280. package/dest/public/avm/opcodes/index.js +0 -15
  281. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  282. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  283. package/dest/public/avm/opcodes/instruction.js +0 -95
  284. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  285. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  286. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  287. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  288. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  289. package/dest/public/avm/opcodes/memory.js +0 -257
  290. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  291. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  292. package/dest/public/avm/opcodes/misc.js +0 -73
  293. package/dest/public/avm/opcodes/storage.d.ts +0 -24
  294. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  295. package/dest/public/avm/opcodes/storage.js +0 -68
  296. package/dest/public/avm/revert_reason.d.ts +0 -18
  297. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  298. package/dest/public/avm/revert_reason.js +0 -38
  299. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  300. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  301. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  302. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  303. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  304. package/dest/public/avm/serialization/bytecode_serialization.js +0 -333
  305. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  306. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  307. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  308. package/dest/public/avm/test_utils.d.ts +0 -15
  309. package/dest/public/avm/test_utils.d.ts.map +0 -1
  310. package/dest/public/avm/test_utils.js +0 -44
  311. package/dest/public/debug_fn_name.d.ts +0 -5
  312. package/dest/public/debug_fn_name.d.ts.map +0 -1
  313. package/dest/public/debug_fn_name.js +0 -9
  314. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -9
  315. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  316. package/dest/public/fixtures/custom_bytecode_tests.js +0 -109
  317. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -10
  318. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  319. package/dest/public/fixtures/minimal_public_tx.js +0 -29
  320. package/dest/public/hinting_db_sources.d.ts +0 -70
  321. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  322. package/dest/public/hinting_db_sources.js +0 -297
  323. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -41
  324. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  325. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -89
  326. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -24
  327. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  328. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  329. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -127
  330. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  331. package/dest/public/public_tx_simulator/public_tx_context.js +0 -292
  332. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  333. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  334. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -39
  335. package/dest/public/side_effect_trace.d.ts +0 -87
  336. package/dest/public/side_effect_trace.d.ts.map +0 -1
  337. package/dest/public/side_effect_trace.js +0 -199
  338. package/dest/public/side_effect_trace_interface.d.ts +0 -23
  339. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  340. package/dest/public/side_effect_trace_interface.js +0 -1
  341. package/dest/public/state_manager/index.d.ts +0 -2
  342. package/dest/public/state_manager/index.d.ts.map +0 -1
  343. package/dest/public/state_manager/index.js +0 -1
  344. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  345. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  346. package/dest/public/state_manager/nullifiers.js +0 -92
  347. package/dest/public/state_manager/public_storage.d.ts +0 -66
  348. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  349. package/dest/public/state_manager/public_storage.js +0 -145
  350. package/dest/public/state_manager/state_manager.d.ts +0 -166
  351. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  352. package/dest/public/state_manager/state_manager.js +0 -391
  353. package/dest/public/tx_contract_cache.d.ts +0 -41
  354. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  355. package/dest/public/tx_contract_cache.js +0 -49
  356. package/src/public/avm/avm_context.ts +0 -61
  357. package/src/public/avm/avm_contract_call_result.ts +0 -67
  358. package/src/public/avm/avm_execution_environment.ts +0 -48
  359. package/src/public/avm/avm_gas.ts +0 -183
  360. package/src/public/avm/avm_machine_state.ts +0 -169
  361. package/src/public/avm/avm_memory_types.ts +0 -436
  362. package/src/public/avm/avm_simulator.ts +0 -274
  363. package/src/public/avm/avm_simulator_interface.ts +0 -8
  364. package/src/public/avm/errors.ts +0 -163
  365. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -108
  366. package/src/public/avm/fixtures/initializers.ts +0 -104
  367. package/src/public/avm/index.ts +0 -1
  368. package/src/public/avm/opcodes/accrued_substate.ts +0 -288
  369. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  370. package/src/public/avm/opcodes/arithmetic.ts +0 -117
  371. package/src/public/avm/opcodes/bitwise.ts +0 -113
  372. package/src/public/avm/opcodes/comparators.ts +0 -55
  373. package/src/public/avm/opcodes/contract.ts +0 -75
  374. package/src/public/avm/opcodes/control_flow.ts +0 -123
  375. package/src/public/avm/opcodes/conversion.ts +0 -104
  376. package/src/public/avm/opcodes/ec_add.ts +0 -96
  377. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  378. package/src/public/avm/opcodes/external_calls.ts +0 -260
  379. package/src/public/avm/opcodes/hashing.ts +0 -145
  380. package/src/public/avm/opcodes/index.ts +0 -15
  381. package/src/public/avm/opcodes/instruction.ts +0 -136
  382. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  383. package/src/public/avm/opcodes/memory.ts +0 -293
  384. package/src/public/avm/opcodes/misc.ts +0 -102
  385. package/src/public/avm/opcodes/storage.ts +0 -87
  386. package/src/public/avm/revert_reason.ts +0 -55
  387. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  388. package/src/public/avm/serialization/bytecode_serialization.ts +0 -204
  389. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  390. package/src/public/avm/test_utils.ts +0 -64
  391. package/src/public/debug_fn_name.ts +0 -18
  392. package/src/public/fixtures/custom_bytecode_tests.ts +0 -135
  393. package/src/public/fixtures/minimal_public_tx.ts +0 -36
  394. package/src/public/hinting_db_sources.ts +0 -505
  395. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -128
  396. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -109
  397. package/src/public/public_tx_simulator/public_tx_context.ts +0 -471
  398. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  399. package/src/public/side_effect_trace.ts +0 -290
  400. package/src/public/side_effect_trace_interface.ts +0 -28
  401. package/src/public/state_manager/index.ts +0 -1
  402. package/src/public/state_manager/nullifiers.ts +0 -103
  403. package/src/public/state_manager/public_storage.ts +0 -174
  404. package/src/public/state_manager/state_manager.ts +0 -560
  405. package/src/public/tx_contract_cache.ts +0 -69
@@ -0,0 +1,88 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { TestDateProvider } from '@aztec/foundation/timer';
3
+ import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
4
+ import { GasFees } from '@aztec/stdlib/gas';
5
+ import { GlobalVariables } from '@aztec/stdlib/tx';
6
+ import { getTelemetryClient } from '@aztec/telemetry-client';
7
+ import { NativeWorldStateService } from '@aztec/world-state';
8
+
9
+ import { AvmSimulatorPool } from '../avm_simulator_pool.js';
10
+ import { PublicContractsDB } from '../public_db_sources.js';
11
+ import { GuardedMerkleTreeOperations } from '../public_processor/guarded_merkle_tree.js';
12
+ import { PublicProcessor } from '../public_processor/public_processor.js';
13
+ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
14
+ import { PublicTxSimulationTester } from './public_tx_simulation_tester.js';
15
+ import { SimpleContractDataSource } from './simple_contract_data_source.js';
16
+
17
+ /** Options for {@link PublicProcessorTestEnv.create}. */
18
+ export interface PublicProcessorTestEnvOptions {
19
+ /** Global variables shared by the processor and the tester. Defaults to empty with nonzero gas fees. */
20
+ globals?: GlobalVariables;
21
+ /** Simulator config for the processor's PublicTxSimulator. */
22
+ config?: Partial<PublicSimulatorConfig>;
23
+ }
24
+
25
+ function defaultGlobals(): GlobalVariables {
26
+ const globals = GlobalVariables.empty();
27
+ globals.gasFees = new GasFees(2, 3);
28
+ return globals;
29
+ }
30
+
31
+ const defaultConfig = PublicSimulatorConfig.from({
32
+ skipFeeEnforcement: false,
33
+ collectDebugLogs: true,
34
+ collectHints: false,
35
+ collectStatistics: false,
36
+ collectCallMetadata: true,
37
+ });
38
+
39
+ /**
40
+ * Bundles the real-AVM wiring shared by public-processor app tests: a live WSDB world state, a CDB IPC
41
+ * server, a spawned AVM simulator, a {@link PublicProcessor} backed by all three, and a setup-only
42
+ * {@link PublicTxSimulationTester} sharing the same fork and contract data source for building txs and
43
+ * seeding balances. Own it with `await using`, or call {@link Symbol.asyncDispose} from `afterEach`.
44
+ */
45
+ export class PublicProcessorTestEnv implements AsyncDisposable {
46
+ private constructor(
47
+ public readonly processor: PublicProcessor,
48
+ public readonly tester: PublicTxSimulationTester,
49
+ public readonly contractsDB: PublicContractsDB,
50
+ public readonly globals: GlobalVariables,
51
+ private readonly worldStateService: NativeWorldStateService,
52
+ private readonly avmSimulator: AvmSimulatorPool,
53
+ ) {}
54
+
55
+ static async create(opts: PublicProcessorTestEnvOptions = {}): Promise<PublicProcessorTestEnv> {
56
+ const globals = opts.globals ?? defaultGlobals();
57
+ const config = opts.config ? PublicSimulatorConfig.from({ ...defaultConfig, ...opts.config }) : defaultConfig;
58
+
59
+ const contractDataSource = new SimpleContractDataSource();
60
+ const worldStateService = await NativeWorldStateService.tmp();
61
+ const merkleTrees = await worldStateService.fork();
62
+ const contractsDB = new PublicContractsDB(contractDataSource);
63
+
64
+ const forkId = merkleTrees.getRevision().forkId;
65
+ const avmSimulator = await AvmSimulatorPool.spawn({ wsdbIpcPath: worldStateService.getIpcPath() });
66
+
67
+ const simulator = new PublicTxSimulator(avmSimulator, globals, contractsDB, forkId, config, undefined);
68
+ const processor = new PublicProcessor(
69
+ globals,
70
+ new GuardedMerkleTreeOperations(merkleTrees),
71
+ contractsDB,
72
+ simulator,
73
+ new TestDateProvider(),
74
+ getTelemetryClient(),
75
+ createLogger('simulator:public-processor'),
76
+ );
77
+
78
+ const tester = new PublicTxSimulationTester(merkleTrees, contractDataSource, globals);
79
+
80
+ return new PublicProcessorTestEnv(processor, tester, contractsDB, globals, worldStateService, avmSimulator);
81
+ }
82
+
83
+ async [Symbol.asyncDispose](): Promise<void> {
84
+ await this.avmSimulator[Symbol.asyncDispose]();
85
+ await this.tester.close();
86
+ await this.worldStateService.close();
87
+ }
88
+ }
@@ -1,6 +1,9 @@
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
8
  import { Gas, GasFees } from '@aztec/stdlib/gas';
6
9
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
@@ -8,33 +11,54 @@ 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';
21
+ import { AvmSimulatorPool } from '../avm_simulator_pool.js';
18
22
  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';
23
+ import { MeasuredPublicTxSimulator } from '../public_tx_simulator/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';
25
27
  import { type TestPrivateInsertions, createTxForPublicCalls } from './utils.js';
26
28
 
27
29
  const DEFAULT_GAS_FEES = new GasFees(2, 3);
30
+ const TEARDOWN_DA_GAS_LIMIT = 98_304;
31
+ const TEARDOWN_L2_GAS_LIMIT = 817_500;
28
32
 
29
33
  export type TestEnqueuedCall = {
30
34
  sender?: AztecAddress;
31
35
  address: AztecAddress;
32
- fnName: string;
36
+ fnName?: string;
33
37
  args: any[];
34
38
  isStaticCall?: boolean;
35
39
  contractArtifact?: ContractArtifact;
36
40
  };
37
41
 
42
+ const defaultConfig: PublicSimulatorConfig = PublicSimulatorConfig.from({
43
+ skipFeeEnforcement: false,
44
+ collectCallMetadata: true,
45
+ collectDebugLogs: true,
46
+ collectHints: false,
47
+ collectPublicInputs: false,
48
+ collectStatistics: false,
49
+ });
50
+
51
+ /**
52
+ * Factory type for creating a MeasuredPublicTxSimulatorInterface.
53
+ */
54
+ export type MeasuredSimulatorFactory = (
55
+ merkleTree: MerkleTreeWriteOperations,
56
+ contractsDB: PublicContractsDB,
57
+ globals: GlobalVariables,
58
+ metrics: TestExecutorMetrics,
59
+ config: PublicSimulatorConfig,
60
+ ) => MeasuredPublicTxSimulatorInterface;
61
+
38
62
  /**
39
63
  * A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
40
64
  * It provides an interface for simulating one transaction at a time and maintains state between subsequent
@@ -42,38 +66,53 @@ export type TestEnqueuedCall = {
42
66
  */
43
67
  export class PublicTxSimulationTester extends BaseAvmSimulationTester {
44
68
  protected txCount: number = 0;
45
- private simulator: MeasuredPublicTxSimulatorInterface;
69
+ private simulator: MeasuredPublicTxSimulatorInterface | undefined;
46
70
  private metricsPrefix?: string;
71
+ protected avmSimulator?: AvmSimulatorPool;
47
72
 
48
73
  constructor(
49
74
  merkleTree: MerkleTreeWriteOperations,
50
75
  contractDataSource: SimpleContractDataSource,
51
76
  globals: GlobalVariables = defaultGlobals(),
52
77
  private metrics: TestExecutorMetrics = new TestExecutorMetrics(),
53
- useCppSimulator: boolean = false,
78
+ simulatorFactory?: MeasuredSimulatorFactory,
79
+ config: PublicSimulatorConfig = defaultConfig,
54
80
  ) {
55
81
  super(contractDataSource, merkleTree);
56
82
 
57
83
  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);
84
+ if (simulatorFactory) {
85
+ this.simulator = simulatorFactory(merkleTree, contractsDB, globals, this.metrics, config);
86
+ } else {
87
+ // No simulator — this tester can only be used for setup (setFeePayerBalance, createTx, etc.)
88
+ // To simulate, use PublicTxSimulationTester.create() or pass a simulatorFactory.
89
+ this.simulator = undefined;
90
+ }
66
91
  }
67
92
 
68
93
  public static async create(
69
94
  worldStateService: NativeWorldStateService, // make sure to close this later
70
95
  globals: GlobalVariables = defaultGlobals(),
71
96
  metrics: TestExecutorMetrics = new TestExecutorMetrics(),
72
- useCppSimulator = false,
97
+ config: PublicSimulatorConfig = defaultConfig,
73
98
  ): Promise<PublicTxSimulationTester> {
74
99
  const contractDataSource = new SimpleContractDataSource();
75
100
  const merkleTree = await worldStateService.fork();
76
- return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, useCppSimulator);
101
+
102
+ const avmSimulator = await AvmSimulatorPool.spawn({ wsdbIpcPath: worldStateService.getIpcPath() });
103
+ const simulatorFactory: MeasuredSimulatorFactory = (mt, cdb, g, m, c) =>
104
+ new MeasuredPublicTxSimulator(avmSimulator, g, cdb, mt.getRevision().forkId, m, c, undefined);
105
+
106
+ const tester = new PublicTxSimulationTester(
107
+ merkleTree,
108
+ contractDataSource,
109
+ globals,
110
+ metrics,
111
+ simulatorFactory,
112
+ config,
113
+ );
114
+ tester.avmSimulator = avmSimulator;
115
+ return tester;
77
116
  }
78
117
 
79
118
  public setMetricsPrefix(prefix: string) {
@@ -88,6 +127,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
88
127
  feePayer: AztecAddress = sender,
89
128
  /* need some unique first nullifier for note-nonce computations */
90
129
  privateInsertions: TestPrivateInsertions = { nonRevertible: { nullifiers: [new Fr(420000 + this.txCount)] } },
130
+ gasLimits?: Gas,
91
131
  ): Promise<Tx> {
92
132
  const setupCallRequests = await asyncMap(setupCalls, call =>
93
133
  this.#createPubicCallRequestForCall(call, call.sender ?? sender),
@@ -106,8 +146,11 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
106
146
  appCallRequests,
107
147
  teardownCallRequest,
108
148
  feePayer,
109
- /*gasUsedByPrivate*/ Gas.empty(),
149
+ /*gasUsedByPrivate*/ teardownCall
150
+ ? new Gas(TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD, TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD)
151
+ : new Gas(TX_DA_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD),
110
152
  defaultGlobals(),
153
+ gasLimits,
111
154
  );
112
155
  }
113
156
 
@@ -120,14 +163,20 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
120
163
  /* need some unique first nullifier for note-nonce computations */
121
164
  privateInsertions?: TestPrivateInsertions,
122
165
  txLabel: string = 'unlabeledTx',
166
+ gasLimits?: Gas,
123
167
  ): Promise<PublicTxResult> {
124
- const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions);
168
+ const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, gasLimits);
125
169
 
126
170
  await this.setFeePayerBalance(feePayer);
127
171
 
128
172
  const txLabelWithCount = `${txLabel}/${this.txCount - 1}`;
129
173
  const fullTxLabel = this.metricsPrefix ? `${this.metricsPrefix}/${txLabelWithCount}` : txLabelWithCount;
130
174
 
175
+ if (!this.simulator) {
176
+ throw new Error(
177
+ 'No simulator configured. Pass a simulatorFactory to the constructor or use PublicTxSimulationTester.create()',
178
+ );
179
+ }
131
180
  const avmResult = await this.simulator.simulate(tx, fullTxLabel);
132
181
 
133
182
  // Something like this is often useful for debugging:
@@ -194,6 +243,34 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
194
243
  this.metrics.prettyPrint();
195
244
  }
196
245
 
246
+ /** Clean up IPC resources (AVM simulator pool and merkle tree fork) created by create(). */
247
+ public async close(): Promise<void> {
248
+ await this.avmSimulator?.[Symbol.asyncDispose]();
249
+ // Close the merkle tree fork to release IPC resources before the wsdb process is killed.
250
+ if (this.merkleTrees?.close) {
251
+ await this.merkleTrees.close().catch(() => {});
252
+ }
253
+ }
254
+
255
+ /**
256
+ * Cancel the current simulation if one is in progress.
257
+ * This signals the underlying simulator to stop at the next safe point.
258
+ * Safe to call even if no simulation is in progress.
259
+ *
260
+ * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
261
+ */
262
+ public async cancel(waitTimeoutMs?: number): Promise<void> {
263
+ await this.simulator?.cancel?.(waitTimeoutMs);
264
+ }
265
+
266
+ /**
267
+ * Get the underlying simulator for advanced test scenarios.
268
+ * Use this when you need direct control over simulation (e.g., for testing cancellation).
269
+ */
270
+ public getSimulator(): MeasuredPublicTxSimulatorInterface | undefined {
271
+ return this.simulator;
272
+ }
273
+
197
274
  async #createPubicCallRequestForCall(
198
275
  call: TestEnqueuedCall,
199
276
  sender: AztecAddress,
@@ -204,10 +281,24 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
204
281
  throw new Error(`Contract artifact not found for address: ${address}`);
205
282
  }
206
283
 
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];
284
+ let calldata: Fr[] = [];
285
+ if (!call.fnName) {
286
+ this.logger.debug(
287
+ `No function name specified for call to contract ${call.address.toString()}. Assuming this is a custom bytecode with no public_dispatch function.`,
288
+ );
289
+ this.logger.debug(`Not using ABI to encode arguments. Not prepending fn selector to calldata.`);
290
+ try {
291
+ calldata = call.args.map(arg => new Fr(arg));
292
+ } catch (error) {
293
+ this.logger.warn(`Tried assuming that all arguments are Field-like. Failed. Error: ${error}`);
294
+ throw error;
295
+ }
296
+ } else {
297
+ const fnSelector = await getFunctionSelector(call.fnName, contractArtifact);
298
+ const fnAbi = getContractFunctionAbi(call.fnName, contractArtifact)!;
299
+ const encodedArgs = encodeArguments(fnAbi, call.args);
300
+ calldata = [fnSelector.toField(), ...encodedArgs];
301
+ }
211
302
  const isStaticCall = call.isStaticCall ?? false;
212
303
  const request = await PublicCallRequest.fromCalldata(sender, address, isStaticCall, calldata);
213
304
 
@@ -219,6 +310,6 @@ export function defaultGlobals() {
219
310
  const globals = GlobalVariables.empty();
220
311
  globals.timestamp = DEFAULT_TIMESTAMP;
221
312
  globals.gasFees = DEFAULT_GAS_FEES; // apply some nonzero default gas fees
222
- globals.blockNumber = DEFAULT_BLOCK_NUMBER;
313
+ globals.blockNumber = BlockNumber(DEFAULT_BLOCK_NUMBER);
223
314
  return globals;
224
315
  }
@@ -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,17 +7,23 @@ 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
 
18
- const admin = AztecAddress.fromNumber(42);
19
- const sender = AztecAddress.fromNumber(111);
20
- const receiver = AztecAddress.fromNumber(222);
24
+ const admin = AztecAddress.fromNumberUnsafe(42);
25
+ const sender = AztecAddress.fromNumberUnsafe(111);
26
+ const receiver = AztecAddress.fromNumberUnsafe(222);
21
27
 
22
28
  const token = await setUpToken(tester, tokenArtifact, admin, expectToBeTrue);
23
29
 
@@ -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,14 +2,12 @@ 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';
@@ -38,6 +36,9 @@ import {
38
36
 
39
37
  import { strict as assert } from 'assert';
40
38
 
39
+ const TEARDOWN_DA_GAS_LIMIT = 98_304;
40
+ const TEARDOWN_L2_GAS_LIMIT = 817_500;
41
+
41
42
  export type TestPrivateInsertions = {
42
43
  revertible?: {
43
44
  nullifiers?: Fr[];
@@ -62,13 +63,14 @@ export async function createTxForPublicCalls(
62
63
  feePayer = AztecAddress.zero(),
63
64
  gasUsedByPrivate: Gas = Gas.empty(),
64
65
  globals: GlobalVariables = GlobalVariables.empty(),
66
+ gasLimits?: Gas,
65
67
  ): Promise<Tx> {
66
68
  assert(
67
69
  setupCallRequests.length > 0 || appCallRequests.length > 0 || teardownCallRequest !== undefined,
68
70
  "Can't create public tx with no enqueued calls",
69
71
  );
70
72
  // use max limits
71
- const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
73
+ gasLimits = gasLimits ?? new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
72
74
 
73
75
  const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
74
76
 
@@ -127,21 +129,18 @@ export async function createTxForPublicCalls(
127
129
  }
128
130
 
129
131
  const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
130
- const teardownGasLimits = teardownCallRequest
131
- ? new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT)
132
- : Gas.empty();
132
+ const teardownGasLimits = teardownCallRequest ? new Gas(TEARDOWN_DA_GAS_LIMIT, TEARDOWN_L2_GAS_LIMIT) : Gas.empty();
133
133
  const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
134
134
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
135
- const header = BlockHeader.empty();
136
- header.globalVariables = globals;
135
+ const header = BlockHeader.empty({ globalVariables: globals });
137
136
  const constantData = new TxConstantData(header, txContext, Fr.zero(), Fr.zero());
138
- const includeByTimestamp = 0n; // Not used in the simulator.
137
+ const expirationTimestamp = 0n; // Not used in the simulator.
139
138
 
140
139
  const txData = new PrivateKernelTailCircuitPublicInputs(
141
140
  constantData,
142
141
  /*gasUsed=*/ gasUsedByPrivate,
143
142
  feePayer,
144
- includeByTimestamp,
143
+ expirationTimestamp,
145
144
  forPublic,
146
145
  );
147
146
 
@@ -164,7 +163,7 @@ export async function createTxForPrivateOnly(
164
163
  gasUsedByPrivate: Gas = new Gas(10, 10),
165
164
  ): Promise<Tx> {
166
165
  // use max limits
167
- const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
166
+ const gasLimits = new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
168
167
 
169
168
  const forRollup = PartialPrivateTailPublicInputsForRollup.empty();
170
169
 
@@ -172,13 +171,13 @@ export async function createTxForPrivateOnly(
172
171
  const gasSettings = new GasSettings(gasLimits, Gas.empty(), maxFeesPerGas, GasFees.empty());
173
172
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
174
173
  const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
175
- const includeByTimestamp = 0n; // Not used in the simulator.
174
+ const expirationTimestamp = 0n; // Not used in the simulator.
176
175
 
177
176
  const txData = new PrivateKernelTailCircuitPublicInputs(
178
177
  constantData,
179
178
  /*gasUsed=*/ gasUsedByPrivate,
180
179
  feePayer,
181
- includeByTimestamp,
180
+ expirationTimestamp,
182
181
  /*forPublic=*/ undefined,
183
182
  forRollup,
184
183
  );
@@ -229,17 +228,15 @@ export async function addNewContractInstanceToTx(
229
228
  contractInstance: ContractInstanceWithAddress,
230
229
  skipNullifierInsertion = false,
231
230
  ) {
232
- // can't use publicKeys.toFields() because it includes isInfinite which
233
- // is not broadcast in such private logs
231
+ // Only ivpk_m is broadcast as a point (x, y); the other five keys are hashes.
234
232
  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,
233
+ contractInstance.publicKeys.npkMHash,
234
+ contractInstance.publicKeys.ivpkM.x,
235
+ contractInstance.publicKeys.ivpkM.y,
236
+ contractInstance.publicKeys.ovpkMHash,
237
+ contractInstance.publicKeys.tpkMHash,
238
+ contractInstance.publicKeys.mspkMHash,
239
+ contractInstance.publicKeys.fbpkMHash,
243
240
  ];
244
241
  const logFields = [
245
242
  CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG,
@@ -248,6 +245,7 @@ export async function addNewContractInstanceToTx(
248
245
  new Fr(contractInstance.salt),
249
246
  contractInstance.currentContractClassId,
250
247
  contractInstance.initializationHash,
248
+ contractInstance.immutablesHash,
251
249
  ...publicKeysAsFields,
252
250
  contractInstance.deployer.toField(),
253
251
  ];
@@ -257,7 +255,7 @@ export async function addNewContractInstanceToTx(
257
255
  );
258
256
 
259
257
  const contractAddressNullifier = await siloNullifier(
260
- AztecAddress.fromNumber(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS),
258
+ AztecAddress.fromNumberUnsafe(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS),
261
259
  contractInstance.address.toField(),
262
260
  );
263
261