@aztec/pxe 0.0.1-commit.24de95ac → 0.0.1-commit.2606882

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 (521) hide show
  1. package/dest/bin/check_oracle_version.d.ts +1 -1
  2. package/dest/bin/check_oracle_version.js +54 -20
  3. package/dest/bin/index.d.ts +2 -0
  4. package/dest/bin/index.d.ts.map +1 -0
  5. package/dest/bin/index.js +1 -0
  6. package/dest/bin/oracle_version_helpers.d.ts +26 -0
  7. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  8. package/dest/bin/oracle_version_helpers.js +93 -0
  9. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  10. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  11. package/dest/block_synchronizer/block_stream_source.js +62 -0
  12. package/dest/block_synchronizer/block_synchronizer.d.ts +49 -0
  13. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  14. package/dest/block_synchronizer/block_synchronizer.js +173 -0
  15. package/dest/block_synchronizer/index.d.ts +2 -0
  16. package/dest/block_synchronizer/index.d.ts.map +1 -0
  17. package/dest/block_synchronizer/index.js +1 -0
  18. package/dest/config/index.d.ts +13 -13
  19. package/dest/config/index.d.ts.map +1 -1
  20. package/dest/config/index.js +24 -15
  21. package/dest/config/package_info.d.ts +1 -1
  22. package/dest/config/package_info.js +1 -1
  23. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  24. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  25. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  26. package/dest/contract_function_simulator/contract_function_simulator.d.ts +89 -26
  27. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/contract_function_simulator.js +267 -88
  29. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  30. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  31. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  32. package/dest/contract_function_simulator/execution_note_cache.d.ts +26 -15
  33. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  34. package/dest/contract_function_simulator/execution_note_cache.js +59 -34
  35. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -11
  36. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -15
  38. package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
  39. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/index.d.ts +15 -3
  41. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/index.js +12 -1
  43. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +48 -0
  44. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  45. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +45 -0
  46. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  47. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  48. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  49. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +6 -6
  50. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  51. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +12 -10
  52. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +16 -5
  53. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  54. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +39 -7
  55. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +4 -4
  56. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  57. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +3 -5
  58. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  59. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  60. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  61. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +7 -7
  62. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  63. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +15 -10
  64. package/dest/contract_function_simulator/noir-structs/option.d.ts +61 -0
  65. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  66. package/dest/contract_function_simulator/noir-structs/option.js +62 -0
  67. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +11 -0
  68. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  69. package/dest/contract_function_simulator/noir-structs/provided_secret.js +24 -0
  70. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  71. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  72. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  73. package/dest/contract_function_simulator/oracle/index.d.ts +1 -1
  74. package/dest/contract_function_simulator/oracle/interfaces.d.ts +16 -88
  75. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  76. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  77. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +2 -2
  78. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  79. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
  80. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +14 -8
  81. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  82. package/dest/contract_function_simulator/oracle/note_packing_utils.js +17 -12
  83. package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -43
  84. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  85. package/dest/contract_function_simulator/oracle/oracle.js +475 -251
  86. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +127 -0
  87. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  88. package/dest/contract_function_simulator/oracle/oracle_registry.js +786 -0
  89. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +139 -0
  90. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  91. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +560 -0
  92. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -27
  93. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  94. package/dest/contract_function_simulator/oracle/private_execution.js +6 -40
  95. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +78 -102
  96. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  97. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +177 -137
  98. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +189 -60
  99. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  100. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +507 -118
  101. package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
  102. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  103. package/dest/contract_function_simulator/pick_notes.js +21 -4
  104. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  105. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  106. package/dest/contract_function_simulator/proxied_contract_data_source.js +39 -50
  107. package/dest/contract_logging.d.ts +27 -0
  108. package/dest/contract_logging.d.ts.map +1 -0
  109. package/dest/contract_logging.js +38 -0
  110. package/dest/contract_sync/contract_sync_service.d.ts +42 -0
  111. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  112. package/dest/contract_sync/contract_sync_service.js +135 -0
  113. package/dest/contract_sync/helpers.d.ts +27 -0
  114. package/dest/contract_sync/helpers.d.ts.map +1 -0
  115. package/dest/contract_sync/helpers.js +53 -0
  116. package/dest/debug/pxe_debug_utils.d.ts +40 -0
  117. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  118. package/dest/debug/pxe_debug_utils.js +42 -0
  119. package/dest/entrypoints/client/bundle/index.d.ts +3 -2
  120. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  121. package/dest/entrypoints/client/bundle/index.js +2 -1
  122. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  123. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  124. package/dest/entrypoints/client/bundle/utils.js +43 -12
  125. package/dest/entrypoints/client/lazy/index.d.ts +3 -2
  126. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  127. package/dest/entrypoints/client/lazy/index.js +2 -1
  128. package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
  129. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  130. package/dest/entrypoints/client/lazy/utils.js +44 -13
  131. package/dest/entrypoints/pxe_creation_options.d.ts +15 -3
  132. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  133. package/dest/entrypoints/pxe_creation_options.js +3 -1
  134. package/dest/entrypoints/server/index.d.ts +7 -3
  135. package/dest/entrypoints/server/index.d.ts.map +1 -1
  136. package/dest/entrypoints/server/index.js +6 -2
  137. package/dest/entrypoints/server/utils.d.ts +4 -3
  138. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  139. package/dest/entrypoints/server/utils.js +50 -30
  140. package/dest/error_enriching.d.ts +4 -4
  141. package/dest/error_enriching.d.ts.map +1 -1
  142. package/dest/error_enriching.js +6 -6
  143. package/dest/events/event_service.d.ts +24 -0
  144. package/dest/events/event_service.d.ts.map +1 -0
  145. package/dest/events/event_service.js +77 -0
  146. package/dest/events/index.d.ts +2 -0
  147. package/dest/events/index.d.ts.map +1 -0
  148. package/dest/events/index.js +1 -0
  149. package/dest/events/private_event_filter_validator.d.ts +10 -0
  150. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  151. package/dest/events/private_event_filter_validator.js +53 -0
  152. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  153. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  154. package/dest/hooks/authorize_utility_call.js +4 -0
  155. package/dest/hooks/execution_hooks.d.ts +42 -0
  156. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  157. package/dest/hooks/execution_hooks.js +9 -0
  158. package/dest/hooks/index.d.ts +4 -0
  159. package/dest/hooks/index.d.ts.map +1 -0
  160. package/dest/hooks/index.js +1 -0
  161. package/dest/job_coordinator/job_coordinator.d.ts +75 -0
  162. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  163. package/dest/job_coordinator/job_coordinator.js +94 -0
  164. package/dest/logs/log_service.d.ts +29 -0
  165. package/dest/logs/log_service.d.ts.map +1 -0
  166. package/dest/logs/log_service.js +172 -0
  167. package/dest/messages/message_context_service.d.ts +17 -0
  168. package/dest/messages/message_context_service.d.ts.map +1 -0
  169. package/dest/messages/message_context_service.js +55 -0
  170. package/dest/notes/index.d.ts +2 -0
  171. package/dest/notes/index.d.ts.map +1 -0
  172. package/dest/notes/index.js +1 -0
  173. package/dest/notes/note_service.d.ts +70 -0
  174. package/dest/notes/note_service.d.ts.map +1 -0
  175. package/dest/notes/note_service.js +172 -0
  176. package/dest/notes_filter.d.ts +24 -0
  177. package/dest/notes_filter.d.ts.map +1 -0
  178. package/dest/notes_filter.js +4 -0
  179. package/dest/oracle_version.d.ts +4 -3
  180. package/dest/oracle_version.d.ts.map +1 -1
  181. package/dest/oracle_version.js +20 -9
  182. package/dest/private_kernel/batch_planner.d.ts +47 -0
  183. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  184. package/dest/private_kernel/batch_planner.js +104 -0
  185. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  186. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  187. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  188. package/dest/private_kernel/hints/index.d.ts +3 -3
  189. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  190. package/dest/private_kernel/hints/index.js +2 -2
  191. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
  192. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  193. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +145 -78
  194. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  195. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  196. package/dest/private_kernel/hints/test_utils.js +202 -0
  197. package/dest/private_kernel/index.d.ts +1 -1
  198. package/dest/private_kernel/private_kernel_execution_prover.d.ts +7 -2
  199. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  200. package/dest/private_kernel/private_kernel_execution_prover.js +177 -76
  201. package/dest/private_kernel/private_kernel_oracle.d.ts +30 -29
  202. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  203. package/dest/private_kernel/private_kernel_oracle.js +96 -2
  204. package/dest/pxe.d.ts +170 -103
  205. package/dest/pxe.d.ts.map +1 -1
  206. package/dest/pxe.js +356 -306
  207. package/dest/storage/address_store/address_store.d.ts +11 -0
  208. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  209. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -12
  210. package/dest/storage/address_store/index.d.ts +2 -0
  211. package/dest/storage/address_store/index.d.ts.map +1 -0
  212. package/dest/storage/address_store/index.js +1 -0
  213. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
  214. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  215. package/dest/storage/anchor_block_store/anchor_block_store.js +26 -0
  216. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  217. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  218. package/dest/storage/anchor_block_store/index.js +1 -0
  219. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  220. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  221. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  222. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  223. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  224. package/dest/storage/backwards_compatibility_tests/schema_tests.js +591 -0
  225. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  226. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  227. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  228. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  229. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  230. package/dest/storage/capsule_store/capsule_service.js +50 -0
  231. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  232. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  233. package/dest/storage/capsule_store/capsule_store.js +261 -0
  234. package/dest/storage/capsule_store/index.d.ts +3 -0
  235. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  236. package/dest/storage/capsule_store/index.js +2 -0
  237. package/dest/storage/contract_store/contract_store.d.ts +93 -0
  238. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  239. package/dest/storage/contract_store/contract_store.js +292 -0
  240. package/dest/storage/contract_store/index.d.ts +2 -0
  241. package/dest/storage/contract_store/index.d.ts.map +1 -0
  242. package/dest/storage/contract_store/index.js +1 -0
  243. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  244. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  245. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
  246. package/dest/storage/index.d.ts +8 -8
  247. package/dest/storage/index.d.ts.map +1 -1
  248. package/dest/storage/index.js +7 -7
  249. package/dest/storage/metadata.d.ts +2 -2
  250. package/dest/storage/metadata.js +1 -1
  251. package/dest/storage/note_store/index.d.ts +3 -0
  252. package/dest/storage/note_store/index.d.ts.map +1 -0
  253. package/dest/storage/note_store/index.js +2 -0
  254. package/dest/storage/note_store/note_store.d.ts +83 -0
  255. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  256. package/dest/storage/note_store/note_store.js +343 -0
  257. package/dest/storage/note_store/stored_note.d.ts +16 -0
  258. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  259. package/dest/storage/note_store/stored_note.js +43 -0
  260. package/dest/storage/open_pxe_stores.d.ts +33 -0
  261. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  262. package/dest/storage/open_pxe_stores.js +27 -0
  263. package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
  264. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  265. package/dest/storage/private_event_store/private_event_store.js +276 -0
  266. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  267. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  268. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  269. package/dest/storage/tagging_store/index.d.ts +4 -0
  270. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  271. package/dest/storage/tagging_store/index.js +3 -0
  272. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  273. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  274. package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
  275. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  276. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  277. package/dest/storage/tagging_store/sender_address_book_store.js +36 -0
  278. package/dest/storage/tagging_store/sender_tagging_store.d.ts +78 -0
  279. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  280. package/dest/storage/tagging_store/sender_tagging_store.js +374 -0
  281. package/dest/tagging/constants.d.ts +2 -2
  282. package/dest/tagging/constants.d.ts.map +1 -1
  283. package/dest/tagging/constants.js +10 -2
  284. package/dest/tagging/get_all_logs_by_tags.d.ts +48 -0
  285. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  286. package/dest/tagging/get_all_logs_by_tags.js +59 -0
  287. package/dest/tagging/index.d.ts +18 -7
  288. package/dest/tagging/index.d.ts.map +1 -1
  289. package/dest/tagging/index.js +16 -5
  290. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  291. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  292. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  293. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +56 -0
  294. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  295. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +163 -0
  296. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  297. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  298. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  299. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  300. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  301. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  302. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +16 -0
  303. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  304. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +92 -0
  305. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +17 -0
  306. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  307. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +60 -0
  308. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +19 -0
  309. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  310. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +72 -0
  311. package/package.json +33 -20
  312. package/src/bin/check_oracle_version.ts +63 -25
  313. package/src/bin/index.ts +1 -0
  314. package/src/bin/oracle_version_helpers.ts +121 -0
  315. package/src/block_synchronizer/block_stream_source.ts +81 -0
  316. package/src/block_synchronizer/block_synchronizer.ts +200 -0
  317. package/src/block_synchronizer/index.ts +1 -0
  318. package/src/config/index.ts +31 -26
  319. package/src/config/package_info.ts +1 -1
  320. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  321. package/src/contract_function_simulator/contract_function_simulator.ts +462 -122
  322. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  323. package/src/contract_function_simulator/execution_note_cache.ts +59 -29
  324. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
  325. package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
  326. package/src/contract_function_simulator/index.ts +52 -2
  327. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +55 -0
  328. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  329. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +15 -10
  330. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +40 -6
  331. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +4 -7
  332. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  333. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +17 -10
  334. package/src/contract_function_simulator/noir-structs/option.ts +69 -0
  335. package/src/contract_function_simulator/noir-structs/provided_secret.ts +27 -0
  336. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  337. package/src/contract_function_simulator/oracle/interfaces.ts +12 -151
  338. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
  339. package/src/contract_function_simulator/oracle/note_packing_utils.ts +31 -15
  340. package/src/contract_function_simulator/oracle/oracle.ts +570 -434
  341. package/src/contract_function_simulator/oracle/oracle_registry.ts +585 -0
  342. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +553 -0
  343. package/src/contract_function_simulator/oracle/private_execution.ts +6 -72
  344. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +230 -188
  345. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +751 -142
  346. package/src/contract_function_simulator/pick_notes.ts +23 -4
  347. package/src/contract_function_simulator/proxied_contract_data_source.ts +47 -53
  348. package/src/contract_logging.ts +52 -0
  349. package/src/contract_sync/contract_sync_service.ts +189 -0
  350. package/src/contract_sync/helpers.ts +86 -0
  351. package/src/debug/pxe_debug_utils.ts +85 -0
  352. package/src/entrypoints/client/bundle/index.ts +2 -1
  353. package/src/entrypoints/client/bundle/utils.ts +33 -21
  354. package/src/entrypoints/client/lazy/index.ts +2 -1
  355. package/src/entrypoints/client/lazy/utils.ts +35 -23
  356. package/src/entrypoints/pxe_creation_options.ts +20 -2
  357. package/src/entrypoints/server/index.ts +6 -2
  358. package/src/entrypoints/server/utils.ts +47 -60
  359. package/src/error_enriching.ts +7 -15
  360. package/src/events/event_service.ts +119 -0
  361. package/src/events/index.ts +1 -0
  362. package/src/events/private_event_filter_validator.ts +66 -0
  363. package/src/hooks/authorize_utility_call.ts +44 -0
  364. package/src/hooks/execution_hooks.ts +48 -0
  365. package/src/hooks/index.ts +7 -0
  366. package/src/job_coordinator/job_coordinator.ts +150 -0
  367. package/src/logs/log_service.ts +237 -0
  368. package/src/messages/message_context_service.ts +62 -0
  369. package/src/notes/index.ts +1 -0
  370. package/src/notes/note_service.ts +230 -0
  371. package/src/notes_filter.ts +24 -0
  372. package/src/oracle_version.ts +20 -9
  373. package/src/private_kernel/batch_planner.ts +169 -0
  374. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  375. package/src/private_kernel/hints/index.ts +2 -2
  376. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +200 -146
  377. package/src/private_kernel/hints/test_utils.ts +318 -0
  378. package/src/private_kernel/private_kernel_execution_prover.ts +272 -110
  379. package/src/private_kernel/private_kernel_oracle.ts +130 -39
  380. package/src/pxe.ts +606 -414
  381. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +16 -16
  382. package/src/storage/address_store/index.ts +1 -0
  383. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +11 -12
  384. package/src/storage/anchor_block_store/index.ts +1 -0
  385. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  386. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  387. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  388. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  389. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  390. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +46 -0
  391. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +36 -0
  392. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  393. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  394. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +16 -0
  395. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  396. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +97 -0
  397. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  398. package/src/storage/backwards_compatibility_tests/schema_tests.ts +712 -0
  399. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  400. package/src/storage/capsule_store/capsule_service.ts +90 -0
  401. package/src/storage/capsule_store/capsule_store.ts +333 -0
  402. package/src/storage/capsule_store/index.ts +2 -0
  403. package/src/storage/contract_store/contract_store.ts +408 -0
  404. package/src/storage/contract_store/index.ts +1 -0
  405. package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
  406. package/src/storage/index.ts +7 -7
  407. package/src/storage/metadata.ts +1 -1
  408. package/src/storage/note_store/index.ts +2 -0
  409. package/src/storage/note_store/note_store.ts +415 -0
  410. package/src/storage/note_store/stored_note.ts +48 -0
  411. package/src/storage/open_pxe_stores.ts +49 -0
  412. package/src/storage/private_event_store/private_event_store.ts +388 -0
  413. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  414. package/src/storage/tagging_store/index.ts +3 -0
  415. package/src/storage/tagging_store/recipient_tagging_store.ts +139 -0
  416. package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
  417. package/src/storage/tagging_store/sender_tagging_store.ts +476 -0
  418. package/src/tagging/constants.ts +10 -2
  419. package/src/tagging/get_all_logs_by_tags.ts +120 -0
  420. package/src/tagging/index.ts +20 -6
  421. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  422. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +240 -0
  423. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  424. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  425. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +134 -0
  426. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +66 -0
  427. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +84 -0
  428. package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -274
  429. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
  430. package/dest/contract_function_simulator/execution_data_provider.js +0 -14
  431. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  432. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  433. package/dest/contract_function_simulator/proxied_node.js +0 -27
  434. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
  435. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
  436. package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -701
  437. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  438. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  439. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  440. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  441. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -45
  442. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  443. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  444. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  445. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  446. package/dest/storage/address_data_provider/index.d.ts +0 -2
  447. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  448. package/dest/storage/address_data_provider/index.js +0 -1
  449. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
  450. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  451. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -118
  452. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  453. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  454. package/dest/storage/capsule_data_provider/index.js +0 -1
  455. package/dest/storage/contract_data_provider/contract_data_provider.d.ts +0 -74
  456. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  457. package/dest/storage/contract_data_provider/contract_data_provider.js +0 -205
  458. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  459. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  460. package/dest/storage/contract_data_provider/index.js +0 -1
  461. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  462. package/dest/storage/note_data_provider/index.d.ts +0 -3
  463. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  464. package/dest/storage/note_data_provider/index.js +0 -2
  465. package/dest/storage/note_data_provider/note_dao.d.ts +0 -100
  466. package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
  467. package/dest/storage/note_data_provider/note_dao.js +0 -102
  468. package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -83
  469. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  470. package/dest/storage/note_data_provider/note_data_provider.js +0 -308
  471. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -43
  472. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  473. package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -104
  474. package/dest/storage/sync_data_provider/index.d.ts +0 -2
  475. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  476. package/dest/storage/sync_data_provider/index.js +0 -1
  477. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -10
  478. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  479. package/dest/storage/sync_data_provider/sync_data_provider.js +0 -26
  480. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  481. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  482. package/dest/storage/tagging_data_provider/index.js +0 -1
  483. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
  484. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  485. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
  486. package/dest/synchronizer/index.d.ts +0 -2
  487. package/dest/synchronizer/index.d.ts.map +0 -1
  488. package/dest/synchronizer/index.js +0 -1
  489. package/dest/synchronizer/synchronizer.d.ts +0 -35
  490. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  491. package/dest/synchronizer/synchronizer.js +0 -101
  492. package/dest/tagging/siloed_tag.d.ts +0 -14
  493. package/dest/tagging/siloed_tag.d.ts.map +0 -1
  494. package/dest/tagging/siloed_tag.js +0 -20
  495. package/dest/tagging/tag.d.ts +0 -12
  496. package/dest/tagging/tag.d.ts.map +0 -1
  497. package/dest/tagging/tag.js +0 -17
  498. package/dest/tagging/utils.d.ts +0 -18
  499. package/dest/tagging/utils.d.ts.map +0 -1
  500. package/dest/tagging/utils.js +0 -24
  501. package/src/contract_function_simulator/execution_data_provider.ts +0 -343
  502. package/src/contract_function_simulator/proxied_node.ts +0 -33
  503. package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1019
  504. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
  505. package/src/storage/address_data_provider/index.ts +0 -1
  506. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -147
  507. package/src/storage/capsule_data_provider/index.ts +0 -1
  508. package/src/storage/contract_data_provider/contract_data_provider.ts +0 -294
  509. package/src/storage/contract_data_provider/index.ts +0 -1
  510. package/src/storage/note_data_provider/index.ts +0 -2
  511. package/src/storage/note_data_provider/note_dao.ts +0 -154
  512. package/src/storage/note_data_provider/note_data_provider.ts +0 -393
  513. package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -148
  514. package/src/storage/sync_data_provider/index.ts +0 -1
  515. package/src/storage/tagging_data_provider/index.ts +0 -1
  516. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
  517. package/src/synchronizer/index.ts +0 -1
  518. package/src/synchronizer/synchronizer.ts +0 -120
  519. package/src/tagging/siloed_tag.ts +0 -22
  520. package/src/tagging/tag.ts +0 -16
  521. package/src/tagging/utils.ts +0 -31
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { Comparator, type Note } from '@aztec/stdlib/note';
3
3
 
