@aztec/simulator 0.0.0-test.1 → 0.0.1-fake-ceab37513c

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 (436) hide show
  1. package/README.md +6 -0
  2. package/dest/client.d.ts +5 -3
  3. package/dest/client.d.ts.map +1 -1
  4. package/dest/client.js +4 -2
  5. package/dest/common/errors.d.ts +4 -7
  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 +0 -1
  9. package/dest/common/index.d.ts.map +1 -1
  10. package/dest/common/index.js +0 -1
  11. package/dest/private/acvm/acvm.d.ts +11 -5
  12. package/dest/private/acvm/acvm.d.ts.map +1 -1
  13. package/dest/private/acvm/acvm.js +10 -16
  14. package/dest/private/acvm/acvm_types.d.ts +1 -1
  15. package/dest/private/acvm/acvm_types.d.ts.map +1 -1
  16. package/dest/private/acvm/deserialize.d.ts +17 -18
  17. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  18. package/dest/private/acvm/deserialize.js +31 -23
  19. package/dest/private/acvm/index.d.ts +0 -1
  20. package/dest/private/acvm/index.d.ts.map +1 -1
  21. package/dest/private/acvm/index.js +0 -1
  22. package/dest/private/acvm/serialize.d.ts +19 -2
  23. package/dest/private/acvm/serialize.d.ts.map +1 -1
  24. package/dest/private/acvm/serialize.js +53 -0
  25. package/dest/private/{providers/acvm_native.d.ts → acvm_native.d.ts} +10 -10
  26. package/dest/private/acvm_native.d.ts.map +1 -0
  27. package/dest/private/{providers/acvm_native.js → acvm_native.js} +11 -7
  28. package/dest/private/acvm_wasm.d.ts +15 -0
  29. package/dest/private/acvm_wasm.d.ts.map +1 -0
  30. package/dest/private/{providers/acvm_wasm.js → acvm_wasm.js} +22 -19
  31. package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
  32. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
  33. package/dest/private/acvm_wasm_with_blobs.js +35 -0
  34. package/dest/private/circuit_recording/circuit_recorder.d.ts +108 -0
  35. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
  36. package/dest/private/circuit_recording/circuit_recorder.js +209 -0
  37. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +31 -0
  38. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
  39. package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
  40. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +5 -0
  41. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
  42. package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
  43. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
  44. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
  45. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
  46. package/dest/private/circuit_simulator.d.ts +35 -0
  47. package/dest/private/circuit_simulator.d.ts.map +1 -0
  48. package/dest/private/circuit_simulator.js +43 -0
  49. package/dest/private/factory.d.ts +12 -0
  50. package/dest/private/factory.d.ts.map +1 -0
  51. package/dest/private/{providers/factory.js → factory.js} +2 -2
  52. package/dest/public/avm/avm_context.d.ts +5 -5
  53. package/dest/public/avm/avm_context.d.ts.map +1 -1
  54. package/dest/public/avm/avm_contract_call_result.d.ts +4 -2
  55. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  56. package/dest/public/avm/avm_contract_call_result.js +11 -7
  57. package/dest/public/avm/avm_execution_environment.d.ts +2 -1
  58. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  59. package/dest/public/avm/avm_execution_environment.js +4 -2
  60. package/dest/public/avm/avm_gas.d.ts +4 -20
  61. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  62. package/dest/public/avm/avm_gas.js +27 -35
  63. package/dest/public/avm/avm_machine_state.d.ts +2 -0
  64. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  65. package/dest/public/avm/avm_machine_state.js +2 -0
  66. package/dest/public/avm/avm_memory_types.d.ts +98 -87
  67. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  68. package/dest/public/avm/avm_memory_types.js +17 -6
  69. package/dest/public/avm/avm_simulator.d.ts +4 -5
  70. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  71. package/dest/public/avm/avm_simulator.js +13 -18
  72. package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
  73. package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
  74. package/dest/public/avm/avm_simulator_interface.js +3 -0
  75. package/dest/public/avm/errors.d.ts +1 -16
  76. package/dest/public/avm/errors.d.ts.map +1 -1
  77. package/dest/public/avm/errors.js +0 -37
  78. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +3 -3
  79. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  80. package/dest/public/avm/fixtures/avm_simulation_tester.js +10 -11
  81. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +4 -4
  82. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  83. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +16 -15
  84. package/dest/public/avm/fixtures/initializers.d.ts +43 -0
  85. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
  86. package/dest/public/avm/fixtures/initializers.js +42 -0
  87. package/dest/public/avm/fixtures/utils.d.ts +38 -0
  88. package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
  89. package/dest/public/avm/fixtures/utils.js +95 -0
  90. package/dest/public/avm/index.d.ts +0 -2
  91. package/dest/public/avm/index.d.ts.map +1 -1
  92. package/dest/public/avm/index.js +0 -2
  93. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  94. package/dest/public/avm/opcodes/accrued_substate.js +22 -19
  95. package/dest/public/avm/opcodes/addressing_mode.d.ts +11 -7
  96. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  97. package/dest/public/avm/opcodes/addressing_mode.js +48 -27
  98. package/dest/public/avm/opcodes/arithmetic.d.ts +11 -1
  99. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  100. package/dest/public/avm/opcodes/arithmetic.js +16 -2
  101. package/dest/public/avm/opcodes/bitwise.d.ts +5 -13
  102. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  103. package/dest/public/avm/opcodes/bitwise.js +19 -26
  104. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  105. package/dest/public/avm/opcodes/comparators.js +3 -3
  106. package/dest/public/avm/opcodes/contract.d.ts +1 -2
  107. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  108. package/dest/public/avm/opcodes/contract.js +9 -10
  109. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  110. package/dest/public/avm/opcodes/control_flow.js +10 -8
  111. package/dest/public/avm/opcodes/conversion.d.ts +1 -0
  112. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  113. package/dest/public/avm/opcodes/conversion.js +264 -3
  114. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  115. package/dest/public/avm/opcodes/ec_add.js +2 -2
  116. package/dest/public/avm/opcodes/environment_getters.d.ts +2 -2
  117. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  118. package/dest/public/avm/opcodes/environment_getters.js +12 -12
  119. package/dest/public/avm/opcodes/external_calls.d.ts +8 -7
  120. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  121. package/dest/public/avm/opcodes/external_calls.js +39 -33
  122. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  123. package/dest/public/avm/opcodes/hashing.js +6 -6
  124. package/dest/public/avm/opcodes/instruction.d.ts +14 -10
  125. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  126. package/dest/public/avm/opcodes/instruction.js +18 -13
  127. package/dest/public/avm/opcodes/memory.d.ts +4 -4
  128. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  129. package/dest/public/avm/opcodes/memory.js +37 -33
  130. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  131. package/dest/public/avm/opcodes/misc.js +17 -12
  132. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  133. package/dest/public/avm/opcodes/storage.js +7 -5
  134. package/dest/public/avm/revert_reason.d.ts +18 -0
  135. package/dest/public/avm/revert_reason.d.ts.map +1 -0
  136. package/dest/public/avm/revert_reason.js +38 -0
  137. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -2
  138. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  139. package/dest/public/avm/serialization/bytecode_serialization.d.ts +2 -6
  140. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  141. package/dest/public/avm/serialization/bytecode_serialization.js +70 -69
  142. package/dest/public/avm/serialization/instruction_serialization.d.ts +5 -4
  143. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  144. package/dest/public/avm/serialization/instruction_serialization.js +60 -35
  145. package/dest/public/avm/test_utils.d.ts +10 -13
  146. package/dest/public/avm/test_utils.d.ts.map +1 -1
  147. package/dest/public/avm/test_utils.js +12 -17
  148. package/dest/public/db_interfaces.d.ts +56 -0
  149. package/dest/public/db_interfaces.d.ts.map +1 -0
  150. package/dest/public/db_interfaces.js +3 -0
  151. package/dest/public/debug_fn_name.d.ts +5 -0
  152. package/dest/public/debug_fn_name.d.ts.map +1 -0
  153. package/dest/public/debug_fn_name.js +9 -0
  154. package/dest/public/executor_metrics.d.ts +10 -3
  155. package/dest/public/executor_metrics.d.ts.map +1 -1
  156. package/dest/public/executor_metrics.js +37 -6
  157. package/dest/public/executor_metrics_interface.d.ts +9 -0
  158. package/dest/public/executor_metrics_interface.d.ts.map +1 -0
  159. package/dest/public/executor_metrics_interface.js +1 -0
  160. package/dest/public/fixtures/amm_test.d.ts +10 -0
  161. package/dest/public/fixtures/amm_test.d.ts.map +1 -0
  162. package/dest/public/fixtures/amm_test.js +213 -0
  163. package/dest/public/fixtures/bulk_test.d.ts +6 -0
  164. package/dest/public/fixtures/bulk_test.d.ts.map +1 -0
  165. package/dest/public/fixtures/bulk_test.js +393 -0
  166. package/dest/public/fixtures/index.d.ts +6 -0
  167. package/dest/public/fixtures/index.d.ts.map +1 -1
  168. package/dest/public/fixtures/index.js +6 -0
  169. package/dest/public/fixtures/minimal_public_tx.d.ts +9 -0
  170. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
  171. package/dest/public/fixtures/minimal_public_tx.js +43 -0
  172. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +33 -13
  173. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  174. package/dest/public/fixtures/public_tx_simulation_tester.js +90 -70
  175. package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.d.ts +6 -6
  176. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -0
  177. package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.js +31 -10
  178. package/dest/public/fixtures/token_test.d.ts +8 -0
  179. package/dest/public/fixtures/token_test.d.ts.map +1 -0
  180. package/dest/public/fixtures/token_test.js +95 -0
  181. package/dest/public/fixtures/utils.d.ts +16 -3
  182. package/dest/public/fixtures/utils.d.ts.map +1 -1
  183. package/dest/public/fixtures/utils.js +100 -58
  184. package/dest/public/hinting_db_sources.d.ts +68 -0
  185. package/dest/public/hinting_db_sources.d.ts.map +1 -0
  186. package/dest/public/hinting_db_sources.js +294 -0
  187. package/dest/public/index.d.ts +4 -8
  188. package/dest/public/index.d.ts.map +1 -1
  189. package/dest/public/index.js +4 -7
  190. package/dest/public/public_db_sources.d.ts +30 -39
  191. package/dest/public/public_db_sources.d.ts.map +1 -1
  192. package/dest/public/public_db_sources.js +141 -67
  193. package/dest/public/public_processor/guarded_merkle_tree.d.ts +47 -0
  194. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
  195. package/dest/public/public_processor/guarded_merkle_tree.js +105 -0
  196. package/dest/public/public_processor/public_processor.d.ts +19 -29
  197. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  198. package/dest/public/public_processor/public_processor.js +133 -94
  199. package/dest/public/public_processor/public_processor_metrics.d.ts +2 -2
  200. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  201. package/dest/public/public_processor/public_processor_metrics.js +1 -1
  202. package/dest/public/public_tx_simulator/index.d.ts +3 -0
  203. package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
  204. package/dest/public/public_tx_simulator/index.js +2 -0
  205. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +23 -0
  206. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
  207. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +52 -0
  208. package/dest/public/public_tx_simulator/public_tx_context.d.ts +17 -29
  209. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  210. package/dest/public/public_tx_simulator/public_tx_context.js +59 -91
  211. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +27 -42
  212. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  213. package/dest/public/public_tx_simulator/public_tx_simulator.js +128 -171
  214. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +20 -0
  215. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
  216. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +39 -0
  217. package/dest/public/side_effect_trace.d.ts +10 -62
  218. package/dest/public/side_effect_trace.d.ts.map +1 -1
  219. package/dest/public/side_effect_trace.js +43 -108
  220. package/dest/public/side_effect_trace_interface.d.ts +5 -22
  221. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  222. package/dest/public/state_manager/index.d.ts +2 -0
  223. package/dest/public/state_manager/index.d.ts.map +1 -0
  224. package/dest/public/state_manager/index.js +1 -0
  225. package/dest/public/{avm/journal → state_manager}/nullifiers.d.ts +2 -2
  226. package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
  227. package/dest/public/{avm/journal → state_manager}/nullifiers.js +2 -2
  228. package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +2 -2
  229. package/dest/public/state_manager/public_storage.d.ts.map +1 -0
  230. package/dest/public/{avm/journal/journal.d.ts → state_manager/state_manager.d.ts} +37 -85
  231. package/dest/public/state_manager/state_manager.d.ts.map +1 -0
  232. package/dest/public/state_manager/state_manager.js +352 -0
  233. package/dest/public/test_executor_metrics.d.ts +54 -0
  234. package/dest/public/test_executor_metrics.d.ts.map +1 -0
  235. package/dest/public/test_executor_metrics.js +306 -0
  236. package/dest/public/unique_class_ids.d.ts.map +1 -1
  237. package/dest/public/utils.d.ts +2 -4
  238. package/dest/public/utils.d.ts.map +1 -1
  239. package/dest/public/utils.js +4 -21
  240. package/dest/server.d.ts +6 -3
  241. package/dest/server.d.ts.map +1 -1
  242. package/dest/server.js +5 -2
  243. package/dest/testing.d.ts +2 -0
  244. package/dest/testing.d.ts.map +1 -0
  245. package/dest/testing.js +1 -0
  246. package/package.json +31 -30
  247. package/src/client.ts +5 -3
  248. package/src/common/errors.ts +79 -44
  249. package/src/common/index.ts +0 -1
  250. package/src/private/acvm/acvm.ts +17 -32
  251. package/src/private/acvm/acvm_types.ts +1 -1
  252. package/src/private/acvm/deserialize.ts +35 -29
  253. package/src/private/acvm/index.ts +0 -1
  254. package/src/private/acvm/serialize.ts +63 -0
  255. package/src/private/{providers/acvm_native.ts → acvm_native.ts} +31 -15
  256. package/src/private/acvm_wasm.ts +72 -0
  257. package/src/private/acvm_wasm_with_blobs.ts +54 -0
  258. package/src/private/circuit_recording/circuit_recorder.ts +260 -0
  259. package/src/private/circuit_recording/file_circuit_recorder.ts +158 -0
  260. package/src/private/circuit_recording/memory_circuit_recorder.ts +11 -0
  261. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
  262. package/src/private/circuit_simulator.ts +90 -0
  263. package/src/private/{providers/factory.ts → factory.ts} +6 -6
  264. package/src/public/avm/avm_context.ts +4 -4
  265. package/src/public/avm/avm_contract_call_result.ts +17 -5
  266. package/src/public/avm/avm_execution_environment.ts +7 -1
  267. package/src/public/avm/avm_gas.ts +23 -35
  268. package/src/public/avm/avm_machine_state.ts +5 -0
  269. package/src/public/avm/avm_memory_types.ts +19 -6
  270. package/src/public/avm/avm_simulator.ts +30 -29
  271. package/src/public/avm/avm_simulator_interface.ts +8 -0
  272. package/src/public/avm/errors.ts +1 -53
  273. package/src/public/avm/fixtures/avm_simulation_tester.ts +19 -18
  274. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +15 -14
  275. package/src/public/avm/fixtures/initializers.ts +103 -0
  276. package/src/public/avm/fixtures/utils.ts +150 -0
  277. package/src/public/avm/index.ts +0 -2
  278. package/src/public/avm/opcodes/accrued_substate.ts +62 -27
  279. package/src/public/avm/opcodes/addressing_mode.ts +57 -33
  280. package/src/public/avm/opcodes/arithmetic.ts +24 -2
  281. package/src/public/avm/opcodes/bitwise.ts +33 -29
  282. package/src/public/avm/opcodes/comparators.ts +6 -3
  283. package/src/public/avm/opcodes/contract.ts +10 -7
  284. package/src/public/avm/opcodes/control_flow.ts +19 -10
  285. package/src/public/avm/opcodes/conversion.ts +23 -3
  286. package/src/public/avm/opcodes/ec_add.ts +5 -2
  287. package/src/public/avm/opcodes/environment_getters.ts +22 -15
  288. package/src/public/avm/opcodes/external_calls.ts +61 -28
  289. package/src/public/avm/opcodes/hashing.ts +28 -8
  290. package/src/public/avm/opcodes/instruction.ts +23 -15
  291. package/src/public/avm/opcodes/memory.ts +71 -32
  292. package/src/public/avm/opcodes/misc.ts +24 -16
  293. package/src/public/avm/opcodes/storage.ts +22 -6
  294. package/src/public/avm/revert_reason.ts +55 -0
  295. package/src/public/avm/serialization/buffer_cursor.ts +4 -1
  296. package/src/public/avm/serialization/bytecode_serialization.ts +72 -74
  297. package/src/public/avm/serialization/instruction_serialization.ts +63 -34
  298. package/src/public/avm/test_utils.ts +23 -32
  299. package/src/public/db_interfaces.ts +61 -0
  300. package/src/{common → public}/debug_fn_name.ts +7 -7
  301. package/src/public/executor_metrics.ts +55 -6
  302. package/src/public/executor_metrics_interface.ts +14 -0
  303. package/src/public/fixtures/amm_test.ts +331 -0
  304. package/src/public/fixtures/bulk_test.ts +151 -0
  305. package/src/public/fixtures/index.ts +6 -0
  306. package/src/public/fixtures/minimal_public_tx.ts +59 -0
  307. package/src/public/fixtures/public_tx_simulation_tester.ts +154 -113
  308. package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +36 -18
  309. package/src/public/fixtures/token_test.ts +140 -0
  310. package/src/public/fixtures/utils.ts +141 -68
  311. package/src/public/hinting_db_sources.ts +500 -0
  312. package/src/public/index.ts +4 -8
  313. package/src/public/public_db_sources.ts +179 -96
  314. package/src/public/public_processor/guarded_merkle_tree.ts +149 -0
  315. package/src/public/public_processor/public_processor.ts +179 -139
  316. package/src/public/public_processor/public_processor_metrics.ts +2 -2
  317. package/src/public/public_tx_simulator/index.ts +2 -0
  318. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +106 -0
  319. package/src/public/public_tx_simulator/public_tx_context.ts +153 -193
  320. package/src/public/public_tx_simulator/public_tx_simulator.ts +167 -211
  321. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +72 -0
  322. package/src/public/side_effect_trace.ts +52 -303
  323. package/src/public/side_effect_trace_interface.ts +4 -58
  324. package/src/public/state_manager/index.ts +1 -0
  325. package/src/public/{avm/journal → state_manager}/nullifiers.ts +4 -4
  326. package/src/public/{avm/journal → state_manager}/public_storage.ts +2 -2
  327. package/src/public/state_manager/state_manager.ts +512 -0
  328. package/src/public/test_executor_metrics.ts +395 -0
  329. package/src/public/utils.ts +5 -21
  330. package/src/server.ts +6 -3
  331. package/src/testing.ts +1 -0
  332. package/dest/common/db_interfaces.d.ts +0 -80
  333. package/dest/common/db_interfaces.d.ts.map +0 -1
  334. package/dest/common/db_interfaces.js +0 -1
  335. package/dest/common/debug_fn_name.d.ts +0 -5
  336. package/dest/common/debug_fn_name.d.ts.map +0 -1
  337. package/dest/common/debug_fn_name.js +0 -6
  338. package/dest/common/message_load_oracle_inputs.d.ts +0 -15
  339. package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
  340. package/dest/common/message_load_oracle_inputs.js +0 -15
  341. package/dest/private/acvm/oracle/index.d.ts +0 -14
  342. package/dest/private/acvm/oracle/index.d.ts.map +0 -1
  343. package/dest/private/acvm/oracle/index.js +0 -2
  344. package/dest/private/acvm/oracle/oracle.d.ts +0 -49
  345. package/dest/private/acvm/oracle/oracle.d.ts.map +0 -1
  346. package/dest/private/acvm/oracle/oracle.js +0 -263
  347. package/dest/private/acvm/oracle/typed_oracle.d.ts +0 -83
  348. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +0 -1
  349. package/dest/private/acvm/oracle/typed_oracle.js +0 -132
  350. package/dest/private/execution_data_provider.d.ts +0 -261
  351. package/dest/private/execution_data_provider.d.ts.map +0 -1
  352. package/dest/private/execution_data_provider.js +0 -14
  353. package/dest/private/execution_note_cache.d.ts +0 -93
  354. package/dest/private/execution_note_cache.d.ts.map +0 -1
  355. package/dest/private/execution_note_cache.js +0 -180
  356. package/dest/private/hashed_values_cache.d.ts +0 -28
  357. package/dest/private/hashed_values_cache.d.ts.map +0 -1
  358. package/dest/private/hashed_values_cache.js +0 -46
  359. package/dest/private/index.d.ts +0 -13
  360. package/dest/private/index.d.ts.map +0 -1
  361. package/dest/private/index.js +0 -12
  362. package/dest/private/pick_notes.d.ts +0 -85
  363. package/dest/private/pick_notes.d.ts.map +0 -1
  364. package/dest/private/pick_notes.js +0 -51
  365. package/dest/private/private_execution.d.ts +0 -25
  366. package/dest/private/private_execution.d.ts.map +0 -1
  367. package/dest/private/private_execution.js +0 -92
  368. package/dest/private/private_execution_oracle.d.ts +0 -215
  369. package/dest/private/private_execution_oracle.d.ts.map +0 -1
  370. package/dest/private/private_execution_oracle.js +0 -382
  371. package/dest/private/providers/acvm_native.d.ts.map +0 -1
  372. package/dest/private/providers/acvm_wasm.d.ts +0 -15
  373. package/dest/private/providers/acvm_wasm.d.ts.map +0 -1
  374. package/dest/private/providers/acvm_wasm_with_blobs.d.ts +0 -19
  375. package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
  376. package/dest/private/providers/acvm_wasm_with_blobs.js +0 -32
  377. package/dest/private/providers/factory.d.ts +0 -12
  378. package/dest/private/providers/factory.d.ts.map +0 -1
  379. package/dest/private/providers/simulation_provider.d.ts +0 -19
  380. package/dest/private/providers/simulation_provider.d.ts.map +0 -1
  381. package/dest/private/providers/simulation_provider.js +0 -24
  382. package/dest/private/simulator.d.ts +0 -34
  383. package/dest/private/simulator.d.ts.map +0 -1
  384. package/dest/private/simulator.js +0 -76
  385. package/dest/private/unconstrained_execution.d.ts +0 -10
  386. package/dest/private/unconstrained_execution.d.ts.map +0 -1
  387. package/dest/private/unconstrained_execution.js +0 -27
  388. package/dest/private/unconstrained_execution_oracle.d.ts +0 -161
  389. package/dest/private/unconstrained_execution_oracle.d.ts.map +0 -1
  390. package/dest/private/unconstrained_execution_oracle.js +0 -258
  391. package/dest/public/avm/bytecode_utils.d.ts +0 -5
  392. package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
  393. package/dest/public/avm/bytecode_utils.js +0 -17
  394. package/dest/public/avm/fixtures/index.d.ts +0 -84
  395. package/dest/public/avm/fixtures/index.d.ts.map +0 -1
  396. package/dest/public/avm/fixtures/index.js +0 -175
  397. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
  398. package/dest/public/avm/journal/index.d.ts +0 -2
  399. package/dest/public/avm/journal/index.d.ts.map +0 -1
  400. package/dest/public/avm/journal/index.js +0 -1
  401. package/dest/public/avm/journal/journal.d.ts.map +0 -1
  402. package/dest/public/avm/journal/journal.js +0 -486
  403. package/dest/public/avm/journal/nullifiers.d.ts.map +0 -1
  404. package/dest/public/avm/journal/public_storage.d.ts.map +0 -1
  405. package/dest/public/execution.d.ts +0 -108
  406. package/dest/public/execution.d.ts.map +0 -1
  407. package/dest/public/execution.js +0 -9
  408. package/dest/test/utils.d.ts +0 -13
  409. package/dest/test/utils.d.ts.map +0 -1
  410. package/dest/test/utils.js +0 -22
  411. package/src/common/db_interfaces.ts +0 -94
  412. package/src/common/message_load_oracle_inputs.ts +0 -15
  413. package/src/private/acvm/oracle/index.ts +0 -16
  414. package/src/private/acvm/oracle/oracle.ts +0 -455
  415. package/src/private/acvm/oracle/typed_oracle.ts +0 -259
  416. package/src/private/execution_data_provider.ts +0 -323
  417. package/src/private/execution_note_cache.ts +0 -217
  418. package/src/private/hashed_values_cache.ts +0 -55
  419. package/src/private/index.ts +0 -16
  420. package/src/private/pick_notes.ts +0 -141
  421. package/src/private/private_execution.ts +0 -151
  422. package/src/private/private_execution_oracle.ts +0 -614
  423. package/src/private/providers/acvm_wasm.ts +0 -63
  424. package/src/private/providers/acvm_wasm_with_blobs.ts +0 -50
  425. package/src/private/providers/simulation_provider.ts +0 -45
  426. package/src/private/simulator.ts +0 -147
  427. package/src/private/unconstrained_execution.ts +0 -50
  428. package/src/private/unconstrained_execution_oracle.ts +0 -373
  429. package/src/public/avm/bytecode_utils.ts +0 -17
  430. package/src/public/avm/fixtures/index.ts +0 -296
  431. package/src/public/avm/journal/index.ts +0 -1
  432. package/src/public/avm/journal/journal.ts +0 -742
  433. package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
  434. package/src/public/execution.ts +0 -140
  435. package/src/test/utils.ts +0 -36
  436. /package/dest/public/{avm/journal → state_manager}/public_storage.js +0 -0
