@aztec/pxe 0.0.1-commit.993d240 → 0.0.1-commit.9a89641

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 (451) hide show
  1. package/dest/bin/check_oracle_version.d.ts +2 -12
  2. package/dest/bin/check_oracle_version.d.ts.map +1 -1
  3. package/dest/bin/check_oracle_version.js +9 -122
  4. package/dest/bin/index.d.ts +2 -2
  5. package/dest/bin/index.d.ts.map +1 -1
  6. package/dest/bin/index.js +1 -1
  7. package/dest/bin/oracle_version_helpers.d.ts +20 -0
  8. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  9. package/dest/bin/oracle_version_helpers.js +25 -0
  10. package/dest/block_synchronizer/block_stream_source.d.ts +5 -5
  11. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -1
  12. package/dest/block_synchronizer/block_stream_source.js +4 -29
  13. package/dest/block_synchronizer/block_synchronizer.d.ts +17 -15
  14. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  15. package/dest/block_synchronizer/block_synchronizer.js +41 -18
  16. package/dest/config/index.d.ts +2 -1
  17. package/dest/config/index.d.ts.map +1 -1
  18. package/dest/config/index.js +1 -0
  19. package/dest/config/package_info.js +1 -1
  20. package/dest/contract/contract_class_service.d.ts +24 -0
  21. package/dest/contract/contract_class_service.d.ts.map +1 -0
  22. package/dest/contract/contract_class_service.js +36 -0
  23. package/dest/contract/contract_sync_service.d.ts +48 -0
  24. package/dest/contract/contract_sync_service.d.ts.map +1 -0
  25. package/dest/{contract_sync → contract}/contract_sync_service.js +26 -45
  26. package/dest/contract/helpers.d.ts +7 -0
  27. package/dest/contract/helpers.d.ts.map +1 -0
  28. package/dest/contract/helpers.js +20 -0
  29. package/dest/contract/skip_sync_contracts.d.ts +11 -0
  30. package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
  31. package/dest/contract/skip_sync_contracts.js +18 -0
  32. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  33. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  34. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  35. package/dest/contract_function_simulator/contract_function_simulator.d.ts +19 -25
  36. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/contract_function_simulator.js +63 -49
  38. package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
  39. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  41. package/dest/contract_function_simulator/index.d.ts +24 -6
  42. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/index.js +9 -4
  44. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +8 -27
  45. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +8 -23
  47. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  48. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  49. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  50. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  51. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  52. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  53. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  54. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  55. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  56. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -2
  57. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  58. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +2 -2
  59. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  60. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  61. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  62. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  63. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  64. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  65. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +11 -12
  66. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  67. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +6 -49
  68. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +10 -8
  69. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  70. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -60
  71. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  72. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  73. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  74. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -2
  75. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  76. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +3 -3
  77. package/dest/contract_function_simulator/noir-structs/option.d.ts +9 -11
  78. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -1
  79. package/dest/contract_function_simulator/noir-structs/option.js +18 -13
  80. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  81. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  82. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  83. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  84. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  85. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  86. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  87. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  88. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  89. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  90. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  91. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  92. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
  93. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  94. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
  95. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
  96. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  97. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  98. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  99. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  100. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  101. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  102. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  103. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  104. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  105. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  106. package/dest/contract_function_simulator/oracle/index.js +1 -1
  107. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -114
  108. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  109. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  110. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  111. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  112. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  113. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  114. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  115. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  116. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +92 -100
  117. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -1
  118. package/dest/contract_function_simulator/oracle/oracle_registry.js +296 -479
  119. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +274 -0
  120. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  121. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1253 -0
  122. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  123. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  124. package/dest/contract_function_simulator/oracle/private_execution.js +2 -3
  125. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +32 -21
  126. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  127. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +152 -49
  128. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +97 -37
  129. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  130. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +376 -138
  131. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  132. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  133. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  134. package/dest/debug/pxe_debug_utils.d.ts +2 -2
  135. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  136. package/dest/entrypoints/client/bundle/index.d.ts +2 -1
  137. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  138. package/dest/entrypoints/client/bundle/index.js +1 -0
  139. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  140. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  141. package/dest/entrypoints/client/bundle/utils.js +17 -6
  142. package/dest/entrypoints/client/lazy/index.d.ts +2 -1
  143. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  144. package/dest/entrypoints/client/lazy/index.js +1 -0
  145. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  146. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  147. package/dest/entrypoints/client/lazy/utils.js +17 -6
  148. package/dest/entrypoints/client/store.d.ts +14 -0
  149. package/dest/entrypoints/client/store.d.ts.map +1 -0
  150. package/dest/entrypoints/client/store.js +42 -0
  151. package/dest/entrypoints/pxe_creation_options.d.ts +9 -3
  152. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  153. package/dest/entrypoints/server/index.d.ts +6 -3
  154. package/dest/entrypoints/server/index.d.ts.map +1 -1
  155. package/dest/entrypoints/server/index.js +4 -2
  156. package/dest/entrypoints/server/store.d.ts +18 -0
  157. package/dest/entrypoints/server/store.d.ts.map +1 -0
  158. package/dest/entrypoints/server/store.js +28 -0
  159. package/dest/entrypoints/server/utils.d.ts +1 -1
  160. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  161. package/dest/entrypoints/server/utils.js +16 -4
  162. package/dest/error_enriching.d.ts +5 -3
  163. package/dest/error_enriching.d.ts.map +1 -1
  164. package/dest/error_enriching.js +13 -11
  165. package/dest/events/event_service.d.ts +13 -6
  166. package/dest/events/event_service.d.ts.map +1 -1
  167. package/dest/events/event_service.js +13 -13
  168. package/dest/hooks/execution_hooks.d.ts +31 -11
  169. package/dest/hooks/execution_hooks.d.ts.map +1 -1
  170. package/dest/hooks/execution_hooks.js +3 -3
  171. package/dest/hooks/index.d.ts +4 -3
  172. package/dest/hooks/index.d.ts.map +1 -1
  173. package/dest/hooks/index.js +1 -0
  174. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  175. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  176. package/dest/hooks/resolve_custom_request.js +3 -0
  177. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  178. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  179. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  180. package/dest/logs/log_service.d.ts +18 -8
  181. package/dest/logs/log_service.d.ts.map +1 -1
  182. package/dest/logs/log_service.js +93 -45
  183. package/dest/messages/tx_resolver_service.d.ts +28 -0
  184. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  185. package/dest/messages/tx_resolver_service.js +61 -0
  186. package/dest/node/benchmarked_node.d.ts +20 -0
  187. package/dest/node/benchmarked_node.d.ts.map +1 -0
  188. package/dest/node/benchmarked_node.js +94 -0
  189. package/dest/node/caching_aztec_node.d.ts +24 -0
  190. package/dest/node/caching_aztec_node.d.ts.map +1 -0
  191. package/dest/node/caching_aztec_node.js +267 -0
  192. package/dest/notes/note_service.d.ts +13 -7
  193. package/dest/notes/note_service.d.ts.map +1 -1
  194. package/dest/notes/note_service.js +10 -10
  195. package/dest/oracle_version.d.ts +3 -3
  196. package/dest/oracle_version.js +8 -8
  197. package/dest/private_kernel/batch_planner.d.ts +1 -1
  198. package/dest/private_kernel/batch_planner.d.ts.map +1 -1
  199. package/dest/private_kernel/batch_planner.js +1 -1
  200. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
  201. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  202. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +6 -2
  203. package/dest/private_kernel/hints/test_utils.js +1 -1
  204. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  205. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  206. package/dest/private_kernel/private_kernel_execution_prover.js +61 -40
  207. package/dest/private_kernel/private_kernel_oracle.d.ts +4 -2
  208. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  209. package/dest/private_kernel/private_kernel_oracle.js +17 -5
  210. package/dest/pxe.d.ts +114 -48
  211. package/dest/pxe.d.ts.map +1 -1
  212. package/dest/pxe.js +251 -148
  213. package/dest/storage/allowed_scopes.d.ts +6 -0
  214. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  215. package/dest/storage/allowed_scopes.js +7 -0
  216. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
  217. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  218. package/dest/storage/anchor_block_store/anchor_block_store.js +8 -6
  219. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +1 -1
  220. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -1
  221. package/dest/storage/backwards_compatibility_tests/schema_tests.js +129 -49
  222. package/dest/storage/capsule_store/capsule_service.d.ts +1 -1
  223. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -1
  224. package/dest/storage/capsule_store/capsule_service.js +6 -9
  225. package/dest/storage/contract_store/contract_store.d.ts +27 -24
  226. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  227. package/dest/storage/contract_store/contract_store.js +66 -77
  228. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  229. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  230. package/dest/storage/fact_store/fact_service.js +45 -0
  231. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  232. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  233. package/dest/storage/fact_store/fact_store.js +408 -0
  234. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  235. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  236. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  237. package/dest/storage/fact_store/index.d.ts +6 -0
  238. package/dest/storage/fact_store/index.d.ts.map +1 -0
  239. package/dest/storage/fact_store/index.js +4 -0
  240. package/dest/storage/fact_store/origin_state.d.ts +59 -0
  241. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  242. package/dest/storage/fact_store/origin_state.js +60 -0
  243. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  244. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  245. package/dest/storage/fact_store/stored_fact.js +64 -0
  246. package/dest/storage/index.d.ts +3 -2
  247. package/dest/storage/index.d.ts.map +1 -1
  248. package/dest/storage/index.js +2 -1
  249. package/dest/storage/metadata.d.ts +2 -2
  250. package/dest/storage/metadata.d.ts.map +1 -1
  251. package/dest/storage/metadata.js +1 -1
  252. package/dest/storage/note_store/note_store.d.ts +42 -33
  253. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  254. package/dest/storage/note_store/note_store.js +197 -168
  255. package/dest/storage/note_store/stored_note.d.ts +3 -8
  256. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  257. package/dest/storage/note_store/stored_note.js +4 -20
  258. package/dest/storage/open_pxe_stores.d.ts +5 -3
  259. package/dest/storage/open_pxe_stores.d.ts.map +1 -1
  260. package/dest/storage/open_pxe_stores.js +5 -3
  261. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  262. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  263. package/dest/storage/private_event_store/private_event_store.js +40 -43
  264. package/dest/storage/store_identity.d.ts +35 -0
  265. package/dest/storage/store_identity.d.ts.map +1 -0
  266. package/dest/storage/store_identity.js +44 -0
  267. package/dest/storage/tagging_store/index.d.ts +2 -2
  268. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  269. package/dest/storage/tagging_store/index.js +1 -1
  270. package/dest/storage/tagging_store/sender_tagging_store.d.ts +41 -10
  271. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  272. package/dest/storage/tagging_store/sender_tagging_store.js +81 -29
  273. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  274. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  275. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  276. package/dest/tagging/constants.d.ts +11 -2
  277. package/dest/tagging/constants.d.ts.map +1 -1
  278. package/dest/tagging/constants.js +38 -10
  279. package/dest/tagging/get_all_logs_by_tags.d.ts +29 -8
  280. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  281. package/dest/tagging/get_all_logs_by_tags.js +29 -10
  282. package/dest/tagging/index.d.ts +3 -3
  283. package/dest/tagging/index.d.ts.map +1 -1
  284. package/dest/tagging/index.js +2 -2
  285. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +27 -9
  286. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -1
  287. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +104 -33
  288. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +6 -3
  289. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  290. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +23 -36
  291. package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts +22 -0
  292. package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts.map +1 -0
  293. package/dest/tagging/sender_sync/utils/classify_pending_txs.js +61 -0
  294. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +15 -5
  295. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  296. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +36 -35
  297. package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts +29 -0
  298. package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts.map +1 -0
  299. package/dest/tagging/sender_sync/utils/resolve_pending_txs.js +41 -0
  300. package/dest/tagging/sender_sync/utils/test_utils.d.ts +16 -0
  301. package/dest/tagging/sender_sync/utils/test_utils.d.ts.map +1 -0
  302. package/dest/tagging/sender_sync/utils/test_utils.js +24 -0
  303. package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
  304. package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
  305. package/dest/tagging/testing/tag_query_test_utils.js +10 -0
  306. package/package.json +17 -17
  307. package/src/bin/check_oracle_version.ts +8 -151
  308. package/src/bin/index.ts +1 -1
  309. package/src/bin/oracle_version_helpers.ts +30 -0
  310. package/src/block_synchronizer/block_stream_source.ts +6 -45
  311. package/src/block_synchronizer/block_synchronizer.ts +54 -30
  312. package/src/config/index.ts +1 -0
  313. package/src/config/package_info.ts +1 -1
  314. package/src/contract/contract_class_service.ts +45 -0
  315. package/src/{contract_sync → contract}/contract_sync_service.ts +37 -50
  316. package/src/contract/helpers.ts +35 -0
  317. package/src/contract/skip_sync_contracts.ts +23 -0
  318. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  319. package/src/contract_function_simulator/contract_function_simulator.ts +96 -59
  320. package/src/contract_function_simulator/execution_note_cache.ts +8 -29
  321. package/src/contract_function_simulator/index.ts +87 -5
  322. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +12 -24
  323. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  324. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  325. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  326. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +3 -3
  327. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  328. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  329. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +20 -46
  330. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +13 -60
  331. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  332. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -4
  333. package/src/contract_function_simulator/noir-structs/option.ts +17 -11
  334. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  335. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  336. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  337. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  338. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
  339. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
  340. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  341. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  342. package/src/contract_function_simulator/oracle/index.ts +1 -15
  343. package/src/contract_function_simulator/oracle/interfaces.ts +11 -189
  344. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  345. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  346. package/src/contract_function_simulator/oracle/oracle_registry.ts +289 -483
  347. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1067 -0
  348. package/src/contract_function_simulator/oracle/private_execution.ts +2 -3
  349. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +190 -61
  350. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +556 -174
  351. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  352. package/src/debug/pxe_debug_utils.ts +1 -1
  353. package/src/entrypoints/client/bundle/index.ts +1 -0
  354. package/src/entrypoints/client/bundle/utils.ts +24 -5
  355. package/src/entrypoints/client/lazy/index.ts +1 -0
  356. package/src/entrypoints/client/lazy/utils.ts +24 -5
  357. package/src/entrypoints/client/store.ts +54 -0
  358. package/src/entrypoints/pxe_creation_options.ts +8 -2
  359. package/src/entrypoints/server/index.ts +6 -2
  360. package/src/entrypoints/server/store.ts +47 -0
  361. package/src/entrypoints/server/utils.ts +31 -9
  362. package/src/error_enriching.ts +27 -11
  363. package/src/events/event_service.ts +24 -14
  364. package/src/hooks/execution_hooks.ts +32 -12
  365. package/src/hooks/index.ts +8 -2
  366. package/src/hooks/resolve_custom_request.ts +24 -0
  367. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  368. package/src/logs/log_service.ts +122 -61
  369. package/src/messages/tx_resolver_service.ts +80 -0
  370. package/src/node/benchmarked_node.ts +140 -0
  371. package/src/node/caching_aztec_node.ts +406 -0
  372. package/src/notes/note_service.ts +20 -14
  373. package/src/oracle_version.ts +8 -8
  374. package/src/private_kernel/batch_planner.ts +0 -1
  375. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +11 -1
  376. package/src/private_kernel/hints/test_utils.ts +1 -1
  377. package/src/private_kernel/private_kernel_execution_prover.ts +112 -56
  378. package/src/private_kernel/private_kernel_oracle.ts +23 -4
  379. package/src/pxe.ts +357 -172
  380. package/src/storage/allowed_scopes.ts +14 -0
  381. package/src/storage/anchor_block_store/anchor_block_store.ts +8 -6
  382. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +6 -6
  383. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +1 -1
  384. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  385. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +12 -12
  386. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +9 -15
  387. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +24 -4
  388. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +11 -3
  389. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +12 -4
  390. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  391. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +29 -9
  392. package/src/storage/backwards_compatibility_tests/schema_tests.ts +141 -50
  393. package/src/storage/capsule_store/capsule_service.ts +8 -13
  394. package/src/storage/contract_store/contract_store.ts +88 -94
  395. package/src/storage/fact_store/fact_service.ts +69 -0
  396. package/src/storage/fact_store/fact_store.ts +487 -0
  397. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  398. package/src/storage/fact_store/index.ts +15 -0
  399. package/src/storage/fact_store/origin_state.ts +84 -0
  400. package/src/storage/fact_store/stored_fact.ts +80 -0
  401. package/src/storage/index.ts +2 -1
  402. package/src/storage/metadata.ts +1 -1
  403. package/src/storage/note_store/note_store.ts +226 -187
  404. package/src/storage/note_store/stored_note.ts +5 -27
  405. package/src/storage/open_pxe_stores.ts +6 -3
  406. package/src/storage/private_event_store/private_event_store.ts +49 -55
  407. package/src/storage/store_identity.ts +72 -0
  408. package/src/storage/tagging_store/index.ts +1 -1
  409. package/src/storage/tagging_store/sender_tagging_store.ts +113 -41
  410. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  411. package/src/tagging/constants.ts +42 -10
  412. package/src/tagging/get_all_logs_by_tags.ts +47 -11
  413. package/src/tagging/index.ts +7 -2
  414. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +161 -46
  415. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +27 -57
  416. package/src/tagging/sender_sync/utils/classify_pending_txs.ts +91 -0
  417. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +46 -40
  418. package/src/tagging/sender_sync/utils/resolve_pending_txs.ts +64 -0
  419. package/src/tagging/sender_sync/utils/test_utils.ts +46 -0
  420. package/src/tagging/testing/tag_query_test_utils.ts +11 -0
  421. package/dest/contract_function_simulator/benchmarked_node.d.ts +0 -9
  422. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +0 -1
  423. package/dest/contract_function_simulator/benchmarked_node.js +0 -77
  424. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -89
  425. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  426. package/dest/contract_function_simulator/oracle/oracle.js +0 -552
  427. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  428. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  429. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -51
  430. package/dest/contract_sync/contract_sync_service.d.ts +0 -42
  431. package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
  432. package/dest/contract_sync/helpers.d.ts +0 -27
  433. package/dest/contract_sync/helpers.d.ts.map +0 -1
  434. package/dest/contract_sync/helpers.js +0 -53
  435. package/dest/messages/message_context_service.d.ts +0 -17
  436. package/dest/messages/message_context_service.d.ts.map +0 -1
  437. package/dest/messages/message_context_service.js +0 -38
  438. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  439. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  440. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  441. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +0 -17
  442. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +0 -1
  443. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +0 -60
  444. package/src/contract_function_simulator/benchmarked_node.ts +0 -103
  445. package/src/contract_function_simulator/oracle/oracle.ts +0 -711
  446. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -60
  447. package/src/contract_sync/helpers.ts +0 -86
  448. package/src/messages/message_context_service.ts +0 -45
  449. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +0 -16
  450. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
  451. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +0 -66
