@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/dest/pxe.js CHANGED
@@ -1,70 +1,77 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
3
  import { SerialQueue } from '@aztec/foundation/queue';
4
4
  import { Timer } from '@aztec/foundation/timer';
5
5
  import { KeyStore } from '@aztec/key-store';
6
6
  import { L2TipsKVStore } from '@aztec/kv-store/stores';
7
7
  import { protocolContractNames } from '@aztec/protocol-contracts';
8
- import { FunctionSelector, FunctionType, decodeFromAbi, decodeFunctionSignature, encodeArguments } from '@aztec/stdlib/abi';
8
+ import { FunctionType, decodeFunctionSignature } from '@aztec/stdlib/abi';
9
9
  import { computeContractAddressFromInstance, getContractClassFromArtifact } from '@aztec/stdlib/contract';
10
10
  import { SimulationError } from '@aztec/stdlib/errors';
11
- import { siloNullifier } from '@aztec/stdlib/hash';
12
- import { UniqueNote } from '@aztec/stdlib/note';
11
+ import { computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
13
12
  import { PrivateSimulationResult, TxProfileResult, TxProvingResult, TxSimulationResult } from '@aztec/stdlib/tx';
14
13
  import { inspect } from 'util';
14
+ import { BlockSynchronizer } from './block_synchronizer/index.js';
15
15
  import { ContractFunctionSimulator, generateSimulatedProvingResult } from './contract_function_simulator/contract_function_simulator.js';
16
16
  import { readCurrentClassId } from './contract_function_simulator/oracle/private_execution.js';
17
- import { ProxiedContractDataProviderFactory } from './contract_function_simulator/proxied_contract_data_source.js';
18
- import { ProxiedNodeFactory } from './contract_function_simulator/proxied_node.js';
19
- import { PXEOracleInterface } from './contract_function_simulator/pxe_oracle_interface.js';
17
+ import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
18
+ import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
20
19
  import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
20
+ import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
21
21
  import { PrivateKernelExecutionProver } from './private_kernel/private_kernel_execution_prover.js';
22
22
  import { PrivateKernelOracleImpl } from './private_kernel/private_kernel_oracle_impl.js';
23
- import { AddressDataProvider } from './storage/address_data_provider/address_data_provider.js';
24
- import { CapsuleDataProvider } from './storage/capsule_data_provider/capsule_data_provider.js';
25
- import { ContractDataProvider } from './storage/contract_data_provider/contract_data_provider.js';
26
- import { NoteDataProvider } from './storage/note_data_provider/note_data_provider.js';
27
- import { PrivateEventDataProvider } from './storage/private_event_data_provider/private_event_data_provider.js';
28
- import { SyncDataProvider } from './storage/sync_data_provider/sync_data_provider.js';
29
- import { TaggingDataProvider } from './storage/tagging_data_provider/tagging_data_provider.js';
30
- import { Synchronizer } from './synchronizer/index.js';
23
+ import { AddressStore } from './storage/address_store/address_store.js';
24
+ import { AnchorBlockStore } from './storage/anchor_block_store/anchor_block_store.js';
25
+ import { CapsuleStore } from './storage/capsule_store/capsule_store.js';
26
+ import { ContractStore } from './storage/contract_store/contract_store.js';
27
+ import { NoteStore } from './storage/note_store/note_store.js';
28
+ import { PrivateEventStore } from './storage/private_event_store/private_event_store.js';
29
+ import { RecipientTaggingStore } from './storage/tagging_store/recipient_tagging_store.js';
30
+ import { SenderAddressBookStore } from './storage/tagging_store/sender_address_book_store.js';
31
+ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store.js';
31
32
  /**
32
33
  * Private eXecution Environment (PXE) is a library used by wallets to simulate private phase of transactions and to
33
34
  * manage private state of users.
34
35
  */ export class PXE {
35
36
  node;
36
- synchronizer;
37
+ blockStateSynchronizer;
37
38
  keyStore;
38
- contractDataProvider;
39
- noteDataProvider;
40
- capsuleDataProvider;
41
- syncDataProvider;
42
- taggingDataProvider;
43
- addressDataProvider;
44
- privateEventDataProvider;
39
+ contractStore;
40
+ noteStore;
41
+ capsuleStore;
42
+ anchorBlockStore;
43
+ senderTaggingStore;
44
+ senderAddressBookStore;
45
+ recipientTaggingStore;
46
+ addressStore;
47
+ privateEventStore;
45
48
  simulator;
46
49
  proverEnabled;
47
50
  proofCreator;
48
51
  protocolContractsProvider;
49
52
  log;
50
53
  jobQueue;
51
- constructor(node, synchronizer, keyStore, contractDataProvider, noteDataProvider, capsuleDataProvider, syncDataProvider, taggingDataProvider, addressDataProvider, privateEventDataProvider, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue){
54
+ debug;
55
+ constructor(node, blockStateSynchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, debug){
52
56
  this.node = node;
53
- this.synchronizer = synchronizer;
57
+ this.blockStateSynchronizer = blockStateSynchronizer;
54
58
  this.keyStore = keyStore;
55
- this.contractDataProvider = contractDataProvider;
56
- this.noteDataProvider = noteDataProvider;
57
- this.capsuleDataProvider = capsuleDataProvider;
58
- this.syncDataProvider = syncDataProvider;
59
- this.taggingDataProvider = taggingDataProvider;
60
- this.addressDataProvider = addressDataProvider;
61
- this.privateEventDataProvider = privateEventDataProvider;
59
+ this.contractStore = contractStore;
60
+ this.noteStore = noteStore;
61
+ this.capsuleStore = capsuleStore;
62
+ this.anchorBlockStore = anchorBlockStore;
63
+ this.senderTaggingStore = senderTaggingStore;
64
+ this.senderAddressBookStore = senderAddressBookStore;
65
+ this.recipientTaggingStore = recipientTaggingStore;
66
+ this.addressStore = addressStore;
67
+ this.privateEventStore = privateEventStore;
62
68
  this.simulator = simulator;
63
69
  this.proverEnabled = proverEnabled;
64
70
  this.proofCreator = proofCreator;
65
71
  this.protocolContractsProvider = protocolContractsProvider;
66
72
  this.log = log;
67
73
  this.jobQueue = jobQueue;
74
+ this.debug = debug;
68
75
  }
69
76
  /**
70
77
  * Creates an instance of a PXE by instantiating all the necessary data providers and services.
@@ -75,18 +82,22 @@ import { Synchronizer } from './synchronizer/index.js';
75
82
  */ static async create(node, store, proofCreator, simulator, protocolContractsProvider, config, loggerOrSuffix) {
76
83
  const log = !loggerOrSuffix || typeof loggerOrSuffix === 'string' ? createLogger(loggerOrSuffix ? `pxe:service:${loggerOrSuffix}` : `pxe:service`) : loggerOrSuffix;
77
84
  const proverEnabled = !!config.proverEnabled;
78
- const addressDataProvider = new AddressDataProvider(store);
79
- const privateEventDataProvider = new PrivateEventDataProvider(store);
80
- const contractDataProvider = new ContractDataProvider(store);
81
- const noteDataProvider = await NoteDataProvider.create(store);
82
- const syncDataProvider = new SyncDataProvider(store);
83
- const taggingDataProvider = new TaggingDataProvider(store);
84
- const capsuleDataProvider = new CapsuleDataProvider(store);
85
+ const addressStore = new AddressStore(store);
86
+ const privateEventStore = new PrivateEventStore(store);
87
+ const contractStore = new ContractStore(store);
88
+ const noteStore = await NoteStore.create(store);
89
+ const anchorBlockStore = new AnchorBlockStore(store);
90
+ const senderTaggingStore = new SenderTaggingStore(store);
91
+ const senderAddressBookStore = new SenderAddressBookStore(store);
92
+ const recipientTaggingStore = new RecipientTaggingStore(store);
93
+ const capsuleStore = new CapsuleStore(store);
85
94
  const keyStore = new KeyStore(store);
86
95
  const tipsStore = new L2TipsKVStore(store, 'pxe');
87
- const synchronizer = new Synchronizer(node, syncDataProvider, noteDataProvider, taggingDataProvider, tipsStore, config, loggerOrSuffix);
96
+ const synchronizer = new BlockSynchronizer(node, anchorBlockStore, noteStore, tipsStore, config, loggerOrSuffix);
97
+ const debugUtils = new PXEDebugUtils(contractStore, noteStore);
88
98
  const jobQueue = new SerialQueue();
89
- const pxe = new PXE(node, synchronizer, keyStore, contractDataProvider, noteDataProvider, capsuleDataProvider, syncDataProvider, taggingDataProvider, addressDataProvider, privateEventDataProvider, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue);
99
+ const pxe = new PXE(node, synchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, debugUtils);
100
+ debugUtils.setPXE(pxe);
90
101
  pxe.jobQueue.start();
91
102
  await pxe.#registerProtocolContracts();
92
103
  const info = await node.getNodeInfo();
@@ -95,8 +106,8 @@ import { Synchronizer } from './synchronizer/index.js';
95
106
  }
96
107
  // Internal methods
97
108
  #getSimulatorForTx(overrides) {
98
- const pxeOracleInterface = new PXEOracleInterface(ProxiedNodeFactory.create(this.node), this.keyStore, ProxiedContractDataProviderFactory.create(this.contractDataProvider, overrides?.contracts), this.noteDataProvider, this.capsuleDataProvider, this.syncDataProvider, this.taggingDataProvider, this.addressDataProvider, this.privateEventDataProvider, this.log);
99
- return new ContractFunctionSimulator(pxeOracleInterface, this.simulator);
109
+ const proxyContractStore = ProxiedContractStoreFactory.create(this.contractStore, overrides?.contracts);
110
+ return new ContractFunctionSimulator(proxyContractStore, this.noteStore, this.keyStore, this.addressStore, this.node, this.anchorBlockStore, this.senderTaggingStore, this.recipientTaggingStore, this.senderAddressBookStore, this.capsuleStore, this.privateEventStore, this.simulator);
100
111
  }
101
112
  #contextualizeError(err, ...context) {
102
113
  let contextStr = '';
@@ -127,8 +138,8 @@ import { Synchronizer } from './synchronizer/index.js';
127
138
  const registered = {};
128
139
  for (const name of protocolContractNames){
129
140
  const { address, contractClass, instance, artifact } = await this.protocolContractsProvider.getProtocolContractArtifact(name);
130
- await this.contractDataProvider.addContractArtifact(contractClass.id, artifact);
131
- await this.contractDataProvider.addContractInstance(instance);
141
+ await this.contractStore.addContractArtifact(contractClass.id, artifact);
142
+ await this.contractStore.addContractInstance(instance);
132
143
  registered[name] = address.toString();
133
144
  }
134
145
  this.log.verbose(`Registered protocol contracts in pxe`, registered);
@@ -143,39 +154,20 @@ import { Synchronizer } from './synchronizer/index.js';
143
154
  const initNullifier = await siloNullifier(address, address.toField());
144
155
  return !!await this.node.getNullifierMembershipWitness('latest', initNullifier);
145
156
  }
146
- async #getFunctionCall(functionName, args, to) {
147
- const contract = await this.contractDataProvider.getContract(to);
148
- if (!contract) {
149
- throw new Error(`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`);
150
- }
151
- const functionDao = contract.functions.find((f)=>f.name === functionName);
152
- if (!functionDao) {
153
- throw new Error(`Unknown function ${functionName} in contract ${contract.name}.`);
154
- }
155
- return {
156
- name: functionDao.name,
157
- args: encodeArguments(functionDao, args),
158
- selector: await FunctionSelector.fromNameAndParameters(functionDao.name, functionDao.parameters),
159
- type: functionDao.functionType,
160
- to,
161
- hideMsgSender: false,
162
- isStatic: functionDao.isStatic,
163
- returnTypes: functionDao.returnTypes
164
- };
165
- }
166
157
  // Executes the entrypoint private function, as well as all nested private