@@ -1,53 +1,23 @@
1
1
  import {
2
- L1_TO_L2_MSG_TREE_HEIGHT,
3
- MAX_ENQUEUED_CALLS_PER_TX,
4
2
  MAX_L2_TO_L1_MSGS_PER_TX,
5
3
  MAX_NOTE_HASHES_PER_TX,
6
4
  MAX_NULLIFIERS_PER_TX,
7
5
  MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS,
8
6
  MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
9
7
  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,
9
+ PUBLIC_LOG_SIZE_IN_FIELDS,
16
10
  } from '@aztec/constants';
17
11
  import { padArrayEnd } from '@aztec/foundation/collection';
18
12
  import { EthAddress } from '@aztec/foundation/eth-address';
19
13
  import { Fr } from '@aztec/foundation/fields';
20
14
  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';
15
+ import { PublicDataUpdateRequest } from '@aztec/stdlib/avm';
36
16
  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
17
  import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
40
- import {
41
- NoteHash,
42
- Nullifier,
43
- PrivateToAvmAccumulatedData,
44
- PrivateToAvmAccumulatedDataArrayLengths,
45
- PublicCallRequest,
46
- } from '@aztec/stdlib/kernel';
18
+ import { NoteHash, Nullifier } from '@aztec/stdlib/kernel';
47
19
  import { PublicLog } from '@aztec/stdlib/logs';
