@aztec/pxe 0.0.1-commit.b6e433891 → 0.0.1-commit.b8a057fa

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 (497) 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 +23 -15
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +84 -28
  14. package/dest/config/index.d.ts +8 -1
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +13 -14
  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/contract_function_simulator.d.ts +27 -21
  31. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/contract_function_simulator.js +86 -42
  33. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  34. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  35. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  36. package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
  37. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  39. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -9
  40. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  41. package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
  42. package/dest/contract_function_simulator/index.d.ts +26 -6
  43. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/index.js +12 -4
  45. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  46. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  47. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  48. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  49. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  50. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  51. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  52. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  53. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  54. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  55. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  56. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  57. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -5
  58. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  59. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -9
  60. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  61. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  62. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  63. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  64. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  65. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  66. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +19 -10
  67. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  68. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +12 -24
  69. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +11 -9
  70. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  71. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -61
  72. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  73. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  74. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  75. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -5
  76. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  77. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +8 -10
  78. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  79. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  80. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  81. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  82. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  83. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  84. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  85. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  86. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  87. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  88. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  89. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  90. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  91. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  92. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +43 -0
  93. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +21 -0
  94. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  95. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +50 -0
  96. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +14 -0
  97. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  98. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  99. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  100. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  101. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  102. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  103. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  104. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  105. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  106. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  107. package/dest/contract_function_simulator/oracle/index.js +1 -1
  108. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -103
  109. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  110. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  111. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  112. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  113. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +74 -0
  114. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  115. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  116. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  117. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  118. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  119. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  120. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +136 -0
  121. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  122. package/dest/contract_function_simulator/oracle/oracle_registry.js +989 -0
  123. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +222 -0
  124. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  125. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
  126. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  127. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  128. package/dest/contract_function_simulator/oracle/private_execution.js +3 -4
  129. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +52 -42
  130. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  131. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +193 -62
  132. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +150 -77
  133. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  134. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +508 -191
  135. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  136. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  137. package/dest/contract_function_simulator/pick_notes.js +20 -3
  138. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  139. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  140. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  141. package/dest/contract_logging.d.ts +9 -4
  142. package/dest/contract_logging.d.ts.map +1 -1
  143. package/dest/contract_logging.js +21 -6
  144. package/dest/debug/pxe_debug_utils.d.ts +4 -9
  145. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  146. package/dest/debug/pxe_debug_utils.js +0 -6
  147. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  148. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  149. package/dest/entrypoints/client/bundle/index.js +0 -1
  150. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  151. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  152. package/dest/entrypoints/client/bundle/utils.js +20 -7
  153. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  154. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  155. package/dest/entrypoints/client/lazy/index.js +0 -1
  156. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  157. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  158. package/dest/entrypoints/client/lazy/utils.js +20 -7
  159. package/dest/entrypoints/pxe_creation_options.d.ts +16 -2
  160. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  161. package/dest/entrypoints/pxe_creation_options.js +3 -1
  162. package/dest/entrypoints/server/index.d.ts +6 -4
  163. package/dest/entrypoints/server/index.d.ts.map +1 -1
  164. package/dest/entrypoints/server/index.js +4 -3
  165. package/dest/entrypoints/server/utils.d.ts +4 -3
  166. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  167. package/dest/entrypoints/server/utils.js +20 -6
  168. package/dest/error_enriching.d.ts +5 -3
  169. package/dest/error_enriching.d.ts.map +1 -1
  170. package/dest/error_enriching.js +13 -11
  171. package/dest/events/event_service.d.ts +15 -6
  172. package/dest/events/event_service.d.ts.map +1 -1
  173. package/dest/events/event_service.js +44 -11
  174. package/dest/events/private_event_filter_validator.d.ts +3 -2
  175. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  176. package/dest/events/private_event_filter_validator.js +15 -0
  177. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  178. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  179. package/dest/hooks/authorize_utility_call.js +4 -0
  180. package/dest/hooks/execution_hooks.d.ts +62 -0
  181. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  182. package/dest/hooks/execution_hooks.js +9 -0
  183. package/dest/hooks/index.d.ts +5 -0
  184. package/dest/hooks/index.d.ts.map +1 -0
  185. package/dest/hooks/index.js +1 -0
  186. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  187. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  188. package/dest/hooks/resolve_custom_request.js +3 -0
  189. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +48 -0
  190. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  191. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  192. package/dest/logs/log_service.d.ts +13 -12
  193. package/dest/logs/log_service.d.ts.map +1 -1
  194. package/dest/logs/log_service.js +186 -81
  195. package/dest/messages/tx_resolver_service.d.ts +17 -0
  196. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  197. package/dest/messages/tx_resolver_service.js +55 -0
  198. package/dest/notes/note_service.d.ts +27 -6
  199. package/dest/notes/note_service.d.ts.map +1 -1
  200. package/dest/notes/note_service.js +80 -56
  201. package/dest/notes_filter.d.ts +2 -3
  202. package/dest/notes_filter.d.ts.map +1 -1
  203. package/dest/oracle_version.d.ts +4 -3
  204. package/dest/oracle_version.d.ts.map +1 -1
  205. package/dest/oracle_version.js +20 -10
  206. package/dest/private_kernel/batch_planner.d.ts +47 -0
  207. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  208. package/dest/private_kernel/batch_planner.js +104 -0
  209. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
  210. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  211. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +7 -3
  212. package/dest/private_kernel/hints/test_utils.d.ts +1 -1
  213. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
  214. package/dest/private_kernel/hints/test_utils.js +3 -4
  215. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  216. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  217. package/dest/private_kernel/private_kernel_execution_prover.js +203 -89
  218. package/dest/private_kernel/private_kernel_oracle.d.ts +12 -10
  219. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  220. package/dest/private_kernel/private_kernel_oracle.js +40 -26
  221. package/dest/pxe.d.ts +167 -55
  222. package/dest/pxe.d.ts.map +1 -1
  223. package/dest/pxe.js +337 -207
  224. package/dest/storage/allowed_scopes.d.ts +6 -0
  225. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  226. package/dest/storage/allowed_scopes.js +7 -0
  227. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
  228. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  229. package/dest/storage/anchor_block_store/anchor_block_store.js +9 -7
  230. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  231. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  232. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  233. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  234. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  235. package/dest/storage/backwards_compatibility_tests/schema_tests.js +647 -0
  236. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  237. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  238. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  239. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  240. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  241. package/dest/storage/capsule_store/capsule_service.js +47 -0
  242. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  243. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  244. package/dest/storage/capsule_store/capsule_store.js +36 -28
  245. package/dest/storage/capsule_store/index.d.ts +2 -1
  246. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  247. package/dest/storage/capsule_store/index.js +1 -0
  248. package/dest/storage/contract_store/contract_store.d.ts +27 -24
  249. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  250. package/dest/storage/contract_store/contract_store.js +70 -98
  251. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  252. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  253. package/dest/storage/fact_store/fact_service.js +45 -0
  254. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  255. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  256. package/dest/storage/fact_store/fact_store.js +408 -0
  257. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  258. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  259. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  260. package/dest/storage/fact_store/index.d.ts +6 -0
  261. package/dest/storage/fact_store/index.d.ts.map +1 -0
  262. package/dest/storage/fact_store/index.js +4 -0
  263. package/dest/storage/fact_store/origin_state.d.ts +57 -0
  264. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  265. package/dest/storage/fact_store/origin_state.js +53 -0
  266. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  267. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  268. package/dest/storage/fact_store/stored_fact.js +64 -0
  269. package/dest/storage/index.d.ts +3 -2
  270. package/dest/storage/index.d.ts.map +1 -1
  271. package/dest/storage/index.js +2 -1
  272. package/dest/storage/metadata.d.ts +2 -2
  273. package/dest/storage/metadata.d.ts.map +1 -1
  274. package/dest/storage/metadata.js +1 -1
  275. package/dest/storage/note_store/note_store.d.ts +42 -33
  276. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  277. package/dest/storage/note_store/note_store.js +199 -170
  278. package/dest/storage/note_store/stored_note.d.ts +3 -8
  279. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  280. package/dest/storage/note_store/stored_note.js +4 -20
  281. package/dest/storage/open_pxe_stores.d.ts +35 -0
  282. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  283. package/dest/storage/open_pxe_stores.js +29 -0
  284. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  285. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  286. package/dest/storage/private_event_store/private_event_store.js +43 -43
  287. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  288. package/dest/storage/tagging_store/index.d.ts +2 -2
  289. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  290. package/dest/storage/tagging_store/index.js +1 -1
  291. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  292. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  293. package/dest/storage/tagging_store/sender_tagging_store.d.ts +5 -5
  294. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  295. package/dest/storage/tagging_store/sender_tagging_store.js +3 -3
  296. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  297. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  298. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  299. package/dest/tagging/constants.d.ts +2 -2
  300. package/dest/tagging/constants.d.ts.map +1 -1
  301. package/dest/tagging/constants.js +5 -8
  302. package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
  303. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  304. package/dest/tagging/get_all_logs_by_tags.js +36 -37
  305. package/dest/tagging/index.d.ts +5 -4
  306. package/dest/tagging/index.d.ts.map +1 -1
  307. package/dest/tagging/index.js +4 -3
  308. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  309. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  310. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  311. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +69 -0
  312. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  313. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +203 -0
  314. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  315. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  316. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  317. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  318. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  319. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -5
  320. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  321. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +26 -14
  322. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -6
  323. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  324. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +21 -0
  325. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
  326. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  327. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +2 -2
  328. package/package.json +20 -17
  329. package/src/bin/check_oracle_version.ts +51 -133
  330. package/src/bin/index.ts +5 -0
  331. package/src/bin/oracle_version_helpers.ts +311 -0
  332. package/src/block_synchronizer/block_stream_source.ts +42 -0
  333. package/src/block_synchronizer/block_synchronizer.ts +102 -39
  334. package/src/config/index.ts +15 -8
  335. package/src/config/package_info.ts +1 -1
  336. package/src/contract/contract_class_service.ts +83 -0
  337. package/src/contract/contract_sync_service.ts +176 -0
  338. package/src/contract/helpers.ts +35 -0
  339. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  340. package/src/contract_function_simulator/contract_function_simulator.ts +140 -58
  341. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  342. package/src/contract_function_simulator/execution_note_cache.ts +8 -29
  343. package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
  344. package/src/contract_function_simulator/index.ts +69 -5
  345. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  346. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  347. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  348. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  349. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -7
  350. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  351. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  352. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -20
  353. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +14 -61
  354. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  355. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -8
  356. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  357. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  358. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  359. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  360. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +58 -0
  361. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +53 -0
  362. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +15 -0
  363. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  364. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  365. package/src/contract_function_simulator/oracle/index.ts +1 -15
  366. package/src/contract_function_simulator/oracle/interfaces.ts +11 -176
  367. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +120 -0
  368. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  369. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  370. package/src/contract_function_simulator/oracle/oracle_registry.ts +689 -0
  371. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +964 -0
  372. package/src/contract_function_simulator/oracle/private_execution.ts +3 -4
  373. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +240 -86
  374. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +783 -305
  375. package/src/contract_function_simulator/pick_notes.ts +22 -3
  376. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  377. package/src/contract_logging.ts +18 -5
  378. package/src/debug/pxe_debug_utils.ts +4 -12
  379. package/src/entrypoints/client/bundle/index.ts +0 -1
  380. package/src/entrypoints/client/bundle/utils.ts +19 -7
  381. package/src/entrypoints/client/lazy/index.ts +0 -1
  382. package/src/entrypoints/client/lazy/utils.ts +19 -7
  383. package/src/entrypoints/pxe_creation_options.ts +21 -1
  384. package/src/entrypoints/server/index.ts +6 -3
  385. package/src/entrypoints/server/utils.ts +24 -7
  386. package/src/error_enriching.ts +27 -11
  387. package/src/events/event_service.ts +69 -21
  388. package/src/events/private_event_filter_validator.ts +21 -1
  389. package/src/hooks/authorize_utility_call.ts +44 -0
  390. package/src/hooks/execution_hooks.ts +68 -0
  391. package/src/hooks/index.ts +12 -0
  392. package/src/hooks/resolve_custom_request.ts +24 -0
  393. package/src/hooks/resolve_tagging_secret_strategy.ts +57 -0
  394. package/src/logs/log_service.ts +224 -146
  395. package/src/messages/tx_resolver_service.ts +69 -0
  396. package/src/notes/note_service.ts +119 -85
  397. package/src/notes_filter.ts +1 -3
  398. package/src/oracle_version.ts +20 -10
  399. package/src/private_kernel/batch_planner.ts +168 -0
  400. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +12 -2
  401. package/src/private_kernel/hints/test_utils.ts +3 -10
  402. package/src/private_kernel/private_kernel_execution_prover.ts +335 -121
  403. package/src/private_kernel/private_kernel_oracle.ts +58 -29
  404. package/src/pxe.ts +533 -236
  405. package/src/storage/allowed_scopes.ts +14 -0
  406. package/src/storage/anchor_block_store/anchor_block_store.ts +9 -7
  407. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  408. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  409. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  410. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  411. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  412. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  413. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  414. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  415. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  416. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  417. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  418. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  419. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  420. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  421. package/src/storage/backwards_compatibility_tests/schema_tests.ts +774 -0
  422. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  423. package/src/storage/capsule_store/capsule_service.ts +85 -0
  424. package/src/storage/capsule_store/capsule_store.ts +44 -26
  425. package/src/storage/capsule_store/index.ts +1 -0
  426. package/src/storage/contract_store/contract_store.ts +96 -124
  427. package/src/storage/fact_store/fact_service.ts +69 -0
  428. package/src/storage/fact_store/fact_store.ts +487 -0
  429. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  430. package/src/storage/fact_store/index.ts +14 -0
  431. package/src/storage/fact_store/origin_state.ts +75 -0
  432. package/src/storage/fact_store/stored_fact.ts +80 -0
  433. package/src/storage/index.ts +2 -1
  434. package/src/storage/metadata.ts +1 -1
  435. package/src/storage/note_store/note_store.ts +228 -192
  436. package/src/storage/note_store/stored_note.ts +5 -27
  437. package/src/storage/open_pxe_stores.ts +52 -0
  438. package/src/storage/private_event_store/private_event_store.ts +52 -54
  439. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  440. package/src/storage/tagging_store/index.ts +1 -1
  441. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
  442. package/src/storage/tagging_store/sender_tagging_store.ts +6 -6
  443. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  444. package/src/tagging/constants.ts +6 -8
  445. package/src/tagging/get_all_logs_by_tags.ts +78 -50
  446. package/src/tagging/index.ts +4 -3
  447. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  448. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +301 -0
  449. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  450. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  451. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +41 -19
  452. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +23 -8
  453. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +4 -5
  454. package/dest/access_scopes.d.ts +0 -9
  455. package/dest/access_scopes.d.ts.map +0 -1
  456. package/dest/access_scopes.js +0 -6
  457. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +0 -16
  458. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +0 -1
  459. package/dest/contract_function_simulator/noir-structs/message_tx_context.js +0 -57
  460. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
  461. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
  462. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -42
  463. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -61
  464. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  465. package/dest/contract_function_simulator/oracle/oracle.js +0 -437
  466. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  467. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  468. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -80
  469. package/dest/contract_sync/contract_sync_service.d.ts +0 -45
  470. package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
  471. package/dest/contract_sync/contract_sync_service.js +0 -114
  472. package/dest/contract_sync/helpers.d.ts +0 -29
  473. package/dest/contract_sync/helpers.d.ts.map +0 -1
  474. package/dest/contract_sync/helpers.js +0 -55
  475. package/dest/messages/message_context_service.d.ts +0 -17
  476. package/dest/messages/message_context_service.d.ts.map +0 -1
  477. package/dest/messages/message_context_service.js +0 -36
  478. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  479. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  480. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  481. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  482. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  483. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  484. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  485. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  486. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
  487. package/src/access_scopes.ts +0 -9
  488. package/src/contract_function_simulator/noir-structs/message_tx_context.ts +0 -55
  489. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -135
  490. package/src/contract_function_simulator/oracle/oracle.ts +0 -675
  491. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
  492. package/src/contract_sync/contract_sync_service.ts +0 -181
  493. package/src/contract_sync/helpers.ts +0 -98
  494. package/src/messages/message_context_service.ts +0 -45
  495. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
  496. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -140
  497. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
