@aztec/simulator 0.0.0-test.0 → 0.0.1-commit.0208eb9

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 (528) hide show
  1. package/README.md +8 -0
  2. package/dest/client.d.ts +6 -4
  3. package/dest/client.d.ts.map +1 -1
  4. package/dest/client.js +4 -2
  5. package/dest/common/errors.d.ts +6 -9
  6. package/dest/common/errors.d.ts.map +1 -1
  7. package/dest/common/errors.js +51 -32
  8. package/dest/common/index.d.ts +1 -2
  9. package/dest/common/index.d.ts.map +1 -1
  10. package/dest/common/index.js +0 -1
  11. package/dest/common/stats/index.d.ts +1 -1
  12. package/dest/common/stats/stats.d.ts +1 -1
  13. package/dest/private/acvm/acvm.d.ts +15 -7
  14. package/dest/private/acvm/acvm.d.ts.map +1 -1
  15. package/dest/private/acvm/acvm.js +14 -19
  16. package/dest/private/acvm/acvm_types.d.ts +2 -2
  17. package/dest/private/acvm/acvm_types.d.ts.map +1 -1
  18. package/dest/private/acvm/deserialize.d.ts +19 -20
  19. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  20. package/dest/private/acvm/deserialize.js +32 -24
  21. package/dest/private/acvm/index.d.ts +1 -2
  22. package/dest/private/acvm/index.d.ts.map +1 -1
  23. package/dest/private/acvm/index.js +0 -1
  24. package/dest/private/acvm/serialize.d.ts +21 -4
  25. package/dest/private/acvm/serialize.d.ts.map +1 -1
  26. package/dest/private/acvm/serialize.js +54 -1
  27. package/dest/private/acvm_native.d.ts +41 -0
  28. package/dest/private/acvm_native.d.ts.map +1 -0
  29. package/dest/private/{providers/acvm_native.js → acvm_native.js} +34 -26
  30. package/dest/private/acvm_wasm.d.ts +16 -0
  31. package/dest/private/acvm_wasm.d.ts.map +1 -0
  32. package/dest/private/acvm_wasm.js +65 -0
  33. package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
  34. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
  35. package/dest/private/acvm_wasm_with_blobs.js +35 -0
  36. package/dest/private/circuit_recording/circuit_recorder.d.ts +109 -0
  37. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
  38. package/dest/private/circuit_recording/circuit_recorder.js +212 -0
  39. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +32 -0
  40. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
  41. package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
  42. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +10 -0
  43. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
  44. package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
  45. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
  46. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
  47. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
  48. package/dest/private/circuit_simulator.d.ts +35 -0
  49. package/dest/private/circuit_simulator.d.ts.map +1 -0
  50. package/dest/private/circuit_simulator.js +43 -0
  51. package/dest/private/factory.d.ts +12 -0
  52. package/dest/private/factory.d.ts.map +1 -0
  53. package/dest/private/{providers/factory.js → factory.js} +8 -5
  54. package/dest/public/avm/avm_context.d.ts +8 -8
  55. package/dest/public/avm/avm_context.d.ts.map +1 -1
  56. package/dest/public/avm/avm_contract_call_result.d.ts +8 -6
  57. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  58. package/dest/public/avm/avm_contract_call_result.js +12 -8
  59. package/dest/public/avm/avm_execution_environment.d.ts +9 -6
  60. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  61. package/dest/public/avm/avm_execution_environment.js +5 -3
  62. package/dest/public/avm/avm_gas.d.ts +5 -21
  63. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  64. package/dest/public/avm/avm_gas.js +27 -35
  65. package/dest/public/avm/avm_machine_state.d.ts +9 -6
  66. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  67. package/dest/public/avm/avm_machine_state.js +5 -2
  68. package/dest/public/avm/avm_memory_types.d.ts +100 -89
  69. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  70. package/dest/public/avm/avm_memory_types.js +21 -7
  71. package/dest/public/avm/avm_simulator.d.ts +8 -7
  72. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  73. package/dest/public/avm/avm_simulator.js +32 -42
  74. package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
  75. package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
  76. package/dest/public/avm/avm_simulator_interface.js +3 -0
  77. package/dest/public/avm/calldata.d.ts +51 -0
  78. package/dest/public/avm/calldata.d.ts.map +1 -0
  79. package/dest/public/avm/calldata.js +63 -0
  80. package/dest/public/avm/errors.d.ts +11 -29
  81. package/dest/public/avm/errors.d.ts.map +1 -1
  82. package/dest/public/avm/errors.js +19 -57
  83. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +6 -5
  84. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  85. package/dest/public/avm/fixtures/avm_simulation_tester.js +26 -18
  86. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +8 -6
  87. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  88. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +38 -15
  89. package/dest/public/avm/fixtures/initializers.d.ts +42 -0
  90. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
  91. package/dest/public/avm/fixtures/initializers.js +45 -0
  92. package/dest/public/avm/fixtures/utils.d.ts +39 -0
  93. package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
  94. package/dest/public/avm/fixtures/utils.js +96 -0
  95. package/dest/public/avm/index.d.ts +1 -3
  96. package/dest/public/avm/index.d.ts.map +1 -1
  97. package/dest/public/avm/index.js +0 -2
  98. package/dest/public/avm/opcodes/accrued_substate.d.ts +17 -18
  99. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  100. package/dest/public/avm/opcodes/accrued_substate.js +58 -55
  101. package/dest/public/avm/opcodes/addressing_mode.d.ts +12 -8
  102. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  103. package/dest/public/avm/opcodes/addressing_mode.js +46 -26
  104. package/dest/public/avm/opcodes/arithmetic.d.ts +14 -2
  105. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  106. package/dest/public/avm/opcodes/arithmetic.js +27 -3
  107. package/dest/public/avm/opcodes/bitwise.d.ts +8 -16
  108. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  109. package/dest/public/avm/opcodes/bitwise.js +22 -29
  110. package/dest/public/avm/opcodes/comparators.d.ts +1 -1
  111. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  112. package/dest/public/avm/opcodes/comparators.js +3 -3
  113. package/dest/public/avm/opcodes/contract.d.ts +3 -4
  114. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  115. package/dest/public/avm/opcodes/contract.js +11 -12
  116. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  117. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  118. package/dest/public/avm/opcodes/control_flow.js +13 -11
  119. package/dest/public/avm/opcodes/conversion.d.ts +4 -3
  120. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  121. package/dest/public/avm/opcodes/conversion.js +270 -6
  122. package/dest/public/avm/opcodes/ec_add.d.ts +3 -3
  123. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  124. package/dest/public/avm/opcodes/ec_add.js +21 -12
  125. package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
  126. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  127. package/dest/public/avm/opcodes/environment_getters.js +20 -22
  128. package/dest/public/avm/opcodes/external_calls.d.ts +14 -13
  129. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  130. package/dest/public/avm/opcodes/external_calls.js +52 -46
  131. package/dest/public/avm/opcodes/hashing.d.ts +7 -7
  132. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  133. package/dest/public/avm/opcodes/hashing.js +24 -19
  134. package/dest/public/avm/opcodes/index.d.ts +1 -1
  135. package/dest/public/avm/opcodes/instruction.d.ts +15 -11
  136. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  137. package/dest/public/avm/opcodes/instruction.js +23 -19
  138. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  139. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  140. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  141. package/dest/public/avm/opcodes/memory.d.ts +15 -15
  142. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  143. package/dest/public/avm/opcodes/memory.js +52 -48
  144. package/dest/public/avm/opcodes/misc.d.ts +4 -3
  145. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  146. package/dest/public/avm/opcodes/misc.js +42 -17
  147. package/dest/public/avm/opcodes/storage.d.ts +14 -13
  148. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  149. package/dest/public/avm/opcodes/storage.js +39 -27
  150. package/dest/public/avm/revert_reason.d.ts +18 -0
  151. package/dest/public/avm/revert_reason.d.ts.map +1 -0
  152. package/dest/public/avm/revert_reason.js +39 -0
  153. package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -3
  154. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  155. package/dest/public/avm/serialization/bytecode_serialization.d.ts +3 -7
  156. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  157. package/dest/public/avm/serialization/bytecode_serialization.js +79 -75
  158. package/dest/public/avm/serialization/instruction_serialization.d.ts +14 -5
  159. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  160. package/dest/public/avm/serialization/instruction_serialization.js +70 -35
  161. package/dest/public/avm/test_utils.d.ts +12 -15
  162. package/dest/public/avm/test_utils.d.ts.map +1 -1
  163. package/dest/public/avm/test_utils.js +17 -25
  164. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  165. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  166. package/dest/public/contracts_db_checkpoint.js +30 -0
  167. package/dest/public/db_interfaces.d.ts +68 -0
  168. package/dest/public/db_interfaces.d.ts.map +1 -0
  169. package/dest/public/db_interfaces.js +3 -0
  170. package/dest/public/debug_fn_name.d.ts +18 -0
  171. package/dest/public/debug_fn_name.d.ts.map +1 -0
  172. package/dest/public/debug_fn_name.js +37 -0
  173. package/dest/public/executor_metrics.d.ts +12 -4
  174. package/dest/public/executor_metrics.d.ts.map +1 -1
  175. package/dest/public/executor_metrics.js +33 -23
  176. package/dest/public/executor_metrics_interface.d.ts +10 -0
  177. package/dest/public/executor_metrics_interface.d.ts.map +1 -0
  178. package/dest/public/executor_metrics_interface.js +1 -0
  179. package/dest/public/fixtures/amm_test.d.ts +10 -0
  180. package/dest/public/fixtures/amm_test.d.ts.map +1 -0
  181. package/dest/public/fixtures/amm_test.js +213 -0
  182. package/dest/public/fixtures/bulk_test.d.ts +6 -0
  183. package/dest/public/fixtures/bulk_test.d.ts.map +1 -0
  184. package/dest/public/fixtures/bulk_test.js +262 -0
  185. package/dest/public/fixtures/custom_bytecode_tester.d.ts +34 -0
  186. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
  187. package/dest/public/fixtures/custom_bytecode_tester.js +53 -0
  188. package/dest/public/fixtures/custom_bytecode_tests.d.ts +12 -0
  189. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
  190. package/dest/public/fixtures/custom_bytecode_tests.js +174 -0
  191. package/dest/public/fixtures/index.d.ts +10 -1
  192. package/dest/public/fixtures/index.d.ts.map +1 -1
  193. package/dest/public/fixtures/index.js +9 -0
  194. package/dest/public/fixtures/minimal_public_tx.d.ts +4 -0
  195. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
  196. package/dest/public/fixtures/minimal_public_tx.js +19 -0
  197. package/dest/public/fixtures/opcode_spammer.d.ts +122 -0
  198. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
  199. package/dest/public/fixtures/opcode_spammer.js +1653 -0
  200. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +55 -15
  201. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  202. package/dest/public/fixtures/public_tx_simulation_tester.js +138 -72
  203. package/dest/public/fixtures/simple_contract_data_source.d.ts +36 -0
  204. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -0
  205. package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.js +31 -10
  206. package/dest/public/fixtures/token_test.d.ts +12 -0
  207. package/dest/public/fixtures/token_test.d.ts.map +1 -0
  208. package/dest/public/fixtures/token_test.js +96 -0
  209. package/dest/public/fixtures/utils.d.ts +18 -5
  210. package/dest/public/fixtures/utils.d.ts.map +1 -1
  211. package/dest/public/fixtures/utils.js +102 -59
  212. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
  213. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  214. package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
  215. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  216. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  217. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  218. package/dest/public/hinting_db_sources.d.ts +80 -0
  219. package/dest/public/hinting_db_sources.d.ts.map +1 -0
  220. package/dest/public/hinting_db_sources.js +355 -0
  221. package/dest/public/index.d.ts +6 -9
  222. package/dest/public/index.d.ts.map +1 -1
  223. package/dest/public/index.js +4 -7
  224. package/dest/public/public_db_sources.d.ts +54 -103
  225. package/dest/public/public_db_sources.d.ts.map +1 -1
  226. package/dest/public/public_db_sources.js +222 -195
  227. package/dest/public/public_errors.d.ts +12 -0
  228. package/dest/public/public_errors.d.ts.map +1 -0
  229. package/dest/public/public_errors.js +13 -0
  230. package/dest/public/public_processor/guarded_merkle_tree.d.ts +51 -0
  231. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
  232. package/dest/public/public_processor/guarded_merkle_tree.js +113 -0
  233. package/dest/public/public_processor/public_processor.d.ts +28 -38
  234. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  235. package/dest/public/public_processor/public_processor.js +576 -136
  236. package/dest/public/public_processor/public_processor_metrics.d.ts +4 -4
  237. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  238. package/dest/public/public_processor/public_processor_metrics.js +29 -46
  239. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +19 -0
  240. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  241. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +98 -0
  242. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +53 -0
  243. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
  244. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +132 -0
  245. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
  246. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
  247. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
  248. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
  249. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
  250. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +171 -0
  251. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +23 -0
  252. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
  253. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
  254. package/dest/public/public_tx_simulator/factories.d.ts +14 -0
  255. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  256. package/dest/public/public_tx_simulator/factories.js +28 -0
  257. package/dest/public/public_tx_simulator/index.d.ts +8 -0
  258. package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
  259. package/dest/public/public_tx_simulator/index.js +5 -0
  260. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +31 -0
  261. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
  262. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +51 -0
  263. package/dest/public/public_tx_simulator/public_tx_context.d.ts +25 -31
  264. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  265. package/dest/public/public_tx_simulator/public_tx_context.js +75 -95
  266. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +38 -58
  267. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  268. package/dest/public/public_tx_simulator/public_tx_simulator.js +220 -207
  269. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +32 -0
  270. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
  271. package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
  272. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +21 -0
  273. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
  274. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +415 -0
  275. package/dest/public/side_effect_errors.d.ts +42 -2
  276. package/dest/public/side_effect_errors.d.ts.map +1 -1
  277. package/dest/public/side_effect_errors.js +70 -1
  278. package/dest/public/side_effect_trace.d.ts +24 -69
  279. package/dest/public/side_effect_trace.d.ts.map +1 -1
  280. package/dest/public/side_effect_trace.js +74 -124
  281. package/dest/public/side_effect_trace_interface.d.ts +13 -25
  282. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  283. package/dest/public/state_manager/index.d.ts +2 -0
  284. package/dest/public/state_manager/index.d.ts.map +1 -0
  285. package/dest/public/state_manager/index.js +1 -0
  286. package/dest/public/{avm/journal → state_manager}/nullifiers.d.ts +4 -7
  287. package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
  288. package/dest/public/{avm/journal → state_manager}/nullifiers.js +3 -8
  289. package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +4 -4
  290. package/dest/public/state_manager/public_storage.d.ts.map +1 -0
  291. package/dest/public/{avm/journal → state_manager}/public_storage.js +1 -1
  292. package/dest/public/state_manager/state_manager.d.ts +170 -0
  293. package/dest/public/state_manager/state_manager.d.ts.map +1 -0
  294. package/dest/public/state_manager/state_manager.js +402 -0
  295. package/dest/public/test_executor_metrics.d.ts +56 -0
  296. package/dest/public/test_executor_metrics.d.ts.map +1 -0
  297. package/dest/public/test_executor_metrics.js +307 -0
  298. package/dest/public/unique_class_ids.d.ts +1 -1
  299. package/dest/public/unique_class_ids.d.ts.map +1 -1
  300. package/dest/public/utils.d.ts +3 -5
  301. package/dest/public/utils.d.ts.map +1 -1
  302. package/dest/public/utils.js +4 -21
  303. package/dest/server.d.ts +7 -4
  304. package/dest/server.d.ts.map +1 -1
  305. package/dest/server.js +5 -2
  306. package/dest/testing.d.ts +2 -0
  307. package/dest/testing.d.ts.map +1 -0
  308. package/dest/testing.js +1 -0
  309. package/package.json +39 -33
  310. package/src/client.ts +5 -3
  311. package/src/common/errors.ts +80 -45
  312. package/src/common/index.ts +0 -1
  313. package/src/private/acvm/acvm.ts +21 -35
  314. package/src/private/acvm/acvm_types.ts +1 -1
  315. package/src/private/acvm/deserialize.ts +36 -30
  316. package/src/private/acvm/index.ts +0 -1
  317. package/src/private/acvm/serialize.ts +64 -1
  318. package/src/private/{providers/acvm_native.ts → acvm_native.ts} +57 -28
  319. package/src/private/acvm_wasm.ts +76 -0
  320. package/src/private/acvm_wasm_with_blobs.ts +54 -0
  321. package/src/private/circuit_recording/circuit_recorder.ts +263 -0
  322. package/src/private/circuit_recording/file_circuit_recorder.ts +163 -0
  323. package/src/private/circuit_recording/memory_circuit_recorder.ts +13 -0
  324. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
  325. package/src/private/circuit_simulator.ts +90 -0
  326. package/src/private/{providers/factory.ts → factory.ts} +13 -10
  327. package/src/public/avm/avm_context.ts +6 -6
  328. package/src/public/avm/avm_contract_call_result.ts +23 -9
  329. package/src/public/avm/avm_execution_environment.ts +17 -5
  330. package/src/public/avm/avm_gas.ts +26 -38
  331. package/src/public/avm/avm_machine_state.ts +12 -6
  332. package/src/public/avm/avm_memory_types.ts +24 -7
  333. package/src/public/avm/avm_simulator.ts +57 -62
  334. package/src/public/avm/avm_simulator_interface.ts +8 -0
  335. package/src/public/avm/calldata.ts +100 -0
  336. package/src/public/avm/errors.ts +20 -75
  337. package/src/public/avm/fixtures/avm_simulation_tester.ts +41 -24
  338. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +46 -13
  339. package/src/public/avm/fixtures/initializers.ts +103 -0
  340. package/src/public/avm/fixtures/utils.ts +151 -0
  341. package/src/public/avm/index.ts +0 -2
  342. package/src/public/avm/opcodes/accrued_substate.ts +81 -48
  343. package/src/public/avm/opcodes/addressing_mode.ts +56 -32
  344. package/src/public/avm/opcodes/arithmetic.ts +37 -3
  345. package/src/public/avm/opcodes/bitwise.ts +33 -29
  346. package/src/public/avm/opcodes/comparators.ts +6 -3
  347. package/src/public/avm/opcodes/contract.ts +10 -10
  348. package/src/public/avm/opcodes/control_flow.ts +19 -10
  349. package/src/public/avm/opcodes/conversion.ts +29 -5
  350. package/src/public/avm/opcodes/ec_add.ts +22 -10
  351. package/src/public/avm/opcodes/environment_getters.ts +28 -23
  352. package/src/public/avm/opcodes/external_calls.ts +70 -36
  353. package/src/public/avm/opcodes/hashing.ts +39 -13
  354. package/src/public/avm/opcodes/instruction.ts +31 -21
  355. package/src/public/avm/opcodes/instruction_impl.ts +2 -2
  356. package/src/public/avm/opcodes/memory.ts +81 -42
  357. package/src/public/avm/opcodes/misc.ts +61 -19
  358. package/src/public/avm/opcodes/storage.ts +47 -23
  359. package/src/public/avm/revert_reason.ts +58 -0
  360. package/src/public/avm/serialization/buffer_cursor.ts +4 -1
  361. package/src/public/avm/serialization/bytecode_serialization.ts +89 -80
  362. package/src/public/avm/serialization/instruction_serialization.ts +75 -34
  363. package/src/public/avm/test_utils.ts +25 -42
  364. package/src/public/contracts_db_checkpoint.ts +41 -0
  365. package/src/public/db_interfaces.ts +76 -0
  366. package/src/public/debug_fn_name.ts +52 -0
  367. package/src/public/executor_metrics.ts +49 -23
  368. package/src/public/executor_metrics_interface.ts +15 -0
  369. package/src/public/fixtures/amm_test.ts +331 -0
  370. package/src/public/fixtures/bulk_test.ts +169 -0
  371. package/src/public/fixtures/custom_bytecode_tester.ts +83 -0
  372. package/src/public/fixtures/custom_bytecode_tests.ts +228 -0
  373. package/src/public/fixtures/index.ts +13 -0
  374. package/src/public/fixtures/minimal_public_tx.ts +26 -0
  375. package/src/public/fixtures/opcode_spammer.ts +1721 -0
  376. package/src/public/fixtures/public_tx_simulation_tester.ts +223 -114
  377. package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +37 -20
  378. package/src/public/fixtures/token_test.ts +148 -0
  379. package/src/public/fixtures/utils.ts +141 -69
  380. package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
  381. package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
  382. package/src/public/hinting_db_sources.ts +607 -0
  383. package/src/public/index.ts +11 -8
  384. package/src/public/public_db_sources.ts +290 -260
  385. package/src/public/public_errors.ts +14 -0
  386. package/src/public/public_processor/guarded_merkle_tree.ts +158 -0
  387. package/src/public/public_processor/public_processor.ts +257 -179
  388. package/src/public/public_processor/public_processor_metrics.ts +18 -46
  389. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +124 -0
  390. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +211 -0
  391. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +134 -0
  392. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +239 -0
  393. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +83 -0
  394. package/src/public/public_tx_simulator/factories.ts +43 -0
  395. package/src/public/public_tx_simulator/index.ts +7 -0
  396. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
  397. package/src/public/public_tx_simulator/public_tx_context.ts +179 -199
  398. package/src/public/public_tx_simulator/public_tx_simulator.ts +316 -263
  399. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +33 -0
  400. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +63 -0
  401. package/src/public/side_effect_errors.ts +91 -1
  402. package/src/public/side_effect_trace.ts +99 -322
  403. package/src/public/side_effect_trace_interface.ts +11 -59
  404. package/src/public/state_manager/index.ts +1 -0
  405. package/src/public/{avm/journal → state_manager}/nullifiers.ts +6 -12
  406. package/src/public/{avm/journal → state_manager}/public_storage.ts +3 -3
  407. package/src/public/state_manager/state_manager.ts +569 -0
  408. package/src/public/test_executor_metrics.ts +397 -0
  409. package/src/public/utils.ts +5 -21
  410. package/src/server.ts +6 -3
  411. package/src/testing.ts +1 -0
  412. package/dest/common/db_interfaces.d.ts +0 -80
  413. package/dest/common/db_interfaces.d.ts.map +0 -1
  414. package/dest/common/db_interfaces.js +0 -1
  415. package/dest/common/debug_fn_name.d.ts +0 -5
  416. package/dest/common/debug_fn_name.d.ts.map +0 -1
  417. package/dest/common/debug_fn_name.js +0 -6
  418. package/dest/common/message_load_oracle_inputs.d.ts +0 -15
  419. package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
  420. package/dest/common/message_load_oracle_inputs.js +0 -15
  421. package/dest/private/acvm/oracle/index.d.ts +0 -14
  422. package/dest/private/acvm/oracle/index.d.ts.map +0 -1
  423. package/dest/private/acvm/oracle/index.js +0 -2
  424. package/dest/private/acvm/oracle/oracle.d.ts +0 -49
  425. package/dest/private/acvm/oracle/oracle.d.ts.map +0 -1
  426. package/dest/private/acvm/oracle/oracle.js +0 -263
  427. package/dest/private/acvm/oracle/typed_oracle.d.ts +0 -83
  428. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +0 -1
  429. package/dest/private/acvm/oracle/typed_oracle.js +0 -132
  430. package/dest/private/execution_data_provider.d.ts +0 -261
  431. package/dest/private/execution_data_provider.d.ts.map +0 -1
  432. package/dest/private/execution_data_provider.js +0 -14
  433. package/dest/private/execution_note_cache.d.ts +0 -93
  434. package/dest/private/execution_note_cache.d.ts.map +0 -1
  435. package/dest/private/execution_note_cache.js +0 -180
  436. package/dest/private/hashed_values_cache.d.ts +0 -28
  437. package/dest/private/hashed_values_cache.d.ts.map +0 -1
  438. package/dest/private/hashed_values_cache.js +0 -46
  439. package/dest/private/index.d.ts +0 -13
  440. package/dest/private/index.d.ts.map +0 -1
  441. package/dest/private/index.js +0 -12
  442. package/dest/private/pick_notes.d.ts +0 -85
  443. package/dest/private/pick_notes.d.ts.map +0 -1
  444. package/dest/private/pick_notes.js +0 -51
  445. package/dest/private/private_execution.d.ts +0 -25
  446. package/dest/private/private_execution.d.ts.map +0 -1
  447. package/dest/private/private_execution.js +0 -92
  448. package/dest/private/private_execution_oracle.d.ts +0 -215
  449. package/dest/private/private_execution_oracle.d.ts.map +0 -1
  450. package/dest/private/private_execution_oracle.js +0 -382
  451. package/dest/private/providers/acvm_native.d.ts +0 -40
  452. package/dest/private/providers/acvm_native.d.ts.map +0 -1
  453. package/dest/private/providers/acvm_wasm.d.ts +0 -15
  454. package/dest/private/providers/acvm_wasm.d.ts.map +0 -1
  455. package/dest/private/providers/acvm_wasm.js +0 -62
  456. package/dest/private/providers/acvm_wasm_with_blobs.d.ts +0 -19
  457. package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
  458. package/dest/private/providers/acvm_wasm_with_blobs.js +0 -32
  459. package/dest/private/providers/factory.d.ts +0 -12
  460. package/dest/private/providers/factory.d.ts.map +0 -1
  461. package/dest/private/providers/simulation_provider.d.ts +0 -19
  462. package/dest/private/providers/simulation_provider.d.ts.map +0 -1
  463. package/dest/private/providers/simulation_provider.js +0 -24
  464. package/dest/private/simulator.d.ts +0 -34
  465. package/dest/private/simulator.d.ts.map +0 -1
  466. package/dest/private/simulator.js +0 -76
  467. package/dest/private/unconstrained_execution.d.ts +0 -10
  468. package/dest/private/unconstrained_execution.d.ts.map +0 -1
  469. package/dest/private/unconstrained_execution.js +0 -27
  470. package/dest/private/unconstrained_execution_oracle.d.ts +0 -161
  471. package/dest/private/unconstrained_execution_oracle.d.ts.map +0 -1
  472. package/dest/private/unconstrained_execution_oracle.js +0 -258
  473. package/dest/public/avm/bytecode_utils.d.ts +0 -5
  474. package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
  475. package/dest/public/avm/bytecode_utils.js +0 -17
  476. package/dest/public/avm/fixtures/index.d.ts +0 -84
  477. package/dest/public/avm/fixtures/index.d.ts.map +0 -1
  478. package/dest/public/avm/fixtures/index.js +0 -175
  479. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts +0 -35
  480. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
  481. package/dest/public/avm/journal/index.d.ts +0 -2
  482. package/dest/public/avm/journal/index.d.ts.map +0 -1
  483. package/dest/public/avm/journal/index.js +0 -1
  484. package/dest/public/avm/journal/journal.d.ts +0 -209
  485. package/dest/public/avm/journal/journal.d.ts.map +0 -1
  486. package/dest/public/avm/journal/journal.js +0 -486
  487. package/dest/public/avm/journal/nullifiers.d.ts.map +0 -1
  488. package/dest/public/avm/journal/public_storage.d.ts.map +0 -1
  489. package/dest/public/bytecode_errors.d.ts +0 -4
  490. package/dest/public/bytecode_errors.d.ts.map +0 -1
  491. package/dest/public/bytecode_errors.js +0 -6
  492. package/dest/public/execution.d.ts +0 -108
  493. package/dest/public/execution.d.ts.map +0 -1
  494. package/dest/public/execution.js +0 -9
  495. package/dest/public/tx_contract_cache.d.ts +0 -41
  496. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  497. package/dest/public/tx_contract_cache.js +0 -49
  498. package/dest/test/utils.d.ts +0 -13
  499. package/dest/test/utils.d.ts.map +0 -1
  500. package/dest/test/utils.js +0 -22
  501. package/src/common/db_interfaces.ts +0 -94
  502. package/src/common/debug_fn_name.ts +0 -18
  503. package/src/common/message_load_oracle_inputs.ts +0 -15
  504. package/src/private/acvm/oracle/index.ts +0 -16
  505. package/src/private/acvm/oracle/oracle.ts +0 -455
  506. package/src/private/acvm/oracle/typed_oracle.ts +0 -259
  507. package/src/private/execution_data_provider.ts +0 -323
  508. package/src/private/execution_note_cache.ts +0 -217
  509. package/src/private/hashed_values_cache.ts +0 -55
  510. package/src/private/index.ts +0 -16
  511. package/src/private/pick_notes.ts +0 -141
  512. package/src/private/private_execution.ts +0 -151
  513. package/src/private/private_execution_oracle.ts +0 -614
  514. package/src/private/providers/acvm_wasm.ts +0 -63
  515. package/src/private/providers/acvm_wasm_with_blobs.ts +0 -50
  516. package/src/private/providers/simulation_provider.ts +0 -45
  517. package/src/private/simulator.ts +0 -147
  518. package/src/private/unconstrained_execution.ts +0 -50
  519. package/src/private/unconstrained_execution_oracle.ts +0 -373
  520. package/src/public/avm/bytecode_utils.ts +0 -17
  521. package/src/public/avm/fixtures/index.ts +0 -296
  522. package/src/public/avm/journal/index.ts +0 -1
  523. package/src/public/avm/journal/journal.ts +0 -742
  524. package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
  525. package/src/public/bytecode_errors.ts +0 -6
  526. package/src/public/execution.ts +0 -140
  527. package/src/public/tx_contract_cache.ts +0 -69
  528. package/src/test/utils.ts +0 -36
