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

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 (344) hide show
  1. package/README.md +2 -0
  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 +1 -1
  9. package/dest/private/acvm/acvm_types.d.ts +1 -1
  10. package/dest/private/acvm/deserialize.d.ts +2 -2
  11. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  12. package/dest/private/acvm/deserialize.js +1 -1
  13. package/dest/private/acvm/index.d.ts +1 -1
  14. package/dest/private/acvm/serialize.d.ts +2 -2
  15. package/dest/private/acvm/serialize.d.ts.map +1 -1
  16. package/dest/private/acvm/serialize.js +1 -1
  17. package/dest/private/acvm_native.d.ts +1 -1
  18. package/dest/private/acvm_native.d.ts.map +1 -1
  19. package/dest/private/acvm_wasm.d.ts +1 -1
  20. package/dest/private/acvm_wasm.d.ts.map +1 -1
  21. package/dest/private/acvm_wasm_with_blobs.d.ts +1 -1
  22. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -1
  23. package/dest/private/circuit_recording/circuit_recorder.d.ts +1 -1
  24. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  25. package/dest/private/circuit_recording/circuit_recorder.js +16 -15
  26. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +1 -1
  27. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  28. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +1 -1
  29. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
  30. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  31. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  32. package/dest/private/circuit_simulator.d.ts +1 -1
  33. package/dest/private/factory.d.ts +1 -1
  34. package/dest/public/avm/avm_context.d.ts +2 -2
  35. package/dest/public/avm/avm_context.d.ts.map +1 -1
  36. package/dest/public/avm/avm_contract_call_result.d.ts +2 -2
  37. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  38. package/dest/public/avm/avm_execution_environment.d.ts +5 -5
  39. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  40. package/dest/public/avm/avm_execution_environment.js +5 -8
  41. package/dest/public/avm/avm_gas.d.ts +2 -2
  42. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  43. package/dest/public/avm/avm_machine_state.d.ts +2 -2
  44. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  45. package/dest/public/avm/avm_memory_types.d.ts +14 -14
  46. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  47. package/dest/public/avm/avm_memory_types.js +4 -1
  48. package/dest/public/avm/avm_simulator.d.ts +4 -3
  49. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  50. package/dest/public/avm/avm_simulator.js +8 -7
  51. package/dest/public/avm/avm_simulator_interface.d.ts +1 -1
  52. package/dest/public/avm/errors.d.ts +8 -2
  53. package/dest/public/avm/errors.d.ts.map +1 -1
  54. package/dest/public/avm/errors.js +14 -2
  55. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +1 -1
  56. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  57. package/dest/public/avm/fixtures/avm_simulation_tester.js +12 -3
  58. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -2
  59. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  60. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +1 -1
  61. package/dest/public/avm/fixtures/initializers.d.ts +2 -3
  62. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
  63. package/dest/public/avm/fixtures/initializers.js +7 -5
  64. package/dest/public/avm/fixtures/utils.d.ts +4 -3
  65. package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
  66. package/dest/public/avm/fixtures/utils.js +3 -2
  67. package/dest/public/avm/index.d.ts +1 -1
  68. package/dest/public/avm/opcodes/accrued_substate.d.ts +15 -15
  69. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  70. package/dest/public/avm/opcodes/accrued_substate.js +29 -29
  71. package/dest/public/avm/opcodes/addressing_mode.d.ts +1 -1
  72. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  73. package/dest/public/avm/opcodes/addressing_mode.js +2 -2
  74. package/dest/public/avm/opcodes/arithmetic.d.ts +3 -1
  75. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  76. package/dest/public/avm/opcodes/arithmetic.js +12 -2
  77. package/dest/public/avm/opcodes/bitwise.d.ts +3 -3
  78. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  79. package/dest/public/avm/opcodes/bitwise.js +5 -5
  80. package/dest/public/avm/opcodes/comparators.d.ts +1 -1
  81. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  82. package/dest/public/avm/opcodes/comparators.js +1 -1
  83. package/dest/public/avm/opcodes/contract.d.ts +3 -3
  84. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  85. package/dest/public/avm/opcodes/contract.js +8 -8
  86. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  87. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  88. package/dest/public/avm/opcodes/control_flow.js +4 -4
  89. package/dest/public/avm/opcodes/conversion.d.ts +3 -3
  90. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  91. package/dest/public/avm/opcodes/conversion.js +4 -4
  92. package/dest/public/avm/opcodes/ec_add.d.ts +3 -3
  93. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  94. package/dest/public/avm/opcodes/ec_add.js +17 -8
  95. package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
  96. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  97. package/dest/public/avm/opcodes/environment_getters.js +6 -6
  98. package/dest/public/avm/opcodes/external_calls.d.ts +9 -9
  99. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  100. package/dest/public/avm/opcodes/external_calls.js +17 -16
  101. package/dest/public/avm/opcodes/hashing.d.ts +7 -7
  102. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  103. package/dest/public/avm/opcodes/hashing.js +21 -16
  104. package/dest/public/avm/opcodes/index.d.ts +1 -1
  105. package/dest/public/avm/opcodes/instruction.d.ts +2 -2
  106. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  107. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  108. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  109. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  110. package/dest/public/avm/opcodes/memory.d.ts +13 -13
  111. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  112. package/dest/public/avm/opcodes/memory.js +25 -25
  113. package/dest/public/avm/opcodes/misc.d.ts +3 -3
  114. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  115. package/dest/public/avm/opcodes/misc.js +8 -8
  116. package/dest/public/avm/opcodes/storage.d.ts +14 -13
  117. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  118. package/dest/public/avm/opcodes/storage.js +34 -24
  119. package/dest/public/avm/revert_reason.d.ts +2 -2
  120. package/dest/public/avm/revert_reason.d.ts.map +1 -1
  121. package/dest/public/avm/revert_reason.js +3 -2
  122. package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -1
  123. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  124. package/dest/public/avm/serialization/bytecode_serialization.d.ts +1 -1
  125. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  126. package/dest/public/avm/serialization/bytecode_serialization.js +9 -6
  127. package/dest/public/avm/serialization/instruction_serialization.d.ts +1 -1
  128. package/dest/public/avm/serialization/instruction_serialization.js +1 -1
  129. package/dest/public/avm/test_utils.d.ts +2 -2
  130. package/dest/public/avm/test_utils.d.ts.map +1 -1
  131. package/dest/public/avm/test_utils.js +1 -1
  132. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  133. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  134. package/dest/public/contracts_db_checkpoint.js +30 -0
  135. package/dest/public/db_interfaces.d.ts +14 -2
  136. package/dest/public/db_interfaces.d.ts.map +1 -1
  137. package/dest/public/debug_fn_name.d.ts +15 -2
  138. package/dest/public/debug_fn_name.d.ts.map +1 -1
  139. package/dest/public/debug_fn_name.js +28 -2
  140. package/dest/public/executor_metrics.d.ts +3 -2
  141. package/dest/public/executor_metrics.d.ts.map +1 -1
  142. package/dest/public/executor_metrics.js +9 -35
  143. package/dest/public/executor_metrics_interface.d.ts +3 -2
  144. package/dest/public/executor_metrics_interface.d.ts.map +1 -1
  145. package/dest/public/fixtures/amm_test.d.ts +1 -1
  146. package/dest/public/fixtures/amm_test.js +2 -2
  147. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  148. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  149. package/dest/public/fixtures/bulk_test.js +5 -69
  150. package/dest/public/fixtures/custom_bytecode_tester.d.ts +29 -7
  151. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  152. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  153. package/dest/public/fixtures/custom_bytecode_tests.d.ts +11 -8
  154. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  155. package/dest/public/fixtures/custom_bytecode_tests.js +83 -18
  156. package/dest/public/fixtures/index.d.ts +4 -2
  157. package/dest/public/fixtures/index.d.ts.map +1 -1
  158. package/dest/public/fixtures/index.js +3 -1
  159. package/dest/public/fixtures/minimal_public_tx.d.ts +2 -8
  160. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
  161. package/dest/public/fixtures/minimal_public_tx.js +6 -16
  162. package/dest/public/fixtures/opcode_spammer.d.ts +123 -0
  163. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
  164. package/dest/public/fixtures/opcode_spammer.js +1693 -0
  165. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +24 -6
  166. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  167. package/dest/public/fixtures/public_tx_simulation_tester.js +62 -21
  168. package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
  169. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  170. package/dest/public/fixtures/simple_contract_data_source.js +4 -4
  171. package/dest/public/fixtures/token_test.d.ts +6 -2
  172. package/dest/public/fixtures/token_test.d.ts.map +1 -1
  173. package/dest/public/fixtures/token_test.js +13 -12
  174. package/dest/public/fixtures/utils.d.ts +2 -2
  175. package/dest/public/fixtures/utils.d.ts.map +1 -1
  176. package/dest/public/fixtures/utils.js +4 -3
  177. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
  178. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  179. package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
  180. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  181. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  182. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  183. package/dest/public/hinting_db_sources.d.ts +14 -4
  184. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  185. package/dest/public/hinting_db_sources.js +71 -13
  186. package/dest/public/index.d.ts +3 -2
  187. package/dest/public/index.d.ts.map +1 -1
  188. package/dest/public/index.js +1 -1
  189. package/dest/public/public_db_sources.d.ts +22 -63
  190. package/dest/public/public_db_sources.d.ts.map +1 -1
  191. package/dest/public/public_db_sources.js +74 -131
  192. package/dest/public/public_errors.d.ts +1 -1
  193. package/dest/public/public_errors.d.ts.map +1 -1
  194. package/dest/public/public_processor/guarded_merkle_tree.d.ts +6 -4
  195. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  196. package/dest/public/public_processor/guarded_merkle_tree.js +5 -0
  197. package/dest/public/public_processor/public_processor.d.ts +12 -19
  198. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  199. package/dest/public/public_processor/public_processor.js +456 -64
  200. package/dest/public/public_processor/public_processor_metrics.d.ts +1 -1
  201. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  202. package/dest/public/public_processor/public_processor_metrics.js +12 -45
  203. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +18 -0
  204. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  205. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +98 -0
  206. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +34 -22
  207. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  208. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +93 -50
  209. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
  210. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
  211. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
  212. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
  213. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
  214. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +171 -0
  215. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +22 -0
  216. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
  217. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
  218. package/dest/public/public_tx_simulator/factories.d.ts +13 -0
  219. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  220. package/dest/public/public_tx_simulator/factories.js +28 -0
  221. package/dest/public/public_tx_simulator/index.d.ts +5 -1
  222. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  223. package/dest/public/public_tx_simulator/index.js +3 -0
  224. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +14 -7
  225. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
  226. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +5 -5
  227. package/dest/public/public_tx_simulator/public_tx_context.d.ts +6 -3
  228. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  229. package/dest/public/public_tx_simulator/public_tx_context.js +13 -5
  230. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +13 -32
  231. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  232. package/dest/public/public_tx_simulator/public_tx_simulator.js +112 -127
  233. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +25 -2
  234. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  235. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +4 -4
  236. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
  237. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +395 -19
  238. package/dest/public/side_effect_errors.d.ts +1 -1
  239. package/dest/public/side_effect_errors.d.ts.map +1 -1
  240. package/dest/public/side_effect_trace.d.ts +2 -2
  241. package/dest/public/side_effect_trace.d.ts.map +1 -1
  242. package/dest/public/side_effect_trace.js +1 -1
  243. package/dest/public/side_effect_trace_interface.d.ts +3 -4
  244. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  245. package/dest/public/state_manager/index.d.ts +1 -1
  246. package/dest/public/state_manager/nullifiers.d.ts +2 -2
  247. package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
  248. package/dest/public/state_manager/public_storage.d.ts +2 -2
  249. package/dest/public/state_manager/public_storage.d.ts.map +1 -1
  250. package/dest/public/state_manager/public_storage.js +1 -1
  251. package/dest/public/state_manager/state_manager.d.ts +9 -11
  252. package/dest/public/state_manager/state_manager.d.ts.map +1 -1
  253. package/dest/public/state_manager/state_manager.js +12 -8
  254. package/dest/public/test_executor_metrics.d.ts +4 -3
  255. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  256. package/dest/public/test_executor_metrics.js +5 -4
  257. package/dest/public/unique_class_ids.d.ts +1 -1
  258. package/dest/public/unique_class_ids.d.ts.map +1 -1
  259. package/dest/public/utils.d.ts +1 -1
  260. package/dest/server.d.ts +1 -1
  261. package/dest/testing.d.ts +1 -1
  262. package/package.json +21 -20
  263. package/src/common/errors.ts +1 -1
  264. package/src/private/acvm/deserialize.ts +1 -1
  265. package/src/private/acvm/serialize.ts +1 -1
  266. package/src/private/circuit_recording/circuit_recorder.ts +17 -16
  267. package/src/public/avm/avm_context.ts +1 -1
  268. package/src/public/avm/avm_contract_call_result.ts +1 -1
  269. package/src/public/avm/avm_execution_environment.ts +4 -6
  270. package/src/public/avm/avm_gas.ts +3 -3
  271. package/src/public/avm/avm_machine_state.ts +1 -1
  272. package/src/public/avm/avm_memory_types.ts +5 -1
  273. package/src/public/avm/avm_simulator.ts +11 -9
  274. package/src/public/avm/errors.ts +17 -3
  275. package/src/public/avm/fixtures/avm_simulation_tester.ts +10 -2
  276. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +1 -1
  277. package/src/public/avm/fixtures/initializers.ts +8 -10
  278. package/src/public/avm/fixtures/utils.ts +3 -2
  279. package/src/public/avm/opcodes/accrued_substate.ts +15 -15
  280. package/src/public/avm/opcodes/addressing_mode.ts +2 -2
  281. package/src/public/avm/opcodes/arithmetic.ts +14 -2
  282. package/src/public/avm/opcodes/bitwise.ts +3 -3
  283. package/src/public/avm/opcodes/comparators.ts +1 -1
  284. package/src/public/avm/opcodes/contract.ts +4 -7
  285. package/src/public/avm/opcodes/control_flow.ts +2 -2
  286. package/src/public/avm/opcodes/conversion.ts +3 -3
  287. package/src/public/avm/opcodes/ec_add.ts +15 -6
  288. package/src/public/avm/opcodes/environment_getters.ts +7 -7
  289. package/src/public/avm/opcodes/external_calls.ts +10 -9
  290. package/src/public/avm/opcodes/hashing.ts +16 -10
  291. package/src/public/avm/opcodes/instruction_impl.ts +2 -2
  292. package/src/public/avm/opcodes/memory.ts +19 -19
  293. package/src/public/avm/opcodes/misc.ts +6 -6
  294. package/src/public/avm/opcodes/storage.ts +30 -22
  295. package/src/public/avm/revert_reason.ts +6 -3
  296. package/src/public/avm/serialization/bytecode_serialization.ts +17 -6
  297. package/src/public/avm/serialization/instruction_serialization.ts +1 -1
  298. package/src/public/avm/test_utils.ts +1 -1
  299. package/src/public/contracts_db_checkpoint.ts +41 -0
  300. package/src/public/db_interfaces.ts +16 -1
  301. package/src/public/debug_fn_name.ts +35 -3
  302. package/src/public/executor_metrics.ts +9 -35
  303. package/src/public/executor_metrics_interface.ts +2 -1
  304. package/src/public/fixtures/amm_test.ts +2 -2
  305. package/src/public/fixtures/bulk_test.ts +9 -9
  306. package/src/public/fixtures/custom_bytecode_tester.ts +54 -20
  307. package/src/public/fixtures/custom_bytecode_tests.ts +111 -18
  308. package/src/public/fixtures/index.ts +7 -1
  309. package/src/public/fixtures/minimal_public_tx.ts +7 -17
  310. package/src/public/fixtures/opcode_spammer.ts +1754 -0
  311. package/src/public/fixtures/public_tx_simulation_tester.ts +85 -21
  312. package/src/public/fixtures/simple_contract_data_source.ts +8 -9
  313. package/src/public/fixtures/token_test.ts +18 -10
  314. package/src/public/fixtures/utils.ts +2 -3
  315. package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
  316. package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
  317. package/src/public/hinting_db_sources.ts +112 -10
  318. package/src/public/index.ts +6 -4
  319. package/src/public/public_db_sources.ts +93 -172
  320. package/src/public/public_processor/guarded_merkle_tree.ts +8 -3
  321. package/src/public/public_processor/public_processor.ts +86 -59
  322. package/src/public/public_processor/public_processor_metrics.ts +11 -45
  323. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +121 -0
  324. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +137 -57
  325. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +132 -0
  326. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +237 -0
  327. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +81 -0
  328. package/src/public/public_tx_simulator/factories.ts +41 -0
  329. package/src/public/public_tx_simulator/index.ts +4 -0
  330. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +10 -14
  331. package/src/public/public_tx_simulator/public_tx_context.ts +9 -3
  332. package/src/public/public_tx_simulator/public_tx_simulator.ts +163 -193
  333. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +24 -2
  334. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +3 -3
  335. package/src/public/side_effect_trace.ts +1 -1
  336. package/src/public/side_effect_trace_interface.ts +1 -1
  337. package/src/public/state_manager/nullifiers.ts +1 -1
  338. package/src/public/state_manager/public_storage.ts +1 -1
  339. package/src/public/state_manager/state_manager.ts +16 -30
  340. package/src/public/test_executor_metrics.ts +7 -5
  341. package/dest/public/tx_contract_cache.d.ts +0 -41
  342. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  343. package/dest/public/tx_contract_cache.js +0 -49
  344. package/src/public/tx_contract_cache.ts +0 -69