4
4
  export interface PropertySelector {
@@ -85,9 +85,24 @@ interface ContainsNote {
85
85
  }
86
86
 
87
87
  const selectPropertyFromPackedNoteContent = (noteData: Fr[], selector: PropertySelector): Fr => {
88
+ if (selector.index >= noteData.length) {
89
+ throw new Error(`Property selector index ${selector.index} out of bounds for note with ${noteData.length} fields`);
90
+ }
91
+ if (selector.offset + selector.length > Fr.SIZE_IN_BYTES) {
92
+ throw new Error(
93
+ `Property selector range (offset=${selector.offset}, length=${selector.length}) exceeds Fr buffer size of ${Fr.SIZE_IN_BYTES} bytes`,
94
+ );
95
+ }
88
96
  const noteValueBuffer = noteData[selector.index].toBuffer();
89
- const noteValue = noteValueBuffer.subarray(selector.offset, selector.offset + selector.length);
90
- return Fr.fromBuffer(noteValue);
97
+ // Noir's PropertySelector counts offset from the LSB (last byte of the big-endian buffer),
98
+ // so offset=0,length=Fr.SIZE_IN_BYTES reads the entire field, and offset=0,length=1 reads the last byte.
99
+ const start = Fr.SIZE_IN_BYTES - selector.offset - selector.length;
100
+ const end = Fr.SIZE_IN_BYTES - selector.offset;
101
+ const noteValue = noteValueBuffer.subarray(start, end);
102
+ // Left-pad to Fr.SIZE_IN_BYTES so Fr.fromBuffer interprets the value correctly.
103
+ const padded = Buffer.alloc(Fr.SIZE_IN_BYTES);
104
+ noteValue.copy(padded, Fr.SIZE_IN_BYTES - noteValue.length);
105
+ return Fr.fromBuffer(padded);
91
106
  };
92
107
 
93
108
  const selectNotes = <T extends ContainsNote>(noteDatas: T[], selects: Select[]): T[] =>
@@ -103,7 +118,11 @@ const selectNotes = <T extends ContainsNote>(noteDatas: T[], selects: Select[]):
103
118
  [Comparator.GTE]: () => !noteValueFr.lt(value),
104
119
  };
