@aztec/simulator 0.0.0-test.1 → 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,78 +1,44 @@
1
1
  import {
2
- L1_TO_L2_MSG_TREE_HEIGHT,
3
- MAX_ENQUEUED_CALLS_PER_TX,
2
+ FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH,
4
3
  MAX_L2_TO_L1_MSGS_PER_TX,
5
4
  MAX_NOTE_HASHES_PER_TX,
6
5
  MAX_NULLIFIERS_PER_TX,
7
6
  MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS,
8
7
  MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
9
- MAX_PUBLIC_LOGS_PER_TX,
10
- MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
11
- NOTE_HASH_TREE_HEIGHT,
12
- NULLIFIER_TREE_HEIGHT,
13
8
  PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
14
- PUBLIC_DATA_TREE_HEIGHT,
15
- PUBLIC_LOG_DATA_SIZE_IN_FIELDS,
16
9
  } from '@aztec/constants';
17
- import { padArrayEnd } from '@aztec/foundation/collection';
10
+ import { Fr } from '@aztec/foundation/curves/bn254';
18
11
  import { EthAddress } from '@aztec/foundation/eth-address';
19
- import { Fr } from '@aztec/foundation/fields';
20
- import { createLogger } from '@aztec/foundation/log';
21
- import {
22
- AvmAccumulatedData,
23
- AvmAppendTreeHint,
24
- AvmCircuitPublicInputs,
25
- AvmContractClassHint,
26
- AvmContractInstanceHint,
27
- AvmEnqueuedCallHint,
28
- AvmExecutionHints,
29
- AvmNullifierReadTreeHint,
30
- AvmNullifierWriteTreeHint,
31
- AvmPublicDataReadTreeHint,
32
- AvmPublicDataWriteTreeHint,
33
- PublicDataUpdateRequest,
34
- PublicDataWrite,
35
- } from '@aztec/stdlib/avm';
12
+ import { type LogLevel, type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
13
+ import { PublicDataUpdateRequest } from '@aztec/stdlib/avm';
36
14
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
37
- import { type ContractClassWithCommitment, SerializableContractInstance } from '@aztec/stdlib/contract';
38
- import type { Gas, GasSettings } from '@aztec/stdlib/gas';
39
15
  import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
40
- import {
41
- NoteHash,
42
- Nullifier,
43
- PrivateToAvmAccumulatedData,
44
- PrivateToAvmAccumulatedDataArrayLengths,
45
- PublicCallRequest,
46
- } from '@aztec/stdlib/kernel';
47
- import { PublicLog } from '@aztec/stdlib/logs';
16
+ import { NoteHash, Nullifier } from '@aztec/stdlib/kernel';
17
+ import { DebugLog, PublicLog } from '@aztec/stdlib/logs';
48
18
  import { L2ToL1Message, ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
49
- import { NullifierLeafPreimage, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
50
- import type { GlobalVariables, TreeSnapshots } from '@aztec/stdlib/tx';
51
19
 
52
20
  import { strict as assert } from 'assert';
53
21
 
54
- import { SideEffectLimitReachedError } from './side_effect_errors.js';
22
+ import {
23
+ L2ToL1MessageLimitReachedError,
24
+ MaxCallsToUniqueContractClassIdsError,
25
+ NoteHashLimitReachedError,
26
+ NullifierLimitReachedError,
27
+ SideEffectLimitReachedError,
28
+ } from './side_effect_errors.js';
55
29
  import type { PublicSideEffectTraceInterface } from './side_effect_trace_interface.js';
56
30
  import { UniqueClassIds } from './unique_class_ids.js';
57
31
 
58
- const emptyPublicDataPath = () => new Array(PUBLIC_DATA_TREE_HEIGHT).fill(Fr.zero());
59
- const emptyNoteHashPath = () => new Array(NOTE_HASH_TREE_HEIGHT).fill(Fr.zero());
60
- const emptyNullifierPath = () => new Array(NULLIFIER_TREE_HEIGHT).fill(Fr.zero());
61
- const emptyL1ToL2MessagePath = () => new Array(L1_TO_L2_MSG_TREE_HEIGHT).fill(Fr.zero());
62
-
63
32
  /**
64
33
  * A struct containing just the side effects as regular arrays
65
34
  * as opposed to "Tuple" arrays used by circuit public inputs.
66
35
  * This struct is helpful for testing and checking array lengths.
67
36
  **/
68
37
  export type SideEffects = {
69
- enqueuedCalls: PublicCallRequest[];
70
-
71
38
  publicDataWrites: PublicDataUpdateRequest[];
72
39
  noteHashes: NoteHash[];
73
40
  nullifiers: Nullifier[];
74
41
  l2ToL1Msgs: ScopedL2ToL1Message[];
75
-
76
42
  publicLogs: PublicLog[];
77
43
  };
78
44
 
@@ -83,7 +49,7 @@ export class SideEffectArrayLengths {
83
49
  public readonly noteHashes: number,
84
50
  public readonly nullifiers: number,
85
51
  public readonly l2ToL1Msgs: number,
86
- public readonly publicLogs: number,
52
+ public readonly publicLogFields: number,
87
53
  ) {}
88
54
 
89
55
  static empty() {
@@ -95,13 +61,11 @@ export class SideEffectArrayLengths {
95
61
  * Trace side effects for an enqueued public call's execution.
96
62
  */
97
63
  export class SideEffectTrace implements PublicSideEffectTraceInterface {
98
- public log = createLogger('simulator:side_effect_trace');
64
+ public log: Logger;
99
65
 
100
66
  /** The side effect counter increments with every call to the trace. */
101
67
  private sideEffectCounter: number;
102
68
 
103
- private enqueuedCalls: PublicCallRequest[] = [];
104
-
105
69
  private publicDataWrites: PublicDataUpdateRequest[] = [];
106
70
  private protocolPublicDataWritesLength: number = 0;
107
71
  private userPublicDataWritesLength: number = 0;
@@ -109,38 +73,44 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
109
73
  private nullifiers: Nullifier[] = [];
110
74
  private l2ToL1Messages: ScopedL2ToL1Message[] = [];
111
75
  private publicLogs: PublicLog[] = [];
112
-
113
- private avmCircuitHints: AvmExecutionHints;
114
-
115
76
  /** Make sure a forked trace is never merged twice. */
116
77
  private alreadyMergedIntoParent = false;
117
78
 
118
79
  constructor(
119
80
  /** The counter of this trace's first side effect. */
120
81
  public readonly startSideEffectCounter: number = 0,
82
+ bindings?: LoggerBindings,
121
83
  /** Track parent's (or previous kernel's) lengths so the AVM can properly enforce TX-wide limits,
122
84
  * otherwise the public kernel can fail to prove because TX limits are breached.
123
85
  */
124
86
  private readonly previousSideEffectArrayLengths: SideEffectArrayLengths = SideEffectArrayLengths.empty(),
125
87
  /** We need to track the set of class IDs used, to enforce limits. */
126
88
  private uniqueClassIds: UniqueClassIds = new UniqueClassIds(),
89
+ private writtenPublicDataSlots: Set<string> = new Set(),
90
+ private debugLogs: DebugLog[] = [],
91
+ private debugLogMemoryReads: number = 0,
127
92
  ) {
128
93
  this.sideEffectCounter = startSideEffectCounter;
129
- this.avmCircuitHints = AvmExecutionHints.empty();
94
+ this.log = createLogger('simulator:side_effect_trace', bindings);
130
95
  }
131
96
 
132
97
  public fork() {
133
98
  return new SideEffectTrace(
134
99
  this.sideEffectCounter,
100
+ this.log.getBindings(),
135
101
  new SideEffectArrayLengths(
136
102
  this.previousSideEffectArrayLengths.publicDataWrites + this.userPublicDataWritesLength,
137
103
  this.previousSideEffectArrayLengths.protocolPublicDataWrites + this.protocolPublicDataWritesLength,
138
104
  this.previousSideEffectArrayLengths.noteHashes + this.noteHashes.length,
139
105
  this.previousSideEffectArrayLengths.nullifiers + this.nullifiers.length,
140
106
  this.previousSideEffectArrayLengths.l2ToL1Msgs + this.l2ToL1Messages.length,
141
- this.previousSideEffectArrayLengths.publicLogs + this.publicLogs.length,
107
+ this.previousSideEffectArrayLengths.publicLogFields +
108
+ this.publicLogs.reduce((acc, log) => acc + log.sizeInFields(), 0),
142
109
  ),
143
110
  this.uniqueClassIds.fork(),
111
+ new Set(this.writtenPublicDataSlots),
112
+ this.debugLogs.slice(),
113
+ this.debugLogMemoryReads,
144
114
  );
145
115
  }
146
116
 
@@ -153,7 +123,9 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
153
123
  forkedTrace.alreadyMergedIntoParent = true;
154
124
 
155
125
  this.sideEffectCounter = forkedTrace.sideEffectCounter;
156
- this.enqueuedCalls.push(...forkedTrace.enqueuedCalls);
126
+ this.uniqueClassIds.acceptAndMerge(forkedTrace.uniqueClassIds);
127
+ this.debugLogs = forkedTrace.debugLogs;
128
+ this.debugLogMemoryReads = forkedTrace.debugLogMemoryReads;
157
129
 
158
130
  if (!reverted) {
159
131
  this.publicDataWrites.push(...forkedTrace.publicDataWrites);
@@ -161,22 +133,12 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
161
133
  this.nullifiers.push(...forkedTrace.nullifiers);
162
134
  this.l2ToL1Messages.push(...forkedTrace.l2ToL1Messages);
163
135
  this.publicLogs.push(...forkedTrace.publicLogs);
136
+ this.userPublicDataWritesLength += forkedTrace.userPublicDataWritesLength;
137
+ this.protocolPublicDataWritesLength += forkedTrace.protocolPublicDataWritesLength;
138
+ for (const slot of forkedTrace.writtenPublicDataSlots) {
139
+ this.writtenPublicDataSlots.add(slot);
140
+ }
164
141
  }
165
- this.mergeHints(forkedTrace);
166
- }
167
-
168
- private mergeHints(forkedTrace: this) {
169
- this.uniqueClassIds.acceptAndMerge(forkedTrace.uniqueClassIds);
170
- this.avmCircuitHints.enqueuedCalls.push(...forkedTrace.avmCircuitHints.enqueuedCalls);
171
- this.avmCircuitHints.contractInstances.push(...forkedTrace.avmCircuitHints.contractInstances);
172
- this.avmCircuitHints.contractClasses.push(...forkedTrace.avmCircuitHints.contractClasses);
173
- this.avmCircuitHints.publicDataReads.push(...forkedTrace.avmCircuitHints.publicDataReads);
174
- this.avmCircuitHints.publicDataWrites.push(...forkedTrace.avmCircuitHints.publicDataWrites);
175
- this.avmCircuitHints.nullifierReads.push(...forkedTrace.avmCircuitHints.nullifierReads);
176
- this.avmCircuitHints.nullifierWrites.push(...forkedTrace.avmCircuitHints.nullifierWrites);
177
- this.avmCircuitHints.noteHashReads.push(...forkedTrace.avmCircuitHints.noteHashReads);
178
- this.avmCircuitHints.noteHashWrites.push(...forkedTrace.avmCircuitHints.noteHashWrites);
179
- this.avmCircuitHints.l1ToL2MessageReads.push(...forkedTrace.avmCircuitHints.l1ToL2MessageReads);
180
142
  }
181
143
 
182
144
  public getCounter() {
@@ -191,241 +153,136 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
191
153
  return this.previousSideEffectArrayLengths.noteHashes + this.noteHashes.length;
192
154
  }
193
155
 
194
- public tracePublicStorageRead(
195
- contractAddress: AztecAddress,
196
- slot: Fr,
197
- value: Fr,
198
- leafPreimage: PublicDataTreeLeafPreimage = PublicDataTreeLeafPreimage.empty(),
199
- leafIndex: Fr = Fr.zero(),
200
- path: Fr[] = emptyPublicDataPath(),
201
- ) {
202
- this.avmCircuitHints.publicDataReads.push(new AvmPublicDataReadTreeHint(leafPreimage, leafIndex, path));
203
- this.log.trace(
204
- `Tracing storage read (address=${contractAddress}, slot=${slot}): value=${value} (counter=${this.sideEffectCounter})`,
205
- );
206
- this.incrementSideEffectCounter();
207
- }
208
-
209
156
  public async tracePublicStorageWrite(
210
157
  contractAddress: AztecAddress,
211
158
  slot: Fr,
212
159
  value: Fr,
213
160
  protocolWrite: boolean,
214
- lowLeafPreimage: PublicDataTreeLeafPreimage = PublicDataTreeLeafPreimage.empty(),
215
- lowLeafIndex: Fr = Fr.zero(),
216
- lowLeafPath: Fr[] = emptyPublicDataPath(),
217
- newLeafPreimage: PublicDataTreeLeafPreimage = PublicDataTreeLeafPreimage.empty(),
218
- insertionPath: Fr[] = emptyPublicDataPath(),
219
161
  ): Promise<void> {
220
- if (protocolWrite) {
221
- if (
222
- this.protocolPublicDataWritesLength + this.previousSideEffectArrayLengths.protocolPublicDataWrites >=
223
- PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
224
- ) {
225
- throw new SideEffectLimitReachedError(
226
- 'protocol public data (contract storage) write',
227
- PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
228
- );
162
+ // Only increment counts if the storage slot has not been written to before.
163
+ if (this.isStorageCold(contractAddress, slot)) {
164
+ if (protocolWrite) {
165
+ if (
166
+ this.protocolPublicDataWritesLength + this.previousSideEffectArrayLengths.protocolPublicDataWrites >=
167
+ PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
168
+ ) {
169
+ throw new SideEffectLimitReachedError(
170
+ 'protocol public data (contract storage) write',
171
+ PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
172
+ );
173
+ }
174
+ this.protocolPublicDataWritesLength++;
175
+ } else {
176
+ if (
177
+ this.userPublicDataWritesLength + this.previousSideEffectArrayLengths.publicDataWrites >=
178
+ MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
179
+ ) {
180
+ throw new SideEffectLimitReachedError(
181
+ 'public data (contract storage) write',
182
+ MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
183
+ );
184
+ }
185
+ this.userPublicDataWritesLength++;
229
186
  }
230
- this.protocolPublicDataWritesLength++;
231
- } else {
232
- if (
233
- this.userPublicDataWritesLength + this.previousSideEffectArrayLengths.publicDataWrites >=
234
- MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
235
- ) {
236
- throw new SideEffectLimitReachedError(
237
- 'public data (contract storage) write',
238
- MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
239
- );
240
- }
241
- this.userPublicDataWritesLength++;
242
187
  }
243
188
 
244
189
  const leafSlot = await computePublicDataTreeLeafSlot(contractAddress, slot);
245
190
  this.publicDataWrites.push(new PublicDataUpdateRequest(leafSlot, value, this.sideEffectCounter));
246
191
 
247
- // New hinting
248
- const readHint = new AvmPublicDataReadTreeHint(lowLeafPreimage, lowLeafIndex, lowLeafPath);
249
- this.avmCircuitHints.publicDataWrites.push(
250
- new AvmPublicDataWriteTreeHint(readHint, newLeafPreimage, insertionPath),
251
- );
252
-
253
192
  this.log.trace(
254
193
  `Traced public data write (address=${contractAddress}, slot=${slot}): value=${value} (counter=${this.sideEffectCounter}, isProtocol:${protocolWrite})`,
255
194
  );
256
195
  this.incrementSideEffectCounter();
196
+ this.writtenPublicDataSlots.add(this.computePublicDataSlotKey(contractAddress, slot));
257
197
  }
258
198
 
259
- // TODO(8287): _exists can be removed once we have the vm properly handling the equality check
260
- public traceNoteHashCheck(
261
- _contractAddress: AztecAddress,
262
- noteHash: Fr,
263
- leafIndex: Fr,
264
- _exists: boolean,
265
- path: Fr[] = emptyNoteHashPath(),
266
- ) {
267
- // New Hinting
268
- this.avmCircuitHints.noteHashReads.push(new AvmAppendTreeHint(leafIndex, noteHash, path));
269
- // NOTE: counter does not increment for note hash checks (because it doesn't rely on pending note hashes)
270
- this.log.trace(`Tracing note hash check (counter=${this.sideEffectCounter})`);
199
+ private computePublicDataSlotKey(contractAddress: AztecAddress, slot: Fr): string {
200
+ return `${contractAddress.toString()}:${slot.toString()}`;
271
201
  }
272
202
 
273
- public traceNewNoteHash(noteHash: Fr, leafIndex: Fr = Fr.zero(), path: Fr[] = emptyNoteHashPath()) {
203
+ public isStorageCold(contractAddress: AztecAddress, slot: Fr): boolean {
204
+ return !this.writtenPublicDataSlots.has(this.computePublicDataSlotKey(contractAddress, slot));
205
+ }
206
+
207
+ public traceNewNoteHash(noteHash: Fr) {
274
208
  if (this.noteHashes.length + this.previousSideEffectArrayLengths.noteHashes >= MAX_NOTE_HASHES_PER_TX) {
275
- throw new SideEffectLimitReachedError('note hash', MAX_NOTE_HASHES_PER_TX);
209
+ throw new NoteHashLimitReachedError();
276
210
  }
277
211
 
278
212
  this.noteHashes.push(new NoteHash(noteHash, this.sideEffectCounter));
279
- this.avmCircuitHints.noteHashWrites.push(new AvmAppendTreeHint(leafIndex, noteHash, path));
280
213
  this.log.trace(`Tracing new note hash (counter=${this.sideEffectCounter})`);
281
214
  this.incrementSideEffectCounter();
282
215
  }
283
216
 
284
- public traceNullifierCheck(
285
- _siloedNullifier: Fr,
286
- _exists: boolean,
287
- lowLeafPreimage: NullifierLeafPreimage = NullifierLeafPreimage.empty(),
288
- lowLeafIndex: Fr = Fr.zero(),
289
- lowLeafPath: Fr[] = emptyNullifierPath(),
290
- ) {
291
- this.avmCircuitHints.nullifierReads.push(new AvmNullifierReadTreeHint(lowLeafPreimage, lowLeafIndex, lowLeafPath));
292
- this.log.trace(`Tracing nullifier check (counter=${this.sideEffectCounter})`);
293
- this.incrementSideEffectCounter();
294
- }
295
-
296
- public traceNewNullifier(
297
- siloedNullifier: Fr,
298
- lowLeafPreimage: NullifierLeafPreimage = NullifierLeafPreimage.empty(),
299
- lowLeafIndex: Fr = Fr.zero(),
300
- lowLeafPath: Fr[] = emptyNullifierPath(),
301
- insertionPath: Fr[] = emptyNullifierPath(),
302
- ) {
217
+ public traceNewNullifier(siloedNullifier: Fr) {
303
218
  if (this.nullifiers.length + this.previousSideEffectArrayLengths.nullifiers >= MAX_NULLIFIERS_PER_TX) {
304
- throw new SideEffectLimitReachedError('nullifier', MAX_NULLIFIERS_PER_TX);
219
+ throw new NullifierLimitReachedError();
305
220
  }
306
221
 
307
- this.nullifiers.push(new Nullifier(siloedNullifier, this.sideEffectCounter, /*noteHash=*/ Fr.ZERO));
222
+ this.nullifiers.push(new Nullifier(siloedNullifier, /*noteHash=*/ Fr.ZERO, this.sideEffectCounter));
308
223
 
309
- const lowLeafReadHint = new AvmNullifierReadTreeHint(lowLeafPreimage, lowLeafIndex, lowLeafPath);
310
- this.avmCircuitHints.nullifierWrites.push(new AvmNullifierWriteTreeHint(lowLeafReadHint, insertionPath));
311
224
  this.log.trace(`Tracing new nullifier (counter=${this.sideEffectCounter})`);
312
225
  this.incrementSideEffectCounter();
313
226
  }
314
227
 
315
- // TODO(8287): _exists can be removed once we have the vm properly handling the equality check
316
- public traceL1ToL2MessageCheck(
317
- _contractAddress: AztecAddress,
318
- msgHash: Fr,
319
- msgLeafIndex: Fr,
320
- _exists: boolean,
321
- path: Fr[] = emptyL1ToL2MessagePath(),
322
- ) {
323
- this.avmCircuitHints.l1ToL2MessageReads.push(new AvmAppendTreeHint(msgLeafIndex, msgHash, path));
324
- this.log.trace(`Tracing l1 to l2 message check (counter=${this.sideEffectCounter})`);
325
- }
326
-
327
228
  public traceNewL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr) {
328
229
  if (this.l2ToL1Messages.length + this.previousSideEffectArrayLengths.l2ToL1Msgs >= MAX_L2_TO_L1_MSGS_PER_TX) {
329
- throw new SideEffectLimitReachedError('l2 to l1 message', MAX_L2_TO_L1_MSGS_PER_TX);
230
+ throw new L2ToL1MessageLimitReachedError();
330
231
  }
331
232
 
332
233
  const recipientAddress = EthAddress.fromField(recipient);
333
- this.l2ToL1Messages.push(
334
- new L2ToL1Message(recipientAddress, content, this.sideEffectCounter).scope(contractAddress),
335
- );
234
+ this.l2ToL1Messages.push(new L2ToL1Message(recipientAddress, content).scope(contractAddress));
336
235
  this.log.trace(`Tracing new l2 to l1 message (counter=${this.sideEffectCounter})`);
337
236
  this.incrementSideEffectCounter();
338
237
  }
339
238
 
340
239
  public tracePublicLog(contractAddress: AztecAddress, log: Fr[]) {
341
- if (this.publicLogs.length + this.previousSideEffectArrayLengths.publicLogs >= MAX_PUBLIC_LOGS_PER_TX) {
342
- throw new SideEffectLimitReachedError('public log', MAX_PUBLIC_LOGS_PER_TX);
343
- }
240
+ const previouslyEmittedPublicLogFieldsCount =
241
+ this.previousSideEffectArrayLengths.publicLogFields +
242
+ this.publicLogs.reduce((acc, log) => acc + log.sizeInFields(), 0);
344
243
 
345
- if (log.length > PUBLIC_LOG_DATA_SIZE_IN_FIELDS) {
346
- throw new Error(`Emitted public log is too large, max: ${PUBLIC_LOG_DATA_SIZE_IN_FIELDS}, passed: ${log.length}`);
244
+ const publicLog = new PublicLog(contractAddress, log);
245
+
246
+ if (previouslyEmittedPublicLogFieldsCount + publicLog.sizeInFields() > FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH) {
247
+ throw new SideEffectLimitReachedError('public log fields', FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH);
347
248
  }
348
- const publicLog = new PublicLog(contractAddress, padArrayEnd(log, Fr.ZERO, PUBLIC_LOG_DATA_SIZE_IN_FIELDS));
249
+
349
250
  this.publicLogs.push(publicLog);
350
251
  this.log.trace(`Tracing new public log (counter=${this.sideEffectCounter})`);
351
252
  this.incrementSideEffectCounter();
352
253
  }
353
254
 
354
- public traceGetContractInstance(
355
- contractAddress: AztecAddress,
356
- exists: boolean,
357
- instance: SerializableContractInstance = SerializableContractInstance.default(),
358
- updateMembershipHint: AvmPublicDataReadTreeHint = AvmPublicDataReadTreeHint.empty(),
359
- updatePreimage: Fr[] = [],
360
- ) {
361
- this.avmCircuitHints.contractInstances.push(
362
- new AvmContractInstanceHint(
363
- contractAddress,
364
- exists,
365
- instance.salt,
366
- instance.deployer,
367
- instance.currentContractClassId,
368
- instance.originalContractClassId,
369
- instance.initializationHash,
370
- instance.publicKeys,
371
- updateMembershipHint,
372
- updatePreimage,
373
- ),
374
- );
375
- this.log.trace(`Tracing contract instance retrieval (counter=${this.sideEffectCounter})`);
376
- this.incrementSideEffectCounter();
255
+ public traceDebugLog(contractAddress: AztecAddress, level: LogLevel, message: string, fields: Fr[]) {
256
+ this.debugLogs.push(new DebugLog(contractAddress, level, message, fields));
257
+ }
258
+
259
+ public getDebugLogs() {
260
+ return this.debugLogs;
261
+ }
262
+
263
+ public getDebugLogMemoryReads() {
264
+ return this.debugLogMemoryReads;
377
265
  }
378
266
 
379
- public traceGetContractClass(contractClassId: Fr, exists: boolean, contractClass?: ContractClassWithCommitment) {
380
- if (!exists) {
381
- this.avmCircuitHints.contractClasses.push(
382
- new AvmContractClassHint(contractClassId, exists, Fr.zero(), Fr.zero(), Fr.zero(), Buffer.alloc(0)),
383
- );
384
- } else if (!this.uniqueClassIds.has(contractClassId.toString())) {
267
+ public traceDebugLogMemoryReads(memoryReads: number) {
268
+ this.debugLogMemoryReads += memoryReads;
269
+ }
270
+
271
+ public traceGetContractClass(contractClassId: Fr, exists: boolean) {
272
+ // We limit the number of unique contract class IDs due to hashing and the trace length limit.
273
+ if (exists && !this.uniqueClassIds.has(contractClassId.toString())) {
385
274
  if (this.uniqueClassIds.size() >= MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS) {
386
275
  this.log.debug(`Bytecode retrieval failure for contract class ID ${contractClassId} (limit reached)`);
387
- throw new SideEffectLimitReachedError(
388
- 'contract calls to unique class IDs',
389
- MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS,
390
- );
276
+ throw new MaxCallsToUniqueContractClassIdsError();
391
277
  }
392
-
278
+ this.log.trace(`Adding contract class ID ${contractClassId} (counter=${this.sideEffectCounter})`);
393
279
  this.uniqueClassIds.add(contractClassId.toString());
394
- this.avmCircuitHints.contractClasses.push(
395
- new AvmContractClassHint(
396
- contractClassId,
397
- exists,
398
- contractClass!.artifactHash,
399
- contractClass!.privateFunctionsRoot,
400
- contractClass!.publicBytecodeCommitment,
401
- contractClass!.packedBytecode,
402
- ),
403
- );
404
-
405
280
  this.incrementSideEffectCounter();
406
281
  }
407
282
  }
408
283
 
409
- /**
410
- * Trace an enqueued call.
411
- * Accept some results from a finished call's trace into this one.
412
- */
413
- public traceEnqueuedCall(
414
- /** The call request from private that enqueued this call. */
415
- publicCallRequest: PublicCallRequest,
416
- /** The call's calldata */
417
- calldata: Fr[],
418
- /** Did the call revert? */
419
- _reverted: boolean,
420
- ) {
421
- // TODO(4805): check if some threshold is reached for max enqueued or nested calls (to unique contracts?)
422
- this.enqueuedCalls.push(publicCallRequest);
423
- this.avmCircuitHints.enqueuedCalls.push(new AvmEnqueuedCallHint(publicCallRequest.contractAddress, calldata));
424
- }
425
-
426
284
  public getSideEffects(): SideEffects {
427
285
  return {
428
- enqueuedCalls: this.enqueuedCalls,
429
286
  publicDataWrites: this.publicDataWrites,
430
287
  noteHashes: this.noteHashes,
431
288
  nullifiers: this.nullifiers,
@@ -433,84 +290,4 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
433
290
  publicLogs: this.publicLogs,
434
291
  };
435
292
  }
436
-
437
- public toAvmCircuitPublicInputs(
438
- /** Globals. */
439
- globalVariables: GlobalVariables,
440
- /** Start tree snapshots. */
441
- startTreeSnapshots: TreeSnapshots,
442
- /** Gas used at start of TX. */
443
- startGasUsed: Gas,
444
- /** How much gas was available for this public execution. */
445
- gasLimits: GasSettings,
446
- /** Address of the fee payer. */
447
- feePayer: AztecAddress,
448
- /** Call requests for setup phase. */
449
- publicSetupCallRequests: PublicCallRequest[],
450
- /** Call requests for app logic phase. */
451
- publicAppLogicCallRequests: PublicCallRequest[],
452
- /** Call request for teardown phase. */
453
- publicTeardownCallRequest: PublicCallRequest,
454
- /** End tree snapshots. */
455
- endTreeSnapshots: TreeSnapshots,
456
- /**
457
- * Gas used by the whole transaction, assuming entire teardown limit is used.
458
- * This is the gas used when computing transaction fee.
459
- */
460
- endGasUsed: Gas,
461
- /** Transaction fee. */
462
- transactionFee: Fr,
463
- /** The call's results */
464
- reverted: boolean,
465
- ): AvmCircuitPublicInputs {
466
- return new AvmCircuitPublicInputs(
467
- globalVariables,
468
- startTreeSnapshots,
469
- startGasUsed,
470
- gasLimits,
471
- feePayer,
472
- padArrayEnd(publicSetupCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
473
- padArrayEnd(publicAppLogicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
474
- publicTeardownCallRequest,
475
- /*previousNonRevertibleAccumulatedDataArrayLengths=*/ PrivateToAvmAccumulatedDataArrayLengths.empty(),
476
- /*previousRevertibleAccumulatedDataArrayLengths=*/ PrivateToAvmAccumulatedDataArrayLengths.empty(),
477
- /*previousNonRevertibleAccumulatedDataArray=*/ PrivateToAvmAccumulatedData.empty(),
478
- /*previousRevertibleAccumulatedDataArray=*/ PrivateToAvmAccumulatedData.empty(),
479
- endTreeSnapshots,
480
- endGasUsed,
481
- /*accumulatedData=*/ this.getAvmAccumulatedData(),
482
- transactionFee,
483
- reverted,
484
- );
485
- }
486
-
487
- public getPublicLogs() {
488
- return this.publicLogs;
489
- }
490
-
491
- public getAvmCircuitHints() {
492
- return this.avmCircuitHints;
493
- }
494
-
495
- private getAvmAccumulatedData() {
496
- return new AvmAccumulatedData(
497
- padArrayEnd(
498
- this.noteHashes.map(n => n.value),
499
- Fr.zero(),
500
- MAX_NOTE_HASHES_PER_TX,
501
- ),
502
- padArrayEnd(
503
- this.nullifiers.map(n => n.value),
504
- Fr.zero(),
505
- MAX_NULLIFIERS_PER_TX,
506
- ),
507
- padArrayEnd(this.l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
508
- padArrayEnd(this.publicLogs, PublicLog.empty(), MAX_PUBLIC_LOGS_PER_TX),
509
- padArrayEnd(
510
- this.publicDataWrites.map(w => new PublicDataWrite(w.leafSlot, w.newValue)),
511
- PublicDataWrite.empty(),
512
- MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
513
- ),
514
- );
515
- }
516
293
  }
@@ -1,76 +1,28 @@
1
- import type { Fr } from '@aztec/foundation/fields';
2
- import type { AvmPublicDataReadTreeHint } from '@aztec/stdlib/avm';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { LogLevel } from '@aztec/foundation/log';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- import type { ContractClassWithCommitment, SerializableContractInstance } from '@aztec/stdlib/contract';
5
- import type { PublicCallRequest } from '@aztec/stdlib/kernel';
6
- import type { PublicLog } from '@aztec/stdlib/logs';
7
- import type { NullifierLeafPreimage, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
4
+ import type { DebugLog } from '@aztec/stdlib/logs';
8
5
 
9
6
  export interface PublicSideEffectTraceInterface {
10
7
  fork(): PublicSideEffectTraceInterface;
11
8
  merge(nestedTrace: PublicSideEffectTraceInterface, reverted?: boolean): void;
12
9
  getCounter(): number;
13
10
  // all "trace*" functions can throw SideEffectLimitReachedError
14
- tracePublicStorageRead(
15
- contractAddress: AztecAddress,
16
- slot: Fr,
17
- value: Fr,
18
- leafPreimage?: PublicDataTreeLeafPreimage,
19
- leafIndex?: Fr,
20
- path?: Fr[],
21
- ): void;
22
11
  tracePublicStorageWrite(
23
12
  contractAddress: AztecAddress,
24
13
  slot: Fr, // This is the storage slot not the computed leaf slot
25
14
  value: Fr,
26
15
  protocolWrite: boolean,
27
- lowLeafPreimage?: PublicDataTreeLeafPreimage,
28
- lowLeafIndex?: Fr,
29
- lowLeafPath?: Fr[],
30
- newLeafPreimage?: PublicDataTreeLeafPreimage,
31
- insertionPath?: Fr[],
32
16
  ): Promise<void>;
33
- traceNoteHashCheck(contractAddress: AztecAddress, noteHash: Fr, leafIndex: Fr, exists: boolean, path?: Fr[]): void;
34
- traceNewNoteHash(uniqueNoteHash: Fr, leafIndex?: Fr, path?: Fr[]): void;
17
+ isStorageCold(contractAddress: AztecAddress, slot: Fr): boolean;
18
+ traceNewNoteHash(uniqueNoteHash: Fr): void;
35
19
  getNoteHashCount(): number;
36
- traceNullifierCheck(
37
- siloedNullifier: Fr,
38
- exists: boolean,
39
- lowLeafPreimage?: NullifierLeafPreimage,
40
- lowLeafIndex?: Fr,
41
- lowLeafPath?: Fr[],
42
- ): void;
43
- traceNewNullifier(
44
- siloedNullifier: Fr,
45
- lowLeafPreimage?: NullifierLeafPreimage,
46
- lowLeafIndex?: Fr,
47
- lowLeafPath?: Fr[],
48
- insertionPath?: Fr[],
49
- ): void;
50
- traceL1ToL2MessageCheck(
51
- contractAddress: AztecAddress,
52
- msgHash: Fr,
53
- msgLeafIndex: Fr,
54
- exists: boolean,
55
- path?: Fr[],
56
- ): void;
20
+ traceNewNullifier(siloedNullifier: Fr): void;
57
21
  traceNewL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr): void;
58
22
  tracePublicLog(contractAddress: AztecAddress, log: Fr[]): void;
59
- traceGetContractInstance(
60
- contractAddress: AztecAddress,
61
- exists: boolean,
62
- instance?: SerializableContractInstance,
63
- updateMembershipHint?: AvmPublicDataReadTreeHint,
64
- updatePreimage?: Fr[],
65
- ): void;
66
- traceGetContractClass(contractClassId: Fr, exists: boolean, contractClass?: ContractClassWithCommitment): void;
67
- traceEnqueuedCall(
68
- /** The call request from private that enqueued this call. */
69
- publicCallRequest: PublicCallRequest,
70
- /** The call's calldata */
71
- calldata: Fr[],
72
- /** Did the call revert? */
73
- reverted: boolean,
74
- ): void;
75
- getPublicLogs(): PublicLog[];
23
+ traceDebugLog(contractAddress: AztecAddress, level: LogLevel, message: string, fields: Fr[]): void;
24
+ getDebugLogs(): DebugLog[];
25
+ getDebugLogMemoryReads(): number;
26
+ traceDebugLogMemoryReads(memoryReads: number): void;
27
+ traceGetContractClass(contractClassId: Fr, exists: boolean): void;
76
28
  }