@aztec/pxe 0.0.1-commit.fce3e4f → 0.0.1-commit.ff7989d6c

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 (408) hide show
  1. package/dest/access_scopes.d.ts +9 -0
  2. package/dest/access_scopes.d.ts.map +1 -0
  3. package/dest/access_scopes.js +6 -0
  4. package/dest/bin/check_oracle_version.js +105 -15
  5. package/dest/block_synchronizer/block_synchronizer.d.ts +45 -0
  6. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  7. package/dest/block_synchronizer/block_synchronizer.js +153 -0
  8. package/dest/block_synchronizer/index.d.ts +2 -0
  9. package/dest/block_synchronizer/index.d.ts.map +1 -0
  10. package/dest/block_synchronizer/index.js +1 -0
  11. package/dest/config/index.d.ts +6 -4
  12. package/dest/config/index.d.ts.map +1 -1
  13. package/dest/config/index.js +17 -0
  14. package/dest/config/package_info.js +1 -1
  15. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  16. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  17. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  18. package/dest/contract_function_simulator/contract_function_simulator.d.ts +76 -24
  19. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/contract_function_simulator.js +218 -73
  21. package/dest/contract_function_simulator/execution_note_cache.d.ts +21 -11
  22. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/execution_note_cache.js +49 -31
  24. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +1 -1
  25. package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
  26. package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
  27. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/index.d.ts +2 -2
  29. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  30. package/dest/contract_function_simulator/index.js +1 -1
  31. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -4
  32. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -4
  34. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
  35. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  36. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
  37. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  38. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
  40. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +6 -5
  41. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +7 -4
  43. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  44. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  45. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  46. package/dest/contract_function_simulator/oracle/interfaces.d.ts +27 -20
  47. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  48. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +4 -2
  49. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  50. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
  51. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +11 -7
  52. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  53. package/dest/contract_function_simulator/oracle/note_packing_utils.js +14 -10
  54. package/dest/contract_function_simulator/oracle/oracle.d.ts +13 -11
  55. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  56. package/dest/contract_function_simulator/oracle/oracle.js +86 -51
  57. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -27
  58. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  59. package/dest/contract_function_simulator/oracle/private_execution.js +2 -38
  60. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +54 -45
  61. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  62. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +105 -62
  63. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +114 -38
  64. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  65. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +214 -86
  66. package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
  67. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  68. package/dest/contract_function_simulator/pick_notes.js +1 -1
  69. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  70. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  71. package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
  72. package/dest/contract_logging.d.ts +22 -0
  73. package/dest/contract_logging.d.ts.map +1 -0
  74. package/dest/contract_logging.js +23 -0
  75. package/dest/contract_sync/contract_sync_service.d.ts +43 -0
  76. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  77. package/dest/contract_sync/contract_sync_service.js +97 -0
  78. package/dest/contract_sync/helpers.d.ts +29 -0
  79. package/dest/contract_sync/helpers.d.ts.map +1 -0
  80. package/dest/contract_sync/helpers.js +55 -0
  81. package/dest/debug/pxe_debug_utils.d.ts +45 -0
  82. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  83. package/dest/debug/pxe_debug_utils.js +48 -0
  84. package/dest/entrypoints/client/bundle/index.d.ts +4 -2
  85. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  86. package/dest/entrypoints/client/bundle/index.js +3 -1
  87. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  88. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  89. package/dest/entrypoints/client/bundle/utils.js +32 -9
  90. package/dest/entrypoints/client/lazy/index.d.ts +4 -2
  91. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  92. package/dest/entrypoints/client/lazy/index.js +3 -1
  93. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  94. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  95. package/dest/entrypoints/client/lazy/utils.js +33 -10
  96. package/dest/entrypoints/pxe_creation_options.d.ts +7 -3
  97. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  98. package/dest/entrypoints/server/index.d.ts +6 -2
  99. package/dest/entrypoints/server/index.d.ts.map +1 -1
  100. package/dest/entrypoints/server/index.js +5 -1
  101. package/dest/entrypoints/server/utils.d.ts +1 -1
  102. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  103. package/dest/entrypoints/server/utils.js +39 -16
  104. package/dest/error_enriching.d.ts +4 -4
  105. package/dest/error_enriching.d.ts.map +1 -1
  106. package/dest/error_enriching.js +6 -6
  107. package/dest/events/event_service.d.ts +15 -0
  108. package/dest/events/event_service.d.ts.map +1 -0
  109. package/dest/events/event_service.js +44 -0
  110. package/dest/events/index.d.ts +2 -0
  111. package/dest/events/index.d.ts.map +1 -0
  112. package/dest/events/index.js +1 -0
  113. package/dest/events/private_event_filter_validator.d.ts +9 -0
  114. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  115. package/dest/events/private_event_filter_validator.js +38 -0
  116. package/dest/job_coordinator/job_coordinator.d.ts +75 -0
  117. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  118. package/dest/job_coordinator/job_coordinator.js +94 -0
  119. package/dest/logs/log_service.d.ts +29 -0
  120. package/dest/logs/log_service.d.ts.map +1 -0
  121. package/dest/logs/log_service.js +118 -0
  122. package/dest/notes/index.d.ts +2 -0
  123. package/dest/notes/index.d.ts.map +1 -0
  124. package/dest/notes/index.js +1 -0
  125. package/dest/notes/note_service.d.ts +49 -0
  126. package/dest/notes/note_service.d.ts.map +1 -0
  127. package/dest/notes/note_service.js +148 -0
  128. package/dest/notes_filter.d.ts +25 -0
  129. package/dest/notes_filter.d.ts.map +1 -0
  130. package/dest/notes_filter.js +4 -0
  131. package/dest/oracle_version.d.ts +3 -3
  132. package/dest/oracle_version.d.ts.map +1 -1
  133. package/dest/oracle_version.js +4 -3
  134. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  135. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  136. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  137. package/dest/private_kernel/hints/index.d.ts +3 -3
  138. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  139. package/dest/private_kernel/hints/index.js +2 -2
  140. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
  141. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  142. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +16 -10
  143. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  144. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  145. package/dest/private_kernel/private_kernel_execution_prover.js +16 -17
  146. package/dest/private_kernel/private_kernel_oracle.d.ts +26 -25
  147. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  148. package/dest/private_kernel/private_kernel_oracle.js +94 -2
  149. package/dest/pxe.d.ts +112 -102
  150. package/dest/pxe.d.ts.map +1 -1
  151. package/dest/pxe.js +255 -252
  152. package/dest/storage/address_store/address_store.d.ts +11 -0
  153. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  154. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -12
  155. package/dest/storage/address_store/index.d.ts +2 -0
  156. package/dest/storage/address_store/index.d.ts.map +1 -0
  157. package/dest/storage/address_store/index.js +1 -0
  158. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
  159. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  160. package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +10 -10
  161. package/dest/storage/{sync_data_provider → anchor_block_store}/index.d.ts +2 -2
  162. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  163. package/dest/storage/anchor_block_store/index.js +1 -0
  164. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  165. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  166. package/dest/storage/capsule_store/capsule_store.js +253 -0
  167. package/dest/storage/capsule_store/index.d.ts +2 -0
  168. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  169. package/dest/storage/capsule_store/index.js +1 -0
  170. package/dest/storage/contract_store/contract_store.d.ts +93 -0
  171. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  172. package/dest/storage/contract_store/contract_store.js +309 -0
  173. package/dest/storage/contract_store/index.d.ts +2 -0
  174. package/dest/storage/contract_store/index.d.ts.map +1 -0
  175. package/dest/storage/contract_store/index.js +1 -0
  176. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  177. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  178. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
  179. package/dest/storage/index.d.ts +8 -8
  180. package/dest/storage/index.d.ts.map +1 -1
  181. package/dest/storage/index.js +7 -7
  182. package/dest/storage/metadata.d.ts +1 -1
  183. package/dest/storage/metadata.js +1 -1
  184. package/dest/storage/note_store/index.d.ts +3 -0
  185. package/dest/storage/note_store/index.d.ts.map +1 -0
  186. package/dest/storage/note_store/index.js +2 -0
  187. package/dest/storage/note_store/note_store.d.ts +83 -0
  188. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  189. package/dest/storage/note_store/note_store.js +343 -0
  190. package/dest/storage/note_store/stored_note.d.ts +16 -0
  191. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  192. package/dest/storage/note_store/stored_note.js +43 -0
  193. package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
  194. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  195. package/dest/storage/private_event_store/private_event_store.js +273 -0
  196. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  197. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  198. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  199. package/dest/storage/tagging_store/index.d.ts +4 -0
  200. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  201. package/dest/storage/tagging_store/index.js +3 -0
  202. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  203. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  204. package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
  205. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  206. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  207. package/dest/storage/tagging_store/sender_address_book_store.js +36 -0
  208. package/dest/storage/tagging_store/sender_tagging_store.d.ts +77 -0
  209. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  210. package/dest/storage/tagging_store/sender_tagging_store.js +348 -0
  211. package/dest/tagging/constants.d.ts +2 -2
  212. package/dest/tagging/constants.d.ts.map +1 -1
  213. package/dest/tagging/constants.js +10 -2
  214. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  215. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  216. package/dest/tagging/get_all_logs_by_tags.js +60 -0
  217. package/dest/tagging/index.d.ts +16 -6
  218. package/dest/tagging/index.d.ts.map +1 -1
  219. package/dest/tagging/index.js +15 -5
  220. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +15 -0
  221. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
  222. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
  223. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  224. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  225. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  226. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +15 -0
  227. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
  228. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +32 -0
  229. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +21 -0
  230. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  231. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
  232. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
  233. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  234. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +29 -0
  235. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +21 -0
  236. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  237. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +60 -0
  238. package/package.json +28 -19
  239. package/src/access_scopes.ts +9 -0
  240. package/src/bin/check_oracle_version.ts +131 -20
  241. package/src/block_synchronizer/block_synchronizer.ts +178 -0
  242. package/src/block_synchronizer/index.ts +1 -0
  243. package/src/config/index.ts +17 -3
  244. package/src/config/package_info.ts +1 -1
  245. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  246. package/src/contract_function_simulator/contract_function_simulator.ts +380 -104
  247. package/src/contract_function_simulator/execution_note_cache.ts +51 -28
  248. package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
  249. package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
  250. package/src/contract_function_simulator/index.ts +1 -1
  251. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +7 -3
  252. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
  253. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -1
  254. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -3
  255. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  256. package/src/contract_function_simulator/oracle/interfaces.ts +32 -17
  257. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
  258. package/src/contract_function_simulator/oracle/note_packing_utils.ts +27 -13
  259. package/src/contract_function_simulator/oracle/oracle.ts +101 -47
  260. package/src/contract_function_simulator/oracle/private_execution.ts +2 -68
  261. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +154 -97
  262. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +350 -91
  263. package/src/contract_function_simulator/pick_notes.ts +1 -1
  264. package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
  265. package/src/contract_logging.ts +39 -0
  266. package/src/contract_sync/contract_sync_service.ts +152 -0
  267. package/src/contract_sync/helpers.ts +98 -0
  268. package/src/debug/pxe_debug_utils.ts +93 -0
  269. package/src/entrypoints/client/bundle/index.ts +3 -1
  270. package/src/entrypoints/client/bundle/utils.ts +24 -17
  271. package/src/entrypoints/client/lazy/index.ts +3 -1
  272. package/src/entrypoints/client/lazy/utils.ts +25 -18
  273. package/src/entrypoints/pxe_creation_options.ts +6 -2
  274. package/src/entrypoints/server/index.ts +5 -1
  275. package/src/entrypoints/server/utils.ts +33 -41
  276. package/src/error_enriching.ts +7 -15
  277. package/src/events/event_service.ts +71 -0
  278. package/src/events/index.ts +1 -0
  279. package/src/events/private_event_filter_validator.ts +46 -0
  280. package/src/job_coordinator/job_coordinator.ts +150 -0
  281. package/src/logs/log_service.ts +208 -0
  282. package/src/notes/index.ts +1 -0
  283. package/src/notes/note_service.ts +196 -0
  284. package/src/notes_filter.ts +26 -0
  285. package/src/oracle_version.ts +4 -3
  286. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  287. package/src/private_kernel/hints/index.ts +2 -2
  288. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +40 -29
  289. package/src/private_kernel/private_kernel_execution_prover.ts +20 -18
  290. package/src/private_kernel/private_kernel_oracle.ts +118 -37
  291. package/src/pxe.ts +395 -343
  292. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +16 -16
  293. package/src/storage/address_store/index.ts +1 -0
  294. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +10 -11
  295. package/src/storage/anchor_block_store/index.ts +1 -0
  296. package/src/storage/capsule_store/capsule_store.ts +315 -0
  297. package/src/storage/capsule_store/index.ts +1 -0
  298. package/src/storage/contract_store/contract_store.ts +429 -0
  299. package/src/storage/contract_store/index.ts +1 -0
  300. package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
  301. package/src/storage/index.ts +7 -7
  302. package/src/storage/metadata.ts +1 -1
  303. package/src/storage/note_store/index.ts +2 -0
  304. package/src/storage/note_store/note_store.ts +418 -0
  305. package/src/storage/note_store/stored_note.ts +48 -0
  306. package/src/storage/private_event_store/private_event_store.ts +384 -0
  307. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  308. package/src/storage/tagging_store/index.ts +3 -0
  309. package/src/storage/tagging_store/recipient_tagging_store.ts +139 -0
  310. package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
  311. package/src/storage/tagging_store/sender_tagging_store.ts +429 -0
  312. package/src/tagging/constants.ts +10 -2
  313. package/src/tagging/get_all_logs_by_tags.ts +92 -0
  314. package/src/tagging/index.ts +18 -5
  315. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +143 -0
  316. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  317. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +49 -0
  318. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +99 -0
  319. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +36 -0
  320. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +84 -0
  321. package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -265
  322. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
  323. package/dest/contract_function_simulator/execution_data_provider.js +0 -14
  324. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  325. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  326. package/dest/contract_function_simulator/proxied_node.js +0 -27
  327. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
  328. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
  329. package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -694
  330. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  331. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  332. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  333. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  334. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -45
  335. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  336. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  337. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  338. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  339. package/dest/storage/address_data_provider/index.d.ts +0 -2
  340. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  341. package/dest/storage/address_data_provider/index.js +0 -1
  342. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
  343. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  344. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -118
  345. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  346. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  347. package/dest/storage/capsule_data_provider/index.js +0 -1
  348. package/dest/storage/contract_data_provider/contract_data_provider.d.ts +0 -64
  349. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  350. package/dest/storage/contract_data_provider/contract_data_provider.js +0 -193
  351. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  352. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  353. package/dest/storage/contract_data_provider/index.js +0 -1
  354. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  355. package/dest/storage/note_data_provider/index.d.ts +0 -3
  356. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  357. package/dest/storage/note_data_provider/index.js +0 -2
  358. package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -83
  359. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  360. package/dest/storage/note_data_provider/note_data_provider.js +0 -311
  361. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -37
  362. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  363. package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -105
  364. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  365. package/dest/storage/sync_data_provider/index.js +0 -1
  366. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -10
  367. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  368. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  369. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  370. package/dest/storage/tagging_data_provider/index.js +0 -1
  371. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
  372. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  373. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
  374. package/dest/synchronizer/index.d.ts +0 -2
  375. package/dest/synchronizer/index.d.ts.map +0 -1
  376. package/dest/synchronizer/index.js +0 -1
  377. package/dest/synchronizer/synchronizer.d.ts +0 -35
  378. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  379. package/dest/synchronizer/synchronizer.js +0 -101
  380. package/dest/tagging/siloed_tag.d.ts +0 -14
  381. package/dest/tagging/siloed_tag.d.ts.map +0 -1
  382. package/dest/tagging/siloed_tag.js +0 -20
  383. package/dest/tagging/tag.d.ts +0 -12
  384. package/dest/tagging/tag.d.ts.map +0 -1
  385. package/dest/tagging/tag.js +0 -17
  386. package/dest/tagging/utils.d.ts +0 -18
  387. package/dest/tagging/utils.d.ts.map +0 -1
  388. package/dest/tagging/utils.js +0 -24
  389. package/src/contract_function_simulator/execution_data_provider.ts +0 -333
  390. package/src/contract_function_simulator/proxied_node.ts +0 -33
  391. package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1008
  392. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
  393. package/src/storage/address_data_provider/index.ts +0 -1
  394. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -147
  395. package/src/storage/capsule_data_provider/index.ts +0 -1
  396. package/src/storage/contract_data_provider/contract_data_provider.ts +0 -277
  397. package/src/storage/contract_data_provider/index.ts +0 -1
  398. package/src/storage/note_data_provider/index.ts +0 -2
  399. package/src/storage/note_data_provider/note_data_provider.ts +0 -399
  400. package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -143
  401. package/src/storage/sync_data_provider/index.ts +0 -1
  402. package/src/storage/tagging_data_provider/index.ts +0 -1
  403. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
  404. package/src/synchronizer/index.ts +0 -1
  405. package/src/synchronizer/synchronizer.ts +0 -120
  406. package/src/tagging/siloed_tag.ts +0 -22
  407. package/src/tagging/tag.ts +0 -16
  408. package/src/tagging/utils.ts +0 -31