@@ -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
+ }
@@ -28,25 +28,35 @@ type PrivateEventMetadata = InTx & {
28
28
  eventIndexInTx: number;
29
29
  };
30
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
+
31
38
  /**
32
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.
33
43
  */
34
44
  export class PrivateEventStore implements StagedStore {
35
45
  readonly storeName: string = 'private_event';
36
46
 
37
47
  #store: AztecAsyncKVStore;
38
48
  /** Actual private event log entries, keyed by siloedEventCommitment */
39
- #events: AztecAsyncMap<string, Buffer>;
49
+ #events: AztecAsyncMap<EventId, StoredEventBuffer>;
40
50
  /** Multi-map from contractAddress_eventSelector to siloedEventCommitment for efficient lookup */
41
- #eventsByContractAndEventSelector: AztecAsyncMultiMap<string, string>;
42
- /** Multi-map from block number to siloedEventCommitment for rollback support */
43
- #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>;
44
54
 
45
55
  /** jobId => eventId (event siloed nullifier) => StoredPrivateEvent */
46
- #eventsForJob: Map<string, Map<string, StoredPrivateEvent>>;
56
+ #eventsForJob: Map<JobId, Map<EventId, StoredPrivateEvent>>;
47
57
 
48
58
  /** Per-job locks to prevent concurrent writes from affecting each other. */
49
- #jobLocks: Map<string, Semaphore>;
59
+ #jobLocks: Map<JobId, Semaphore>;
50
60
 
51
61
  logger = createLogger('private_event_store');
52
62
 
@@ -216,61 +226,49 @@ export class PrivateEventStore implements StagedStore {
216
226
  });
