@aztec/pxe 0.0.1-commit.2ed92850 → 0.0.1-commit.3100065

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 (503) hide show
  1. package/dest/bin/check_oracle_version.js +45 -111
  2. package/dest/bin/index.d.ts +2 -0
  3. package/dest/bin/index.d.ts.map +1 -0
  4. package/dest/bin/index.js +1 -0
  5. package/dest/bin/oracle_version_helpers.d.ts +51 -0
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  7. package/dest/bin/oracle_version_helpers.js +254 -0
  8. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  9. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  10. package/dest/block_synchronizer/block_stream_source.js +37 -0
  11. package/dest/block_synchronizer/block_synchronizer.d.ts +24 -14
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +92 -30
  14. package/dest/config/index.d.ts +9 -2
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +14 -15
  17. package/dest/config/package_info.js +1 -1
  18. package/dest/contract/contract_class_service.d.ts +31 -0
  19. package/dest/contract/contract_class_service.d.ts.map +1 -0
  20. package/dest/contract/contract_class_service.js +68 -0
  21. package/dest/contract/contract_sync_service.d.ts +48 -0
  22. package/dest/contract/contract_sync_service.d.ts.map +1 -0
  23. package/dest/contract/contract_sync_service.js +116 -0
  24. package/dest/contract/helpers.d.ts +7 -0
  25. package/dest/contract/helpers.d.ts.map +1 -0
  26. package/dest/contract/helpers.js +20 -0
  27. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  28. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  29. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  30. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts +39 -0
  31. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts.map +1 -0
  32. package/dest/contract_function_simulator/aztec_node_read_cache.js +60 -0
  33. package/dest/contract_function_simulator/contract_function_simulator.d.ts +72 -36
  34. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  35. package/dest/contract_function_simulator/contract_function_simulator.js +265 -97
  36. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  37. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  38. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  39. package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
  40. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  41. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  42. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -11
  43. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -15
  45. package/dest/contract_function_simulator/index.d.ts +26 -5
  46. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/index.js +12 -3
  48. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  49. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  50. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  51. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  52. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  53. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  54. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  55. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  56. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  57. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  58. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  59. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  60. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -4
  61. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  62. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +9 -10
  63. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  64. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  65. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  66. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  67. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  68. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  69. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +19 -10
  70. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  71. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +12 -24
  72. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +11 -9
  73. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  74. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -63
  75. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  76. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  77. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  78. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -5
  79. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  80. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +8 -12
  81. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  82. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  83. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  84. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  85. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  86. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  87. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  88. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  89. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  90. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  91. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  92. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  93. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  94. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  95. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  96. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +21 -0
  97. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  98. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +50 -0
  99. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +14 -0
  100. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  101. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  102. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  103. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  104. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  105. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  106. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  107. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  108. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  109. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  110. package/dest/contract_function_simulator/oracle/index.js +1 -1
  111. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -98
  112. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  113. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  114. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  115. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  116. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  117. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  118. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  119. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  120. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  121. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  122. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  123. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +138 -0
  124. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  125. package/dest/contract_function_simulator/oracle/oracle_registry.js +1007 -0
  126. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +222 -0
  127. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  128. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
  129. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  130. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  131. package/dest/contract_function_simulator/oracle/private_execution.js +7 -6
  132. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +82 -97
  133. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  134. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +257 -115
  135. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +206 -88
  136. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  137. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +592 -194
  138. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  139. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  140. package/dest/contract_function_simulator/pick_notes.js +20 -3
  141. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  142. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  143. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  144. package/dest/contract_logging.d.ts +27 -0
  145. package/dest/contract_logging.d.ts.map +1 -0
  146. package/dest/contract_logging.js +38 -0
  147. package/dest/debug/pxe_debug_utils.d.ts +19 -10
  148. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  149. package/dest/debug/pxe_debug_utils.js +22 -18
  150. package/dest/entrypoints/client/bundle/index.d.ts +3 -1
  151. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  152. package/dest/entrypoints/client/bundle/index.js +2 -0
  153. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  154. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  155. package/dest/entrypoints/client/bundle/utils.js +39 -12
  156. package/dest/entrypoints/client/lazy/index.d.ts +3 -1
  157. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  158. package/dest/entrypoints/client/lazy/index.js +2 -0
  159. package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
  160. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  161. package/dest/entrypoints/client/lazy/utils.js +40 -13
  162. package/dest/entrypoints/pxe_creation_options.d.ts +18 -3
  163. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  164. package/dest/entrypoints/pxe_creation_options.js +3 -1
  165. package/dest/entrypoints/server/index.d.ts +7 -3
  166. package/dest/entrypoints/server/index.d.ts.map +1 -1
  167. package/dest/entrypoints/server/index.js +5 -2
  168. package/dest/entrypoints/server/utils.d.ts +4 -3
  169. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  170. package/dest/entrypoints/server/utils.js +47 -14
  171. package/dest/error_enriching.d.ts +5 -3
  172. package/dest/error_enriching.d.ts.map +1 -1
  173. package/dest/error_enriching.js +13 -11
  174. package/dest/events/event_service.d.ts +16 -8
  175. package/dest/events/event_service.d.ts.map +1 -1
  176. package/dest/events/event_service.js +46 -14
  177. package/dest/events/private_event_filter_validator.d.ts +3 -2
  178. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  179. package/dest/events/private_event_filter_validator.js +15 -0
  180. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  181. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  182. package/dest/hooks/authorize_utility_call.js +4 -0
  183. package/dest/hooks/execution_hooks.d.ts +62 -0
  184. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  185. package/dest/hooks/execution_hooks.js +9 -0
  186. package/dest/hooks/index.d.ts +5 -0
  187. package/dest/hooks/index.d.ts.map +1 -0
  188. package/dest/hooks/index.js +2 -0
  189. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  190. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  191. package/dest/hooks/resolve_custom_request.js +3 -0
  192. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  193. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  194. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  195. package/dest/job_coordinator/job_coordinator.d.ts +3 -2
  196. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
  197. package/dest/job_coordinator/job_coordinator.js +3 -2
  198. package/dest/logs/log_service.d.ts +16 -13
  199. package/dest/logs/log_service.d.ts.map +1 -1
  200. package/dest/logs/log_service.js +192 -97
  201. package/dest/messages/tx_resolver_service.d.ts +17 -0
  202. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  203. package/dest/messages/tx_resolver_service.js +55 -0
  204. package/dest/notes/note_service.d.ts +29 -8
  205. package/dest/notes/note_service.d.ts.map +1 -1
  206. package/dest/notes/note_service.js +89 -65
  207. package/dest/notes_filter.d.ts +24 -0
  208. package/dest/notes_filter.d.ts.map +1 -0
  209. package/dest/notes_filter.js +4 -0
  210. package/dest/oracle_version.d.ts +4 -3
  211. package/dest/oracle_version.d.ts.map +1 -1
  212. package/dest/oracle_version.js +20 -10
  213. package/dest/private_kernel/batch_planner.d.ts +47 -0
  214. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  215. package/dest/private_kernel/batch_planner.js +104 -0
  216. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  217. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  218. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  219. package/dest/private_kernel/hints/index.d.ts +1 -1
  220. package/dest/private_kernel/hints/index.js +1 -1
  221. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  222. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  223. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +135 -70
  224. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  225. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  226. package/dest/private_kernel/hints/test_utils.js +202 -0
  227. package/dest/private_kernel/private_kernel_execution_prover.d.ts +7 -2
  228. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  229. package/dest/private_kernel/private_kernel_execution_prover.js +165 -83
  230. package/dest/private_kernel/private_kernel_oracle.d.ts +17 -11
  231. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  232. package/dest/private_kernel/private_kernel_oracle.js +47 -29
  233. package/dest/pxe.d.ts +228 -66
  234. package/dest/pxe.d.ts.map +1 -1
  235. package/dest/pxe.js +411 -229
  236. package/dest/storage/address_store/address_store.d.ts +1 -1
  237. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  238. package/dest/storage/address_store/address_store.js +12 -11
  239. package/dest/storage/allowed_scopes.d.ts +6 -0
  240. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  241. package/dest/storage/allowed_scopes.js +7 -0
  242. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +12 -1
  243. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  244. package/dest/storage/anchor_block_store/anchor_block_store.js +12 -3
  245. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  246. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  247. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  248. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  249. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  250. package/dest/storage/backwards_compatibility_tests/schema_tests.js +671 -0
  251. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  252. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  253. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  254. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  255. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  256. package/dest/storage/capsule_store/capsule_service.js +47 -0
  257. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  258. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  259. package/dest/storage/capsule_store/capsule_store.js +42 -36
  260. package/dest/storage/capsule_store/index.d.ts +2 -1
  261. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  262. package/dest/storage/capsule_store/index.js +1 -0
  263. package/dest/storage/contract_store/contract_store.d.ts +63 -33
  264. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  265. package/dest/storage/contract_store/contract_store.js +192 -135
  266. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  267. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  268. package/dest/storage/fact_store/fact_service.js +45 -0
  269. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  270. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  271. package/dest/storage/fact_store/fact_store.js +408 -0
  272. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  273. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  274. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  275. package/dest/storage/fact_store/index.d.ts +6 -0
  276. package/dest/storage/fact_store/index.d.ts.map +1 -0
  277. package/dest/storage/fact_store/index.js +4 -0
  278. package/dest/storage/fact_store/origin_state.d.ts +57 -0
  279. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  280. package/dest/storage/fact_store/origin_state.js +53 -0
  281. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  282. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  283. package/dest/storage/fact_store/stored_fact.js +64 -0
  284. package/dest/storage/index.d.ts +3 -2
  285. package/dest/storage/index.d.ts.map +1 -1
  286. package/dest/storage/index.js +2 -1
  287. package/dest/storage/metadata.d.ts +2 -2
  288. package/dest/storage/metadata.d.ts.map +1 -1
  289. package/dest/storage/metadata.js +1 -1
  290. package/dest/storage/note_store/note_store.d.ts +48 -29
  291. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  292. package/dest/storage/note_store/note_store.js +261 -192
  293. package/dest/storage/note_store/stored_note.d.ts +3 -8
  294. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  295. package/dest/storage/note_store/stored_note.js +4 -20
  296. package/dest/storage/open_pxe_stores.d.ts +35 -0
  297. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  298. package/dest/storage/open_pxe_stores.js +29 -0
  299. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  300. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  301. package/dest/storage/private_event_store/private_event_store.js +102 -79
  302. package/dest/storage/private_event_store/stored_private_event.d.ts +4 -4
  303. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -1
  304. package/dest/storage/private_event_store/stored_private_event.js +2 -2
  305. package/dest/storage/tagging_store/index.d.ts +2 -2
  306. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  307. package/dest/storage/tagging_store/index.js +1 -1
  308. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  309. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  310. package/dest/storage/tagging_store/recipient_tagging_store.js +31 -19
  311. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  312. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  313. package/dest/storage/tagging_store/sender_tagging_store.js +233 -137
  314. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  315. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  316. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  317. package/dest/tagging/constants.d.ts +2 -2
  318. package/dest/tagging/constants.d.ts.map +1 -1
  319. package/dest/tagging/constants.js +18 -9
  320. package/dest/tagging/get_all_logs_by_tags.d.ts +35 -11
  321. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  322. package/dest/tagging/get_all_logs_by_tags.js +45 -32
  323. package/dest/tagging/index.d.ts +6 -5
  324. package/dest/tagging/index.d.ts.map +1 -1
  325. package/dest/tagging/index.js +4 -3
  326. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  327. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  328. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  329. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +69 -0
  330. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  331. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +203 -0
  332. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  333. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  334. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  335. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  336. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  337. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  338. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -10
  339. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  340. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +32 -14
  341. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +13 -7
  342. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  343. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +41 -10
  344. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -8
  345. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  346. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +37 -25
  347. package/package.json +29 -17
  348. package/src/bin/check_oracle_version.ts +51 -133
  349. package/src/bin/index.ts +5 -0
  350. package/src/bin/oracle_version_helpers.ts +311 -0
  351. package/src/block_synchronizer/block_stream_source.ts +42 -0
  352. package/src/block_synchronizer/block_synchronizer.ts +117 -50
  353. package/src/config/index.ts +16 -9
  354. package/src/config/package_info.ts +1 -1
  355. package/src/contract/contract_class_service.ts +83 -0
  356. package/src/contract/contract_sync_service.ts +176 -0
  357. package/src/contract/helpers.ts +35 -0
  358. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  359. package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
  360. package/src/contract_function_simulator/contract_function_simulator.ts +466 -159
  361. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  362. package/src/contract_function_simulator/execution_note_cache.ts +8 -29
  363. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
  364. package/src/contract_function_simulator/index.ts +69 -4
  365. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  366. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  367. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  368. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  369. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +10 -9
  370. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  371. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  372. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -20
  373. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +14 -64
  374. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  375. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -11
  376. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  377. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  378. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  379. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  380. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  381. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +53 -0
  382. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +15 -0
  383. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  384. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  385. package/src/contract_function_simulator/oracle/index.ts +1 -15
  386. package/src/contract_function_simulator/oracle/interfaces.ts +11 -176
  387. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  388. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  389. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  390. package/src/contract_function_simulator/oracle/oracle_registry.ts +706 -0
  391. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +964 -0
  392. package/src/contract_function_simulator/oracle/private_execution.ts +6 -7
  393. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +315 -219
  394. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +921 -276
  395. package/src/contract_function_simulator/pick_notes.ts +22 -3
  396. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  397. package/src/contract_logging.ts +52 -0
  398. package/src/debug/pxe_debug_utils.ts +55 -19
  399. package/src/entrypoints/client/bundle/index.ts +2 -0
  400. package/src/entrypoints/client/bundle/utils.ts +34 -21
  401. package/src/entrypoints/client/lazy/index.ts +2 -0
  402. package/src/entrypoints/client/lazy/utils.ts +36 -22
  403. package/src/entrypoints/pxe_creation_options.ts +23 -2
  404. package/src/entrypoints/server/index.ts +7 -2
  405. package/src/entrypoints/server/utils.ts +46 -33
  406. package/src/error_enriching.ts +27 -11
  407. package/src/events/event_service.ts +70 -24
  408. package/src/events/private_event_filter_validator.ts +21 -1
  409. package/src/hooks/authorize_utility_call.ts +44 -0
  410. package/src/hooks/execution_hooks.ts +68 -0
  411. package/src/hooks/index.ts +13 -0
  412. package/src/hooks/resolve_custom_request.ts +24 -0
  413. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  414. package/src/job_coordinator/job_coordinator.ts +4 -3
  415. package/src/logs/log_service.ts +236 -165
  416. package/src/messages/tx_resolver_service.ts +69 -0
  417. package/src/notes/note_service.ts +124 -91
  418. package/src/notes_filter.ts +24 -0
  419. package/src/oracle_version.ts +20 -10
  420. package/src/private_kernel/batch_planner.ts +169 -0
  421. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  422. package/src/private_kernel/hints/index.ts +1 -1
  423. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +176 -119
  424. package/src/private_kernel/hints/test_utils.ts +318 -0
  425. package/src/private_kernel/private_kernel_execution_prover.ts +257 -119
  426. package/src/private_kernel/private_kernel_oracle.ts +65 -36
  427. package/src/pxe.ts +712 -303
  428. package/src/storage/address_store/address_store.ts +15 -15
  429. package/src/storage/allowed_scopes.ts +14 -0
  430. package/src/storage/anchor_block_store/anchor_block_store.ts +12 -2
  431. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  432. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  433. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  434. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  435. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  436. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  437. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  438. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  439. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  440. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +26 -0
  441. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +30 -0
  442. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  443. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  444. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  445. package/src/storage/backwards_compatibility_tests/schema_tests.ts +803 -0
  446. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  447. package/src/storage/capsule_store/capsule_service.ts +85 -0
  448. package/src/storage/capsule_store/capsule_store.ts +52 -34
  449. package/src/storage/capsule_store/index.ts +1 -0
  450. package/src/storage/contract_store/contract_store.ts +249 -167
  451. package/src/storage/fact_store/fact_service.ts +69 -0
  452. package/src/storage/fact_store/fact_store.ts +487 -0
  453. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  454. package/src/storage/fact_store/index.ts +14 -0
  455. package/src/storage/fact_store/origin_state.ts +75 -0
  456. package/src/storage/fact_store/stored_fact.ts +80 -0
  457. package/src/storage/index.ts +2 -1
  458. package/src/storage/metadata.ts +1 -1
  459. package/src/storage/note_store/note_store.ts +297 -224
  460. package/src/storage/note_store/stored_note.ts +5 -27
  461. package/src/storage/open_pxe_stores.ts +52 -0
  462. package/src/storage/private_event_store/private_event_store.ts +127 -108
  463. package/src/storage/private_event_store/stored_private_event.ts +3 -3
  464. package/src/storage/tagging_store/index.ts +1 -1
  465. package/src/storage/tagging_store/recipient_tagging_store.ts +34 -24
  466. package/src/storage/tagging_store/sender_tagging_store.ts +287 -156
  467. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  468. package/src/tagging/constants.ts +19 -9
  469. package/src/tagging/get_all_logs_by_tags.ts +90 -38
  470. package/src/tagging/index.ts +5 -4
  471. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  472. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +301 -0
  473. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +4 -4
  474. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  475. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +54 -19
  476. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +44 -14
  477. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +30 -30
  478. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -60
  479. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  480. package/dest/contract_function_simulator/oracle/oracle.js +0 -356
  481. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  482. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  483. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -80
  484. package/dest/contract_sync/index.d.ts +0 -23
  485. package/dest/contract_sync/index.d.ts.map +0 -1
  486. package/dest/contract_sync/index.js +0 -54
  487. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  488. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  489. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  490. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  491. package/dest/storage/tagging_store/sender_address_book_store.js +0 -30
  492. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -15
  493. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  494. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  495. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -15
  496. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  497. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -32
  498. package/src/contract_function_simulator/oracle/oracle.ts +0 -620
  499. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
  500. package/src/contract_sync/index.ts +0 -98
  501. package/src/storage/tagging_store/sender_address_book_store.ts +0 -42
  502. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -143
  503. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -49