@@ -1,193 +0,0 @@
1
- import { toArray } from '@aztec/foundation/iterable';
2
- import { FunctionSelector, FunctionType, contractArtifactFromBuffer, contractArtifactToBuffer, getFunctionDebugMetadata } from '@aztec/stdlib/abi';
3
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- import { SerializableContractInstance, getContractClassFromArtifact } from '@aztec/stdlib/contract';
5
- import { PrivateFunctionsTree } from './private_functions_tree.js';
6
- /**
7
- * ContractDataProvider serves as a data manager and retriever for Aztec.nr contracts.
8
- * It provides methods to obtain contract addresses, function ABI, bytecode, and membership witnesses
9
- * from a given contract address and function selector. The class maintains a cache of ContractTree instances
10
- * to efficiently serve the requested data. It interacts with the ContractDatabase and AztecNode to fetch
11
- * the required information and facilitate cryptographic proof generation.
12
- */ export class ContractDataProvider {
13
- /** Map from contract class id to private function tree. */ // TODO: Update it to be LRU cache so that it doesn't keep all the data all the time.
14
- #privateFunctionTrees = new Map();
15
- /** Map from contract address to contract class id */ #contractClassIdMap = new Map();
16
- #contractArtifacts;
17
- #contractInstances;
18
- constructor(store){
19
- this.#contractArtifacts = store.openMap('contract_artifacts');
20
- this.#contractInstances = store.openMap('contracts_instances');
21
- }
22
- // Setters
23
- async addContractArtifact(id, contract) {
24
- const privateFunctions = contract.functions.filter((functionArtifact)=>functionArtifact.functionType === FunctionType.PRIVATE);
25
- const privateSelectors = await Promise.all(privateFunctions.map(async (privateFunctionArtifact)=>(await FunctionSelector.fromNameAndParameters(privateFunctionArtifact.name, privateFunctionArtifact.parameters)).toString()));
26
- if (privateSelectors.length !== new Set(privateSelectors).size) {
27
- throw new Error('Repeated function selectors of private functions');
28
- }
29
- await this.#contractArtifacts.set(id.toString(), contractArtifactToBuffer(contract));
30
- }
31
- async addContractInstance(contract) {
32
- this.#contractClassIdMap.set(contract.address.toString(), contract.currentContractClassId);
33
- await this.#contractInstances.set(contract.address.toString(), new SerializableContractInstance(contract).toBuffer());
34
- }
35
- // Private getters
36
- async #getContractClassId(contractAddress) {
37
- if (!this.#contractClassIdMap.has(contractAddress.toString())) {
38
- const instance = await this.getContractInstance(contractAddress);
39
- if (!instance) {
40
- return;
41
- }
42
- this.#contractClassIdMap.set(contractAddress.toString(), instance.currentContractClassId);
43
- }
44
- return this.#contractClassIdMap.get(contractAddress.toString());
45
- }
46
- /**
47
- * Retrieve or create a ContractTree instance based on the provided class id.
48
- * If an existing tree with the same class id is found in the cache, it will be returned.
49
- * Otherwise, a new ContractTree instance will be created using the contract data from the database
50
- * and added to the cache before returning.
51
- *
52
- * @param classId - The class id of the contract for which the ContractTree is required.
53
- * @returns A ContractTree instance associated with the specified contract address.
54
- * @throws An Error if the contract is not found in the ContractDatabase.
55
- */ async #getPrivateFunctionTreeForClassId(classId) {
56
- if (!this.#privateFunctionTrees.has(classId.toString())) {
57
- const artifact = await this.getContractArtifact(classId);
58
- if (!artifact) {
59
- return;
60
- }
61
- const tree = await PrivateFunctionsTree.create(artifact);
62
- this.#privateFunctionTrees.set(classId.toString(), tree);
63
- }
64
- return this.#privateFunctionTrees.get(classId.toString());
65
- }
66
- async #getContractArtifactByAddress(contractAddress) {
67
- const contractClassId = await this.#getContractClassId(contractAddress);
68
- return contractClassId && this.getContractArtifact(contractClassId);
69
- }
70
- // Public getters
71
- async getContractsAddresses() {
72
- const keys = await toArray(this.#contractInstances.keysAsync());
73
- return keys.map(AztecAddress.fromString);
74
- }
75
- /** Returns a contract instance for a given address. Throws if not found. */ async getContractInstance(contractAddress) {
76
- const contract = await this.#contractInstances.getAsync(contractAddress.toString());
77
- return contract && SerializableContractInstance.fromBuffer(contract).withAddress(contractAddress);
78
- }
79
- async getContractArtifact(contractClassId) {
80
- const contract = await this.#contractArtifacts.getAsync(contractClassId.toString());
81
- // TODO(@spalladino): AztecAsyncMap lies and returns Uint8Arrays instead of Buffers, hence the extra Buffer.from.
82
- return contract && contractArtifactFromBuffer(Buffer.from(contract));
83
- }
84
- /** Returns a contract class for a given class id. Throws if not found. */ async getContractClass(contractClassId) {
85
- const artifact = await this.getContractArtifact(contractClassId);
86
- return artifact && getContractClassFromArtifact(artifact);
87
- }
88
- async getContract(address) {
89
- const instance = await this.getContractInstance(address);
90
- if (!instance) {
91
- return;
92
- }
93
- const artifact = await this.getContractArtifact(instance.currentContractClassId);
94
- if (!artifact) {
95
- return;
96
- }
97
- return {
98
- ...instance,
99
- ...artifact
100
- };
101
- }
102
- /**
103
- * Retrieves the artifact of a specified function within a given contract.
104
- * The function is identified by its selector, which is a unique code generated from the function's signature.
105
- * Throws an error if the contract address or function selector are invalid or not found.
106
- *
107
- * @param contractAddress - The AztecAddress representing the contract containing the function.
108
- * @param selector - The function selector.
109
- * @returns The corresponding function's artifact as an object.
110
- */ async getFunctionArtifact(contractAddress, selector) {
111
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
112
- const fnArtifact = artifact && await this.#findFunctionArtifactBySelector(artifact, selector);
113
- return fnArtifact && {
114
- ...fnArtifact,
115
- contractName: artifact.name
116
- };
117
- }
118
- async getPublicFunctionArtifact(contractAddress) {
119
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
120
- const fnArtifact = artifact && artifact.functions.find((fn)=>fn.functionType === FunctionType.PUBLIC);
121
- return fnArtifact && {
122
- ...fnArtifact,
123
- contractName: artifact.name
124
- };
125
- }
126
- async getFunctionAbi(contractAddress, selector) {
127
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
128
- return artifact && await this.#findFunctionAbiBySelector(artifact, selector);
129
- }
130
- /**
131
- * Retrieves the debug metadata of a specified function within a given contract.
132
- * The function is identified by its selector, which is a unique code generated from the function's signature.
133
- * Returns undefined if the debug metadata for the given function is not found.
134
- * Throws if the contract has not been added to the database.
135
- *
136
- * @param contractAddress - The AztecAddress representing the contract containing the function.
137
- * @param selector - The function selector.
138
- * @returns The corresponding function's artifact as an object.
139
- */ async getFunctionDebugMetadata(contractAddress, selector) {
140
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
141
- const fnArtifact = artifact && await this.#findFunctionArtifactBySelector(artifact, selector);
142
- return fnArtifact && getFunctionDebugMetadata(artifact, fnArtifact);
143
- }
144
- async getPublicFunctionDebugMetadata(contractAddress) {
145
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
146
- const fnArtifact = artifact && artifact.functions.find((fn)=>fn.functionType === FunctionType.PUBLIC);
147
- return fnArtifact && getFunctionDebugMetadata(artifact, fnArtifact);
148
- }
149
- /**
150
- * Retrieve the function membership witness for the given contract class and function selector.
151
- * The function membership witness represents a proof that the function belongs to the specified contract.
152
- * Throws an error if the contract address or function selector is unknown.
153
- *
154
- * @param contractClassId - The id of the class.
155
- * @param selector - The function selector.
156
- * @returns A promise that resolves with the MembershipWitness instance for the specified contract's function.
157
- */ async getFunctionMembershipWitness(contractClassId, selector) {
158
- const tree = await this.#getPrivateFunctionTreeForClassId(contractClassId);
159
- return tree?.getFunctionMembershipWitness(selector);
160
- }
161
- async getDebugContractName(contractAddress) {
162
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
163
- return artifact?.name;
164
- }
165
- async getDebugFunctionName(contractAddress, selector) {
166
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
167
- const fnArtifact = artifact && await this.#findFunctionAbiBySelector(artifact, selector);
168
- return `${artifact?.name ?? contractAddress}:${fnArtifact?.name ?? selector}`;
169
- }
170
- async #findFunctionArtifactBySelector(artifact, selector) {
171
- const functions = artifact.functions;
172
- for(let i = 0; i < functions.length; i++){
173
- const fn = functions[i];
174
- const fnSelector = await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters);
175
- if (fnSelector.equals(selector)) {
176
- return fn;
177
- }
178
- }
179
- }
180
- async #findFunctionAbiBySelector(artifact, selector) {
181
- const functions = [
182
- ...artifact.functions,
183
- ...artifact.nonDispatchPublicFunctions ?? []
184
- ];
185
- for(let i = 0; i < functions.length; i++){
186
- const fn = functions[i];
187
- const fnSelector = await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters);
188
- if (fnSelector.equals(selector)) {
189
- return fn;
190
- }
191
- }
192
- }
193
- }
@@ -1,2 +0,0 @@
1
- export { ContractDataProvider } from './contract_data_provider.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL2NvbnRyYWN0X2RhdGFfcHJvdmlkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUMifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/contract_data_provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -1 +0,0 @@
1
- export { ContractDataProvider } from './contract_data_provider.js';
@@ -1 +0,0 @@
1
- {"version":3,"file":"private_functions_tree.d.ts","sourceRoot":"","sources":["../../../src/storage/contract_data_provider/private_functions_tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAmB,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AAQ1F;;;;;GAKG;AACH,qBAAa,oBAAoB;IAGX,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAFrD,OAAO,CAAC,IAAI,CAAC,CAAa;IAE1B,OAAO,eAAqE;IAE5E,OAAa,MAAM,CAAC,QAAQ,EAAE,gBAAgB,iCAO7C;IAED;;;;;;;;OAQG;IACU,4BAA4B,CACvC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAezD;YAEa,OAAO;CAMtB"}
@@ -1,3 +0,0 @@
1
- export { NoteDao } from '@aztec/stdlib/note';
2
- export { NoteDataProvider } from './note_data_provider.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL25vdGVfZGF0YV9wcm92aWRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUMifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/note_data_provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { NoteDao } from '@aztec/stdlib/note';
2
- export { NoteDataProvider } from './note_data_provider.js';
@@ -1,83 +0,0 @@
1
- import type { Fr } from '@aztec/foundation/fields';
2
- import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- import type { InBlock } from '@aztec/stdlib/block';
5
- import { type NotesFilter } from '@aztec/stdlib/note';
6
- import { NoteDao } from '@aztec/stdlib/note';
7
- /**
8
- * NoteDataProvider manages the storage and retrieval of notes.
9
- *
10
- * Notes can be active or nullified. This class processes new notes, nullifications,
11
- * and performs rollback handling in the case of a reorg.
12
- **/
13
- export declare class NoteDataProvider {
14
- #private;
15
- private constructor();
16
- /**
17
- * Creates and initializes a new NoteDataProvider instance.
18
- *
19
- * This factory method creates a NoteDataProvider and restores any existing
20
- * scope-specific indexes from the database.
21
- *
22
- * @param store - The key-value store to use for persistence
23
- * @returns Promise resolving to a fully initialized NoteDataProvider instance
24
- */
25
- static create(store: AztecAsyncKVStore): Promise<NoteDataProvider>;
26
- /**
27
- * Adds a new scope to the note data provider.
28
- *
29
- * Scopes provide privacy isolation by creating separate indexes for each user.
30
- * Each scope gets its own set of indexes for efficient note retrieval by various criteria.
31
- *
32
- * @param scope - The AztecAddress representing the scope/user to add
33
- * @returns Promise resolving to true if scope was added, false if it already existed
34
- */
35
- addScope(scope: AztecAddress): Promise<boolean>;
36
- /**
37
- * Adds multiple notes to the data provider under the specified scope.
38
- *
39
- * Notes are stored using their index from the notes hash tree as the key, which provides
40
- * uniqueness and maintains creation order. Each note is indexed by multiple criteria
41
- * for efficient retrieval.
42
- *
43
- * @param notes - Notes to store
44
- * @param scope - The scope (user/account) under which to store the notes
45
- */
46
- addNotes(notes: NoteDao[], scope: AztecAddress): Promise<void>;
47
- /**
48
- * Synchronizes notes and nullifiers to a specific block number.
49
- *
50
- * This method ensures that the state of notes and nullifiers is consistent with the
51
- * specified block number. It restores any notes that were nullified after the given block
52
- * and deletes any active notes created after that block.
53
- *
54
- * @param blockNumber - The new chain tip after a reorg
55
- * @param synchedBlockNumber - The block number up to which PXE managed to sync before the reorg happened.
56
- */
57
- rollbackNotesAndNullifiers(blockNumber: number, synchedBlockNumber: number): Promise<void>;
58
- /**
59
- * Retrieves notes based on the provided filter criteria.
60
- *
61
- * This method queries both active and optionally nullified notes based on the filter
62
- * parameters.
63
- *
64
- * @param filter - Filter criteria including contractAddress (required), and optional
65
- * storageSlot, status, scopes and siloedNullifier.
66
- * @returns Promise resolving to array of NoteDao objects matching the filter
67
- * @throws If filtering by an empty scopes array. Scopes have to be set to undefined or to a non-empty array.
68
- */
69
- getNotes(filter: NotesFilter): Promise<NoteDao[]>;
70
- /**
71
- * Transitions notes from "active" to "nullified" state.
72
- *
73
- * This operation processes a batch of nullifiers to mark the corresponding notes
74
- * as spent/nullified. The operation is atomic - if any nullifier is not found,
75
- * the entire operation fails and no notes are modified.
76
- *
77
- * @param nullifiers - Array of nullifiers with their block numbers to process
78
- * @returns Promise resolving to array of nullified NoteDao objects
79
- * @throws Error if any nullifier is not found in the active notes
80
- */
81
- applyNullifiers(nullifiers: InBlock<Fr>[]): Promise<NoteDao[]>;
82
- }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZV9kYXRhX3Byb3ZpZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmFnZS9ub3RlX2RhdGFfcHJvdmlkZXIvbm90ZV9kYXRhX3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRW5ELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFxQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQWMsS0FBSyxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFN0M7Ozs7O0lBS0k7QUFDSixxQkFBYSxnQkFBZ0I7O0lBaUIzQixPQUFPLGVBZ0JOO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxPQUFvQixNQUFNLENBQUMsS0FBSyxFQUFFLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQU85RTtJQUVEOzs7Ozs7OztPQVFHO0lBQ1UsUUFBUSxDQUFDLEtBQUssRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVkzRDtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBZ0I3RDtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNVLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHdEc7SUF1RkQ7Ozs7Ozs7Ozs7T0FVRztJQUNHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQTRGdEQ7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsZUFBZSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0E4RDdEO0NBQ0YifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"note_data_provider.d.ts","sourceRoot":"","sources":["../../../src/storage/note_data_provider/note_data_provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAqC,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C;;;;;IAKI;AACJ,qBAAa,gBAAgB;;IAiB3B,OAAO,eAgBN;IAED;;;;;;;;OAQG;IACH,OAAoB,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAO9E;IAED;;;;;;;;OAQG;IACU,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAY3D;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB7D;IAED;;;;;;;;;OASG;IACU,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtG;IAuFD;;;;;;;;;;OAUG;IACG,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CA4FtD;IAED;;;;;;;;;;OAUG;IACH,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CA8D7D;CACF"}
@@ -1,311 +0,0 @@
1
- import { toBufferBE } from '@aztec/foundation/bigint-buffer';
2
- import { toArray } from '@aztec/foundation/iterable';
3
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- import { NoteStatus } from '@aztec/stdlib/note';
5
- import { NoteDao } from '@aztec/stdlib/note';
6
- /**
7
- * NoteDataProvider manages the storage and retrieval of notes.
8
- *
9
- * Notes can be active or nullified. This class processes new notes, nullifications,
10
- * and performs rollback handling in the case of a reorg.
11
- **/ export class NoteDataProvider {
12
- #store;
13
- #notes;
14
- #nullifiedNotes;
15
- #nullifierToNoteId;
16
- #nullifiersByBlockNumber;
17
- #nullifiedNotesToScope;
18
- #nullifiedNotesByContract;
19
- #nullifiedNotesByStorageSlot;
20
- #nullifiedNotesByNullifier;
21
- #scopes;
22
- #notesToScope;
23
- #notesByContractAndScope;
24
- #notesByStorageSlotAndScope;
25
- constructor(store){
26
- this.#store = store;
27
- this.#notes = store.openMap('notes');
28
- this.#nullifiedNotes = store.openMap('nullified_notes');
29
- this.#nullifierToNoteId = store.openMap('nullifier_to_note');
30
- this.#nullifiersByBlockNumber = store.openMultiMap('nullifier_to_block_number');
31
- this.#nullifiedNotesToScope = store.openMultiMap('nullified_notes_to_scope');
32
- this.#nullifiedNotesByContract = store.openMultiMap('nullified_notes_by_contract');
33
- this.#nullifiedNotesByStorageSlot = store.openMultiMap('nullified_notes_by_storage_slot');
34
- this.#nullifiedNotesByNullifier = store.openMap('nullified_notes_by_nullifier');
35
- this.#scopes = store.openMap('scopes');
36
- this.#notesToScope = store.openMultiMap('notes_to_scope');
37
- this.#notesByContractAndScope = new Map();
38
- this.#notesByStorageSlotAndScope = new Map();
39
- }
40
- /**
41
- * Creates and initializes a new NoteDataProvider instance.
42
- *
43
- * This factory method creates a NoteDataProvider and restores any existing
44
- * scope-specific indexes from the database.
45
- *
46
- * @param store - The key-value store to use for persistence
47
- * @returns Promise resolving to a fully initialized NoteDataProvider instance
48
- */ static async create(store) {
49
- const pxeDB = new NoteDataProvider(store);
50
- for await (const scope of pxeDB.#scopes.keysAsync()){
51
- pxeDB.#notesByContractAndScope.set(scope, store.openMultiMap(`${scope}:notes_by_contract`));
52
- pxeDB.#notesByStorageSlotAndScope.set(scope, store.openMultiMap(`${scope}:notes_by_storage_slot`));
53
- }
54
- return pxeDB;
55
- }
56
- /**
57
- * Adds a new scope to the note data provider.
58
- *
59
- * Scopes provide privacy isolation by creating separate indexes for each user.
60
- * Each scope gets its own set of indexes for efficient note retrieval by various criteria.
61
- *
62
- * @param scope - The AztecAddress representing the scope/user to add
63
- * @returns Promise resolving to true if scope was added, false if it already existed
64
- */ async addScope(scope) {
65
- const scopeString = scope.toString();
66
- if (await this.#scopes.hasAsync(scopeString)) {
67
- return false;
68
- }
69
- await this.#scopes.set(scopeString, true);
70
- this.#notesByContractAndScope.set(scopeString, this.#store.openMultiMap(`${scopeString}:notes_by_contract`));
71
- this.#notesByStorageSlotAndScope.set(scopeString, this.#store.openMultiMap(`${scopeString}:notes_by_storage_slot`));
72
- return true;
73
- }
74
- /**
75
- * Adds multiple notes to the data provider under the specified scope.
76
- *
77
- * Notes are stored using their index from the notes hash tree as the key, which provides
78
- * uniqueness and maintains creation order. Each note is indexed by multiple criteria
79
- * for efficient retrieval.
80
- *
81
- * @param notes - Notes to store
82
- * @param scope - The scope (user/account) under which to store the notes
83
- */ addNotes(notes, scope) {
84
- return this.#store.transactionAsync(async ()=>{
85
- if (!await this.#scopes.hasAsync(scope.toString())) {
86
- await this.addScope(scope);
87
- }
88
- for (const dao of notes){
89
- const noteIndex = toBufferBE(dao.index, 32).toString('hex');
90
- await this.#notes.set(noteIndex, dao.toBuffer());
91
- await this.#notesToScope.set(noteIndex, scope.toString());
92
- await this.#nullifierToNoteId.set(dao.siloedNullifier.toString(), noteIndex);
93
- await this.#notesByContractAndScope.get(scope.toString()).set(dao.contractAddress.toString(), noteIndex);
94
- await this.#notesByStorageSlotAndScope.get(scope.toString()).set(dao.storageSlot.toString(), noteIndex);
95
- }
96
- });
97
- }
98
- /**
99
- * Synchronizes notes and nullifiers to a specific block number.
100
- *
101
- * This method ensures that the state of notes and nullifiers is consistent with the
102
- * specified block number. It restores any notes that were nullified after the given block
103
- * and deletes any active notes created after that block.
104
- *
105
- * @param blockNumber - The new chain tip after a reorg
106
- * @param synchedBlockNumber - The block number up to which PXE managed to sync before the reorg happened.
107
- */ async rollbackNotesAndNullifiers(blockNumber, synchedBlockNumber) {
108
- await this.#rewindNullifiersAfterBlock(blockNumber, synchedBlockNumber);
109
- await this.#deleteActiveNotesAfterBlock(blockNumber);
110
- }
111
- /**
112
- * Deletes (removes) all active notes created after the specified block number.
113
- *
114
- * Permanently delete notes from the active notes store, e.g. during a reorg.
115
- * Note: This only affects #notes (active notes), not #nullifiedNotes.
116
- *
117
- * @param blockNumber - Notes created after this block number will be deleted
118
- */ #deleteActiveNotesAfterBlock(blockNumber) {
119
- return this.#store.transactionAsync(async ()=>{
120
- const notes = await toArray(this.#notes.valuesAsync());
121
- for (const note of notes){
122
- const noteDao = NoteDao.fromBuffer(note);
123
- if (noteDao.l2BlockNumber > blockNumber) {
124
- const noteIndex = toBufferBE(noteDao.index, 32).toString('hex');
125
- await this.#notes.delete(noteIndex);
126
- await this.#notesToScope.delete(noteIndex);
127
- await this.#nullifierToNoteId.delete(noteDao.siloedNullifier.toString());
128
- const scopes = await toArray(this.#scopes.keysAsync());
129
- for (const scope of scopes){
130
- await this.#notesByContractAndScope.get(scope).deleteValue(noteDao.contractAddress.toString(), noteIndex);
131
- await this.#notesByStorageSlotAndScope.get(scope).deleteValue(noteDao.storageSlot.toString(), noteIndex);
132
- }
133
- }
134
- }
135
- });
136
- }
137
- /**
138
- * Rewinds nullifications after a given block number.
139
- *
140
- * This operation "unnullifies" notes, rolling back nullifications that occurred
141
- * in orphaned blocks, e.g. during a reorg. The notes are restored to the
142
- * active notes store and removed from the nullified store.
143
- *
144
- * @param blockNumber - Revert nullifications that occurred after this block
145
- * @param synchedBlockNumber - Upper bound for the block range to process
146
- */ async #rewindNullifiersAfterBlock(blockNumber, synchedBlockNumber) {
147
- await this.#store.transactionAsync(async ()=>{
148
- const nullifiersToUndo = [];
149
- const currentBlockNumber = blockNumber + 1;
150
- for(let i = currentBlockNumber; i <= synchedBlockNumber; i++){
151
- nullifiersToUndo.push(...await toArray(this.#nullifiersByBlockNumber.getValuesAsync(i)));
152
- }
153
- const notesIndexesToReinsert = await Promise.all(nullifiersToUndo.map((nullifier)=>this.#nullifiedNotesByNullifier.getAsync(nullifier)));
154
- const notNullNoteIndexes = notesIndexesToReinsert.filter((noteIndex)=>noteIndex != undefined);
155
- const nullifiedNoteBuffers = await Promise.all(notNullNoteIndexes.map((noteIndex)=>this.#nullifiedNotes.getAsync(noteIndex)));
156
- const noteDaos = nullifiedNoteBuffers.filter((buffer)=>buffer != undefined).map((buffer)=>NoteDao.fromBuffer(buffer));
157
- for (const dao of noteDaos){
158
- const noteIndex = toBufferBE(dao.index, 32).toString('hex');
159
- await this.#notes.set(noteIndex, dao.toBuffer());
160
- await this.#nullifierToNoteId.set(dao.siloedNullifier.toString(), noteIndex);
161
- const scopes = await toArray(this.#nullifiedNotesToScope.getValuesAsync(noteIndex));
162
- if (scopes.length === 0) {
163
- // We should never run into this error because notes always have a scope assigned to them - either on initial
164
- // insertion via `addNotes` or when removing their nullifiers.
165
- throw new Error(`No scopes found for nullified note with index ${noteIndex}`);
166
- }
167
- for (const scope of scopes){
168
- await this.#notesByContractAndScope.get(scope.toString()).set(dao.contractAddress.toString(), noteIndex);
169
- await this.#notesByStorageSlotAndScope.get(scope.toString()).set(dao.storageSlot.toString(), noteIndex);
170
- await this.#notesToScope.set(noteIndex, scope);
171
- }
172
- await this.#nullifiedNotes.delete(noteIndex);
173
- await this.#nullifiedNotesToScope.delete(noteIndex);
174
- await this.#nullifiersByBlockNumber.deleteValue(dao.l2BlockNumber, dao.siloedNullifier.toString());
175
- await this.#nullifiedNotesByContract.deleteValue(dao.contractAddress.toString(), noteIndex);
176
- await this.#nullifiedNotesByStorageSlot.deleteValue(dao.storageSlot.toString(), noteIndex);
177
- await this.#nullifiedNotesByNullifier.delete(dao.siloedNullifier.toString());
178
- }
179
- });
180
- }
181
- /**
182
- * Retrieves notes based on the provided filter criteria.
183
- *
184
- * This method queries both active and optionally nullified notes based on the filter
185
- * parameters.
186
- *
187
- * @param filter - Filter criteria including contractAddress (required), and optional
188
- * storageSlot, status, scopes and siloedNullifier.
189
- * @returns Promise resolving to array of NoteDao objects matching the filter
190
- * @throws If filtering by an empty scopes array. Scopes have to be set to undefined or to a non-empty array.
191
- */ async getNotes(filter) {
192
- filter.status = filter.status ?? NoteStatus.ACTIVE;
193
- // throw early if scopes is an empty array
194
- if (filter.scopes !== undefined && filter.scopes.length === 0) {
195
- throw new Error('Trying to get notes with an empty scopes array. Scopes have to be set to undefined if intending on not filtering by scopes.');
196
- }
197
- const candidateNoteSources = [];
198
- filter.scopes ??= (await toArray(this.#scopes.keysAsync())).map((addressString)=>AztecAddress.fromString(addressString));
199
- const activeNoteIdsPerScope = [];
200
- for (const scope of new Set(filter.scopes)){
201
- const formattedScopeString = scope.toString();
202
- if (!await this.#scopes.hasAsync(formattedScopeString)) {
203
- throw new Error('Trying to get incoming notes of a scope that is not in the PXE database');
204
- }
205
- activeNoteIdsPerScope.push(filter.storageSlot ? await toArray(this.#notesByStorageSlotAndScope.get(formattedScopeString).getValuesAsync(filter.storageSlot.toString())) : await toArray(this.#notesByContractAndScope.get(formattedScopeString).getValuesAsync(filter.contractAddress.toString())));
206
- }
207
- candidateNoteSources.push({
208
- ids: new Set(activeNoteIdsPerScope.flat()),
209
- notes: this.#notes
210
- });
211
- // If status is ACTIVE_OR_NULLIFIED we add nullified notes as candidates on top of the default active ones.
212
- if (filter.status === NoteStatus.ACTIVE_OR_NULLIFIED) {
213
- const nullifiedIds = filter.storageSlot ? await toArray(this.#nullifiedNotesByStorageSlot.getValuesAsync(filter.storageSlot.toString())) : await toArray(this.#nullifiedNotesByContract.getValuesAsync(filter.contractAddress.toString()));
214
- const setOfScopes = new Set(filter.scopes.map((s)=>s.toString()));
215
- const filteredNullifiedIds = new Set();
216
- for (const noteId of nullifiedIds){
217
- const scopeList = await toArray(this.#nullifiedNotesToScope.getValuesAsync(noteId));
218
- if (scopeList.some((scope)=>setOfScopes.has(scope))) {
219
- filteredNullifiedIds.add(noteId);
220
- }
221
- }
222
- if (filteredNullifiedIds.size > 0) {
223
- candidateNoteSources.push({
224
- ids: filteredNullifiedIds,
225
- notes: this.#nullifiedNotes
226
- });
227
- }
228
- }
229
- const result = [];
230
- for (const { ids, notes } of candidateNoteSources){
231
- for (const id of ids){
232
- const serializedNote = await notes.getAsync(id);
233
- if (!serializedNote) {
234
- continue;
235
- }
236
- const note = NoteDao.fromBuffer(serializedNote);
237
- if (!note.contractAddress.equals(filter.contractAddress)) {
238
- continue;
239
- }
240
- if (filter.storageSlot && !note.storageSlot.equals(filter.storageSlot)) {
241
- continue;
242
- }
243
- if (filter.siloedNullifier && !note.siloedNullifier.equals(filter.siloedNullifier)) {
244
- continue;
245
- }
246
- result.push(note);
247
- }
248
- }
249
- return result;
250
- }
251
- /**
252
- * Transitions notes from "active" to "nullified" state.
253
- *
254
- * This operation processes a batch of nullifiers to mark the corresponding notes
255
- * as spent/nullified. The operation is atomic - if any nullifier is not found,
256
- * the entire operation fails and no notes are modified.
257
- *
258
- * @param nullifiers - Array of nullifiers with their block numbers to process
259
- * @returns Promise resolving to array of nullified NoteDao objects
260
- * @throws Error if any nullifier is not found in the active notes
261
- */ applyNullifiers(nullifiers) {
262
- if (nullifiers.length === 0) {
263
- return Promise.resolve([]);
264
- }
265
- return this.#store.transactionAsync(async ()=>{
266
- const nullifiedNotes = [];
267
- for (const blockScopedNullifier of nullifiers){
268
- const { data: nullifier, l2BlockNumber: blockNumber } = blockScopedNullifier;
269
- const nullifierKey = nullifier.toString();
270
- const noteIndex = await this.#nullifierToNoteId.getAsync(nullifierKey);
271
- if (!noteIndex) {
272
- // Check if already nullified?
273
- const alreadyNullified = await this.#nullifiedNotesByNullifier.getAsync(nullifierKey);
274
- if (alreadyNullified) {
275
- throw new Error(`Nullifier already applied in applyNullifiers`);
276
- }
277
- throw new Error('Nullifier not found in applyNullifiers');
278
- }
279
- const noteBuffer = noteIndex ? await this.#notes.getAsync(noteIndex) : undefined;
280
- if (!noteBuffer) {
281
- throw new Error('Note not found in applyNullifiers');
282
- }
283
- const noteScopes = await toArray(this.#notesToScope.getValuesAsync(noteIndex));
284
- if (noteScopes.length === 0) {
285
- // We should never run into this error because notes always have a scope assigned to them - either on initial
286
- // insertion via `addNotes` or when removing their nullifiers.
287
- throw new Error('Note scopes are missing in applyNullifiers');
288
- }
289
- const note = NoteDao.fromBuffer(noteBuffer);
290
- nullifiedNotes.push(note);
291
- await this.#notes.delete(noteIndex);
292
- await this.#notesToScope.delete(noteIndex);
293
- const scopes = await toArray(this.#scopes.keysAsync());
294
- for (const scope of scopes){
295
- await this.#notesByContractAndScope.get(scope).deleteValue(note.contractAddress.toString(), noteIndex);
296
- await this.#notesByStorageSlotAndScope.get(scope).deleteValue(note.storageSlot.toString(), noteIndex);
297
- }
298
- for (const scope of noteScopes){
299
- await this.#nullifiedNotesToScope.set(noteIndex, scope);
300
- }
301
- await this.#nullifiedNotes.set(noteIndex, note.toBuffer());
302
- await this.#nullifiersByBlockNumber.set(blockNumber, nullifier.toString());
303
- await this.#nullifiedNotesByContract.set(note.contractAddress.toString(), noteIndex);
304
- await this.#nullifiedNotesByStorageSlot.set(note.storageSlot.toString(), noteIndex);
305
- await this.#nullifiedNotesByNullifier.set(nullifier.toString(), noteIndex);
306
- await this.#nullifierToNoteId.delete(nullifier.toString());
307
- }
308
- return nullifiedNotes;
309
- });
310
- }
311
- }