105
120
 
106
- return comparatorSelector[comparator]();
121
+ const fn = comparatorSelector[comparator];
122
+ if (!fn) {
123
+ throw new Error(`Invalid comparator value: ${comparator}`);
124
+ }
125
+ return fn();
107
126
  }),
108
127
  );
109
128
 
@@ -1,66 +1,60 @@
1
- import { FunctionSelector } from '@aztec/stdlib/abi';
2
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
1
+ import { type FunctionSelector, findFunctionArtifactBySelector } from '@aztec/stdlib/abi';
2
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
3
  import type { ContractOverrides } from '@aztec/stdlib/tx';
4
4
 
5
- import type { ContractDataProvider } from '../storage/index.js';
5
+ import type { ContractStore } from '../storage/contract_store/contract_store.js';
6
6
 
7
7
  /*
8
- * Proxy generator for a ContractDataProvider that allows overriding contract instances and artifacts, so
9
- * the contract function simulator can execute different bytecode on certain addresses. An example use case
10
- * would be overriding your own account contract so that valid signatures don't have to be provided while simulating.
8
+ * Proxy generator for a ContractStore that allows overriding contract instances at given addresses,
9
+ * so the contract function simulator can execute different bytecode on certain addresses. An example
10
+ * use case would be overriding your own account contract so that valid signatures don't have to be
11
+ * provided while simulating.
12
+ *
13
+ * Function artifact lookups for an overridden address are routed via the override-instance's
14
+ * `currentContractClassId` rather than the underlying ContractStore's address→class mapping —
15
+ * `ContractStore.getFunctionArtifact` calls `this.getContractInstance` internally, which the proxy
16
+ * cannot intercept (the binding sees the raw target, not the proxy). The target class must be
17
+ * registered ahead of time via `pxe.registerContractClass(...)`.
11
18
  */