@@ -1,99 +1,169 @@
1
1
  import {
2
- CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS,
3
- DEFAULT_GAS_LIMIT,
4
- DEPLOYER_CONTRACT_ADDRESS,
5
- MAX_L2_GAS_PER_TX_PUBLIC_PORTION,
2
+ CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE,
3
+ CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS,
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,
6
9
  PRIVATE_LOG_SIZE_IN_FIELDS,
7
- REGISTERER_CONTRACT_ADDRESS,
8
- REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE,
9
10
  } from '@aztec/constants';
10
- import { Fr } from '@aztec/foundation/fields';
11
- import { assertLength } from '@aztec/foundation/serialize';
12
- import { DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG } from '@aztec/protocol-contracts';
11
+ import { padArrayEnd } from '@aztec/foundation/collection';
12
+ import { Fr } from '@aztec/foundation/curves/bn254';
13
+ import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '@aztec/protocol-contracts';
13
14
  import { bufferAsFields } from '@aztec/stdlib/abi';
14
15
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
15
16
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
16
17
  import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
17
18
  import { siloNullifier } from '@aztec/stdlib/hash';
18
19
  import {
20
+ LogHash,
19
21
  PartialPrivateTailPublicInputsForPublic,
20
22
  PartialPrivateTailPublicInputsForRollup,
21
23
  PrivateKernelTailCircuitPublicInputs,
22
- RollupValidationRequests,
23
- ScopedLogHash,
24
24
  countAccumulatedItems,
25
25
  } from '@aztec/stdlib/kernel';