@@ -0,0 +1,175 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { EthAddress } from '@aztec/foundation/eth-address';
3
+ import {
4
+ AvmCircuitPublicInputs,
5
+ type AvmTxHint,
6
+ PublicTxEffect,
7
+ deserializeFromMessagePack,
8
+ serializeWithMessagePack,
9
+ } from '@aztec/stdlib/avm';
10
+ import { GlobalVariables, ProtocolContracts, TreeSnapshots } from '@aztec/stdlib/tx';
11
+ import { NativeWorldStateService } from '@aztec/world-state';
12
+
13
+ import { createInterface } from 'readline';
14
+
15
+ import { AvmFuzzerSimulator, FuzzerSimulationRequest } from './avm_fuzzer_simulator.js';
16
+
17
+ /** Write data to stdout, letting Node handle buffering. */
18
+ function writeOutput(data: string): Promise<void> {
19
+ return new Promise<void>((resolve, reject) => {
20
+ process.stdout.write(data, err => {
21
+ if (err) {
22
+ reject(err);
23
+ } else {
24
+ resolve();
25
+ }
26
+ });
27
+ });
28
+ }
29
+
30
+ // This cache holds opened world states to avoid reopening them for each invocation.
31
+ // It's a map so that in the future we could support multiple world states (if we had multiple fuzzers).
32
+ const worldStateCache = new Map<string, NativeWorldStateService>();
33
+
34
+ async function openExistingWorldState(dataDir: string, mapSizeKb: number): Promise<NativeWorldStateService> {
35
+ const cached = worldStateCache.get(dataDir);
36
+ if (cached) {
37
+ return cached;
38
+ }
39
+
40
+ const ws = await NativeWorldStateService.new(EthAddress.ZERO, dataDir, {
41
+ archiveTreeMapSizeKb: mapSizeKb,
42
+ nullifierTreeMapSizeKb: mapSizeKb,
43
+ noteHashTreeMapSizeKb: mapSizeKb,
44
+ messageTreeMapSizeKb: mapSizeKb,
45
+ publicDataTreeMapSizeKb: mapSizeKb,
46
+ });
47
+
48
+ worldStateCache.set(dataDir, ws);
49
+ return ws;
50
+ }
51
+
52
+ async function simulateWithFuzzer(
53
+ dataDir: string,
54
+ mapSizeKb: number,
55
+ txHint: AvmTxHint,
56
+ globals: GlobalVariables,
57
+ rawContractClasses: any[], // Replace these when we are moving contract classes to TS
58
+ rawContractInstances: [any, any][], // Replace these when we are moving contract instances to TS
59
+ rawPublicDataWrites: any[], // Public data tree writes to apply before simulation
60
+ rawNoteHashes: any[], // Note hashes to apply before simulation
61
+ protocolContracts: ProtocolContracts, // Protocol contracts mapping from C++
62
+ ): Promise<{
63
+ reverted: boolean;
64
+ output: Fr[];
65
+ revertReason?: string;
66
+ publicInputs: AvmCircuitPublicInputs;
67
+ publicTxEffect: PublicTxEffect;
68
+ }> {
69
+ const worldStateService = await openExistingWorldState(dataDir, mapSizeKb);
70
+
71
+ const simulator = await AvmFuzzerSimulator.create(worldStateService, globals, protocolContracts);
72
+
73
+ await simulator.applyNoteHashes(rawNoteHashes);
74
+
75
+ // Register contract classes from C++ (must happen before public data writes to match C++ order)
76
+ for (const rawClass of rawContractClasses) {
77
+ await simulator.addContractClassFromCpp(rawClass);
78
+ }
79
+
80
+ // Register contract instances from C++
81
+ for (const [rawAddress, rawInstance] of rawContractInstances) {
82
+ await simulator.addContractInstanceFromCpp(rawAddress, rawInstance);
83
+ }
84
+
85
+ // Apply public data writes after contract registration (e.g., for bytecode upgrades)
86
+ // This must happen last to match C++ setup_fuzzer_state ordering
87
+ await simulator.applyPublicDataWrites(rawPublicDataWrites);
88
+
89
+ const result = await simulator.simulate(txHint);
90
+
91
+ const output = result
92
+ .getAppLogicReturnValues()
93
+ .flatMap((rv: { values?: Fr[] } | undefined) => rv?.values?.filter((v: Fr | null | undefined) => v != null) ?? []);
94
+
95
+ return {
96
+ reverted: !result.revertCode.isOK(),
97
+ output,
98
+ revertReason: result.findRevertReason()?.message,
99
+ publicInputs: result.publicInputs!,
100
+ publicTxEffect: result.publicTxEffect,
101
+ };
102
+ }
103
+
104
+ async function execute(base64Line: string): Promise<void> {
105
+ try {
106
+ // Decode base64 and deserialize the entire request from msgpack
107
+ const buffer = Buffer.from(base64Line.trim(), 'base64');
108
+ const rawRequest = deserializeFromMessagePack(buffer);
109
+ const request = FuzzerSimulationRequest.fromPlainObject(rawRequest);
110
+
111
+ // Run the TS simulation
112
+ const result = await simulateWithFuzzer(
113
+ request.wsDataDir,
114
+ request.wsMapSizeKb,
115
+ request.tx,
116
+ request.globals,
117
+ request.contractClasses,
118
+ request.contractInstances,
119
+ request.publicDataWrites,
120
+ request.noteHashes,
121
+ request.protocolContracts,
122
+ );
123
+
124
+ // Serialize the result to msgpack and encode it in base64 for output
125
+ const resultBuffer = serializeWithMessagePack({
126
+ reverted: result.reverted,
127
+ output: result.output,
128
+ revertReason: result.revertReason ?? '',
129
+ endTreeSnapshots: result.publicInputs.endTreeSnapshots,
130
+ publicTxEffect: result.publicTxEffect,
131
+ });
132
+ const base64Response = resultBuffer.toString('base64') + '\n';
133
+ await writeOutput(base64Response);
134
+ } catch (error: any) {
135
+ // If we error, treat as reverted
136
+ const errorResult = serializeWithMessagePack({
137
+ reverted: true,
138
+ output: [] as Fr[],
139
+ revertReason: `Unexpected Error ${error.message}`,
140
+ endTreeSnapshots: TreeSnapshots.empty(),
141
+ publicTxEffect: PublicTxEffect.empty(),
142
+ });
143
+ await writeOutput(errorResult.toString('base64') + '\n');
144
+ }
145
+ }
146
+
147
+ function mainLoop() {
148
+ const rl = createInterface({ input: process.stdin, terminal: false });
149
+
150
+ // Process lines sequentially to avoid race conditions in responses
151
+ const lineQueue: string[] = [];
152
+ let processing = false;
153
+
154
+ async function processQueue() {
155
+ if (processing || lineQueue.length === 0) {
156
+ return;
157
+ }
158
+ processing = true;
159
+ while (lineQueue.length > 0) {
160
+ const line = lineQueue.shift()!;
161
+ await execute(line);
162
+ }
163
+ processing = false;
164
+ }
165
+
166
+ rl.on('line', (line: string) => {
167
+ if (line.trim()) {
168
+ lineQueue.push(line);
169
+ void processQueue();
170
+ }
171
+ });
172
+ rl.on('close', () => process.exit(0));
173
+ }
174
+
175
+ void mainLoop();
@@ -1,5 +1,6 @@
1
- import { sha256Trunc } from '@aztec/foundation/crypto';
2
- import { Fr } from '@aztec/foundation/fields';
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import { sha256Trunc } from '@aztec/foundation/crypto/sha256';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
4
  import { type Logger, createLogger } from '@aztec/foundation/log';