12
- export class ProxiedContractDataProviderFactory {
13
- static create(contractDataProvider: ContractDataProvider, overrides?: ContractOverrides) {
19
+ export class ProxiedContractStoreFactory {
20
+ static create(contractStore: ContractStore, overrides?: ContractOverrides) {
14
21
  if (!overrides) {
15
- return contractDataProvider;
22
+ return contractStore;
16
23
  }
17
24
 
18
- return new Proxy(contractDataProvider, {
19
- get(target, prop: keyof ContractDataProvider) {
20
- switch (prop) {
21
- case 'getContractInstance': {
22
- return async (address: AztecAddress) => {
23
- if (overrides[address.toString()]) {
24
- const { instance } = overrides[address.toString()]!;
25
- instance.address = address;
26
- const realInstance = await target.getContractInstance(address);
27
- if (!realInstance) {
28
- throw new Error(`Contract instance not found for address: ${address}`);
29
- }
30
- instance.currentContractClassId = realInstance.currentContractClassId;
31
- instance.originalContractClassId = realInstance.originalContractClassId;
32
- return instance;
33
- } else {
34
- return target.getContractInstance(address);
35
- }
36
- };
37
- }
38
- case 'getFunctionArtifact': {
39
- return async (contractAddress: AztecAddress, selector: FunctionSelector) => {
40
- if (overrides[contractAddress.toString()]) {
41
- const { artifact } = overrides[contractAddress.toString()]!;
42
- const functions = artifact.functions;
43
- for (let i = 0; i < functions.length; i++) {
44
- const fn = functions[i];
45
- const fnSelector = await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters);
46
- if (fnSelector.equals(selector)) {
47
- return fn;
48
- }
49
- }
50
- } else {
51
- return target.getFunctionArtifact(contractAddress, selector);
52
- }
53
- };
54
- }
55
- default: {
56
- const value = Reflect.get(target, prop);
57
- if (typeof value === 'function') {
58
- return value.bind(target);
25
+ return new Proxy(contractStore, {
26
+ get(target, prop: keyof ContractStore) {
27
+ if (prop === 'getContractInstance') {
28
+ return (address: AztecAddress) => {
29
+ const override = overrides[address.toString()];
30
+ return override ? Promise.resolve(override.instance) : target.getContractInstance(address);
31
+ };
32
+ }
33
+ if (prop === 'getFunctionArtifact' || prop === 'getFunctionArtifactWithDebugMetadata') {
34
+ return async (contractAddress: AztecAddress, selector: FunctionSelector) => {
35
+ const override = overrides[contractAddress.toString()];
36
+ if (!override) {
37
+ return (target[prop] as Function).call(target, contractAddress, selector);
38
+ }
39
+ const artifact = await target.getContractArtifact(override.instance.currentContractClassId);
40
+ if (!artifact) {
41
+ throw new Error(
42
+ `No artifact registered for override class ${override.instance.currentContractClassId} ` +
43
+ `at ${contractAddress}. Register it via pxe.registerContractClass(...) before simulating.`,
44
+ );
45
+ }
46
+ const fn = await findFunctionArtifactBySelector(artifact, selector);
47
+ if (!fn) {
48
+ throw new Error(
49
+ `Function with selector ${selector} not found in stub artifact for overridden contract at ${contractAddress}.`,
50
+ );
59
51
  }
60
- return value;
61
- }
52
+ return { ...fn, contractName: artifact.name };
53
+ };
62
54
  }
55
+ const value = Reflect.get(target, prop);
56
+ return typeof value === 'function' ? value.bind(target) : value;
63
57
  },
64
- });
58
+ }) satisfies ContractStore;
65
59
  }
66
60
  }
@@ -0,0 +1,52 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { type LogLevel, type Logger, applyStringFormatting, createLogger } from '@aztec/foundation/log';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { DebugLog } from '@aztec/stdlib/logs';
5
+
6
+ /** Resolves a contract address to a human-readable name, if available. */
7
+ export type ContractNameResolver = (address: AztecAddress) => Promise<string | undefined>;
8
+ export type CONTRACT_LOG_KIND = 'aztecnr' | 'user';
9
+
10
+ /**
11
+ * Creates a logger whose output is prefixed with `contract:<name>(<addrAbbrev>)`.
12
+ */
13
+ export async function createContractLogger(
14
+ contractAddress: AztecAddress,
15
+ getContractName: ContractNameResolver,
16
+ kind: CONTRACT_LOG_KIND,
17
+ options?: { instanceId?: string },
18
+ ): Promise<Logger> {
19
+ const addrAbbrev = contractAddress.toString().slice(0, 10);
20
+ const name = await getContractName(contractAddress);
21
+
22
+ const prefix = kind == 'aztecnr' ? 'aztecnr' : 'contract';
23
+ const module = name ? `${prefix}:${name}(${addrAbbrev})` : `${prefix}:Unknown(${addrAbbrev})`;
24
+ return createLogger(module, options);
25
+ }
26
+
27
+ /**
28
+ * Formats and emits a single contract log message through the given logger.
29
+ */
30
+ export function logContractMessage(logger: Logger, level: LogLevel, message: string, fields: Fr[]): void {
31
+ logger[level](applyStringFormatting(message, fields));
32
+ }
33
+
34
+ /**
35
+ * Displays debug logs collected during public function simulation,
36
+ * using the `contract:` prefixed logger format.
37
+ */
38
+ export async function displayDebugLogs(debugLogs: DebugLog[], getContractName: ContractNameResolver): Promise<void> {
39
+ for (const log of debugLogs) {
40
+ const { kind, message } = stripAztecnrLogPrefix(log.message);
41
+ const logger = await createContractLogger(log.contractAddress, getContractName, kind);
42
+ logContractMessage(logger, log.level, message, log.fields);
43
+ }
44
+ }
45
+
46
+ export function stripAztecnrLogPrefix(message: string): { kind: CONTRACT_LOG_KIND; message: string } {
47
+ if (message.startsWith('[aztec-nr] ')) {
48
+ return { kind: 'aztecnr', message: message.slice('[aztec-nr] '.length) };
49
+ } else {
50
+ return { kind: 'user', message };
51
+ }
52
+ }
@@ -0,0 +1,189 @@
1
+ import type { Logger } from '@aztec/foundation/log';
2
+ import { Semaphore } from '@aztec/foundation/queue';
3
+ import { isProtocolContract } from '@aztec/protocol-contracts';
4
+ import type { FunctionCall, FunctionSelector } from '@aztec/stdlib/abi';
5
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
6
+ import type { AztecNode } from '@aztec/stdlib/interfaces/client';
7
+ import type { BlockHeader } from '@aztec/stdlib/tx';
8
+
9
+ import type { StagedStore } from '../job_coordinator/job_coordinator.js';
10
+ import { NoteService } from '../notes/note_service.js';
11
+ import type { ContractStore } from '../storage/contract_store/contract_store.js';
12
+ import type { NoteStore } from '../storage/note_store/note_store.js';
13
+ import { syncScope, verifyCurrentClassId } from './helpers.js';
14
+
15
+ /** Maximum number of scope syncs running concurrently across the PXE. */
16
+ const MAX_CONCURRENT_SCOPE_SYNCS = 5;
17
+
18
+ /**
19
+ * Service for syncing the private state of contracts and verifying that the PXE holds the current class artifact.
20
+ * It uses a cache to avoid redundant sync operations - the cache is wiped when the anchor block changes.
21
+ *
22
+ * TODO: The StagedStore naming is broken here. Figure out a better name.
23
+ */
24
+ export class ContractSyncService implements StagedStore {
25
+ readonly storeName = 'contract_sync';
26
+
27
+ // Tracks contracts synced since last wipe. The cache is keyed per individual scope address
28
+ // (`contractAddress:scopeAddress`), or `contractAddress:*` for all scopes (all accounts).
29
+ // The value is a promise that resolves when the contract is synced.
30
+ private syncedContracts: Map<string, Promise<void>> = new Map();
31
+
32
+ // Tracks class ID verification per contract. Keyed by contract address only (no scope), since
33
+ // class ID verification is scope-independent. Cleared on wipe/discard.
34
+ private classIdVerificationCache: Map<string, Promise<void>> = new Map();
35
+
36
+ // Bounds the number of scope syncs running concurrently. Scopes beyond this limit queue here. Sized to trade off
37
+ // parallelism on non-ACIR work (node RPC, note store reads) against memory pressure from concurrent circuit
38
+ // execution.
39
+ #syncSlot = new Semaphore(MAX_CONCURRENT_SCOPE_SYNCS);
40
+
41
+ constructor(
42
+ private aztecNode: AztecNode,
43
+ private contractStore: ContractStore,
44
+ private noteStore: NoteStore,
45
+ private log: Logger,
46
+ ) {}
47
+
48
+ /**
49
+ * Ensures a contract's private state is synchronized and that the PXE holds the current class artifact.
50
+ * Uses a cache to avoid redundant sync operations - the cache is wiped when the anchor block changes.
51
+ * @param contractAddress - The address of the contract to sync.
52
+ * @param functionToInvokeAfterSync - The function selector that will be called after sync (used to validate it's
53
+ * not sync_state itself).
54
+ * @param utilityExecutor - Executor function for running the sync_state utility function.
55
+ * @param scopes - Access scopes to pass through to the utility executor (affects whose account's private state is discovered).
56
+ */
57
+ async ensureContractSynced(
58
+ contractAddress: AztecAddress,
59
+ functionToInvokeAfterSync: FunctionSelector | null,
60
+ utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<any>,
61
+ anchorBlockHeader: BlockHeader,
62
+ jobId: string,
63
+ scopes: AztecAddress[],
64
+ ): Promise<void> {
65
+ this.#startSyncIfNeeded(contractAddress, scopes, anchorBlockHeader, jobId, scope =>
66
+ syncScope(contractAddress, this.contractStore, functionToInvokeAfterSync, utilityExecutor, scope),
67
+ );
68
+
69
+ await this.#awaitSync(contractAddress, scopes);
70
+ }
71
+
72
+ /** Clears sync cache entries for the given scopes of a contract. */
73
+ invalidateContractForScopes(contractAddress: AztecAddress, scopes: AztecAddress[]): void {
74
+ if (scopes.length === 0) {
75
+ return;
76
+ }
77
+ scopes.forEach(scope => this.syncedContracts.delete(toKey(contractAddress, scope)));
78
+ }
79
+
80
+ /** Clears sync cache. Called by BlockSynchronizer when anchor block changes. */
81
+ wipe(): void {
82
+ this.log.debug(`Wiping contract sync cache (${this.syncedContracts.size} entries)`);
83
+ this.syncedContracts.clear();
84
+ this.classIdVerificationCache.clear();
85
+ }
86
+
87
+ commit(_jobId: string): Promise<void> {
88
+ return Promise.resolve();
89
+ }
90
+
91
+ discardStaged(_jobId: string): Promise<void> {
92
+ // We clear the synced contracts cache here because, when the job is discarded, any associated database writes from
93
+ // the sync are also undone.
94
+ this.syncedContracts.clear();
95
+ this.classIdVerificationCache.clear();
96
+ return Promise.resolve();
97
+ }
98
+
99
+ /**
100
+ * For each unsynced scope, creates a promise that waits on:
101
+ * 1. Class ID verification (cached per contract, scope-independent).
102
+ * 2. Note nullifier sync (shared, batched across all unsynced scopes).
103
+ * 3. Per-scope sync (individual, semaphore-bounded).
104
+ */
105
+ #startSyncIfNeeded(
106
+ contractAddress: AztecAddress,
107
+ scopes: AztecAddress[],
108
+ anchorBlockHeader: BlockHeader,
109
+ jobId: string,
110
+ syncScopeFn: (scope: AztecAddress) => Promise<void>,
111
+ ): void {
112
+ const scopesToSync = scopes.filter(scope => !this.syncedContracts.has(toKey(contractAddress, scope)));
113
+ if (scopesToSync.length === 0) {
114
+ return;
115
+ }
116
+
117
+ this.log.debug(`Syncing contract ${contractAddress} for ${scopesToSync.length} scope(s)`);
118
+
119
+ const verifyPromise = this.#verifyClassId(contractAddress, anchorBlockHeader);
120
+ const syncNullifiersPromise = this.#syncNoteNullifiers(contractAddress, anchorBlockHeader, jobId, scopesToSync);
121
+
122
+ for (const scope of scopesToSync) {
123
+ const key = toKey(contractAddress, scope);
124
+ const promise = Promise.all([verifyPromise, syncNullifiersPromise, this.#runBounded(() => syncScopeFn(scope))])
125
+ .then(() => {})
126
+ .catch(err => {
127
+ this.syncedContracts.delete(key);
128
+ throw err;
129
+ });
130
+ this.syncedContracts.set(key, promise);
131
+ }
132
+ }
133
+
134
+ /** Verifies the local class ID matches the on-chain value (cached, evicts on failure so retries re-verify). */
135
+ #verifyClassId(contractAddress: AztecAddress, anchorBlockHeader: BlockHeader): Promise<void> {
136
+ const contractKey = contractAddress.toString();
137
+ const cached = this.classIdVerificationCache.get(contractKey);
138
+ if (cached) {
139
+ return cached;
140
+ }
141
+ const promise = verifyCurrentClassId(contractAddress, this.aztecNode, this.contractStore, anchorBlockHeader).catch(
142
+ err => {
143
+ this.classIdVerificationCache.delete(contractKey);
144
+ throw err;
145
+ },
146
+ );
147
+ this.classIdVerificationCache.set(contractKey, promise);
148
+ return promise;
149
+ }
150
+
151
+ /** Syncs note nullifiers across all unsynced scopes in a single batched call. */
152
+ async #syncNoteNullifiers(
153
+ contractAddress: AztecAddress,
154
+ anchorBlockHeader: BlockHeader,
155
+ jobId: string,
156
+ scopes: AztecAddress[],
157
+ ): Promise<void> {
158
+ // Protocol contracts don't have private state to sync
159
+ if (isProtocolContract(contractAddress)) {
160
+ return;
161
+ }
162
+ // This runs in parallel with per-scope sync (which also writes to the note store). That's safe because
163
+ // the note store handles concurrent operations.
164
+ const noteService = new NoteService(this.noteStore, this.aztecNode, anchorBlockHeader, jobId);
165
+ await noteService.syncNoteNullifiers(contractAddress, scopes);
166
+ }
167
+
168
+ /** Runs fn while holding a slot in #syncSlot, bounding total concurrent scope syncs. */
169
+ async #runBounded<T>(fn: () => Promise<T>): Promise<T> {
170
+ await this.#syncSlot.acquire();
171
+ try {
172
+ return await fn();
173
+ } finally {
174
+ this.#syncSlot.release();
175
+ }
176
+ }
177
+
178
+ /** Collects all relevant scope promises (including in-flight ones from concurrent calls) and awaits them. */
179
+ async #awaitSync(contractAddress: AztecAddress, scopes: AztecAddress[]): Promise<void> {
180
+ const promises = scopes
181
+ .map(scope => this.syncedContracts.get(toKey(contractAddress, scope)))
182
+ .filter(p => p !== undefined);
183
+ await Promise.all(promises);
184
+ }
185
+ }
186
+
187
+ function toKey(contract: AztecAddress, scope: AztecAddress) {
188
+ return `${contract.toString()}:${scope.toString()}`;
189
+ }
@@ -0,0 +1,86 @@
1
+ import { ProtocolContractAddress, isProtocolContract } from '@aztec/protocol-contracts';
2
+ import type { FunctionCall, FunctionSelector } from '@aztec/stdlib/abi';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { ContractInstance } from '@aztec/stdlib/contract';
5
+ import { DelayedPublicMutableValues, DelayedPublicMutableValuesWithHash } from '@aztec/stdlib/delayed-public-mutable';
6
+ import type { AztecNode } from '@aztec/stdlib/interfaces/client';
7
+ import type { BlockHeader } from '@aztec/stdlib/tx';
8
+
9
+ import type { ContractStore } from '../storage/contract_store/contract_store.js';
10
+
11
+ /**
12
+ * Read the current class id of a contract from the execution data provider or AztecNode. If not found, class id
13
+ * from the instance is used.
14
+ * @param contractAddress - The address of the contract to read the class id for.
15
+ * @param instance - The instance of the contract.
16
+ * @param aztecNode - The Aztec node to query for storage.
17
+ * @param header - The header of the block at which to load the DelayedPublicMutable storing the class id.
18
+ * @returns The current class id.
19
+ */
20
+ export async function readCurrentClassId(
21
+ contractAddress: AztecAddress,
22
+ instance: ContractInstance,
23
+ aztecNode: AztecNode,
24
+ header: BlockHeader,
25
+ ) {
26
+ const blockHash = await header.hash();
27
+ const timestamp = header.globalVariables.timestamp;
28
+ const { delayedPublicMutableSlot } = await DelayedPublicMutableValuesWithHash.getContractUpdateSlots(contractAddress);
29
+ const delayedPublicMutableValues = await DelayedPublicMutableValues.readFromTree(delayedPublicMutableSlot, slot =>
30
+ aztecNode.getPublicStorageAt(blockHash, ProtocolContractAddress.ContractInstanceRegistry, slot),
31
+ );
32
+ let currentClassId = delayedPublicMutableValues.svc.getCurrentAt(timestamp)[0];
33
+ if (currentClassId.isZero()) {
34
+ currentClassId = instance.originalContractClassId;
35
+ }
36
+ return currentClassId;
37
+ }
38
+
39
+ export async function syncScope(
40
+ contractAddress: AztecAddress,
41
+ contractStore: ContractStore,
42
+ functionToInvokeAfterSync: FunctionSelector | null,
43
+ utilityExecutor: (privateSyncCall: FunctionCall, scopes: AztecAddress[]) => Promise<any>,
44
+ scope: AztecAddress,
45
+ ) {
46
+ // Protocol contracts don't have private state to sync
47
+ if (isProtocolContract(contractAddress)) {
48
+ return;
49
+ }
50
+
51
+ const syncStateFunctionCall = await contractStore.getFunctionCall('sync_state', [scope], contractAddress);
52
+ if (functionToInvokeAfterSync && functionToInvokeAfterSync.equals(syncStateFunctionCall.selector)) {
53
+ throw new Error(
54
+ 'Forbidden `sync_state` invocation. `sync_state` can only be invoked by PXE, manual execution can lead to inconsistencies.',
55
+ );
56
+ }
57
+
58
+ await utilityExecutor(syncStateFunctionCall, [scope]);
59
+ }
60
+
61
+ /**
62
+ * Verify that the current class id of a contract obtained from AztecNode is the same as the one in contract data
63
+ * provider (i.e. PXE's own storage).
64
+ * @param contractAddress - The address of the contract to verify.
65
+ * @param aztecNode - The Aztec node to query for storage.
66
+ * @param contractStore - The contract store to fetch the local instance from.
67
+ * @param header - The header of the block at which to verify the current class id.
68
+ */
69
+ export async function verifyCurrentClassId(
70
+ contractAddress: AztecAddress,
71
+ aztecNode: AztecNode,
72
+ contractStore: ContractStore,
73
+ header: BlockHeader,
74
+ ) {
75
+ const instance = await contractStore.getContractInstance(contractAddress);
76
+ if (!instance) {
77
+ throw new Error(`No contract instance found for address ${contractAddress.toString()}`);
78
+ }
79
+
80
+ const currentClassId = await readCurrentClassId(contractAddress, instance, aztecNode, header);
81
+ if (!instance.currentContractClassId.equals(currentClassId)) {
82
+ throw new Error(
83
+ `Contract ${contractAddress} is outdated, current class id is ${currentClassId}, local class id is ${instance.currentContractClassId}`,
84
+ );
85
+ }
86
+ }
@@ -0,0 +1,85 @@
1
+ import type { FunctionCall } from '@aztec/stdlib/abi';
2
+ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { NoteDao } from '@aztec/stdlib/note';
5
+ import type { ContractOverrides } from '@aztec/stdlib/tx';
6
+
7
+ import type { BlockSynchronizer } from '../block_synchronizer/block_synchronizer.js';
8
+ import type { ContractFunctionSimulator } from '../contract_function_simulator/contract_function_simulator.js';
9
+ import type { ContractSyncService } from '../contract_sync/contract_sync_service.js';
10
+ import type { NotesFilter } from '../notes_filter.js';
11
+ import type { AnchorBlockStore } from '../storage/index.js';
12
+ import type { NoteStore } from '../storage/note_store/note_store.js';
13
+
14
+ /**
15
+ * Methods provided by this class might help debugging but must not be used in production.
16
+ * No backwards compatibility or API stability should be expected. Use at your own risk.
17
+ */
18
+ export class PXEDebugUtils {
19
+ #putJobInQueue!: <T>(job: (jobId: string) => Promise<T>) => Promise<T>;
20
+ #getSimulatorForTx!: (overrides?: { contracts?: ContractOverrides }) => ContractFunctionSimulator;
21
+ #executeUtility!: (
22
+ contractFunctionSimulator: ContractFunctionSimulator,
23
+ call: FunctionCall,
24
+ authWitnesses: AuthWitness[] | undefined,
25
+ scopes: AztecAddress[],
26
+ jobId: string,
27
+ ) => Promise<any>;
28
+
29
+ constructor(
30
+ private contractSyncService: ContractSyncService,
31
+ private noteStore: NoteStore,
32
+ private blockStateSynchronizer: BlockSynchronizer,
33
+ private anchorBlockStore: AnchorBlockStore,
34
+ ) {}
35
+
36
+ /** Not injected through constructor since they're are co-dependant */
37
+ public setPXEHelpers(
38
+ putJobInQueue: <T>(job: (jobId: string) => Promise<T>) => Promise<T>,
39
+ getSimulatorForTx: (overrides?: { contracts?: ContractOverrides }) => ContractFunctionSimulator,
40
+ executeUtility: (
41
+ contractFunctionSimulator: ContractFunctionSimulator,
42
+ call: FunctionCall,
43
+ authWitnesses: AuthWitness[] | undefined,
44
+ scopes: AztecAddress[],
45
+ jobId: string,
46
+ ) => Promise<any>,
47
+ ) {
48
+ this.#putJobInQueue = putJobInQueue;
49
+ this.#getSimulatorForTx = getSimulatorForTx;
50
+ this.#executeUtility = executeUtility;
51
+ }
52
+
53
+ /**
54
+ * A debugging utility to get notes based on the provided filter.
55
+ *
56
+ * Note that this should not be used in production code because the structure of notes is considered to be
57
+ * an implementation detail of contracts. This is only meant to be used for debugging purposes. If you need to obtain
58
+ * note-related information in production code, please implement a custom utility function on your contract and call
59
+ * that function instead (e.g. `get_balance(owner: AztecAddress) -> u128` utility function on a Token contract).
60
+ *
61
+ * @param filter - The filter to apply to the notes.
62
+ * @returns The requested notes.
63
+ */
64
+ public getNotes(filter: NotesFilter): Promise<NoteDao[]> {
65
+ return this.#putJobInQueue(async (jobId: string) => {
66
+ await this.blockStateSynchronizer.sync();
67
+
68
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
69
+
70
+ const contractFunctionSimulator = this.#getSimulatorForTx();
71
+
72
+ await this.contractSyncService.ensureContractSynced(
73
+ filter.contractAddress,
74
+ null,
75
+ async (privateSyncCall, execScopes) =>
76
+ await this.#executeUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId),
77
+ anchorBlockHeader,
78
+ jobId,
79
+ filter.scopes,
80
+ );
81
+
82
+ return this.noteStore.getNotes(filter, jobId);
83
+ });
84
+ }
85
+ }
@@ -1,7 +1,8 @@
1
+ export * from '../../../notes_filter.js';
1
2
  export * from '../../../pxe.js';