48
20
  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
21
 
52
22
  import { strict as assert } from 'assert';
53
23
 
@@ -55,24 +25,16 @@ import { SideEffectLimitReachedError } from './side_effect_errors.js';
55
25
  import type { PublicSideEffectTraceInterface } from './side_effect_trace_interface.js';
56
26
  import { UniqueClassIds } from './unique_class_ids.js';
57
27
 
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
28
  /**
64
29
  * A struct containing just the side effects as regular arrays
65
30
  * as opposed to "Tuple" arrays used by circuit public inputs.
66
31
  * This struct is helpful for testing and checking array lengths.
67
32
  **/
68
33
  export type SideEffects = {
69
- enqueuedCalls: PublicCallRequest[];
70
-
71
34
  publicDataWrites: PublicDataUpdateRequest[];
72
35
  noteHashes: NoteHash[];
73
36
  nullifiers: Nullifier[];
74
37
  l2ToL1Msgs: ScopedL2ToL1Message[];
75
-
76
38
  publicLogs: PublicLog[];
77
39
  };
78
40
 
@@ -100,8 +62,6 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
100
62
  /** The side effect counter increments with every call to the trace. */
101
63
  private sideEffectCounter: number;
102
64
 
103
- private enqueuedCalls: PublicCallRequest[] = [];
104
-
105
65
  private publicDataWrites: PublicDataUpdateRequest[] = [];
