@aztec/pxe 0.0.1-commit.1142ef1 → 0.0.1-commit.11bf3dd6e

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 (302) hide show
  1. package/dest/bin/check_oracle_version.js +5 -5
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +16 -6
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  4. package/dest/block_synchronizer/block_synchronizer.js +91 -22
  5. package/dest/config/index.d.ts +4 -2
  6. package/dest/config/index.d.ts.map +1 -1
  7. package/dest/config/index.js +12 -2
  8. package/dest/config/package_info.js +1 -1
  9. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  10. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  11. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  12. package/dest/contract_function_simulator/contract_function_simulator.d.ts +66 -36
  13. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  14. package/dest/contract_function_simulator/contract_function_simulator.js +230 -89
  15. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  16. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  17. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  18. package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
  19. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/execution_note_cache.js +45 -28
  21. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
  22. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
  24. package/dest/contract_function_simulator/index.d.ts +3 -2
  25. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  26. package/dest/contract_function_simulator/index.js +2 -1
  27. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -7
  28. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  29. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +9 -11
  30. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
  31. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
  32. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  33. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  34. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -4
  35. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -8
  36. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +7 -12
  38. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  39. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  41. package/dest/contract_function_simulator/oracle/interfaces.d.ts +67 -47
  42. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  44. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  45. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +47 -0
  46. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
  47. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  48. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +6 -6
  49. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  50. package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
  51. package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -42
  52. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  53. package/dest/contract_function_simulator/oracle/oracle.js +327 -119
  54. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
  55. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  56. package/dest/contract_function_simulator/oracle/private_execution.js +5 -38
  57. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +59 -76
  58. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  59. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +125 -90
  60. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +140 -73
  61. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  62. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +347 -162
  63. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  64. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  65. package/dest/contract_function_simulator/pick_notes.js +20 -3
  66. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  67. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  68. package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
  69. package/dest/contract_logging.d.ts +27 -0
  70. package/dest/contract_logging.d.ts.map +1 -0
  71. package/dest/contract_logging.js +38 -0
  72. package/dest/contract_sync/contract_sync_service.d.ts +44 -0
  73. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  74. package/dest/contract_sync/contract_sync_service.js +116 -0
  75. package/dest/contract_sync/helpers.d.ts +28 -0
  76. package/dest/contract_sync/helpers.d.ts.map +1 -0
  77. package/dest/contract_sync/helpers.js +60 -0
  78. package/dest/debug/pxe_debug_utils.d.ts +24 -10
  79. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  80. package/dest/debug/pxe_debug_utils.js +28 -17
  81. package/dest/entrypoints/client/bundle/index.d.ts +3 -1
  82. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  83. package/dest/entrypoints/client/bundle/index.js +2 -0
  84. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  85. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  86. package/dest/entrypoints/client/bundle/utils.js +23 -9
  87. package/dest/entrypoints/client/lazy/index.d.ts +3 -1
  88. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  89. package/dest/entrypoints/client/lazy/index.js +2 -0
  90. package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
  91. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  92. package/dest/entrypoints/client/lazy/utils.js +24 -10
  93. package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
  94. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  95. package/dest/entrypoints/pxe_creation_options.js +3 -1
  96. package/dest/entrypoints/server/index.d.ts +5 -2
  97. package/dest/entrypoints/server/index.d.ts.map +1 -1
  98. package/dest/entrypoints/server/index.js +4 -1
  99. package/dest/entrypoints/server/utils.d.ts +2 -2
  100. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  101. package/dest/entrypoints/server/utils.js +30 -11
  102. package/dest/events/event_service.d.ts +7 -6
  103. package/dest/events/event_service.d.ts.map +1 -1
  104. package/dest/events/event_service.js +33 -24
  105. package/dest/events/private_event_filter_validator.d.ts +6 -5
  106. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  107. package/dest/events/private_event_filter_validator.js +20 -6
  108. package/dest/job_coordinator/job_coordinator.d.ts +3 -2
  109. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
  110. package/dest/job_coordinator/job_coordinator.js +3 -2
  111. package/dest/logs/log_service.d.ts +11 -9
  112. package/dest/logs/log_service.d.ts.map +1 -1
  113. package/dest/logs/log_service.js +52 -64
  114. package/dest/messages/message_context_service.d.ts +17 -0
  115. package/dest/messages/message_context_service.d.ts.map +1 -0
  116. package/dest/messages/message_context_service.js +36 -0
  117. package/dest/notes/note_service.d.ts +9 -9
  118. package/dest/notes/note_service.d.ts.map +1 -1
  119. package/dest/notes/note_service.js +45 -40
  120. package/dest/notes_filter.d.ts +24 -0
  121. package/dest/notes_filter.d.ts.map +1 -0
  122. package/dest/notes_filter.js +4 -0
  123. package/dest/oracle_version.d.ts +4 -3
  124. package/dest/oracle_version.d.ts.map +1 -1
  125. package/dest/oracle_version.js +20 -9
  126. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  127. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  128. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  129. package/dest/private_kernel/hints/index.d.ts +3 -3
  130. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  131. package/dest/private_kernel/hints/index.js +2 -2
  132. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
  133. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  134. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +140 -73
  135. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  136. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  137. package/dest/private_kernel/hints/test_utils.js +203 -0
  138. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  139. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  140. package/dest/private_kernel/private_kernel_execution_prover.js +21 -16
  141. package/dest/private_kernel/private_kernel_oracle.d.ts +24 -25
  142. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  143. package/dest/private_kernel/private_kernel_oracle.js +91 -2
  144. package/dest/pxe.d.ts +80 -59
  145. package/dest/pxe.d.ts.map +1 -1
  146. package/dest/pxe.js +163 -145
  147. package/dest/storage/address_store/address_store.d.ts +1 -1
  148. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  149. package/dest/storage/address_store/address_store.js +12 -11
  150. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
  151. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  152. package/dest/storage/anchor_block_store/anchor_block_store.js +9 -2
  153. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  154. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  155. package/dest/storage/capsule_store/capsule_service.js +50 -0
  156. package/dest/storage/capsule_store/capsule_store.d.ts +25 -10
  157. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  158. package/dest/storage/capsule_store/capsule_store.js +143 -28
  159. package/dest/storage/capsule_store/index.d.ts +2 -1
  160. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  161. package/dest/storage/capsule_store/index.js +1 -0
  162. package/dest/storage/contract_store/contract_store.d.ts +42 -16
  163. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  164. package/dest/storage/contract_store/contract_store.js +160 -85
  165. package/dest/storage/metadata.d.ts +1 -1
  166. package/dest/storage/metadata.js +1 -1
  167. package/dest/storage/note_store/note_store.d.ts +50 -51
  168. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  169. package/dest/storage/note_store/note_store.js +284 -263
  170. package/dest/storage/note_store/stored_note.d.ts +16 -0
  171. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  172. package/dest/storage/note_store/stored_note.js +43 -0
  173. package/dest/storage/private_event_store/private_event_store.d.ts +43 -8
  174. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  175. package/dest/storage/private_event_store/private_event_store.js +229 -111
  176. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  177. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  178. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  179. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +16 -9
  180. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  181. package/dest/storage/tagging_store/recipient_tagging_store.js +88 -19
  182. package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
  183. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
  184. package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
  185. package/dest/storage/tagging_store/sender_tagging_store.d.ts +43 -32
  186. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  187. package/dest/storage/tagging_store/sender_tagging_store.js +300 -122
  188. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  189. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  190. package/dest/tagging/get_all_logs_by_tags.js +60 -0
  191. package/dest/tagging/index.d.ts +4 -3
  192. package/dest/tagging/index.d.ts.map +1 -1
  193. package/dest/tagging/index.js +2 -1
  194. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +5 -5
  195. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  196. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +12 -26
  197. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  198. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +7 -7
  199. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  200. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +16 -12
  201. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -8
  202. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  203. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +18 -12
  204. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  205. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  206. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +23 -16
  207. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +8 -7
  208. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  209. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +44 -27
  210. package/package.json +27 -18
  211. package/src/bin/check_oracle_version.ts +5 -4
  212. package/src/block_synchronizer/block_synchronizer.ts +113 -35
  213. package/src/config/index.ts +9 -1
  214. package/src/config/package_info.ts +1 -1
  215. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  216. package/src/contract_function_simulator/contract_function_simulator.ts +392 -154
  217. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  218. package/src/contract_function_simulator/execution_note_cache.ts +44 -25
  219. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
  220. package/src/contract_function_simulator/index.ts +2 -1
  221. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +10 -10
  222. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
  223. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
  224. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +5 -11
  225. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  226. package/src/contract_function_simulator/oracle/interfaces.ts +97 -59
  227. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
  228. package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
  229. package/src/contract_function_simulator/oracle/oracle.ts +422 -166
  230. package/src/contract_function_simulator/oracle/private_execution.ts +5 -71
  231. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +169 -185
  232. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +578 -193
  233. package/src/contract_function_simulator/pick_notes.ts +22 -3
  234. package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
  235. package/src/contract_logging.ts +52 -0
  236. package/src/contract_sync/contract_sync_service.ts +176 -0
  237. package/src/contract_sync/helpers.ts +98 -0
  238. package/src/debug/pxe_debug_utils.ts +63 -18
  239. package/src/entrypoints/client/bundle/index.ts +2 -0
  240. package/src/entrypoints/client/bundle/utils.ts +18 -18
  241. package/src/entrypoints/client/lazy/index.ts +2 -0
  242. package/src/entrypoints/client/lazy/utils.ts +19 -18
  243. package/src/entrypoints/pxe_creation_options.ts +9 -1
  244. package/src/entrypoints/server/index.ts +4 -1
  245. package/src/entrypoints/server/utils.ts +24 -29
  246. package/src/events/event_service.ts +31 -26
  247. package/src/events/private_event_filter_validator.ts +23 -5
  248. package/src/job_coordinator/job_coordinator.ts +4 -3
  249. package/src/logs/log_service.ts +94 -104
  250. package/src/messages/message_context_service.ts +44 -0
  251. package/src/notes/note_service.ts +54 -48
  252. package/src/notes_filter.ts +24 -0
  253. package/src/oracle_version.ts +20 -9
  254. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  255. package/src/private_kernel/hints/index.ts +2 -2
  256. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +195 -136
  257. package/src/private_kernel/hints/test_utils.ts +325 -0
  258. package/src/private_kernel/private_kernel_execution_prover.ts +25 -20
  259. package/src/private_kernel/private_kernel_oracle.ts +116 -37
  260. package/src/pxe.ts +297 -223
  261. package/src/storage/address_store/address_store.ts +15 -15
  262. package/src/storage/anchor_block_store/anchor_block_store.ts +9 -1
  263. package/src/storage/capsule_store/capsule_service.ts +90 -0
  264. package/src/storage/capsule_store/capsule_store.ts +183 -29
  265. package/src/storage/capsule_store/index.ts +1 -0
  266. package/src/storage/contract_store/contract_store.ts +193 -101
  267. package/src/storage/metadata.ts +1 -1
  268. package/src/storage/note_store/note_store.ts +323 -320
  269. package/src/storage/note_store/stored_note.ts +48 -0
  270. package/src/storage/private_event_store/private_event_store.ts +296 -124
  271. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  272. package/src/storage/tagging_store/recipient_tagging_store.ts +111 -21
  273. package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
  274. package/src/storage/tagging_store/sender_tagging_store.ts +366 -134
  275. package/src/tagging/get_all_logs_by_tags.ts +92 -0
  276. package/src/tagging/index.ts +3 -2
  277. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +27 -29
  278. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  279. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +17 -16
  280. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +31 -15
  281. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +29 -26
  282. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +42 -29
  283. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  284. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  285. package/dest/contract_function_simulator/proxied_node.js +0 -27
  286. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  287. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  288. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  289. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  290. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
  291. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  292. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -85
  293. package/dest/public_storage/public_storage_service.d.ts +0 -24
  294. package/dest/public_storage/public_storage_service.d.ts.map +0 -1
  295. package/dest/public_storage/public_storage_service.js +0 -26
  296. package/dest/tree_membership/tree_membership_service.d.ts +0 -52
  297. package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
  298. package/dest/tree_membership/tree_membership_service.js +0 -84
  299. package/src/contract_function_simulator/proxied_node.ts +0 -33
  300. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -127
  301. package/src/public_storage/public_storage_service.ts +0 -33
  302. package/src/tree_membership/tree_membership_service.ts +0 -112