@@ -1,48 +1,26 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
2
1
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
2
  import { NoteDao } from '@aztec/stdlib/note';
4
3
 
4
+ /** A note as stored by the PXE: the note DAO plus the scopes that observed it. Append-only — never mutated. */
5
5
  export class StoredNote {
6
6
  constructor(
7
7
  readonly noteDao: NoteDao,
8
8
  readonly scopes: Set<string>,
9
- private _nullifiedAt: BlockNumber | undefined = undefined,
10
9
  ) {}
11
10
 
12
- static fromBuffer(buffer: Buffer) {
11
+ static fromBuffer(buffer: Buffer): StoredNote {
13
12
  const reader = BufferReader.asReader(buffer);
14
-
15
13
  const noteDao = NoteDao.fromBuffer(reader);
16
14
  const scopes = reader.readVector({ fromBuffer: (r: BufferReader) => r.readString() });
17
-
18
- const nullifiedAtRaw = reader.readNumber();
19
- const nullifiedAt = nullifiedAtRaw === 0 ? undefined : (nullifiedAtRaw as BlockNumber);
20
-
21
- return new StoredNote(noteDao, new Set(scopes), nullifiedAt);
15
+ return new StoredNote(noteDao, new Set(scopes));
22
16
  }
23
17
 
24
18
  toBuffer(): Buffer {
25
19
  const scopesArray = [...this.scopes];
26
- return serializeToBuffer(this.noteDao, scopesArray.length, ...scopesArray, this._nullifiedAt ?? 0);
20
+ return serializeToBuffer(this.noteDao, scopesArray.length, ...scopesArray);
27
21
  }
28
22
 
29
- addScope(scope: string) {
23
+ addScope(scope: string): void {
30
24
  this.scopes.add(scope);
31
25
  }
32
-
33
- markAsNullified(blockNumber: BlockNumber) {
34
- this._nullifiedAt = blockNumber;
35
- }
36
-
37
- markAsActive() {
38
- this._nullifiedAt = undefined;
39
- }
40
-
41
- isNullified() {
42
- return this._nullifiedAt !== undefined;
43
- }
44
-
45
- get nullifiedAt() {
46
- return this._nullifiedAt;
47
- }
48
26
  }
@@ -0,0 +1,52 @@
1
+ import { KeyStore } from '@aztec/key-store';
2
+ import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
+ import { L2TipsKVStore } from '@aztec/kv-store/stores';
4
+ import type { BlockHash } from '@aztec/stdlib/block';
5
+
6
+ import { AddressStore } from './address_store/address_store.js';
7
+ import { AnchorBlockStore } from './anchor_block_store/anchor_block_store.js';
8
+ import { CapsuleStore } from './capsule_store/capsule_store.js';
9
+ import { ContractStore } from './contract_store/contract_store.js';
10
+ import { FactStore } from './fact_store/fact_store.js';
11
+ import { NoteStore } from './note_store/note_store.js';
12
+ import { PrivateEventStore } from './private_event_store/private_event_store.js';
13
+ import { RecipientTaggingStore, SenderTaggingStore, TaggingSecretSourcesStore } from './tagging_store/index.js';
14
+
15
+ /**
16
+ * The set of sub-stores opened against a single `AztecAsyncKVStore` to back PXE state.
17
+ */
18
+ export type PxeStores = {
19
+ addressStore: AddressStore;
20
+ privateEventStore: PrivateEventStore;
21
+ contractStore: ContractStore;
22
+ noteStore: NoteStore;
23
+ anchorBlockStore: AnchorBlockStore;
24
+ senderTaggingStore: SenderTaggingStore;
25
+ taggingSecretSourcesStore: TaggingSecretSourcesStore;
26
+ recipientTaggingStore: RecipientTaggingStore;
27
+ capsuleStore: CapsuleStore;
28
+ keyStore: KeyStore;
29
+ l2TipsStore: L2TipsKVStore;
30
+ factStore: FactStore;
31
+ };
32
+
33
+ /**
34
+ * Opens every PXE sub-store against the given backing store. The `initialBlockHash` seeds the
35
+ * `L2TipsKVStore` so it agrees with the node's archiver on the dynamic genesis header hash.
36
+ */
37
+ export function openPxeStores(store: AztecAsyncKVStore, initialBlockHash: BlockHash): PxeStores {
38
+ return {
39
+ addressStore: new AddressStore(store),
40
+ privateEventStore: new PrivateEventStore(store),
41
+ contractStore: new ContractStore(store),
42
+ noteStore: new NoteStore(store),
43
+ anchorBlockStore: new AnchorBlockStore(store),
44
+ senderTaggingStore: new SenderTaggingStore(store),
45
+ taggingSecretSourcesStore: new TaggingSecretSourcesStore(store),
46
+ recipientTaggingStore: new RecipientTaggingStore(store),
47
+ capsuleStore: new CapsuleStore(store),
48
+ keyStore: new KeyStore(store),
49
+ l2TipsStore: new L2TipsKVStore(store, 'pxe', initialBlockHash),
50
+ factStore: new FactStore(store),
51
+ };
52
+ }
@@ -1,6 +1,5 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
- import { toArray } from '@aztec/foundation/iterable';
4
3
  import { createLogger } from '@aztec/foundation/log';
5
4
  import { Semaphore } from '@aztec/foundation/queue';
6
5
  import type { AztecAsyncKVStore, AztecAsyncMap, AztecAsyncMultiMap } from '@aztec/kv-store';
@@ -29,25 +28,35 @@ type PrivateEventMetadata = InTx & {
29
28
  eventIndexInTx: number;
30
29
  };
31
30
 
31
+ /// Alias types for kv map readability
32
+ type EventId = string; // the siloedEventCommitment, stringified
33
+ type JobId = string;
34
+ type ContractAndSelectorKey = string;
35
+ type BlockNum = number;
36
+ type StoredEventBuffer = Buffer;
37
+
32
38
  /**
33
39
  * Stores decrypted private event logs.
40
+ *
41
+ * Append-only: events are never deleted during normal operation. Reorgs are handled by delete-on-prune, which removes
42
+ * every event originating on a reorg'd block.
34
43
  */
35
44
  export class PrivateEventStore implements StagedStore {
36
45
  readonly storeName: string = 'private_event';
37
46
 
38
47
  #store: AztecAsyncKVStore;
39
48
  /** Actual private event log entries, keyed by siloedEventCommitment */
40
- #events: AztecAsyncMap<string, Buffer>;
49
+ #events: AztecAsyncMap<EventId, StoredEventBuffer>;
41
50
  /** Multi-map from contractAddress_eventSelector to siloedEventCommitment for efficient lookup */
42
- #eventsByContractAndEventSelector: AztecAsyncMultiMap<string, string>;
43
- /** Multi-map from block number to siloedEventCommitment for rollback support */
44
- #eventsByBlockNumber: AztecAsyncMultiMap<number, string>;
51
+ #eventsByContractAndEventSelector: AztecAsyncMultiMap<ContractAndSelectorKey, EventId>;
52
+ /** Multi-map from block number to siloedEventCommitment, for delete-on-prune. */
53
+ #eventsByBlockNumber: AztecAsyncMultiMap<BlockNum, EventId>;
45
54
 
46
55
  /** jobId => eventId (event siloed nullifier) => StoredPrivateEvent */
47
- #eventsForJob: Map<string, Map<string, StoredPrivateEvent>>;
56
+ #eventsForJob: Map<JobId, Map<EventId, StoredPrivateEvent>>;
48
57
 
49
58
  /** Per-job locks to prevent concurrent writes from affecting each other. */
50
- #jobLocks: Map<string, Semaphore>;
59
+ #jobLocks: Map<JobId, Semaphore>;
51
60
 
52
61
  logger = createLogger('private_event_store');
53
62
 
@@ -81,43 +90,45 @@ export class PrivateEventStore implements StagedStore {
81
90
  metadata: PrivateEventMetadata,
82
91
  jobId: string,
83
92
  ) {
84
- return this.#withJobLock(jobId, async () => {
85
- const { contractAddress, scope, txHash, l2BlockNumber, l2BlockHash, txIndexInBlock, eventIndexInTx } = metadata;
86
- const eventId = siloedEventCommitment.toString();
93
+ return this.#withJobLock(jobId, () =>
94
+ this.#store.transactionAsync(async () => {
95
+ const { contractAddress, scope, txHash, l2BlockNumber, l2BlockHash, txIndexInBlock, eventIndexInTx } = metadata;
96
+ const eventId = siloedEventCommitment.toString();
87
97
 
88
- this.logger.verbose('storing private event log (job stage)', {
89
- eventId,
90
- contractAddress,
91
- scope,
92
- msgContent,
93
- l2BlockNumber,
94
- });
98
+ this.logger.verbose('storing private event log (job stage)', {
99
+ eventId,
100
+ contractAddress,
101
+ scope,
102
+ msgContent,
103
+ l2BlockNumber,
104
+ });
95
105
 
96
- const existing = await this.#readEvent(eventId, jobId);
106
+ const existing = await this.#readEvent(eventId, jobId);
97
107
 
98
- if (existing) {
99
- // If we already stored this event, we still want to make sure to track it for the given scope
100
- existing.addScope(scope.toString());
101
- this.#writeEvent(eventId, existing, jobId);
102
- } else {
103
- this.#writeEvent(
104
- eventId,
105
- new StoredPrivateEvent(
106
- randomness,
107
- msgContent,
108
- l2BlockNumber,
109
- l2BlockHash,
110
- txHash,
111
- txIndexInBlock,
112
- eventIndexInTx,
113
- contractAddress,
114
- eventSelector,
115
- new Set([scope.toString()]),
116
- ),
117
- jobId,
118
- );
119
- }
120
- });
108
+ if (existing) {
109
+ // If we already stored this event, we still want to make sure to track it for the given scope
110
+ existing.addScope(scope.toString());
111
+ this.#writeEvent(eventId, existing, jobId);
112
+ } else {
113
+ this.#writeEvent(
114
+ eventId,
115
+ new StoredPrivateEvent(
116
+ randomness,
117
+ msgContent,
118
+ l2BlockNumber,
119
+ l2BlockHash,
120
+ txHash,
121
+ txIndexInBlock,
122
+ eventIndexInTx,
123
+ contractAddress,
124
+ eventSelector,
125
+ new Set([scope.toString()]),
126
+ ),
127
+ jobId,
128
+ );
129
+ }
130
+ }),
131
+ );
121
132
  }
