@aztec/pxe 0.0.1-commit.b655e406 → 0.0.1-commit.c7c42ec

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 (350) hide show
  1. package/dest/bin/check_oracle_version.d.ts +1 -1
  2. package/dest/bin/check_oracle_version.js +105 -15
  3. package/dest/block_synchronizer/block_synchronizer.d.ts +37 -0
  4. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  5. package/dest/{synchronizer/synchronizer.js → block_synchronizer/block_synchronizer.js} +20 -22
  6. package/dest/block_synchronizer/index.d.ts +2 -0
  7. package/dest/block_synchronizer/index.d.ts.map +1 -0
  8. package/dest/block_synchronizer/index.js +1 -0
  9. package/dest/config/index.d.ts +4 -12
  10. package/dest/config/index.d.ts.map +1 -1
  11. package/dest/config/index.js +7 -13
  12. package/dest/config/package_info.d.ts +1 -1
  13. package/dest/contract_function_simulator/contract_function_simulator.d.ts +43 -14
  14. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  15. package/dest/contract_function_simulator/contract_function_simulator.js +55 -29
  16. package/dest/contract_function_simulator/execution_note_cache.d.ts +9 -7
  17. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  18. package/dest/contract_function_simulator/execution_note_cache.js +21 -13
  19. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +2 -2
  20. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  21. package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
  22. package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
  23. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
  24. package/dest/contract_function_simulator/index.d.ts +1 -1
  25. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +2 -2
  26. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  27. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
  28. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  29. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
  30. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +3 -3
  31. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
  33. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +6 -4
  34. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  35. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +12 -3
  36. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +2 -2
  37. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -1
  39. package/dest/contract_function_simulator/oracle/index.d.ts +1 -1
  40. package/dest/contract_function_simulator/oracle/interfaces.d.ts +19 -13
  41. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +2 -4
  43. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
  45. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +10 -4
  46. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/oracle/note_packing_utils.js +10 -5
  48. package/dest/contract_function_simulator/oracle/oracle.d.ts +5 -4
  49. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  50. package/dest/contract_function_simulator/oracle/oracle.js +34 -17
  51. package/dest/contract_function_simulator/oracle/private_execution.d.ts +9 -10
  52. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  53. package/dest/contract_function_simulator/oracle/private_execution.js +12 -12
  54. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +24 -18
  55. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  56. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +41 -18
  57. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +58 -17
  58. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  59. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +147 -40
  60. package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
  61. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  62. package/dest/contract_function_simulator/pick_notes.js +1 -1
  63. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  64. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  65. package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
  66. package/dest/contract_function_simulator/proxied_node.d.ts +1 -1
  67. package/dest/contract_function_simulator/proxied_node.d.ts.map +1 -1
  68. package/dest/debug/pxe_debug_utils.d.ts +31 -0
  69. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  70. package/dest/debug/pxe_debug_utils.js +37 -0
  71. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  72. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  73. package/dest/entrypoints/client/bundle/index.js +0 -1
  74. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  75. package/dest/entrypoints/client/bundle/utils.js +4 -4
  76. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  77. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  78. package/dest/entrypoints/client/lazy/index.js +0 -1
  79. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  80. package/dest/entrypoints/client/lazy/utils.js +4 -4
  81. package/dest/entrypoints/pxe_creation_options.d.ts +3 -1
  82. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  83. package/dest/entrypoints/server/index.d.ts +2 -2
  84. package/dest/entrypoints/server/index.d.ts.map +1 -1
  85. package/dest/entrypoints/server/index.js +1 -1
  86. package/dest/entrypoints/server/utils.d.ts +1 -1
  87. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  88. package/dest/entrypoints/server/utils.js +5 -16
  89. package/dest/error_enriching.d.ts +4 -4
  90. package/dest/error_enriching.d.ts.map +1 -1
  91. package/dest/error_enriching.js +6 -6
  92. package/dest/events/event_service.d.ts +15 -0
  93. package/dest/events/event_service.d.ts.map +1 -0
  94. package/dest/events/event_service.js +47 -0
  95. package/dest/events/index.d.ts +2 -0
  96. package/dest/events/index.d.ts.map +1 -0
  97. package/dest/events/index.js +1 -0
  98. package/dest/events/private_event_filter_validator.d.ts +9 -0
  99. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  100. package/dest/events/private_event_filter_validator.js +39 -0
  101. package/dest/logs/log_service.d.ts +26 -0
  102. package/dest/logs/log_service.d.ts.map +1 -0
  103. package/dest/logs/log_service.js +120 -0
  104. package/dest/notes/index.d.ts +2 -0
  105. package/dest/notes/index.d.ts.map +1 -0
  106. package/dest/notes/index.js +1 -0
  107. package/dest/notes/note_service.d.ts +48 -0
  108. package/dest/notes/note_service.d.ts.map +1 -0
  109. package/dest/notes/note_service.js +152 -0
  110. package/dest/oracle_version.d.ts +3 -3
  111. package/dest/oracle_version.js +2 -2
  112. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +3 -3
  113. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -1
  114. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.js +7 -7
  115. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +1 -1
  116. package/dest/private_kernel/hints/index.d.ts +1 -1
  117. package/dest/private_kernel/index.d.ts +1 -1
  118. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  119. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  120. package/dest/private_kernel/private_kernel_execution_prover.js +11 -10
  121. package/dest/private_kernel/private_kernel_oracle.d.ts +3 -2
  122. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  123. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +8 -7
  124. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -1
  125. package/dest/private_kernel/private_kernel_oracle_impl.js +7 -7
  126. package/dest/public_storage/public_storage_service.d.ts +24 -0
  127. package/dest/public_storage/public_storage_service.d.ts.map +1 -0
  128. package/dest/public_storage/public_storage_service.js +26 -0
  129. package/dest/pxe.d.ts +47 -48
  130. package/dest/pxe.d.ts.map +1 -1
  131. package/dest/pxe.js +142 -171
  132. package/dest/storage/address_store/address_store.d.ts +11 -0
  133. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  134. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +1 -1
  135. package/dest/storage/address_store/index.d.ts +2 -0
  136. package/dest/storage/address_store/index.d.ts.map +1 -0
  137. package/dest/storage/address_store/index.js +1 -0
  138. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -0
  139. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  140. package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +2 -9
  141. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  142. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  143. package/dest/storage/anchor_block_store/index.js +1 -0
  144. package/dest/storage/capsule_store/capsule_store.d.ts +57 -0
  145. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  146. package/dest/storage/{capsule_data_provider/capsule_data_provider.js → capsule_store/capsule_store.js} +34 -6
  147. package/dest/storage/capsule_store/index.d.ts +2 -0
  148. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  149. package/dest/storage/capsule_store/index.js +1 -0
  150. package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +7 -15
  151. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  152. package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +34 -15
  153. package/dest/storage/contract_store/index.d.ts +2 -0
  154. package/dest/storage/contract_store/index.d.ts.map +1 -0
  155. package/dest/storage/contract_store/index.js +1 -0
  156. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  157. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  158. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
  159. package/dest/storage/index.d.ts +8 -8
  160. package/dest/storage/index.d.ts.map +1 -1
  161. package/dest/storage/index.js +7 -7
  162. package/dest/storage/metadata.d.ts +1 -1
  163. package/dest/storage/note_store/index.d.ts +3 -0
  164. package/dest/storage/note_store/index.d.ts.map +1 -0
  165. package/dest/storage/note_store/index.js +2 -0
  166. package/dest/storage/{note_data_provider/note_data_provider.d.ts → note_store/note_store.d.ts} +14 -13
  167. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  168. package/dest/storage/{note_data_provider/note_data_provider.js → note_store/note_store.js} +33 -19
  169. package/dest/storage/private_event_store/private_event_store.d.ts +51 -0
  170. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  171. package/dest/storage/{private_event_data_provider/private_event_data_provider.js → private_event_store/private_event_store.js} +39 -28
  172. package/dest/storage/tagging_store/index.d.ts +4 -0
  173. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  174. package/dest/storage/tagging_store/index.js +3 -0
  175. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +21 -0
  176. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  177. package/dest/storage/tagging_store/recipient_tagging_store.js +42 -0
  178. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  179. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  180. package/dest/storage/tagging_store/sender_address_book_store.js +30 -0
  181. package/dest/storage/tagging_store/sender_tagging_store.d.ts +67 -0
  182. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  183. package/dest/storage/tagging_store/sender_tagging_store.js +196 -0
  184. package/dest/tagging/index.d.ts +15 -6
  185. package/dest/tagging/index.d.ts.map +1 -1
  186. package/dest/tagging/index.js +23 -5
  187. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +14 -0
  188. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
  189. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
  190. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  191. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  192. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  193. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +14 -0
  194. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
  195. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +29 -0
  196. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +20 -0
  197. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  198. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
  199. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
  200. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  201. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +32 -0
  202. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +18 -0
  203. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  204. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +55 -0
  205. package/dest/tree_membership/tree_membership_service.d.ts +52 -0
  206. package/dest/tree_membership/tree_membership_service.d.ts.map +1 -0
  207. package/dest/tree_membership/tree_membership_service.js +84 -0
  208. package/package.json +20 -19
  209. package/src/bin/check_oracle_version.ts +130 -20
  210. package/src/{synchronizer/synchronizer.ts → block_synchronizer/block_synchronizer.ts} +19 -22
  211. package/src/block_synchronizer/index.ts +1 -0
  212. package/src/config/index.ts +10 -25
  213. package/src/contract_function_simulator/contract_function_simulator.ts +95 -28
  214. package/src/contract_function_simulator/execution_note_cache.ts +22 -11
  215. package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
  216. package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
  217. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
  218. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
  219. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -2
  220. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +14 -2
  221. package/src/contract_function_simulator/noir-structs/utility_context.ts +1 -1
  222. package/src/contract_function_simulator/oracle/interfaces.ts +26 -11
  223. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
  224. package/src/contract_function_simulator/oracle/note_packing_utils.ts +21 -5
  225. package/src/contract_function_simulator/oracle/oracle.ts +43 -13
  226. package/src/contract_function_simulator/oracle/private_execution.ts +17 -15
  227. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +100 -23
  228. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +223 -47
  229. package/src/contract_function_simulator/pick_notes.ts +1 -1
  230. package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
  231. package/src/debug/pxe_debug_utils.ts +48 -0
  232. package/src/entrypoints/client/bundle/index.ts +0 -1
  233. package/src/entrypoints/client/bundle/utils.ts +4 -4
  234. package/src/entrypoints/client/lazy/index.ts +0 -1
  235. package/src/entrypoints/client/lazy/utils.ts +4 -4
  236. package/src/entrypoints/pxe_creation_options.ts +2 -0
  237. package/src/entrypoints/server/index.ts +1 -1
  238. package/src/entrypoints/server/utils.ts +5 -19
  239. package/src/error_enriching.ts +7 -15
  240. package/src/events/event_service.ts +77 -0
  241. package/src/events/index.ts +1 -0
  242. package/src/events/private_event_filter_validator.ts +48 -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 +5 -9
  248. package/src/private_kernel/private_kernel_execution_prover.ts +12 -16
  249. package/src/private_kernel/private_kernel_oracle.ts +2 -1
  250. package/src/private_kernel/private_kernel_oracle_impl.ts +10 -9
  251. package/src/public_storage/public_storage_service.ts +33 -0
  252. package/src/pxe.ts +167 -223
  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} +45 -20
  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} +41 -22
  265. package/src/storage/{private_event_data_provider/private_event_data_provider.ts → private_event_store/private_event_store.ts} +61 -47
  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/index.ts +27 -5
  271. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +129 -0
  272. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  273. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +43 -0
  274. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +96 -0
  275. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +44 -0
  276. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +72 -0
  277. package/src/tree_membership/tree_membership_service.ts +112 -0
  278. package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -274
  279. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
  280. package/dest/contract_function_simulator/execution_data_provider.js +0 -14
  281. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
  282. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
  283. package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -701
  284. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  285. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  286. package/dest/storage/address_data_provider/index.d.ts +0 -2
  287. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  288. package/dest/storage/address_data_provider/index.js +0 -1
  289. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
  290. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  291. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  292. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  293. package/dest/storage/capsule_data_provider/index.js +0 -1
  294. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  295. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  296. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  297. package/dest/storage/contract_data_provider/index.js +0 -1
  298. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  299. package/dest/storage/note_data_provider/index.d.ts +0 -3
  300. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  301. package/dest/storage/note_data_provider/index.js +0 -2
  302. package/dest/storage/note_data_provider/note_dao.d.ts +0 -100
  303. package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
  304. package/dest/storage/note_data_provider/note_dao.js +0 -102
  305. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  306. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -43
  307. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  308. package/dest/storage/sync_data_provider/index.d.ts +0 -2
  309. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  310. package/dest/storage/sync_data_provider/index.js +0 -1
  311. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -10
  312. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  313. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  314. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  315. package/dest/storage/tagging_data_provider/index.js +0 -1
  316. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
  317. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  318. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
  319. package/dest/synchronizer/index.d.ts +0 -2
  320. package/dest/synchronizer/index.d.ts.map +0 -1
  321. package/dest/synchronizer/index.js +0 -1
  322. package/dest/synchronizer/synchronizer.d.ts +0 -35
  323. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  324. package/dest/tagging/constants.d.ts +0 -2
  325. package/dest/tagging/constants.d.ts.map +0 -1
  326. package/dest/tagging/constants.js +0 -2
  327. package/dest/tagging/siloed_tag.d.ts +0 -14
  328. package/dest/tagging/siloed_tag.d.ts.map +0 -1
  329. package/dest/tagging/siloed_tag.js +0 -20
  330. package/dest/tagging/tag.d.ts +0 -12
  331. package/dest/tagging/tag.d.ts.map +0 -1
  332. package/dest/tagging/tag.js +0 -17
  333. package/dest/tagging/utils.d.ts +0 -18
  334. package/dest/tagging/utils.d.ts.map +0 -1
  335. package/dest/tagging/utils.js +0 -24
  336. package/src/contract_function_simulator/execution_data_provider.ts +0 -343
  337. package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1019
  338. package/src/storage/address_data_provider/index.ts +0 -1
  339. package/src/storage/capsule_data_provider/index.ts +0 -1
  340. package/src/storage/contract_data_provider/index.ts +0 -1
  341. package/src/storage/note_data_provider/index.ts +0 -2
  342. package/src/storage/note_data_provider/note_dao.ts +0 -154
  343. package/src/storage/sync_data_provider/index.ts +0 -1
  344. package/src/storage/tagging_data_provider/index.ts +0 -1
  345. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
  346. package/src/synchronizer/index.ts +0 -1
  347. package/src/tagging/constants.ts +0 -2
  348. package/src/tagging/siloed_tag.ts +0 -22
  349. package/src/tagging/tag.ts +0 -16
  350. 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';