@@ -1,5 +1,7 @@
1
1
  import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
2
- import type { DirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
2
+ import type { ExtendedDirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
3
+
4
+ import type { StagedStore } from '../../job_coordinator/job_coordinator.js';
3
5
 
4
6
  /**
5
7
  * Data provider of tagging data used when syncing the logs as a recipient. The sender counterpart of this class
@@ -8,46 +10,134 @@ import type { DirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
8
10
  *
9
11
  * @dev Chain reorgs do not need to be handled here because both the finalized and aged indexes refer to finalized
10
12
  * blocks, which by definition cannot be affected by reorgs.
11
- *
12
- * TODO(benesjan): Relocate to yarn-project/pxe/src/storage/tagging_store
13
13
  */
14
- export class RecipientTaggingStore {
14
+ export class RecipientTaggingStore implements StagedStore {
15
+ storeName: string = 'recipient_tagging';
16
+
15
17
  #store: AztecAsyncKVStore;
16
18
 
17
19
  #highestAgedIndex: AztecAsyncMap<string, number>;
18
20
  #highestFinalizedIndex: AztecAsyncMap<string, number>;
19
21
 
22
+ // jobId => secret => number
23
+ #highestAgedIndexForJob: Map<string, Map<string, number>>;
24
+
25
+ // jobId => secret => number
26
+ #highestFinalizedIndexForJob: Map<string, Map<string, number>>;
27
+
20
28
  constructor(store: AztecAsyncKVStore) {
21
29
  this.#store = store;
22
30
 
23
31
  this.#highestAgedIndex = this.#store.openMap('highest_aged_index');
24
32
  this.#highestFinalizedIndex = this.#store.openMap('highest_finalized_index');
33
+
34
+ this.#highestAgedIndexForJob = new Map();
35
+ this.#highestFinalizedIndexForJob = new Map();
25
36
  }
26
37
 
27
- getHighestAgedIndex(secret: DirectionalAppTaggingSecret): Promise<number | undefined> {
28
- return this.#highestAgedIndex.getAsync(secret.toString());
38
+ #getHighestAgedIndexForJob(jobId: string): Map<string, number> {
39
+ let highestAgedIndexForJob = this.#highestAgedIndexForJob.get(jobId);
40
+ if (!highestAgedIndexForJob) {
41
+ highestAgedIndexForJob = new Map();
42
+ this.#highestAgedIndexForJob.set(jobId, highestAgedIndexForJob);
43
+ }
44
+ return highestAgedIndexForJob;
29
45
  }
30
46
 
31
- async updateHighestAgedIndex(secret: DirectionalAppTaggingSecret, index: number): Promise<void> {
32
- const currentIndex = await this.#highestAgedIndex.getAsync(secret.toString());
33
- if (currentIndex !== undefined && index <= currentIndex) {
34
- // Log sync should never set a lower highest aged index.
35
- throw new Error(`New highest aged index (${index}) must be higher than the current one (${currentIndex})`);
47
+ async #readHighestAgedIndex(jobId: string, secret: string): Promise<number | undefined> {
48
+ // Always issue DB read to keep IndexedDB transaction alive (they auto-commit when a new micro-task starts and there
49
+ // are no pending read requests). The staged value still takes precedence if it exists.
50
+ const dbValue = await this.#highestAgedIndex.getAsync(secret);
51
+ const staged = this.#getHighestAgedIndexForJob(jobId).get(secret);
52
+ return staged ?? dbValue;
53
+ }
54
+
55
+ #writeHighestAgedIndex(jobId: string, secret: string, index: number) {
56
+ this.#getHighestAgedIndexForJob(jobId).set(secret, index);
57
+ }
58
+
59
+ #getHighestFinalizedIndexForJob(jobId: string): Map<string, number> {
60
+ let jobStagedHighestFinalizedIndex = this.#highestFinalizedIndexForJob.get(jobId);
61
+ if (!jobStagedHighestFinalizedIndex) {
62
+ jobStagedHighestFinalizedIndex = new Map();
63
+ this.#highestFinalizedIndexForJob.set(jobId, jobStagedHighestFinalizedIndex);
36
64
  }
37
- await this.#highestAgedIndex.set(secret.toString(), index);
65
+ return jobStagedHighestFinalizedIndex;
66
+ }
67
+
68
+ async #readHighestFinalizedIndex(jobId: string, secret: string): Promise<number | undefined> {
69
+ // Always issue DB read to keep IndexedDB transaction alive (they auto-commit when a new micro-task starts and there
70
+ // are no pending read requests). The staged value still takes precedence if it exists.
71
+ const dbValue = await this.#highestFinalizedIndex.getAsync(secret);
72
+ const staged = this.#getHighestFinalizedIndexForJob(jobId).get(secret);
73
+ return staged ?? dbValue;
38
74
  }
39
75
 
40
- getHighestFinalizedIndex(secret: DirectionalAppTaggingSecret): Promise<number | undefined> {
41
- return this.#highestFinalizedIndex.getAsync(secret.toString());
76
+ #writeHighestFinalizedIndex(jobId: string, secret: string, index: number) {
77
+ this.#getHighestFinalizedIndexForJob(jobId).set(secret, index);
42
78
  }
43
79
 
44
- async updateHighestFinalizedIndex(secret: DirectionalAppTaggingSecret, index: number): Promise<void> {
45
- const currentIndex = await this.#highestFinalizedIndex.getAsync(secret.toString());
46
- if (currentIndex !== undefined && index < currentIndex) {
47
- // Log sync should never set a lower highest finalized index but it can happen that it would try to set the same
48
- // one because we are loading logs from highest aged index + 1 and not from the highest finalized index.
49
- throw new Error(`New highest finalized index (${index}) must be higher than the current one (${currentIndex})`);
80
+ /**
81
+ * Writes all job-specific in-memory data to persistent storage.
82
+ *
83
+ * @remark This method must run in a DB transaction context. It's designed to be called from JobCoordinator#commitJob.
84
+ */
85
+ async commit(jobId: string): Promise<void> {
86
+ const highestAgedIndexForJob = this.#highestAgedIndexForJob.get(jobId);
87
+ if (highestAgedIndexForJob) {
88
+ for (const [secret, index] of highestAgedIndexForJob.entries()) {
89
+ await this.#highestAgedIndex.set(secret, index);
90
+ }
50
91
  }
51
- await this.#highestFinalizedIndex.set(secret.toString(), index);
92
+
93
+ const highestFinalizedIndexForJob = this.#highestFinalizedIndexForJob.get(jobId);
94
+ if (highestFinalizedIndexForJob) {
95
+ for (const [secret, index] of highestFinalizedIndexForJob.entries()) {
96
+ await this.#highestFinalizedIndex.set(secret, index);
97
+ }
98
+ }
99
+
100
+ return this.discardStaged(jobId);
101
+ }
102
+
103
+ discardStaged(jobId: string): Promise<void> {
104
+ this.#highestAgedIndexForJob.delete(jobId);
105
+ this.#highestFinalizedIndexForJob.delete(jobId);
106
+ return Promise.resolve();
107
+ }
108
+
109
+ getHighestAgedIndex(secret: ExtendedDirectionalAppTaggingSecret, jobId: string): Promise<number | undefined> {
110
+ return this.#store.transactionAsync(() => this.#readHighestAgedIndex(jobId, secret.toString()));
111
+ }
112
+
113
+ updateHighestAgedIndex(secret: ExtendedDirectionalAppTaggingSecret, index: number, jobId: string): Promise<void> {
114
+ return this.#store.transactionAsync(async () => {
115
+ const currentIndex = await this.#readHighestAgedIndex(jobId, secret.toString());
116
+ if (currentIndex !== undefined && index <= currentIndex) {
117
+ // Log sync should never set a lower highest aged index.
118
+ throw new Error(`New highest aged index (${index}) must be higher than the current one (${currentIndex})`);
119
+ }
120
+ this.#writeHighestAgedIndex(jobId, secret.toString(), index);
121
+ });
122
+ }
123
+
124
+ getHighestFinalizedIndex(secret: ExtendedDirectionalAppTaggingSecret, jobId: string): Promise<number | undefined> {
125
+ return this.#store.transactionAsync(() => this.#readHighestFinalizedIndex(jobId, secret.toString()));
126
+ }
127
+
128
+ updateHighestFinalizedIndex(
129
+ secret: ExtendedDirectionalAppTaggingSecret,
130
+ index: number,
131
+ jobId: string,
132
+ ): Promise<void> {
133
+ return this.#store.transactionAsync(async () => {
134
+ const currentIndex = await this.#readHighestFinalizedIndex(jobId, secret.toString());
135
+ if (currentIndex !== undefined && index < currentIndex) {
136
+ // Log sync should never set a lower highest finalized index but it can happen that it would try to set the same
137
+ // one because we are loading logs from highest aged index + 1 and not from the highest finalized index.
138
+ throw new Error(`New highest finalized index (${index}) must be higher than the current one (${currentIndex})`);
139
+ }
140
+ this.#writeHighestFinalizedIndex(jobId, secret.toString(), index);
141
+ });
52
142
  }
