@aztec/pxe 0.0.1-commit.a072138 → 0.0.1-commit.a5db02d

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 (504) 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 -13
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +90 -28
  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 -34
  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 -95
  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 +139 -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 +1016 -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 -96
  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 +256 -114
  135. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +201 -84
  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 +604 -186
  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 +14 -15
  148. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  149. package/dest/debug/pxe_debug_utils.js +16 -21
  150. package/dest/entrypoints/client/bundle/index.d.ts +4 -1
  151. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  152. package/dest/entrypoints/client/bundle/index.js +3 -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 +35 -8
  156. package/dest/entrypoints/client/lazy/index.d.ts +4 -1
  157. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  158. package/dest/entrypoints/client/lazy/index.js +3 -0
  159. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  160. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  161. package/dest/entrypoints/client/lazy/utils.js +35 -8
  162. package/dest/entrypoints/client/store.d.ts +14 -0
  163. package/dest/entrypoints/client/store.d.ts.map +1 -0
  164. package/dest/entrypoints/client/store.js +28 -0
  165. package/dest/entrypoints/pxe_creation_options.d.ts +16 -2
  166. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  167. package/dest/entrypoints/pxe_creation_options.js +3 -1
  168. package/dest/entrypoints/server/index.d.ts +8 -3
  169. package/dest/entrypoints/server/index.d.ts.map +1 -1
  170. package/dest/entrypoints/server/index.js +6 -2
  171. package/dest/entrypoints/server/store.d.ts +18 -0
  172. package/dest/entrypoints/server/store.d.ts.map +1 -0
  173. package/dest/entrypoints/server/store.js +28 -0
  174. package/dest/entrypoints/server/utils.d.ts +4 -3
  175. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  176. package/dest/entrypoints/server/utils.js +36 -8
  177. package/dest/error_enriching.d.ts +5 -3
  178. package/dest/error_enriching.d.ts.map +1 -1
  179. package/dest/error_enriching.js +13 -11
  180. package/dest/events/event_service.d.ts +15 -6
  181. package/dest/events/event_service.d.ts.map +1 -1
  182. package/dest/events/event_service.js +44 -11
  183. package/dest/events/private_event_filter_validator.d.ts +3 -2
  184. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  185. package/dest/events/private_event_filter_validator.js +15 -0
  186. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  187. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  188. package/dest/hooks/authorize_utility_call.js +4 -0
  189. package/dest/hooks/execution_hooks.d.ts +62 -0
  190. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  191. package/dest/hooks/execution_hooks.js +9 -0
  192. package/dest/hooks/index.d.ts +5 -0
  193. package/dest/hooks/index.d.ts.map +1 -0
  194. package/dest/hooks/index.js +2 -0
  195. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  196. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  197. package/dest/hooks/resolve_custom_request.js +3 -0
  198. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  199. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  200. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  201. package/dest/logs/log_service.d.ts +14 -11
  202. package/dest/logs/log_service.d.ts.map +1 -1
  203. package/dest/logs/log_service.js +193 -91
  204. package/dest/messages/tx_resolver_service.d.ts +17 -0
  205. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  206. package/dest/messages/tx_resolver_service.js +55 -0
  207. package/dest/notes/note_service.d.ts +28 -6
  208. package/dest/notes/note_service.d.ts.map +1 -1
  209. package/dest/notes/note_service.js +84 -59
  210. package/dest/notes_filter.d.ts +24 -0
  211. package/dest/notes_filter.d.ts.map +1 -0
  212. package/dest/notes_filter.js +4 -0
  213. package/dest/oracle_version.d.ts +4 -3
  214. package/dest/oracle_version.d.ts.map +1 -1
  215. package/dest/oracle_version.js +20 -10
  216. package/dest/private_kernel/batch_planner.d.ts +47 -0
  217. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  218. package/dest/private_kernel/batch_planner.js +104 -0
  219. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  220. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  221. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  222. package/dest/private_kernel/hints/index.d.ts +1 -1
  223. package/dest/private_kernel/hints/index.js +1 -1
  224. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  225. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  226. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +135 -70
  227. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  228. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  229. package/dest/private_kernel/hints/test_utils.js +202 -0
  230. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  231. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  232. package/dest/private_kernel/private_kernel_execution_prover.js +164 -82
  233. package/dest/private_kernel/private_kernel_oracle.d.ts +17 -11
  234. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  235. package/dest/private_kernel/private_kernel_oracle.js +47 -29
  236. package/dest/pxe.d.ts +228 -66
  237. package/dest/pxe.d.ts.map +1 -1
  238. package/dest/pxe.js +410 -227
  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 +9 -6
  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 +9 -7
  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 +36 -28
  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 +182 -134
  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 +44 -35
  291. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  292. package/dest/storage/note_store/note_store.js +202 -171
  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 +43 -43
  302. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  303. package/dest/storage/store_identity.d.ts +35 -0
  304. package/dest/storage/store_identity.d.ts.map +1 -0
  305. package/dest/storage/store_identity.js +44 -0
  306. package/dest/storage/tagging_store/index.d.ts +2 -2
  307. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  308. package/dest/storage/tagging_store/index.js +1 -1
  309. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  310. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  311. package/dest/storage/tagging_store/sender_tagging_store.d.ts +45 -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 +182 -119
  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 +34 -10
  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 +4 -9
  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 +5 -7
  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 +41 -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 +106 -37
  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 +711 -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 +314 -214
  394. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +935 -263
  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 +47 -25
  399. package/src/entrypoints/client/bundle/index.ts +3 -0
  400. package/src/entrypoints/client/bundle/utils.ts +41 -9
  401. package/src/entrypoints/client/lazy/index.ts +3 -0
  402. package/src/entrypoints/client/lazy/utils.ts +41 -9
  403. package/src/entrypoints/client/store.ts +38 -0
  404. package/src/entrypoints/pxe_creation_options.ts +21 -1
  405. package/src/entrypoints/server/index.ts +8 -2
  406. package/src/entrypoints/server/store.ts +47 -0
  407. package/src/entrypoints/server/utils.ts +52 -21
  408. package/src/error_enriching.ts +27 -11
  409. package/src/events/event_service.ts +69 -21
  410. package/src/events/private_event_filter_validator.ts +21 -1
  411. package/src/hooks/authorize_utility_call.ts +44 -0
  412. package/src/hooks/execution_hooks.ts +68 -0
  413. package/src/hooks/index.ts +13 -0
  414. package/src/hooks/resolve_custom_request.ts +24 -0
  415. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  416. package/src/logs/log_service.ts +231 -156
  417. package/src/messages/tx_resolver_service.ts +69 -0
  418. package/src/notes/note_service.ts +121 -86
  419. package/src/notes_filter.ts +24 -0
  420. package/src/oracle_version.ts +20 -10
  421. package/src/private_kernel/batch_planner.ts +169 -0
  422. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  423. package/src/private_kernel/hints/index.ts +1 -1
  424. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +176 -119
  425. package/src/private_kernel/hints/test_utils.ts +318 -0
  426. package/src/private_kernel/private_kernel_execution_prover.ts +251 -116
  427. package/src/private_kernel/private_kernel_oracle.ts +65 -36
  428. package/src/pxe.ts +702 -298
  429. package/src/storage/allowed_scopes.ts +14 -0
  430. package/src/storage/anchor_block_store/anchor_block_store.ts +9 -7
  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 +44 -26
  449. package/src/storage/capsule_store/index.ts +1 -0
  450. package/src/storage/contract_store/contract_store.ts +240 -169
  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 +234 -191
  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 +52 -54
  463. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  464. package/src/storage/store_identity.ts +72 -0
  465. package/src/storage/tagging_store/index.ts +1 -1
  466. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -5
  467. package/src/storage/tagging_store/sender_tagging_store.ts +235 -141
  468. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  469. package/src/tagging/constants.ts +19 -9
  470. package/src/tagging/get_all_logs_by_tags.ts +87 -35
  471. package/src/tagging/index.ts +5 -4
  472. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  473. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +301 -0
  474. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +4 -4
  475. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  476. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +52 -17
  477. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +44 -14
  478. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +31 -27
  479. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -60
  480. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  481. package/dest/contract_function_simulator/oracle/oracle.js +0 -356
  482. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  483. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  484. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -80
  485. package/dest/contract_sync/index.d.ts +0 -23
  486. package/dest/contract_sync/index.d.ts.map +0 -1
  487. package/dest/contract_sync/index.js +0 -54
  488. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  489. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  490. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  491. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  492. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  493. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -15
  494. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  495. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  496. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -15
  497. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  498. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -32
  499. package/src/contract_function_simulator/oracle/oracle.ts +0 -630
  500. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
  501. package/src/contract_sync/index.ts +0 -98
  502. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
  503. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -143
  504. 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