@@ -9,13 +10,10 @@ import { type ProtocolContractsProvider, protocolContractNames } from '@aztec/pr
9
10
  import type { CircuitSimulator } from '@aztec/simulator/client';
10
11
  import {
11
12
  type ContractArtifact,
12
- type EventMetadataDefinition,
13
+ EventSelector,
13
14
  FunctionCall,
14
- FunctionSelector,
15
15
  FunctionType,
16
- decodeFromAbi,
17
16
  decodeFunctionSignature,
18
- encodeArguments,
19
17
  } from '@aztec/stdlib/abi';
20
18
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
21
19
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
@@ -28,16 +26,16 @@ import {
28
26
  getContractClassFromArtifact,
29
27
  } from '@aztec/stdlib/contract';
30
28
  import { SimulationError } from '@aztec/stdlib/errors';
31
- import { siloNullifier } from '@aztec/stdlib/hash';
29
+ import { computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
32
30
  import type { AztecNode, PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
33
31
  import type {
34
32
  PrivateExecutionStep,
35
33
  PrivateKernelExecutionProofOutput,
36
34
  PrivateKernelTailCircuitPublicInputs,
37
35
  } from '@aztec/stdlib/kernel';
38
- import { type NotesFilter, UniqueNote } from '@aztec/stdlib/note';
39
36
  import {
40
37
  type ContractOverrides,
38
+ type InTx,
41
39
  PrivateExecutionResult,
42
40
  PrivateSimulationResult,
43
41
  type ProvingTimings,
@@ -54,32 +52,36 @@ import {
54
52
 
55
53
  import { inspect } from 'util';
56
54
 
55
+ import { BlockSynchronizer } from './block_synchronizer/index.js';
57
56
  import type { PXEConfig } from './config/index.js';
58
57
  import {
59
58
  ContractFunctionSimulator,
60
59
  generateSimulatedProvingResult,
61
60
  } from './contract_function_simulator/contract_function_simulator.js';
62
61
  import { readCurrentClassId } from './contract_function_simulator/oracle/private_execution.js';
63
- import { ProxiedContractDataProviderFactory } from './contract_function_simulator/proxied_contract_data_source.js';
64
- import { ProxiedNodeFactory } from './contract_function_simulator/proxied_node.js';
65
- import { PXEOracleInterface } from './contract_function_simulator/pxe_oracle_interface.js';
62
+ import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
63
+ import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
66
64
  import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
65
+ import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
67
66
  import {
68
67
  PrivateKernelExecutionProver,
69
68
  type PrivateKernelExecutionProverConfig,
70
69
  } from './private_kernel/private_kernel_execution_prover.js';
71
70
  import { PrivateKernelOracleImpl } from './private_kernel/private_kernel_oracle_impl.js';
72
- import { AddressDataProvider } from './storage/address_data_provider/address_data_provider.js';
73
- import { CapsuleDataProvider } from './storage/capsule_data_provider/capsule_data_provider.js';
74
- import { ContractDataProvider } from './storage/contract_data_provider/contract_data_provider.js';
75
- import { NoteDataProvider } from './storage/note_data_provider/note_data_provider.js';
76
- import {
77
- type PrivateEvent,
78
- PrivateEventDataProvider,
79
- } from './storage/private_event_data_provider/private_event_data_provider.js';
80
- import { SyncDataProvider } from './storage/sync_data_provider/sync_data_provider.js';
81
- import { TaggingDataProvider } from './storage/tagging_data_provider/tagging_data_provider.js';
82
- import { Synchronizer } from './synchronizer/index.js';
71
+ import { AddressStore } from './storage/address_store/address_store.js';
72
+ import { AnchorBlockStore } from './storage/anchor_block_store/anchor_block_store.js';
73
+ import { CapsuleStore } from './storage/capsule_store/capsule_store.js';
74
+ import { ContractStore } from './storage/contract_store/contract_store.js';
75
+ import { NoteStore } from './storage/note_store/note_store.js';
76
+ import { PrivateEventStore } from './storage/private_event_store/private_event_store.js';
77
+ import { RecipientTaggingStore } from './storage/tagging_store/recipient_tagging_store.js';
78
+ import { SenderAddressBookStore } from './storage/tagging_store/sender_address_book_store.js';
79
+ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store.js';
80
+
81
+ export type PackedPrivateEvent = InTx & {
82
+ packedEvent: Fr[];
83
+ eventSelector: EventSelector;
84
+ };
83
85
 
84
86
  /**
85
87
  * Private eXecution Environment (PXE) is a library used by wallets to simulate private phase of transactions and to
@@ -88,21 +90,24 @@ import { Synchronizer } from './synchronizer/index.js';
88
90
  export class PXE {
89
91
  private constructor(
90
92
  private node: AztecNode,
91
- private synchronizer: Synchronizer,
93
+ private blockStateSynchronizer: BlockSynchronizer,
92
94
  private keyStore: KeyStore,
93
- private contractDataProvider: ContractDataProvider,
94
- private noteDataProvider: NoteDataProvider,
95
- private capsuleDataProvider: CapsuleDataProvider,
96
- private syncDataProvider: SyncDataProvider,
97
- private taggingDataProvider: TaggingDataProvider,
98
- private addressDataProvider: AddressDataProvider,
99
- private privateEventDataProvider: PrivateEventDataProvider,
95
+ private contractStore: ContractStore,
96
+ private noteStore: NoteStore,
97
+ private capsuleStore: CapsuleStore,
98
+ private anchorBlockStore: AnchorBlockStore,
99
+ private senderTaggingStore: SenderTaggingStore,
100
+ private senderAddressBookStore: SenderAddressBookStore,
101
+ private recipientTaggingStore: RecipientTaggingStore,
102
+ private addressStore: AddressStore,
103
+ private privateEventStore: PrivateEventStore,
100
104
  private simulator: CircuitSimulator,
101
105
  private proverEnabled: boolean,
102
106
  private proofCreator: PrivateKernelProver,
103
107
  private protocolContractsProvider: ProtocolContractsProvider,
104
108
  private log: Logger,
105
109
  private jobQueue: SerialQueue,
110
+ public debug: PXEDebugUtils,
106
111
  ) {}
107
112
 
108
113
  /**
@@ -127,24 +132,20 @@ export class PXE {
127
132
  : loggerOrSuffix;
128
133
 
129
134
  const proverEnabled = !!config.proverEnabled;
130
- const addressDataProvider = new AddressDataProvider(store);
131
- const privateEventDataProvider = new PrivateEventDataProvider(store);
132
- const contractDataProvider = new ContractDataProvider(store);
133
- const noteDataProvider = await NoteDataProvider.create(store);
134
- const syncDataProvider = new SyncDataProvider(store);
135
- const taggingDataProvider = new TaggingDataProvider(store);
136
- const capsuleDataProvider = new CapsuleDataProvider(store);
135
+ const addressStore = new AddressStore(store);
136
+ const privateEventStore = new PrivateEventStore(store);
137
+ const contractStore = new ContractStore(store);
138
+ const noteStore = await NoteStore.create(store);
139
+ const anchorBlockStore = new AnchorBlockStore(store);
140
+ const senderTaggingStore = new SenderTaggingStore(store);
141
+ const senderAddressBookStore = new SenderAddressBookStore(store);
142
+ const recipientTaggingStore = new RecipientTaggingStore(store);
143
+ const capsuleStore = new CapsuleStore(store);
137
144
  const keyStore = new KeyStore(store);
138
145
  const tipsStore = new L2TipsKVStore(store, 'pxe');
139
- const synchronizer = new Synchronizer(
140
- node,
141
- syncDataProvider,
142
- noteDataProvider,
143
- taggingDataProvider,
144
- tipsStore,
145
- config,
146
- loggerOrSuffix,
147
- );
146
+ const synchronizer = new BlockSynchronizer(node, anchorBlockStore, noteStore, tipsStore, config, loggerOrSuffix);
147
+
148
+ const debugUtils = new PXEDebugUtils(contractStore, noteStore);
148
149
 
149
150
  const jobQueue = new SerialQueue();
150
151
 
@@ -152,21 +153,26 @@ export class PXE {
152
153
  node,
153
154
  synchronizer,
154
155
  keyStore,
155
- contractDataProvider,
156
- noteDataProvider,
157
- capsuleDataProvider,
158
- syncDataProvider,
159
- taggingDataProvider,
160
- addressDataProvider,
161
- privateEventDataProvider,
156
+ contractStore,
157
+ noteStore,
158
+ capsuleStore,
159
+ anchorBlockStore,
160
+ senderTaggingStore,
161
+ senderAddressBookStore,
162
+ recipientTaggingStore,
163
+ addressStore,
164
+ privateEventStore,
162
165
  simulator,
163
166
  proverEnabled,
164
167
  proofCreator,
165
168
  protocolContractsProvider,
166
169
  log,
167
170
  jobQueue,
171
+ debugUtils,
168
172
  );
169
173
 
174
+ debugUtils.setPXE(pxe);
175
+
170
176
  pxe.jobQueue.start();
171
177
 
172
178
  await pxe.#registerProtocolContracts();
@@ -178,19 +184,22 @@ export class PXE {
178
184
  // Internal methods
179
185
 
180
186
  #getSimulatorForTx(overrides?: { contracts?: ContractOverrides }) {
181
- const pxeOracleInterface = new PXEOracleInterface(
182
- ProxiedNodeFactory.create(this.node),
187
+ const proxyContractStore = ProxiedContractStoreFactory.create(this.contractStore, overrides?.contracts);
188
+
189
+ return new ContractFunctionSimulator(
190
+ proxyContractStore,
191
+ this.noteStore,
183
192
  this.keyStore,
184
- ProxiedContractDataProviderFactory.create(this.contractDataProvider, overrides?.contracts),
185
- this.noteDataProvider,
186
- this.capsuleDataProvider,
187
- this.syncDataProvider,
188
- this.taggingDataProvider,
189
- this.addressDataProvider,
190
- this.privateEventDataProvider,
191
- this.log,
193
+ this.addressStore,
194
+ this.node,
195
+ this.anchorBlockStore,
196
+ this.senderTaggingStore,
197
+ this.recipientTaggingStore,
198
+ this.senderAddressBookStore,
199
+ this.capsuleStore,
200
+ this.privateEventStore,
201
+ this.simulator,
192
202
  );
193
- return new ContractFunctionSimulator(pxeOracleInterface, this.simulator);
194
203
  }
195
204
 
196
205
  #contextualizeError(err: Error, ...context: string[]): Error {
@@ -229,8 +238,8 @@ export class PXE {
229
238
  for (const name of protocolContractNames) {
230
239
  const { address, contractClass, instance, artifact } =
231
240
  await this.protocolContractsProvider.getProtocolContractArtifact(name);
232
- await this.contractDataProvider.addContractArtifact(contractClass.id, artifact);
233
- await this.contractDataProvider.addContractInstance(instance);
241
+ await this.contractStore.addContractArtifact(contractClass.id, artifact);
242
+ await this.contractStore.addContractInstance(instance);
234
243
  registered[name] = address.toString();
235
244
  }
236
245
  this.log.verbose(`Registered protocol contracts in pxe`, registered);
@@ -249,31 +258,6 @@ export class PXE {
249
258
  return !!(await this.node.getNullifierMembershipWitness('latest', initNullifier));
250
259
  }
251
260
 
252
- async #getFunctionCall(functionName: string, args: any[], to: AztecAddress): Promise<FunctionCall> {
253
- const contract = await this.contractDataProvider.getContract(to);
254
- if (!contract) {
255
- throw new Error(
256
- `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`,
257
- );
258
- }
259
-
260
- const functionDao = contract.functions.find(f => f.name === functionName);
261
- if (!functionDao) {
262
- throw new Error(`Unknown function ${functionName} in contract ${contract.name}.`);
263
- }
264
-
265
- return {
266
- name: functionDao.name,
267
- args: encodeArguments(functionDao, args),
268
- selector: await FunctionSelector.fromNameAndParameters(functionDao.name, functionDao.parameters),
269
- type: functionDao.functionType,
270
- to,
271
- hideMsgSender: false,
272
- isStatic: functionDao.isStatic,
273
- returnTypes: functionDao.returnTypes,
274
- };
275
- }
276
-
277
261
  // Executes the entrypoint private function, as well as all nested private
278
262
  // functions that might arise.
279
263
  async #executePrivate(
@@ -284,11 +268,14 @@ export class PXE {
284
268
  const { origin: contractAddress, functionSelector } = txRequest;
285
269
 
286
270
  try {
271
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
272
+
287
273
  const result = await contractFunctionSimulator.run(
288
274
  txRequest,
289
275
  contractAddress,
290
276
  functionSelector,
291
277
  undefined,
278
+ anchorBlockHeader,
292
279
  // The sender for tags is set by contracts, typically by an account
293
280
  // contract entrypoint
294
281
  undefined, // senderForTags
@@ -298,7 +285,7 @@ export class PXE {
298
285
  return result;
299
286
  } catch (err) {
300
287
  if (err instanceof SimulationError) {
301
- await enrichSimulationError(err, this.contractDataProvider, this.log);
288
+ await enrichSimulationError(err, this.contractStore, this.log);
302
289
  }
303
290
  throw err;
304
291
  }
@@ -320,10 +307,11 @@ export class PXE {
320
307
  scopes?: AztecAddress[],
321
308
  ) {
322
309
  try {
323
- return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], scopes);
310
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
311
+ return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes);
324
312
  } catch (err) {
325
313
  if (err instanceof SimulationError) {
326
- await enrichSimulationError(err, this.contractDataProvider, this.log);
314
+ await enrichSimulationError(err, this.contractStore, this.log);
327
315
  }
328
316
  throw err;
329
317
  }
@@ -347,7 +335,7 @@ export class PXE {
347
335
  } catch (err) {
348
336
  if (err instanceof SimulationError) {
349
337
  try {
350
- await enrichPublicSimulationError(err, this.contractDataProvider, this.log);
338
+ await enrichPublicSimulationError(err, this.contractStore, this.log);
351
339
  } catch (enrichErr) {
352
340
  this.log.error(`Failed to enrich public simulation error: ${enrichErr}`);
353
341
  }
@@ -375,7 +363,7 @@ export class PXE {
375
363
  ): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
376
364
  const simulationAnchorBlock = privateExecutionResult.getSimulationAnchorBlockNumber();
377
365
  const kernelOracle = new PrivateKernelOracleImpl(
378
- this.contractDataProvider,
366
+ this.contractStore,
379
367
  this.keyStore,
380
368
  this.node,
381
369
  simulationAnchorBlock,
@@ -388,7 +376,7 @@ export class PXE {
388
376
  // Public API
389
377
 
390
378
  public getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
391
- return this.contractDataProvider.getContractInstance(address);
379
+ return this.contractStore.getContractInstance(address);
392
380
  }
393
381
 
394
382
  /**
@@ -413,7 +401,7 @@ export class PXE {
413
401
  isContractClassPubliclyRegistered: boolean;
414
402
  artifact: ContractArtifact | undefined;
415
403
  }> {
416
- const artifact = await this.contractDataProvider.getContractArtifact(id);
404
+ const artifact = await this.contractStore.getContractArtifact(id);
417
405
  if (!artifact) {
418
406
  this.log.warn(`No artifact found for contract class ${id.toString()} when looking for its metadata`);
419
407
  }
@@ -443,7 +431,7 @@ export class PXE {
443
431
  }> {
444
432
  let instance;
445
433
  try {
446
- instance = await this.contractDataProvider.getContractInstance(address);
434
+ instance = await this.contractStore.getContractInstance(address);
447
435
  } catch {
448
436
  this.log.warn(`No instance found for contract ${address.toString()} when looking for its metadata`);
449
437
  }
@@ -475,56 +463,58 @@ export class PXE {
475
463
  this.log.debug(`Registered account\n ${accountCompleteAddress.toReadableString()}`);
476
464
  }
477
465
 
478
- await this.addressDataProvider.addCompleteAddress(accountCompleteAddress);
479
- await this.noteDataProvider.addScope(accountCompleteAddress.address);
466
+ await this.addressStore.addCompleteAddress(accountCompleteAddress);
467
+ await this.noteStore.addScope(accountCompleteAddress.address);
480
468
  return accountCompleteAddress;
481
469
  }
482
470
 
483
471
  /**
484
- * Registers a user contact in PXE.
472
+ * Registers a sender in this PXE.
485
473
  *
486
- * Once a new contact is registered, the PXE will be able to receive notes tagged from this contact.
487
- * Will do nothing if the account is already registered.
474
+ * After registering a new sender, the PXE will sync private logs that are tagged with this sender's address.
475
+ * Will do nothing if the address is already registered.
488
476
  *
489
- * @param address - Address of the user to add to the address book
490
- * @returns The address address of the account.
477
+ * @param sender - Address of the sender to register.
478
+ * @returns The address of the sender.
479
+ * TODO: It's strange that we return the address here and I (benesjan) think we should drop the return value.
491
480
  */
492
- public async registerSender(address: AztecAddress): Promise<AztecAddress> {
481
+ public async registerSender(sender: AztecAddress): Promise<AztecAddress> {
493
482
  const accounts = await this.keyStore.getAccounts();
494
- if (accounts.includes(address)) {
495
- this.log.info(`Sender:\n "${address.toString()}"\n already registered.`);
496
- return address;
483
+ if (accounts.includes(sender)) {
484
+ this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
485
+ return sender;
497
486
  }
498
487
 
499
- const wasAdded = await this.taggingDataProvider.addSenderAddress(address);
488
+ const wasAdded = await this.senderAddressBookStore.addSender(sender);
500
489
 
501
490
  if (wasAdded) {
502
- this.log.info(`Added sender:\n ${address.toString()}`);
491
+ this.log.info(`Added sender:\n ${sender.toString()}`);
503
492
  } else {
504
- this.log.info(`Sender:\n "${address.toString()}"\n already registered.`);
493
+ this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
505
494
  }
506
495
 
507
- return address;
496
+ return sender;
508
497
  }
509
498
 
510
499
  /**
511
- * Retrieves the addresses stored as senders on this PXE.
512
- * @returns An array of the senders on this PXE.
500
+ * Retrieves senders registered in this PXE.
501
+ * @returns Senders registered in this PXE.
513
502
  */
514
503
  public getSenders(): Promise<AztecAddress[]> {
515
- return this.taggingDataProvider.getSenderAddresses();
504
+ return this.senderAddressBookStore.getSenders();
516
505
  }
517
506
 
518
507
  /**
519
- * Removes a sender in the address book.
508
+ * Removes a sender registered in this PXE.
509
+ * @param sender - The address of the sender to remove.
520
510
  */
521
- public async removeSender(address: AztecAddress): Promise<void> {
522
- const wasRemoved = await this.taggingDataProvider.removeSenderAddress(address);
511
+ public async removeSender(sender: AztecAddress): Promise<void> {
512
+ const wasRemoved = await this.senderAddressBookStore.removeSender(sender);
523
513
 
524
514
  if (wasRemoved) {
525
- this.log.info(`Removed sender:\n ${address.toString()}`);
515
+ this.log.info(`Removed sender:\n ${sender.toString()}`);
526
516
  } else {
527
- this.log.info(`Sender:\n "${address.toString()}"\n not in address book.`);
517
+ this.log.info(`Sender:\n "${sender.toString()}"\n not registered in PXE.`);
528
518
  }
529
519
  }
530
520
 
@@ -534,7 +524,7 @@ export class PXE {
534
524
  */
535
525
  public async getRegisteredAccounts(): Promise<CompleteAddress[]> {
536
526
  // Get complete addresses of both the recipients and the accounts
537
- const completeAddresses = await this.addressDataProvider.getCompleteAddresses();
527
+ const completeAddresses = await this.addressStore.getCompleteAddresses();
538
528
  // Filter out the addresses not corresponding to accounts
539
529
  const accounts = await this.keyStore.getAccounts();
540
530
  return completeAddresses.filter(completeAddress =>
@@ -549,7 +539,7 @@ export class PXE {
549
539
  */
550
540
  public async registerContractClass(artifact: ContractArtifact): Promise<void> {
551
541
  const { id: contractClassId } = await getContractClassFromArtifact(artifact);
552
- await this.contractDataProvider.addContractArtifact(contractClassId, artifact);
542
+ await this.contractStore.addContractArtifact(contractClassId, artifact);
553
543
  this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
554
544
  }
555
545
 
@@ -578,7 +568,7 @@ export class PXE {
578
568
  if (!computedAddress.equals(instance.address)) {
579
569
  throw new Error('Added a contract in which the address does not match the contract instance.');
580
570
  }
581
- await this.contractDataProvider.addContractArtifact(contractClass.id, artifact);
571
+ await this.contractStore.addContractArtifact(contractClass.id, artifact);
582
572
 
583
573
  const publicFunctionSignatures = artifact.functions
584
574
  .filter(fn => fn.functionType === FunctionType.PUBLIC)
@@ -586,7 +576,7 @@ export class PXE {
586
576
  await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
587
577
  } else {
588
578
  // Otherwise, make sure there is an artifact already registered for that class id
589
- artifact = await this.contractDataProvider.getContractArtifact(instance.currentContractClassId);
579
+ artifact = await this.contractStore.getContractArtifact(instance.currentContractClassId);
590
580
  if (!artifact) {
591
581
  throw new Error(
592
582
  `Artifact not found when registering an instance. Contract class: ${instance.currentContractClassId}.`,
@@ -594,7 +584,7 @@ export class PXE {
594
584
  }
595
585
  }
596
586
 
597
- await this.contractDataProvider.addContractInstance(instance);
587
+ await this.contractStore.addContractInstance(instance);
598
588
  this.log.info(
599
589
  `Added contract ${artifact.name} at ${instance.address.toString()} with class ${instance.currentContractClassId}`,
600
590
  );
@@ -613,14 +603,14 @@ export class PXE {
613
603
  // We disable concurrently updating contracts to avoid concurrently syncing with the node, or changing a contract's
614
604
  // class while we're simulating it.
615
605
  return this.#putInJobQueue(async () => {
616
- const currentInstance = await this.contractDataProvider.getContractInstance(contractAddress);
606
+ const currentInstance = await this.contractStore.getContractInstance(contractAddress);
617
607
  if (!currentInstance) {
618
608
  throw new Error(`Instance not found when updating a contract. Contract address: ${contractAddress}.`);
619
609
  }
620
610
  const contractClass = await getContractClassFromArtifact(artifact);
621
- await this.synchronizer.sync();
611
+ await this.blockStateSynchronizer.sync();
622
612
 
623
- const header = await this.syncDataProvider.getBlockHeader();
613
+ const header = await this.anchorBlockStore.getBlockHeader();
624
614
 
625
615
  const currentClassId = await readCurrentClassId(
626
616
  contractAddress,
@@ -633,7 +623,7 @@ export class PXE {
633
623
  throw new Error('Could not update contract to a class different from the current one.');
634
624
  }
635
625
 
636
- await this.contractDataProvider.addContractArtifact(contractClass.id, artifact);
626
+ await this.contractStore.addContractArtifact(contractClass.id, artifact);
637
627
 
638
628
  const publicFunctionSignatures = artifact.functions
639
629
  .filter(fn => fn.functionType === FunctionType.PUBLIC)
@@ -641,7 +631,7 @@ export class PXE {
641
631
  await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
642
632
 
643
633
  currentInstance.currentContractClassId = contractClass.id;
644
- await this.contractDataProvider.addContractInstance(currentInstance);
634
+ await this.contractStore.addContractInstance(currentInstance);
645
635
  this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
646
636
  });
647
637
  }
@@ -651,39 +641,7 @@ export class PXE {
651
641
  * @returns An array of contracts addresses registered on this PXE.
652
642
  */
653
643
  public getContracts(): Promise<AztecAddress[]> {
654
- return this.contractDataProvider.getContractsAddresses();
655
- }
656
-
657
- /**
658
- * A debugging utility to get notes based on the provided filter.
659
- *
660
- * Note that this should not be used in production code because the structure of notes is considered to be
661
- * an implementation detail of contracts. This is only meant to be used for debugging purposes. If you need to obtain
662
- * note-related information in production code, please implement a custom utility function on your contract and call
663
- * that function instead (e.g. `get_balance(owner: AztecAddress) -> u128` utility function on a Token contract).
664
- *
665
- * @param filter - The filter to apply to the notes.
666
- * @returns The requested notes.
667
- */
668
- public async getNotes(filter: NotesFilter): Promise<UniqueNote[]> {
669
- // We need to manually trigger private state sync to have a guarantee that all the notes are available.
670
- await this.simulateUtility('sync_private_state', [], filter.contractAddress);
671
-
672
- const noteDaos = await this.noteDataProvider.getNotes(filter);
673
-
674
- const uniqueNotes = noteDaos.map(async dao => {
675
- const completeAddresses = await this.addressDataProvider.getCompleteAddresses();
676
- const completeAddressIndex = completeAddresses.findIndex(completeAddress =>
677
- completeAddress.address.equals(dao.recipient),
678
- );
679
- const completeAddress = completeAddresses[completeAddressIndex];
680
- if (completeAddress === undefined) {
681
- throw new Error(`Cannot find complete address for recipient ${dao.recipient.toString()}`);
682
- }
683
- const recipient = completeAddress.address;
684
- return new UniqueNote(dao.note, recipient, dao.contractAddress, dao.storageSlot, dao.txHash, dao.noteNonce);
685
- });
686
- return Promise.all(uniqueNotes);
644
+ return this.contractStore.getContractsAddresses();
687
645
  }
688
646
 
689
647
  /**
@@ -703,7 +661,7 @@ export class PXE {
703
661
  const totalTimer = new Timer();
704
662
  try {
705
663
  const syncTimer = new Timer();
706
- await this.synchronizer.sync();
664
+ await this.blockStateSynchronizer.sync();
707
665
  const syncTime = syncTimer.ms();
708
666
  const contractFunctionSimulator = this.#getSimulatorForTx();
709
667
  privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
@@ -743,14 +701,22 @@ export class PXE {
743
701
  nodeRPCCalls: contractFunctionSimulator?.getStats().nodeRPCCalls,
744
702
  });
745
703
 
704
+ // While not strictly necessary to store tagging cache contents in the DB since we sync tagging indexes from
705
+ // chain before sending new logs, the sync can only see logs already included in blocks. If we send another
706
+ // transaction before this one is included in a block from this PXE, and that transaction contains a log with
707
+ // a tag derived from the same secret, we would reuse the tag and the transactions would be linked. Hence
708
+ // storing the tags here prevents linkage of txs sent from the same PXE.
746
709
  const preTagsUsedInTheTx = privateExecutionResult.entrypoint.preTags;
747
710
  if (preTagsUsedInTheTx.length > 0) {
748
- await this.taggingDataProvider.setLastUsedIndexesAsSender(preTagsUsedInTheTx);
749
- this.log.debug(`Stored used pre tags as sender for the tx`, {
711
+ // TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
712
+ const txHash = (await txProvingResult.toTx()).txHash;
713
+
714
+ await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash);
715
+ this.log.debug(`Stored used pre-tags as sender for the tx`, {
750
716
  preTagsUsedInTheTx,
751
717
  });
752
718
  } else {
753
- this.log.debug(`No pre tags used in the tx`);
719
+ this.log.debug(`No pre-tags used in the tx`);
754
720
  }
755
721
 
756
722
  return txProvingResult;
@@ -791,7 +757,7 @@ export class PXE {
791
757
  txInfo,
792
758
  );
793
759
  const syncTimer = new Timer();
794
- await this.synchronizer.sync();
760
+ await this.blockStateSynchronizer.sync();
795
761
  const syncTime = syncTimer.ms();
796
762
 
797
763
  const contractFunctionSimulator = this.#getSimulatorForTx();
@@ -891,7 +857,7 @@ export class PXE {
891
857
  txInfo,
892
858
  );
893
859
  const syncTimer = new Timer();
894
- await this.synchronizer.sync();
860
+ await this.blockStateSynchronizer.sync();
895
861
  const syncTime = syncTimer.ms();
896
862
 
897
863
  const contractFunctionSimulator = this.#getSimulatorForTx(overrides);
@@ -908,15 +874,14 @@ export class PXE {
908
874
 
909
875
  if (skipKernels) {
910
876
  // According to the protocol rules, the nonce generator for the note hashes
911
- // can either be the first nullifier in the tx or the hash of the initial tx request
912
- // if there are none.
877
+ // can either be the first nullifier in the tx or the protocol nullifier if there are none.
913
878
  const nonceGenerator = privateExecutionResult.firstNullifier.equals(Fr.ZERO)
914
- ? await txRequest.toTxRequest().hash()
879
+ ? await computeProtocolNullifier(await txRequest.toTxRequest().hash())
915
880
  : privateExecutionResult.firstNullifier;
916
881
  ({ publicInputs, executionSteps } = await generateSimulatedProvingResult(
917
882
  privateExecutionResult,
918
883
  nonceGenerator,
919
- this.contractDataProvider,
884
+ this.contractStore,
920
885
  ));
921
886
  } else {
922
887
  // Kernel logic, plus proving of all private functions and kernels.
@@ -1003,21 +968,15 @@ export class PXE {
1003
968
  /**
1004
969
  * Simulate the execution of a contract utility function.
1005
970
  *
1006
- * @param functionName - The name of the utility contract function to be called.
1007
- * @param args - The arguments to be provided to the function.
1008
- * @param to - The address of the contract to be called.
971
+ * @param call - The function call containing the function details, arguments, and target contract address.
1009
972
  * @param authwits - (Optional) The authentication witnesses required for the function call.
1010
- * @param from - (Optional) The msg sender to set for the call.
1011
973
  * @param scopes - (Optional) The accounts whose notes we can access in this call. Currently optional and will
1012
974
  * default to all.
1013
975
  * @returns The result of the utility function call, structured based on the function ABI.
1014
976
  */
1015
977
  public simulateUtility(
1016
- functionName: string,
1017
- args: any[],
1018
- to: AztecAddress,
978
+ call: FunctionCall,
1019
979
  authwits?: AuthWitness[],
1020
- _from?: AztecAddress,
1021
980
  scopes?: AztecAddress[],
1022
981
  ): Promise<UtilitySimulationResult> {
1023
982
  // We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
@@ -1027,22 +986,16 @@ export class PXE {
1027
986
  try {
1028
987
  const totalTimer = new Timer();
1029
988
  const syncTimer = new Timer();
1030
- await this.synchronizer.sync();
989
+ await this.blockStateSynchronizer.sync();
1031
990
  const syncTime = syncTimer.ms();
1032
- const functionCall = await this.#getFunctionCall(functionName, args, to);
1033
991
  const functionTimer = new Timer();
1034
992
  const contractFunctionSimulator = this.#getSimulatorForTx();
1035
- const executionResult = await this.#simulateUtility(
1036
- contractFunctionSimulator,
1037
- functionCall,
1038
- authwits ?? [],
1039
- scopes,
1040
- );
993
+ const executionResult = await this.#simulateUtility(contractFunctionSimulator, call, authwits ?? [], scopes);
1041
994
  const functionTime = functionTimer.ms();
1042
995
 
1043
996
  const totalTime = totalTimer.ms();
1044
997
 
1045
- const perFunction = [{ functionName, time: functionTime }];
998
+ const perFunction = [{ functionName: call.name, time: functionTime }];
1046
999
 
1047
1000
  const timings: SimulationTimings = {
1048
1001
  total: totalTime,
@@ -1054,10 +1007,11 @@ export class PXE {
1054
1007
  const simulationStats = contractFunctionSimulator.getStats();
1055
1008
  return { result: executionResult, stats: { timings, nodeRPCCalls: simulationStats.nodeRPCCalls } };
1056
1009
  } catch (err: any) {
1010
+ const { to, name, args } = call;
1057
1011
  const stringifiedArgs = args.map(arg => arg.toString()).join(', ');
1058
1012
  throw this.#contextualizeError(
1059
1013
  err,
1060
- `simulateUtility ${to}:${functionName}(${stringifiedArgs})`,
1014
+ `simulateUtility ${to}:${name}(${stringifiedArgs})`,
1061
1015
  `scopes=${scopes?.map(s => s.toString()).join(', ') ?? 'undefined'}`,
1062
1016
  );
1063
1017
  }
@@ -1066,42 +1020,32 @@ export class PXE {
1066
1020
 
1067
1021
  /**
1068
1022
  * Returns the private events given search parameters.
1069
- * @param contractAddress - The address of the contract to get events from.
1070
- * @param eventMetadata - Metadata of the event. This should be the class generated from the contract. e.g. Contract.events.Event
1071
- * @param from - The block number to search from.
1072
- * @param numBlocks - The amount of blocks to search.
1073
- * @param recipients - The addresses that decrypted the logs.
1074
- * @returns - The deserialized events.
1023
+ * @param eventSelector - Event selector to search for.
1024
+ * @param filter
1025
+ * contractAddress - The address of the contract to get events from. Required.
1026
+ * scopes - One or more event scope addresses to filter by. Required.
1027
+ * fromBlock - The block number to search from (inclusive). Optional. If provided, it must be >= 0.
1028
+ * Defaults to 0.
1029
+ * If toBlock is defined but fromBlock is not, fromBlock defaults to toBlock - 1.
1030
+ * toBlock - The block number to search up to (exclusive). Optional. If provided, it must be > 0.
1031
+ * Defaults to the latest known block to PXE + 1.
1032
+ * @returns - The packed events with block and tx metadata.
1075
1033
  */
1076
- public async getPrivateEvents<T>(
1077
- contractAddress: AztecAddress,
1078
- eventMetadataDef: EventMetadataDefinition,
1079
- from: number,
1080
- numBlocks: number,
1081
- recipients: AztecAddress[],
1082
- ): Promise<T[]> {
1083
- if (recipients.length === 0) {
1084
- throw new Error('Recipients are required to get private events');
1085
- }
1086
-
1087
- this.log.verbose(`Getting private events for ${contractAddress.toString()} from ${from} to ${from + numBlocks}`);
1088
-
1034
+ public async getPrivateEvents(
1035
+ eventSelector: EventSelector,
1036
+ filter: PrivateEventFilter,
1037
+ ): Promise<PackedPrivateEvent[]> {
1089
1038
  // We need to manually trigger private state sync to have a guarantee that all the events are available.
1090
- await this.simulateUtility('sync_private_state', [], contractAddress);
1091
-
1092
- const events = await this.privateEventDataProvider.getPrivateEvents(
1093
- contractAddress,
1094
- from,
1095
- numBlocks,
1096
- recipients,
1097
- eventMetadataDef.eventSelector,
1098
- );
1039
+ const call = await this.contractStore.getFunctionCall('sync_private_state', [], filter.contractAddress);
1040
+ await this.simulateUtility(call);
1041
+
1042
+ const sanitizedFilter = await new PrivateEventFilterValidator(this.anchorBlockStore).validate(filter);
1099
1043
 
1100
- const decodedEvents = events.map(
1101
- (event: PrivateEvent): T => decodeFromAbi([eventMetadataDef.abiType], event.msgContent) as T,
1044
+ this.log.debug(
1045
+ `Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`,
1102
1046
  );
1103
1047
 
1104
- return decodedEvents;
1048
+ return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
1105
1049
  }
1106
1050
 
1107
1051
  /**