2
3
  export * from '../../../config/index.js';
3
4
  export * from '../../../error_enriching.js';
5
+ export * from '../../../contract_logging.js';
4
6
  export * from '../../../storage/index.js';
5
7
  export * from './utils.js';
6
- export { PXEOracleInterface } from '../../../contract_function_simulator/pxe_oracle_interface.js';
7
8
  export type { PXECreationOptions } from '../../pxe_creation_options.js';
@@ -1,14 +1,15 @@
1
- import { BBWASMBundlePrivateKernelProver } from '@aztec/bb-prover/client/wasm/bundle';
2
- import { randomBytes } from '@aztec/foundation/crypto';
1
+ import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
3
2
  import { createLogger } from '@aztec/foundation/log';
4
3
  import { createStore } from '@aztec/kv-store/indexeddb';
5
4
  import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
6
5
  import { WASMSimulator } from '@aztec/simulator/client';
6
+ import { getStandardMultiCallEntrypoint } from '@aztec/standard-contracts/multi-call-entrypoint';
7
7
  import type { AztecNode } from '@aztec/stdlib/interfaces/client';
8
8
 
9
9
  import type { PXEConfig } from '../../../config/index.js';
10
10
  import { PXE } from '../../../pxe.js';
11
- import type { PXECreationOptions } from '../../pxe_creation_options.js';
11
+ import { PXE_DATA_SCHEMA_VERSION } from '../../../storage/metadata.js';
12
+ import { type PXECreationOptions, isPrivateKernelProver } from '../../pxe_creation_options.js';
12
13
 