122
133
 
123
134
  /**
@@ -136,6 +147,20 @@ export class PrivateEventStore implements StagedStore {
136
147
  filter: PrivateEventStoreFilter,
137
148
  ): Promise<PackedPrivateEvent[]> {
138
149
  return this.#store.transactionAsync(async () => {
150
+ const key = this.#keyFor(filter.contractAddress, eventSelector);
151
+ const targetScopes = new Set(filter.scopes.map(s => s.toString()));
152
+
153
+ // Map from eventId to the promise that reads the event buffer.
154
+ // We start reads during iteration to keep DB requests pending and avoid IndexedDB auto-commit.
155
+ const eventReadPromises: Map<string, Promise<Buffer | undefined>> = new Map();
156
+
157
+ for await (const eventId of this.#eventsByContractAndEventSelector.getValuesAsync(key)) {
158
+ eventReadPromises.set(eventId, this.#events.getAsync(eventId));
159
+ }
160
+
161
+ const eventIds = [...eventReadPromises.keys()];
162
+ const eventBuffers = await Promise.all(eventReadPromises.values());
163
+
139
164
  const events: Array<{
140
165
  l2BlockNumber: number;
141
166
  txIndexInBlock: number;
@@ -143,13 +168,9 @@ export class PrivateEventStore implements StagedStore {
143
168
  event: PackedPrivateEvent;
144
169
  }> = [];
145
170
 
146
- const key = this.#keyFor(filter.contractAddress, eventSelector);
147
- const targetScopes = new Set(filter.scopes.map(s => s.toString()));
148
-
149
- const eventIds: string[] = await toArray(this.#eventsByContractAndEventSelector.getValuesAsync(key));
150
-
151
- for (const eventId of eventIds) {
152
- const eventBuffer = await this.#events.getAsync(eventId);
171
+ for (let i = 0; i < eventIds.length; i++) {
172
+ const eventId = eventIds[i];
173
+ const eventBuffer = eventBuffers[i];
153
174
 
154
175
  // Defensive, if it happens, there's a problem with how we're handling #eventsByContractAndEventSelector
155
176
  if (!eventBuffer) {
@@ -205,51 +226,49 @@ export class PrivateEventStore implements StagedStore {
205
226
  });
206
227
  }
207
228
 
229
+ /** Returns the ids (siloed event commitments) of all events emitted at the given block number. Used by delete-on-prune. */
230
+ public async eventIdsAtBlock(blockNumber: number): Promise<string[]> {
231
+ const eventIds: string[] = [];
232
+ for await (const eventId of this.#eventsByBlockNumber.getValuesAsync(blockNumber)) {
233
+ eventIds.push(eventId);
234
+ }
235
+ return eventIds;
236
+ }
237
+
208
238
  /**
209
- * Rolls back private events that were stored after a given `blockNumber` and up to `synchedBlockNumber` (the block
210
- * number up to which PXE managed to sync before the reorg happened).
211
- *
212
- * We don't need staged writes for a rollback since it's handled in the context of a blockchain rewind.
213
- *
214
- * Rollbacks are handled by the BlockSynchronizer, which runs a DB transaction across stores when it detects a
215
- * re-org, including setting the new anchor block after rolling back.
239
+ * Rolls the store back to `toBlock`: deletes every event anchored to a block strictly above it, as if nothing past
240
+ * that block height ever happened. Used by the reorg (`chain-pruned`) path to truncate the orphaned tail. Scanning
241
+ * from `toBlock + 1` upward covers everything above the rollback target without needing to know the chain tip.
216
242
  *
217
- * So if anything fails in the process of rolling back any store, all DB changes occurring during rollbacks will be
218
- * lost and the anchor block will not be updated; which means this code will eventually need to run again
219
- * (i.e.: PXE will detect it's basing it work on an invalid block hash, then which re-triggers rewind).
220
- *
221
- * For further details, refer to `BlockSynchronizer#handleBlockStreamEvent`.
222
- *
223
- * IMPORTANT: This method must be called within a transaction to ensure atomicity.
243
+ * Must be called inside a transaction owned by the caller (it issues no `transactionAsync` of its own, the reorg
244
+ * path wraps it together with the anchor update, and IndexedDB has no nested transactions). Throws if any job has
245
+ * uncommitted staged writes, since rolling back mid-job could later re-introduce events anchored to deleted blocks.
224
246
  */