106
66
  private protocolPublicDataWritesLength: number = 0;
107
67
  private userPublicDataWritesLength: number = 0;
@@ -110,8 +70,6 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
110
70
  private l2ToL1Messages: ScopedL2ToL1Message[] = [];
111
71
  private publicLogs: PublicLog[] = [];
112
72
 
113
- private avmCircuitHints: AvmExecutionHints;
114
-
115
73
  /** Make sure a forked trace is never merged twice. */
116
74
  private alreadyMergedIntoParent = false;
117
75
 
@@ -124,9 +82,9 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
124
82
  private readonly previousSideEffectArrayLengths: SideEffectArrayLengths = SideEffectArrayLengths.empty(),
125
83
  /** We need to track the set of class IDs used, to enforce limits. */
126
84
  private uniqueClassIds: UniqueClassIds = new UniqueClassIds(),
85
+ private writtenPublicDataSlots: Set<string> = new Set(),
127
86
  ) {
128
87
  this.sideEffectCounter = startSideEffectCounter;
129
- this.avmCircuitHints = AvmExecutionHints.empty();
130
88
  }
131
89
 
132
90
  public fork() {
@@ -141,6 +99,7 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
141
99
  this.previousSideEffectArrayLengths.publicLogs + this.publicLogs.length,
142
100
  ),
