@aztec-labs/pxe 6.0.0-nightly.20260829

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 (603) hide show
  1. package/README.md +13 -0
  2. package/dest/bin/check_oracle_version.d.ts +2 -0
  3. package/dest/bin/check_oracle_version.d.ts.map +1 -0
  4. package/dest/bin/check_oracle_version.js +22 -0
  5. package/dest/bin/index.d.ts +2 -0
  6. package/dest/bin/index.d.ts.map +1 -0
  7. package/dest/bin/index.js +1 -0
  8. package/dest/bin/oracle_version_helpers.d.ts +20 -0
  9. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  10. package/dest/bin/oracle_version_helpers.js +25 -0
  11. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  12. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  13. package/dest/block_synchronizer/block_stream_source.js +37 -0
  14. package/dest/block_synchronizer/block_synchronizer.d.ts +47 -0
  15. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  16. package/dest/block_synchronizer/block_synchronizer.js +192 -0
  17. package/dest/block_synchronizer/index.d.ts +2 -0
  18. package/dest/block_synchronizer/index.d.ts.map +1 -0
  19. package/dest/block_synchronizer/index.js +1 -0
  20. package/dest/config/index.d.ts +57 -0
  21. package/dest/config/index.d.ts.map +1 -0
  22. package/dest/config/index.js +80 -0
  23. package/dest/config/package_info.d.ts +5 -0
  24. package/dest/config/package_info.d.ts.map +1 -0
  25. package/dest/config/package_info.js +6 -0
  26. package/dest/contract/contract_call_graph.d.ts +51 -0
  27. package/dest/contract/contract_call_graph.d.ts.map +1 -0
  28. package/dest/contract/contract_call_graph.js +91 -0
  29. package/dest/contract/contract_class_service.d.ts +24 -0
  30. package/dest/contract/contract_class_service.d.ts.map +1 -0
  31. package/dest/contract/contract_class_service.js +36 -0
  32. package/dest/contract/contract_sync_service.d.ts +82 -0
  33. package/dest/contract/contract_sync_service.d.ts.map +1 -0
  34. package/dest/contract/contract_sync_service.js +210 -0
  35. package/dest/contract/helpers.d.ts +7 -0
  36. package/dest/contract/helpers.d.ts.map +1 -0
  37. package/dest/contract/helpers.js +20 -0
  38. package/dest/contract/skip_sync_contracts.d.ts +11 -0
  39. package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
  40. package/dest/contract/skip_sync_contracts.js +18 -0
  41. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  42. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  43. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  44. package/dest/contract_function_simulator/contract_function_simulator.d.ts +114 -0
  45. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -0
  46. package/dest/contract_function_simulator/contract_function_simulator.js +495 -0
  47. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  48. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  49. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  50. package/dest/contract_function_simulator/execution_note_cache.d.ts +98 -0
  51. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -0
  52. package/dest/contract_function_simulator/execution_note_cache.js +189 -0
  53. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +12 -0
  54. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
  55. package/dest/contract_function_simulator/execution_tagging_index_cache.js +30 -0
  56. package/dest/contract_function_simulator/hashed_values_cache.d.ts +28 -0
  57. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -0
  58. package/dest/contract_function_simulator/hashed_values_cache.js +36 -0
  59. package/dest/contract_function_simulator/index.d.ts +36 -0
  60. package/dest/contract_function_simulator/index.d.ts.map +1 -0
  61. package/dest/contract_function_simulator/index.js +20 -0
  62. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  63. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  64. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  65. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  66. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  67. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  68. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  69. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  70. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  71. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  72. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  73. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  74. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +20 -0
  75. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -0
  76. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +39 -0
  77. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  78. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  79. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  80. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  81. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  82. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  83. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +25 -0
  84. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -0
  85. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +14 -0
  86. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +19 -0
  87. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -0
  88. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +4 -0
  89. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  90. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  91. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  92. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +22 -0
  93. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -0
  94. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +47 -0
  95. package/dest/contract_function_simulator/noir-structs/nullifier_membership_witness_data.d.ts +12 -0
  96. package/dest/contract_function_simulator/noir-structs/nullifier_membership_witness_data.d.ts.map +1 -0
  97. package/dest/contract_function_simulator/noir-structs/nullifier_membership_witness_data.js +6 -0
  98. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  99. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  100. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  101. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  102. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  103. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  104. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  105. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  106. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  107. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  108. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  109. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  110. package/dest/contract_function_simulator/noir-structs/public_data_witness_data.d.ts +13 -0
  111. package/dest/contract_function_simulator/noir-structs/public_data_witness_data.d.ts.map +1 -0
  112. package/dest/contract_function_simulator/noir-structs/public_data_witness_data.js +3 -0
  113. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  114. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  115. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  116. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
  117. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  118. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
  119. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
  120. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  121. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  122. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +11 -0
  123. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
  124. package/dest/contract_function_simulator/noir-structs/utility_context.js +3 -0
  125. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  126. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  127. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  128. package/dest/contract_function_simulator/oracle/index.d.ts +3 -0
  129. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -0
  130. package/dest/contract_function_simulator/oracle/index.js +2 -0
  131. package/dest/contract_function_simulator/oracle/interfaces.d.ts +24 -0
  132. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
  133. package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
  134. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  135. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  136. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  137. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +28 -0
  138. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -0
  139. package/dest/contract_function_simulator/oracle/note_packing_utils.js +54 -0
  140. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +139 -0
  141. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  142. package/dest/contract_function_simulator/oracle/oracle_registry.js +1024 -0
  143. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +292 -0
  144. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  145. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1258 -0
  146. package/dest/contract_function_simulator/oracle/private_execution.d.ts +23 -0
  147. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -0
  148. package/dest/contract_function_simulator/oracle/private_execution.js +88 -0
  149. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +226 -0
  150. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -0
  151. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +585 -0
  152. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +333 -0
  153. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -0
  154. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +900 -0
  155. package/dest/contract_function_simulator/pick_notes.d.ts +85 -0
  156. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -0
  157. package/dest/contract_function_simulator/pick_notes.js +68 -0
  158. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  159. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  160. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  161. package/dest/contract_logging.d.ts +27 -0
  162. package/dest/contract_logging.d.ts.map +1 -0
  163. package/dest/contract_logging.js +38 -0
  164. package/dest/debug/pxe_debug_utils.d.ts +38 -0
  165. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  166. package/dest/debug/pxe_debug_utils.js +44 -0
  167. package/dest/entrypoints/client/bundle/index.d.ts +10 -0
  168. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -0
  169. package/dest/entrypoints/client/bundle/index.js +8 -0
  170. package/dest/entrypoints/client/bundle/utils.d.ts +16 -0
  171. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -0
  172. package/dest/entrypoints/client/bundle/utils.js +78 -0
  173. package/dest/entrypoints/client/lazy/index.d.ts +10 -0
  174. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -0
  175. package/dest/entrypoints/client/lazy/index.js +8 -0
  176. package/dest/entrypoints/client/lazy/utils.d.ts +15 -0
  177. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -0
  178. package/dest/entrypoints/client/lazy/utils.js +77 -0
  179. package/dest/entrypoints/client/store.d.ts +14 -0
  180. package/dest/entrypoints/client/store.d.ts.map +1 -0
  181. package/dest/entrypoints/client/store.js +42 -0
  182. package/dest/entrypoints/pxe_creation_options.d.ts +32 -0
  183. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -0
  184. package/dest/entrypoints/pxe_creation_options.js +3 -0
  185. package/dest/entrypoints/server/circuit_recording/circuit_recorder.d.ts +121 -0
  186. package/dest/entrypoints/server/circuit_recording/circuit_recorder.d.ts.map +1 -0
  187. package/dest/entrypoints/server/circuit_recording/circuit_recorder.js +208 -0
  188. package/dest/entrypoints/server/circuit_recording/file_circuit_recorder.d.ts +20 -0
  189. package/dest/entrypoints/server/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
  190. package/dest/entrypoints/server/circuit_recording/file_circuit_recorder.js +131 -0
  191. package/dest/entrypoints/server/circuit_recording/memory_circuit_recorder.d.ts +10 -0
  192. package/dest/entrypoints/server/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
  193. package/dest/entrypoints/server/circuit_recording/memory_circuit_recorder.js +9 -0
  194. package/dest/entrypoints/server/circuit_recording/simulator_recorder_wrapper.d.ts +18 -0
  195. package/dest/entrypoints/server/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
  196. package/dest/entrypoints/server/circuit_recording/simulator_recorder_wrapper.js +41 -0
  197. package/dest/entrypoints/server/index.d.ts +17 -0
  198. package/dest/entrypoints/server/index.d.ts.map +1 -0
  199. package/dest/entrypoints/server/index.js +14 -0
  200. package/dest/entrypoints/server/store.d.ts +18 -0
  201. package/dest/entrypoints/server/store.d.ts.map +1 -0
  202. package/dest/entrypoints/server/store.js +28 -0
  203. package/dest/entrypoints/server/utils.d.ts +9 -0
  204. package/dest/entrypoints/server/utils.d.ts.map +1 -0
  205. package/dest/entrypoints/server/utils.js +84 -0
  206. package/dest/error_enriching.d.ts +13 -0
  207. package/dest/error_enriching.d.ts.map +1 -0
  208. package/dest/error_enriching.js +80 -0
  209. package/dest/events/event_service.d.ts +30 -0
  210. package/dest/events/event_service.d.ts.map +1 -0
  211. package/dest/events/event_service.js +76 -0
  212. package/dest/events/index.d.ts +2 -0
  213. package/dest/events/index.d.ts.map +1 -0
  214. package/dest/events/index.js +1 -0
  215. package/dest/events/private_event_filter_validator.d.ts +10 -0
  216. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  217. package/dest/events/private_event_filter_validator.js +53 -0
  218. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  219. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  220. package/dest/hooks/authorize_utility_call.js +4 -0
  221. package/dest/hooks/execution_hooks.d.ts +62 -0
  222. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  223. package/dest/hooks/execution_hooks.js +9 -0
  224. package/dest/hooks/index.d.ts +5 -0
  225. package/dest/hooks/index.d.ts.map +1 -0
  226. package/dest/hooks/index.js +2 -0
  227. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  228. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  229. package/dest/hooks/resolve_custom_request.js +3 -0
  230. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  231. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  232. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  233. package/dest/logs/log_service.d.ts +40 -0
  234. package/dest/logs/log_service.d.ts.map +1 -0
  235. package/dest/logs/log_service.js +217 -0
  236. package/dest/messages/tx_resolver_service.d.ts +28 -0
  237. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  238. package/dest/messages/tx_resolver_service.js +62 -0
  239. package/dest/node/benchmarked_node.d.ts +22 -0
  240. package/dest/node/benchmarked_node.d.ts.map +1 -0
  241. package/dest/node/benchmarked_node.js +93 -0
  242. package/dest/node/caching_aztec_node.d.ts +24 -0
  243. package/dest/node/caching_aztec_node.d.ts.map +1 -0
  244. package/dest/node/caching_aztec_node.js +268 -0
  245. package/dest/notes/index.d.ts +2 -0
  246. package/dest/notes/index.d.ts.map +1 -0
  247. package/dest/notes/index.js +1 -0
  248. package/dest/notes/note_service.d.ts +77 -0
  249. package/dest/notes/note_service.d.ts.map +1 -0
  250. package/dest/notes/note_service.js +173 -0
  251. package/dest/notes_filter.d.ts +24 -0
  252. package/dest/notes_filter.d.ts.map +1 -0
  253. package/dest/notes_filter.js +4 -0
  254. package/dest/operation_lifecycle.d.ts +45 -0
  255. package/dest/operation_lifecycle.d.ts.map +1 -0
  256. package/dest/operation_lifecycle.js +68 -0
  257. package/dest/operation_queue.d.ts +75 -0
  258. package/dest/operation_queue.d.ts.map +1 -0
  259. package/dest/operation_queue.js +100 -0
  260. package/dest/oracle_version.d.ts +4 -0
  261. package/dest/oracle_version.d.ts.map +1 -0
  262. package/dest/oracle_version.js +21 -0
  263. package/dest/private_kernel/batch_planner.d.ts +47 -0
  264. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  265. package/dest/private_kernel/batch_planner.js +104 -0
  266. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  267. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  268. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.js +41 -0
  269. package/dest/private_kernel/hints/index.d.ts +3 -0
  270. package/dest/private_kernel/hints/index.d.ts.map +1 -0
  271. package/dest/private_kernel/hints/index.js +2 -0
  272. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
  273. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  274. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +343 -0
  275. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  276. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  277. package/dest/private_kernel/hints/test_utils.js +202 -0
  278. package/dest/private_kernel/index.d.ts +3 -0
  279. package/dest/private_kernel/index.d.ts.map +1 -0
  280. package/dest/private_kernel/index.js +2 -0
  281. package/dest/private_kernel/private_kernel_execution_prover.d.ts +49 -0
  282. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -0
  283. package/dest/private_kernel/private_kernel_execution_prover.js +408 -0
  284. package/dest/private_kernel/private_kernel_oracle.d.ts +65 -0
  285. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -0
  286. package/dest/private_kernel/private_kernel_oracle.js +110 -0
  287. package/dest/pxe.d.ts +364 -0
  288. package/dest/pxe.d.ts.map +1 -0
  289. package/dest/pxe.js +903 -0
  290. package/dest/storage/address_store/address_store.d.ts +11 -0
  291. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  292. package/dest/storage/address_store/address_store.js +49 -0
  293. package/dest/storage/address_store/index.d.ts +2 -0
  294. package/dest/storage/address_store/index.d.ts.map +1 -0
  295. package/dest/storage/address_store/index.js +1 -0
  296. package/dest/storage/allowed_scopes.d.ts +6 -0
  297. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  298. package/dest/storage/allowed_scopes.js +7 -0
  299. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +20 -0
  300. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  301. package/dest/storage/anchor_block_store/anchor_block_store.js +28 -0
  302. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  303. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  304. package/dest/storage/anchor_block_store/index.js +1 -0
  305. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  306. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  307. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  308. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  309. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  310. package/dest/storage/backwards_compatibility_tests/schema_tests.js +674 -0
  311. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  312. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  313. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  314. package/dest/storage/base_staging_store.d.ts +110 -0
  315. package/dest/storage/base_staging_store.d.ts.map +1 -0
  316. package/dest/storage/base_staging_store.js +141 -0
  317. package/dest/storage/capsule_store/capsule_service.d.ts +22 -0
  318. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  319. package/dest/storage/capsule_store/capsule_service.js +47 -0
  320. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  321. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  322. package/dest/storage/capsule_store/capsule_store.js +256 -0
  323. package/dest/storage/capsule_store/index.d.ts +3 -0
  324. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  325. package/dest/storage/capsule_store/index.js +2 -0
  326. package/dest/storage/contract_store/contract_store.d.ts +96 -0
  327. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  328. package/dest/storage/contract_store/contract_store.js +282 -0
  329. package/dest/storage/contract_store/index.d.ts +2 -0
  330. package/dest/storage/contract_store/index.d.ts.map +1 -0
  331. package/dest/storage/contract_store/index.js +1 -0
  332. package/dest/storage/contract_store/private_functions_tree.d.ts +27 -0
  333. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  334. package/dest/storage/contract_store/private_functions_tree.js +48 -0
  335. package/dest/storage/fact_store/fact_service.d.ts +23 -0
  336. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  337. package/dest/storage/fact_store/fact_service.js +45 -0
  338. package/dest/storage/fact_store/fact_store.d.ts +101 -0
  339. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  340. package/dest/storage/fact_store/fact_store.js +350 -0
  341. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  342. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  343. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  344. package/dest/storage/fact_store/index.d.ts +6 -0
  345. package/dest/storage/fact_store/index.d.ts.map +1 -0
  346. package/dest/storage/fact_store/index.js +4 -0
  347. package/dest/storage/fact_store/origin_state.d.ts +59 -0
  348. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  349. package/dest/storage/fact_store/origin_state.js +60 -0
  350. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  351. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  352. package/dest/storage/fact_store/stored_fact.js +64 -0
  353. package/dest/storage/index.d.ts +10 -0
  354. package/dest/storage/index.d.ts.map +1 -0
  355. package/dest/storage/index.js +9 -0
  356. package/dest/storage/metadata.d.ts +2 -0
  357. package/dest/storage/metadata.d.ts.map +1 -0
  358. package/dest/storage/metadata.js +1 -0
  359. package/dest/storage/note_store/index.d.ts +3 -0
  360. package/dest/storage/note_store/index.d.ts.map +1 -0
  361. package/dest/storage/note_store/index.js +2 -0
  362. package/dest/storage/note_store/note_store.d.ts +92 -0
  363. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  364. package/dest/storage/note_store/note_store.js +273 -0
  365. package/dest/storage/note_store/stored_note.d.ts +11 -0
  366. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  367. package/dest/storage/note_store/stored_note.js +27 -0
  368. package/dest/storage/note_store/test_utils.d.ts +9 -0
  369. package/dest/storage/note_store/test_utils.d.ts.map +1 -0
  370. package/dest/storage/note_store/test_utils.js +10 -0
  371. package/dest/storage/open_pxe_stores.d.ts +35 -0
  372. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  373. package/dest/storage/open_pxe_stores.js +29 -0
  374. package/dest/storage/private_event_store/private_event_store.d.ts +90 -0
  375. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  376. package/dest/storage/private_event_store/private_event_store.js +276 -0
  377. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  378. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  379. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  380. package/dest/storage/rollbackable.d.ts +15 -0
  381. package/dest/storage/rollbackable.d.ts.map +1 -0
  382. package/dest/storage/rollbackable.js +3 -0
  383. package/dest/storage/staged_write_coordinator.d.ts +103 -0
  384. package/dest/storage/staged_write_coordinator.d.ts.map +1 -0
  385. package/dest/storage/staged_write_coordinator.js +141 -0
  386. package/dest/storage/store_identity.d.ts +35 -0
  387. package/dest/storage/store_identity.d.ts.map +1 -0
  388. package/dest/storage/store_identity.js +44 -0
  389. package/dest/storage/tagging_store/index.d.ts +4 -0
  390. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  391. package/dest/storage/tagging_store/index.js +3 -0
  392. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +36 -0
  393. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  394. package/dest/storage/tagging_store/recipient_tagging_store.js +74 -0
  395. package/dest/storage/tagging_store/sender_tagging_store.d.ts +113 -0
  396. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  397. package/dest/storage/tagging_store/sender_tagging_store.js +432 -0
  398. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  399. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  400. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  401. package/dest/tagging/constants.d.ts +11 -0
  402. package/dest/tagging/constants.d.ts.map +1 -0
  403. package/dest/tagging/constants.js +38 -0
  404. package/dest/tagging/get_all_logs_by_tags.d.ts +69 -0
  405. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  406. package/dest/tagging/get_all_logs_by_tags.js +79 -0
  407. package/dest/tagging/index.d.ts +18 -0
  408. package/dest/tagging/index.d.ts.map +1 -0
  409. package/dest/tagging/index.js +16 -0
  410. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +31 -0
  411. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  412. package/dest/tagging/persist_sender_tagging_index_ranges.js +43 -0
  413. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +75 -0
  414. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  415. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +235 -0
  416. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  417. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  418. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  419. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  420. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  421. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  422. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +20 -0
  423. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  424. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +77 -0
  425. package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts +22 -0
  426. package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts.map +1 -0
  427. package/dest/tagging/sender_sync/utils/classify_pending_txs.js +62 -0
  428. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +30 -0
  429. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  430. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +74 -0
  431. package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts +29 -0
  432. package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts.map +1 -0
  433. package/dest/tagging/sender_sync/utils/resolve_pending_txs.js +42 -0
  434. package/dest/tagging/sender_sync/utils/test_utils.d.ts +16 -0
  435. package/dest/tagging/sender_sync/utils/test_utils.d.ts.map +1 -0
  436. package/dest/tagging/sender_sync/utils/test_utils.js +24 -0
  437. package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
  438. package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
  439. package/dest/tagging/testing/tag_query_test_utils.js +10 -0
  440. package/dest/test_utils.d.ts +3 -0
  441. package/dest/test_utils.d.ts.map +1 -0
  442. package/dest/test_utils.js +1 -0
  443. package/package.json +119 -0
  444. package/src/bin/check_oracle_version.ts +28 -0
  445. package/src/bin/index.ts +1 -0
  446. package/src/bin/oracle_version_helpers.ts +30 -0
  447. package/src/block_synchronizer/block_stream_source.ts +48 -0
  448. package/src/block_synchronizer/block_synchronizer.ts +225 -0
  449. package/src/block_synchronizer/index.ts +1 -0
  450. package/src/config/index.ts +141 -0
  451. package/src/config/package_info.ts +3 -0
  452. package/src/contract/contract_call_graph.ts +121 -0
  453. package/src/contract/contract_class_service.ts +45 -0
  454. package/src/contract/contract_sync_service.ts +349 -0
  455. package/src/contract/helpers.ts +35 -0
  456. package/src/contract/skip_sync_contracts.ts +23 -0
  457. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  458. package/src/contract_function_simulator/contract_function_simulator.ts +928 -0
  459. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  460. package/src/contract_function_simulator/execution_note_cache.ts +232 -0
  461. package/src/contract_function_simulator/execution_tagging_index_cache.ts +33 -0
  462. package/src/contract_function_simulator/hashed_values_cache.ts +47 -0
  463. package/src/contract_function_simulator/index.ts +107 -0
  464. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  465. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  466. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  467. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  468. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +52 -0
  469. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  470. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  471. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +35 -0
  472. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +19 -0
  473. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  474. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +59 -0
  475. package/src/contract_function_simulator/noir-structs/nullifier_membership_witness_data.ts +15 -0
  476. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  477. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  478. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  479. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  480. package/src/contract_function_simulator/noir-structs/public_data_witness_data.ts +13 -0
  481. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  482. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
  483. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
  484. package/src/contract_function_simulator/noir-structs/utility_context.ts +11 -0
  485. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  486. package/src/contract_function_simulator/oracle/index.ts +2 -0
  487. package/src/contract_function_simulator/oracle/interfaces.ts +20 -0
  488. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  489. package/src/contract_function_simulator/oracle/note_packing_utils.ts +68 -0
  490. package/src/contract_function_simulator/oracle/oracle_registry.ts +709 -0
  491. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1089 -0
  492. package/src/contract_function_simulator/oracle/private_execution.ts +140 -0
  493. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +812 -0
  494. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +1341 -0
  495. package/src/contract_function_simulator/pick_notes.ts +160 -0
  496. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  497. package/src/contract_logging.ts +52 -0
  498. package/src/debug/pxe_debug_utils.ts +89 -0
  499. package/src/entrypoints/client/bundle/index.ts +9 -0
  500. package/src/entrypoints/client/bundle/utils.ts +89 -0
  501. package/src/entrypoints/client/lazy/index.ts +9 -0
  502. package/src/entrypoints/client/lazy/utils.ts +89 -0
  503. package/src/entrypoints/client/store.ts +54 -0
  504. package/src/entrypoints/pxe_creation_options.ts +34 -0
  505. package/src/entrypoints/server/circuit_recording/circuit_recorder.ts +267 -0
  506. package/src/entrypoints/server/circuit_recording/file_circuit_recorder.ts +152 -0
  507. package/src/entrypoints/server/circuit_recording/memory_circuit_recorder.ts +13 -0
  508. package/src/entrypoints/server/circuit_recording/simulator_recorder_wrapper.ts +90 -0
  509. package/src/entrypoints/server/index.ts +17 -0
  510. package/src/entrypoints/server/store.ts +46 -0
  511. package/src/entrypoints/server/utils.ts +103 -0
  512. package/src/error_enriching.ts +124 -0
  513. package/src/events/event_service.ts +129 -0
  514. package/src/events/index.ts +1 -0
  515. package/src/events/private_event_filter_validator.ts +66 -0
  516. package/src/hooks/authorize_utility_call.ts +44 -0
  517. package/src/hooks/execution_hooks.ts +68 -0
  518. package/src/hooks/index.ts +13 -0
  519. package/src/hooks/resolve_custom_request.ts +24 -0
  520. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  521. package/src/logs/log_service.ts +295 -0
  522. package/src/messages/tx_resolver_service.ts +81 -0
  523. package/src/node/benchmarked_node.ts +141 -0
  524. package/src/node/caching_aztec_node.ts +407 -0
  525. package/src/notes/index.ts +1 -0
  526. package/src/notes/note_service.ts +238 -0
  527. package/src/notes_filter.ts +24 -0
  528. package/src/operation_lifecycle.ts +99 -0
  529. package/src/operation_queue.ts +149 -0
  530. package/src/oracle_version.ts +22 -0
  531. package/src/private_kernel/batch_planner.ts +168 -0
  532. package/src/private_kernel/hints/compute_tx_expiration_timestamp.ts +58 -0
  533. package/src/private_kernel/hints/index.ts +2 -0
  534. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +553 -0
  535. package/src/private_kernel/hints/test_utils.ts +318 -0
  536. package/src/private_kernel/index.ts +2 -0
  537. package/src/private_kernel/private_kernel_execution_prover.ts +656 -0
  538. package/src/private_kernel/private_kernel_oracle.ts +184 -0
  539. package/src/pxe.ts +1417 -0
  540. package/src/storage/address_store/address_store.ts +66 -0
  541. package/src/storage/address_store/index.ts +1 -0
  542. package/src/storage/allowed_scopes.ts +14 -0
  543. package/src/storage/anchor_block_store/anchor_block_store.ts +35 -0
  544. package/src/storage/anchor_block_store/index.ts +1 -0
  545. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  546. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  547. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  548. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  549. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  550. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  551. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  552. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  553. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  554. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +26 -0
  555. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +30 -0
  556. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  557. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  558. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  559. package/src/storage/backwards_compatibility_tests/schema_tests.ts +813 -0
  560. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  561. package/src/storage/base_staging_store.ts +227 -0
  562. package/src/storage/capsule_store/capsule_service.ts +97 -0
  563. package/src/storage/capsule_store/capsule_store.ts +349 -0
  564. package/src/storage/capsule_store/index.ts +2 -0
  565. package/src/storage/contract_store/contract_store.ts +403 -0
  566. package/src/storage/contract_store/index.ts +1 -0
  567. package/src/storage/contract_store/private_functions_tree.ts +68 -0
  568. package/src/storage/fact_store/fact_service.ts +70 -0
  569. package/src/storage/fact_store/fact_store.ts +424 -0
  570. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  571. package/src/storage/fact_store/index.ts +15 -0
  572. package/src/storage/fact_store/origin_state.ts +84 -0
  573. package/src/storage/fact_store/stored_fact.ts +80 -0
  574. package/src/storage/index.ts +9 -0
  575. package/src/storage/metadata.ts +1 -0
  576. package/src/storage/note_store/index.ts +2 -0
  577. package/src/storage/note_store/note_store.ts +367 -0
  578. package/src/storage/note_store/stored_note.ts +26 -0
  579. package/src/storage/note_store/test_utils.ts +16 -0
  580. package/src/storage/open_pxe_stores.ts +52 -0
  581. package/src/storage/private_event_store/private_event_store.ts +383 -0
  582. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  583. package/src/storage/rollbackable.ts +14 -0
  584. package/src/storage/staged_write_coordinator.ts +218 -0
  585. package/src/storage/store_identity.ts +72 -0
  586. package/src/storage/tagging_store/index.ts +3 -0
  587. package/src/storage/tagging_store/recipient_tagging_store.ts +114 -0
  588. package/src/storage/tagging_store/sender_tagging_store.ts +564 -0
  589. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  590. package/src/tagging/constants.ts +42 -0
  591. package/src/tagging/get_all_logs_by_tags.ts +157 -0
  592. package/src/tagging/index.ts +25 -0
  593. package/src/tagging/persist_sender_tagging_index_ranges.ts +59 -0
  594. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +357 -0
  595. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  596. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  597. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +113 -0
  598. package/src/tagging/sender_sync/utils/classify_pending_txs.ts +92 -0
  599. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +92 -0
  600. package/src/tagging/sender_sync/utils/resolve_pending_txs.ts +65 -0
  601. package/src/tagging/sender_sync/utils/test_utils.ts +46 -0
  602. package/src/tagging/testing/tag_query_test_utils.ts +11 -0
  603. package/src/test_utils.ts +2 -0