4
5
  import type { IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
5
6
  import type { FunctionSelector } from '@aztec/stdlib/abi';
@@ -8,8 +9,12 @@ import {
8
9
  AvmBytecodeCommitmentHint,
9
10
  AvmCommitCheckpointHint,
10
11
  AvmContractClassHint,
12
+ AvmContractDbCommitCheckpointHint,
13
+ AvmContractDbCreateCheckpointHint,
14
+ AvmContractDbRevertCheckpointHint,
11
15
  AvmContractInstanceHint,
12
16
  AvmCreateCheckpointHint,
17
+ AvmDebugFunctionNameHint,
13
18
  type AvmExecutionHints,
14
19
  AvmGetLeafPreimageHintNullifierTree,
15
20
  AvmGetLeafPreimageHintPublicDataTree,
@@ -50,8 +55,11 @@ import type { PublicContractsDBInterface } from './db_interfaces.js';
50
55
  * A public contracts database that forwards requests and collects AVM hints.
51
56
  */
52
57
  export class HintingPublicContractsDB implements PublicContractsDBInterface {
53
- // We deduplicate contract classes because they include the whole bytecode.
54
- private contractClassIds: Set<bigint> = new Set();
58
+ private static readonly log: Logger = createLogger('simulator:hinting-public-contracts-db');
59
+
60
+ private checkpointActionCounter: number = 0;
61
+ private nextCheckpointId: number = 1;
62
+ private checkpointStack: number[] = [0];
55
63
 
56
64
  constructor(
57
65
  private readonly db: PublicContractsDBInterface,
@@ -64,9 +72,11 @@ export class HintingPublicContractsDB implements PublicContractsDBInterface {
64
72
  ): Promise<ContractInstanceWithAddress | undefined> {
65
73
  const instance = await this.db.getContractInstance(address, timestamp);
66
74
  if (instance) {
67
- // We don't need to hint the block number because it doesn't change.
75
+ const hintKey = this.getHintKey();
76
+
68
77
  this.hints.contractInstances.push(
69
78
  new AvmContractInstanceHint(
79
+ hintKey,
70
80
  instance.address,
71
81
  instance.salt,
72
82
  instance.deployer,
@@ -76,22 +86,31 @@ export class HintingPublicContractsDB implements PublicContractsDBInterface {
76
86
  instance.publicKeys,
77
87
  ),
78
88
  );
89
+
90
+ HintingPublicContractsDB.log.trace(
91
+ `[getContractInstance:${hintKey}] Added contract instance ${instance.address.toString()} to hints.`,
92
+ );
79
93
  }
80
94
  return instance;
81
95
  }
82
96
 
83
97
  public async getContractClass(contractClassId: Fr): Promise<ContractClassPublic | undefined> {
84
98
  const contractClass = await this.db.getContractClass(contractClassId);
85
- if (contractClass && !this.contractClassIds.has(contractClassId.toBigInt())) {
86
- this.contractClassIds.add(contractClassId.toBigInt());
99
+ if (contractClass) {
100
+ const hintKey = this.getHintKey();
87
101
  this.hints.contractClasses.push(
88
102
  new AvmContractClassHint(
103
+ hintKey,
89
104
  contractClass.id,
90
105
  contractClass.artifactHash,
91
106
  contractClass.privateFunctionsRoot,
92
107
  contractClass.packedBytecode,
93
108
  ),
94
109
  );
110
+
111
+ HintingPublicContractsDB.log.trace(
112
+ `[getContractClass:${hintKey}] Added contract class ${contractClassId.toString()} to hints.`,
113
+ );
95
114
  }
96
115
  return contractClass;
97
116
  }
@@ -99,7 +118,12 @@ export class HintingPublicContractsDB implements PublicContractsDBInterface {
99
118
  public async getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined> {
100
119
  const commitment = await this.db.getBytecodeCommitment(contractClassId);
101
120
  if (commitment) {
102
- this.hints.bytecodeCommitments.push(new AvmBytecodeCommitmentHint(contractClassId, commitment));
121
+ const hintKey = this.getHintKey();
122
+ this.hints.bytecodeCommitments.push(new AvmBytecodeCommitmentHint(hintKey, contractClassId, commitment));
123
+
124
+ HintingPublicContractsDB.log.trace(
125
+ `[getBytecodeCommitment:${hintKey}] Added bytecode commitment ${commitment.toString()} to hints for contract class ${contractClassId.toString()}.`,
126
+ );
103
127
  }
104
128
  return commitment;
105
129
  }
@@ -108,7 +132,81 @@ export class HintingPublicContractsDB implements PublicContractsDBInterface {
108
132
  contractAddress: AztecAddress,
109
133
  selector: FunctionSelector,
110
134
  ): Promise<string | undefined> {
111
- return await this.db.getDebugFunctionName(contractAddress, selector);
135
+ const name = await this.db.getDebugFunctionName(contractAddress, selector);
136
+ if (name) {
137
+ HintingPublicContractsDB.log.debug(
138
+ `[getDebugFunctionName] Adding debug function name ${name} to hints for contract ${contractAddress.toString()} and selector ${selector.toString()}.`,
139
+ );
140
+ // We hint selector as a field to make things way simpler in C++.
141
+ this.hints.debugFunctionNames.push(new AvmDebugFunctionNameHint(contractAddress, selector.toField(), name));
142
+ }
143
+ return name;
144
+ }
145
+
146
+ public createCheckpoint(): void {
147
+ const hintKey = this.getHintKey();
148
+ this.checkpointActionCounter++;
149
+ const oldCheckpointId = this.getCurrentCheckpointId();
150
+
151
+ this.db.createCheckpoint();
152
+
153
+ const newCheckpointId = this.nextCheckpointId++;
154
+ this.checkpointStack.push(newCheckpointId);
155
+
156
+ this.hints.contractDbCreateCheckpointHints.push(
157
+ new AvmContractDbCreateCheckpointHint(hintKey, oldCheckpointId, newCheckpointId),
158
+ );
159
+
160
+ HintingPublicContractsDB.log.trace(
161
+ `[createCheckpoint:${hintKey}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId}.`,
162
+ );
163
+ }
164
+
165
+ public commitCheckpoint(): void {
166
+ const hintKey = this.getHintKey();
167
+ this.checkpointActionCounter++;
168
+ const oldCheckpointId = this.getCurrentCheckpointId();
169
+
170
+ this.db.commitCheckpoint();
171
+
172
+ this.checkpointStack.pop();
173
+ const newCheckpointId = this.getCurrentCheckpointId();
174
+
175
+ this.hints.contractDbCommitCheckpointHints.push(
176
+ new AvmContractDbCommitCheckpointHint(hintKey, oldCheckpointId, newCheckpointId),
177
+ );
178
+
179
+ HintingPublicContractsDB.log.trace(
180
+ `[commitCheckpoint:${hintKey}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId}.`,
181
+ );
182
+ }
183
+
184
+ public revertCheckpoint(): void {
185
+ const hintKey = this.getHintKey();
186
+ this.checkpointActionCounter++;
187
+ const oldCheckpointId = this.getCurrentCheckpointId();
188
+
189
+ this.db.revertCheckpoint();
190
+
191
+ this.checkpointStack.pop();
192
+ const newCheckpointId = this.getCurrentCheckpointId();
193
+
194
+ this.hints.contractDbRevertCheckpointHints.push(
195
+ new AvmContractDbRevertCheckpointHint(hintKey, oldCheckpointId, newCheckpointId),
196
+ );
197
+
198
+ HintingPublicContractsDB.log.trace(
199
+ `[revertCheckpoint:${hintKey}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId}.`,
200
+ );
201
+ }
202
+
203
+ // Private methods.
204
+ private getHintKey(): number {
205
+ return this.checkpointActionCounter;
206
+ }
207
+
208
+ private getCurrentCheckpointId(): number {
209
+ return this.checkpointStack[this.checkpointStack.length - 1];
112
210
  }
113
211
  }
114
212
 
@@ -474,6 +572,10 @@ export class HintingMerkleWriteOperations implements MerkleTreeWriteOperations {
474
572
  return await this.db.close();
475
573
  }
476
574
 
575
+ async [Symbol.dispose](): Promise<void> {
576
+ await this.close();
577
+ }
578
+
477
579
  public async findLeafIndices<ID extends MerkleTreeId>(
478
580
  treeId: ID,
479
581
  values: MerkleTreeLeafType<ID>[],
@@ -499,7 +601,7 @@ export class HintingMerkleWriteOperations implements MerkleTreeWriteOperations {
499
601
  public async getBlockNumbersForLeafIndices<ID extends MerkleTreeId>(
500
602
  treeId: ID,
501
603
  leafIndices: bigint[],
502
- ): Promise<(bigint | undefined)[]> {
604
+ ): Promise<(BlockNumber | undefined)[]> {
503
605
  return await this.db.getBlockNumbersForLeafIndices(treeId, leafIndices);
504
606
  }
505
607
  }
@@ -2,9 +2,11 @@ export { PublicContractsDB } from './public_db_sources.js';
2
2
  export { GuardedMerkleTreeOperations } from './public_processor/guarded_merkle_tree.js';
3
3
  export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
4
4
  export {
5
- PublicTxSimulator,
6
- type PublicTxSimulatorConfig,
7
- TelemetryPublicTxSimulator,
8
- type PublicTxResult,
5
+ CppPublicTxSimulator,
6
+ createPublicTxSimulatorForBlockBuilding,
7
+ DumpingCppPublicTxSimulator,
8
+ type PublicTxSimulatorInterface,
9
+ TelemetryCppPublicTxSimulator,
9
10
  } from './public_tx_simulator/index.js';
11
+ export type { PublicTxResult, PublicSimulatorConfig as PublicTxSimulatorConfig } from '@aztec/stdlib/avm';
10
12
  export { getCallRequestsWithCalldataByPhase } from './utils.js';