143
101
  this.uniqueClassIds.fork(),
102
+ new Set(this.writtenPublicDataSlots),
144
103
  );
145
104
  }
146
105
 
@@ -153,7 +112,7 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
153
112
  forkedTrace.alreadyMergedIntoParent = true;
154
113
 
155
114
  this.sideEffectCounter = forkedTrace.sideEffectCounter;
156
- this.enqueuedCalls.push(...forkedTrace.enqueuedCalls);
115
+ this.uniqueClassIds.acceptAndMerge(forkedTrace.uniqueClassIds);
157
116
 
158
117
  if (!reverted) {
159
118
  this.publicDataWrites.push(...forkedTrace.publicDataWrites);
@@ -161,22 +120,12 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
161
120
  this.nullifiers.push(...forkedTrace.nullifiers);
162
121
  this.l2ToL1Messages.push(...forkedTrace.l2ToL1Messages);
163
122
  this.publicLogs.push(...forkedTrace.publicLogs);
123
+ this.userPublicDataWritesLength += forkedTrace.userPublicDataWritesLength;
124
+ this.protocolPublicDataWritesLength += forkedTrace.protocolPublicDataWritesLength;
125
+ for (const slot of forkedTrace.writtenPublicDataSlots) {
126
+ this.writtenPublicDataSlots.add(slot);
127
+ }
164
128
  }
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
129
  }