53
143
  }
@@ -16,27 +16,33 @@ export class SenderAddressBookStore {
16
16
  this.#addressBook = this.#store.openMap('address_book');
17
17
  }
18
18
 
19
- async addSender(address: AztecAddress): Promise<boolean> {
20
- if (await this.#addressBook.hasAsync(address.toString())) {
21
- return false;
22
- }
19
+ addSender(address: AztecAddress): Promise<boolean> {
20
+ return this.#store.transactionAsync(async () => {
21
+ if (await this.#addressBook.hasAsync(address.toString())) {
22
+ return false;
23
+ }
23
24
 
24
- await this.#addressBook.set(address.toString(), true);
25
+ await this.#addressBook.set(address.toString(), true);
25
26
 
26
- return true;
27
+ return true;
28
+ });
27
29
  }
28
30
 
29
- async getSenders(): Promise<AztecAddress[]> {
30
- return (await toArray(this.#addressBook.keysAsync())).map(AztecAddress.fromString);
31
+ getSenders(): Promise<AztecAddress[]> {
32
+ return this.#store.transactionAsync(async () => {
33
+ return (await toArray(this.#addressBook.keysAsync())).map(AztecAddress.fromString);
34
+ });
31
35
  }
32
36
 
33
- async removeSender(address: AztecAddress): Promise<boolean> {
34
- if (!(await this.#addressBook.hasAsync(address.toString()))) {
35
- return false;
36
- }
37
+ removeSender(address: AztecAddress): Promise<boolean> {
38
+ return this.#store.transactionAsync(async () => {
39
+ if (!(await this.#addressBook.hasAsync(address.toString()))) {
40
+ return false;
41
+ }
37
42
 
38
- await this.#addressBook.delete(address.toString());
43
+ await this.#addressBook.delete(address.toString());
39
44
 
40
- return true;
45
+ return true;
46
+ });
41
47
  }
42
48
  }