@@ -0,0 +1,29 @@
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import type { AztecNode } from '@aztec/stdlib/interfaces/server';
3
+ import { type MinedTxReceipt, type TxHash } from '@aztec/stdlib/tx';
4
+ import type { PendingTx } from '../../../storage/tagging_store/sender_tagging_store.js';
5
+ import type { TxInLogs } from './load_and_store_new_tagging_indexes.js';
6
+ /** What a window's node reads established about each of its pending txs. */
7
+ export type ResolvedPendingTxs = {
8
+ txHashesFinalizedFromLogs: TxHash[];
9
+ txHashesFinalizedFromReceipts: TxHash[];
10
+ txHashesDropped: TxHash[];
11
+ /** Both sources land here: the logs when a surviving tag fell inside the window, a receipt otherwise. */
12
+ receiptsWithExecutionReverted: MinedTxReceipt<{
13
+ includeTxEffect: true;
14
+ }>[];
15
+ };
16
+ /**
17
+ * Resolves a window's pending txs. All of the window's node reads happen here.
18
+ *
19
+ * The logs it is handed settle most txs on their own, as {@link classifyPendingTxsFromLogs} explains. Two groups are
20
+ * left over, and share one further round trip:
21
+ *
22
+ * - txs absent from the logs, whose receipt is what tells whether they are still in the mempool, dropped, or reverted;
23
+ * - txs the logs show as reverted, which only their tx effect resolves.
24
+ *
25
+ * A third round trip is paid only when those receipts reveal a reverted tx, since its effect cannot be requested
26
+ * before its status says it reverted.
27
+ */
28
+ export declare function resolvePendingTxs(pendingTxs: PendingTx[], txsInLogs: Map<string, TxInLogs>, finalizedBlockNumber: BlockNumber, aztecNode: AztecNode): Promise<ResolvedPendingTxs>;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZV9wZW5kaW5nX3R4cy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RhZ2dpbmcvc2VuZGVyX3N5bmMvdXRpbHMvcmVzb2x2ZV9wZW5kaW5nX3R4cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSyxNQUFNLEVBQTRCLE1BQU0sa0JBQWtCLENBQUM7QUFFOUYsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFFeEYsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFeEUsNEVBQTRFO0FBQzVFLE1BQU0sTUFBTSxrQkFBa0IsR0FBRztJQUMvQix5QkFBeUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNwQyw2QkFBNkIsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN4QyxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDMUIseUdBQXlHO0lBQ3pHLDZCQUE2QixFQUFFLGNBQWMsQ0FBQztRQUFFLGVBQWUsRUFBRSxJQUFJLENBQUE7S0FBRSxDQUFDLEVBQUUsQ0FBQztDQUM1RSxDQUFDO0FBRUY7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCx3QkFBc0IsaUJBQWlCLENBQ3JDLFVBQVUsRUFBRSxTQUFTLEVBQUUsRUFDdkIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQ2hDLG9CQUFvQixFQUFFLFdBQVcsRUFDakMsU0FBUyxFQUFFLFNBQVMsR0FDbkIsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBbUI3QiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve_pending_txs.d.ts","sourceRoot":"","sources":["../../../../src/tagging/sender_sync/utils/resolve_pending_txs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,MAAM,EAA4B,MAAM,kBAAkB,CAAC;AAE9F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wDAAwD,CAAC;AAExF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAExE,4EAA4E;AAC5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC,6BAA6B,EAAE,MAAM,EAAE,CAAC;IACxC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,yGAAyG;IACzG,6BAA6B,EAAE,cAAc,CAAC;QAAE,eAAe,EAAE,IAAI,CAAA;KAAE,CAAC,EAAE,CAAC;CAC5E,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,SAAS,EAAE,EACvB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAChC,oBAAoB,EAAE,WAAW,EACjC,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAmB7B"}
@@ -0,0 +1,41 @@
1
+ import { TxStatus } from '@aztec/stdlib/tx';
2
+ import { classifyPendingTxsFromLogs, classifyPendingTxsFromReceipts } from './classify_pending_txs.js';
3
+ /**
4
+ * Resolves a window's pending txs. All of the window's node reads happen here.
5
+ *
6
+ * The logs it is handed settle most txs on their own, as {@link classifyPendingTxsFromLogs} explains. Two groups are
7
+ * left over, and share one further round trip:
8
+ *
9
+ * - txs absent from the logs, whose receipt is what tells whether they are still in the mempool, dropped, or reverted;
10
+ * - txs the logs show as reverted, which only their tx effect resolves.
11
+ *
12
+ * A third round trip is paid only when those receipts reveal a reverted tx, since its effect cannot be requested
13
+ * before its status says it reverted.
14
+ */ export async function resolvePendingTxs(pendingTxs, txsInLogs, finalizedBlockNumber, aztecNode) {
15
+ const statusFromLogs = classifyPendingTxsFromLogs(pendingTxs, txsInLogs, finalizedBlockNumber);
16
+ const [statusOfAbsent, receiptsOfRevertedInLogs] = await Promise.all([
17
+ classifyPendingTxsFromReceipts(statusFromLogs.txHashesAbsent, aztecNode),
18
+ getReceiptsWithEffect(statusFromLogs.txHashesWithExecutionReverted, aztecNode)
19
+ ]);
20
+ const receiptsOfRevertedAbsent = await getReceiptsWithEffect(statusOfAbsent.txHashesWithExecutionReverted, aztecNode);
21
+ return {
22
+ txHashesFinalizedFromLogs: statusFromLogs.txHashesFinalized,
23
+ txHashesFinalizedFromReceipts: statusOfAbsent.txHashesFinalized,
24
+ txHashesDropped: statusOfAbsent.txHashesDropped,
25
+ // Both groups were judged finalized before this fetch, the first off our own tip and the second off an earlier
26
+ // receipt, so both are confirmed against what the node says now. Finalizing off a reorgeable block would burn
27
+ // the indexes.
28
+ receiptsWithExecutionReverted: [
29
+ ...receiptsOfRevertedInLogs,
30
+ ...receiptsOfRevertedAbsent
31
+ ].filter(isFinalized)
32
+ };
33
+ }
34
+ function getReceiptsWithEffect(txHashes, aztecNode) {
35
+ return Promise.all(txHashes.map((txHash)=>aztecNode.getTxReceipt(txHash, {
36
+ includeTxEffect: true
37
+ })));
38
+ }
39
+ function isFinalized(receipt) {
40
+ return receipt.status === TxStatus.FINALIZED;
41
+ }
@@ -0,0 +1,16 @@
1
+ import type { MinedTxStatus, TxEffect, TxHash } from '@aztec/stdlib/tx';
2
+ import { MinedTxReceipt, TxExecutionResult } from '@aztec/stdlib/tx';
3
+ import type { PendingTx } from '../../../storage/tagging_store/sender_tagging_store.js';
4
+ import type { TxInLogs } from './load_and_store_new_tagging_indexes.js';
5
+ /** A tx the store holds as pending, tracked up to the given index. */
6
+ export declare function pendingTx(txHash: TxHash, highestIndex: number): PendingTx;
7
+ /** One tx as a window's logs show it: the block it was mined in and the tagging indexes its logs carried. */
8
+ export declare function minedIn(blockNumber: number, taggingIndexes: number[]): TxInLogs;
9
+ /** Builds the tx-hash-keyed map a window's logs would produce. */
10
+ export declare function txsInLogs(...entries: [TxHash, TxInLogs][]): Map<string, TxInLogs>;
11
+ /** The receipt of a mined tx, successful and without a tx effect unless stated otherwise. */
12
+ export declare function minedReceipt(txHash: TxHash, status: MinedTxStatus, blockNumber: number, { executionResult, txEffect }?: {
13
+ executionResult?: TxExecutionResult;
14
+ txEffect?: TxEffect;
15
+ }): MinedTxReceipt;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF91dGlscy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RhZ2dpbmcvc2VuZGVyX3N5bmMvdXRpbHMvdGVzdF91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN4RixPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUV4RSxzRUFBc0U7QUFDdEUsd0JBQWdCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUV6RTtBQUVELDZHQUE2RztBQUM3Ryx3QkFBZ0IsT0FBTyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FFL0U7QUFFRCxrRUFBa0U7QUFDbEUsd0JBQWdCLFNBQVMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBRWpGO0FBRUQsNkZBQTZGO0FBQzdGLHdCQUFnQixZQUFZLENBQzFCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsTUFBTSxFQUFFLGFBQWEsRUFDckIsV0FBVyxFQUFFLE1BQU0sRUFDbkIsRUFDRSxlQUEyQyxFQUMzQyxRQUFRLEVBQ1QsR0FBRTtJQUFFLGVBQWUsQ0FBQyxFQUFFLGlCQUFpQixDQUFDO0lBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFBO0NBQU8sR0FDbkUsY0FBYyxDQWFoQiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../../../src/tagging/sender_sync/utils/test_utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wDAAwD,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAExE,sEAAsE;AACtE,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,CAEzE;AAED,6GAA6G;AAC7G,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,QAAQ,CAE/E;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,GAAG,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAEjF;AAED,6FAA6F;AAC7F,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,EACE,eAA2C,EAC3C,QAAQ,EACT,GAAE;IAAE,eAAe,CAAC,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAO,GACnE,cAAc,CAahB"}
@@ -0,0 +1,24 @@
1
+ import { BlockNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
+ import { BlockHash } from '@aztec/stdlib/block';
3
+ import { MinedTxReceipt, TxExecutionResult } from '@aztec/stdlib/tx';
4
+ /** A tx the store holds as pending, tracked up to the given index. */ export function pendingTx(txHash, highestIndex) {
5
+ return {
6
+ txHash: txHash.toString(),
7
+ highestIndex
8
+ };
9
+ }
10
+ /** One tx as a window's logs show it: the block it was mined in and the tagging indexes its logs carried. */ export function minedIn(blockNumber, taggingIndexes) {
11
+ return {
12
+ blockNumber: BlockNumber(blockNumber),
13
+ taggingIndexes
14
+ };
15
+ }
16
+ /** Builds the tx-hash-keyed map a window's logs would produce. */ export function txsInLogs(...entries) {
17
+ return new Map(entries.map(([txHash, txInLogs])=>[
18
+ txHash.toString(),
19
+ txInLogs
20
+ ]));
21
+ }
22
+ /** The receipt of a mined tx, successful and without a tx effect unless stated otherwise. */ export function minedReceipt(txHash, status, blockNumber, { executionResult = TxExecutionResult.SUCCESS, txEffect } = {}) {
23
+ return new MinedTxReceipt(txHash, status, executionResult, 1n, BlockHash.random(), BlockNumber(blockNumber), SlotNumber(Number(blockNumber)), 0, EpochNumber(1), txEffect);
24
+ }
@@ -0,0 +1,6 @@
1
+ import { type AppTaggingSecret, type PrivateLogsQuery, SiloedTag } from '@aztec/stdlib/logs';
2
+ /** Computes the siloed tag */
3
+ export declare function computeSiloedTagForIndex(secret: AppTaggingSecret, index: number): Promise<SiloedTag>;
4
+ /** Extracts the bare-tag set from a query */
5
+ export declare function extractTags(query: PrivateLogsQuery): SiloedTag[];
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnX3F1ZXJ5X3Rlc3RfdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90YWdnaW5nL3Rlc3RpbmcvdGFnX3F1ZXJ5X3Rlc3RfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsS0FBSyxnQkFBZ0IsRUFBRSxTQUFTLEVBQWlCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUcsOEJBQThCO0FBQzlCLHdCQUFnQix3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBRXBHO0FBRUQsNkNBQTZDO0FBQzdDLHdCQUFnQixXQUFXLENBQUMsS0FBSyxFQUFFLGdCQUFnQixHQUFHLFNBQVMsRUFBRSxDQUVoRSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag_query_test_utils.d.ts","sourceRoot":"","sources":["../../../src/tagging/testing/tag_query_test_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAiB,MAAM,oBAAoB,CAAC;AAE5G,8BAA8B;AAC9B,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAEpG;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,EAAE,CAEhE"}
@@ -0,0 +1,10 @@
1
+ import { SiloedTag } from '@aztec/stdlib/logs';
2
+ /** Computes the siloed tag */ export function computeSiloedTagForIndex(secret, index) {
3
+ return SiloedTag.compute({
4
+ extendedSecret: secret,
5
+ index
6
+ });
7
+ }
8
+ /** Extracts the bare-tag set from a query */ export function extractTags(query) {
9
+ return query.tags.map((entry)=>entry instanceof SiloedTag ? entry : entry.tag);
10
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/pxe",
3
- "version": "0.0.1-commit.993d240",
3
+ "version": "0.0.1-commit.9a89641",
4
4
  "type": "module",
5
5
  "typedocOptions": {
6
6
  "entryPoints": [
@@ -71,20 +71,20 @@
71
71
  ]
72
72
  },
73
73
  "dependencies": {
74
- "@aztec/bb-prover": "0.0.1-commit.993d240",
75
- "@aztec/bb.js": "0.0.1-commit.993d240",
76
- "@aztec/builder": "0.0.1-commit.993d240",
77
- "@aztec/constants": "0.0.1-commit.993d240",
78
- "@aztec/ethereum": "0.0.1-commit.993d240",
79
- "@aztec/foundation": "0.0.1-commit.993d240",
80
- "@aztec/key-store": "0.0.1-commit.993d240",
81
- "@aztec/kv-store": "0.0.1-commit.993d240",
82
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.993d240",
83
- "@aztec/noir-types": "0.0.1-commit.993d240",
84
- "@aztec/protocol-contracts": "0.0.1-commit.993d240",
85
- "@aztec/simulator": "0.0.1-commit.993d240",
86
- "@aztec/standard-contracts": "0.0.1-commit.993d240",
87
- "@aztec/stdlib": "0.0.1-commit.993d240",
74
+ "@aztec/bb-prover": "0.0.1-commit.9a89641",
75
+ "@aztec/bb.js": "6.0.0-nightly.20260807",
76
+ "@aztec/builder": "0.0.1-commit.9a89641",
77
+ "@aztec/constants": "0.0.1-commit.9a89641",
78
+ "@aztec/ethereum": "0.0.1-commit.9a89641",
79
+ "@aztec/foundation": "0.0.1-commit.9a89641",
80
+ "@aztec/key-store": "0.0.1-commit.9a89641",
81
+ "@aztec/kv-store": "0.0.1-commit.9a89641",
82
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.9a89641",
83
+ "@aztec/noir-types": "6.0.0-nightly.20260807",
84
+ "@aztec/protocol-contracts": "0.0.1-commit.9a89641",
85
+ "@aztec/simulator": "0.0.1-commit.9a89641",
86
+ "@aztec/standard-contracts": "0.0.1-commit.9a89641",
87
+ "@aztec/stdlib": "0.0.1-commit.9a89641",
88
88
  "koa": "^2.16.1",
89
89
  "koa-router": "^13.1.1",
90
90
  "lodash.omit": "^4.5.0",
@@ -93,8 +93,8 @@
93
93
  "viem": "npm:@aztec/viem@2.38.2"
94
94
  },
95
95
  "devDependencies": {
96
- "@aztec/noir-test-contracts.js": "0.0.1-commit.993d240",
97
- "@aztec/world-state": "0.0.1-commit.993d240",
96
+ "@aztec/noir-test-contracts.js": "0.0.1-commit.9a89641",
97
+ "@aztec/world-state": "0.0.1-commit.9a89641",
98
98
  "@jest/globals": "^30.0.0",
99
99
  "@types/jest": "^30.0.0",
100
100
  "@types/lodash.omit": "^4.5.7",
@@ -1,44 +1,23 @@
1
- /* eslint-disable import-x/no-named-as-default-member */
2
1
  import { keccak256String } from '@aztec/foundation/crypto/keccak';
3
2
 
4
- import { readFileSync } from 'fs';
5
- import { dirname, join } from 'path';
6
- import ts from 'typescript';
7
- import { fileURLToPath } from 'url';
8
-
3
+ import { ORACLE_REGISTRY } from '../contract_function_simulator/index.js';
9
4
  import { ORACLE_INTERFACE_HASH } from '../oracle_version.js';
5
+ import { getOracleRegistrySignature } from './oracle_version_helpers.js';
10
6
 
11
7
  /**
12
8
  * Verifies that the Oracle interface matches the expected interface hash.
13
9
  *
14
10
  * The Oracle interface needs to be versioned to ensure compatibility between Aztec.nr and PXE. This function computes
15
- * a hash of the Oracle interface and compares it against a known hash. If they don't match, it means the interface has
16
- * changed and the oracle version needs to be bumped:
17
- * - If the change is backward-breaking (e.g. removing/renaming an oracle), bump ORACLE_VERSION_MAJOR.
11
+ * a hash of `ORACLE_REGISTRY` (where each oracle's parameter names, parameter types, and return type
12
+ * live) and compares it against a known hash. If they don't match, it means the interface has changed and the oracle
13
+ * version needs to be bumped:
14
+ * - If the change is backward-breaking (e.g. removing/renaming an oracle, or changing its params/return), bump
15
+ * ORACLE_VERSION_MAJOR.
18
16
  * - If the change is an oracle addition (non-breaking), bump ORACLE_VERSION_MINOR.
19
17
  */
20
18
  function assertOracleInterfaceMatches(): void {
21
- const excludedProps = [
22
- 'handler',
23
- 'constructor',
24
- 'toACIRCallback',
25
- 'handlerAsMisc',
26
- 'handlerAsUtility',
27
- 'handlerAsPrivate',
28
- ];
29
-
30
- // Get the path to Oracle.ts source file
31
- // The script runs from dest/bin/ after compilation, so we need to go up to the package root
32
- // then into src/ to find the source file
33
- const currentDir = dirname(fileURLToPath(import.meta.url));
34
- // Go up from dest/bin/ or src/bin/ to the package root (pxe/), then into src/
35
- const packageRoot = dirname(dirname(currentDir)); // Go up from bin/ to pxe/
36
- const oracleSourcePath = join(packageRoot, 'src/contract_function_simulator/oracle/oracle.ts');
37
-
38
- const oracleInterfaceSignature = getOracleInterfaceSignature(oracleSourcePath, ['Oracle'], excludedProps);
39
-
40
19
  // We use keccak256 here just because we already have it in the dependencies.
41
- const oracleInterfaceHash = keccak256String(oracleInterfaceSignature);
20
+ const oracleInterfaceHash = keccak256String(getOracleRegistrySignature(ORACLE_REGISTRY));
42
21
  if (oracleInterfaceHash !== ORACLE_INTERFACE_HASH) {
43
22
  throw new Error(
44
23
  `The Oracle interface has changed. Update ORACLE_INTERFACE_HASH to ${oracleInterfaceHash} in pxe/src/oracle_version.ts and bump the oracle version (ORACLE_VERSION_MAJOR for breaking changes, ORACLE_VERSION_MINOR for oracle additions).`,
@@ -46,126 +25,4 @@ function assertOracleInterfaceMatches(): void {
46
25
  }
47
26
  }
48
27
 
49
- /**
50
- * Extracts method signatures from TypeScript classes or interfaces and returns a deterministic string representation.
51
- *
52
- * This is used to detect when an oracle interface changes so that the oracle version can be bumped. It works with both
53
- * class declarations (e.g. PXE's `Oracle` class) and interface declarations (e.g. TXE's `IAvmExecutionOracle`).
54
- *
55
- * @param sourcePath - Absolute path to the TypeScript source file to parse.
56
- * @param targets - Names of classes or interfaces to extract methods from.
57
- * @param excludedMembers - Method names to skip (e.g. non-oracle helpers like `constructor`).
58
- */
59
- export function getOracleInterfaceSignature(sourcePath: string, targets: string[], excludedMembers: string[]): string {
60
- // Read and parse the TypeScript source file
61
- const sourceCode = readFileSync(sourcePath, 'utf-8');
62
- const sourceFile = ts.createSourceFile(sourcePath, sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
63
-
64
- // Extract method signatures from the target classes/interfaces
65
- const methodSignatures: string[] = [];
66
-
67
- function visit(node: ts.Node) {
68
- // Look for class or interface declarations matching the target names
69
- const isTarget =
70
- (ts.isClassDeclaration(node) || ts.isInterfaceDeclaration(node)) && targets.includes(node.name?.text ?? '');
71
-
72
- if (isTarget) {
73
- // Visit all members of the class/interface
74
- node.members.forEach(member => {
75
- if (
76
- (ts.isMethodDeclaration(member) || ts.isMethodSignature(member)) &&
77
- member.name &&
78
- ts.isIdentifier(member.name)
79
- ) {
80
- const methodName = member.name.text;
81
-
82
- // Skip excluded methods
83
- if (excludedMembers.includes(methodName)) {
84
- return;
85
- }
86
-
87
- // Extract parameter signatures
88
- const paramSignatures: string[] = [];
89
- member.parameters.forEach(param => {
90
- const paramName = extractParameterName(param, sourceFile);
91
- const paramType = extractTypeString(param.type, sourceFile);
92
- paramSignatures.push(`${paramName}: ${paramType}`);
93
- });
94
-
95
- // Extract return type
96
- const returnType = extractTypeString(member.type, sourceFile);
97
-
98
- // Build full signature: methodName(param1: Type1, param2: Type2): ReturnType
99
- const signature = `${methodName}(${paramSignatures.join(', ')}): ${returnType}`;
100
- methodSignatures.push(signature);
101
- }
102
- });
103
- }
104
-
105
- ts.forEachChild(node, visit);
106
- }
107
-
108
- visit(sourceFile);
109
-
110
- // Sort signatures alphabetically for consistent hashing
111
- methodSignatures.sort();
112
-
113
- // Create a hashable representation by concatenating all signatures
114
- return methodSignatures.join('');
115
- }
116
-
117
- /**
118
- * Extracts the parameter name from a parameter node, handling destructured parameters.
119
- */
120
- function extractParameterName(param: ts.ParameterDeclaration, sourceFile: ts.SourceFile): string {
121
- const name = param.name;
122
-
123
- if (ts.isIdentifier(name)) {
124
- return name.text;
125
- }
126
-
127
- if (ts.isArrayBindingPattern(name)) {
128
- // Handle destructured parameters like [blockNumber]: ACVMField[]
129
- // Extract the first element name
130
- if (name.elements.length > 0) {
131
- const element = name.elements[0];
132
- if (ts.isBindingElement(element)) {
133
- const elementName = element.name;
134
- if (ts.isIdentifier(elementName)) {
135
- return elementName.text;
136
- }
137
- // Nested destructuring - use text representation
138
- if (ts.isArrayBindingPattern(elementName) || ts.isObjectBindingPattern(elementName)) {
139
- return elementName.getText(sourceFile);
140
- }
141
- }
142
- }
143
- // Fallback: return the text representation
144
- return name.getText(sourceFile);
145
- }
146
-
147
- if (ts.isObjectBindingPattern(name)) {
148
- // Handle object destructuring
149
- return name.getText(sourceFile);
150
- }
151
-
152
- // Fallback for any other case - this should never happen but TypeScript needs it
153
- return (name as ts.Node).getText(sourceFile);
154
- }
155
-
156
- /**
157
- * Extracts the type string from a type node, normalizing whitespace.
158
- */
159
- function extractTypeString(typeNode: ts.TypeNode | undefined, sourceFile: ts.SourceFile): string {
160
- if (!typeNode) {
161
- return 'void';
162
- }
163
-
164
- // Get the type text and normalize whitespace
165
- let typeText = typeNode.getText(sourceFile);
166
- // Normalize whitespace: remove extra spaces, newlines, and tabs
167
- typeText = typeText.replace(/\s+/g, ' ').trim();
168
- return typeText;
169
- }
170
-
171
28
  assertOracleInterfaceMatches();
package/src/bin/index.ts CHANGED
@@ -1 +1 @@
1
- export { getOracleInterfaceSignature } from './check_oracle_version.js';
1
+ export { getOracleRegistrySignature } from './oracle_version_helpers.js';
@@ -0,0 +1,30 @@
1
+ import type { OracleRegistryEntry } from '../contract_function_simulator/index.js';
2
+
3
+ /**
4
+ * Extracts a deterministic signature string from an oracle registry (e.g. PXE's `ORACLE_REGISTRY`).
5
+ *
6
+ * Reads the registry where each oracle's wire ABI lives: the ordered parameter names with their `TypeMapping` labels
7
+ * and the return type. The resulting hash is sensitive to parameter, type, and return changes, not just oracle
8
+ * additions and removals.
9
+ *
10
+ * @example
11
+ * // Given a registry like:
12
+ * // export const ORACLE_REGISTRY = {
13
+ * // aztec_utl_foo: makeEntry({ params: [{ name: 'a', type: U32 }], returnType: BOOL }),
14
+ * // aztec_prv_bar: makeEntry(),
15
+ * // } satisfies Record<string, OracleRegistryEntry>;
16
+ * //
17
+ * // Returns (sorted, newline-joined):
18
+ * // "aztec_prv_bar(): void\naztec_utl_foo(a: u32): bool"
19
+ */
20
+ export function getOracleRegistrySignature(registry: Record<string, OracleRegistryEntry>): string {
21
+ const oracleSignatures = Object.entries(registry).map(([name, entry]) => {
22
+ const paramSignatures = entry.params.map(p => `${p.name}: ${p.type.label}`);
23
+ const returnType = entry.returnType === undefined ? 'void' : entry.returnType.label;
24
+ return `${name}(${paramSignatures.join(', ')}): ${returnType}`;
25
+ });
26
+
27
+ oracleSignatures.sort();
28
+
29
+ return oracleSignatures.join('\n');
30
+ }
@@ -1,29 +1,17 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
2
- import {
3
- type BlockData,
4
- type BlockQuery,
5
- type BlocksQuery,
6
- type CheckpointsQuery,
7
- L2Block,
8
- type L2BlockSource,
9
- } from '@aztec/stdlib/block';
10
- import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
1
+ import { type BlockData, type BlockQuery, type BlocksQuery, L2Block, type L2BlockSource } from '@aztec/stdlib/block';
11
2
  import type { AztecNode } from '@aztec/stdlib/interfaces/client';
12
3
 
13
4
  /**
14
5
  * Lifts an {@link AztecNode} RPC client into the shape {@link L2BlockStream} expects.
15
- * `getBlocks` requests transaction bodies so that real `L2Block` instances can be constructed;
16
- * `getCheckpoints` requests blocks + L1 info + attestations so that `PublishedCheckpoint`
17
- * instances are fully populated.
6
+ * `getBlocks` requests transaction bodies so that real `L2Block` instances can be constructed. The stream no
7
+ * longer fetches checkpoint payloads (the `chain-checkpointed` event is a thin tip event), so `getCheckpoints`
8
+ * is not part of the lifted shape.
18
9
  */
19
10
  export function blockStreamSourceFromAztecNode(
20
11
  node: AztecNode,
21
- ): Pick<L2BlockSource, 'getBlocks' | 'getBlockData' | 'getL2Tips' | 'getCheckpoints'> {
12
+ ): Pick<L2BlockSource, 'getBlocks' | 'getBlockData' | 'getL2Tips'> {
22
13
  return {
23
- getL2Tips: async () => {
24
- const tips = await node.getChainTips();
25
- return { ...tips, proposedCheckpoint: tips.checkpointed };
26
- },
14
+ getL2Tips: () => node.getChainTips(),
27
15
 
28
16
  async getBlockData(query: BlockQuery): Promise<BlockData | undefined> {
29
17
  const response = await node.getBlock(query);
@@ -50,32 +38,5 @@ export function blockStreamSourceFromAztecNode(
50
38
  const responses = await node.getBlocks(query.from, query.limit, { includeTransactions: true });
51
39
  return responses.map(r => new L2Block(r.archive, r.header, r.body!, r.checkpointNumber, r.indexWithinCheckpoint));
52
40
  },
53
-
54
- async getCheckpoints(query: CheckpointsQuery): Promise<PublishedCheckpoint[]> {
55
- if (!('from' in query)) {
56
- throw new Error('getCheckpoints with epoch query not supported via AztecNode RPC');
57
- }
58
- const { from, limit } = query;
59
- const responses = await node.getCheckpoints(from, limit, {
60
- includeBlocks: true,
61
- includeTransactions: true,
62
- includeL1PublishInfo: true,
63
- includeAttestations: true,
64
- });
65
- return responses.map(r => {
66
- const checkpoint = new Checkpoint(
67
- r.archive,
68
- r.header,
69
- r.blocks!.map(b => new L2Block(b.archive, b.header, b.body!, b.checkpointNumber, b.indexWithinCheckpoint)),
70
- r.number,
71
- r.feeAssetPriceModifier,
72
- );
73
- const l1 =
74
- r.l1?.published === true
75
- ? new L1PublishedData(r.l1.blockNumber, r.l1.timestamp, r.l1.blockHash)
76
- : new L1PublishedData(0n, 0n, Fr.ZERO.toString());
77
- return new PublishedCheckpoint(checkpoint, l1, r.attestations ?? []);
78
- });
79
- },
80
41
  };
81
42
  }
@@ -4,13 +4,14 @@ import { SerialQueue } from '@aztec/foundation/queue';
4
4
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
5
5
  import type { L2TipsKVStore } from '@aztec/kv-store/stores';
6
6
  import { BlockHash, L2BlockStream, type L2BlockStreamEvent, type L2BlockStreamEventHandler } from '@aztec/stdlib/block';
7
- import type { AztecNode } from '@aztec/stdlib/interfaces/client';
8
7
  import type { BlockHeader } from '@aztec/stdlib/tx';
9
8
 
10
9
  import type { BlockSynchronizerConfig } from '../config/index.js';
11
- import type { ContractSyncService } from '../contract_sync/contract_sync_service.js';
12
- import type { AnchorBlockStore } from '../storage/anchor_block_store/anchor_block_store.js';
13
- import type { NoteStore } from '../storage/note_store/note_store.js';
10
+ import type { ContractSyncService } from '../contract/contract_sync_service.js';
11
+ import type { CachingAztecNode } from '../node/caching_aztec_node.js';
12
+ import type { AnchorBlockStore } from '../storage/anchor_block_store/index.js';
13
+ import type { FactStore } from '../storage/fact_store/fact_store.js';
14
+ import type { NoteStore } from '../storage/note_store/index.js';
14
15
  import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
15
16
  import { blockStreamSourceFromAztecNode } from './block_stream_source.js';
16
17
 
@@ -26,32 +27,32 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
26
27
  protected readonly blockStream: L2BlockStream;
27
28
 
28
29
  constructor(
29
- private node: AztecNode,
30
- private store: AztecAsyncKVStore,
31
- private anchorBlockStore: AnchorBlockStore,
32
- private noteStore: NoteStore,
33
- private privateEventStore: PrivateEventStore,
34
- private l2TipsStore: L2TipsKVStore,
35
- private contractSyncService: ContractSyncService,
36
- private config: Partial<BlockSynchronizerConfig> = {},
30
+ private readonly node: CachingAztecNode,
31
+ private readonly store: AztecAsyncKVStore,
32
+ private readonly anchorBlockStore: AnchorBlockStore,
33
+ private readonly noteStore: NoteStore,
34
+ private readonly privateEventStore: PrivateEventStore,
35
+ private readonly factStore: FactStore,
36
+ private readonly l2TipsStore: L2TipsKVStore,
37
+ private readonly contractSyncService: ContractSyncService,
38
+ private readonly config: Partial<BlockSynchronizerConfig> = {},
37
39
  bindings?: LoggerBindings,
38
40
  ) {
39
41
  this.log = createLogger('pxe:block_synchronizer', bindings);
40
- this.blockStream = this.createBlockStream(config);
42
+ this.blockStream = this.createBlockStream();
41
43
  this.eventQueue.start();
42
44
  }
43
45
 
44
- protected createBlockStream(config: Partial<BlockSynchronizerConfig>): L2BlockStream {
46
+ protected createBlockStream(): L2BlockStream {
45
47
  return new L2BlockStream(
46
48
  blockStreamSourceFromAztecNode(this.node),
47
49
  this.l2TipsStore,
48
50
  this,
49
51
  createLogger('pxe:block_stream', this.log.getBindings()),
50
52
  {
51
- batchSize: config.l2BlockBatchSize,
52
- // Skipping finalized blocks makes us sync much faster - we only need to download blocks other than the latest one
53
- // in order to detect reorgs, and there can be no reorgs on finalized block, making this safe.
54
- skipFinalized: true,
53
+ // PXE only tracks chain tips (it anchors on tip events and never replays payloads), so the stream runs
54
+ // in tips-only mode: no block downloads, just the tip events that move the anchor and detect reorgs.
55
+ tipsOnly: true,
55
56
  },
56
57
  );
57
58
  }
@@ -62,21 +63,29 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
62
63
  }
63
64
 
64
65
  private async doHandleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void> {
65
- await this.l2TipsStore.handleBlockStreamEvent(event);
66
-
67
66
  switch (event.type) {
68
- case 'blocks-added': {
67
+ case 'chain-proposed': {
69
68
  if (this.config.syncChainTip === undefined || this.config.syncChainTip === 'proposed') {
70
- const lastBlock = event.blocks.at(-1)!;
71
- await this.updateAnchorBlockHeader(lastBlock.header);
69
+ await this.updateAnchorBlockHeader(event.header);
72
70
  }
73
71
  break;
74
72
  }
73
+ // Never emitted in tips-only mode; PXE anchors on chain-proposed instead. Kept for union exhaustiveness.
74
+ case 'blocks-added':
75
+ break;
75
76
  case 'chain-checkpointed': {
76
77
  if (this.config.syncChainTip === 'checkpointed') {
77
- // Get the last block header from the checkpoint
78
- const lastBlock = event.checkpoint.checkpoint.blocks.at(-1)!;
79
- await this.updateAnchorBlockHeader(lastBlock.header);
78
+ // Fetch the checkpointed tip header by hash. By-hash is safer than by-number against a
79
+ // same-height reorg; a missing result means the block was reorged out between the event
80
+ // and this fetch, so we skip the anchor update and let a later event correct it.
81
+ const block = await this.node.getBlockData(BlockHash.fromString(event.block.hash));
82
+ if (block) {
83
+ await this.updateAnchorBlockHeader(block.header);
84
+ } else {
85
+ this.log.warn(
86
+ `Block header not found for checkpointed block ${event.block.number}, skipping anchor update`,
87
+ );
88
+ }
80
89
  }
81
90
  break;
82
91
  }
@@ -110,10 +119,10 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
110
119
  `Ignoring prune event to block ${event.block.number} greater than current anchor block ${currentAnchorBlockNumber}`,
111
120
  { pruneEvent: event, currentAnchorBlockHeader: currentAnchorBlockHeader.toInspect() },
112
121
  );
113
- return;
122
+ break;
114
123
  }
115
124
 
116
- this.log.warn(`Pruning data after block ${event.block.number} due to reorg`);
125
+ this.log.warn(`Pruning data after block ${event.block.number} due to reorg`, { pruneBlock: event.block });
117
126
 
118
127
  // Note that the following is not necessarily the anchor block that will be used in the transaction - if
119
128
  // the chain has already moved past the reorg, we'll also see blocks-added events that will push the anchor
@@ -129,13 +138,23 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
129
138
 
130
139
  // Operations are wrapped in a single transaction to ensure atomicity.
131
140
  await this.store.transactionAsync(async () => {
132
- await this.noteStore.rollback(event.block.number, currentAnchorBlockNumber);
133
- await this.privateEventStore.rollback(event.block.number, currentAnchorBlockNumber);
141
+ await this.noteStore.rollback(event.block.number);
142
+ await this.privateEventStore.rollback(event.block.number);
143
+ await this.factStore.rollback(event.block.number);
134
144
  await this.updateAnchorBlockHeader(newAnchorBlockHeader);
135
145
  });
136
146
  break;
137
147
  }
148
+ default: {
149
+ const _: never = event;
150
+ break;
151
+ }
138
152
  }
153
+
154
+ // Advance the tips store cursor only after the anchor update / prune rollback above succeeds. If that work
155
+ // throws, the cursor stays put and the stream re-emits this event on the next sync pass (at-least-once),
156
+ // matching the prover-node's handle-first/tips-last ordering. The SerialQueue makes this reorder safe.
157
+ await this.l2TipsStore.handleBlockStreamEvent(event);
139
158
  }
140
159
 
141
160
  /** Updates the anchor block header to the target block */
@@ -144,6 +163,11 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
144
163
  // Therefore, we clear the contract synchronization cache here such that the sync is re-triggered upon new
145
164
  // execution.
146
165
  this.contractSyncService.wipe();
166
+
167
+ // Cached node reads stay correct indefinitely, so this wipe is only about bounding memory growth. An anchor
168
+ // update is the recurring trigger PXE already has.
169
+ this.node.wipeCache();
170
+
147
171
  this.log.verbose(`Updated pxe last block to ${blockHeader.getBlockNumber()}`, blockHeader.toInspect());
148
172
  await this.anchorBlockStore.setHeader(blockHeader);
149
173
  }