181
130
 
182
131
  public getCounter() {
@@ -191,148 +140,85 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
191
140
  return this.previousSideEffectArrayLengths.noteHashes + this.noteHashes.length;
192
141
  }
193
142
 
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
143
  public async tracePublicStorageWrite(
210
144
  contractAddress: AztecAddress,
211
145
  slot: Fr,
212
146
  value: Fr,
213
147
  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
148
  ): 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
- );
229
- }
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
- );
149
+ // Only increment counts if the storage slot has not been written to before.
150
+ if (this.isStorageCold(contractAddress, slot)) {
151
+ if (protocolWrite) {
152
+ if (
153
+ this.protocolPublicDataWritesLength + this.previousSideEffectArrayLengths.protocolPublicDataWrites >=
154
+ PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
155
+ ) {
156
+ throw new SideEffectLimitReachedError(
157
+ 'protocol public data (contract storage) write',
158
+ PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
159
+ );
160
+ }
161
+ this.protocolPublicDataWritesLength++;
162
+ } else {
163
+ if (
164
+ this.userPublicDataWritesLength + this.previousSideEffectArrayLengths.publicDataWrites >=
165
+ MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
166
+ ) {
167
+ throw new SideEffectLimitReachedError(
168
+ 'public data (contract storage) write',
169
+ MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
170
+ );
171
+ }
172
+ this.userPublicDataWritesLength++;
240
173
  }
241
- this.userPublicDataWritesLength++;
242
174
  }