13
14
  /**
14
15
  * Create and start an PXE instance with the given AztecNode.
@@ -25,34 +26,45 @@ export async function createPXE(
25
26
  config: PXEConfig,
26
27
  options: PXECreationOptions = { loggers: {} },
27
28
  ) {
28
- const logSuffix =
29
- typeof options.useLogSuffix === 'boolean'
30
- ? options.useLogSuffix
31
- ? randomBytes(3).toString('hex')
32
- : undefined
33
- : options.useLogSuffix;
34
-
29
+ const actor = options.loggerActorLabel;
35
30
  const loggers = options.loggers ?? {};
36
31
 
37
- const l1Contracts = await aztecNode.getL1ContractAddresses();
32
+ const l1ContractAddresses = await aztecNode.getL1ContractAddresses();
38
33
  const configWithContracts = {
39
34
  ...config,
40
- l1Contracts,
35
+ ...l1ContractAddresses,
41
36
  } as PXEConfig;
42
37
 
43
- const storeLogger = loggers.store ? loggers.store : createLogger('pxe:data:idb' + (logSuffix ? `:${logSuffix}` : ''));
38
+ const storeLogger = loggers.store ?? createLogger('pxe:data:idb', { actor });
44
39
 
45
- const store = options.store ?? (await createStore('pxe_data', configWithContracts, storeLogger));
40
+ const store =
41
+ options.store ?? (await createStore('pxe_data', configWithContracts, PXE_DATA_SCHEMA_VERSION, storeLogger));
46
42
 
47
- const simulator = new WASMSimulator();
48
- const proverLogger = loggers.prover
49
- ? loggers.prover
50
- : createLogger('pxe:bb:wasm:bundle' + (logSuffix ? `:${logSuffix}` : ''));
43
+ const simulator = options.simulator ?? new WASMSimulator();
44
+ const proverLogger = loggers.prover ?? createLogger('pxe:bb:wasm:bundle', { actor });
51
45
 
52
- const prover = options.prover ?? new BBWASMBundlePrivateKernelProver(simulator, 16, proverLogger);
46
+ let prover;
47
+ if (isPrivateKernelProver(options.proverOrOptions)) {
48
+ prover = options.proverOrOptions;
49
+ } else {
50
+ prover = new BBBundlePrivateKernelProver(simulator, { ...options.proverOrOptions, logger: proverLogger });
51
+ }
53
52
  const protocolContractsProvider = new BundledProtocolContractsProvider();
53
+ const preloadedContractsProvider = options.preloadedContractsProvider ?? {
54
+ getPreloadedContracts: async () => [await getStandardMultiCallEntrypoint()],
55
+ };
54
56
 
55
- const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
56
- const pxe = await PXE.create(aztecNode, store, prover, simulator, protocolContractsProvider, config, pxeLogger);
57
+ const pxeLogger = loggers.pxe ?? createLogger('pxe:service', { actor });
58
+ const pxe = await PXE.create({
59
+ node: aztecNode,
60
+ store,
61
+ proofCreator: prover,
62
+ simulator,
63
+ protocolContractsProvider,
64
+ preloadedContractsProvider,
65
+ config,
66
+ loggerOrSuffix: pxeLogger,
67
+ hooks: options.hooks,
68
+ });
57
69
  return pxe;
58
70
  }