@aztec/pxe 0.0.1-commit.03f7ef2 → 0.0.1-commit.0b941701

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 (328) hide show
  1. package/dest/bin/check_oracle_version.js +1 -1
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +14 -10
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  4. package/dest/block_synchronizer/block_synchronizer.js +72 -32
  5. package/dest/config/index.d.ts +3 -1
  6. package/dest/config/index.d.ts.map +1 -1
  7. package/dest/config/index.js +17 -0
  8. package/dest/config/package_info.js +1 -1
  9. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  10. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  11. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  12. package/dest/contract_function_simulator/contract_function_simulator.d.ts +28 -27
  13. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  14. package/dest/contract_function_simulator/contract_function_simulator.js +56 -40
  15. package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
  16. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  17. package/dest/contract_function_simulator/execution_note_cache.js +45 -28
  18. package/dest/contract_function_simulator/index.d.ts +2 -2
  19. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/index.js +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 +6 -3
  24. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +1 -1
  25. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +1 -1
  26. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  27. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  29. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -11
  30. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
  32. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +6 -6
  34. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  35. package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
  36. package/dest/contract_function_simulator/oracle/oracle.d.ts +10 -8
  37. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/oracle/oracle.js +43 -32
  39. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
  40. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  41. package/dest/contract_function_simulator/oracle/private_execution.js +1 -37
  42. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +26 -26
  43. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +28 -41
  45. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +44 -34
  46. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +92 -92
  48. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  49. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  50. package/dest/contract_function_simulator/proxied_contract_data_source.js +5 -5
  51. package/dest/contract_sync/index.d.ts +23 -0
  52. package/dest/contract_sync/index.d.ts.map +1 -0
  53. package/dest/contract_sync/index.js +54 -0
  54. package/dest/debug/pxe_debug_utils.d.ts +6 -6
  55. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  56. package/dest/debug/pxe_debug_utils.js +8 -7
  57. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  58. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  59. package/dest/entrypoints/client/bundle/utils.js +10 -1
  60. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  61. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  62. package/dest/entrypoints/client/lazy/utils.js +10 -1
  63. package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
  64. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  65. package/dest/entrypoints/server/index.d.ts +3 -1
  66. package/dest/entrypoints/server/index.d.ts.map +1 -1
  67. package/dest/entrypoints/server/index.js +2 -0
  68. package/dest/entrypoints/server/utils.d.ts +1 -1
  69. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  70. package/dest/entrypoints/server/utils.js +11 -7
  71. package/dest/error_enriching.d.ts +4 -4
  72. package/dest/error_enriching.d.ts.map +1 -1
  73. package/dest/error_enriching.js +6 -6
  74. package/dest/events/event_service.d.ts +8 -7
  75. package/dest/events/event_service.d.ts.map +1 -1
  76. package/dest/events/event_service.js +22 -24
  77. package/dest/events/private_event_filter_validator.d.ts +6 -6
  78. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  79. package/dest/events/private_event_filter_validator.js +5 -6
  80. package/dest/job_coordinator/job_coordinator.d.ts +74 -0
  81. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  82. package/dest/job_coordinator/job_coordinator.js +93 -0
  83. package/dest/logs/log_service.d.ts +15 -31
  84. package/dest/logs/log_service.d.ts.map +1 -1
  85. package/dest/logs/log_service.js +77 -188
  86. package/dest/notes/note_service.d.ts +10 -9
  87. package/dest/notes/note_service.d.ts.map +1 -1
  88. package/dest/notes/note_service.js +40 -44
  89. package/dest/oracle_version.d.ts +3 -3
  90. package/dest/oracle_version.d.ts.map +1 -1
  91. package/dest/oracle_version.js +4 -3
  92. package/dest/private_kernel/hints/index.d.ts +2 -2
  93. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  94. package/dest/private_kernel/hints/index.js +1 -1
  95. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
  96. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  97. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +13 -7
  98. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  99. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  100. package/dest/private_kernel/private_kernel_execution_prover.js +4 -5
  101. package/dest/private_kernel/private_kernel_oracle.d.ts +24 -28
  102. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  103. package/dest/private_kernel/private_kernel_oracle.js +90 -2
  104. package/dest/pxe.d.ts +17 -44
  105. package/dest/pxe.d.ts.map +1 -1
  106. package/dest/pxe.js +131 -147
  107. package/dest/storage/address_store/address_store.d.ts +11 -0
  108. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  109. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +1 -1
  110. package/dest/storage/address_store/index.d.ts +2 -0
  111. package/dest/storage/address_store/index.d.ts.map +1 -0
  112. package/dest/storage/address_store/index.js +1 -0
  113. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -0
  114. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  115. package/dest/storage/{anchor_block_data_provider/anchor_block_data_provider.js → anchor_block_store/anchor_block_store.js} +1 -1
  116. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  117. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  118. package/dest/storage/anchor_block_store/index.js +1 -0
  119. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  120. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  121. package/dest/storage/capsule_store/capsule_store.js +255 -0
  122. package/dest/storage/capsule_store/index.d.ts +2 -0
  123. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  124. package/dest/storage/capsule_store/index.js +1 -0
  125. package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +3 -3
  126. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  127. package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +2 -2
  128. package/dest/storage/contract_store/index.d.ts +2 -0
  129. package/dest/storage/contract_store/index.d.ts.map +1 -0
  130. package/dest/storage/contract_store/index.js +1 -0
  131. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  132. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  133. package/dest/storage/index.d.ts +8 -8
  134. package/dest/storage/index.d.ts.map +1 -1
  135. package/dest/storage/index.js +7 -7
  136. package/dest/storage/note_store/index.d.ts +3 -0
  137. package/dest/storage/note_store/index.d.ts.map +1 -0
  138. package/dest/storage/note_store/index.js +2 -0
  139. package/dest/storage/note_store/note_store.d.ts +73 -0
  140. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  141. package/dest/storage/note_store/note_store.js +303 -0
  142. package/dest/storage/note_store/stored_note.d.ts +16 -0
  143. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  144. package/dest/storage/note_store/stored_note.js +43 -0
  145. package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
  146. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  147. package/dest/storage/private_event_store/private_event_store.js +250 -0
  148. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  149. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  150. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  151. package/dest/storage/tagging_store/index.d.ts +4 -0
  152. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  153. package/dest/storage/tagging_store/index.js +3 -0
  154. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  155. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  156. package/dest/storage/tagging_store/recipient_tagging_store.js +99 -0
  157. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  158. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  159. package/dest/storage/tagging_store/sender_address_book_store.js +30 -0
  160. package/dest/storage/{tagging_data_provider/sender_tagging_data_provider.d.ts → tagging_store/sender_tagging_store.d.ts} +19 -9
  161. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  162. package/dest/storage/{tagging_data_provider/sender_tagging_data_provider.js → tagging_store/sender_tagging_store.js} +111 -29
  163. package/dest/tagging/constants.d.ts +2 -2
  164. package/dest/tagging/constants.d.ts.map +1 -1
  165. package/dest/tagging/constants.js +10 -3
  166. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  167. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  168. package/dest/tagging/get_all_logs_by_tags.js +46 -0
  169. package/dest/tagging/index.d.ts +15 -3
  170. package/dest/tagging/index.d.ts.map +1 -1
  171. package/dest/tagging/index.js +14 -2
  172. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -3
  173. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  174. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +8 -8
  175. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +3 -2
  176. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  177. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +5 -2
  178. package/dest/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.d.ts +4 -4
  179. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  180. package/dest/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.js +8 -23
  181. package/dest/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.d.ts +1 -1
  182. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  183. package/dest/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.js +5 -8
  184. package/dest/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.d.ts +7 -4
  185. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  186. package/dest/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.js +12 -7
  187. package/package.json +18 -18
  188. package/src/bin/check_oracle_version.ts +1 -0
  189. package/src/block_synchronizer/block_synchronizer.ts +83 -34
  190. package/src/config/index.ts +14 -0
  191. package/src/config/package_info.ts +1 -1
  192. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  193. package/src/contract_function_simulator/contract_function_simulator.ts +79 -64
  194. package/src/contract_function_simulator/execution_note_cache.ts +44 -25
  195. package/src/contract_function_simulator/index.ts +1 -1
  196. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -1
  197. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +1 -1
  198. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  199. package/src/contract_function_simulator/oracle/interfaces.ts +20 -10
  200. package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
  201. package/src/contract_function_simulator/oracle/oracle.ts +56 -41
  202. package/src/contract_function_simulator/oracle/private_execution.ts +1 -69
  203. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +77 -78
  204. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +121 -105
  205. package/src/contract_function_simulator/proxied_contract_data_source.ts +7 -7
  206. package/src/contract_sync/index.ts +98 -0
  207. package/src/debug/pxe_debug_utils.ts +7 -6
  208. package/src/entrypoints/client/bundle/utils.ts +7 -1
  209. package/src/entrypoints/client/lazy/utils.ts +7 -2
  210. package/src/entrypoints/pxe_creation_options.ts +2 -1
  211. package/src/entrypoints/server/index.ts +2 -0
  212. package/src/entrypoints/server/utils.ts +11 -15
  213. package/src/error_enriching.ts +7 -15
  214. package/src/events/event_service.ts +23 -27
  215. package/src/events/private_event_filter_validator.ts +4 -6
  216. package/src/job_coordinator/job_coordinator.ts +149 -0
  217. package/src/logs/log_service.ts +116 -260
  218. package/src/notes/note_service.ts +43 -46
  219. package/src/oracle_version.ts +4 -3
  220. package/src/private_kernel/hints/index.ts +1 -1
  221. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +33 -22
  222. package/src/private_kernel/private_kernel_execution_prover.ts +3 -5
  223. package/src/private_kernel/private_kernel_oracle.ts +116 -36
  224. package/src/pxe.ts +189 -190
  225. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +1 -1
  226. package/src/storage/address_store/index.ts +1 -0
  227. package/src/storage/{anchor_block_data_provider/anchor_block_data_provider.ts → anchor_block_store/anchor_block_store.ts} +1 -1
  228. package/src/storage/anchor_block_store/index.ts +1 -0
  229. package/src/storage/capsule_store/capsule_store.ts +315 -0
  230. package/src/storage/capsule_store/index.ts +1 -0
  231. package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +2 -2
  232. package/src/storage/contract_store/index.ts +1 -0
  233. package/src/storage/index.ts +7 -7
  234. package/src/storage/note_store/index.ts +2 -0
  235. package/src/storage/note_store/note_store.ts +381 -0
  236. package/src/storage/note_store/stored_note.ts +48 -0
  237. package/src/storage/private_event_store/private_event_store.ts +363 -0
  238. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  239. package/src/storage/tagging_store/index.ts +3 -0
  240. package/src/storage/tagging_store/recipient_tagging_store.ts +129 -0
  241. package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
  242. package/src/storage/{tagging_data_provider/sender_tagging_data_provider.ts → tagging_store/sender_tagging_store.ts} +129 -28
  243. package/src/tagging/constants.ts +10 -3
  244. package/src/tagging/get_all_logs_by_tags.ts +68 -0
  245. package/src/tagging/index.ts +17 -2
  246. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +23 -9
  247. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +7 -1
  248. package/src/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.ts +12 -25
  249. package/src/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.ts +5 -13
  250. package/src/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.ts +19 -7
  251. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  252. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  253. package/dest/contract_function_simulator/proxied_node.js +0 -27
  254. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  255. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  256. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
  257. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  258. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  259. package/dest/public_storage/public_storage_service.d.ts +0 -24
  260. package/dest/public_storage/public_storage_service.d.ts.map +0 -1
  261. package/dest/public_storage/public_storage_service.js +0 -26
  262. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  263. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  264. package/dest/storage/address_data_provider/index.d.ts +0 -2
  265. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  266. package/dest/storage/address_data_provider/index.js +0 -1
  267. package/dest/storage/anchor_block_data_provider/anchor_block_data_provider.d.ts +0 -9
  268. package/dest/storage/anchor_block_data_provider/anchor_block_data_provider.d.ts.map +0 -1
  269. package/dest/storage/anchor_block_data_provider/index.d.ts +0 -2
  270. package/dest/storage/anchor_block_data_provider/index.d.ts.map +0 -1
  271. package/dest/storage/anchor_block_data_provider/index.js +0 -1
  272. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -57
  273. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  274. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -146
  275. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  276. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  277. package/dest/storage/capsule_data_provider/index.js +0 -1
  278. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  279. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  280. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  281. package/dest/storage/contract_data_provider/index.js +0 -1
  282. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  283. package/dest/storage/note_data_provider/index.d.ts +0 -3
  284. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  285. package/dest/storage/note_data_provider/index.js +0 -2
  286. package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -84
  287. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  288. package/dest/storage/note_data_provider/note_data_provider.js +0 -322
  289. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -51
  290. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  291. package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -115
  292. package/dest/storage/tagging_data_provider/index.d.ts +0 -3
  293. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  294. package/dest/storage/tagging_data_provider/index.js +0 -2
  295. package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.d.ts +0 -31
  296. package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.d.ts.map +0 -1
  297. package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.js +0 -65
  298. package/dest/storage/tagging_data_provider/sender_tagging_data_provider.d.ts.map +0 -1
  299. package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.d.ts +0 -21
  300. package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.d.ts.map +0 -1
  301. package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.js +0 -42
  302. package/dest/tagging/sync/sync_sender_tagging_indexes.d.ts.map +0 -1
  303. package/dest/tagging/sync/utils/get_status_change_of_pending.d.ts.map +0 -1
  304. package/dest/tagging/sync/utils/load_and_store_new_tagging_indexes.d.ts.map +0 -1
  305. package/dest/tagging/utils.d.ts +0 -18
  306. package/dest/tagging/utils.d.ts.map +0 -1
  307. package/dest/tagging/utils.js +0 -25
  308. package/dest/tree_membership/tree_membership_service.d.ts +0 -52
  309. package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
  310. package/dest/tree_membership/tree_membership_service.js +0 -84
  311. package/src/contract_function_simulator/proxied_node.ts +0 -33
  312. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -133
  313. package/src/public_storage/public_storage_service.ts +0 -33
  314. package/src/storage/address_data_provider/index.ts +0 -1
  315. package/src/storage/anchor_block_data_provider/index.ts +0 -1
  316. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -179
  317. package/src/storage/capsule_data_provider/index.ts +0 -1
  318. package/src/storage/contract_data_provider/index.ts +0 -1
  319. package/src/storage/note_data_provider/index.ts +0 -2
  320. package/src/storage/note_data_provider/note_data_provider.ts +0 -412
  321. package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -162
  322. package/src/storage/tagging_data_provider/index.ts +0 -2
  323. package/src/storage/tagging_data_provider/recipient_tagging_data_provider.ts +0 -86
  324. package/src/tagging/recipient_sync/new_recipient_tagging_data_provider.ts +0 -53
  325. package/src/tagging/utils.ts +0 -32
  326. package/src/tree_membership/tree_membership_service.ts +0 -112
  327. /package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +0 -0
  328. /package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +0 -0