243
175
 
244
176
  const leafSlot = await computePublicDataTreeLeafSlot(contractAddress, slot);
245
177
  this.publicDataWrites.push(new PublicDataUpdateRequest(leafSlot, value, this.sideEffectCounter));
246
178
 
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
179
  this.log.trace(
254
180
  `Traced public data write (address=${contractAddress}, slot=${slot}): value=${value} (counter=${this.sideEffectCounter}, isProtocol:${protocolWrite})`,
255
181
  );
256
182
  this.incrementSideEffectCounter();
183
+ this.writtenPublicDataSlots.add(this.computePublicDataSlotKey(contractAddress, slot));
257
184
  }
258
185
 
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})`);
186
+ private computePublicDataSlotKey(contractAddress: AztecAddress, slot: Fr): string {
187
+ return `${contractAddress.toString()}:${slot.toString()}`;
271
188
  }
272
189
 
273
- public traceNewNoteHash(noteHash: Fr, leafIndex: Fr = Fr.zero(), path: Fr[] = emptyNoteHashPath()) {
190
+ public isStorageCold(contractAddress: AztecAddress, slot: Fr): boolean {
191
+ return !this.writtenPublicDataSlots.has(this.computePublicDataSlotKey(contractAddress, slot));
192
+ }
193
+
194
+ public traceNewNoteHash(noteHash: Fr) {
274
195
  if (this.noteHashes.length + this.previousSideEffectArrayLengths.noteHashes >= MAX_NOTE_HASHES_PER_TX) {
275
196
  throw new SideEffectLimitReachedError('note hash', MAX_NOTE_HASHES_PER_TX);
276
197
  }
277
198
 
278
199
  this.noteHashes.push(new NoteHash(noteHash, this.sideEffectCounter));
279
- this.avmCircuitHints.noteHashWrites.push(new AvmAppendTreeHint(leafIndex, noteHash, path));
280
200
  this.log.trace(`Tracing new note hash (counter=${this.sideEffectCounter})`);
281
201
  this.incrementSideEffectCounter();
282
202
  }
283
203
 
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
- ) {
204
+ public traceNewNullifier(siloedNullifier: Fr) {
303
205
  if (this.nullifiers.length + this.previousSideEffectArrayLengths.nullifiers >= MAX_NULLIFIERS_PER_TX) {
304
206
  throw new SideEffectLimitReachedError('nullifier', MAX_NULLIFIERS_PER_TX);
305
207
  }
306
208
 
307
209
  this.nullifiers.push(new Nullifier(siloedNullifier, this.sideEffectCounter, /*noteHash=*/ Fr.ZERO));
308
210
 
309
- const lowLeafReadHint = new AvmNullifierReadTreeHint(lowLeafPreimage, lowLeafIndex, lowLeafPath);
310
- this.avmCircuitHints.nullifierWrites.push(new AvmNullifierWriteTreeHint(lowLeafReadHint, insertionPath));
311
211
  this.log.trace(`Tracing new nullifier (counter=${this.sideEffectCounter})`);
312
212
  this.incrementSideEffectCounter();
313
213
  }
314
214
 
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
215
  public traceNewL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr) {
328
216
  if (this.l2ToL1Messages.length + this.previousSideEffectArrayLengths.l2ToL1Msgs >= MAX_L2_TO_L1_MSGS_PER_TX) {
329
217
  throw new SideEffectLimitReachedError('l2 to l1 message', MAX_L2_TO_L1_MSGS_PER_TX);
330
218
  }
331
219
 
332
220
  const recipientAddress = EthAddress.fromField(recipient);
333
- this.l2ToL1Messages.push(
334
- new L2ToL1Message(recipientAddress, content, this.sideEffectCounter).scope(contractAddress),
335
- );
221
+ this.l2ToL1Messages.push(new L2ToL1Message(recipientAddress, content).scope(contractAddress));
336
222
  this.log.trace(`Tracing new l2 to l1 message (counter=${this.sideEffectCounter})`);
337
223
  this.incrementSideEffectCounter();
338
224
  }
@@ -342,46 +228,18 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
342
228
  throw new SideEffectLimitReachedError('public log', MAX_PUBLIC_LOGS_PER_TX);
343
229
  }
344
230
 
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}`);
231
+ if (log.length > PUBLIC_LOG_SIZE_IN_FIELDS) {
232
+ throw new Error(`Emitted public log is too large, max: ${PUBLIC_LOG_SIZE_IN_FIELDS}, passed: ${log.length}`);
347
233
  }
348
- const publicLog = new PublicLog(contractAddress, padArrayEnd(log, Fr.ZERO, PUBLIC_LOG_DATA_SIZE_IN_FIELDS));
234
+ const publicLog = new PublicLog(contractAddress, padArrayEnd(log, Fr.ZERO, PUBLIC_LOG_SIZE_IN_FIELDS), log.length);
349
235
  this.publicLogs.push(publicLog);
350
236
  this.log.trace(`Tracing new public log (counter=${this.sideEffectCounter})`);
351
237
  this.incrementSideEffectCounter();
352
238
  }