167
158
  // functions that might arise.
168
159
  async #executePrivate(contractFunctionSimulator, txRequest, scopes) {
169
160
  const { origin: contractAddress, functionSelector } = txRequest;
170
161
  try {
171
- const result = await contractFunctionSimulator.run(txRequest, contractAddress, functionSelector, undefined, // The sender for tags is set by contracts, typically by an account
162
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
163
+ const result = await contractFunctionSimulator.run(txRequest, contractAddress, functionSelector, undefined, anchorBlockHeader, // The sender for tags is set by contracts, typically by an account
172
164
  // contract entrypoint
173
165
  undefined, scopes);
174
166
  this.log.debug(`Private simulation completed for ${contractAddress.toString()}:${functionSelector}`);
175
167
  return result;
176
168
  } catch (err) {
177
169
  if (err instanceof SimulationError) {
178
- await enrichSimulationError(err, this.contractDataProvider, this.log);
170
+ await enrichSimulationError(err, this.contractStore, this.log);
179
171
  }
180
172
  throw err;
181
173
  }
@@ -190,10 +182,11 @@ import { Synchronizer } from './synchronizer/index.js';
190
182
  * @returns The simulation result containing the outputs of the utility function.
191
183
  */ async #simulateUtility(contractFunctionSimulator, call, authWitnesses, scopes) {
192
184
  try {
193
- return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], scopes);
185
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
186
+ return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes);
194
187
  } catch (err) {
195
188
  if (err instanceof SimulationError) {
196
- await enrichSimulationError(err, this.contractDataProvider, this.log);
189
+ await enrichSimulationError(err, this.contractStore, this.log);
197
190
  }
198
191
  throw err;
199
192
  }
