@aztec/simulator 0.0.1-commit.24de95ac → 0.0.1-commit.27d773e65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/README.md +6 -4
  2. package/dest/client.d.ts +1 -1
  3. package/dest/common/errors.d.ts +2 -2
  4. package/dest/common/errors.d.ts.map +1 -1
  5. package/dest/common/index.d.ts +1 -1
  6. package/dest/common/stats/index.d.ts +1 -1
  7. package/dest/common/stats/stats.d.ts +1 -1
  8. package/dest/private/acvm/acvm.d.ts +4 -2
  9. package/dest/private/acvm/acvm.d.ts.map +1 -1
  10. package/dest/private/acvm/acvm.js +4 -3
  11. package/dest/private/acvm/acvm_types.d.ts +1 -1
  12. package/dest/private/acvm/deserialize.d.ts +2 -2
  13. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  14. package/dest/private/acvm/deserialize.js +1 -1
  15. package/dest/private/acvm/index.d.ts +1 -1
  16. package/dest/private/acvm/serialize.d.ts +2 -2
  17. package/dest/private/acvm/serialize.d.ts.map +1 -1
  18. package/dest/private/acvm/serialize.js +1 -1
  19. package/dest/private/acvm_native.d.ts +5 -3
  20. package/dest/private/acvm_native.d.ts.map +1 -1
  21. package/dest/private/acvm_native.js +8 -6
  22. package/dest/private/acvm_wasm.d.ts +4 -3
  23. package/dest/private/acvm_wasm.d.ts.map +1 -1
  24. package/dest/private/acvm_wasm.js +4 -4
  25. package/dest/private/acvm_wasm_with_blobs.d.ts +1 -1
  26. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -1
  27. package/dest/private/circuit_recording/circuit_recorder.d.ts +4 -3
  28. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  29. package/dest/private/circuit_recording/circuit_recorder.js +21 -18
  30. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +3 -2
  31. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  32. package/dest/private/circuit_recording/file_circuit_recorder.js +2 -2
  33. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
  34. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
  35. package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
  36. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  37. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  38. package/dest/private/circuit_simulator.d.ts +1 -1
  39. package/dest/private/factory.d.ts +3 -3
  40. package/dest/private/factory.d.ts.map +1 -1
  41. package/dest/private/factory.js +7 -4
  42. package/dest/public/avm/avm_context.d.ts +3 -3
  43. package/dest/public/avm/avm_context.d.ts.map +1 -1
  44. package/dest/public/avm/avm_contract_call_result.d.ts +6 -6
  45. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  46. package/dest/public/avm/avm_contract_call_result.js +3 -3
  47. package/dest/public/avm/avm_execution_environment.d.ts +9 -8
  48. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  49. package/dest/public/avm/avm_execution_environment.js +5 -8
  50. package/dest/public/avm/avm_gas.d.ts +2 -2
  51. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  52. package/dest/public/avm/avm_gas.js +3 -3
  53. package/dest/public/avm/avm_machine_state.d.ts +7 -6
  54. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  55. package/dest/public/avm/avm_machine_state.js +3 -2
  56. package/dest/public/avm/avm_memory_types.d.ts +14 -14
  57. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  58. package/dest/public/avm/avm_memory_types.js +4 -1
  59. package/dest/public/avm/avm_simulator.d.ts +5 -3
  60. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  61. package/dest/public/avm/avm_simulator.js +13 -11
  62. package/dest/public/avm/avm_simulator_interface.d.ts +1 -1
  63. package/dest/public/avm/calldata.d.ts +51 -0
  64. package/dest/public/avm/calldata.d.ts.map +1 -0
  65. package/dest/public/avm/calldata.js +63 -0
  66. package/dest/public/avm/errors.d.ts +8 -2
  67. package/dest/public/avm/errors.d.ts.map +1 -1
  68. package/dest/public/avm/errors.js +14 -2
  69. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +2 -0
  70. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +1 -0
  71. package/dest/public/avm/fixtures/account_proof_fetcher.js +152 -0
  72. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +1 -1
  73. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  74. package/dest/public/avm/fixtures/avm_simulation_tester.js +15 -5
  75. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -2
  76. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  77. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +1 -1
  78. package/dest/public/avm/fixtures/initializers.d.ts +2 -3
  79. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
  80. package/dest/public/avm/fixtures/initializers.js +8 -5
  81. package/dest/public/avm/fixtures/utils.d.ts +4 -3
  82. package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
  83. package/dest/public/avm/fixtures/utils.js +3 -2
  84. package/dest/public/avm/index.d.ts +1 -1
  85. package/dest/public/avm/opcodes/accrued_substate.d.ts +17 -18
  86. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  87. package/dest/public/avm/opcodes/accrued_substate.js +42 -43
  88. package/dest/public/avm/opcodes/addressing_mode.d.ts +1 -1
  89. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  90. package/dest/public/avm/opcodes/addressing_mode.js +2 -2
  91. package/dest/public/avm/opcodes/arithmetic.d.ts +3 -1
  92. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  93. package/dest/public/avm/opcodes/arithmetic.js +12 -2
  94. package/dest/public/avm/opcodes/bitwise.d.ts +3 -3
  95. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  96. package/dest/public/avm/opcodes/bitwise.js +5 -5
  97. package/dest/public/avm/opcodes/comparators.d.ts +1 -1
  98. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  99. package/dest/public/avm/opcodes/comparators.js +1 -1
  100. package/dest/public/avm/opcodes/contract.d.ts +3 -3
  101. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  102. package/dest/public/avm/opcodes/contract.js +8 -8
  103. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  104. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  105. package/dest/public/avm/opcodes/control_flow.js +4 -4
  106. package/dest/public/avm/opcodes/conversion.d.ts +3 -3
  107. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  108. package/dest/public/avm/opcodes/conversion.js +4 -4
  109. package/dest/public/avm/opcodes/ec_add.d.ts +3 -3
  110. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  111. package/dest/public/avm/opcodes/ec_add.js +17 -8
  112. package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
  113. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  114. package/dest/public/avm/opcodes/environment_getters.js +6 -6
  115. package/dest/public/avm/opcodes/external_calls.d.ts +9 -9
  116. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  117. package/dest/public/avm/opcodes/external_calls.js +23 -22
  118. package/dest/public/avm/opcodes/hashing.d.ts +7 -7
  119. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  120. package/dest/public/avm/opcodes/hashing.js +21 -16
  121. package/dest/public/avm/opcodes/index.d.ts +1 -1
  122. package/dest/public/avm/opcodes/instruction.d.ts +2 -2
  123. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  124. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  125. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  126. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  127. package/dest/public/avm/opcodes/memory.d.ts +13 -13
  128. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  129. package/dest/public/avm/opcodes/memory.js +26 -26
  130. package/dest/public/avm/opcodes/misc.d.ts +3 -3
  131. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  132. package/dest/public/avm/opcodes/misc.js +8 -8
  133. package/dest/public/avm/opcodes/storage.d.ts +14 -13
  134. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  135. package/dest/public/avm/opcodes/storage.js +34 -24
  136. package/dest/public/avm/revert_reason.d.ts +2 -2
  137. package/dest/public/avm/revert_reason.d.ts.map +1 -1
  138. package/dest/public/avm/revert_reason.js +3 -2
  139. package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -1
  140. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  141. package/dest/public/avm/serialization/bytecode_serialization.d.ts +1 -1
  142. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  143. package/dest/public/avm/serialization/bytecode_serialization.js +12 -9
  144. package/dest/public/avm/serialization/instruction_serialization.d.ts +2 -2
  145. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  146. package/dest/public/avm/serialization/instruction_serialization.js +2 -2
  147. package/dest/public/avm/test_utils.d.ts +2 -2
  148. package/dest/public/avm/test_utils.d.ts.map +1 -1
  149. package/dest/public/avm/test_utils.js +1 -1
  150. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  151. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  152. package/dest/public/contracts_db_checkpoint.js +30 -0
  153. package/dest/public/db_interfaces.d.ts +14 -2
  154. package/dest/public/db_interfaces.d.ts.map +1 -1
  155. package/dest/public/debug_fn_name.d.ts +16 -3
  156. package/dest/public/debug_fn_name.d.ts.map +1 -1
  157. package/dest/public/debug_fn_name.js +31 -3
  158. package/dest/public/executor_metrics.d.ts +3 -2
  159. package/dest/public/executor_metrics.d.ts.map +1 -1
  160. package/dest/public/executor_metrics.js +13 -34
  161. package/dest/public/executor_metrics_interface.d.ts +3 -2
  162. package/dest/public/executor_metrics_interface.d.ts.map +1 -1
  163. package/dest/public/fixtures/amm_test.d.ts +1 -1
  164. package/dest/public/fixtures/amm_test.js +4 -4
  165. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  166. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  167. package/dest/public/fixtures/bulk_test.js +5 -69
  168. package/dest/public/fixtures/custom_bytecode_tester.d.ts +29 -7
  169. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  170. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  171. package/dest/public/fixtures/custom_bytecode_tests.d.ts +11 -8
  172. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  173. package/dest/public/fixtures/custom_bytecode_tests.js +83 -18
  174. package/dest/public/fixtures/index.d.ts +4 -2
  175. package/dest/public/fixtures/index.d.ts.map +1 -1
  176. package/dest/public/fixtures/index.js +3 -1
  177. package/dest/public/fixtures/minimal_public_tx.d.ts +2 -8
  178. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
  179. package/dest/public/fixtures/minimal_public_tx.js +6 -16
  180. package/dest/public/fixtures/opcode_spammer.d.ts +122 -0
  181. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
  182. package/dest/public/fixtures/opcode_spammer.js +1653 -0
  183. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +24 -6
  184. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  185. package/dest/public/fixtures/public_tx_simulation_tester.js +89 -21
  186. package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
  187. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  188. package/dest/public/fixtures/simple_contract_data_source.js +4 -4
  189. package/dest/public/fixtures/token_test.d.ts +6 -2
  190. package/dest/public/fixtures/token_test.d.ts.map +1 -1
  191. package/dest/public/fixtures/token_test.js +13 -12
  192. package/dest/public/fixtures/utils.d.ts +2 -2
  193. package/dest/public/fixtures/utils.d.ts.map +1 -1
  194. package/dest/public/fixtures/utils.js +8 -7
  195. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
  196. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  197. package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
  198. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  199. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  200. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  201. package/dest/public/hinting_db_sources.d.ts +14 -4
  202. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  203. package/dest/public/hinting_db_sources.js +71 -13
  204. package/dest/public/index.d.ts +3 -2
  205. package/dest/public/index.d.ts.map +1 -1
  206. package/dest/public/index.js +1 -1
  207. package/dest/public/public_db_sources.d.ts +25 -65
  208. package/dest/public/public_db_sources.d.ts.map +1 -1
  209. package/dest/public/public_db_sources.js +78 -135
  210. package/dest/public/public_errors.d.ts +1 -1
  211. package/dest/public/public_errors.d.ts.map +1 -1
  212. package/dest/public/public_processor/guarded_merkle_tree.d.ts +6 -4
  213. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  214. package/dest/public/public_processor/guarded_merkle_tree.js +5 -0
  215. package/dest/public/public_processor/public_processor.d.ts +17 -20
  216. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  217. package/dest/public/public_processor/public_processor.js +477 -72
  218. package/dest/public/public_processor/public_processor_metrics.d.ts +2 -2
  219. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  220. package/dest/public/public_processor/public_processor_metrics.js +28 -45
  221. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +19 -0
  222. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  223. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +98 -0
  224. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +35 -23
  225. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  226. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +95 -53
  227. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
  228. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
  229. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
  230. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
  231. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
  232. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +171 -0
  233. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +23 -0
  234. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
  235. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
  236. package/dest/public/public_tx_simulator/factories.d.ts +14 -0
  237. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  238. package/dest/public/public_tx_simulator/factories.js +28 -0
  239. package/dest/public/public_tx_simulator/index.d.ts +5 -1
  240. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  241. package/dest/public/public_tx_simulator/index.js +3 -0
  242. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +14 -7
  243. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
  244. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +5 -5
  245. package/dest/public/public_tx_simulator/public_tx_context.d.ts +8 -4
  246. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  247. package/dest/public/public_tx_simulator/public_tx_context.js +17 -9
  248. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +15 -33
  249. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  250. package/dest/public/public_tx_simulator/public_tx_simulator.js +118 -130
  251. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +25 -2
  252. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  253. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +4 -4
  254. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
  255. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +395 -19
  256. package/dest/public/side_effect_errors.d.ts +1 -1
  257. package/dest/public/side_effect_errors.d.ts.map +1 -1
  258. package/dest/public/side_effect_trace.d.ts +5 -5
  259. package/dest/public/side_effect_trace.d.ts.map +1 -1
  260. package/dest/public/side_effect_trace.js +4 -4
  261. package/dest/public/side_effect_trace_interface.d.ts +3 -4
  262. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  263. package/dest/public/state_manager/index.d.ts +1 -1
  264. package/dest/public/state_manager/nullifiers.d.ts +2 -2
  265. package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
  266. package/dest/public/state_manager/public_storage.d.ts +2 -2
  267. package/dest/public/state_manager/public_storage.d.ts.map +1 -1
  268. package/dest/public/state_manager/public_storage.js +1 -1
  269. package/dest/public/state_manager/state_manager.d.ts +16 -12
  270. package/dest/public/state_manager/state_manager.d.ts.map +1 -1
  271. package/dest/public/state_manager/state_manager.js +21 -10
  272. package/dest/public/test_executor_metrics.d.ts +11 -4
  273. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  274. package/dest/public/test_executor_metrics.js +29 -6
  275. package/dest/public/unique_class_ids.d.ts +1 -1
  276. package/dest/public/unique_class_ids.d.ts.map +1 -1
  277. package/dest/public/utils.d.ts +1 -1
  278. package/dest/server.d.ts +1 -1
  279. package/dest/testing.d.ts +1 -1
  280. package/package.json +21 -20
  281. package/src/common/errors.ts +1 -1
  282. package/src/private/acvm/acvm.ts +4 -3
  283. package/src/private/acvm/deserialize.ts +1 -1
  284. package/src/private/acvm/serialize.ts +1 -1
  285. package/src/private/acvm_native.ts +11 -5
  286. package/src/private/acvm_wasm.ts +7 -3
  287. package/src/private/circuit_recording/circuit_recorder.ts +22 -19
  288. package/src/private/circuit_recording/file_circuit_recorder.ts +7 -2
  289. package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
  290. package/src/private/factory.ts +7 -4
  291. package/src/public/avm/avm_context.ts +2 -2
  292. package/src/public/avm/avm_contract_call_result.ts +8 -6
  293. package/src/public/avm/avm_execution_environment.ts +13 -10
  294. package/src/public/avm/avm_gas.ts +5 -5
  295. package/src/public/avm/avm_machine_state.ts +7 -6
  296. package/src/public/avm/avm_memory_types.ts +5 -1
  297. package/src/public/avm/avm_simulator.ts +19 -14
  298. package/src/public/avm/calldata.ts +100 -0
  299. package/src/public/avm/errors.ts +17 -3
  300. package/src/public/avm/fixtures/account_proof.json +553 -0
  301. package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
  302. package/src/public/avm/fixtures/avm_simulation_tester.ts +18 -4
  303. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +1 -1
  304. package/src/public/avm/fixtures/initializers.ts +10 -11
  305. package/src/public/avm/fixtures/utils.ts +3 -2
  306. package/src/public/avm/opcodes/accrued_substate.ts +31 -34
  307. package/src/public/avm/opcodes/addressing_mode.ts +2 -2
  308. package/src/public/avm/opcodes/arithmetic.ts +14 -2
  309. package/src/public/avm/opcodes/bitwise.ts +3 -3
  310. package/src/public/avm/opcodes/comparators.ts +1 -1
  311. package/src/public/avm/opcodes/contract.ts +4 -7
  312. package/src/public/avm/opcodes/control_flow.ts +2 -2
  313. package/src/public/avm/opcodes/conversion.ts +3 -3
  314. package/src/public/avm/opcodes/ec_add.ts +15 -6
  315. package/src/public/avm/opcodes/environment_getters.ts +7 -7
  316. package/src/public/avm/opcodes/external_calls.ts +17 -15
  317. package/src/public/avm/opcodes/hashing.ts +16 -10
  318. package/src/public/avm/opcodes/instruction_impl.ts +2 -2
  319. package/src/public/avm/opcodes/memory.ts +20 -20
  320. package/src/public/avm/opcodes/misc.ts +6 -6
  321. package/src/public/avm/opcodes/storage.ts +30 -22
  322. package/src/public/avm/revert_reason.ts +6 -3
  323. package/src/public/avm/serialization/bytecode_serialization.ts +19 -8
  324. package/src/public/avm/serialization/instruction_serialization.ts +2 -2
  325. package/src/public/avm/test_utils.ts +1 -1
  326. package/src/public/contracts_db_checkpoint.ts +41 -0
  327. package/src/public/db_interfaces.ts +16 -1
  328. package/src/public/debug_fn_name.ts +39 -5
  329. package/src/public/executor_metrics.ts +11 -34
  330. package/src/public/executor_metrics_interface.ts +2 -1
  331. package/src/public/fixtures/amm_test.ts +4 -4
  332. package/src/public/fixtures/bulk_test.ts +9 -9
  333. package/src/public/fixtures/custom_bytecode_tester.ts +54 -20
  334. package/src/public/fixtures/custom_bytecode_tests.ts +111 -18
  335. package/src/public/fixtures/index.ts +7 -1
  336. package/src/public/fixtures/minimal_public_tx.ts +7 -17
  337. package/src/public/fixtures/opcode_spammer.ts +1717 -0
  338. package/src/public/fixtures/public_tx_simulation_tester.ts +116 -21
  339. package/src/public/fixtures/simple_contract_data_source.ts +8 -9
  340. package/src/public/fixtures/token_test.ts +18 -10
  341. package/src/public/fixtures/utils.ts +6 -7
  342. package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
  343. package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
  344. package/src/public/hinting_db_sources.ts +112 -10
  345. package/src/public/index.ts +6 -4
  346. package/src/public/public_db_sources.ts +107 -176
  347. package/src/public/public_processor/guarded_merkle_tree.ts +8 -3
  348. package/src/public/public_processor/public_processor.ts +124 -75
  349. package/src/public/public_processor/public_processor_metrics.ts +16 -44
  350. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +124 -0
  351. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +141 -59
  352. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +134 -0
  353. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +239 -0
  354. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +83 -0
  355. package/src/public/public_tx_simulator/factories.ts +44 -0
  356. package/src/public/public_tx_simulator/index.ts +4 -0
  357. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +10 -14
  358. package/src/public/public_tx_simulator/public_tx_context.ts +22 -9
  359. package/src/public/public_tx_simulator/public_tx_simulator.ts +177 -198
  360. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +24 -2
  361. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +3 -3
  362. package/src/public/side_effect_trace.ts +6 -3
  363. package/src/public/side_effect_trace_interface.ts +1 -1
  364. package/src/public/state_manager/nullifiers.ts +1 -1
  365. package/src/public/state_manager/public_storage.ts +1 -1
  366. package/src/public/state_manager/state_manager.ts +35 -26
  367. package/src/public/test_executor_metrics.ts +34 -8
  368. package/dest/public/tx_contract_cache.d.ts +0 -41
  369. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  370. package/dest/public/tx_contract_cache.js +0 -49
  371. package/src/public/tx_contract_cache.ts +0 -69