353
239
 
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();
377
- }
378
-
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())) {
240
+ public traceGetContractClass(contractClassId: Fr, exists: boolean) {
241
+ // We limit the number of unique contract class IDs due to hashing and the trace length limit.
242
+ if (exists && !this.uniqueClassIds.has(contractClassId.toString())) {
385
243
  if (this.uniqueClassIds.size() >= MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS) {
386
244
  this.log.debug(`Bytecode retrieval failure for contract class ID ${contractClassId} (limit reached)`);
387
245
  throw new SideEffectLimitReachedError(
@@ -389,43 +247,14 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
389
247
  MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS,
390
248
  );
391
249
  }
392
-
250
+ this.log.trace(`Adding contract class ID ${contractClassId} (counter=${this.sideEffectCounter})`);
393
251
  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
252
  this.incrementSideEffectCounter();
406
253
  }
407
254
  }
408
255
 
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
256
  public getSideEffects(): SideEffects {
427
257
  return {
428
- enqueuedCalls: this.enqueuedCalls,
429
258
  publicDataWrites: this.publicDataWrites,
430
259
  noteHashes: this.noteHashes,
431
260
  nullifiers: this.nullifiers,
@@ -433,84 +262,4 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
433
262
  publicLogs: this.publicLogs,
434
263
  };
435
264
  }
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
265
  }
@@ -1,76 +1,22 @@
1
1
  import type { Fr } from '@aztec/foundation/fields';
2
- import type { AvmPublicDataReadTreeHint } from '@aztec/stdlib/avm';
3
2
  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';
8
3
 
9
4
  export interface PublicSideEffectTraceInterface {
10
5
  fork(): PublicSideEffectTraceInterface;
11
6
  merge(nestedTrace: PublicSideEffectTraceInterface, reverted?: boolean): void;
12
7
  getCounter(): number;
13
8
  // 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
9
  tracePublicStorageWrite(
23
10
  contractAddress: AztecAddress,
24
11
  slot: Fr, // This is the storage slot not the computed leaf slot
25
12
  value: Fr,
26
13
  protocolWrite: boolean,
27
- lowLeafPreimage?: PublicDataTreeLeafPreimage,
28
- lowLeafIndex?: Fr,
29
- lowLeafPath?: Fr[],
30
- newLeafPreimage?: PublicDataTreeLeafPreimage,
31
- insertionPath?: Fr[],
32
14
  ): Promise<void>;
33
- traceNoteHashCheck(contractAddress: AztecAddress, noteHash: Fr, leafIndex: Fr, exists: boolean, path?: Fr[]): void;
34
- traceNewNoteHash(uniqueNoteHash: Fr, leafIndex?: Fr, path?: Fr[]): void;
15
+ isStorageCold(contractAddress: AztecAddress, slot: Fr): boolean;
16
+ traceNewNoteHash(uniqueNoteHash: Fr): void;
35
17
  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;
18
+ traceNewNullifier(siloedNullifier: Fr): void;
57
19
  traceNewL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr): void;
58
20
  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[];
21
+ traceGetContractClass(contractClassId: Fr, exists: boolean): void;
76
22
  }
@@ -0,0 +1 @@
1
+ export * from './state_manager.js';
@@ -1,6 +1,6 @@
1
1
  import type { Fr } from '@aztec/foundation/fields';
2
2
 
3
- import type { WorldStateDB } from '../../public_db_sources.js';
3
+ import type { PublicTreesDB } from '../public_db_sources.js';
4
4
 
5
5
  /**
6
6
  * A class to manage new nullifier staging and existence checks during a contract call's AVM simulation.
@@ -10,7 +10,7 @@ import type { WorldStateDB } from '../../public_db_sources.js';
10
10
  export class NullifierManager {
11
11
  constructor(
12
12
  /** Reference to node storage. Checked on parent cache-miss. */
13
- private readonly hostNullifiers: WorldStateDB,
13
+ private readonly hostNullifiers: PublicTreesDB,
14
14
  /** Cache of siloed nullifiers. */
15
15
  private cache: Set<bigint> = new Set(),
16
16
  /** Parent nullifier manager to fall back on */
@@ -64,8 +64,8 @@ export class NullifierManager {
64
64
  // `${MerkleTreeId[MerkleTreeId.NULLIFIER_TREE]} low leaf index should always be found (even if target leaf does not exist)`,
65
65
  //);
66
66
  //existsInTree = leafOrLowLeafIndex.alreadyPresent;
67
- const leafIndex = await this.hostNullifiers.getNullifierIndex(siloedNullifier);
68
- existsInTree = leafIndex !== undefined;
67
+ const exists = await this.hostNullifiers.checkNullifierExists(siloedNullifier);
68
+ existsInTree = exists;
69
69
  }
70
70
  const exists = cacheHit || existsInTree;
71
71
  return Promise.resolve({ exists, cacheHit });
@@ -1,7 +1,7 @@
1
1
  import { Fr } from '@aztec/foundation/fields';
2
2
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
3
 
4
- import type { PublicStateDB } from '../../../common/db_interfaces.js';
4
+ import type { PublicStateDBInterface } from '../db_interfaces.js';
5
5
 
6
6
  type PublicStorageReadResult = {
7
7
  value: Fr;
@@ -19,7 +19,7 @@ export class PublicStorage {
19
19
 
20
20
  constructor(
21
21
  /** Reference to node storage. Checked on parent cache-miss. */
22
- private readonly hostPublicStorage: PublicStateDB,
22
+ private readonly hostPublicStorage: PublicStateDBInterface,
23
23
  /** Parent's storage. Checked on this' cache-miss. */
24
24
  private readonly parent?: PublicStorage,
25
25
  ) {