@aztec/pxe 0.0.1-commit.9593d84 → 0.0.1-commit.96bb3f7

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 (343) hide show
  1. package/dest/bin/check_oracle_version.js +105 -15
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +39 -0
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  4. package/dest/{synchronizer/synchronizer.js → block_synchronizer/block_synchronizer.js} +24 -23
  5. package/dest/block_synchronizer/index.d.ts +2 -0
  6. package/dest/block_synchronizer/index.d.ts.map +1 -0
  7. package/dest/block_synchronizer/index.js +1 -0
  8. package/dest/config/index.d.ts +4 -4
  9. package/dest/config/index.d.ts.map +1 -1
  10. package/dest/config/package_info.js +1 -1
  11. package/dest/contract_function_simulator/contract_function_simulator.d.ts +42 -12
  12. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  13. package/dest/contract_function_simulator/contract_function_simulator.js +50 -19
  14. package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -3
  15. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  16. package/dest/contract_function_simulator/execution_note_cache.js +4 -3
  17. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +1 -1
  18. package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
  19. package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
  20. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
  21. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -3
  22. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +5 -2
  24. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
  25. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  26. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
  27. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  28. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  29. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
  30. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -4
  31. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +6 -3
  33. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +2 -2
  34. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  35. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -1
  36. package/dest/contract_function_simulator/oracle/interfaces.d.ts +16 -13
  37. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +2 -2
  39. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
  41. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +7 -3
  42. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/oracle/note_packing_utils.js +7 -3
  44. package/dest/contract_function_simulator/oracle/oracle.d.ts +3 -3
  45. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/oracle/oracle.js +27 -15
  47. package/dest/contract_function_simulator/oracle/private_execution.d.ts +9 -10
  48. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  49. package/dest/contract_function_simulator/oracle/private_execution.js +13 -14
  50. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +27 -27
  51. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  52. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +32 -46
  53. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +59 -16
  54. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  55. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +149 -40
  56. package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
  57. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  58. package/dest/contract_function_simulator/pick_notes.js +1 -1
  59. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  60. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  61. package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
  62. package/dest/debug/pxe_debug_utils.d.ts +31 -0
  63. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  64. package/dest/debug/pxe_debug_utils.js +37 -0
  65. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  66. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  67. package/dest/entrypoints/client/bundle/index.js +0 -1
  68. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  69. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  70. package/dest/entrypoints/client/bundle/utils.js +12 -3
  71. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  72. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  73. package/dest/entrypoints/client/lazy/index.js +0 -1
  74. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  75. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  76. package/dest/entrypoints/client/lazy/utils.js +12 -3
  77. package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
  78. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  79. package/dest/entrypoints/server/index.d.ts +2 -2
  80. package/dest/entrypoints/server/index.d.ts.map +1 -1
  81. package/dest/entrypoints/server/index.js +1 -1
  82. package/dest/entrypoints/server/utils.d.ts +1 -1
  83. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  84. package/dest/entrypoints/server/utils.js +12 -8
  85. package/dest/error_enriching.d.ts +4 -4
  86. package/dest/error_enriching.d.ts.map +1 -1
  87. package/dest/error_enriching.js +6 -6
  88. package/dest/events/event_service.d.ts +15 -0
  89. package/dest/events/event_service.d.ts.map +1 -0
  90. package/dest/events/event_service.js +47 -0
  91. package/dest/events/index.d.ts +2 -0
  92. package/dest/events/index.d.ts.map +1 -0
  93. package/dest/events/index.js +1 -0
  94. package/dest/events/private_event_filter_validator.d.ts +9 -0
  95. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  96. package/dest/events/private_event_filter_validator.js +39 -0
  97. package/dest/job_coordinator/job_coordinator.d.ts +74 -0
  98. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  99. package/dest/job_coordinator/job_coordinator.js +93 -0
  100. package/dest/logs/log_service.d.ts +26 -0
  101. package/dest/logs/log_service.d.ts.map +1 -0
  102. package/dest/logs/log_service.js +120 -0
  103. package/dest/notes/index.d.ts +2 -0
  104. package/dest/notes/index.d.ts.map +1 -0
  105. package/dest/notes/index.js +1 -0
  106. package/dest/notes/note_service.d.ts +48 -0
  107. package/dest/notes/note_service.d.ts.map +1 -0
  108. package/dest/notes/note_service.js +152 -0
  109. package/dest/oracle_version.d.ts +2 -2
  110. package/dest/oracle_version.js +2 -2
  111. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +2 -2
  112. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -1
  113. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.js +2 -2
  114. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  115. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  116. package/dest/private_kernel/private_kernel_execution_prover.js +7 -8
  117. package/dest/private_kernel/private_kernel_oracle.d.ts +5 -3
  118. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  119. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +8 -7
  120. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -1
  121. package/dest/private_kernel/private_kernel_oracle_impl.js +9 -10
  122. package/dest/public_storage/public_storage_service.d.ts +24 -0
  123. package/dest/public_storage/public_storage_service.d.ts.map +1 -0
  124. package/dest/public_storage/public_storage_service.js +26 -0
  125. package/dest/pxe.d.ts +39 -46
  126. package/dest/pxe.d.ts.map +1 -1
  127. package/dest/pxe.js +165 -154
  128. package/dest/storage/address_store/address_store.d.ts +11 -0
  129. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  130. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +1 -1
  131. package/dest/storage/address_store/index.d.ts +2 -0
  132. package/dest/storage/address_store/index.d.ts.map +1 -0
  133. package/dest/storage/address_store/index.js +1 -0
  134. package/dest/storage/{sync_data_provider/sync_data_provider.d.ts → anchor_block_store/anchor_block_store.d.ts} +2 -3
  135. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  136. package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +2 -9
  137. package/dest/storage/{sync_data_provider → anchor_block_store}/index.d.ts +2 -2
  138. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  139. package/dest/storage/anchor_block_store/index.js +1 -0
  140. package/dest/storage/capsule_store/capsule_store.d.ts +57 -0
  141. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  142. package/dest/storage/{capsule_data_provider/capsule_data_provider.js → capsule_store/capsule_store.js} +34 -6
  143. package/dest/storage/capsule_store/index.d.ts +2 -0
  144. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  145. package/dest/storage/capsule_store/index.js +1 -0
  146. package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +8 -5
  147. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  148. package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +46 -3
  149. package/dest/storage/contract_store/index.d.ts +2 -0
  150. package/dest/storage/contract_store/index.d.ts.map +1 -0
  151. package/dest/storage/contract_store/index.js +1 -0
  152. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  153. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  154. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
  155. package/dest/storage/index.d.ts +8 -8
  156. package/dest/storage/index.d.ts.map +1 -1
  157. package/dest/storage/index.js +7 -7
  158. package/dest/storage/note_store/index.d.ts +3 -0
  159. package/dest/storage/note_store/index.d.ts.map +1 -0
  160. package/dest/storage/note_store/index.js +2 -0
  161. package/dest/storage/{note_data_provider/note_data_provider.d.ts → note_store/note_store.d.ts} +13 -12
  162. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  163. package/dest/storage/{note_data_provider/note_data_provider.js → note_store/note_store.js} +20 -9
  164. package/dest/storage/private_event_store/private_event_store.d.ts +56 -0
  165. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  166. package/dest/storage/private_event_store/private_event_store.js +158 -0
  167. package/dest/storage/tagging_store/index.d.ts +4 -0
  168. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  169. package/dest/storage/tagging_store/index.js +3 -0
  170. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +21 -0
  171. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  172. package/dest/storage/tagging_store/recipient_tagging_store.js +42 -0
  173. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  174. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  175. package/dest/storage/tagging_store/sender_address_book_store.js +30 -0
  176. package/dest/storage/tagging_store/sender_tagging_store.d.ts +67 -0
  177. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  178. package/dest/storage/tagging_store/sender_tagging_store.js +196 -0
  179. package/dest/tagging/constants.d.ts +2 -2
  180. package/dest/tagging/constants.d.ts.map +1 -1
  181. package/dest/tagging/constants.js +10 -2
  182. package/dest/tagging/index.d.ts +15 -6
  183. package/dest/tagging/index.d.ts.map +1 -1
  184. package/dest/tagging/index.js +14 -5
  185. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +14 -0
  186. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
  187. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
  188. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  189. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  190. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  191. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +14 -0
  192. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
  193. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +29 -0
  194. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +20 -0
  195. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  196. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
  197. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
  198. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  199. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +32 -0
  200. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +18 -0
  201. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  202. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +55 -0
  203. package/dest/tree_membership/tree_membership_service.d.ts +52 -0
  204. package/dest/tree_membership/tree_membership_service.d.ts.map +1 -0
  205. package/dest/tree_membership/tree_membership_service.js +84 -0
  206. package/package.json +17 -17
  207. package/src/bin/check_oracle_version.ts +130 -20
  208. package/src/{synchronizer/synchronizer.ts → block_synchronizer/block_synchronizer.ts} +23 -23
  209. package/src/block_synchronizer/index.ts +1 -0
  210. package/src/config/index.ts +3 -3
  211. package/src/config/package_info.ts +1 -1
  212. package/src/contract_function_simulator/contract_function_simulator.ts +93 -19
  213. package/src/contract_function_simulator/execution_note_cache.ts +7 -3
  214. package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
  215. package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
  216. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -1
  217. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
  218. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -1
  219. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +5 -2
  220. package/src/contract_function_simulator/noir-structs/utility_context.ts +1 -1
  221. package/src/contract_function_simulator/oracle/interfaces.ts +15 -10
  222. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
  223. package/src/contract_function_simulator/oracle/note_packing_utils.ts +17 -3
  224. package/src/contract_function_simulator/oracle/oracle.ts +33 -11
  225. package/src/contract_function_simulator/oracle/private_execution.ts +17 -17
  226. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +101 -58
  227. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +225 -47
  228. package/src/contract_function_simulator/pick_notes.ts +1 -1
  229. package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
  230. package/src/debug/pxe_debug_utils.ts +48 -0
  231. package/src/entrypoints/client/bundle/index.ts +0 -1
  232. package/src/entrypoints/client/bundle/utils.ts +9 -3
  233. package/src/entrypoints/client/lazy/index.ts +0 -1
  234. package/src/entrypoints/client/lazy/utils.ts +9 -4
  235. package/src/entrypoints/pxe_creation_options.ts +4 -1
  236. package/src/entrypoints/server/index.ts +1 -1
  237. package/src/entrypoints/server/utils.ts +12 -16
  238. package/src/error_enriching.ts +7 -15
  239. package/src/events/event_service.ts +79 -0
  240. package/src/events/index.ts +1 -0
  241. package/src/events/private_event_filter_validator.ts +48 -0
  242. package/src/job_coordinator/job_coordinator.ts +149 -0
  243. package/src/logs/log_service.ts +202 -0
  244. package/src/notes/index.ts +1 -0
  245. package/src/notes/note_service.ts +200 -0
  246. package/src/oracle_version.ts +2 -2
  247. package/src/private_kernel/hints/build_private_kernel_reset_private_inputs.ts +2 -3
  248. package/src/private_kernel/private_kernel_execution_prover.ts +7 -8
  249. package/src/private_kernel/private_kernel_oracle.ts +4 -2
  250. package/src/private_kernel/private_kernel_oracle_impl.ts +12 -17
  251. package/src/public_storage/public_storage_service.ts +33 -0
  252. package/src/pxe.ts +214 -188
  253. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +1 -1
  254. package/src/storage/address_store/index.ts +1 -0
  255. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +2 -11
  256. package/src/storage/anchor_block_store/index.ts +1 -0
  257. package/src/storage/{capsule_data_provider/capsule_data_provider.ts → capsule_store/capsule_store.ts} +34 -2
  258. package/src/storage/capsule_store/index.ts +1 -0
  259. package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +65 -3
  260. package/src/storage/contract_store/index.ts +1 -0
  261. package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
  262. package/src/storage/index.ts +7 -7
  263. package/src/storage/note_store/index.ts +2 -0
  264. package/src/storage/{note_data_provider/note_data_provider.ts → note_store/note_store.ts} +26 -13
  265. package/src/storage/private_event_store/private_event_store.ts +216 -0
  266. package/src/storage/tagging_store/index.ts +3 -0
  267. package/src/storage/tagging_store/recipient_tagging_store.ts +53 -0
  268. package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
  269. package/src/storage/tagging_store/sender_tagging_store.ts +244 -0
  270. package/src/tagging/constants.ts +10 -2
  271. package/src/tagging/index.ts +17 -5
  272. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +132 -0
  273. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  274. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +43 -0
  275. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +96 -0
  276. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +48 -0
  277. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +72 -0
  278. package/src/tree_membership/tree_membership_service.ts +112 -0
  279. package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -265
  280. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
  281. package/dest/contract_function_simulator/execution_data_provider.js +0 -14
  282. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
  283. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
  284. package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -694
  285. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  286. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  287. package/dest/storage/address_data_provider/index.d.ts +0 -2
  288. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  289. package/dest/storage/address_data_provider/index.js +0 -1
  290. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
  291. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  292. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  293. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  294. package/dest/storage/capsule_data_provider/index.js +0 -1
  295. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  296. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  297. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  298. package/dest/storage/contract_data_provider/index.js +0 -1
  299. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  300. package/dest/storage/note_data_provider/index.d.ts +0 -3
  301. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  302. package/dest/storage/note_data_provider/index.js +0 -2
  303. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  304. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -37
  305. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  306. package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -105
  307. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  308. package/dest/storage/sync_data_provider/index.js +0 -1
  309. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  310. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  311. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  312. package/dest/storage/tagging_data_provider/index.js +0 -1
  313. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
  314. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  315. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
  316. package/dest/synchronizer/index.d.ts +0 -2
  317. package/dest/synchronizer/index.d.ts.map +0 -1
  318. package/dest/synchronizer/index.js +0 -1
  319. package/dest/synchronizer/synchronizer.d.ts +0 -35
  320. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  321. package/dest/tagging/siloed_tag.d.ts +0 -14
  322. package/dest/tagging/siloed_tag.d.ts.map +0 -1
  323. package/dest/tagging/siloed_tag.js +0 -20
  324. package/dest/tagging/tag.d.ts +0 -12
  325. package/dest/tagging/tag.d.ts.map +0 -1
  326. package/dest/tagging/tag.js +0 -17
  327. package/dest/tagging/utils.d.ts +0 -18
  328. package/dest/tagging/utils.d.ts.map +0 -1
  329. package/dest/tagging/utils.js +0 -24
  330. package/src/contract_function_simulator/execution_data_provider.ts +0 -333
  331. package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1008
  332. package/src/storage/address_data_provider/index.ts +0 -1
  333. package/src/storage/capsule_data_provider/index.ts +0 -1
  334. package/src/storage/contract_data_provider/index.ts +0 -1
  335. package/src/storage/note_data_provider/index.ts +0 -2
  336. package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -143
  337. package/src/storage/sync_data_provider/index.ts +0 -1
  338. package/src/storage/tagging_data_provider/index.ts +0 -1
  339. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
  340. package/src/synchronizer/index.ts +0 -1
  341. package/src/tagging/siloed_tag.ts +0 -22
  342. package/src/tagging/tag.ts +0 -16
  343. package/src/tagging/utils.ts +0 -31