@@ -0,0 +1,83 @@
1
+ import type { LoggerBindings } from '@aztec/foundation/log';
2
+ import {
3
+ AvmCircuitInputs,
4
+ AvmCircuitPublicInputs,
5
+ AvmExecutionHints,
6
+ type PublicSimulatorConfig,
7
+ PublicTxResult,
8
+ serializeWithMessagePack,
9
+ } from '@aztec/stdlib/avm';
10
+ import type { MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
11
+ import type { GlobalVariables, Tx, TxHash } from '@aztec/stdlib/tx';
12
+
13
+ import { strict as assert } from 'assert';
14
+ import { mkdirSync, writeFileSync } from 'fs';
15
+ import { join } from 'path';
16
+
17
+ import type { PublicContractsDB } from '../public_db_sources.js';
18
+ import { CppPublicTxSimulator } from './cpp_public_tx_simulator.js';
19
+
20
+ /**
21
+ * A C++ public tx simulator that dumps AVM circuit inputs to disk after simulation.
22
+ * Used during nightly CI runs to collect circuit inputs for benchmarking.
23
+ */
24
+ export class DumpingCppPublicTxSimulator extends CppPublicTxSimulator {
25
+ private readonly outputDir: string;
26
+
27
+ constructor(
28
+ merkleTree: MerkleTreeWriteOperations,
29
+ contractsDB: PublicContractsDB,
30
+ globalVariables: GlobalVariables,
31
+ config: Partial<PublicSimulatorConfig>,
32
+ outputDir: string,
33
+ bindings?: LoggerBindings,
34
+ ) {
35
+ super(merkleTree, contractsDB, globalVariables, config, bindings);
36
+ assert(config.collectHints === true, 'collectHints must be enabled to dump AVM circuit inputs');
37
+ assert(config.collectPublicInputs === true, 'collectPublicInputs must be enabled to dump AVM circuit inputs');
38
+ this.outputDir = outputDir;
39
+ }
40
+
41
+ public override async simulate(tx: Tx): Promise<PublicTxResult> {
42
+ const result = await super.simulate(tx);
43
+
44
+ // Dump the circuit inputs after successful simulation
45
+ const txHash = this.computeTxHash(tx);
46
+ this.dumpAvmCircuitInputs(result, txHash);
47
+
48
+ return result;
49
+ }
50
+
51
+ /**
52
+ * Dumps AVM circuit inputs to disk.
53
+ *
54
+ * @param result - The simulation result containing hints and public inputs
55
+ * @param txHash - The transaction hash to use in the filename
56
+ */
57
+ private dumpAvmCircuitInputs(result: PublicTxResult, txHash: TxHash): void {
58
+ try {
59
+ // Ensure the output directory exists
60
+ mkdirSync(this.outputDir, { recursive: true });
61
+
62
+ // Generate filename using transaction hash
63
+ const filename = `avm-circuit-inputs-tx-${txHash.toString()}.bin`;
64
+ const filepath = join(this.outputDir, filename);
65
+
66
+ // Create circuit inputs from the result
67
+ const hints = result.hints ?? AvmExecutionHints.empty();
68
+ const publicInputs = result.publicInputs ?? AvmCircuitPublicInputs.empty();
69
+ const avmCircuitInputs = new AvmCircuitInputs(hints, publicInputs);
70
+
71
+ // Serialize the circuit inputs using MessagePack
72
+ const serialized = serializeWithMessagePack(avmCircuitInputs);
73
+
74
+ // Write to disk
75
+ writeFileSync(filepath, serialized);
76
+
77
+ this.log.debug(`Dumped AVM circuit inputs to ${filepath}`);
78
+ } catch (error) {
79
+ // Non-blocking error handling - log but don't interrupt processing
80
+ this.log.warn(`Failed to dump AVM circuit inputs for tx ${txHash.toString()}: ${error}`);
81
+ }
82
+ }
83
+ }
@@ -0,0 +1,44 @@
1
+ import type { LoggerBindings } from '@aztec/foundation/log';
2
+ import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
3
+ import type { MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
4
+ import type { GlobalVariables } from '@aztec/stdlib/tx';
5
+ import type { TelemetryClient } from '@aztec/telemetry-client';
6
+
7
+ import type { PublicContractsDB } from '../public_db_sources.js';
8
+ import { TelemetryCppPublicTxSimulator } from './cpp_public_tx_simulator.js';
9
+ import { DumpingCppPublicTxSimulator } from './dumping_cpp_public_tx_simulator.js';
10
+
11
+ /**
12
+ * Creates a public tx simulator for block building.
13
+ * Uses DumpingCppPublicTxSimulator if DUMP_AVM_INPUTS_TO_DIR env var is set (for CI/testing avm circuit),
14
+ * otherwise uses TelemetryCppPublicTxSimulator (for production).
15
+ */
16
+ export function createPublicTxSimulatorForBlockBuilding(
17
+ merkleTree: MerkleTreeWriteOperations,
18
+ contractsDB: PublicContractsDB,
19
+ globalVariables: GlobalVariables,
20
+ telemetryClient: TelemetryClient,
21
+ bindings?: LoggerBindings,
22
+ collectDebugLogs = false,
23
+ ) {
24
+ const config = PublicSimulatorConfig.from({
25
+ skipFeeEnforcement: false,
26
+ collectDebugLogs,
27
+ collectHints: false,
28
+ collectPublicInputs: false,
29
+ collectStatistics: false,
30
+ collectCallMetadata: false,
31
+ });
32
+
33
+ const dumpDir = process.env.DUMP_AVM_INPUTS_TO_DIR;
34
+ if (dumpDir) {
35
+ // must collect hints and PIs for dumping
36
+ const dumpingConfig = {
37
+ ...config,
38
+ collectHints: true,
39
+ collectPublicInputs: true,
40
+ };
41
+ return new DumpingCppPublicTxSimulator(merkleTree, contractsDB, globalVariables, dumpingConfig, dumpDir, bindings);
42
+ }
43
+ return new TelemetryCppPublicTxSimulator(merkleTree, contractsDB, globalVariables, telemetryClient, config, bindings);
44
+ }
@@ -1,3 +1,7 @@
1
1
  export * from './public_tx_simulator.js';
2
+ export { CppPublicTxSimulator, TelemetryCppPublicTxSimulator } from './cpp_public_tx_simulator.js';
3
+ export { DumpingCppPublicTxSimulator } from './dumping_cpp_public_tx_simulator.js';
4
+ export { createPublicTxSimulatorForBlockBuilding } from './factories.js';
2
5
  export type { PublicTxSimulatorInterface } from './public_tx_simulator_interface.js';
3
6
  export { TelemetryPublicTxSimulator } from './telemetry_public_tx_simulator.js';
7
+ export type { PublicTxResult, PublicSimulatorConfig as PublicTxSimulatorConfig } from '@aztec/stdlib/avm';
@@ -1,5 +1,6 @@
1
- import type { Fr } from '@aztec/foundation/fields';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { Timer } from '@aztec/foundation/timer';
3
+ import type { PublicSimulatorConfig, PublicTxResult } from '@aztec/stdlib/avm';
3
4
  import type { Gas } from '@aztec/stdlib/gas';
4
5
  import type { AvmSimulationStats } from '@aztec/stdlib/stats';
5
6
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
@@ -10,12 +11,7 @@ import type { ExecutorMetricsInterface } from '../executor_metrics_interface.js'
10
11
  import type { PublicContractsDB } from '../public_db_sources.js';
11
12
  import type { PublicPersistableStateManager } from '../state_manager/state_manager.js';
12
13
  import { PublicTxContext } from './public_tx_context.js';
13
- import {
14
- type ProcessedPhase,
15
- type PublicTxResult,
16
- PublicTxSimulator,
17
- type PublicTxSimulatorConfig,
18
- } from './public_tx_simulator.js';
14
+ import { PublicTxSimulator } from './public_tx_simulator.js';
19
15
  import type { MeasuredPublicTxSimulatorInterface } from './public_tx_simulator_interface.js';
20
16
 
21
17
  /**
@@ -27,7 +23,7 @@ export class MeasuredPublicTxSimulator extends PublicTxSimulator implements Meas
27
23
  contractsDB: PublicContractsDB,
28
24
  globalVariables: GlobalVariables,
29
25
  protected readonly metrics: ExecutorMetricsInterface,
30
- config?: Partial<PublicTxSimulatorConfig>,
26
+ config?: Partial<PublicSimulatorConfig>,
31
27
  ) {
32
28
  super(merkleTree, contractsDB, globalVariables, config);
33
29
  }
@@ -38,24 +34,24 @@ export class MeasuredPublicTxSimulator extends PublicTxSimulator implements Meas
38
34
  try {
39
35
  avmResult = await super.simulate(tx);
40
36
  } finally {
41
- this.metrics.stopRecordingTxSimulation(txLabel, avmResult?.revertCode);
37
+ this.metrics.stopRecordingTxSimulation(txLabel, avmResult?.gasUsed, avmResult?.revertCode);
42
38
  }
43
39
  return avmResult;
44
40
  }
45
41
 
46
- protected override async insertNonRevertiblesFromPrivate(context: PublicTxContext, tx: Tx) {
42
+ protected override async insertNonRevertiblesFromPrivate(context: PublicTxContext) {
47
43
  const timer = new Timer();
48
- await super.insertNonRevertiblesFromPrivate(context, tx);
44
+ await super.insertNonRevertiblesFromPrivate(context);
49
45
  this.metrics.recordPrivateEffectsInsertion(timer.us(), 'non-revertible');
50
46
  }
51
47
 
52
- protected override async insertRevertiblesFromPrivate(context: PublicTxContext, tx: Tx) {
48
+ protected override async insertRevertiblesFromPrivate(context: PublicTxContext) {
53
49
  const timer = new Timer();
54
- await super.insertRevertiblesFromPrivate(context, tx);
50
+ await super.insertRevertiblesFromPrivate(context);
55
51
  this.metrics.recordPrivateEffectsInsertion(timer.us(), 'revertible');
56
52
  }
57
53
 
58
- protected override async simulatePhase(phase: TxExecutionPhase, context: PublicTxContext): Promise<ProcessedPhase> {
54
+ protected override async simulatePhase(phase: TxExecutionPhase, context: PublicTxContext) {
59
55
  const timer = new Timer();
60
56
  const result = await super.simulatePhase(phase, context);
61
57
  result.durationMs = timer.ms();
@@ -6,8 +6,8 @@ import {
6
6
  MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
7
7
  } from '@aztec/constants';
8
8
  import { padArrayEnd } from '@aztec/foundation/collection';
9
- import { Fr } from '@aztec/foundation/fields';
10
- import { type Logger, createLogger } from '@aztec/foundation/log';
9
+ import { Fr } from '@aztec/foundation/curves/bn254';
10
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
11
11
  import {
12
12
  AvmAccumulatedData,
13
13
  AvmAccumulatedDataArrayLengths,
@@ -16,6 +16,7 @@ import {
16
16
  RevertCode,
17
17
  } from '@aztec/stdlib/avm';
18
18
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
19
+ import { AllContractDeploymentData, type ContractDeploymentData } from '@aztec/stdlib/contract';
19
20
  import type { SimulationError } from '@aztec/stdlib/errors';
20
21
  import { computeEffectiveGasFees, computeTransactionFee } from '@aztec/stdlib/fees';
21
22
  import { Gas, GasSettings } from '@aztec/stdlib/gas';
@@ -80,12 +81,15 @@ export class PublicTxContext {
80
81
  private readonly setupCallRequests: PublicCallRequestWithCalldata[],
81
82
  private readonly appLogicCallRequests: PublicCallRequestWithCalldata[],
82
83
  private readonly teardownCallRequests: PublicCallRequestWithCalldata[],
84
+ public readonly nonRevertibleContractDeploymentData: ContractDeploymentData,
85
+ public readonly revertibleContractDeploymentData: ContractDeploymentData,
83
86
  public readonly nonRevertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData,
84
87
  public readonly revertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData,
85
88
  public readonly feePayer: AztecAddress,
86
89
  private readonly trace: SideEffectTrace,
90
+ bindings?: LoggerBindings,
87
91
  ) {
88
- this.log = createLogger(`simulator:public_tx_context`);
92
+ this.log = createLogger(`simulator:public_tx_context`, bindings);
89
93
  }
90
94
 
91
95
  public static async create(
@@ -94,12 +98,15 @@ export class PublicTxContext {
94
98
  tx: Tx,
95
99
  globalVariables: GlobalVariables,
96
100
  protocolContracts: ProtocolContracts,
97
- doMerkleOperations: boolean,
98
101
  proverId: Fr,
102
+ bindings?: LoggerBindings,
99
103
  ) {
104
+ const contractDeploymentData = AllContractDeploymentData.fromTx(tx);
105
+ const nonRevertibleContractDeploymentData = contractDeploymentData.getNonRevertibleContractDeploymentData();
106
+ const revertibleContractDeploymentData = contractDeploymentData.getRevertibleContractDeploymentData();
100
107
  const nonRevertibleAccumulatedDataFromPrivate = tx.data.forPublic!.nonRevertibleAccumulatedData;
101
108
 
102
- const trace = new SideEffectTrace();
109
+ const trace = new SideEffectTrace(0, bindings);
103
110
 
104
111
  const firstNullifier = nonRevertibleAccumulatedDataFromPrivate.nullifiers[0];
105
112
 
@@ -108,9 +115,9 @@ export class PublicTxContext {
108
115
  treesDB,
109
116
  contractsDB,
110
117
  trace,
111
- doMerkleOperations,
112
118
  firstNullifier,
113
119
  globalVariables.timestamp,
120
+ bindings,
114
121
  );
115
122
 
116
123
  const gasSettings = tx.data.constants.txContext.gasSettings;
@@ -120,7 +127,7 @@ export class PublicTxContext {
120
127
 
121
128
  return new PublicTxContext(
122
129
  tx.getTxHash(),
123
- new PhaseStateManager(txStateManager),
130
+ new PhaseStateManager(txStateManager, bindings),
124
131
  await txStateManager.getTreeSnapshots(),
125
132
  globalVariables,
126
133
  protocolContracts,
@@ -132,10 +139,13 @@ export class PublicTxContext {
132
139
  getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.SETUP),
133
140
  getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.APP_LOGIC),
134
141
  getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.TEARDOWN),
142
+ nonRevertibleContractDeploymentData,
143
+ revertibleContractDeploymentData,
135
144
  tx.data.forPublic!.nonRevertibleAccumulatedData,
136
145
  tx.data.forPublic!.revertibleAccumulatedData,
137
146
  tx.data.feePayer,
138
147
  trace,
148
+ bindings,
139
149
  );
140
150
  }
141
151
 
@@ -435,8 +445,11 @@ class PhaseStateManager {
435
445
 
436
446
  private currentlyActiveStateManager: PublicPersistableStateManager | undefined;
437
447
 
438
- constructor(private readonly txStateManager: PublicPersistableStateManager) {
439
- this.log = createLogger(`simulator:public_phase_state_manager`);
448
+ constructor(
449
+ private readonly txStateManager: PublicPersistableStateManager,
450
+ bindings?: LoggerBindings,
451
+ ) {
452
+ this.log = createLogger(`simulator:public_phase_state_manager`, bindings);
440
453
  }
441
454
 
442
455
  async fork() {