225
- public async rollback(blockNumber: number, synchedBlockNumber: number): Promise<void> {
247
+ public async rollback(toBlock: number): Promise<void> {
248
+ if (this.#eventsForJob.size > 0) {
249
+ throw new Error('PXE private event store rollback is not allowed while jobs are running');
250
+ }
251
+ // Snapshot before mutating so we never delete from the multimap we are iterating.
252
+ const orphaned: { block: number; eventId: string }[] = [];
253
+ for await (const [block, eventId] of this.#eventsByBlockNumber.entriesAsync({ start: toBlock + 1 })) {
254
+ orphaned.push({ block, eventId });
255
+ }
226
256
  let removedCount = 0;
227
-
228
- for (let block = blockNumber + 1; block <= synchedBlockNumber; block++) {
229
- const eventIds: string[] = await toArray(this.#eventsByBlockNumber.getValuesAsync(block));
230
-
231
- if (eventIds.length > 0) {
232
- await this.#eventsByBlockNumber.delete(block);
233
-
234
- for (const eventId of eventIds) {
235
- const buffer = await this.#events.getAsync(eventId);
236
- if (!buffer) {
237
- throw new Error(`Event not found for eventId ${eventId}`);
238
- }
239
-
240
- const entry = StoredPrivateEvent.fromBuffer(buffer);
241
- await this.#events.delete(eventId);
242
- await this.#eventsByContractAndEventSelector.deleteValue(
243
- this.#keyFor(entry.contractAddress, entry.eventSelector),
244
- eventId,
245
- );
246
-
247
- removedCount++;
248
- }
257
+ for (const { block, eventId } of orphaned) {
258
+ const buf = await this.#events.getAsync(eventId);
259
+ if (!buf) {
260
+ throw new Error(`Event not found for eventId ${eventId}`);
249
261
  }
262
+ const stored = StoredPrivateEvent.fromBuffer(buf);
263
+ await this.#events.delete(eventId);
264
+ await this.#eventsByContractAndEventSelector.deleteValue(
265
+ this.#keyFor(stored.contractAddress, stored.eventSelector),
266
+ eventId,
267
+ );
268
+ await this.#eventsByBlockNumber.deleteValue(block, eventId);
269
+ removedCount++;
250
270
  }
251
-
252
- this.logger.verbose(`Rolled back ${removedCount} private events after block ${blockNumber}`);
271
+ this.logger.verbose('rolled back private events', { removedCount, toBlock });
253
272
  }
254
273
 
255
274
  /**
@@ -262,28 +281,30 @@ export class PrivateEventStore implements StagedStore {
262
281
  *
263
282
  * @param jobId - The jobId identifying which staged data to commit
264
283
  */
265
- commit(jobId: string): Promise<void> {
266
- return this.#withJobLock(jobId, async () => {
267
- for (const [eventId, entry] of this.#getEventsForJob(jobId).entries()) {
268
- const lookupKey = this.#keyFor(entry.contractAddress, entry.eventSelector);
269
- this.logger.verbose('storing private event log', { eventId, lookupKey });
270
-
271
- await Promise.all([
272
- this.#events.set(eventId, entry.toBuffer()),
273
- this.#eventsByContractAndEventSelector.set(lookupKey, eventId),
274
- this.#eventsByBlockNumber.set(entry.l2BlockNumber, eventId),
275
- ]);
276
- }
284
+ async commit(jobId: string): Promise<void> {
285
+ // Note: Don't use #withJobLock here - commit runs within JobCoordinator's transactionAsync,
286
+ // and awaiting the lock would create a microtask boundary with no pending DB request,
287
+ // causing IndexedDB to auto-commit the transaction.
288
+ for (const [eventId, entry] of this.#getEventsForJob(jobId).entries()) {
289
+ const lookupKey = this.#keyFor(entry.contractAddress, entry.eventSelector);
290
+ this.logger.verbose('storing private event log', { eventId, lookupKey });
291
+
292
+ await Promise.all([
293
+ this.#events.set(eventId, entry.toBuffer()),
294
+ this.#eventsByContractAndEventSelector.set(lookupKey, eventId),
295
+ this.#eventsByBlockNumber.set(entry.l2BlockNumber, eventId),
296
+ ]);
297
+ }
277
298
 
278
- this.#clearJobData(jobId);
279
- });
299
+ this.#clearJobData(jobId);
280
300
  }
281
301
 
282
302
  /**
283
303
  * Discards in memory job data without persisting it.
284
304
  */
285
305
  discardStaged(jobId: string): Promise<void> {
286
- return this.#withJobLock(jobId, () => Promise.resolve(this.#clearJobData(jobId)));
306
+ this.#clearJobData(jobId);
307
+ return Promise.resolve();
287
308
  }
288
309
 
289
310
  /**
@@ -292,13 +313,11 @@ export class PrivateEventStore implements StagedStore {
292
313
  * Returns undefined if the event does not exist in the store overall.
293
314
  */
294
315
  async #readEvent(eventId: string, jobId: string): Promise<StoredPrivateEvent | undefined> {
295
- const eventForJob = this.#getEventsForJob(jobId).get(eventId);
296
- if (eventForJob) {
297
- return eventForJob;
298
- }
299
-
316
+ // Always issue DB read to keep IndexedDB transaction alive (they auto-commit when a new micro-task starts and there
317
+ // are no pending read requests). The staged value still takes precedence if it exists.
300
318
  const buffer = await this.#events.getAsync(eventId);
301
- return buffer ? StoredPrivateEvent.fromBuffer(buffer) : undefined;
319
+ const eventForJob = this.#getEventsForJob(jobId).get(eventId);
320
+ return eventForJob ?? (buffer ? StoredPrivateEvent.fromBuffer(buffer) : undefined);
302
321
  }