+ }
@@ -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();
@@ -0,0 +1,72 @@
1
+ import type { EthAddress } from '@aztec/foundation/eth-address';
2
+ import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
+ import { DatabaseVersion } from '@aztec/stdlib/database-version/version';
4
+
5
+ /** The triple that determine which physical store a logical store name maps to. */
6
+ export type StoreIdentity = {
7
+ /** Chain ID of the L1 the rollup is deployed to. */
8
+ l1ChainId: number;
9
+ /** Address of the rollup contract the store's data pertains to. */
10
+ rollupAddress: EthAddress;
11
+ /** Schema version of the data held in the store. */
12
+ schemaVersion: number;
13
+ };
14
+
15
+ /**
16
+ * Composes the store-name discriminator for a store identity. Two identities map to the same physical store iff
17
+ * their slugs are equal, so the format must stay stable: `<l1ChainId>-<rollupAddress>-v<schemaVersion>` — changing
18
+ * it orphans every existing store.
19
+ */
20
+ export function storeIdentitySlug({ l1ChainId, rollupAddress, schemaVersion }: StoreIdentity): string {
21
+ return `${l1ChainId}-${rollupAddress.toString()}-v${schemaVersion}`;
22
+ }
23
+
24
+ /** Composes the physical store name for a logical store name and identity. */
25
+ export function effectiveStoreName(name: string, identity: StoreIdentity): string {
26
+ return `${name}_${storeIdentitySlug(identity)}`;
27
+ }
28
+
29
+ /**
30
+ * Invariant check for stores whose physical name carries their identity: the recorded version can
31
+ * only disagree with the expected one if there is a store-naming bug.
32
+ */
33
+ export async function assertStoreIdentity(
34
+ store: AztecAsyncKVStore,
35
+ storeName: string,
36
+ identity: StoreIdentity,
37
+ ): Promise<void> {
38
+ const expected = new DatabaseVersion(identity.schemaVersion, identity.rollupAddress);
39
+ const singleton = store.openSingleton<string>('dbVersion');
40
+ const stored = await singleton.getAsync();
41
+ if (stored === undefined) {
42
+ await singleton.set(expected.toBuffer().toString('utf-8'));
43
+ return;
44
+ }
45
+ let storedVersion: DatabaseVersion;
46
+ try {
47
+ storedVersion = DatabaseVersion.fromBuffer(Buffer.from(stored, 'utf-8'));
48
+ } catch {
49
+ throw new StoreIdentityMismatchError(storeName, expected.toString(), stored);
50
+ }
51
+ if (!storedVersion.equals(expected)) {
52
+ throw new StoreIdentityMismatchError(storeName, expected.toString(), storedVersion.toString());
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Thrown when a store's recorded identity does not match the identity it was opened under. Since the identity is
58
+ * part of the physical store name, this can only indicate a store-naming bug; the store is left untouched.
59
+ */
60
+ export class StoreIdentityMismatchError extends Error {
61
+ constructor(
62
+ public readonly storeName: string,
63
+ public readonly expected: string,
64
+ public readonly actual: string,
65
+ ) {
66
+ super(
67
+ `Store '${storeName}' records identity ${actual} but was opened as ${expected}. ` +
68
+ `Refusing to open; data was NOT modified.`,
69
+ );
70
+ this.name = 'StoreIdentityMismatchError';
71
+ }
72
+ }
@@ -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
 
@@ -106,11 +106,11 @@ export class RecipientTaggingStore implements StagedStore {
106
106
  return Promise.resolve();
107
107
  }
108
108
 
109
- getHighestAgedIndex(secret: DirectionalAppTaggingSecret, 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: DirectionalAppTaggingSecret, 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,11 +121,11 @@ export class RecipientTaggingStore implements StagedStore {
121
121
  });
122
122
  }
123
123
 
124
- getHighestFinalizedIndex(secret: DirectionalAppTaggingSecret, 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(secret: DirectionalAppTaggingSecret, index: number, jobId: string): Promise<void> {
128
+ updateHighestFinalizedIndex(secret: AppTaggingSecret, index: number, jobId: string): Promise<void> {
129
129
  return this.#store.transactionAsync(async () => {
130
130
  const currentIndex = await this.#readHighestFinalizedIndex(jobId, secret.toString());
131
131
  if (currentIndex !== undefined && index < currentIndex) {