package/src/pxe.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { PrivateEventFilter } from '@aztec/aztec.js/wallet';
2
+ import { BlockNumber } from '@aztec/foundation/branded-types';
2
3
  import { Fr } from '@aztec/foundation/curves/bn254';
3
4
  import { type Logger, createLogger } from '@aztec/foundation/log';
4
5
  import { SerialQueue } from '@aztec/foundation/queue';
@@ -19,14 +20,12 @@ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
19
20
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
20
21
  import {
21
22
  CompleteAddress,
22
- type ContractClassWithId,
23
23
  type ContractInstanceWithAddress,
24
24
  type PartialAddress,
25
25
  computeContractAddressFromInstance,
26
26
  getContractClassFromArtifact,
27
27
  } from '@aztec/stdlib/contract';
28
28
  import { SimulationError } from '@aztec/stdlib/errors';
29
- import { computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
30
29
  import type { AztecNode, PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
31
30
  import type {
32
31
  PrivateExecutionStep,
@@ -54,28 +53,31 @@ import { inspect } from 'util';
54
53
 
55
54
  import { BlockSynchronizer } from './block_synchronizer/index.js';
56
55
  import type { PXEConfig } from './config/index.js';
56
+ import { BenchmarkedNodeFactory } from './contract_function_simulator/benchmarked_node.js';
57
57
  import {
58
58
  ContractFunctionSimulator,
59
59
  generateSimulatedProvingResult,
60
60
  } from './contract_function_simulator/contract_function_simulator.js';
61
- import { readCurrentClassId } from './contract_function_simulator/oracle/private_execution.js';
62
- import { ProxiedContractDataProviderFactory } from './contract_function_simulator/proxied_contract_data_source.js';
61
+ import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
62
+ import { ensureContractSynced, readCurrentClassId } from './contract_sync/index.js';
63
63
  import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
64
64
  import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
65
65
  import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
66
+ import { JobCoordinator } from './job_coordinator/job_coordinator.js';
66
67
  import {
67
68
  PrivateKernelExecutionProver,
68
69
  type PrivateKernelExecutionProverConfig,
69
70
  } from './private_kernel/private_kernel_execution_prover.js';
70
- import { PrivateKernelOracleImpl } from './private_kernel/private_kernel_oracle_impl.js';
71
- import { AddressDataProvider } from './storage/address_data_provider/address_data_provider.js';
72
- import { AnchorBlockDataProvider } from './storage/anchor_block_data_provider/anchor_block_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 { PrivateEventDataProvider } from './storage/private_event_data_provider/private_event_data_provider.js';
77
- import { RecipientTaggingDataProvider } from './storage/tagging_data_provider/recipient_tagging_data_provider.js';
78
- import { SenderTaggingDataProvider } from './storage/tagging_data_provider/sender_tagging_data_provider.js';
71
+ import { PrivateKernelOracle } from './private_kernel/private_kernel_oracle.js';
72
+ import { AddressStore } from './storage/address_store/address_store.js';
73
+ import { AnchorBlockStore } from './storage/anchor_block_store/anchor_block_store.js';
74
+ import { CapsuleStore } from './storage/capsule_store/capsule_store.js';
75
+ import { ContractStore } from './storage/contract_store/contract_store.js';
76
+ import { NoteStore } from './storage/note_store/note_store.js';
77
+ import { PrivateEventStore } from './storage/private_event_store/private_event_store.js';
78
+ import { RecipientTaggingStore } from './storage/tagging_store/recipient_tagging_store.js';
79
+ import { SenderAddressBookStore } from './storage/tagging_store/sender_address_book_store.js';
80
+ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store.js';
79
81
 
80
82
  export type PackedPrivateEvent = InTx & {
81
83
  packedEvent: Fr[];
@@ -91,20 +93,22 @@ export class PXE {
91
93
  private node: AztecNode,
92
94
  private blockStateSynchronizer: BlockSynchronizer,
93
95
  private keyStore: KeyStore,
94
- private contractDataProvider: ContractDataProvider,
95
- private noteDataProvider: NoteDataProvider,
96
- private capsuleDataProvider: CapsuleDataProvider,
97
- private anchorBlockDataProvider: AnchorBlockDataProvider,
98
- private senderTaggingDataProvider: SenderTaggingDataProvider,
99
- private recipientTaggingDataProvider: RecipientTaggingDataProvider,
100
- private addressDataProvider: AddressDataProvider,
101
- private privateEventDataProvider: PrivateEventDataProvider,
96
+ private contractStore: ContractStore,
97
+ private noteStore: NoteStore,
98
+ private capsuleStore: CapsuleStore,
99
+ private anchorBlockStore: AnchorBlockStore,
100
+ private senderTaggingStore: SenderTaggingStore,
101
+ private senderAddressBookStore: SenderAddressBookStore,
102
+ private recipientTaggingStore: RecipientTaggingStore,
103
+ private addressStore: AddressStore,
104
+ private privateEventStore: PrivateEventStore,
102
105
  private simulator: CircuitSimulator,
103
106
  private proverEnabled: boolean,
104
107
  private proofCreator: PrivateKernelProver,
105
108
  private protocolContractsProvider: ProtocolContractsProvider,
106
109
  private log: Logger,
107
110
  private jobQueue: SerialQueue,
111
+ private jobCoordinator: JobCoordinator,
108
112
  public debug: PXEDebugUtils,
109
113
  ) {}
110
114
 
@@ -130,27 +134,38 @@ export class PXE {
130
134
  : loggerOrSuffix;
131
135
 
132
136
  const proverEnabled = !!config.proverEnabled;
133
- const addressDataProvider = new AddressDataProvider(store);
134
- const privateEventDataProvider = new PrivateEventDataProvider(store);
135
- const contractDataProvider = new ContractDataProvider(store);
136
- const noteDataProvider = await NoteDataProvider.create(store);
137
- const anchorBlockDataProvider = new AnchorBlockDataProvider(store);
138
- const senderTaggingDataProvider = new SenderTaggingDataProvider(store);
139
- const recipientTaggingDataProvider = new RecipientTaggingDataProvider(store);
140
- const capsuleDataProvider = new CapsuleDataProvider(store);
137
+ const addressStore = new AddressStore(store);
138
+ const privateEventStore = new PrivateEventStore(store);
139
+ const contractStore = new ContractStore(store);
140
+ const noteStore = new NoteStore(store);
141
+ const anchorBlockStore = new AnchorBlockStore(store);
142
+ const senderTaggingStore = new SenderTaggingStore(store);
143
+ const senderAddressBookStore = new SenderAddressBookStore(store);
144
+ const recipientTaggingStore = new RecipientTaggingStore(store);
145
+ const capsuleStore = new CapsuleStore(store);
141
146
  const keyStore = new KeyStore(store);
142
147
  const tipsStore = new L2TipsKVStore(store, 'pxe');
143
148
  const synchronizer = new BlockSynchronizer(
144
149
  node,
145
- anchorBlockDataProvider,
146
- noteDataProvider,
147
- recipientTaggingDataProvider,
150
+ store,
151
+ anchorBlockStore,
152
+ noteStore,
153
+ privateEventStore,
148
154
  tipsStore,
149
155
  config,
150
156
  loggerOrSuffix,
151
157
  );
152
158
 
153
- const debugUtils = new PXEDebugUtils(contractDataProvider, noteDataProvider);
159
+ const jobCoordinator = new JobCoordinator(store);
160
+ jobCoordinator.registerStores([
161
+ capsuleStore,
162
+ senderTaggingStore,
163
+ recipientTaggingStore,
164
+ privateEventStore,
165
+ noteStore,
166
+ ]);
167
+
168
+ const debugUtils = new PXEDebugUtils(contractStore, noteStore);
154
169
 
155
170
  const jobQueue = new SerialQueue();
156
171
 
@@ -158,20 +173,22 @@ export class PXE {
158
173
  node,
159
174
  synchronizer,
160
175
  keyStore,
161
- contractDataProvider,
162
- noteDataProvider,
163
- capsuleDataProvider,
164
- anchorBlockDataProvider,
165
- senderTaggingDataProvider,
166
- recipientTaggingDataProvider,
167
- addressDataProvider,
168
- privateEventDataProvider,
176
+ contractStore,
177
+ noteStore,
178
+ capsuleStore,
179
+ anchorBlockStore,
180
+ senderTaggingStore,
181
+ senderAddressBookStore,
182
+ recipientTaggingStore,
183
+ addressStore,
184
+ privateEventStore,
169
185
  simulator,
170
186
  proverEnabled,
171
187
  proofCreator,
172
188
  protocolContractsProvider,
173
189
  log,
174
190
  jobQueue,
191
+ jobCoordinator,
175
192
  debugUtils,
176
193
  );
177
194
 
@@ -188,22 +205,20 @@ export class PXE {
188
205
  // Internal methods
189
206
 
190
207
  #getSimulatorForTx(overrides?: { contracts?: ContractOverrides }) {
191
- const proxyContractDataProvider = ProxiedContractDataProviderFactory.create(
192
- this.contractDataProvider,
193
- overrides?.contracts,
194
- );
208
+ const proxyContractStore = ProxiedContractStoreFactory.create(this.contractStore, overrides?.contracts);
195
209
 
196
210
  return new ContractFunctionSimulator(
197
- proxyContractDataProvider,
198
- this.noteDataProvider,
211
+ proxyContractStore,
212
+ this.noteStore,
199
213
  this.keyStore,
200
- this.addressDataProvider,
201
- this.node,
202
- this.anchorBlockDataProvider,
203
- this.senderTaggingDataProvider,
204
- this.recipientTaggingDataProvider,
205
- this.capsuleDataProvider,
206
- this.privateEventDataProvider,
214
+ this.addressStore,
215
+ BenchmarkedNodeFactory.create(this.node),
216
+ this.anchorBlockStore,
217
+ this.senderTaggingStore,
218
+ this.recipientTaggingStore,
219
+ this.senderAddressBookStore,
220
+ this.capsuleStore,
221
+ this.privateEventStore,
207
222
  this.simulator,
208
223
  );
209
224
  }
@@ -228,7 +243,7 @@ export class PXE {
228
243
  *
229
244
  * Useful for tasks that cannot run concurrently, such as contract function simulation.
230
245
  */
231
- #putInJobQueue<T>(fn: () => Promise<T>): Promise<T> {
246
+ #putInJobQueue<T>(fn: (jobId: string) => Promise<T>): Promise<T> {
232
247
  // TODO(#12636): relax the conditions under which we forbid concurrency.
233
248
  if (this.jobQueue.length() != 0) {
234
249
  this.log.warn(
@@ -236,7 +251,22 @@ export class PXE {
236
251
  );
237
252
  }
238
253
 
239
- return this.jobQueue.put(fn);
254
+ return this.jobQueue.put(async () => {
255
+ const jobId = this.jobCoordinator.beginJob();
256
+ this.log.verbose(`Beginning job ${jobId}`);
257
+
258
+ try {
259
+ const result = await fn(jobId);
260
+ this.log.verbose(`Committing job ${jobId}`);
261
+
262
+ await this.jobCoordinator.commitJob(jobId);
263
+ return result;
264
+ } catch (err) {
265
+ this.log.verbose(`Aborting job ${jobId}`);
266
+ await this.jobCoordinator.abortJob(jobId);
267
+ throw err;
268
+ }
269
+ });
240
270
  }
241
271
 
242
272
  async #registerProtocolContracts() {
@@ -244,37 +274,34 @@ export class PXE {
244
274
  for (const name of protocolContractNames) {
245
275
  const { address, contractClass, instance, artifact } =
246
276
  await this.protocolContractsProvider.getProtocolContractArtifact(name);
247
- await this.contractDataProvider.addContractArtifact(contractClass.id, artifact);
248
- await this.contractDataProvider.addContractInstance(instance);
277
+ await this.contractStore.addContractArtifact(contractClass.id, artifact);
278
+ await this.contractStore.addContractInstance(instance);
249
279
  registered[name] = address.toString();
250
280
  }
251
281
  this.log.verbose(`Registered protocol contracts in pxe`, registered);
252
282
  }
253
283
 
254
- async #isContractClassPubliclyRegistered(id: Fr): Promise<boolean> {
255
- return !!(await this.node.getContractClass(id));
256
- }
257
-
258
- async #isContractPublished(address: AztecAddress): Promise<boolean> {
259
- return !!(await this.node.getContract(address));
260
- }
261
-
262
- async #isContractInitialized(address: AztecAddress): Promise<boolean> {
263
- const initNullifier = await siloNullifier(address, address.toField());
264
- return !!(await this.node.getNullifierMembershipWitness('latest', initNullifier));
265
- }
266
-
267
284
  // Executes the entrypoint private function, as well as all nested private
268
285
  // functions that might arise.
269
286
  async #executePrivate(
270
287
  contractFunctionSimulator: ContractFunctionSimulator,
271
288
  txRequest: TxExecutionRequest,
272
- scopes?: AztecAddress[],
289
+ scopes: AztecAddress[] | undefined,
290
+ jobId: string,
273
291
  ): Promise<PrivateExecutionResult> {
274
292
  const { origin: contractAddress, functionSelector } = txRequest;
275
293
 
276
294
  try {
277
- const anchorBlockHeader = await this.anchorBlockDataProvider.getBlockHeader();
295
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
296
+
297
+ await ensureContractSynced(
298
+ contractAddress,
299
+ functionSelector,
300
+ privateSyncCall => this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
301
+ this.node,
302
+ this.contractStore,
303
+ anchorBlockHeader,
304
+ );
278
305
 
279
306
  const result = await contractFunctionSimulator.run(
280
307
  txRequest,
@@ -286,12 +313,13 @@ export class PXE {
286
313
  // contract entrypoint
287
314
  undefined, // senderForTags
288
315
  scopes,
316
+ jobId,
289
317
  );
290
318
  this.log.debug(`Private simulation completed for ${contractAddress.toString()}:${functionSelector}`);
291
319
  return result;
292
320
  } catch (err) {
293
321
  if (err instanceof SimulationError) {
294
- await enrichSimulationError(err, this.contractDataProvider, this.log);
322
+ await enrichSimulationError(err, this.contractStore, this.log);
295
323
  }
296
324
  throw err;
297
325
  }
@@ -304,20 +332,22 @@ export class PXE {
304
332
  * @param authWitnesses - Authentication witnesses required for the function call.
305
333
  * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
306
334
  * accounts if not specified.
335
+ * @param jobId - The job ID for staged writes.
307
336
  * @returns The simulation result containing the outputs of the utility function.
308
337
  */
309
338
  async #simulateUtility(
310
339
  contractFunctionSimulator: ContractFunctionSimulator,
311
340
  call: FunctionCall,
312
- authWitnesses?: AuthWitness[],
313
- scopes?: AztecAddress[],
341
+ authWitnesses: AuthWitness[] | undefined,
342
+ scopes: AztecAddress[] | undefined,
343
+ jobId: string,
314
344
  ) {
315
345
  try {
316
- const anchorBlockHeader = await this.anchorBlockDataProvider.getBlockHeader();
317
- return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes);
346
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
347
+ return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes, jobId);
318
348
  } catch (err) {
319
349
  if (err instanceof SimulationError) {
320
- await enrichSimulationError(err, this.contractDataProvider, this.log);
350
+ await enrichSimulationError(err, this.contractStore, this.log);
321
351
  }
322
352
  throw err;
323
353
  }
@@ -341,7 +371,7 @@ export class PXE {
341
371
  } catch (err) {
342
372
  if (err instanceof SimulationError) {
343
373
  try {
344
- await enrichPublicSimulationError(err, this.contractDataProvider, this.log);
374
+ await enrichPublicSimulationError(err, this.contractStore, this.log);
345
375
  } catch (enrichErr) {
346
376
  this.log.error(`Failed to enrich public simulation error: ${enrichErr}`);
347
377
  }
@@ -367,13 +397,9 @@ export class PXE {
367
397
  privateExecutionResult: PrivateExecutionResult,
368
398
  config: PrivateKernelExecutionProverConfig,
369
399
  ): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
370
- const simulationAnchorBlock = privateExecutionResult.getSimulationAnchorBlockNumber();
371
- const kernelOracle = new PrivateKernelOracleImpl(
372
- this.contractDataProvider,
373
- this.keyStore,
374
- this.node,
375
- simulationAnchorBlock,
376
- );
400
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
401
+ const anchorBlockHash = await anchorBlockHeader.hash();
402
+ const kernelOracle = new PrivateKernelOracle(this.contractStore, this.keyStore, this.node, anchorBlockHash);
377
403
  const kernelTraceProver = new PrivateKernelExecutionProver(kernelOracle, proofCreator, !this.proverEnabled);
378
404
  this.log.debug(`Executing kernel trace prover (${JSON.stringify(config)})...`);
379
405
  return await kernelTraceProver.proveWithKernels(txExecutionRequest.toTxRequest(), privateExecutionResult, config);
@@ -382,70 +408,16 @@ export class PXE {
382
408
  // Public API
383
409
 
384
410
  public getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
385
- return this.contractDataProvider.getContractInstance(address);
386
- }
387
-
388
- /**
389
- * Returns the contract class metadata given a contract class id.
390
- * The metadata consists of its contract class, whether it has been publicly registered, and its artifact.
391
- * @remark - it queries the node to check whether the contract class with the given id has been publicly registered.
392
- * @param id - Identifier of the class.
393
- * @param includeArtifact - Identifier of the class.
394
- * @returns - It returns the contract class metadata, with the artifact field being optional, and will only be returned if true is passed in
395
- * for `includeArtifact`
396
- * TODO(@spalladino): The PXE actually holds artifacts and not classes, what should we return? Also,
397
- * should the pxe query the node for contract public info, and merge it with its own definitions?
398
- * TODO(@spalladino): This method is strictly needed to decide whether to publicly register a class or not
399
- * during a public deployment. We probably want a nicer and more general API for this, but it'll have to
400
- * do for the time being.
401
- */
402
- public async getContractClassMetadata(
403
- id: Fr,
404
- includeArtifact: boolean = false,
405
- ): Promise<{
406
- contractClass: ContractClassWithId | undefined;
407
- isContractClassPubliclyRegistered: boolean;
408
- artifact: ContractArtifact | undefined;
409
- }> {
410
- const artifact = await this.contractDataProvider.getContractArtifact(id);
411
- if (!artifact) {
412
- this.log.warn(`No artifact found for contract class ${id.toString()} when looking for its metadata`);
413
- }
414
-
415
- return {
416
- contractClass: artifact && (await getContractClassFromArtifact(artifact)),
417
- isContractClassPubliclyRegistered: await this.#isContractClassPubliclyRegistered(id),
418
- artifact: includeArtifact ? artifact : undefined,
419
- };
411
+ return this.contractStore.getContractInstance(address);
420
412
  }
421
413
 
422
414
  /**
423
- * Returns the contract metadata given an address.
424
- * The metadata consists of its contract instance, which includes the contract class identifier,
425
- * initialization hash, deployment salt, and public keys hash; whether the contract instance has been initialized;
426
- * and whether the contract instance with the given address has been publicly deployed.
427
- * @remark - it queries the node to check whether the contract instance has been initialized / publicly deployed through a node.
428
- * This query is not dependent on the PXE.
429
- * @param address - The address that the contract instance resides at.
430
- * @returns - It returns the contract metadata
431
- * TODO(@spalladino): Should we return the public keys in plain as well here?
415
+ * Returns the contract artifact for a given contract class id, if it's registered in the PXE.
416
+ * @param id - Identifier of the contract class.
417
+ * @returns The contract artifact if found, undefined otherwise.
432
418
  */
433
- public async getContractMetadata(address: AztecAddress): Promise<{
434
- contractInstance: ContractInstanceWithAddress | undefined;
435
- isContractInitialized: boolean;
436
- isContractPublished: boolean;
437
- }> {
438
- let instance;
439
- try {
440
- instance = await this.contractDataProvider.getContractInstance(address);
441
- } catch {
442
- this.log.warn(`No instance found for contract ${address.toString()} when looking for its metadata`);
443
- }
444
- return {
445
- contractInstance: instance,
446
- isContractInitialized: await this.#isContractInitialized(address),
447
- isContractPublished: await this.#isContractPublished(address),
448
- };
419
+ public async getContractArtifact(id: Fr): Promise<ContractArtifact | undefined> {
420
+ return await this.contractStore.getContractArtifact(id);
449
421
  }
450
422
 
451
423
  /**
@@ -469,8 +441,7 @@ export class PXE {
469
441
  this.log.debug(`Registered account\n ${accountCompleteAddress.toReadableString()}`);
470
442
  }
471
443
 
472
- await this.addressDataProvider.addCompleteAddress(accountCompleteAddress);
473
- await this.noteDataProvider.addScope(accountCompleteAddress.address);
444
+ await this.addressStore.addCompleteAddress(accountCompleteAddress);
474
445
  return accountCompleteAddress;
475
446
  }
476
447
 
@@ -491,7 +462,7 @@ export class PXE {
491
462
  return sender;
492
463
  }
493
464
 
494
- const wasAdded = await this.recipientTaggingDataProvider.addSenderAddress(sender);
465
+ const wasAdded = await this.senderAddressBookStore.addSender(sender);
495
466
 
496
467
  if (wasAdded) {
497
468
  this.log.info(`Added sender:\n ${sender.toString()}`);
@@ -507,7 +478,7 @@ export class PXE {
507
478
  * @returns Senders registered in this PXE.
508
479
  */
509
480
  public getSenders(): Promise<AztecAddress[]> {
510
- return this.recipientTaggingDataProvider.getSenderAddresses();
481
+ return this.senderAddressBookStore.getSenders();
511
482
  }
512
483
 
513
484
  /**
@@ -515,7 +486,7 @@ export class PXE {
515
486
  * @param sender - The address of the sender to remove.
516
487
  */
517
488
  public async removeSender(sender: AztecAddress): Promise<void> {
518
- const wasRemoved = await this.recipientTaggingDataProvider.removeSenderAddress(sender);
489
+ const wasRemoved = await this.senderAddressBookStore.removeSender(sender);
519
490
 
520
491
  if (wasRemoved) {
521
492
  this.log.info(`Removed sender:\n ${sender.toString()}`);
@@ -530,7 +501,7 @@ export class PXE {
530
501
  */
531
502
  public async getRegisteredAccounts(): Promise<CompleteAddress[]> {
532
503
  // Get complete addresses of both the recipients and the accounts
533
- const completeAddresses = await this.addressDataProvider.getCompleteAddresses();
504
+ const completeAddresses = await this.addressStore.getCompleteAddresses();
534
505
  // Filter out the addresses not corresponding to accounts
535
506
  const accounts = await this.keyStore.getAccounts();
536
507
  return completeAddresses.filter(completeAddress =>
@@ -545,7 +516,7 @@ export class PXE {
545
516
  */
546
517
  public async registerContractClass(artifact: ContractArtifact): Promise<void> {
547
518
  const { id: contractClassId } = await getContractClassFromArtifact(artifact);
548
- await this.contractDataProvider.addContractArtifact(contractClassId, artifact);
519
+ await this.contractStore.addContractArtifact(contractClassId, artifact);
549
520
  this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
550
521
  }
551
522
 
@@ -574,7 +545,7 @@ export class PXE {
574
545
  if (!computedAddress.equals(instance.address)) {
575
546
  throw new Error('Added a contract in which the address does not match the contract instance.');
576
547
  }
577
- await this.contractDataProvider.addContractArtifact(contractClass.id, artifact);
548
+ await this.contractStore.addContractArtifact(contractClass.id, artifact);
578
549
 
579
550
  const publicFunctionSignatures = artifact.functions
580
551
  .filter(fn => fn.functionType === FunctionType.PUBLIC)
@@ -582,7 +553,7 @@ export class PXE {
582
553
  await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
583
554
  } else {
584
555
  // Otherwise, make sure there is an artifact already registered for that class id
585
- artifact = await this.contractDataProvider.getContractArtifact(instance.currentContractClassId);
556
+ artifact = await this.contractStore.getContractArtifact(instance.currentContractClassId);
586
557
  if (!artifact) {
587
558
  throw new Error(
588
559
  `Artifact not found when registering an instance. Contract class: ${instance.currentContractClassId}.`,
@@ -590,7 +561,7 @@ export class PXE {
590
561
  }
591
562
  }
592
563
 
593
- await this.contractDataProvider.addContractInstance(instance);
564
+ await this.contractStore.addContractInstance(instance);
594
565
  this.log.info(
595
566
  `Added contract ${artifact.name} at ${instance.address.toString()} with class ${instance.currentContractClassId}`,
596
567
  );
@@ -609,27 +580,21 @@ export class PXE {
609
580
  // We disable concurrently updating contracts to avoid concurrently syncing with the node, or changing a contract's
610
581
  // class while we're simulating it.
611
582
  return this.#putInJobQueue(async () => {
612
- const currentInstance = await this.contractDataProvider.getContractInstance(contractAddress);
583
+ const currentInstance = await this.contractStore.getContractInstance(contractAddress);
613
584
  if (!currentInstance) {
614
585
  throw new Error(`Instance not found when updating a contract. Contract address: ${contractAddress}.`);
615
586
  }
616
587
  const contractClass = await getContractClassFromArtifact(artifact);
617
588
  await this.blockStateSynchronizer.sync();
618
589
 
619
- const header = await this.anchorBlockDataProvider.getBlockHeader();
590
+ const header = await this.anchorBlockStore.getBlockHeader();
620
591
 
621
- const currentClassId = await readCurrentClassId(
622
- contractAddress,
623
- currentInstance,
624
- this.node,
625
- header.globalVariables.blockNumber,
626
- header.globalVariables.timestamp,
627
- );
592
+ const currentClassId = await readCurrentClassId(contractAddress, currentInstance, this.node, header);
628
593
  if (!contractClass.id.equals(currentClassId)) {
629
594
  throw new Error('Could not update contract to a class different from the current one.');
630
595
  }
631
596
 
632
- await this.contractDataProvider.addContractArtifact(contractClass.id, artifact);
597
+ await this.contractStore.addContractArtifact(contractClass.id, artifact);
633
598
 
634
599
  const publicFunctionSignatures = artifact.functions
635
600
  .filter(fn => fn.functionType === FunctionType.PUBLIC)
@@ -637,7 +602,7 @@ export class PXE {
637
602
  await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
638
603
 
639
604
  currentInstance.currentContractClassId = contractClass.id;
640
- await this.contractDataProvider.addContractInstance(currentInstance);
605
+ await this.contractStore.addContractInstance(currentInstance);
641
606
  this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
642
607
  });
643
608
  }
@@ -647,7 +612,7 @@ export class PXE {
647
612
  * @returns An array of contracts addresses registered on this PXE.
648
613
  */
649
614
  public getContracts(): Promise<AztecAddress[]> {
650
- return this.contractDataProvider.getContractsAddresses();
615
+ return this.contractStore.getContractsAddresses();
651
616
  }
652
617
 
653
618
  /**
@@ -663,14 +628,14 @@ export class PXE {
663
628
  let privateExecutionResult: PrivateExecutionResult;
664
629
  // We disable proving concurrently mostly out of caution, since it accesses some of our stores. Proving is so
665
630
  // computationally demanding that it'd be rare for someone to try to do it concurrently regardless.
666
- return this.#putInJobQueue(async () => {
631
+ return this.#putInJobQueue(async jobId => {
667
632
  const totalTimer = new Timer();
668
633
  try {
669
634
  const syncTimer = new Timer();
670
635
  await this.blockStateSynchronizer.sync();
671
636
  const syncTime = syncTimer.ms();
672
637
  const contractFunctionSimulator = this.#getSimulatorForTx();
673
- privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
638
+ privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, undefined, jobId);
674
639
 
675
640
  const {
676
641
  publicInputs,
@@ -717,7 +682,7 @@ export class PXE {
717
682
  // TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
718
683
  const txHash = (await txProvingResult.toTx()).txHash;
719
684
 
720
- await this.senderTaggingDataProvider.storePendingIndexes(preTagsUsedInTheTx, txHash);
685
+ await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash, jobId);
721
686
  this.log.debug(`Stored used pre-tags as sender for the tx`, {
722
687
  preTagsUsedInTheTx,
723
688
  });
@@ -747,7 +712,7 @@ export class PXE {
747
712
  skipProofGeneration: boolean = true,
748
713
  ): Promise<TxProfileResult> {
749
714
  // We disable concurrent profiles for consistency with simulateTx.
750
- return this.#putInJobQueue(async () => {
715
+ return this.#putInJobQueue(async jobId => {
751
716
  const totalTimer = new Timer();
752
717
  try {
753
718
  const txInfo = {
@@ -767,7 +732,12 @@ export class PXE {
767
732
  const syncTime = syncTimer.ms();
768
733
 
769
734
  const contractFunctionSimulator = this.#getSimulatorForTx();
770
- const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
735
+ const privateExecutionResult = await this.#executePrivate(
736
+ contractFunctionSimulator,
737
+ txRequest,
738
+ undefined,
739
+ jobId,
740
+ );
771
741
 
772
742
  const { executionSteps, timings: { proving } = {} } = await this.#prove(
773
743
  txRequest,
@@ -847,7 +817,7 @@ export class PXE {
847
817
  // We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
848
818
  // to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
849
819
  // delete the same read value, or reading values that another simulation is currently modifying).
850
- return this.#putInJobQueue(async () => {
820
+ return this.#putInJobQueue(async jobId => {
851
821
  try {
852
822
  const totalTimer = new Timer();
853
823
  const txInfo = {
@@ -873,21 +843,15 @@ export class PXE {
873
843
  const skipKernels = overrides?.contracts !== undefined && Object.keys(overrides.contracts ?? {}).length > 0;
874
844
 
875
845
  // Execution of private functions only; no proving, and no kernel logic.
876
- const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes);
846
+ const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes, jobId);
877
847
 
878
848
  let publicInputs: PrivateKernelTailCircuitPublicInputs | undefined;
879
849
  let executionSteps: PrivateExecutionStep[] = [];
880
850
 
881
851
  if (skipKernels) {
882
- // According to the protocol rules, the nonce generator for the note hashes
883
- // can either be the first nullifier in the tx or the protocol nullifier if there are none.
884
- const nonceGenerator = privateExecutionResult.firstNullifier.equals(Fr.ZERO)
885
- ? await computeProtocolNullifier(await txRequest.toTxRequest().hash())
886
- : privateExecutionResult.firstNullifier;
887
852
  ({ publicInputs, executionSteps } = await generateSimulatedProvingResult(
888
853
  privateExecutionResult,
889
- nonceGenerator,
890
- this.contractDataProvider,
854
+ this.contractStore,
891
855
  ));
892
856
  } else {
893
857
  // Kernel logic, plus proving of all private functions and kernels.
@@ -988,7 +952,7 @@ export class PXE {
988
952
  // We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
989
953
  // to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
990
954
  // delete the same read value, or reading values that another simulation is currently modifying).
991
- return this.#putInJobQueue(async () => {
955
+ return this.#putInJobQueue(async jobId => {
992
956
  try {
993
957
  const totalTimer = new Timer();
994
958
  const syncTimer = new Timer();
@@ -996,7 +960,24 @@ export class PXE {
996
960
  const syncTime = syncTimer.ms();
997
961
  const functionTimer = new Timer();
998
962
  const contractFunctionSimulator = this.#getSimulatorForTx();
999
- const executionResult = await this.#simulateUtility(contractFunctionSimulator, call, authwits ?? [], scopes);
963
+
964
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
965
+ await ensureContractSynced(
966
+ call.to,
967
+ call.selector,
968
+ privateSyncCall => this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
969
+ this.node,
970
+ this.contractStore,
971
+ anchorBlockHeader,
972
+ );
973
+
974
+ const executionResult = await this.#simulateUtility(
975
+ contractFunctionSimulator,
976
+ call,
977
+ authwits ?? [],
978
+ scopes,
979
+ jobId,
980
+ );
1000
981
  const functionTime = functionTimer.ms();
1001
982
 
1002
983
  const totalTime = totalTimer.ms();
@@ -1041,17 +1022,35 @@ export class PXE {
1041
1022
  eventSelector: EventSelector,
1042
1023
  filter: PrivateEventFilter,
1043
1024
  ): Promise<PackedPrivateEvent[]> {
1044
- // We need to manually trigger private state sync to have a guarantee that all the events are available.
1045
- const call = await this.contractDataProvider.getFunctionCall('sync_private_state', [], filter.contractAddress);
1046
- await this.simulateUtility(call);
1025
+ let anchorBlockNumber: BlockNumber;
1026
+
1027
+ await this.#putInJobQueue(async jobId => {
1028
+ await this.blockStateSynchronizer.sync();
1029
+
1030
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
1031
+ anchorBlockNumber = anchorBlockHeader.getBlockNumber();
1032
+
1033
+ const contractFunctionSimulator = this.#getSimulatorForTx();
1034
+
1035
+ await ensureContractSynced(
1036
+ filter.contractAddress,
1037
+ null,
1038
+ async privateSyncCall =>
1039
+ await this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
1040
+ this.node,
1041
+ this.contractStore,
1042
+ anchorBlockHeader,
1043
+ );
1044
+ });
1047
1045
 
1048
- const sanitizedFilter = await new PrivateEventFilterValidator(this.anchorBlockDataProvider).validate(filter);
1046
+ // anchorBlockNumber is set during the job and fixed to whatever it is after a block sync
1047
+ const sanitizedFilter = new PrivateEventFilterValidator(anchorBlockNumber!).validate(filter);
1049
1048
 
1050
1049
  this.log.debug(
1051
1050
  `Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`,
1052
1051
  );
1053
1052
 
1054
- return this.privateEventDataProvider.getPrivateEvents(eventSelector, sanitizedFilter);
1053
+ return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
1055
1054
  }
1056
1055
 
1057
1056
  /**