@@ -215,7 +208,7 @@ import { Synchronizer } from './synchronizer/index.js';
215
208
  } catch (err) {
216
209
  if (err instanceof SimulationError) {
217
210
  try {
218
- await enrichPublicSimulationError(err, this.contractDataProvider, this.log);
211
+ await enrichPublicSimulationError(err, this.contractStore, this.log);
219
212
  } catch (enrichErr) {
220
213
  this.log.error(`Failed to enrich public simulation error: ${enrichErr}`);
221
214
  }
@@ -235,14 +228,14 @@ import { Synchronizer } from './synchronizer/index.js';
235
228
  * @returns An object that contains the output of the kernel execution, including the ChonkProof if proving is enabled.
236
229
  */ async #prove(txExecutionRequest, proofCreator, privateExecutionResult, config) {
237
230
  const simulationAnchorBlock = privateExecutionResult.getSimulationAnchorBlockNumber();
238
- const kernelOracle = new PrivateKernelOracleImpl(this.contractDataProvider, this.keyStore, this.node, simulationAnchorBlock);
231
+ const kernelOracle = new PrivateKernelOracleImpl(this.contractStore, this.keyStore, this.node, simulationAnchorBlock);
239
232
  const kernelTraceProver = new PrivateKernelExecutionProver(kernelOracle, proofCreator, !this.proverEnabled);
240
233
  this.log.debug(`Executing kernel trace prover (${JSON.stringify(config)})...`);
241
234
  return await kernelTraceProver.proveWithKernels(txExecutionRequest.toTxRequest(), privateExecutionResult, config);
242
235
  }
243
236
  // Public API
244
237
  getContractInstance(address) {
245
- return this.contractDataProvider.getContractInstance(address);
238
+ return this.contractStore.getContractInstance(address);
246
239
  }
247
240
  /**
248
241
  * Returns the contract class metadata given a contract class id.
@@ -258,7 +251,7 @@ import { Synchronizer } from './synchronizer/index.js';
258
251
  * during a public deployment. We probably want a nicer and more general API for this, but it'll have to
259
252
  * do for the time being.
260
253
  */ async getContractClassMetadata(id, includeArtifact = false) {
261
- const artifact = await this.contractDataProvider.getContractArtifact(id);
254
+ const artifact = await this.contractStore.getContractArtifact(id);
262
255
  if (!artifact) {
263
256
  this.log.warn(`No artifact found for contract class ${id.toString()} when looking for its metadata`);
264
257
  }
@@ -281,7 +274,7 @@ import { Synchronizer } from './synchronizer/index.js';
281
274
  */ async getContractMetadata(address) {
282
275
  let instance;
283
276
  try {
284
- instance = await this.contractDataProvider.getContractInstance(address);
277
+ instance = await this.contractStore.getContractInstance(address);
285
278
  } catch {
286
279
  this.log.warn(`No instance found for contract ${address.toString()} when looking for its metadata`);
287
280
  }
@@ -310,46 +303,48 @@ import { Synchronizer } from './synchronizer/index.js';
310
303
  this.log.info(`Registered account ${accountCompleteAddress.address.toString()}`);
311
304
  this.log.debug(`Registered account\n ${accountCompleteAddress.toReadableString()}`);
312
305
  }
313
- await this.addressDataProvider.addCompleteAddress(accountCompleteAddress);
314
- await this.noteDataProvider.addScope(accountCompleteAddress.address);
306
+ await this.addressStore.addCompleteAddress(accountCompleteAddress);
307
+ await this.noteStore.addScope(accountCompleteAddress.address);
315
308
  return accountCompleteAddress;
316
309
  }
317
310
  /**
318
- * Registers a user contact in PXE.
311
+ * Registers a sender in this PXE.
319
312
  *
320
- * Once a new contact is registered, the PXE will be able to receive notes tagged from this contact.
321
- * Will do nothing if the account is already registered.
313
+ * After registering a new sender, the PXE will sync private logs that are tagged with this sender's address.
314
+ * Will do nothing if the address is already registered.
322
315
  *
323
- * @param address - Address of the user to add to the address book
324
- * @returns The address address of the account.
325
- */ async registerSender(address) {
316
+ * @param sender - Address of the sender to register.
317
+ * @returns The address of the sender.
318
+ * TODO: It's strange that we return the address here and I (benesjan) think we should drop the return value.
319
+ */ async registerSender(sender) {
326
320
  const accounts = await this.keyStore.getAccounts();
327
- if (accounts.includes(address)) {
328
- this.log.info(`Sender:\n "${address.toString()}"\n already registered.`);
329
- return address;
321
+ if (accounts.includes(sender)) {
322
+ this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
323
+ return sender;
330
324
  }
331
- const wasAdded = await this.taggingDataProvider.addSenderAddress(address);
325
+ const wasAdded = await this.senderAddressBookStore.addSender(sender);
332
326
  if (wasAdded) {
333
- this.log.info(`Added sender:\n ${address.toString()}`);
327
+ this.log.info(`Added sender:\n ${sender.toString()}`);
334
328
  } else {
335
- this.log.info(`Sender:\n "${address.toString()}"\n already registered.`);
329
+ this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
336
330
  }
337
- return address;
331
+ return sender;
338
332
  }
339
333
  /**
340
- * Retrieves the addresses stored as senders on this PXE.
341
- * @returns An array of the senders on this PXE.
334
+ * Retrieves senders registered in this PXE.
335
+ * @returns Senders registered in this PXE.
342
336
  */ getSenders() {
343
- return this.taggingDataProvider.getSenderAddresses();
337
+ return this.senderAddressBookStore.getSenders();
344
338
  }
345
339
  /**
346
- * Removes a sender in the address book.
347
- */ async removeSender(address) {
348
- const wasRemoved = await this.taggingDataProvider.removeSenderAddress(address);
340
+ * Removes a sender registered in this PXE.
341
+ * @param sender - The address of the sender to remove.
342
+ */ async removeSender(sender) {
343
+ const wasRemoved = await this.senderAddressBookStore.removeSender(sender);
349
344
  if (wasRemoved) {
350
- this.log.info(`Removed sender:\n ${address.toString()}`);
345
+ this.log.info(`Removed sender:\n ${sender.toString()}`);
351
346
  } else {
352
- this.log.info(`Sender:\n "${address.toString()}"\n not in address book.`);
347
+ this.log.info(`Sender:\n "${sender.toString()}"\n not registered in PXE.`);
353
348
  }
354
349
  }
355
350
  /**
@@ -357,7 +352,7 @@ import { Synchronizer } from './synchronizer/index.js';
357
352
  * @returns An array of the accounts registered on this PXE.
358
353
  */ async getRegisteredAccounts() {
359
354
  // Get complete addresses of both the recipients and the accounts
360
- const completeAddresses = await this.addressDataProvider.getCompleteAddresses();
355
+ const completeAddresses = await this.addressStore.getCompleteAddresses();
361
356
  // Filter out the addresses not corresponding to accounts
362
357
  const accounts = await this.keyStore.getAccounts();
363
358
  return completeAddresses.filter((completeAddress)=>accounts.find((address)=>address.equals(completeAddress.address)));
@@ -368,7 +363,7 @@ import { Synchronizer } from './synchronizer/index.js';
368
363
  * @param artifact - The build artifact for the contract class.
369
364
  */ async registerContractClass(artifact) {
370
365
  const { id: contractClassId } = await getContractClassFromArtifact(artifact);
371
- await this.contractDataProvider.addContractArtifact(contractClassId, artifact);
366
+ await this.contractStore.addContractArtifact(contractClassId, artifact);
372
367
  this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
373
368
  }
374
369
  /**
@@ -392,17 +387,17 @@ import { Synchronizer } from './synchronizer/index.js';
392
387
  if (!computedAddress.equals(instance.address)) {
393
388
  throw new Error('Added a contract in which the address does not match the contract instance.');
394
389
  }
395
- await this.contractDataProvider.addContractArtifact(contractClass.id, artifact);
390
+ await this.contractStore.addContractArtifact(contractClass.id, artifact);
396
391
  const publicFunctionSignatures = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
397
392
  await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
398
393
  } else {
399
394
  // Otherwise, make sure there is an artifact already registered for that class id
400
- artifact = await this.contractDataProvider.getContractArtifact(instance.currentContractClassId);
395
+ artifact = await this.contractStore.getContractArtifact(instance.currentContractClassId);
401
396
  if (!artifact) {
402
397
  throw new Error(`Artifact not found when registering an instance. Contract class: ${instance.currentContractClassId}.`);
403
398
  }
404
399
  }
405
- await this.contractDataProvider.addContractInstance(instance);
400
+ await this.contractStore.addContractInstance(instance);
406
401
  this.log.info(`Added contract ${artifact.name} at ${instance.address.toString()} with class ${instance.currentContractClassId}`);
407
402
  }
408
403
  /**
@@ -417,22 +412,22 @@ import { Synchronizer } from './synchronizer/index.js';
417
412
  // We disable concurrently updating contracts to avoid concurrently syncing with the node, or changing a contract's
418
413
  // class while we're simulating it.
419
414
  return this.#putInJobQueue(async ()=>{
420
- const currentInstance = await this.contractDataProvider.getContractInstance(contractAddress);
415
+ const currentInstance = await this.contractStore.getContractInstance(contractAddress);
421
416
  if (!currentInstance) {
422
417
  throw new Error(`Instance not found when updating a contract. Contract address: ${contractAddress}.`);
423
418
  }
424
419
  const contractClass = await getContractClassFromArtifact(artifact);
425
- await this.synchronizer.sync();
426
- const header = await this.syncDataProvider.getBlockHeader();
420
+ await this.blockStateSynchronizer.sync();
421
+ const header = await this.anchorBlockStore.getBlockHeader();
427
422
  const currentClassId = await readCurrentClassId(contractAddress, currentInstance, this.node, header.globalVariables.blockNumber, header.globalVariables.timestamp);
428
423
  if (!contractClass.id.equals(currentClassId)) {
429
424
  throw new Error('Could not update contract to a class different from the current one.');
430
425
  }
431
- await this.contractDataProvider.addContractArtifact(contractClass.id, artifact);
426
+ await this.contractStore.addContractArtifact(contractClass.id, artifact);
432
427
  const publicFunctionSignatures = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
433
428
  await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
434
429
  currentInstance.currentContractClassId = contractClass.id;
435
- await this.contractDataProvider.addContractInstance(currentInstance);
430
+ await this.contractStore.addContractInstance(currentInstance);
436
431
  this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
437
432
  });
438
433
  }
@@ -440,33 +435,7 @@ import { Synchronizer } from './synchronizer/index.js';
440
435
  * Retrieves the addresses of contracts added to this PXE.
441
436
  * @returns An array of contracts addresses registered on this PXE.
442
437
  */ getContracts() {
443
- return this.contractDataProvider.getContractsAddresses();
444
- }
445
- /**
446
- * A debugging utility to get notes based on the provided filter.
447
- *
448
- * Note that this should not be used in production code because the structure of notes is considered to be
449
- * an implementation detail of contracts. This is only meant to be used for debugging purposes. If you need to obtain
450
- * note-related information in production code, please implement a custom utility function on your contract and call
451
- * that function instead (e.g. `get_balance(owner: AztecAddress) -> u128` utility function on a Token contract).
452
- *
453
- * @param filter - The filter to apply to the notes.
454
- * @returns The requested notes.
455
- */ async getNotes(filter) {
456
- // We need to manually trigger private state sync to have a guarantee that all the notes are available.
457
- await this.simulateUtility('sync_private_state', [], filter.contractAddress);
458
- const noteDaos = await this.noteDataProvider.getNotes(filter);
459
- const uniqueNotes = noteDaos.map(async (dao)=>{
460
- const completeAddresses = await this.addressDataProvider.getCompleteAddresses();
461
- const completeAddressIndex = completeAddresses.findIndex((completeAddress)=>completeAddress.address.equals(dao.recipient));
462
- const completeAddress = completeAddresses[completeAddressIndex];
463
- if (completeAddress === undefined) {
464
- throw new Error(`Cannot find complete address for recipient ${dao.recipient.toString()}`);
465
- }
466
- const recipient = completeAddress.address;
467
- return new UniqueNote(dao.note, recipient, dao.contractAddress, dao.storageSlot, dao.txHash, dao.noteNonce);
468
- });
469
- return Promise.all(uniqueNotes);
438
+ return this.contractStore.getContractsAddresses();
470
439
  }
471
440
  /**
472
441
  * Proves the private portion of a simulated transaction, ready to send to the network
@@ -484,7 +453,7 @@ import { Synchronizer } from './synchronizer/index.js';
484
453
  const totalTimer = new Timer();
485
454
  try {
486
455
  const syncTimer = new Timer();
487
- await this.synchronizer.sync();
456
+ await this.blockStateSynchronizer.sync();
488
457
  const syncTime = syncTimer.ms();
489
458
  const contractFunctionSimulator = this.#getSimulatorForTx();
490
459
  privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
@@ -513,14 +482,21 @@ import { Synchronizer } from './synchronizer/index.js';
513
482
  timings,
514
483
  nodeRPCCalls: contractFunctionSimulator?.getStats().nodeRPCCalls
515
484
  });
485
+ // While not strictly necessary to store tagging cache contents in the DB since we sync tagging indexes from
486
+ // chain before sending new logs, the sync can only see logs already included in blocks. If we send another
487
+ // transaction before this one is included in a block from this PXE, and that transaction contains a log with
488
+ // a tag derived from the same secret, we would reuse the tag and the transactions would be linked. Hence
489
+ // storing the tags here prevents linkage of txs sent from the same PXE.
516
490
  const preTagsUsedInTheTx = privateExecutionResult.entrypoint.preTags;
517
491
  if (preTagsUsedInTheTx.length > 0) {
518
- await this.taggingDataProvider.setLastUsedIndexesAsSender(preTagsUsedInTheTx);
519
- this.log.debug(`Stored used pre tags as sender for the tx`, {
492
+ // TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
493
+ const txHash = (await txProvingResult.toTx()).txHash;
494
+ await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash);
495
+ this.log.debug(`Stored used pre-tags as sender for the tx`, {
520
496
  preTagsUsedInTheTx
521
497
  });
522
498
  } else {
523
- this.log.debug(`No pre tags used in the tx`);
499
+ this.log.debug(`No pre-tags used in the tx`);
524
500
  }
525
501
  return txProvingResult;
526
502
  } catch (err) {
@@ -551,7 +527,7 @@ import { Synchronizer } from './synchronizer/index.js';
551
527
  };
552
528
  this.log.info(`Profiling transaction execution request to ${txRequest.functionSelector} at ${txRequest.origin}`, txInfo);
553
529
  const syncTimer = new Timer();
554
- await this.synchronizer.sync();
530
+ await this.blockStateSynchronizer.sync();
555
531
  const syncTime = syncTimer.ms();
556
532
  const contractFunctionSimulator = this.#getSimulatorForTx();
557
533
  const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
@@ -627,7 +603,7 @@ import { Synchronizer } from './synchronizer/index.js';
627
603
  };
628
604
  this.log.info(`Simulating transaction execution request to ${txRequest.functionSelector} at ${txRequest.origin}`, txInfo);
629
605
  const syncTimer = new Timer();
630
- await this.synchronizer.sync();
606
+ await this.blockStateSynchronizer.sync();
631
607
  const syncTime = syncTimer.ms();
632
608
  const contractFunctionSimulator = this.#getSimulatorForTx(overrides);
633
609
  // Temporary: in case there are overrides, we have to skip the kernels or validations
@@ -640,10 +616,9 @@ import { Synchronizer } from './synchronizer/index.js';
640
616
  let executionSteps = [];
641
617
  if (skipKernels) {
642
618
  // According to the protocol rules, the nonce generator for the note hashes
643
- // can either be the first nullifier in the tx or the hash of the initial tx request
644
- // if there are none.
645
- const nonceGenerator = privateExecutionResult.firstNullifier.equals(Fr.ZERO) ? await txRequest.toTxRequest().hash() : privateExecutionResult.firstNullifier;
646
- ({ publicInputs, executionSteps } = await generateSimulatedProvingResult(privateExecutionResult, nonceGenerator, this.contractDataProvider));
619
+ // can either be the first nullifier in the tx or the protocol nullifier if there are none.
620
+ const nonceGenerator = privateExecutionResult.firstNullifier.equals(Fr.ZERO) ? await computeProtocolNullifier(await txRequest.toTxRequest().hash()) : privateExecutionResult.firstNullifier;
621
+ ({ publicInputs, executionSteps } = await generateSimulatedProvingResult(privateExecutionResult, nonceGenerator, this.contractStore));
647
622
  } else {
648
623
  // Kernel logic, plus proving of all private functions and kernels.
649
624
  ({ publicInputs, executionSteps } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, {
@@ -710,15 +685,12 @@ import { Synchronizer } from './synchronizer/index.js';
710
685
  /**
711
686
  * Simulate the execution of a contract utility function.
712
687
  *
713
- * @param functionName - The name of the utility contract function to be called.
714
- * @param args - The arguments to be provided to the function.
715
- * @param to - The address of the contract to be called.
688
+ * @param call - The function call containing the function details, arguments, and target contract address.
716
689
  * @param authwits - (Optional) The authentication witnesses required for the function call.
717
- * @param from - (Optional) The msg sender to set for the call.
718
690
  * @param scopes - (Optional) The accounts whose notes we can access in this call. Currently optional and will
719
691
  * default to all.
720
692
  * @returns The result of the utility function call, structured based on the function ABI.
721
- */ simulateUtility(functionName, args, to, authwits, _from, scopes) {
693
+ */ simulateUtility(call, authwits, scopes) {
722
694
  // We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
723
695
  // to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
724
696
  // delete the same read value, or reading values that another simulation is currently modifying).
@@ -726,17 +698,16 @@ import { Synchronizer } from './synchronizer/index.js';
726
698
  try {
727
699
  const totalTimer = new Timer();
728
700
  const syncTimer = new Timer();
729
- await this.synchronizer.sync();
701
+ await this.blockStateSynchronizer.sync();
730
702
  const syncTime = syncTimer.ms();
731
- const functionCall = await this.#getFunctionCall(functionName, args, to);
732
703
  const functionTimer = new Timer();
733
704
  const contractFunctionSimulator = this.#getSimulatorForTx();
734
- const executionResult = await this.#simulateUtility(contractFunctionSimulator, functionCall, authwits ?? [], scopes);
705
+ const executionResult = await this.#simulateUtility(contractFunctionSimulator, call, authwits ?? [], scopes);
735
706
  const functionTime = functionTimer.ms();
736
707
  const totalTime = totalTimer.ms();
737
708
  const perFunction = [
738
709
  {
739
- functionName,
710
+ functionName: call.name,
740
711
  time: functionTime
741
712
  }
742
713
  ];
@@ -755,31 +726,31 @@ import { Synchronizer } from './synchronizer/index.js';
755
726
  }
756
727
  };
757
728
  } catch (err) {
729
+ const { to, name, args } = call;
758
730
  const stringifiedArgs = args.map((arg)=>arg.toString()).join(', ');
759
- throw this.#contextualizeError(err, `simulateUtility ${to}:${functionName}(${stringifiedArgs})`, `scopes=${scopes?.map((s)=>s.toString()).join(', ') ?? 'undefined'}`);
731
+ throw this.#contextualizeError(err, `simulateUtility ${to}:${name}(${stringifiedArgs})`, `scopes=${scopes?.map((s)=>s.toString()).join(', ') ?? 'undefined'}`);
760
732
  }
761
733
  });
762
734
  }
763
735
  /**
764
736
  * Returns the private events given search parameters.
765
- * @param contractAddress - The address of the contract to get events from.
766
- * @param eventMetadata - Metadata of the event. This should be the class generated from the contract. e.g. Contract.events.Event
767
- * @param from - The block number to search from.
768
- * @param numBlocks - The amount of blocks to search.
769
- * @param recipients - The addresses that decrypted the logs.
770
- * @returns - The deserialized events.
771
- */ async getPrivateEvents(contractAddress, eventMetadataDef, from, numBlocks, recipients) {
772
- if (recipients.length === 0) {
773
- throw new Error('Recipients are required to get private events');
774
- }
775
- this.log.verbose(`Getting private events for ${contractAddress.toString()} from ${from} to ${from + numBlocks}`);
737
+ * @param eventSelector - Event selector to search for.
738
+ * @param filter
739
+ * contractAddress - The address of the contract to get events from. Required.
740
+ * scopes - One or more event scope addresses to filter by. Required.
741
+ * fromBlock - The block number to search from (inclusive). Optional. If provided, it must be >= 0.
742
+ * Defaults to 0.
743
+ * If toBlock is defined but fromBlock is not, fromBlock defaults to toBlock - 1.
744
+ * toBlock - The block number to search up to (exclusive). Optional. If provided, it must be > 0.
745
+ * Defaults to the latest known block to PXE + 1.
746
+ * @returns - The packed events with block and tx metadata.
747
+ */ async getPrivateEvents(eventSelector, filter) {
776
748
  // We need to manually trigger private state sync to have a guarantee that all the events are available.
777
- await this.simulateUtility('sync_private_state', [], contractAddress);
778
- const events = await this.privateEventDataProvider.getPrivateEvents(contractAddress, from, numBlocks, recipients, eventMetadataDef.eventSelector);
779
- const decodedEvents = events.map((event)=>decodeFromAbi([
780
- eventMetadataDef.abiType
781
- ], event.msgContent));
782
- return decodedEvents;
749
+ const call = await this.contractStore.getFunctionCall('sync_private_state', [], filter.contractAddress);
750
+ await this.simulateUtility(call);
751
+ const sanitizedFilter = await new PrivateEventFilterValidator(this.anchorBlockStore).validate(filter);
752
+ this.log.debug(`Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`);
753
+ return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
783
754
  }
784
755
  /**
785
756
  * Stops the PXE's job queue.
@@ -0,0 +1,11 @@
1
+ import type { AztecAsyncKVStore } from '@aztec/kv-store';
2
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ import { CompleteAddress } from '@aztec/stdlib/contract';
4
+ export declare class AddressStore {
5
+ #private;
6
+ constructor(store: AztecAsyncKVStore);
7
+ addCompleteAddress(completeAddress: CompleteAddress): Promise<boolean>;
8
+ getCompleteAddress(account: AztecAddress): Promise<CompleteAddress | undefined>;
9
+ getCompleteAddresses(): Promise<CompleteAddress[]>;
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc19zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JhZ2UvYWRkcmVzc19zdG9yZS9hZGRyZXNzX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFtQixpQkFBaUIsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQscUJBQWEsWUFBWTs7SUFLdkIsWUFBWSxLQUFLLEVBQUUsaUJBQWlCLEVBS25DO0lBRUQsa0JBQWtCLENBQUMsZUFBZSxFQUFFLGVBQWUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBMEJyRTtJQVlELGtCQUFrQixDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FFOUU7SUFFSyxvQkFBb0IsSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FJdkQ7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address_store.d.ts","sourceRoot":"","sources":["../../../src/storage/address_store/address_store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,qBAAa,YAAY;;IAKvB,YAAY,KAAK,EAAE,iBAAiB,EAKnC;IAED,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BrE;IAYD,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAE9E;IAEK,oBAAoB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAIvD;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { toArray } from '@aztec/foundation/iterable';
2
2
  import { CompleteAddress } from '@aztec/stdlib/contract';
3
- export class AddressDataProvider {
3
+ export class AddressStore {
4
4
  #store;
5
5
  #completeAddresses;
6
6
  #completeAddressIndex;
@@ -0,0 +1,2 @@
1
+ export { AddressStore } from './address_store.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL2FkZHJlc3Nfc3RvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/address_store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}