217
227
  }
218
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
+
219
238
  /**
220
- * Rolls back private events that were stored after a given `blockNumber` and up to `synchedBlockNumber` (the block
221
- * number up to which PXE managed to sync before the reorg happened).
222
- *
223
- * We don't need staged writes for a rollback since it's handled in the context of a blockchain rewind.
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.
224
242
  *
225
- * Rollbacks are handled by the BlockSynchronizer, which runs a DB transaction across stores when it detects a
226
- * re-org, including setting the new anchor block after rolling back.
227
- *
228
- * So if anything fails in the process of rolling back any store, all DB changes occurring during rollbacks will be
229
- * lost and the anchor block will not be updated; which means this code will eventually need to run again
230
- * (i.e.: PXE will detect it's basing it work on an invalid block hash, then which re-triggers rewind).
231
- *
232
- * For further details, refer to `BlockSynchronizer#handleBlockStreamEvent`.
233
- *
234
- * 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.
235
246
  */
236
- public async rollback(blockNumber: number, synchedBlockNumber: number): Promise<void> {
237
- // First pass: collect all event IDs for all blocks, starting reads during iteration to keep tx alive.
238
- const eventsByBlock: Map<number, { eventId: string; eventReadPromise: Promise<Buffer | undefined> }[]> = new Map();
239
-
240
- for (let block = blockNumber + 1; block <= synchedBlockNumber; block++) {
241
- const blockEvents: { eventId: string; eventReadPromise: Promise<Buffer | undefined> }[] = [];
242
- for await (const eventId of this.#eventsByBlockNumber.getValuesAsync(block)) {
243
- // Start read immediately during iteration to keep IndexedDB transaction alive
244
- blockEvents.push({ eventId, eventReadPromise: this.#events.getAsync(eventId) });
245
- }
246
- if (blockEvents.length > 0) {
247
- eventsByBlock.set(block, blockEvents);
248
- }
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 });
249
255
  }
250
-
251
- // Second pass: await reads and perform deletes
252
256
  let removedCount = 0;
253
- for (const [block, events] of eventsByBlock) {
254
- await this.#eventsByBlockNumber.delete(block);
255
-
256
- for (const { eventId, eventReadPromise } of events) {
257
- const buffer = await eventReadPromise;
258
- if (!buffer) {
259
- throw new Error(`Event not found for eventId ${eventId}`);
260
- }
261
-
262
- const entry = StoredPrivateEvent.fromBuffer(buffer);
263
- await this.#events.delete(eventId);
264
- await this.#eventsByContractAndEventSelector.deleteValue(
265
- this.#keyFor(entry.contractAddress, entry.eventSelector),
266
- eventId,
267
- );
268
-
269
- removedCount++;
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}`);
270
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++;
271
270
  }
272
-
273
- this.logger.verbose(`Rolled back ${removedCount} private events after block ${blockNumber}`);
271
+ this.logger.verbose('rolled back private events', { removedCount, toBlock });
274
272
  }
275
273
 
276
274
  /**
@@ -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 = new BlockHash(Fr.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 { ExtendedDirectionalAppTaggingSecret } 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
 
@@ -106,11 +106,11 @@ export class RecipientTaggingStore implements StagedStore {
106
106
  return Promise.resolve();
107
107
  }
108
108
 
109
- getHighestAgedIndex(secret: ExtendedDirectionalAppTaggingSecret, jobId: string): Promise<number | undefined> {
109
+ getHighestAgedIndex(secret: AppTaggingSecret, jobId: string): Promise<number | undefined> {
110
110
  return this.#store.transactionAsync(() => this.#readHighestAgedIndex(jobId, secret.toString()));
111
111
  }
112
112
 
113
- updateHighestAgedIndex(secret: ExtendedDirectionalAppTaggingSecret, index: number, jobId: string): Promise<void> {
113
+ updateHighestAgedIndex(secret: AppTaggingSecret, index: number, jobId: string): Promise<void> {
114
114
  return this.#store.transactionAsync(async () => {
115
115
  const currentIndex = await this.#readHighestAgedIndex(jobId, secret.toString());
116
116
  if (currentIndex !== undefined && index <= currentIndex) {
@@ -121,15 +121,11 @@ export class RecipientTaggingStore implements StagedStore {
121
121
  });
122
122
  }
123
123
 
124
- getHighestFinalizedIndex(secret: ExtendedDirectionalAppTaggingSecret, jobId: string): Promise<number | undefined> {
124
+ getHighestFinalizedIndex(secret: AppTaggingSecret, jobId: string): Promise<number | undefined> {
125
125
  return this.#store.transactionAsync(() => this.#readHighestFinalizedIndex(jobId, secret.toString()));
126
126
  }
127
127
 
128
- updateHighestFinalizedIndex(
129
- secret: ExtendedDirectionalAppTaggingSecret,
130
- index: number,
131
- jobId: string,
132
- ): Promise<void> {
128
+ updateHighestFinalizedIndex(secret: AppTaggingSecret, index: number, jobId: string): Promise<void> {
133
129
  return this.#store.transactionAsync(async () => {
134
130
  const currentIndex = await this.#readHighestFinalizedIndex(jobId, secret.toString());
135
131
  if (currentIndex !== undefined && index < currentIndex) {
@@ -1,5 +1,5 @@
1
1
  import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
2
- import { ExtendedDirectionalAppTaggingSecret, SiloedTag, type TaggingIndexRange } from '@aztec/stdlib/logs';
2
+ import { AppTaggingSecret, SiloedTag, type TaggingIndexRange } from '@aztec/stdlib/logs';
3
3
  import { TxEffect, TxHash } from '@aztec/stdlib/tx';
4
4
 
5
5
  import type { StagedStore } from '../../job_coordinator/job_coordinator.js';
@@ -218,7 +218,7 @@ export class SenderTaggingStore implements StagedStore {
218
218
  * [startIndex, endIndex). Returns an empty array if no pending indexes exist in the range.
219
219
  */
220
220
  getTxHashesOfPendingIndexes(
221
- secret: ExtendedDirectionalAppTaggingSecret,
221
+ secret: AppTaggingSecret,
222
222
  startIndex: number,
223
223
  endIndex: number,
224
224
  jobId: string,
@@ -237,7 +237,7 @@ export class SenderTaggingStore implements StagedStore {
237
237
  * @param secret - The secret to get the last finalized index for.
238
238
  * @returns The last (highest) finalized index for the given secret.
239
239
  */
240
- getLastFinalizedIndex(secret: ExtendedDirectionalAppTaggingSecret, jobId: string): Promise<number | undefined> {
240
+ getLastFinalizedIndex(secret: AppTaggingSecret, jobId: string): Promise<number | undefined> {
241
241
  return this.#store.transactionAsync(() => this.#readLastFinalizedIndex(jobId, secret.toString()));
242
242
  }
243
243
 
@@ -247,7 +247,7 @@ export class SenderTaggingStore implements StagedStore {
247
247
  * @param secret - The directional app tagging secret to query the last used index for.
248
248
  * @returns The last used index.
249
249
  */
250
- getLastUsedIndex(secret: ExtendedDirectionalAppTaggingSecret, jobId: string): Promise<number | undefined> {
250
+ getLastUsedIndex(secret: AppTaggingSecret, jobId: string): Promise<number | undefined> {
251
251
  const secretStr = secret.toString();
252
252
 
253
253
  return this.#store.transactionAsync(async () => {
@@ -449,11 +449,11 @@ export class SenderTaggingStore implements StagedStore {
449
449
  const pendingEntry = matchingEntries[0];
450
450
 
451
451
  // Expand each matching entry's range and recompute siloed tags for each index.
452
- const extendedSecret = ExtendedDirectionalAppTaggingSecret.fromString(secret);
452
+ const appTaggingSecret = AppTaggingSecret.fromString(secret);
453
453
  let highestSurvivingIndex: number | undefined;
454
454
 
455
455
  for (let index = pendingEntry.lowestIndex; index <= pendingEntry.highestIndex; index++) {
456
- const siloedTag = await SiloedTag.compute({ extendedSecret, index });
456
+ const siloedTag = await SiloedTag.compute({ extendedSecret: appTaggingSecret, index });
457
457
  if (onChainTags.has(siloedTag.value.toString())) {
458
458
  highestSurvivingIndex = highestSurvivingIndex !== undefined ? Math.max(highestSurvivingIndex, index) : index;
459
459
  }
@@ -0,0 +1,138 @@
1
+ import { Point } from '@aztec/foundation/curves/grumpkin';
2
+ import { toArray } from '@aztec/foundation/iterable';
3
+ import type { AztecAsyncKVStore, AztecAsyncMap, AztecAsyncMultiMap } from '@aztec/kv-store';
4
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
+
6
+ /**
7
+ * The kinds of shared secret an entry can hold.
8
+ */
9
+ export type SharedSecretKind = 'arbitrary-secret' | 'handshake';
10
+
11
+ /** A shared secret registered for a recipient, with the kind that determines which tag streams it backs. */
12
+ export type SharedSecret = { kind: SharedSecretKind; secret: Point };
13
+
14
+ /**
15
+ * Stores the sources from which directional app tagging secrets are derived during recipient log synchronization.
16
+ *
17
+ * Two kinds of source are held:
18
+ * - Sender addresses: combined with a recipient to derive a shared tagging secret via ECDH. These are global (not
19
+ * scoped to a recipient) because the per-recipient binding comes from re-mixing the recipient's keys during
20
+ * derivation, so each account only ever derives secrets meant for it.
21
+ * - Pre-shared tagging secrets: shared secret points registered directly, bypassing ECDH. These are scoped to a
22
+ * specific recipient, since the derivation of the directional app tagging secret does not require any secret
23
+ * recipient data: given the original secret anyone can derive a recipient's app-siloed directional tagging secret,
24
+ * and so these must not be reused across recipients to preserve privacy. Each carries the {@link SharedSecretKind}
25
+ * it was registered through, which determines the tag streams it is scanned under.
26
+ */
27
+ export class TaggingSecretSourcesStore {
28
+ #store: AztecAsyncKVStore;
29
+ #senders: AztecAsyncMap<string, true>;
30
+ #sharedSecretsByRecipient: AztecAsyncMultiMap<string, StoredSharedSecret>;
31
+
32
+ constructor(store: AztecAsyncKVStore) {
33
+ this.#store = store;
34
+
35
+ this.#senders = this.#store.openMap('senders');
36
+ this.#sharedSecretsByRecipient = this.#store.openMultiMap('recipient_shared_secrets');
37
+ }
38
+
39
+ addSender(address: AztecAddress): Promise<boolean> {
40
+ return this.#store.transactionAsync(async () => {
41
+ if (await this.#senders.hasAsync(address.toString())) {
42
+ return false;
43
+ }
44
+
45
+ await this.#senders.set(address.toString(), true);
46
+
47
+ return true;
48
+ });
49
+ }
50
+
51
+ getSenders(): Promise<AztecAddress[]> {
52
+ return this.#store.transactionAsync(async () => {
53
+ return (await toArray(this.#senders.keysAsync())).map(AztecAddress.fromStringUnsafe);
54
+ });
55
+ }
56
+
57
+ removeSender(address: AztecAddress): Promise<boolean> {
58
+ return this.#store.transactionAsync(async () => {
59
+ if (!(await this.#senders.hasAsync(address.toString()))) {
60
+ return false;
61
+ }
62
+
63
+ await this.#senders.delete(address.toString());
64
+
65
+ return true;
66
+ });
67
+ }
68
+
69
+ /**
70
+ * Registers a pre-shared tagging secret scoped to a recipient.
71
+ * @returns true if the secret was newly added, false if it was already registered for that recipient.
72
+ */
73
+ addSharedSecret(recipient: AztecAddress, kind: SharedSecretKind, secret: Point): Promise<boolean> {
74
+ return this.#store.transactionAsync(async () => {
75
+ const secretStr = secret.toString();
76
+ // MultiMap.set silently ignores an identical (key, value), so we scan to report whether this is a new secret.
77
+ for await (const existing of this.#sharedSecretsByRecipient.getValuesAsync(recipient.toString())) {
78
+ if (existing.secret === secretStr) {
79
+ if (existing.kind !== kind) {
80
+ throw new Error(
81
+ `Secret already registered for recipient with kind '${existing.kind}', cannot re-register it as '${kind}'.`,
82
+ );
83
+ }
84
+ return false;
85
+ }
86
+ }
87
+
88
+ await this.#sharedSecretsByRecipient.set(recipient.toString(), { kind, secret: secretStr });
89
+
90
+ return true;
91
+ });
92
+ }
93
+
94
+ /** Returns the pre-shared tagging secrets registered for a given recipient. */
95
+ getSharedSecretsForRecipient(recipient: AztecAddress): Promise<SharedSecret[]> {
96
+ return this.#store.transactionAsync(async () => {
97
+ return (await toArray(this.#sharedSecretsByRecipient.getValuesAsync(recipient.toString()))).map(
98
+ deserializeSharedSecret,
99
+ );
100
+ });
101
+ }
102
+
103
+ /** Returns every registered pre-shared tagging secret, each paired with the recipient it is scoped to. */
104
+ getAllSharedSecrets(): Promise<{ recipient: AztecAddress; kind: SharedSecretKind; secret: Point }[]> {
105
+ return this.#store.transactionAsync(async () => {
106
+ const entries = await toArray(this.#sharedSecretsByRecipient.entriesAsync());
107
+ return entries.map(([recipient, entry]) => ({
108
+ recipient: AztecAddress.fromStringUnsafe(recipient),
109
+ ...deserializeSharedSecret(entry),
110
+ }));
111
+ });
112
+ }
113
+
114
+ /**
115
+ * Removes a pre-shared tagging secret scoped to a recipient. Both the secret and its kind must match.
116
+ * @returns true if the secret was registered and removed, false if it was not registered for that recipient.
117
+ */
118
+ removeSharedSecret(recipient: AztecAddress, kind: SharedSecretKind, secret: Point): Promise<boolean> {
119
+ return this.#store.transactionAsync(async () => {
120
+ const secretStr = secret.toString();
121
+ for await (const existing of this.#sharedSecretsByRecipient.getValuesAsync(recipient.toString())) {
122
+ if (existing.kind === kind && existing.secret === secretStr) {
123
+ await this.#sharedSecretsByRecipient.deleteValue(recipient.toString(), existing);
124
+ return true;
125
+ }
126
+ }
127
+
128
+ return false;
129
+ });
130
+ }
131
+ }
132
+
133
+ /** The wire form a shared secret entry is persisted as. */
134
+ type StoredSharedSecret = { kind: SharedSecretKind; secret: string };
135
+
136
+ function deserializeSharedSecret(entry: StoredSharedSecret): SharedSecret {
137
+ return { kind: entry.kind, secret: Point.fromString(entry.secret) };
138
+ }
@@ -1,10 +1,8 @@
1
- // This window has to be as large as the largest expected number of logs emitted in a tx for a given directional app
2
- // tagging secret. If we get more tag indexes consumed than this window, an error is thrown in `PXE::proveTx` function.
3
- // This is set to a larger value than MAX_PRIVATE_LOGS_PER_TX (currently 64) because there could be more than
4
- // MAX_PRIVATE_LOGS_PER_TX indexes consumed in case the logs are squashed. This happens when the log contains a note
5
- // and the note is nullified in the same tx.
1
+ import { MAX_PRIVATE_LOGS_PER_TX } from '@aztec/constants';
2
+
3
+ // This window has to cover the largest expected number of unfinalized logs emitted for a given directional app tagging
4
+ // secret. If more tag indexes are consumed than this window, an error is thrown in `PXE::proveTx`.
6
5
  //
7
6
  // Having a large window significantly slowed down `e2e_l1_with_wall_time` test as there we perform sync for more than
8
- // 1000 secrets. For this reason we set it to a relatively low value of 20. 20 should be sufficient for all the use
9
- // cases.
10
- export const UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN = 20;
7
+ // 1000 secrets, so keep this bounded to the per-tx private log limit.
8
+ export const UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN = MAX_PRIVATE_LOGS_PER_TX;