26
- import { ContractClassLog, PrivateLog } from '@aztec/stdlib/logs';
27
- import { type PublicExecutionRequest, Tx } from '@aztec/stdlib/tx';
28
- import { BlockHeader, TxConstantData, TxContext } from '@aztec/stdlib/tx';
26
+ import { ContractClassLogFields, PrivateLog } from '@aztec/stdlib/logs';
27
+ import type { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
28
+ import { ChonkProof } from '@aztec/stdlib/proofs';
29
+ import {
30
+ BlockHeader,
31
+ GlobalVariables,
32
+ HashedValues,
33
+ PublicCallRequestWithCalldata,
34
+ Tx,
35
+ TxConstantData,
36
+ TxContext,
37
+ } from '@aztec/stdlib/tx';
29
38
 
30
39
  import { strict as assert } from 'assert';
31
40
 
41
+ export type TestPrivateInsertions = {
42
+ revertible?: {
43
+ nullifiers?: Fr[];
44
+ noteHashes?: Fr[];
45
+ l2ToL1Msgs?: ScopedL2ToL1Message[];
46
+ };
47
+ nonRevertible?: {
48
+ nullifiers?: Fr[];
49
+ noteHashes?: Fr[];
50
+ l2ToL1Msgs?: ScopedL2ToL1Message[];
51
+ };
52
+ };
53
+
32
54
  /**
33
55
  * Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
34
56
  */
35
57
  export async function createTxForPublicCalls(
36
- firstNullifier: Fr,
37
- setupExecutionRequests: PublicExecutionRequest[],
38
- appExecutionRequests: PublicExecutionRequest[],
39
- teardownExecutionRequest?: PublicExecutionRequest,
58
+ privateInsertions: TestPrivateInsertions,
59
+ setupCallRequests: PublicCallRequestWithCalldata[],
60
+ appCallRequests: PublicCallRequestWithCalldata[],
61
+ teardownCallRequest?: PublicCallRequestWithCalldata,
40
62
  feePayer = AztecAddress.zero(),
41
63
  gasUsedByPrivate: Gas = Gas.empty(),
64
+ globals: GlobalVariables = GlobalVariables.empty(),
42
65
  ): Promise<Tx> {
43
66
  assert(
44
- setupExecutionRequests.length > 0 || appExecutionRequests.length > 0 || teardownExecutionRequest !== undefined,
67
+ setupCallRequests.length > 0 || appCallRequests.length > 0 || teardownCallRequest !== undefined,
45
68
  "Can't create public tx with no enqueued calls",
46
69
  );
47
- const setupCallRequests = await Promise.all(setupExecutionRequests.map(er => er.toCallRequest()));
48
- const appCallRequests = await Promise.all(appExecutionRequests.map(er => er.toCallRequest()));
49
70
  // use max limits
50
- const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
71
+ const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
51
72
 
52
73
  const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
53
- // TODO(#9269): Remove this fake nullifier method as we move away from 1st nullifier as hash.
54
- forPublic.nonRevertibleAccumulatedData.nullifiers[0] = firstNullifier;
55
74
 
56
- // We reverse order because the simulator expects it to be like a "stack" of calls to pop from
57
- for (let i = setupCallRequests.length - 1; i >= 0; i--) {
58
- forPublic.nonRevertibleAccumulatedData.publicCallRequests[i] = setupCallRequests[i];
75
+ // Non revertible private insertions
76
+ if (!privateInsertions.nonRevertible?.nullifiers?.length) {
77
+ throw new Error('At least one non-revertible nullifier is required');
59
78
  }
60
- for (let i = appCallRequests.length - 1; i >= 0; i--) {
61
- forPublic.revertibleAccumulatedData.publicCallRequests[i] = appCallRequests[i];
79
+
80
+ for (let i = 0; i < privateInsertions.nonRevertible.nullifiers.length; i++) {
81
+ assert(i < forPublic.nonRevertibleAccumulatedData.nullifiers.length, 'Nullifier index out of bounds');
82
+ forPublic.nonRevertibleAccumulatedData.nullifiers[i] = privateInsertions.nonRevertible.nullifiers[i];
62
83
  }
63
- if (teardownExecutionRequest) {
64
- forPublic.publicTeardownCallRequest = await teardownExecutionRequest.toCallRequest();
84
+ if (privateInsertions.nonRevertible.noteHashes) {
85
+ for (let i = 0; i < privateInsertions.nonRevertible.noteHashes.length; i++) {
86
+ assert(i < forPublic.nonRevertibleAccumulatedData.noteHashes.length, 'Note hash index out of bounds');
87
+ forPublic.nonRevertibleAccumulatedData.noteHashes[i] = privateInsertions.nonRevertible.noteHashes[i];
88
+ }
89
+ }
90
+ if (privateInsertions.nonRevertible.l2ToL1Msgs) {
91
+ for (let i = 0; i < privateInsertions.nonRevertible.l2ToL1Msgs.length; i++) {
92
+ assert(i < forPublic.nonRevertibleAccumulatedData.l2ToL1Msgs.length, 'L2 to L1 message index out of bounds');
93
+ forPublic.nonRevertibleAccumulatedData.l2ToL1Msgs[i] = privateInsertions.nonRevertible.l2ToL1Msgs[i];
94
+ }
95
+ }
96
+
97
+ // Revertible private insertions
98
+ if (privateInsertions.revertible) {
99
+ if (privateInsertions.revertible.noteHashes) {
100
+ for (let i = 0; i < privateInsertions.revertible.noteHashes.length; i++) {
101
+ assert(i < forPublic.revertibleAccumulatedData.noteHashes.length, 'Note hash index out of bounds');
102
+ forPublic.revertibleAccumulatedData.noteHashes[i] = privateInsertions.revertible.noteHashes[i];
103
+ }
104
+ }
105
+ if (privateInsertions.revertible.nullifiers) {
106
+ for (let i = 0; i < privateInsertions.revertible.nullifiers.length; i++) {
107
+ assert(i < forPublic.revertibleAccumulatedData.nullifiers.length, 'Nullifier index out of bounds');
108
+ forPublic.revertibleAccumulatedData.nullifiers[i] = privateInsertions.revertible.nullifiers[i];
109
+ }
110
+ }
111
+ if (privateInsertions.revertible.l2ToL1Msgs) {
112
+ for (let i = 0; i < privateInsertions.revertible.l2ToL1Msgs.length; i++) {
113
+ assert(i < forPublic.revertibleAccumulatedData.l2ToL1Msgs.length, 'L2 to L1 message index out of bounds');
114
+ forPublic.revertibleAccumulatedData.l2ToL1Msgs[i] = privateInsertions.revertible.l2ToL1Msgs[i];
115
+ }
116
+ }
117
+ }
118
+
119
+ for (let i = 0; i < setupCallRequests.length; i++) {
120
+ forPublic.nonRevertibleAccumulatedData.publicCallRequests[i] = setupCallRequests[i].request;
121
+ }
122
+ for (let i = 0; i < appCallRequests.length; i++) {
123
+ forPublic.revertibleAccumulatedData.publicCallRequests[i] = appCallRequests[i].request;
124
+ }
125
+ if (teardownCallRequest) {
126
+ forPublic.publicTeardownCallRequest = teardownCallRequest.request;
65
127
  }
66
128
 
67
129
  const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
68
- const teardownGasLimits = teardownExecutionRequest ? gasLimits : Gas.empty();
130
+ const teardownGasLimits = teardownCallRequest
131
+ ? new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT)
132
+ : Gas.empty();
69
133
  const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
70
134
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
71
- const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
135
+ const header = BlockHeader.empty({ globalVariables: globals });
136
+ const constantData = new TxConstantData(header, txContext, Fr.zero(), Fr.zero());
137
+ const includeByTimestamp = 0n; // Not used in the simulator.
72
138
 
73
139
  const txData = new PrivateKernelTailCircuitPublicInputs(
74
140
  constantData,
75
- RollupValidationRequests.empty(),
76
141
  /*gasUsed=*/ gasUsedByPrivate,
77
142
  feePayer,
143
+ includeByTimestamp,
78
144
  forPublic,
79
145
  );
80
- const tx = Tx.newWithTxData(txData, teardownExecutionRequest);
81
146
 
82
- // Reverse order because the simulator expects it to be like a "stack" of calls to pop from.
83
- // Also push app calls before setup calls for this reason.
84
- for (let i = appExecutionRequests.length - 1; i >= 0; i--) {
85
- tx.enqueuedPublicFunctionCalls.push(appExecutionRequests[i]);
86
- }
87
- for (let i = setupExecutionRequests.length - 1; i >= 0; i--) {
88
- tx.enqueuedPublicFunctionCalls.push(setupExecutionRequests[i]);
89
- }
147
+ const calldata = [
148
+ ...setupCallRequests,
149
+ ...appCallRequests,
150
+ ...(teardownCallRequest ? [teardownCallRequest] : []),
151
+ ].map(r => new HashedValues(r.calldata, r.request.calldataHash));
90
152
 
91
- return tx;
153
+ return await Tx.create({
154
+ data: txData,
155
+ chonkProof: ChonkProof.random(),
156
+ contractClassLogFields: [],
157
+ publicFunctionCalldata: calldata,
158
+ });
92
159
  }
93
160
 
94
- export function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedByPrivate: Gas = new Gas(10, 10)): Tx {
161
+ export async function createTxForPrivateOnly(
162
+ feePayer = AztecAddress.zero(),
163
+ gasUsedByPrivate: Gas = new Gas(10, 10),
164
+ ): Promise<Tx> {
95
165
  // use max limits
96
- const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
166
+ const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
97
167
 
98
168
  const forRollup = PartialPrivateTailPublicInputsForRollup.empty();
99
169
 
@@ -101,16 +171,22 @@ export function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedBy
101
171
  const gasSettings = new GasSettings(gasLimits, Gas.empty(), maxFeesPerGas, GasFees.empty());
102
172
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
103
173
  const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
174
+ const includeByTimestamp = 0n; // Not used in the simulator.
104
175
 
105
176
  const txData = new PrivateKernelTailCircuitPublicInputs(
106
177
  constantData,
107
- RollupValidationRequests.empty(),
108
178
  /*gasUsed=*/ gasUsedByPrivate,
109
179
  feePayer,
180
+ includeByTimestamp,
110
181
  /*forPublic=*/ undefined,
111
182
  forRollup,
112
183
  );
113
- return Tx.newWithTxData(txData);
184
+ return await Tx.create({
185
+ data: txData,
186
+ chonkProof: ChonkProof.empty(),
187
+ contractClassLogFields: [],
188
+ publicFunctionCalldata: [],
189
+ });
114
190
  }
115
191
 
116
192
  export async function addNewContractClassToTx(
@@ -119,25 +195,21 @@ export async function addNewContractClassToTx(
119
195
  skipNullifierInsertion = false,
120
196
  ) {
121
197
  const contractClassLogFields = [
122
- new Fr(REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE),
198
+ new Fr(CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE),
123
199
  contractClass.id,
124
200
  new Fr(contractClass.version),
125
201
  new Fr(contractClass.artifactHash),
126
202
  new Fr(contractClass.privateFunctionsRoot),
127
203
  ...bufferAsFields(contractClass.packedBytecode, Math.ceil(contractClass.packedBytecode.length / 31) + 1),
128
204
  ];
129
- const contractClassLog = ContractClassLog.fromFields([
130
- new Fr(REGISTERER_CONTRACT_ADDRESS),
131
- ...contractClassLogFields.concat(
132
- new Array(CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS - contractClassLogFields.length).fill(Fr.ZERO),
133
- ),
134
- ]);
135
- const contractClassLogHash = ScopedLogHash.fromFields([
136
- await contractClassLog.hash(),
137
- new Fr(7),
138
- new Fr(contractClassLog.getEmittedLength()),
139
- new Fr(REGISTERER_CONTRACT_ADDRESS),
140
- ]);
205
+ const contractAddress = new AztecAddress(new Fr(CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS));
206
+ const emittedLength = contractClassLogFields.length;
207
+ const logFields = ContractClassLogFields.fromEmittedFields(contractClassLogFields);
208
+
209
+ const contractClassLogHash = LogHash.from({
210
+ value: await logFields.hash(),
211
+ length: emittedLength,
212
+ }).scope(contractAddress);
141
213
 
142
214
  const accumulatedData = tx.data.forPublic ? tx.data.forPublic!.revertibleAccumulatedData : tx.data.forRollup!.end;
143
215
  if (!skipNullifierInsertion) {
@@ -148,7 +220,7 @@ export async function addNewContractClassToTx(
148
220
  const nextLogIndex = countAccumulatedItems(accumulatedData.contractClassLogsHashes);
149
221
  accumulatedData.contractClassLogsHashes[nextLogIndex] = contractClassLogHash;
150
222
 
151
- tx.contractClassLogs.push(contractClassLog);
223
+ tx.contractClassLogFields.push(logFields);
152
224
  }
153
225
 
154
226
  export async function addNewContractInstanceToTx(
@@ -168,8 +240,8 @@ export async function addNewContractInstanceToTx(
168
240
  contractInstance.publicKeys.masterTaggingPublicKey.x,
169
241
  contractInstance.publicKeys.masterTaggingPublicKey.y,
170
242
  ];
171
- const fields = [
172
- DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG,
243
+ const logFields = [
244
+ CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG,
173
245
  contractInstance.address.toField(),
174
246
  new Fr(contractInstance.version),
175
247
  new Fr(contractInstance.salt),
@@ -177,14 +249,14 @@ export async function addNewContractInstanceToTx(
177
249
  contractInstance.initializationHash,
178
250
  ...publicKeysAsFields,
179
251
  contractInstance.deployer.toField(),
180
- new Fr(0),
181
- new Fr(0),
182
- new Fr(0),
183
252
  ];
184
- const contractInstanceLog = new PrivateLog(assertLength(fields, PRIVATE_LOG_SIZE_IN_FIELDS));
253
+ const contractInstanceLog = new PrivateLog(
254
+ padArrayEnd(logFields, Fr.ZERO, PRIVATE_LOG_SIZE_IN_FIELDS),
255
+ logFields.length,
256
+ );
185
257
 
186
258
  const contractAddressNullifier = await siloNullifier(
187
- AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS),
259
+ AztecAddress.fromNumber(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS),
188
260
  contractInstance.address.toField(),
189
261
  );
190
262
 
@@ -0,0 +1,288 @@
1
+ import {
2
+ MAX_ENQUEUED_CALLS_PER_TX,
3
+ MAX_L2_TO_L1_MSGS_PER_TX,
4
+ MAX_NOTE_HASHES_PER_TX,
5
+ MAX_NULLIFIERS_PER_TX,
6
+ MAX_PRIVATE_LOGS_PER_TX,
7
+ MAX_PROTOCOL_CONTRACTS,
8
+ } from '@aztec/constants';
9
+ import { padArrayEnd } from '@aztec/foundation/collection';
10
+ import { Fr } from '@aztec/foundation/curves/bn254';
11
+ import { AvmTxHint, type PublicTxResult } from '@aztec/stdlib/avm';
12
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
13
+ import { contractClassPublicFromPlainObject, contractInstanceWithAddressFromPlainObject } from '@aztec/stdlib/contract';
14
+ import {
15
+ PartialPrivateTailPublicInputsForPublic,
16
+ PrivateKernelTailCircuitPublicInputs,
17
+ PrivateToPublicAccumulatedData,
18
+ PublicCallRequest,
19
+ } from '@aztec/stdlib/kernel';
20
+ import { PrivateLog } from '@aztec/stdlib/logs';
21
+ import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
22
+ import { ChonkProof } from '@aztec/stdlib/proofs';
23
+ import { MerkleTreeId, type MerkleTreeWriteOperations, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
24
+ import {
25
+ BlockHeader,
26
+ GlobalVariables,
27
+ HashedValues,
28
+ ProtocolContracts,
29
+ Tx,
30
+ TxConstantData,
31
+ TxContext,
32
+ TxHash,
33
+ } from '@aztec/stdlib/tx';
34
+ import type { NativeWorldStateService } from '@aztec/world-state';
35
+
36
+ import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
37
+ import { SimpleContractDataSource } from '../fixtures/simple_contract_data_source.js';
38
+ import { PublicContractsDB } from '../public_db_sources.js';
39
+ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
40
+
41
+ /**
42
+ * Request structure for fuzzer simulation communication from C++.
43
+ * Matches the C++ FuzzerSimulationRequest struct
44
+ */
45
+ export class FuzzerSimulationRequest {
46
+ constructor(
47
+ public readonly wsDataDir: string,
48
+ public readonly wsMapSizeKb: number,
49
+ public readonly tx: AvmTxHint,
50
+ public readonly globals: GlobalVariables,
51
+ public readonly contractClasses: any[], // Raw, processed by addContractClassFromCpp
52
+ public readonly contractInstances: [any, any][], // Raw pairs [address, instance]
53
+ public readonly publicDataWrites: any[], // Raw public data tree writes to apply before simulation
54
+ public readonly noteHashes: any[], // Raw note hashes to apply before simulation
55
+ public readonly protocolContracts: ProtocolContracts, // Protocol contracts mapping from C++
56
+ ) {}
57
+
58
+ static fromPlainObject(obj: any): FuzzerSimulationRequest {
59
+ if (obj instanceof FuzzerSimulationRequest) {
60
+ return obj;
61
+ }
62
+ return new FuzzerSimulationRequest(
63
+ obj.wsDataDir,
64
+ obj.wsMapSizeKb,
65
+ AvmTxHint.fromPlainObject(obj.tx),
66
+ GlobalVariables.fromPlainObject(obj.globals),
67
+ obj.contractClasses,
68
+ obj.contractInstances,
69
+ obj.publicDataWrites ?? [],
70
+ obj.noteHashes ?? [],
71
+ ProtocolContracts.fromPlainObject(obj.protocolContracts),
72
+ );
73
+ }
74
+ }
75
+
76
+ /**
77
+ * Creates a TypeScript Tx object from a deserialized C++ Tx (AvmTxHint-like structure).
78
+ * This allows using PublicTxSimulator.simulate() with fuzzer-generated transactions.
79
+ */
80
+ async function createTxFromHint(cppTx: AvmTxHint): Promise<Tx> {
81
+ // Create TxHash from the C++ tx hash string
82
+ if (!cppTx.hash) {
83
+ throw new Error(`cppTx.hash is undefined. Keys: ${Object.keys(cppTx || {}).join(', ')}`);
84
+ }
85
+ const txHash = TxHash.fromString(cppTx.hash);
86
+
87
+ // Extract PublicCallRequest instances from enqueued calls
88
+ const setupCallRequests = cppTx.setupEnqueuedCalls.map(call => call.request);
89
+ const paddedSetupCalls = padArrayEnd(setupCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX);
90
+
91
+ const appLogicCallRequests = cppTx.appLogicEnqueuedCalls.map(call => call.request);
92
+ const paddedAppLogicCalls = padArrayEnd(appLogicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX);
93
+
94
+ // Build non-revertible accumulated data from C++ tx
95
+ const emptyNonRevertible = PrivateToPublicAccumulatedData.empty();
96
+ const nonRevertibleAccumulatedData = new PrivateToPublicAccumulatedData(
97
+ padArrayEnd(cppTx.nonRevertibleAccumulatedData.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
98
+ padArrayEnd(cppTx.nonRevertibleAccumulatedData.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
99
+ padArrayEnd(
100
+ cppTx.nonRevertibleAccumulatedData.l2ToL1Messages,
101
+ ScopedL2ToL1Message.empty(),
102
+ MAX_L2_TO_L1_MSGS_PER_TX,
103
+ ),
104
+ padArrayEnd(cppTx.nonRevertibleContractDeploymentData.privateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
105
+ emptyNonRevertible.contractClassLogsHashes,
106
+ paddedSetupCalls,
107
+ );
108
+
109
+ // Build revertible accumulated data from C++ tx
110
+ const emptyRevertible = PrivateToPublicAccumulatedData.empty();
111
+ const revertibleAccumulatedData = new PrivateToPublicAccumulatedData(
112
+ padArrayEnd(cppTx.revertibleAccumulatedData.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
113
+ padArrayEnd(cppTx.revertibleAccumulatedData.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
114
+ padArrayEnd(cppTx.revertibleAccumulatedData.l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
115
+ padArrayEnd(cppTx.revertibleContractDeploymentData.privateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
116
+ emptyRevertible.contractClassLogsHashes,
117
+ paddedAppLogicCalls,
118
+ );
119
+
120
+ // Build teardown call request (if exists)
121
+ const teardownCallRequest = cppTx.teardownEnqueuedCall?.request ?? PublicCallRequest.empty();
122
+
123
+ // Create forPublic structure
124
+ const forPublic = new PartialPrivateTailPublicInputsForPublic(
125
+ nonRevertibleAccumulatedData,
126
+ revertibleAccumulatedData,
127
+ teardownCallRequest,
128
+ );
129
+
130
+ // Build TxContext - gasSettings is already a proper GasSettings after AvmTxHint.fromPlainObject
131
+ const txContext = new TxContext(
132
+ Fr.ZERO, // chainId - this is fine because simulation actually reads from globalVariables not here
133
+ Fr.ZERO, // version - this is fine because simulation actually reads from globalVariables not here
134
+ cppTx.gasSettings,
135
+ );
136
+
137
+ // Build TxConstantData
138
+ const constants = new TxConstantData(
139
+ BlockHeader.empty(), // anchorBlockHeader (unused in simulation)
140
+ txContext,
141
+ Fr.ZERO, // vkTreeRoot - not needed for public simulation
142
+ Fr.ZERO, // protocolContractsHash - not needed for public simulation
143
+ );
144
+
145
+ const data = new PrivateKernelTailCircuitPublicInputs(
146
+ constants,
147
+ cppTx.gasUsedByPrivate,
148
+ cppTx.feePayer,
149
+ 0n, // includeByTimestamp
150
+ forPublic,
151
+ undefined, // forRollup - not needed for public simulation
152
+ );
153
+
154
+ // Build publicFunctionCalldata from all enqueued calls
155
+ // Calldata is already Fr[] after AvmTxHint.fromPlainObject
156
+ const publicFunctionCalldata: HashedValues[] = [];
157
+
158
+ // Add setup calls
159
+ for (const call of cppTx.setupEnqueuedCalls || []) {
160
+ publicFunctionCalldata.push(await HashedValues.fromCalldata(call.calldata));
161
+ }
162
+
163
+ // Add app logic calls
164
+ for (const call of cppTx.appLogicEnqueuedCalls || []) {
165
+ publicFunctionCalldata.push(await HashedValues.fromCalldata(call.calldata));
166
+ }
167
+
168
+ // Add teardown call if present
169
+ if (cppTx.teardownEnqueuedCall) {
170
+ publicFunctionCalldata.push(await HashedValues.fromCalldata(cppTx.teardownEnqueuedCall.calldata));
171
+ }
172
+
173
+ // Extract contract class log fields from ContractDeploymentData
174
+ const contractClassLogFields = [
175
+ ...cppTx.nonRevertibleContractDeploymentData.contractClassLogs.map(log => log.fields),
176
+ ...cppTx.revertibleContractDeploymentData.contractClassLogs.map(log => log.fields),
177
+ ];
178
+
179
+ // Create the Tx
180
+ return new Tx(
181
+ txHash,
182
+ data,
183
+ ChonkProof.empty(), // No real proof needed for simulation
184
+ contractClassLogFields,
185
+ publicFunctionCalldata,
186
+ );
187
+ }
188
+
189
+ /**
190
+ * A simulator class for the AVM fuzzer that extends BaseAvmSimulationTester.
191
+ * It provides methods for registering contracts from C++ msgpack data and simulating transactions.
192
+ */
193
+ export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
194
+ private simulator: PublicTxSimulator;
195
+
196
+ constructor(
197
+ merkleTrees: MerkleTreeWriteOperations,
198
+ contractDataSource: SimpleContractDataSource,
199
+ globals: GlobalVariables,
200
+ protocolContracts: ProtocolContracts,
201
+ ) {
202
+ super(contractDataSource, merkleTrees);
203
+ const contractsDb = new PublicContractsDB(contractDataSource);
204
+ this.simulator = new PublicTxSimulator(
205
+ merkleTrees,
206
+ contractsDb,
207
+ globals,
208
+ {
209
+ skipFeeEnforcement: false,
210
+ collectDebugLogs: false,
211
+ collectHints: false,
212
+ collectStatistics: false,
213
+ collectCallMetadata: false,
214
+ },
215
+ protocolContracts,
216
+ );
217
+ }
218
+
219
+ /**
220
+ * Static factory method to create an AvmFuzzerSimulator.
221
+ */
222
+ public static async create(
223
+ worldStateService: NativeWorldStateService,
224
+ globals: GlobalVariables,
225
+ protocolContracts: ProtocolContracts,
226
+ ): Promise<AvmFuzzerSimulator> {
227
+ const contractDataSource = new SimpleContractDataSource();
228
+ const merkleTrees = await worldStateService.fork();
229
+ return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals, protocolContracts);
230
+ }
231
+
232
+ /**
233
+ * Simulate a transaction from a C++ AvmTxHint.
234
+ */
235
+ public async simulate(txHint: AvmTxHint): Promise<PublicTxResult> {
236
+ // Compute fee from gas limits and max fees per gas (upper bound on fee)
237
+ const totalFee =
238
+ BigInt(txHint.gasSettings.gasLimits.daGas) * txHint.gasSettings.maxFeesPerGas.feePerDaGas +
239
+ BigInt(txHint.gasSettings.gasLimits.l2Gas) * txHint.gasSettings.maxFeesPerGas.feePerL2Gas;
240
+
241
+ await this.setFeePayerBalance(txHint.feePayer, new Fr(totalFee));
242
+
243
+ const tx = await createTxFromHint(txHint);
244
+ return await this.simulator.simulate(tx);
245
+ }
246
+
247
+ /**
248
+ * Add a contract class from C++ raw msgpack data.
249
+ */
250
+ public async addContractClassFromCpp(rawClass: any): Promise<void> {
251
+ const contractClass = contractClassPublicFromPlainObject(rawClass);
252
+ await this.contractDataSource.addContractClass(contractClass);
253
+ }
254
+
255
+ /**
256
+ * Add a contract instance from C++ raw msgpack data.
257
+ * This also inserts the contract address nullifier into the nullifier tree,
258
+ * unless the address is a protocol canonical address (1-11).
259
+ */
260
+ public async addContractInstanceFromCpp(rawAddress: any, rawInstance: any): Promise<void> {
261
+ const address = AztecAddress.fromPlainObject(rawAddress);
262
+ const instance = contractInstanceWithAddressFromPlainObject(address, rawInstance);
263
+ // Protocol canonical addresses (1-11) should not have nullifiers inserted
264
+ const isProtocolCanonicalAddress = address.toBigInt() <= MAX_PROTOCOL_CONTRACTS && address.toBigInt() >= 1n;
265
+ await this.addContractInstance(instance, /* skipNullifierInsertion */ isProtocolCanonicalAddress);
266
+ }
267
+
268
+ /**
269
+ * Apply public data tree writes from C++ raw msgpack data.
270
+ * This is used to pre-populate the public data tree before simulation (e.g., for bytecode upgrades).
271
+ */
272
+ public async applyPublicDataWrites(rawWrites: any[]): Promise<void> {
273
+ for (const rawWrite of rawWrites) {
274
+ const leaf = PublicDataTreeLeaf.fromPlainObject(rawWrite);
275
+ await this.merkleTrees.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [leaf.toBuffer()]);
276
+ }
277
+ }
278
+
279
+ /**
280
+ * Apply note hashes from C++ raw msgpack data.
281
+ * This is used to pre-populate the note hash tree before simulation.
282
+ */
283
+ public async applyNoteHashes(rawNoteHashes: any[]): Promise<void> {
284
+ const paddingLeaves = MAX_NOTE_HASHES_PER_TX - (rawNoteHashes.length % MAX_NOTE_HASHES_PER_TX);
285
+ const paddedNoteHashes = [...rawNoteHashes, ...Array(paddingLeaves).fill(Fr.ZERO)];
286
+ await this.merkleTrees.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, paddedNoteHashes);
287
+ }
288
+ }