303
322
 
304
323
  /**
@@ -2,7 +2,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
3
  import { EventSelector } from '@aztec/stdlib/abi';
4
4
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
- import { L2BlockHash } from '@aztec/stdlib/block';
5
+ import { BlockHash } from '@aztec/stdlib/block';
6
6
  import { TxHash } from '@aztec/stdlib/tx';
7
7
 
8
8
  /** Serializable private event entry with scope tracking. */
@@ -11,7 +11,7 @@ export class StoredPrivateEvent {
11
11
  readonly randomness: Fr,
12
12
  readonly msgContent: Fr[],
13
13
  readonly l2BlockNumber: number,
14
- readonly l2BlockHash: L2BlockHash,
14
+ readonly l2BlockHash: BlockHash,
15
15
  readonly txHash: TxHash,
16
16
  readonly txIndexInBlock: number,
17
17
  readonly eventIndexInTx: number,
@@ -49,7 +49,7 @@ export class StoredPrivateEvent {
49
49
  const msgContentLength = reader.readNumber();
50
50
  const msgContent = reader.readArray(msgContentLength, Fr);
51
51
  const l2BlockNumber = reader.readNumber();
52
- const l2BlockHash = L2BlockHash.fromBuffer(reader);
52
+ const l2BlockHash = BlockHash.fromBuffer(reader);
53
53
  const txHash = TxHash.fromBuffer(reader);
54
54
  const txIndexInBlock = reader.readNumber();
55
55
  const eventIndexInTx = reader.readNumber();
@@ -1,3 +1,3 @@
1
1
  export { SenderTaggingStore } from './sender_tagging_store.js';
2
- export { SenderAddressBookStore } from './sender_address_book_store.js';
2
+ export { TaggingSecretSourcesStore } from './tagging_secret_sources_store.js';
3
3
  export { RecipientTaggingStore } from './recipient_tagging_store.js';
@@ -1,5 +1,5 @@
1
1
  import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
2
- import type { DirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
2
+ import type { AppTaggingSecret } from '@aztec/stdlib/logs';
3
3
 
4
4
  import type { StagedStore } from '../../job_coordinator/job_coordinator.js';
5
5
 
@@ -45,7 +45,11 @@ export class RecipientTaggingStore implements StagedStore {
45
45
  }
46
46
 
47
47
  async #readHighestAgedIndex(jobId: string, secret: string): Promise<number | undefined> {
48
- return this.#getHighestAgedIndexForJob(jobId).get(secret) ?? (await this.#highestAgedIndex.getAsync(secret));
48
+ // Always issue DB read to keep IndexedDB transaction alive (they auto-commit when a new micro-task starts and there
49
+ // are no pending read requests). The staged value still takes precedence if it exists.
50
+ const dbValue = await this.#highestAgedIndex.getAsync(secret);
51
+ const staged = this.#getHighestAgedIndexForJob(jobId).get(secret);
52
+ return staged ?? dbValue;
49
53
  }
50
54
 
51
55
  #writeHighestAgedIndex(jobId: string, secret: string, index: number) {
@@ -62,9 +66,11 @@ export class RecipientTaggingStore implements StagedStore {
62
66
  }
63
67
 
64
68
  async #readHighestFinalizedIndex(jobId: string, secret: string): Promise<number | undefined> {
65
- return (
66
- this.#getHighestFinalizedIndexForJob(jobId).get(secret) ?? (await this.#highestFinalizedIndex.getAsync(secret))
67
- );
69
+ // Always issue DB read to keep IndexedDB transaction alive (they auto-commit when a new micro-task starts and there
70
+ // are no pending read requests). The staged value still takes precedence if it exists.
71
+ const dbValue = await this.#highestFinalizedIndex.getAsync(secret);
72
+ const staged = this.#getHighestFinalizedIndexForJob(jobId).get(secret);
73
+ return staged ?? dbValue;
68
74
  }
69
75
 
70
76
  #writeHighestFinalizedIndex(jobId: string, secret: string, index: number) {
@@ -100,30 +106,34 @@ export class RecipientTaggingStore implements StagedStore {
100
106
  return Promise.resolve();
101
107
  }
102
108
 
103
- getHighestAgedIndex(secret: DirectionalAppTaggingSecret, jobId: string): Promise<number | undefined> {
104
- return this.#readHighestAgedIndex(jobId, secret.toString());
109
+ getHighestAgedIndex(secret: AppTaggingSecret, jobId: string): Promise<number | undefined> {
110
+ return this.#store.transactionAsync(() => this.#readHighestAgedIndex(jobId, secret.toString()));
105
111
  }
106
112
 
107
- async updateHighestAgedIndex(secret: DirectionalAppTaggingSecret, index: number, jobId: string): Promise<void> {
108
- const currentIndex = await this.#readHighestAgedIndex(jobId, secret.toString());
109
- if (currentIndex !== undefined && index <= currentIndex) {
110
- // Log sync should never set a lower highest aged index.
111
- throw new Error(`New highest aged index (${index}) must be higher than the current one (${currentIndex})`);
112
- }
113
- this.#writeHighestAgedIndex(jobId, secret.toString(), index);
113
+ updateHighestAgedIndex(secret: AppTaggingSecret, index: number, jobId: string): Promise<void> {
114
+ return this.#store.transactionAsync(async () => {
115
+ const currentIndex = await this.#readHighestAgedIndex(jobId, secret.toString());
116
+ if (currentIndex !== undefined && index <= currentIndex) {
117
+ // Log sync should never set a lower highest aged index.
118
+ throw new Error(`New highest aged index (${index}) must be higher than the current one (${currentIndex})`);
119
+ }
120
+ this.#writeHighestAgedIndex(jobId, secret.toString(), index);
121
+ });
114
122
  }
115
123
 
116
- getHighestFinalizedIndex(secret: DirectionalAppTaggingSecret, jobId: string): Promise<number | undefined> {
117
- return this.#readHighestFinalizedIndex(jobId, secret.toString());
124
+ getHighestFinalizedIndex(secret: AppTaggingSecret, jobId: string): Promise<number | undefined> {
125
+ return this.#store.transactionAsync(() => this.#readHighestFinalizedIndex(jobId, secret.toString()));
118
126
  }
119
127
 
120
- async updateHighestFinalizedIndex(secret: DirectionalAppTaggingSecret, index: number, jobId: string): Promise<void> {
121
- const currentIndex = await this.#readHighestFinalizedIndex(jobId, secret.toString());
122
- if (currentIndex !== undefined && index < currentIndex) {
123
- // Log sync should never set a lower highest finalized index but it can happen that it would try to set the same
124
- // one because we are loading logs from highest aged index + 1 and not from the highest finalized index.
125
- throw new Error(`New highest finalized index (${index}) must be higher than the current one (${currentIndex})`);
126
- }
127
- this.#writeHighestFinalizedIndex(jobId, secret.toString(), index);
128
+ updateHighestFinalizedIndex(secret: AppTaggingSecret, index: number, jobId: string): Promise<void> {
129
+ return this.#store.transactionAsync(async () => {
130
+ const currentIndex = await this.#readHighestFinalizedIndex(jobId, secret.toString());
131
+ if (currentIndex !== undefined && index < currentIndex) {
132
+ // Log sync should never set a lower highest finalized index but it can happen that it would try to set the same
133
+ // one because we are loading logs from highest aged index + 1 and not from the highest finalized index.
134
+ throw new Error(`New highest finalized index (${index}) must be higher than the current one (${currentIndex})`);
135
+ }
136
+ this.#writeHighestFinalizedIndex(jobId, secret.toString(), index);
137
+ });
128
138
  }
129
139
  }