@@ -0,0 +1,267 @@
1
+ import type { ForeignCallHandler, ForeignCallInput, ForeignCallOutput } from '@aztec/noir-acvm_js';
2
+
3
+ import { sha512 } from '@aztec-labs/foundation/crypto/sha512';
4
+ import { type Logger, type LoggerBindings, resolveLogger } from '@aztec-labs/foundation/log';
5
+ import { Timer } from '@aztec-labs/foundation/timer';
6
+ import type { ACIRCallback, ACVMWitness } from '@aztec-labs/simulator/client';
7
+ import { AsyncLocalStorage } from 'node:async_hooks';
8
+
9
+ export type OracleCall = {
10
+ name: string;
11
+ inputs: unknown[];
12
+ outputs: unknown;
13
+ time: number;
14
+ // Due to the recursive nature of the simulator, we might have
15
+ // oracle calls performed after a foreign call (which is itself an oracle call)
16
+ // We keep track of the stack depth in this variable to ensure the recorded oracle
17
+ // calls are correctly associated with the right circuit.
18
+ // This is only use as a debugging tool
19
+ stackDepth: number;
20
+ };
21
+
22
+ export class CircuitRecording {
23
+ circuitName: string;
24
+ functionName: string;
25
+ bytecodeSHA512Hash: string;
26
+ timestamp: number;
27
+ inputs: Record<string, string>;
28
+ oracleCalls: OracleCall[];
29
+ error?: string;
30
+ parent?: CircuitRecording;
31
+
32
+ constructor(circuitName: string, functionName: string, bytecodeSHA512Hash: string, inputs: Record<string, string>) {
33
+ this.circuitName = circuitName;
34
+ this.functionName = functionName;
35
+ this.bytecodeSHA512Hash = bytecodeSHA512Hash;
36
+ this.timestamp = Date.now();
37
+ this.inputs = inputs;
38
+ this.oracleCalls = [];
39
+ }
40
+
41
+ setParent(recording?: CircuitRecording): void {
42
+ this.parent = recording;
43
+ }
44
+ }
45
+
46
+ /** Inputs needed to open a recording for a single circuit execution. */
47
+ export type RecordingMetadata = {
48
+ input: ACVMWitness;
49
+ bytecode: Buffer;
50
+ circuitName: string;
51
+ functionName: string;
52
+ };
53
+
54
+ /**
55
+ * Class responsible for recording circuit inputs necessary to replay the circuit. These inputs are the initial witness
56
+ * map and the oracle calls made during the circuit execution/witness generation.
57
+ *
58
+ * The active recording for an execution lives in `AsyncLocalStorage`, so each (possibly nested) circuit execution owns
59
+ * its own recording and concurrent or re-entrant executions cannot corrupt one another's state. Nested executions
60
+ * (`aztec_prv_callPrivateFunction`, utility calls) re-enter {@link record}, which links the child to the recording
61
+ * active in the enclosing async context and lets ALS restore the parent automatically when the child completes.
62
+ *
63
+ * Example recording object:
64
+ * ```json
65
+ * {
66
+ * "circuitName": "AMM",
67
+ * "functionName": "add_liquidity",
68
+ * "bytecodeSHA512Hash": "b46c640ed38f20eac5f61a5e41d8dd1e",
69
+ * "timestamp": 1740691464360,
70
+ * "inputs": {
71
+ * "0": "0x1e89de1f0ad5204263733b7ddf65bec45b8f44714a4da85a46474dad677679ef",
72
+ * "1": "0x00f4d59c0ff773427bb0fed5b422557ca4dc5655abe53d31fa9408cb3c5a672f",
73
+ * "5": "0x000000000000000000000000000000000000000000000000000000000000000f"
74
+ * },
75
+ * "oracleCalls": [
76
+ * {
77
+ * "name": "loadCapsule",
78
+ * "inputs": [
79
+ * [
80
+ * "0x102422483bad6abd385948435667e144ac4c272576e325e7563608876cd446fd"
81
+ * ],
82
+ * [
83
+ * "0x000000000000000000000000000000000000000000000000000000000000004d"
84
+ * ],
85
+ * [
86
+ * "0x0000000000000000000000000000000000000000000000000000000000000001"
87
+ * ]
88
+ * ],
89
+ * "outputs": [
90
+ * "0x0000000000000000000000000000000000000000000000000000000000000000",
91
+ * [
92
+ * "0x0000000000000000000000000000000000000000000000000000000000000000"
93
+ * ]
94
+ * ]
95
+ * },
96
+ * {
97
+ * "name": "fetchTaggedLogs",
98
+ * "inputs": []
99
+ * }
100
+ * ]
101
+ * }
102
+ * ```
103
+ */
104
+ export class CircuitRecorder {
105
+ protected readonly logger: Logger;
106
+
107
+ readonly #recordings = new AsyncLocalStorage<CircuitRecording>();
108
+
109
+ protected constructor(loggerOrBindings?: Logger | LoggerBindings) {
110
+ this.logger = resolveLogger('simulator:acvm:recording', loggerOrBindings);
111
+ }
112
+
113
+ /**
114
+ * Records a single circuit execution. Opens a recording for the circuit (linked as a child of the recording active
115
+ * in the current async context, if any), runs `fn` within that recording's context, and finalizes it. The recording
116
+ * is returned alongside the result so callers can derive per-circuit stats (e.g. oracle timings).
117
+ *
118
+ * Recorder bookkeeping never alters execution: if `fn` throws, the error is attached to the recording and re-thrown
119
+ * unchanged.
120
+ * @param metadata - Identifies the circuit and its initial witness.
121
+ * @param fn - Runs the circuit execution; its oracle calls are recorded into this recording.
122
+ */
123
+ record<T>(metadata: RecordingMetadata, fn: () => Promise<T>): Promise<{ result: T; recording: CircuitRecording }> {
124
+ const parent = this.#recordings.getStore();
125
+ const recording = new CircuitRecording(
126
+ metadata.circuitName,
127
+ metadata.functionName,
128
+ sha512(metadata.bytecode).toString('hex'),
129
+ Object.fromEntries(metadata.input),
130
+ );
131
+ recording.setParent(parent);
132
+
133
+ return this.#recordings.run(recording, async () => {
134
+ await this.onStart(recording);
135
+ try {
136
+ const result = await fn();
137
+ await this.onFinish(recording);
138
+ return { result, recording };
139
+ } catch (error) {
140
+ recording.error = JSON.stringify(error);
141
+ await this.onError(recording, error);
142
+ throw error;
143
+ }
144
+ });
145
+ }
146
+
147
+ /**
148
+ * Wraps a callback to record all oracle/foreign calls.
149
+ * @param callback - The original callback to wrap, either a user circuit callback or protocol circuit callback.
150
+ * @returns A wrapped callback that records all oracle interactions.
151
+ */
152
+ wrapCallback(callback: ACIRCallback | ForeignCallHandler | undefined): ACIRCallback | ForeignCallHandler | undefined {
153
+ if (!callback) {
154
+ return undefined;
155
+ }
156
+ if (this.#isACIRCallback(callback)) {
157
+ return this.#wrapUserCircuitCallback(callback);
158
+ }
159
+ return this.#wrapProtocolCircuitCallback(callback);
160
+ }
161
+
162
+ /**
163
+ * Type guard to check if a callback is an ACIRCallback.
164
+ */
165
+ #isACIRCallback(callback: ACIRCallback | ForeignCallHandler): callback is ACIRCallback {
166
+ return typeof callback === 'object' && callback !== null && !('call' in callback);
167
+ }
168
+
169
+ /**
170
+ * Wraps a user circuit callback to record all oracle calls. A nested circuit entered via an oracle (e.g.
171
+ * `aztec_prv_callPrivateFunction`) re-enters {@link record}, so its own oracle calls land on the child recording and
172
+ * this circuit's calls (including the entering oracle call itself) land on this recording once the child completes.
173
+ * @param callback - The original circuit callback.
174
+ * @returns A wrapped callback that records all oracle interactions which is to be provided to the ACVM.
175
+ */
176
+ #wrapUserCircuitCallback(callback: ACIRCallback): ACIRCallback {
177
+ const recordingCallback: ACIRCallback = {} as ACIRCallback;
178
+ const oracleMethods = Object.keys(callback);
179
+
180
+ for (const name of oracleMethods) {
181
+ const fn = callback[name as keyof ACIRCallback];
182
+ if (!fn || typeof fn !== 'function') {
183
+ throw new Error(`Oracle method ${name} not found when setting up recording callback`);
184
+ }
185
+
186
+ recordingCallback[name as keyof ACIRCallback] = (...args: ForeignCallInput[]): ReturnType<typeof fn> => {
187
+ const timer = new Timer();
188
+ const result = fn.call(callback, ...args);
189
+ if (result instanceof Promise) {
190
+ return result.then(async r => {
191
+ await this.recordCall(name, args, r, timer.ms());
192
+ return r;
193
+ }) as ReturnType<typeof fn>;
194
+ }
195
+ void this.recordCall(name, args, result, timer.ms());
196
+ return result;
197
+ };
198
+ }
199
+
200
+ return recordingCallback;
201
+ }
202
+
203
+ /**
204
+ * Wraps a protocol circuit callback to record all oracle calls.
205
+ * @param callback - The original oracle circuit callback.
206
+ * @returns A wrapped handler that records all oracle interactions which is to be provided to the ACVM.
207
+ */
208
+ #wrapProtocolCircuitCallback(callback: ForeignCallHandler): ForeignCallHandler {
209
+ return async (name: string, inputs: ForeignCallInput[]): Promise<ForeignCallOutput[]> => {
210
+ const timer = new Timer();
211
+ const result = await callback(name, inputs);
212
+ await this.recordCall(name, inputs, result, timer.ms());
213
+ return result;
214
+ };
215
+ }
216
+
217
+ /**
218
+ * Records a single oracle/foreign call with its inputs and outputs against the recording active in the current
219
+ * async context.
220
+ * @param name - Name of the call
221
+ * @param inputs - Input arguments
222
+ * @param outputs - Output results
223
+ */
224
+ recordCall(name: string, inputs: unknown[], outputs: unknown, time: number): Promise<OracleCall> {
225
+ const recording = this.#recordings.getStore();
226
+ const entry = {
227
+ name,
228
+ inputs,
229
+ outputs,
230
+ time,
231
+ stackDepth: depthOf(recording),
232
+ };
233
+ // Outside any active recording context (e.g. a stray call after the scope closed, or a direct unit-test call)
234
+ // there is nowhere to record; return the entry without throwing into the execution path.
235
+ recording?.oracleCalls.push(entry);
236
+ return Promise.resolve(entry);
237
+ }
238
+
239
+ /** The recording active in the current async context, if any. */
240
+ protected currentRecording(): CircuitRecording | undefined {
241
+ return this.#recordings.getStore();
242
+ }
243
+
244
+ /** Hook invoked when a recording opens, within the recording's context. Overridden to persist recordings. */
245
+ protected onStart(_recording: CircuitRecording): Promise<void> {
246
+ return Promise.resolve();
247
+ }
248
+
249
+ /** Hook invoked when a recording completes successfully, within the recording's context. */
250
+ protected onFinish(_recording: CircuitRecording): Promise<void> {
251
+ return Promise.resolve();
252
+ }
253
+
254
+ /** Hook invoked when a recording's execution throws, within the recording's context. */
255
+ protected onError(_recording: CircuitRecording, _error: unknown): Promise<void> {
256
+ return Promise.resolve();
257
+ }
258
+ }
259
+
260
+ /** Depth of a recording in the call tree: 0 for a top-level circuit, incremented per nested circuit. */
261
+ function depthOf(recording: CircuitRecording | undefined): number {
262
+ let depth = 0;
263
+ for (let ancestor = recording?.parent; ancestor; ancestor = ancestor.parent) {
264
+ depth++;
265
+ }
266
+ return depth;
267
+ }
@@ -0,0 +1,152 @@
1
+ import type { Logger } from '@aztec-labs/foundation/log';
2
+ import fs from 'fs/promises';
3
+ import path from 'path';
4
+
5
+ import { CircuitRecorder, type CircuitRecording } from './circuit_recorder.js';
6
+
7
+ /** Per-recording file state, keyed by recording so concurrent/nested executions don't share it. */
8
+ type RecordingFileState = { filePath: string; isFirstCall: boolean };
9
+
10
+ export class FileCircuitRecorder extends CircuitRecorder {
11
+ readonly #fileState = new WeakMap<CircuitRecording, RecordingFileState>();
12
+
13
+ constructor(
14
+ private readonly recordDir: string,
15
+ logger?: Logger,
16
+ ) {
17
+ super(logger);
18
+ }
19
+
20
+ protected override async onStart(recording: CircuitRecording): Promise<void> {
21
+ const recordingStringWithoutClosingBracket = JSON.stringify(
22
+ { ...recording, parent: undefined, oracleCalls: undefined },
23
+ null,
24
+ 2,
25
+ ).slice(0, -2);
26
+
27
+ try {
28
+ // Check if the recording directory exists and is a directory
29
+ const stats = await fs.stat(this.recordDir);
30
+ if (!stats.isDirectory()) {
31
+ throw new Error(`Recording path ${this.recordDir} exists but is not a directory`);
32
+ }
33
+ } catch (err) {
34
+ if ((err as NodeJS.ErrnoException).code === 'ENOENT') {
35
+ // The directory does not exist so we create it
36
+ await fs.mkdir(this.recordDir, { recursive: true });
37
+ } else {
38
+ throw err;
39
+ }
40
+ }
41
+
42
+ const filePath = await FileCircuitRecorder.#computeFilePathAndStoreInitialRecording(
43
+ this.recordDir,
44
+ recording.circuitName,
45
+ recording.functionName,
46
+ recordingStringWithoutClosingBracket,
47
+ );
48
+ this.#fileState.set(recording, { filePath, isFirstCall: true });
49
+ }
50
+
51
+ /**
52
+ * Computes a unique file path for the recording by trying different counter values.
53
+ * This is needed because multiple recordings of the same circuit could be happening simultaneously or an older
54
+ * recording might be present.
55
+ * @param recordDir - Directory to store the recording
56
+ * @param circuitName - Name of the circuit
57
+ * @param functionName - Name of the circuit function
58
+ * @param recordingContent - Initial recording content
59
+ * @returns A unique file path for the recording
60
+ */
61
+ static async #computeFilePathAndStoreInitialRecording(
62
+ recordDir: string,
63
+ circuitName: string,
64
+ functionName: string,
65
+ recordingContent: string,
66
+ ): Promise<string> {
67
+ let counter = 0;
68
+ while (true) {
69
+ try {
70
+ const filePath = getFilePath(recordDir, circuitName, functionName, counter);
71
+ // Write the initial recording content to the file
72
+ await fs.writeFile(filePath, recordingContent + ',\n "oracleCalls": [\n', {
73
+ flag: 'wx', // wx flag fails if file exists
74
+ });
75
+ return filePath;
76
+ } catch (err) {
77
+ if ((err as NodeJS.ErrnoException).code === 'EEXIST') {
78
+ counter++;
79
+ continue;
80
+ }
81
+ throw err;
82
+ }
83
+ }
84
+ }
85
+
86
+ /**
87
+ * Records a single oracle/foreign call with its inputs and outputs.
88
+ * @param name - Name of the call
89
+ * @param inputs - Input arguments
90
+ * @param outputs - Output results
91
+ */
92
+ override async recordCall(name: string, inputs: unknown[], outputs: unknown, time: number) {
93
+ const entry = await super.recordCall(name, inputs, outputs, time);
94
+ const recording = this.currentRecording();
95
+ const state = recording && this.#fileState.get(recording);
96
+ if (state) {
97
+ try {
98
+ const prefix = state.isFirstCall ? ' ' : ' ,';
99
+ state.isFirstCall = false;
100
+ await fs.appendFile(state.filePath, prefix + JSON.stringify(entry) + '\n');
101
+ } catch (err) {
102
+ this.logger.error('Failed to log circuit call', { error: err });
103
+ }
104
+ }
105
+ return entry;
106
+ }
107
+
108
+ /** Closes the recording file with the trailing brackets so the JSON parses. */
109
+ protected override async onFinish(recording: CircuitRecording): Promise<void> {
110
+ const state = this.#fileState.get(recording);
111
+ if (!state) {
112
+ return;
113
+ }
114
+ try {
115
+ await fs.appendFile(state.filePath, ' ]\n}\n');
116
+ } catch (err) {
117
+ this.logger.error('Failed to finalize recording file', { error: err });
118
+ }
119
+ }
120
+
121
+ /** Closes the recording file with the execution error and trailing brackets so the JSON parses. */
122
+ protected override async onError(recording: CircuitRecording, error: unknown): Promise<void> {
123
+ const state = this.#fileState.get(recording);
124
+ if (!state) {
125
+ return;
126
+ }
127
+ try {
128
+ await fs.appendFile(state.filePath, ' ],\n');
129
+ await fs.appendFile(state.filePath, ` "error": ${JSON.stringify(error)}\n`);
130
+ await fs.appendFile(state.filePath, '}\n');
131
+ } catch (err) {
132
+ this.logger.error('Failed to finalize recording file with error', { error: err });
133
+ }
134
+ }
135
+ }
136
+
137
+ /**
138
+ * Generates a file path for storing circuit recordings. The format of the filename is:
139
+ * `circuit_name_circuit_function_name_YYYY-MM-DD_N.json` where N is a counter to ensure unique filenames.
140
+ * @param recordDir - Base directory for recordings
141
+ * @param circuitName - Name of the circuit
142
+ * @param functionName - Name of the circuit function
143
+ * @param counter - Counter to ensure unique filenames. This is expected to be incremented in a loop until there is no
144
+ * existing file with the same name.
145
+ * @returns A file path for the recording.
146
+ */
147
+ function getFilePath(recordDir: string, circuitName: string, functionName: string, counter: number): string {
148
+ const date = new Date();
149
+ const formattedDate = date.toISOString().split('T')[0];
150
+ const filename = `${circuitName}_${functionName}_${formattedDate}_${counter}.json`;
151
+ return path.join(recordDir, filename);
152
+ }
@@ -0,0 +1,13 @@
1
+ import type { Logger } from '@aztec-labs/foundation/log';
2
+
3
+ import { CircuitRecorder } from './circuit_recorder.js';
4
+
5
+ /**
6
+ * In memory circuit recorder uses the default implementation. This is kept
7
+ * while we decide the fate of the FileCircuitRecorder.
8
+ */
9
+ export class MemoryCircuitRecorder extends CircuitRecorder {
10
+ constructor(logger?: Logger) {
11
+ super(logger);
12
+ }
13
+ }
@@ -0,0 +1,90 @@
1
+ import type { ForeignCallHandler } from '@aztec/noir-acvm_js';
2
+
3
+ import type {
4
+ ACIRCallback,
5
+ ACIRCallbackStats,
6
+ ACIRExecutionResult,
7
+ ACVMSuccess,
8
+ ACVMWitness,
9
+ CircuitSimulator,
10
+ } from '@aztec-labs/simulator/client';
11
+ import type { FunctionArtifactWithContractName } from '@aztec-labs/stdlib/abi';
12
+ import type { NoirCompiledCircuitWithName } from '@aztec-labs/stdlib/noir';
13
+
14
+ import type { CircuitRecorder } from './circuit_recorder.js';
15
+
16
+ /**
17
+ * Takes a circuit simulator and wraps it in a circuit recorder. See CircuitRecorder for more details on how circuit
18
+ * recording works.
19
+ */
20
+ export class SimulatorRecorderWrapper implements CircuitSimulator {
21
+ constructor(
22
+ private simulator: CircuitSimulator,
23
+ private recorder: CircuitRecorder,
24
+ ) {}
25
+
26
+ executeProtocolCircuit(
27
+ input: ACVMWitness,
28
+ artifact: NoirCompiledCircuitWithName,
29
+ callback: ForeignCallHandler | undefined,
30
+ ): Promise<ACVMSuccess> {
31
+ const bytecode = Buffer.from(artifact.bytecode, 'base64');
32
+
33
+ return this.#simulate<ForeignCallHandler | undefined, ACVMSuccess>(
34
+ wrappedCallback => this.simulator.executeProtocolCircuit(input, artifact, wrappedCallback),
35
+ input,
36
+ bytecode,
37
+ artifact.name,
38
+ 'main',
39
+ callback,
40
+ );
41
+ }
42
+
43
+ executeUserCircuit(
44
+ input: ACVMWitness,
45
+ artifact: FunctionArtifactWithContractName,
46
+ callback: ACIRCallback,
47
+ ): Promise<ACIRExecutionResult> {
48
+ return this.#simulate<ACIRCallback, ACIRExecutionResult>(
49
+ wrappedCallback => this.simulator.executeUserCircuit(input, artifact, wrappedCallback),
50
+ input,
51
+ artifact.bytecode,
52
+ artifact.contractName,
53
+ artifact.name,
54
+ callback,
55
+ );
56
+ }
57
+
58
+ async #simulate<C extends ACIRCallback | ForeignCallHandler | undefined, T extends ACIRExecutionResult | ACVMSuccess>(
59
+ simulateFn: (wrappedCallback: C) => Promise<T>,
60
+ input: ACVMWitness,
61
+ bytecode: Buffer,
62
+ contractName: string,
63
+ functionName: string,
64
+ callback: C,
65
+ ): Promise<T> {
66
+ // If a callback was provided, we wrap it so that its oracle calls are recorded. The wrapped callback reads the
67
+ // active recording lazily, so it picks up the recording opened by record() below.
68
+ const wrappedCallback = this.recorder.wrapCallback(callback);
69
+
70
+ // record() opens a recording for this circuit, runs the simulation within it, and finalizes it. A simulation
71
+ // failure is re-thrown unchanged, so recorder bookkeeping never masks the underlying error.
72
+ const { result, recording } = await this.recorder.record(
73
+ { input, bytecode, circuitName: contractName, functionName },
74
+ () => simulateFn(wrappedCallback as C),
75
+ );
76
+
77
+ (result as ACIRExecutionResult).oracles = recording.oracleCalls.reduce(
78
+ (acc, { time, name }) => {
79
+ if (!acc[name]) {
80
+ acc[name] = { times: [] };
81
+ }
82
+ acc[name].times.push(time);
83
+ return acc;
84
+ },
85
+ {} as Record<string, ACIRCallbackStats>,
86
+ );
87
+
88
+ return result;
89
+ }
90
+ }
@@ -0,0 +1,17 @@
1
+ export { type AccountPrivacyKeys, type AccountPrivacySecretKeys } from '@aztec-labs/key-store';
2
+
3
+ export * from '../../notes_filter.js';
4
+ export * from '../../pxe.js';
5
+ export * from '../../config/index.js';
6
+ export * from '../../error_enriching.js';
7
+ export * from '../../storage/index.js';
8
+ export * from './utils.js';
9
+ export * from './store.js';
10
+ export { NoteService } from '../../notes/note_service.js';
11
+ export { ORACLE_VERSION_MAJOR, ORACLE_VERSION_MINOR } from '../../oracle_version.js';
12
+ export { type PXECreationOptions } from '../pxe_creation_options.js';
13
+ export { type ChangeSetId, StagedWriteCoordinator } from '../../storage/staged_write_coordinator.js';
14
+ export { runOperation, type OperationContributor } from '../../operation_lifecycle.js';
15
+ export { ContractSyncService } from '../../contract/contract_sync_service.js';
16
+ export { ContractClassService } from '../../contract/contract_class_service.js';
17
+ export { AnchoredContractData } from '../../contract_function_simulator/anchored_contract_data.js';
@@ -0,0 +1,46 @@
1
+ import type { EthAddress } from '@aztec-labs/foundation/eth-address';
2
+ import { type LoggerBindings, createLogger } from '@aztec-labs/foundation/log';
3
+ import { type AztecLMDBStoreV2, openStoreAt } from '@aztec-labs/kv-store/lmdb-v2';
4
+ import { mkdir } from 'fs/promises';
5
+ import { join } from 'path';
6
+
7
+ import { storeIdentitySlug } from '../../storage/store_identity.js';
8
+
9
+ /** Location and identity inputs for opening an identity-partitioned PXE-side store. */
10
+ export type IdentityStoreConfig = {
11
+ dataDirectory: string;
12
+ /** Maximum LMDB map size in KB. When omitted, the kv-store default map size applies. */
13
+ dataStoreMapSizeKb?: number;
14
+ l1ChainId: number;
15
+ rollupAddress: EthAddress;
16
+ };
17
+
18
+ /**
19
+ * Opens the persistent LMDB store selected by `name` and identity triple `(l1ChainId, rollupAddress, schemaVersion)`.
20
+ * A store exists per identity: reopening with the same identity returns the same data, a different identity selects
21
+ * a different (possibly fresh) store. Callers wanting an ephemeral store use `openTmpStore` explicitly instead.
22
+ */
23
+ export async function openStore(
24
+ name: string,
25
+ schemaVersion: number,
26
+ config: IdentityStoreConfig,
27
+ bindings?: LoggerBindings,
28
+ ): Promise<AztecLMDBStoreV2> {
29
+ // Stores live under `<dataDirectory>/<name>-stores/<l1ChainId>-<rollupAddress>-v<schemaVersion>`, a sibling of the
30
+ // legacy `<dataDirectory>/<name>` directory: older binaries reset the legacy directory on a rollup mismatch, so
31
+ // per-identity stores must not nest inside it.
32
+ const subDir = join(
33
+ config.dataDirectory,
34
+ `${name}-stores`,
35
+ storeIdentitySlug({ l1ChainId: config.l1ChainId, rollupAddress: config.rollupAddress, schemaVersion }),
36
+ );
37
+ await mkdir(subDir, { recursive: true });
38
+
39
+ createLogger(`pxe:data:${name}`, bindings).info(`Opening ${name} data store (LMDB v2)`, {
40
+ storeName: name,
41
+ subDir,
42
+ dataStoreMapSizeKb: config.dataStoreMapSizeKb,
43
+ });
44
+
45
+ return openStoreAt(subDir, config.dataStoreMapSizeKb, undefined, bindings);
46
+ }
@@ -0,0 +1,103 @@
1
+ import { BBBundlePrivateKernelProver } from '@aztec-labs/bb-prover/client/bundle';
2
+ import type { L1ContractAddresses } from '@aztec-labs/ethereum/l1-contract-addresses';
3
+ import { createLogger } from '@aztec-labs/foundation/log';
4
+ import { openTmpStore } from '@aztec-labs/kv-store/lmdb-v2';
5
+ import { BundledProtocolContractsProvider } from '@aztec-labs/protocol-contracts/providers/bundle';
6
+ import { WASMSimulator } from '@aztec-labs/simulator/client';
7
+ import { getStandardAuthRegistry } from '@aztec-labs/standard-contracts/auth-registry';
8
+ import { getStandardHandshakeRegistry } from '@aztec-labs/standard-contracts/handshake-registry';
9
+ import { getStandardMultiCallEntrypoint } from '@aztec-labs/standard-contracts/multi-call-entrypoint';
10
+ import type { AztecNode } from '@aztec-labs/stdlib/interfaces/client';
11
+
12
+ import type { PXEConfig } from '../../config/index.js';
13
+ import { PXE } from '../../pxe.js';
14
+ import { PXE_DATA_SCHEMA_VERSION } from '../../storage/index.js';
15
+ import { type PXECreationOptions, isPrivateKernelProver } from '../pxe_creation_options.js';
16
+ import { FileCircuitRecorder } from './circuit_recording/file_circuit_recorder.js';
17
+ import { MemoryCircuitRecorder } from './circuit_recording/memory_circuit_recorder.js';
18
+ import { SimulatorRecorderWrapper } from './circuit_recording/simulator_recorder_wrapper.js';
19
+ import { openStore } from './store.js';
20
+
21
+ type PXEConfigWithoutDefaults = Omit<
22
+ PXEConfig,
23
+ 'l1ChainId' | 'l2BlockBatchSize' | 'rollupVersion' | keyof L1ContractAddresses
24
+ >;
25
+
26
+ export async function createPXE(
27
+ aztecNode: AztecNode,
28
+ config: PXEConfigWithoutDefaults,
29
+ options: PXECreationOptions = { loggers: {} },
30
+ ) {
31
+ const actor = options.loggerActorLabel;
32
+ const recorderLogger = createLogger('simulator:acvm:recording', { actor });
33
+ const recorder = process.env.CIRCUIT_RECORD_DIR
34
+ ? new FileCircuitRecorder(process.env.CIRCUIT_RECORD_DIR, recorderLogger)
35
+ : new MemoryCircuitRecorder(recorderLogger);
36
+ const simulatorLogger = createLogger('wasm-simulator', { actor });
37
+ const simulator = new SimulatorRecorderWrapper(new WASMSimulator(simulatorLogger), recorder);
38
+ const loggers = options.loggers ?? {};
39
+
40
+ const { l1ChainId, l1ContractAddresses, rollupVersion } = await aztecNode.getNodeInfo();
41
+ const configWithContracts: PXEConfig = {
42
+ ...config,
43
+ ...l1ContractAddresses,
44
+ l1ChainId,
45
+ rollupVersion,
46
+ l2BlockBatchSize: 50,
47
+ };
48
+
49
+ if (!options.store) {
50
+ const storeLogger = loggers.store ?? createLogger('pxe:data:lmdb', { actor });
51
+ options.store = configWithContracts.dataDirectory
52
+ ? await openStore(
53
+ 'pxe_data',
54
+ PXE_DATA_SCHEMA_VERSION,
55
+ {
56
+ dataDirectory: configWithContracts.dataDirectory,
57
+ dataStoreMapSizeKb: configWithContracts.dataStoreMapSizeKb,
58
+ l1ChainId,
59
+ rollupAddress: l1ContractAddresses.rollupAddress,
60
+ },
61
+ storeLogger.getBindings(),
62
+ )
63
+ : await openTmpStore(
64
+ 'pxe_data',
65
+ true,
66
+ configWithContracts.dataStoreMapSizeKb,
67
+ undefined,
68
+ storeLogger.getBindings(),
69
+ );
70
+ }
71
+ const proverLogger = loggers.prover ?? createLogger('pxe:bb:native', { actor });
72
+
73
+ let prover;
74
+ if (isPrivateKernelProver(options.proverOrOptions)) {
75
+ prover = options.proverOrOptions;
76
+ } else {
77
+ prover = new BBBundlePrivateKernelProver(simulator, { ...options.proverOrOptions, logger: proverLogger });
78
+ }
79
+
80
+ const protocolContractsProvider = new BundledProtocolContractsProvider();
81
+ const preloadedContractsProvider = options.preloadedContractsProvider ?? {
82
+ getPreloadedContracts: async () => [
83
+ await getStandardMultiCallEntrypoint(),
84
+ await getStandardAuthRegistry(),
85
+ await getStandardHandshakeRegistry(),
86
+ ],
87
+ };
88
+
89
+ const pxeLogger = loggers.pxe ?? createLogger('pxe:service', { actor });
90
+ const pxe = await PXE.create({
91
+ node: aztecNode,
92
+ nodeDebug: options.nodeDebug,
93
+ store: options.store,
94
+ proofCreator: prover,
95
+ simulator,
96
+ protocolContractsProvider,
97
+ preloadedContractsProvider,
98
+ config: configWithContracts,
99
+ loggerOrSuffix: pxeLogger,
100
+ hooks: options.hooks,
101
+ });
102
+ return pxe;
103
+ }