package/src/pxe.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import type { PrivateEventFilter } from '@aztec/aztec.js/wallet';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
3
  import { type Logger, createLogger } from '@aztec/foundation/log';
3
4
  import { SerialQueue } from '@aztec/foundation/queue';
4
5
  import { Timer } from '@aztec/foundation/timer';
@@ -11,14 +12,11 @@ import {
11
12
  type ContractArtifact,
12
13
  EventSelector,
13
14
  FunctionCall,
14
- FunctionSelector,
15
15
  FunctionType,
16
16
  decodeFunctionSignature,
17
- encodeArguments,
18
17
  } from '@aztec/stdlib/abi';
19
18
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
20
19
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
21
- import type { L2BlockHash } from '@aztec/stdlib/block';
22
20
  import {
23
21
  CompleteAddress,
24
22
  type ContractClassWithId,
@@ -35,10 +33,9 @@ import type {
35
33
  PrivateKernelExecutionProofOutput,
36
34
  PrivateKernelTailCircuitPublicInputs,
37
35
  } from '@aztec/stdlib/kernel';
38
- import type { NotesFilter } from '@aztec/stdlib/note';
39
- import { NoteDao } from '@aztec/stdlib/note';
40
36
  import {
41
37
  type ContractOverrides,
38
+ type InTx,
42
39
  PrivateExecutionResult,
43
40
  PrivateSimulationResult,
44
41
  type ProvingTimings,
@@ -47,7 +44,6 @@ import {
47
44
  type SimulationTimings,
48
45
  Tx,
49
46
  TxExecutionRequest,
50
- TxHash,
51
47
  TxProfileResult,
52
48
  TxProvingResult,
53
49
  TxSimulationResult,
@@ -56,36 +52,36 @@ import {
56
52
 
57
53
  import { inspect } from 'util';
58
54
 
55
+ import { BlockSynchronizer } from './block_synchronizer/index.js';
59
56
  import type { PXEConfig } from './config/index.js';
60
57
  import {
61
58
  ContractFunctionSimulator,
62
59
  generateSimulatedProvingResult,
63
60
  } from './contract_function_simulator/contract_function_simulator.js';
64
61
  import { readCurrentClassId } from './contract_function_simulator/oracle/private_execution.js';
65
- import { ProxiedContractDataProviderFactory } from './contract_function_simulator/proxied_contract_data_source.js';
62
+ import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
66
63
  import { ProxiedNodeFactory } from './contract_function_simulator/proxied_node.js';
67
- import { PXEOracleInterface } from './contract_function_simulator/pxe_oracle_interface.js';
64
+ import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
68
65
  import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
66
+ import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
67
+ import { JobCoordinator } from './job_coordinator/job_coordinator.js';
69
68
  import {
70
69
  PrivateKernelExecutionProver,
71
70
  type PrivateKernelExecutionProverConfig,
72
71
  } from './private_kernel/private_kernel_execution_prover.js';
73
72
  import { PrivateKernelOracleImpl } from './private_kernel/private_kernel_oracle_impl.js';
74
- import { AddressDataProvider } from './storage/address_data_provider/address_data_provider.js';
75
- import { CapsuleDataProvider } from './storage/capsule_data_provider/capsule_data_provider.js';
76
- import { ContractDataProvider } from './storage/contract_data_provider/contract_data_provider.js';
77
- import { NoteDataProvider } from './storage/note_data_provider/note_data_provider.js';
78
- import { PrivateEventDataProvider } from './storage/private_event_data_provider/private_event_data_provider.js';
79
- import { SyncDataProvider } from './storage/sync_data_provider/sync_data_provider.js';
80
- import { TaggingDataProvider } from './storage/tagging_data_provider/tagging_data_provider.js';
81
- import { Synchronizer } from './synchronizer/index.js';
82
-
83
- export type PrivateEvent = {
73
+ import { AddressStore } from './storage/address_store/address_store.js';
74
+ import { AnchorBlockStore } from './storage/anchor_block_store/anchor_block_store.js';
75
+ import { CapsuleStore } from './storage/capsule_store/capsule_store.js';
76
+ import { ContractStore } from './storage/contract_store/contract_store.js';
77
+ import { NoteStore } from './storage/note_store/note_store.js';
78
+ import { PrivateEventStore } from './storage/private_event_store/private_event_store.js';
79
+ import { RecipientTaggingStore } from './storage/tagging_store/recipient_tagging_store.js';
80
+ import { SenderAddressBookStore } from './storage/tagging_store/sender_address_book_store.js';
81
+ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store.js';
82
+
83
+ export type PackedPrivateEvent = InTx & {
84
84
  packedEvent: Fr[];
85
- blockNumber: number;
86
- blockHash: L2BlockHash;
87
- txHash: TxHash;
88
- recipient: AztecAddress;
89
85
  eventSelector: EventSelector;
90
86
  };
91
87
 
@@ -96,21 +92,25 @@ export type PrivateEvent = {
96
92
  export class PXE {
97
93
  private constructor(
98
94
  private node: AztecNode,
99
- private synchronizer: Synchronizer,
95
+ private blockStateSynchronizer: BlockSynchronizer,
100
96
  private keyStore: KeyStore,
101
- private contractDataProvider: ContractDataProvider,
102
- private noteDataProvider: NoteDataProvider,
103
- private capsuleDataProvider: CapsuleDataProvider,
104
- private syncDataProvider: SyncDataProvider,
105
- private taggingDataProvider: TaggingDataProvider,
106
- private addressDataProvider: AddressDataProvider,
107
- private privateEventDataProvider: PrivateEventDataProvider,
97
+ private contractStore: ContractStore,
98
+ private noteStore: NoteStore,
99
+ private capsuleStore: CapsuleStore,
100
+ private anchorBlockStore: AnchorBlockStore,
101
+ private senderTaggingStore: SenderTaggingStore,
102
+ private senderAddressBookStore: SenderAddressBookStore,
103
+ private recipientTaggingStore: RecipientTaggingStore,
104
+ private addressStore: AddressStore,
105
+ private privateEventStore: PrivateEventStore,
108
106
  private simulator: CircuitSimulator,
109
107
  private proverEnabled: boolean,
110
108
  private proofCreator: PrivateKernelProver,
111
109
  private protocolContractsProvider: ProtocolContractsProvider,
112
110
  private log: Logger,
113
111
  private jobQueue: SerialQueue,
112
+ private jobCoordinator: JobCoordinator,
113
+ public debug: PXEDebugUtils,
114
114
  ) {}
115
115
 
116
116
  /**
@@ -135,46 +135,58 @@ export class PXE {
135
135
  : loggerOrSuffix;
136
136
 
137
137
  const proverEnabled = !!config.proverEnabled;
138
- const addressDataProvider = new AddressDataProvider(store);
139
- const privateEventDataProvider = new PrivateEventDataProvider(store);
140
- const contractDataProvider = new ContractDataProvider(store);
141
- const noteDataProvider = await NoteDataProvider.create(store);
142
- const syncDataProvider = new SyncDataProvider(store);
143
- const taggingDataProvider = new TaggingDataProvider(store);
144
- const capsuleDataProvider = new CapsuleDataProvider(store);
138
+ const addressStore = new AddressStore(store);
139
+ const privateEventStore = new PrivateEventStore(store);
140
+ const contractStore = new ContractStore(store);
141
+ const noteStore = await NoteStore.create(store);
142
+ const anchorBlockStore = new AnchorBlockStore(store);
143
+ const senderTaggingStore = new SenderTaggingStore(store);
144
+ const senderAddressBookStore = new SenderAddressBookStore(store);
145
+ const recipientTaggingStore = new RecipientTaggingStore(store);
146
+ const capsuleStore = new CapsuleStore(store);
145
147
  const keyStore = new KeyStore(store);
146
148
  const tipsStore = new L2TipsKVStore(store, 'pxe');
147
- const synchronizer = new Synchronizer(
149
+ const synchronizer = new BlockSynchronizer(
148
150
  node,
149
- syncDataProvider,
150
- noteDataProvider,
151
- taggingDataProvider,
151
+ anchorBlockStore,
152
+ noteStore,
153
+ privateEventStore,
152
154
  tipsStore,
153
155
  config,
154
156
  loggerOrSuffix,
155
157
  );
156
158
 
159
+ const jobCoordinator = new JobCoordinator(store);
160
+
161
+ const debugUtils = new PXEDebugUtils(contractStore, noteStore);
162
+
157
163
  const jobQueue = new SerialQueue();
158
164
 
159
165
  const pxe = new PXE(
160
166
  node,
161
167
  synchronizer,
162
168
  keyStore,
163
- contractDataProvider,
164
- noteDataProvider,
165
- capsuleDataProvider,
166
- syncDataProvider,
167
- taggingDataProvider,
168
- addressDataProvider,
169
- privateEventDataProvider,
169
+ contractStore,
170
+ noteStore,
171
+ capsuleStore,
172
+ anchorBlockStore,
173
+ senderTaggingStore,
174
+ senderAddressBookStore,
175
+ recipientTaggingStore,
176
+ addressStore,
177
+ privateEventStore,
170
178
  simulator,
171
179
  proverEnabled,
172
180
  proofCreator,
173
181
  protocolContractsProvider,
174
182
  log,
175
183
  jobQueue,
184
+ jobCoordinator,
185
+ debugUtils,
176
186
  );
177
187
 
188
+ debugUtils.setPXE(pxe);
189
+
178
190
  pxe.jobQueue.start();
179
191
 
180
192
  await pxe.#registerProtocolContracts();
@@ -186,19 +198,22 @@ export class PXE {
186
198
  // Internal methods
187
199
 
188
200
  #getSimulatorForTx(overrides?: { contracts?: ContractOverrides }) {
189
- const pxeOracleInterface = new PXEOracleInterface(
190
- ProxiedNodeFactory.create(this.node),
201
+ const proxyContractStore = ProxiedContractStoreFactory.create(this.contractStore, overrides?.contracts);
202
+
203
+ return new ContractFunctionSimulator(
204
+ proxyContractStore,
205
+ this.noteStore,
191
206
  this.keyStore,
192
- ProxiedContractDataProviderFactory.create(this.contractDataProvider, overrides?.contracts),
193
- this.noteDataProvider,
194
- this.capsuleDataProvider,
195
- this.syncDataProvider,
196
- this.taggingDataProvider,
197
- this.addressDataProvider,
198
- this.privateEventDataProvider,
199
- this.log,
207
+ this.addressStore,
208
+ ProxiedNodeFactory.create(this.node),
209
+ this.anchorBlockStore,
210
+ this.senderTaggingStore,
211
+ this.recipientTaggingStore,
212
+ this.senderAddressBookStore,
213
+ this.capsuleStore,
214
+ this.privateEventStore,
215
+ this.simulator,
200
216
  );
201
- return new ContractFunctionSimulator(pxeOracleInterface, this.simulator);
202
217
  }
203
218
 
204
219
  #contextualizeError(err: Error, ...context: string[]): Error {
@@ -221,7 +236,7 @@ export class PXE {
221
236
  *
222
237
  * Useful for tasks that cannot run concurrently, such as contract function simulation.
223
238
  */
224
- #putInJobQueue<T>(fn: () => Promise<T>): Promise<T> {
239
+ #putInJobQueue<T>(fn: (jobId: string) => Promise<T>): Promise<T> {
225
240
  // TODO(#12636): relax the conditions under which we forbid concurrency.
226
241
  if (this.jobQueue.length() != 0) {
227
242
  this.log.warn(
@@ -229,7 +244,22 @@ export class PXE {
229
244
  );
230
245
  }
231
246
 
232
- return this.jobQueue.put(fn);
247
+ return this.jobQueue.put(async () => {
248
+ const jobId = this.jobCoordinator.beginJob();
249
+ this.log.verbose(`Beginning job ${jobId}`);
250
+
251
+ try {
252
+ const result = await fn(jobId);
253
+ this.log.verbose(`Committing job ${jobId}`);
254
+
255
+ await this.jobCoordinator.commitJob(jobId);
256
+ return result;
257
+ } catch (err) {
258
+ this.log.verbose(`Aborting job ${jobId}`);
259
+ await this.jobCoordinator.abortJob(jobId);
260
+ throw err;
261
+ }
262
+ });
233
263
  }
234
264
 
235
265
  async #registerProtocolContracts() {
@@ -237,8 +267,8 @@ export class PXE {
237
267
  for (const name of protocolContractNames) {
238
268
  const { address, contractClass, instance, artifact } =
239
269
  await this.protocolContractsProvider.getProtocolContractArtifact(name);
240
- await this.contractDataProvider.addContractArtifact(contractClass.id, artifact);
241
- await this.contractDataProvider.addContractInstance(instance);
270
+ await this.contractStore.addContractArtifact(contractClass.id, artifact);
271
+ await this.contractStore.addContractInstance(instance);
242
272
  registered[name] = address.toString();
243
273
  }
244
274
  this.log.verbose(`Registered protocol contracts in pxe`, registered);
@@ -257,56 +287,36 @@ export class PXE {
257
287
  return !!(await this.node.getNullifierMembershipWitness('latest', initNullifier));
258
288
  }
259
289
 
260
- async #getFunctionCall(functionName: string, args: any[], to: AztecAddress): Promise<FunctionCall> {
261
- const contract = await this.contractDataProvider.getContract(to);
262
- if (!contract) {
263
- throw new Error(
264
- `Unknown contract ${to}: add it to PXE by calling server.addContracts(...).\nSee docs for context: https://docs.aztec.network/developers/resources/debugging/aztecnr-errors#unknown-contract-0x0-add-it-to-pxe-by-calling-serveraddcontracts`,
265
- );
266
- }
267
-
268
- const functionDao = contract.functions.find(f => f.name === functionName);
269
- if (!functionDao) {
270
- throw new Error(`Unknown function ${functionName} in contract ${contract.name}.`);
271
- }
272
-
273
- return {
274
- name: functionDao.name,
275
- args: encodeArguments(functionDao, args),
276
- selector: await FunctionSelector.fromNameAndParameters(functionDao.name, functionDao.parameters),
277
- type: functionDao.functionType,
278
- to,
279
- hideMsgSender: false,
280
- isStatic: functionDao.isStatic,
281
- returnTypes: functionDao.returnTypes,
282
- };
283
- }
284
-
285
290
  // Executes the entrypoint private function, as well as all nested private
286
291
  // functions that might arise.
287
292
  async #executePrivate(
288
293
  contractFunctionSimulator: ContractFunctionSimulator,
289
294
  txRequest: TxExecutionRequest,
290
- scopes?: AztecAddress[],
295
+ scopes: AztecAddress[] | undefined,
296
+ jobId: string,
291
297
  ): Promise<PrivateExecutionResult> {
292
298
  const { origin: contractAddress, functionSelector } = txRequest;
293
299
 
294
300
  try {
301
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
302
+
295
303
  const result = await contractFunctionSimulator.run(
296
304
  txRequest,
297
305
  contractAddress,
298
306
  functionSelector,
299
307
  undefined,
308
+ anchorBlockHeader,
300
309
  // The sender for tags is set by contracts, typically by an account
301
310
  // contract entrypoint
302
311
  undefined, // senderForTags
303
312
  scopes,
313
+ jobId,
304
314
  );
305
315
  this.log.debug(`Private simulation completed for ${contractAddress.toString()}:${functionSelector}`);
306
316
  return result;
307
317
  } catch (err) {
308
318
  if (err instanceof SimulationError) {
309
- await enrichSimulationError(err, this.contractDataProvider, this.log);
319
+ await enrichSimulationError(err, this.contractStore, this.log);
310
320
  }
311
321
  throw err;
312
322
  }
@@ -319,19 +329,22 @@ export class PXE {
319
329
  * @param authWitnesses - Authentication witnesses required for the function call.
320
330
  * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
321
331
  * accounts if not specified.
332
+ * @param jobId - The job ID for staged writes.
322
333
  * @returns The simulation result containing the outputs of the utility function.
323
334
  */
324
335
  async #simulateUtility(
325
336
  contractFunctionSimulator: ContractFunctionSimulator,
326
337
  call: FunctionCall,
327
- authWitnesses?: AuthWitness[],
328
- scopes?: AztecAddress[],
338
+ authWitnesses: AuthWitness[] | undefined,
339
+ scopes: AztecAddress[] | undefined,
340
+ jobId: string,
329
341
  ) {
330
342
  try {
331
- return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], scopes);
343
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
344
+ return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes, jobId);
332
345
  } catch (err) {
333
346
  if (err instanceof SimulationError) {
334
- await enrichSimulationError(err, this.contractDataProvider, this.log);
347
+ await enrichSimulationError(err, this.contractStore, this.log);
335
348
  }
336
349
  throw err;
337
350
  }
@@ -355,7 +368,7 @@ export class PXE {
355
368
  } catch (err) {
356
369
  if (err instanceof SimulationError) {
357
370
  try {
358
- await enrichPublicSimulationError(err, this.contractDataProvider, this.log);
371
+ await enrichPublicSimulationError(err, this.contractStore, this.log);
359
372
  } catch (enrichErr) {
360
373
  this.log.error(`Failed to enrich public simulation error: ${enrichErr}`);
361
374
  }
@@ -383,7 +396,7 @@ export class PXE {
383
396
  ): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
384
397
  const simulationAnchorBlock = privateExecutionResult.getSimulationAnchorBlockNumber();
385
398
  const kernelOracle = new PrivateKernelOracleImpl(
386
- this.contractDataProvider,
399
+ this.contractStore,
387
400
  this.keyStore,
388
401
  this.node,
389
402
  simulationAnchorBlock,
@@ -396,7 +409,7 @@ export class PXE {
396
409
  // Public API
397
410
 
398
411
  public getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
399
- return this.contractDataProvider.getContractInstance(address);
412
+ return this.contractStore.getContractInstance(address);
400
413
  }
401
414
 
402
415
  /**
@@ -421,7 +434,7 @@ export class PXE {
421
434
  isContractClassPubliclyRegistered: boolean;
422
435
  artifact: ContractArtifact | undefined;
423
436
  }> {
424
- const artifact = await this.contractDataProvider.getContractArtifact(id);
437
+ const artifact = await this.contractStore.getContractArtifact(id);
425
438
  if (!artifact) {
426
439
  this.log.warn(`No artifact found for contract class ${id.toString()} when looking for its metadata`);
427
440
  }
@@ -451,7 +464,7 @@ export class PXE {
451
464
  }> {
452
465
  let instance;
453
466
  try {
454
- instance = await this.contractDataProvider.getContractInstance(address);
467
+ instance = await this.contractStore.getContractInstance(address);
455
468
  } catch {
456
469
  this.log.warn(`No instance found for contract ${address.toString()} when looking for its metadata`);
457
470
  }
@@ -483,56 +496,58 @@ export class PXE {
483
496
  this.log.debug(`Registered account\n ${accountCompleteAddress.toReadableString()}`);
484
497
  }
485
498
 
486
- await this.addressDataProvider.addCompleteAddress(accountCompleteAddress);
487
- await this.noteDataProvider.addScope(accountCompleteAddress.address);
499
+ await this.addressStore.addCompleteAddress(accountCompleteAddress);
500
+ await this.noteStore.addScope(accountCompleteAddress.address);
488
501
  return accountCompleteAddress;
489
502
  }
490
503
 
491
504
  /**
492
- * Registers a user contact in PXE.
505
+ * Registers a sender in this PXE.
493
506
  *
494
- * Once a new contact is registered, the PXE will be able to receive notes tagged from this contact.
495
- * Will do nothing if the account is already registered.
507
+ * After registering a new sender, the PXE will sync private logs that are tagged with this sender's address.
508
+ * Will do nothing if the address is already registered.
496
509
  *
497
- * @param address - Address of the user to add to the address book
498
- * @returns The address address of the account.
510
+ * @param sender - Address of the sender to register.
511
+ * @returns The address of the sender.
512
+ * TODO: It's strange that we return the address here and I (benesjan) think we should drop the return value.
499
513
  */
500
- public async registerSender(address: AztecAddress): Promise<AztecAddress> {
514
+ public async registerSender(sender: AztecAddress): Promise<AztecAddress> {
501
515
  const accounts = await this.keyStore.getAccounts();
502
- if (accounts.includes(address)) {
503
- this.log.info(`Sender:\n "${address.toString()}"\n already registered.`);
504
- return address;
516
+ if (accounts.includes(sender)) {
517
+ this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
518
+ return sender;
505
519
  }
506
520
 
507
- const wasAdded = await this.taggingDataProvider.addSenderAddress(address);
521
+ const wasAdded = await this.senderAddressBookStore.addSender(sender);
508
522
 
509
523
  if (wasAdded) {
510
- this.log.info(`Added sender:\n ${address.toString()}`);
524
+ this.log.info(`Added sender:\n ${sender.toString()}`);
511
525
  } else {
512
- this.log.info(`Sender:\n "${address.toString()}"\n already registered.`);
526
+ this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
513
527
  }
514
528
 
515
- return address;
529
+ return sender;
516
530
  }
517
531
 
518
532
  /**
519
- * Retrieves the addresses stored as senders on this PXE.
520
- * @returns An array of the senders on this PXE.
533
+ * Retrieves senders registered in this PXE.
534
+ * @returns Senders registered in this PXE.
521
535
  */
522
536
  public getSenders(): Promise<AztecAddress[]> {
523
- return this.taggingDataProvider.getSenderAddresses();
537
+ return this.senderAddressBookStore.getSenders();
524
538
  }
525
539
 
526
540
  /**
527
- * Removes a sender in the address book.
541
+ * Removes a sender registered in this PXE.
542
+ * @param sender - The address of the sender to remove.
528
543
  */
529
- public async removeSender(address: AztecAddress): Promise<void> {
530
- const wasRemoved = await this.taggingDataProvider.removeSenderAddress(address);
544
+ public async removeSender(sender: AztecAddress): Promise<void> {
545
+ const wasRemoved = await this.senderAddressBookStore.removeSender(sender);
531
546
 
532
547
  if (wasRemoved) {
533
- this.log.info(`Removed sender:\n ${address.toString()}`);
548
+ this.log.info(`Removed sender:\n ${sender.toString()}`);
534
549
  } else {
535
- this.log.info(`Sender:\n "${address.toString()}"\n not in address book.`);
550
+ this.log.info(`Sender:\n "${sender.toString()}"\n not registered in PXE.`);
536
551
  }
537
552
  }
538
553
 
@@ -542,7 +557,7 @@ export class PXE {
542
557
  */
543
558
  public async getRegisteredAccounts(): Promise<CompleteAddress[]> {
544
559
  // Get complete addresses of both the recipients and the accounts
545
- const completeAddresses = await this.addressDataProvider.getCompleteAddresses();
560
+ const completeAddresses = await this.addressStore.getCompleteAddresses();
546
561
  // Filter out the addresses not corresponding to accounts
547
562
  const accounts = await this.keyStore.getAccounts();
548
563
  return completeAddresses.filter(completeAddress =>
@@ -557,7 +572,7 @@ export class PXE {
557
572
  */
558
573
  public async registerContractClass(artifact: ContractArtifact): Promise<void> {
559
574
  const { id: contractClassId } = await getContractClassFromArtifact(artifact);
560
- await this.contractDataProvider.addContractArtifact(contractClassId, artifact);
575
+ await this.contractStore.addContractArtifact(contractClassId, artifact);
561
576
  this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
562
577
  }
563
578
 
@@ -586,7 +601,7 @@ export class PXE {
586
601
  if (!computedAddress.equals(instance.address)) {
587
602
  throw new Error('Added a contract in which the address does not match the contract instance.');
588
603
  }
589
- await this.contractDataProvider.addContractArtifact(contractClass.id, artifact);
604
+ await this.contractStore.addContractArtifact(contractClass.id, artifact);
590
605
 
591
606
  const publicFunctionSignatures = artifact.functions
592
607
  .filter(fn => fn.functionType === FunctionType.PUBLIC)
@@ -594,7 +609,7 @@ export class PXE {
594
609
  await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
595
610
  } else {
596
611
  // Otherwise, make sure there is an artifact already registered for that class id
597
- artifact = await this.contractDataProvider.getContractArtifact(instance.currentContractClassId);
612
+ artifact = await this.contractStore.getContractArtifact(instance.currentContractClassId);
598
613
  if (!artifact) {
599
614
  throw new Error(
600
615
  `Artifact not found when registering an instance. Contract class: ${instance.currentContractClassId}.`,
@@ -602,7 +617,7 @@ export class PXE {
602
617
  }
603
618
  }
604
619
 
605
- await this.contractDataProvider.addContractInstance(instance);
620
+ await this.contractStore.addContractInstance(instance);
606
621
  this.log.info(
607
622
  `Added contract ${artifact.name} at ${instance.address.toString()} with class ${instance.currentContractClassId}`,
608
623
  );
@@ -621,14 +636,14 @@ export class PXE {
621
636
  // We disable concurrently updating contracts to avoid concurrently syncing with the node, or changing a contract's
622
637
  // class while we're simulating it.
623
638
  return this.#putInJobQueue(async () => {
624
- const currentInstance = await this.contractDataProvider.getContractInstance(contractAddress);
639
+ const currentInstance = await this.contractStore.getContractInstance(contractAddress);
625
640
  if (!currentInstance) {
626
641
  throw new Error(`Instance not found when updating a contract. Contract address: ${contractAddress}.`);
627
642
  }
628
643
  const contractClass = await getContractClassFromArtifact(artifact);
629
- await this.synchronizer.sync();
644
+ await this.blockStateSynchronizer.sync();
630
645
 
631
- const header = await this.syncDataProvider.getBlockHeader();
646
+ const header = await this.anchorBlockStore.getBlockHeader();
632
647
 
633
648
  const currentClassId = await readCurrentClassId(
634
649
  contractAddress,
@@ -641,7 +656,7 @@ export class PXE {
641
656
  throw new Error('Could not update contract to a class different from the current one.');
642
657
  }
643
658
 
644
- await this.contractDataProvider.addContractArtifact(contractClass.id, artifact);
659
+ await this.contractStore.addContractArtifact(contractClass.id, artifact);
645
660
 
646
661
  const publicFunctionSignatures = artifact.functions
647
662
  .filter(fn => fn.functionType === FunctionType.PUBLIC)
@@ -649,7 +664,7 @@ export class PXE {
649
664
  await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
650
665
 
651
666
  currentInstance.currentContractClassId = contractClass.id;
652
- await this.contractDataProvider.addContractInstance(currentInstance);
667
+ await this.contractStore.addContractInstance(currentInstance);
653
668
  this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
654
669
  });
655
670
  }
@@ -659,26 +674,7 @@ export class PXE {
659
674
  * @returns An array of contracts addresses registered on this PXE.
660
675
  */
661
676
  public getContracts(): Promise<AztecAddress[]> {
662
- return this.contractDataProvider.getContractsAddresses();
663
- }
664
-
665
- /**
666
- * A debugging utility to get notes based on the provided filter.
667
- *
668
- * Note that this should not be used in production code because the structure of notes is considered to be
669
- * an implementation detail of contracts. This is only meant to be used for debugging purposes. If you need to obtain
670
- * note-related information in production code, please implement a custom utility function on your contract and call
671
- * that function instead (e.g. `get_balance(owner: AztecAddress) -> u128` utility function on a Token contract).
672
- *
673
- * @param filter - The filter to apply to the notes.
674
- * @returns The requested notes.
675
- */
676
- public async getNotes(filter: NotesFilter): Promise<NoteDao[]> {
677
- // We need to manually trigger private state sync to have a guarantee that all the notes are available.
678
- const call = await this.#getFunctionCall('sync_private_state', [], filter.contractAddress);
679
- await this.simulateUtility(call);
680
-
681
- return this.noteDataProvider.getNotes(filter);
677
+ return this.contractStore.getContractsAddresses();
682
678
  }
683
679
 
684
680
  /**
@@ -694,14 +690,14 @@ export class PXE {
694
690
  let privateExecutionResult: PrivateExecutionResult;
695
691
  // We disable proving concurrently mostly out of caution, since it accesses some of our stores. Proving is so
696
692
  // computationally demanding that it'd be rare for someone to try to do it concurrently regardless.
697
- return this.#putInJobQueue(async () => {
693
+ return this.#putInJobQueue(async jobId => {
698
694
  const totalTimer = new Timer();
699
695
  try {
700
696
  const syncTimer = new Timer();
701
- await this.synchronizer.sync();
697
+ await this.blockStateSynchronizer.sync();
702
698
  const syncTime = syncTimer.ms();
703
699
  const contractFunctionSimulator = this.#getSimulatorForTx();
704
- privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
700
+ privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, undefined, jobId);
705
701
 
706
702
  const {
707
703
  publicInputs,
@@ -738,14 +734,22 @@ export class PXE {
738
734
  nodeRPCCalls: contractFunctionSimulator?.getStats().nodeRPCCalls,
739
735
  });
740
736
 
737
+ // While not strictly necessary to store tagging cache contents in the DB since we sync tagging indexes from
738
+ // chain before sending new logs, the sync can only see logs already included in blocks. If we send another
739
+ // transaction before this one is included in a block from this PXE, and that transaction contains a log with
740
+ // a tag derived from the same secret, we would reuse the tag and the transactions would be linked. Hence
741
+ // storing the tags here prevents linkage of txs sent from the same PXE.
741
742
  const preTagsUsedInTheTx = privateExecutionResult.entrypoint.preTags;
742
743
  if (preTagsUsedInTheTx.length > 0) {
743
- await this.taggingDataProvider.setLastUsedIndexesAsSender(preTagsUsedInTheTx);
744
- this.log.debug(`Stored used pre tags as sender for the tx`, {
744
+ // TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
745
+ const txHash = (await txProvingResult.toTx()).txHash;
746
+
747
+ await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash);
748
+ this.log.debug(`Stored used pre-tags as sender for the tx`, {
745
749
  preTagsUsedInTheTx,
746
750
  });
747
751
  } else {
748
- this.log.debug(`No pre tags used in the tx`);
752
+ this.log.debug(`No pre-tags used in the tx`);
749
753
  }
750
754
 
751
755
  return txProvingResult;
@@ -770,7 +774,7 @@ export class PXE {
770
774
  skipProofGeneration: boolean = true,
771
775
  ): Promise<TxProfileResult> {
772
776
  // We disable concurrent profiles for consistency with simulateTx.
773
- return this.#putInJobQueue(async () => {
777
+ return this.#putInJobQueue(async jobId => {
774
778
  const totalTimer = new Timer();
775
779
  try {
776
780
  const txInfo = {
@@ -786,11 +790,16 @@ export class PXE {
786
790
  txInfo,
787
791
  );
788
792
  const syncTimer = new Timer();
789
- await this.synchronizer.sync();
793
+ await this.blockStateSynchronizer.sync();
790
794
  const syncTime = syncTimer.ms();
791
795
 
792
796
  const contractFunctionSimulator = this.#getSimulatorForTx();
793
- const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
797
+ const privateExecutionResult = await this.#executePrivate(
798
+ contractFunctionSimulator,
799
+ txRequest,
800
+ undefined,
801
+ jobId,
802
+ );
794
803
 
795
804
  const { executionSteps, timings: { proving } = {} } = await this.#prove(
796
805
  txRequest,
@@ -870,7 +879,7 @@ export class PXE {
870
879
  // We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
871
880
  // to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
872
881
  // delete the same read value, or reading values that another simulation is currently modifying).
873
- return this.#putInJobQueue(async () => {
882
+ return this.#putInJobQueue(async jobId => {
874
883
  try {
875
884
  const totalTimer = new Timer();
876
885
  const txInfo = {
@@ -886,7 +895,7 @@ export class PXE {
886
895
  txInfo,
887
896
  );
888
897
  const syncTimer = new Timer();
889
- await this.synchronizer.sync();
898
+ await this.blockStateSynchronizer.sync();
890
899
  const syncTime = syncTimer.ms();
891
900
 
892
901
  const contractFunctionSimulator = this.#getSimulatorForTx(overrides);
@@ -896,7 +905,7 @@ export class PXE {
896
905
  const skipKernels = overrides?.contracts !== undefined && Object.keys(overrides.contracts ?? {}).length > 0;
897
906
 
898
907
  // Execution of private functions only; no proving, and no kernel logic.
899
- const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes);
908
+ const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes, jobId);
900
909
 
901
910
  let publicInputs: PrivateKernelTailCircuitPublicInputs | undefined;
902
911
  let executionSteps: PrivateExecutionStep[] = [];
@@ -910,7 +919,7 @@ export class PXE {
910
919
  ({ publicInputs, executionSteps } = await generateSimulatedProvingResult(
911
920
  privateExecutionResult,
912
921
  nonceGenerator,
913
- this.contractDataProvider,
922
+ this.contractStore,
914
923
  ));
915
924
  } else {
916
925
  // Kernel logic, plus proving of all private functions and kernels.
@@ -1011,15 +1020,26 @@ export class PXE {
1011
1020
  // We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
1012
1021
  // to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
1013
1022
  // delete the same read value, or reading values that another simulation is currently modifying).
1014
- return this.#putInJobQueue(async () => {
1023
+ return this.#putInJobQueue(async jobId => {
1015
1024
  try {
1016
1025
  const totalTimer = new Timer();
1017
1026
  const syncTimer = new Timer();
1018
- await this.synchronizer.sync();
1027
+ await this.blockStateSynchronizer.sync();
1019
1028
  const syncTime = syncTimer.ms();
1020
1029
  const functionTimer = new Timer();
1021
1030
  const contractFunctionSimulator = this.#getSimulatorForTx();
1022
- const executionResult = await this.#simulateUtility(contractFunctionSimulator, call, authwits ?? [], scopes);
1031
+
1032
+ await this.contractStore.syncPrivateState(call.to, call.selector, privateSyncCall =>
1033
+ this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
1034
+ );
1035
+
1036
+ const executionResult = await this.#simulateUtility(
1037
+ contractFunctionSimulator,
1038
+ call,
1039
+ authwits ?? [],
1040
+ scopes,
1041
+ jobId,
1042
+ );
1023
1043
  const functionTime = functionTimer.ms();
1024
1044
 
1025
1045
  const totalTime = totalTimer.ms();
@@ -1049,31 +1069,37 @@ export class PXE {
1049
1069
 
1050
1070
  /**
1051
1071
  * Returns the private events given search parameters.
1052
- * @param contractAddress - The address of the contract to get events from.
1053
1072
  * @param eventSelector - Event selector to search for.
1054
- * @param from - The block number to search from.
1055
- * @param numBlocks - The amount of blocks to search.
1056
- * @param recipients - The addresses that decrypted the logs.
1073
+ * @param filter
1074
+ * contractAddress - The address of the contract to get events from. Required.
1075
+ * scopes - One or more event scope addresses to filter by. Required.
1076
+ * fromBlock - The block number to search from (inclusive). Optional. If provided, it must be >= 0.
1077
+ * Defaults to 0.
1078
+ * If toBlock is defined but fromBlock is not, fromBlock defaults to toBlock - 1.
1079
+ * toBlock - The block number to search up to (exclusive). Optional. If provided, it must be > 0.
1080
+ * Defaults to the latest known block to PXE + 1.
1057
1081
  * @returns - The packed events with block and tx metadata.
1058
1082
  */
1059
- public async getPrivateEvents(
1060
- contractAddress: AztecAddress,
1061
- eventSelector: EventSelector,
1062
- from: number,
1063
- numBlocks: number,
1064
- recipients: AztecAddress[],
1065
- ): Promise<PrivateEvent[]> {
1066
- if (recipients.length === 0) {
1067
- throw new Error('Recipients are required to get private events');
1068
- }
1083
+ public getPrivateEvents(eventSelector: EventSelector, filter: PrivateEventFilter): Promise<PackedPrivateEvent[]> {
1084
+ return this.#putInJobQueue(async jobId => {
1085
+ await this.blockStateSynchronizer.sync();
1086
+ const contractFunctionSimulator = this.#getSimulatorForTx();
1087
+
1088
+ await this.contractStore.syncPrivateState(
1089
+ filter.contractAddress,
1090
+ null,
1091
+ async privateSyncCall =>
1092
+ await this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
1093
+ );
1069
1094
 
1070
- this.log.verbose(`Getting private events for ${contractAddress.toString()} from ${from} to ${from + numBlocks}`);
1095
+ const sanitizedFilter = await new PrivateEventFilterValidator(this.anchorBlockStore).validate(filter);
1071
1096
 
1072
- // We need to manually trigger private state sync to have a guarantee that all the events are available.
1073
- const call = await this.#getFunctionCall('sync_private_state', [], contractAddress);
1074
- await this.simulateUtility(call);
1097
+ this.log.debug(
1098
+ `Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`,
1099
+ );
1075
1100
 
1076
- return this.privateEventDataProvider.getPrivateEvents(contractAddress, from, numBlocks, recipients, eventSelector);
1101
+ return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
1102
+ });
1077
1103
  }
1078
1104
 
1079
1105
  /**