@aztec/pxe 0.0.1-commit.24de95ac → 0.0.1-commit.3469e52

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 (374) 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 +41 -0
  4. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  5. package/dest/{synchronizer/synchronizer.js → block_synchronizer/block_synchronizer.js} +36 -30
  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/config/package_info.js +1 -1
  14. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  15. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  16. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  17. package/dest/contract_function_simulator/contract_function_simulator.d.ts +44 -16
  18. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/contract_function_simulator.js +80 -37
  20. package/dest/contract_function_simulator/execution_note_cache.d.ts +25 -14
  21. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  22. package/dest/contract_function_simulator/execution_note_cache.js +59 -34
  23. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +2 -2
  24. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +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 +4 -3
  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 +5 -2
  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 +3 -3
  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 -4
  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 +12 -3
  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/index.d.ts +1 -1
  47. package/dest/contract_function_simulator/oracle/interfaces.d.ts +22 -15
  48. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  49. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +2 -2
  50. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  51. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
  52. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +14 -8
  53. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  54. package/dest/contract_function_simulator/oracle/note_packing_utils.js +16 -11
  55. package/dest/contract_function_simulator/oracle/oracle.d.ts +10 -9
  56. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  57. package/dest/contract_function_simulator/oracle/oracle.js +51 -33
  58. package/dest/contract_function_simulator/oracle/private_execution.d.ts +10 -15
  59. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  60. package/dest/contract_function_simulator/oracle/private_execution.js +19 -18
  61. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +29 -33
  62. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  63. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +46 -48
  64. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +65 -22
  65. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  66. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +163 -54
  67. package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
  68. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  69. package/dest/contract_function_simulator/pick_notes.js +1 -1
  70. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  71. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  72. package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
  73. package/dest/debug/pxe_debug_utils.d.ts +31 -0
  74. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  75. package/dest/debug/pxe_debug_utils.js +37 -0
  76. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  77. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  78. package/dest/entrypoints/client/bundle/index.js +0 -1
  79. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  80. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  81. package/dest/entrypoints/client/bundle/utils.js +13 -4
  82. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  83. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  84. package/dest/entrypoints/client/lazy/index.js +0 -1
  85. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  86. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  87. package/dest/entrypoints/client/lazy/utils.js +13 -4
  88. package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
  89. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  90. package/dest/entrypoints/server/index.d.ts +3 -2
  91. package/dest/entrypoints/server/index.d.ts.map +1 -1
  92. package/dest/entrypoints/server/index.js +2 -1
  93. package/dest/entrypoints/server/utils.d.ts +1 -1
  94. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  95. package/dest/entrypoints/server/utils.js +13 -20
  96. package/dest/error_enriching.d.ts +4 -4
  97. package/dest/error_enriching.d.ts.map +1 -1
  98. package/dest/error_enriching.js +6 -6
  99. package/dest/events/event_service.d.ts +16 -0
  100. package/dest/events/event_service.d.ts.map +1 -0
  101. package/dest/events/event_service.js +45 -0
  102. package/dest/events/index.d.ts +2 -0
  103. package/dest/events/index.d.ts.map +1 -0
  104. package/dest/events/index.js +1 -0
  105. package/dest/events/private_event_filter_validator.d.ts +9 -0
  106. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  107. package/dest/events/private_event_filter_validator.js +38 -0
  108. package/dest/job_coordinator/job_coordinator.d.ts +74 -0
  109. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  110. package/dest/job_coordinator/job_coordinator.js +93 -0
  111. package/dest/logs/log_service.d.ts +27 -0
  112. package/dest/logs/log_service.d.ts.map +1 -0
  113. package/dest/logs/log_service.js +122 -0
  114. package/dest/notes/index.d.ts +2 -0
  115. package/dest/notes/index.d.ts.map +1 -0
  116. package/dest/notes/index.js +1 -0
  117. package/dest/notes/note_service.d.ts +48 -0
  118. package/dest/notes/note_service.d.ts.map +1 -0
  119. package/dest/notes/note_service.js +147 -0
  120. package/dest/oracle_version.d.ts +3 -3
  121. package/dest/oracle_version.js +2 -2
  122. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +1 -1
  123. package/dest/private_kernel/hints/index.d.ts +2 -2
  124. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  125. package/dest/private_kernel/hints/index.js +1 -1
  126. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
  127. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  128. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +19 -13
  129. package/dest/private_kernel/index.d.ts +1 -1
  130. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  131. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  132. package/dest/private_kernel/private_kernel_execution_prover.js +15 -15
  133. package/dest/private_kernel/private_kernel_oracle.d.ts +26 -29
  134. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  135. package/dest/private_kernel/private_kernel_oracle.js +90 -2
  136. package/dest/pxe.d.ts +54 -83
  137. package/dest/pxe.d.ts.map +1 -1
  138. package/dest/pxe.js +189 -240
  139. package/dest/storage/address_store/address_store.d.ts +11 -0
  140. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  141. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +1 -1
  142. package/dest/storage/address_store/index.d.ts +2 -0
  143. package/dest/storage/address_store/index.d.ts.map +1 -0
  144. package/dest/storage/address_store/index.js +1 -0
  145. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -0
  146. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  147. package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +2 -9
  148. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  149. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  150. package/dest/storage/anchor_block_store/index.js +1 -0
  151. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  152. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  153. package/dest/storage/capsule_store/capsule_store.js +255 -0
  154. package/dest/storage/capsule_store/index.d.ts +2 -0
  155. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  156. package/dest/storage/capsule_store/index.js +1 -0
  157. package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +8 -15
  158. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  159. package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +46 -15
  160. package/dest/storage/contract_store/index.d.ts +2 -0
  161. package/dest/storage/contract_store/index.d.ts.map +1 -0
  162. package/dest/storage/contract_store/index.js +1 -0
  163. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  164. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  165. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
  166. package/dest/storage/index.d.ts +8 -8
  167. package/dest/storage/index.d.ts.map +1 -1
  168. package/dest/storage/index.js +7 -7
  169. package/dest/storage/metadata.d.ts +1 -1
  170. package/dest/storage/note_store/index.d.ts +3 -0
  171. package/dest/storage/note_store/index.d.ts.map +1 -0
  172. package/dest/storage/note_store/index.js +2 -0
  173. package/dest/storage/{note_data_provider/note_data_provider.d.ts → note_store/note_store.d.ts} +19 -17
  174. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  175. package/dest/storage/{note_data_provider/note_data_provider.js → note_store/note_store.js} +115 -106
  176. package/dest/storage/private_event_store/private_event_store.d.ts +78 -0
  177. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  178. package/dest/storage/private_event_store/private_event_store.js +222 -0
  179. package/dest/storage/tagging_store/index.d.ts +4 -0
  180. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  181. package/dest/storage/tagging_store/index.js +3 -0
  182. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  183. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  184. package/dest/storage/tagging_store/recipient_tagging_store.js +99 -0
  185. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  186. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  187. package/dest/storage/tagging_store/sender_address_book_store.js +30 -0
  188. package/dest/storage/tagging_store/sender_tagging_store.d.ts +77 -0
  189. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  190. package/dest/storage/tagging_store/sender_tagging_store.js +278 -0
  191. package/dest/tagging/constants.d.ts +2 -2
  192. package/dest/tagging/constants.d.ts.map +1 -1
  193. package/dest/tagging/constants.js +10 -2
  194. package/dest/tagging/index.d.ts +15 -6
  195. package/dest/tagging/index.d.ts.map +1 -1
  196. package/dest/tagging/index.js +14 -5
  197. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +14 -0
  198. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
  199. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
  200. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  201. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  202. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  203. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +14 -0
  204. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
  205. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +29 -0
  206. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +20 -0
  207. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  208. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
  209. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
  210. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  211. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +32 -0
  212. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +20 -0
  213. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  214. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +57 -0
  215. package/dest/tree_membership/tree_membership_service.d.ts +50 -0
  216. package/dest/tree_membership/tree_membership_service.d.ts.map +1 -0
  217. package/dest/tree_membership/tree_membership_service.js +75 -0
  218. package/package.json +20 -19
  219. package/src/bin/check_oracle_version.ts +130 -20
  220. package/src/{synchronizer/synchronizer.ts → block_synchronizer/block_synchronizer.ts} +45 -30
  221. package/src/block_synchronizer/index.ts +1 -0
  222. package/src/config/index.ts +10 -25
  223. package/src/config/package_info.ts +1 -1
  224. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  225. package/src/contract_function_simulator/contract_function_simulator.ts +132 -39
  226. package/src/contract_function_simulator/execution_note_cache.ts +58 -28
  227. package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
  228. package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
  229. package/src/contract_function_simulator/index.ts +1 -1
  230. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -1
  231. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
  232. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -2
  233. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +14 -2
  234. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  235. package/src/contract_function_simulator/oracle/interfaces.ts +29 -13
  236. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
  237. package/src/contract_function_simulator/oracle/note_packing_utils.ts +30 -14
  238. package/src/contract_function_simulator/oracle/oracle.ts +62 -30
  239. package/src/contract_function_simulator/oracle/private_execution.ts +22 -29
  240. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +111 -59
  241. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +238 -56
  242. package/src/contract_function_simulator/pick_notes.ts +1 -1
  243. package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
  244. package/src/debug/pxe_debug_utils.ts +48 -0
  245. package/src/entrypoints/client/bundle/index.ts +0 -1
  246. package/src/entrypoints/client/bundle/utils.ts +10 -4
  247. package/src/entrypoints/client/lazy/index.ts +0 -1
  248. package/src/entrypoints/client/lazy/utils.ts +10 -5
  249. package/src/entrypoints/pxe_creation_options.ts +4 -1
  250. package/src/entrypoints/server/index.ts +2 -1
  251. package/src/entrypoints/server/utils.ts +13 -31
  252. package/src/error_enriching.ts +7 -15
  253. package/src/events/event_service.ts +73 -0
  254. package/src/events/index.ts +1 -0
  255. package/src/events/private_event_filter_validator.ts +46 -0
  256. package/src/job_coordinator/job_coordinator.ts +149 -0
  257. package/src/logs/log_service.ts +204 -0
  258. package/src/notes/index.ts +1 -0
  259. package/src/notes/note_service.ts +194 -0
  260. package/src/oracle_version.ts +2 -2
  261. package/src/private_kernel/hints/index.ts +1 -1
  262. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +38 -31
  263. package/src/private_kernel/private_kernel_execution_prover.ts +15 -21
  264. package/src/private_kernel/private_kernel_oracle.ts +118 -37
  265. package/src/pxe.ts +238 -312
  266. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +1 -1
  267. package/src/storage/address_store/index.ts +1 -0
  268. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +2 -11
  269. package/src/storage/anchor_block_store/index.ts +1 -0
  270. package/src/storage/capsule_store/capsule_store.ts +315 -0
  271. package/src/storage/capsule_store/index.ts +1 -0
  272. package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +65 -20
  273. package/src/storage/contract_store/index.ts +1 -0
  274. package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
  275. package/src/storage/index.ts +7 -7
  276. package/src/storage/note_store/index.ts +2 -0
  277. package/src/storage/{note_data_provider/note_data_provider.ts → note_store/note_store.ts} +131 -109
  278. package/src/storage/private_event_store/private_event_store.ts +324 -0
  279. package/src/storage/tagging_store/index.ts +3 -0
  280. package/src/storage/tagging_store/recipient_tagging_store.ts +129 -0
  281. package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
  282. package/src/storage/tagging_store/sender_tagging_store.ts +345 -0
  283. package/src/tagging/constants.ts +10 -2
  284. package/src/tagging/index.ts +17 -5
  285. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +133 -0
  286. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  287. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +43 -0
  288. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +97 -0
  289. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +48 -0
  290. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +75 -0
  291. package/src/tree_membership/tree_membership_service.ts +97 -0
  292. package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -274
  293. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
  294. package/dest/contract_function_simulator/execution_data_provider.js +0 -14
  295. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  296. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  297. package/dest/contract_function_simulator/proxied_node.js +0 -27
  298. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
  299. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
  300. package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -701
  301. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  302. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  303. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -45
  304. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  305. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  306. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  307. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  308. package/dest/storage/address_data_provider/index.d.ts +0 -2
  309. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  310. package/dest/storage/address_data_provider/index.js +0 -1
  311. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
  312. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  313. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -118
  314. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  315. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  316. package/dest/storage/capsule_data_provider/index.js +0 -1
  317. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  318. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  319. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  320. package/dest/storage/contract_data_provider/index.js +0 -1
  321. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  322. package/dest/storage/note_data_provider/index.d.ts +0 -3
  323. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  324. package/dest/storage/note_data_provider/index.js +0 -2
  325. package/dest/storage/note_data_provider/note_dao.d.ts +0 -100
  326. package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
  327. package/dest/storage/note_data_provider/note_dao.js +0 -102
  328. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  329. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -43
  330. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  331. package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -104
  332. package/dest/storage/sync_data_provider/index.d.ts +0 -2
  333. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  334. package/dest/storage/sync_data_provider/index.js +0 -1
  335. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -10
  336. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  337. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  338. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  339. package/dest/storage/tagging_data_provider/index.js +0 -1
  340. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
  341. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  342. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
  343. package/dest/synchronizer/index.d.ts +0 -2
  344. package/dest/synchronizer/index.d.ts.map +0 -1
  345. package/dest/synchronizer/index.js +0 -1
  346. package/dest/synchronizer/synchronizer.d.ts +0 -35
  347. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  348. package/dest/tagging/siloed_tag.d.ts +0 -14
  349. package/dest/tagging/siloed_tag.d.ts.map +0 -1
  350. package/dest/tagging/siloed_tag.js +0 -20
  351. package/dest/tagging/tag.d.ts +0 -12
  352. package/dest/tagging/tag.d.ts.map +0 -1
  353. package/dest/tagging/tag.js +0 -17
  354. package/dest/tagging/utils.d.ts +0 -18
  355. package/dest/tagging/utils.d.ts.map +0 -1
  356. package/dest/tagging/utils.js +0 -24
  357. package/src/contract_function_simulator/execution_data_provider.ts +0 -343
  358. package/src/contract_function_simulator/proxied_node.ts +0 -33
  359. package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1019
  360. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
  361. package/src/storage/address_data_provider/index.ts +0 -1
  362. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -147
  363. package/src/storage/capsule_data_provider/index.ts +0 -1
  364. package/src/storage/contract_data_provider/index.ts +0 -1
  365. package/src/storage/note_data_provider/index.ts +0 -2
  366. package/src/storage/note_data_provider/note_dao.ts +0 -154
  367. package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -148
  368. package/src/storage/sync_data_provider/index.ts +0 -1
  369. package/src/storage/tagging_data_provider/index.ts +0 -1
  370. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
  371. package/src/synchronizer/index.ts +0 -1
  372. package/src/tagging/siloed_tag.ts +0 -22
  373. package/src/tagging/tag.ts +0 -16
  374. package/src/tagging/utils.ts +0 -31
@@ -1,47 +1,54 @@
1
- import { toBufferBE } from '@aztec/foundation/bigint-buffer';
2
- import type { Fr } from '@aztec/foundation/fields';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
3
2
  import { toArray } from '@aztec/foundation/iterable';
4
3
  import type { AztecAsyncKVStore, AztecAsyncMap, AztecAsyncMultiMap } from '@aztec/kv-store';
5
4
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
6
- import type { InBlock } from '@aztec/stdlib/block';
5
+ import type { DataInBlock } from '@aztec/stdlib/block';
7
6
  import { NoteStatus, type NotesFilter } from '@aztec/stdlib/note';
8
-
9
- import { NoteDao } from './note_dao.js';
7
+ import { NoteDao } from '@aztec/stdlib/note';
10
8
 
11
9
  /**
12
- * NoteDataProvider manages the storage and retrieval of notes.
10
+ * NoteStore manages the storage and retrieval of notes.
13
11
  *
14
12
  * Notes can be active or nullified. This class processes new notes, nullifications,
15
13
  * and performs rollback handling in the case of a reorg.
16
14
  **/
17
- export class NoteDataProvider {
15
+ export class NoteStore {
18
16
  #store: AztecAsyncKVStore;
17
+
18
+ // Note that we use the siloedNullifier as the note id in the store as it's guaranteed to be unique.
19
+
20
+ /** noteId (siloedNullifier) -> NoteDao (serialized) */
19
21
  #notes: AztecAsyncMap<string, Buffer>;
22
+ /** noteId (siloedNullifier) -> NoteDao (serialized) */
20
23
  #nullifiedNotes: AztecAsyncMap<string, Buffer>;
21
- #nullifierToNoteId: AztecAsyncMap<string, string>;
24
+ /** blockNumber -> siloedNullifier */
22
25
  #nullifiersByBlockNumber: AztecAsyncMultiMap<number, string>;
23
26
 
27
+ /** noteId (siloedNullifier) -> scope */
24
28
  #nullifiedNotesToScope: AztecAsyncMultiMap<string, string>;
29
+ /** contractAddress -> noteId (siloedNullifier) */
25
30
  #nullifiedNotesByContract: AztecAsyncMultiMap<string, string>;
31
+ /** storageSlot -> noteId (siloedNullifier) */
26
32
  #nullifiedNotesByStorageSlot: AztecAsyncMultiMap<string, string>;
27
- #nullifiedNotesByNullifier: AztecAsyncMap<string, string>;
28
33
 
34
+ /** scope (AztecAddress) -> true */
29
35
  #scopes: AztecAsyncMap<string, true>;
36
+ /** noteId (siloedNullifier) -> scope */
30
37
  #notesToScope: AztecAsyncMultiMap<string, string>;
38
+ /** scope -> MultiMap(contractAddress -> noteId) */
31
39
  #notesByContractAndScope: Map<string, AztecAsyncMultiMap<string, string>>;
40
+ /** scope -> MultiMap(storageSlot -> noteId) */
32
41
  #notesByStorageSlotAndScope: Map<string, AztecAsyncMultiMap<string, string>>;
33
42
 
34
43
  private constructor(store: AztecAsyncKVStore) {
35
44
  this.#store = store;
36
45
  this.#notes = store.openMap('notes');
37
46
  this.#nullifiedNotes = store.openMap('nullified_notes');
38
- this.#nullifierToNoteId = store.openMap('nullifier_to_note');
39
47
  this.#nullifiersByBlockNumber = store.openMultiMap('nullifier_to_block_number');
40
48
 
41
49
  this.#nullifiedNotesToScope = store.openMultiMap('nullified_notes_to_scope');
42
50
  this.#nullifiedNotesByContract = store.openMultiMap('nullified_notes_by_contract');
43
51
  this.#nullifiedNotesByStorageSlot = store.openMultiMap('nullified_notes_by_storage_slot');
44
- this.#nullifiedNotesByNullifier = store.openMap('nullified_notes_by_nullifier');
45
52
 
46
53
  this.#scopes = store.openMap('scopes');
47
54
  this.#notesToScope = store.openMultiMap('notes_to_scope');
@@ -50,16 +57,16 @@ export class NoteDataProvider {
50
57
  }
51
58
 
52
59
  /**
53
- * Creates and initializes a new NoteDataProvider instance.
60
+ * Creates and initializes a new NoteStore instance.
54
61
  *
55
- * This factory method creates a NoteDataProvider and restores any existing
62
+ * This factory method creates a NoteStore and restores any existing
56
63
  * scope-specific indexes from the database.
57
64
  *
58
65
  * @param store - The key-value store to use for persistence
59
- * @returns Promise resolving to a fully initialized NoteDataProvider instance
66
+ * @returns Promise resolving to a fully initialized NoteStore instance
60
67
  */
61
- public static async create(store: AztecAsyncKVStore): Promise<NoteDataProvider> {
62
- const pxeDB = new NoteDataProvider(store);
68
+ public static async create(store: AztecAsyncKVStore): Promise<NoteStore> {
69
+ const pxeDB = new NoteStore(store);
63
70
  for await (const scope of pxeDB.#scopes.keysAsync()) {
64
71
  pxeDB.#notesByContractAndScope.set(scope, store.openMultiMap(`${scope}:notes_by_contract`));
65
72
  pxeDB.#notesByStorageSlotAndScope.set(scope, store.openMultiMap(`${scope}:notes_by_storage_slot`));
@@ -93,9 +100,8 @@ export class NoteDataProvider {
93
100
  /**
94
101
  * Adds multiple notes to the data provider under the specified scope.
95
102
  *
96
- * Notes are stored using their index from the notes hash tree as the key, which provides
97
- * uniqueness and maintains creation order. Each note is indexed by multiple criteria
98
- * for efficient retrieval.
103
+ * Notes are stored using their siloedNullifier as the key, which provides uniqueness. Each note is indexed
104
+ * by multiple criteria for efficient retrieval.
99
105
  *
100
106
  * @param notes - Notes to store
101
107
  * @param scope - The scope (user/account) under which to store the notes
@@ -107,13 +113,12 @@ export class NoteDataProvider {
107
113
  }
108
114
 
109
115
  for (const dao of notes) {
110
- const noteIndex = toBufferBE(dao.index, 32).toString('hex');
111
- await this.#notes.set(noteIndex, dao.toBuffer());
112
- await this.#notesToScope.set(noteIndex, scope.toString());
113
- await this.#nullifierToNoteId.set(dao.siloedNullifier.toString(), noteIndex);
116
+ const noteId = dao.siloedNullifier.toString();
117
+ await this.#notes.set(noteId, dao.toBuffer());
118
+ await this.#notesToScope.set(noteId, scope.toString());
114
119
 
115
- await this.#notesByContractAndScope.get(scope.toString())!.set(dao.contractAddress.toString(), noteIndex);
116
- await this.#notesByStorageSlotAndScope.get(scope.toString())!.set(dao.storageSlot.toString(), noteIndex);
120
+ await this.#notesByContractAndScope.get(scope.toString())!.set(dao.contractAddress.toString(), noteId);
121
+ await this.#notesByStorageSlotAndScope.get(scope.toString())!.set(dao.storageSlot.toString(), noteId);
117
122
  }
118
123
  });
119
124
  }
@@ -125,10 +130,12 @@ export class NoteDataProvider {
125
130
  * specified block number. It restores any notes that were nullified after the given block
126
131
  * and deletes any active notes created after that block.
127
132
  *
133
+ * IMPORTANT: This method must be called within a transaction to ensure atomicity.
134
+ *
128
135
  * @param blockNumber - The new chain tip after a reorg
129
136
  * @param synchedBlockNumber - The block number up to which PXE managed to sync before the reorg happened.
130
137
  */
131
- public async rollbackNotesAndNullifiers(blockNumber: number, synchedBlockNumber: number): Promise<void> {
138
+ public async rollback(blockNumber: number, synchedBlockNumber: number): Promise<void> {
132
139
  await this.#rewindNullifiersAfterBlock(blockNumber, synchedBlockNumber);
133
140
  await this.#deleteActiveNotesAfterBlock(blockNumber);
134
141
  }
@@ -141,24 +148,21 @@ export class NoteDataProvider {
141
148
  *
142
149
  * @param blockNumber - Notes created after this block number will be deleted
143
150
  */
144
- #deleteActiveNotesAfterBlock(blockNumber: number): Promise<void> {
145
- return this.#store.transactionAsync(async () => {
146
- const notes = await toArray(this.#notes.valuesAsync());
147
- for (const note of notes) {
148
- const noteDao = NoteDao.fromBuffer(note);
149
- if (noteDao.l2BlockNumber > blockNumber) {
150
- const noteIndex = toBufferBE(noteDao.index, 32).toString('hex');
151
- await this.#notes.delete(noteIndex);
152
- await this.#notesToScope.delete(noteIndex);
153
- await this.#nullifierToNoteId.delete(noteDao.siloedNullifier.toString());
154
- const scopes = await toArray(this.#scopes.keysAsync());
155
- for (const scope of scopes) {
156
- await this.#notesByContractAndScope.get(scope)!.deleteValue(noteDao.contractAddress.toString(), noteIndex);
157
- await this.#notesByStorageSlotAndScope.get(scope)!.deleteValue(noteDao.storageSlot.toString(), noteIndex);
158
- }
151
+ async #deleteActiveNotesAfterBlock(blockNumber: number): Promise<void> {
152
+ const notes = await toArray(this.#notes.valuesAsync());
153
+ for (const note of notes) {
154
+ const noteDao = NoteDao.fromBuffer(note);
155
+ if (noteDao.l2BlockNumber > blockNumber) {
156
+ const noteId = noteDao.siloedNullifier.toString();
157
+ await this.#notes.delete(noteId);
158
+ await this.#notesToScope.delete(noteId);
159
+ const scopes = await toArray(this.#scopes.keysAsync());
160
+ for (const scope of scopes) {
161
+ await this.#notesByContractAndScope.get(scope)!.deleteValue(noteDao.contractAddress.toString(), noteId);
162
+ await this.#notesByStorageSlotAndScope.get(scope)!.deleteValue(noteDao.storageSlot.toString(), noteId);
159
163
  }
160
164
  }
161
- });
165
+ }
162
166
  }
163
167
 
164
168
  /**
@@ -172,48 +176,47 @@ export class NoteDataProvider {
172
176
  * @param synchedBlockNumber - Upper bound for the block range to process
173
177
  */
174
178
  async #rewindNullifiersAfterBlock(blockNumber: number, synchedBlockNumber: number): Promise<void> {
175
- await this.#store.transactionAsync(async () => {
176
- const nullifiersToUndo: string[] = [];
177
- const currentBlockNumber = blockNumber + 1;
178
- for (let i = currentBlockNumber; i <= synchedBlockNumber; i++) {
179
- nullifiersToUndo.push(...(await toArray(this.#nullifiersByBlockNumber.getValuesAsync(i))));
180
- }
181
- const notesIndexesToReinsert = await Promise.all(
182
- nullifiersToUndo.map(nullifier => this.#nullifiedNotesByNullifier.getAsync(nullifier)),
183
- );
184
- const notNullNoteIndexes = notesIndexesToReinsert.filter(noteIndex => noteIndex != undefined);
185
- const nullifiedNoteBuffers = await Promise.all(
186
- notNullNoteIndexes.map(noteIndex => this.#nullifiedNotes.getAsync(noteIndex!)),
187
- );
188
- const noteDaos = nullifiedNoteBuffers
189
- .filter(buffer => buffer != undefined)
190
- .map(buffer => NoteDao.fromBuffer(buffer!));
191
-
192
- for (const dao of noteDaos) {
193
- const noteIndex = toBufferBE(dao.index, 32).toString('hex');
194
- await this.#notes.set(noteIndex, dao.toBuffer());
195
- await this.#nullifierToNoteId.set(dao.siloedNullifier.toString(), noteIndex);
179
+ const noteIdsToReinsert: string[] = [];
180
+ const currentBlockNumber = blockNumber + 1;
181
+ for (let i = currentBlockNumber; i <= synchedBlockNumber; i++) {
182
+ // noteId === siloedNullifier.toString(), so we can use nullifiers directly as noteIds
183
+ noteIdsToReinsert.push(...(await toArray(this.#nullifiersByBlockNumber.getValuesAsync(i))));
184
+ }
185
+ const nullifiedNoteBuffers = await Promise.all(
186
+ noteIdsToReinsert.map(noteId => this.#nullifiedNotes.getAsync(noteId)),
187
+ );
188
+ const noteDaos = nullifiedNoteBuffers
189
+ .filter(buffer => buffer != undefined)
190
+ .map(buffer => NoteDao.fromBuffer(buffer!));
196
191
 
197
- let scopes = (await toArray(this.#nullifiedNotesToScope.getValuesAsync(noteIndex))) ?? [];
192
+ for (const dao of noteDaos) {
193
+ const noteId = dao.siloedNullifier.toString();
198
194
 
199
- if (scopes.length === 0) {
200
- scopes = [dao.recipient.toString()];
201
- }
195
+ const scopes = await toArray(this.#nullifiedNotesToScope.getValuesAsync(noteId));
202
196
 
203
- for (const scope of scopes) {
204
- await this.#notesByContractAndScope.get(scope.toString())!.set(dao.contractAddress.toString(), noteIndex);
205
- await this.#notesByStorageSlotAndScope.get(scope.toString())!.set(dao.storageSlot.toString(), noteIndex);
206
- await this.#notesToScope.set(noteIndex, scope);
207
- }
197
+ if (scopes.length === 0) {
198
+ // We should never run into this error because notes always have a scope assigned to them - either on initial
199
+ // insertion via `addNotes` or when removing their nullifiers.
200
+ throw new Error(`No scopes found for nullified note with nullifier ${noteId}`);
201
+ }
208
202
 
209
- await this.#nullifiedNotes.delete(noteIndex);
210
- await this.#nullifiedNotesToScope.delete(noteIndex);
211
- await this.#nullifiersByBlockNumber.deleteValue(dao.l2BlockNumber, dao.siloedNullifier.toString());
212
- await this.#nullifiedNotesByContract.deleteValue(dao.contractAddress.toString(), noteIndex);
213
- await this.#nullifiedNotesByStorageSlot.deleteValue(dao.storageSlot.toString(), noteIndex);
214
- await this.#nullifiedNotesByNullifier.delete(dao.siloedNullifier.toString());
203
+ for (const scope of scopes) {
204
+ await Promise.all([
205
+ this.#notesByContractAndScope.get(scope.toString())!.set(dao.contractAddress.toString(), noteId),
206
+ this.#notesByStorageSlotAndScope.get(scope.toString())!.set(dao.storageSlot.toString(), noteId),
207
+ this.#notesToScope.set(noteId, scope),
208
+ ]);
215
209
  }
216
- });
210
+
211
+ await Promise.all([
212
+ this.#notes.set(noteId, dao.toBuffer()),
213
+ this.#nullifiedNotes.delete(noteId),
214
+ this.#nullifiedNotesToScope.delete(noteId),
215
+ this.#nullifiersByBlockNumber.deleteValue(dao.l2BlockNumber, dao.siloedNullifier.toString()),
216
+ this.#nullifiedNotesByContract.deleteValue(dao.contractAddress.toString(), noteId),
217
+ this.#nullifiedNotesByStorageSlot.deleteValue(dao.storageSlot.toString(), noteId),
218
+ ]);
219
+ }
217
220
  }
218
221
 
219
222
  /**
@@ -223,8 +226,9 @@ export class NoteDataProvider {
223
226
  * parameters.
224
227
  *
225
228
  * @param filter - Filter criteria including contractAddress (required), and optional
226
- * storageSlot, status, scopes and siloedNullifier.
227
- * @returns Promise resolving to array of NoteDao objects matching the filter
229
+ * owner, storageSlot, status, scopes, and siloedNullifier.
230
+ * @returns Filtered and deduplicated notes (a note might be present in multiple scopes - we ensure it is only
231
+ * returned once if this is the case)
228
232
  * @throws If filtering by an empty scopes array. Scopes have to be set to undefined or to a non-empty array.
229
233
  */
230
234
  async getNotes(filter: NotesFilter): Promise<NoteDao[]> {
@@ -306,6 +310,10 @@ export class NoteDataProvider {
306
310
  continue;
307
311
  }
308
312
 
313
+ if (filter.owner && !note.owner.equals(filter.owner)) {
314
+ continue;
315
+ }
316
+
309
317
  if (filter.storageSlot && !note.storageSlot.equals(filter.storageSlot!)) {
310
318
  continue;
311
319
  }
@@ -318,7 +326,26 @@ export class NoteDataProvider {
318
326
  }
319
327
  }
320
328
 
321
- return result;
329
+ // A note might be present in multiple scopes - we ensure it is only returned once
330
+ const deduplicated: NoteDao[] = [];
331
+ for (const note of result) {
332
+ if (!deduplicated.some(existing => existing.equals(note))) {
333
+ deduplicated.push(note);
334
+ }
335
+ }
336
+
337
+ // Sort by block number, then by tx index within block, then by note index within tx
338
+ deduplicated.sort((a, b) => {
339
+ if (a.l2BlockNumber !== b.l2BlockNumber) {
340
+ return a.l2BlockNumber - b.l2BlockNumber;
341
+ }
342
+ if (a.txIndexInBlock !== b.txIndexInBlock) {
343
+ return a.txIndexInBlock - b.txIndexInBlock;
344
+ }
345
+ return a.noteIndexInTx - b.noteIndexInTx;
346
+ });
347
+
348
+ return deduplicated;
322
349
  }
323
350
 
324
351
  /**
@@ -332,7 +359,7 @@ export class NoteDataProvider {
332
359
  * @returns Promise resolving to array of nullified NoteDao objects
333
360
  * @throws Error if any nullifier is not found in the active notes
334
361
  */
335
- applyNullifiers(nullifiers: InBlock<Fr>[]): Promise<NoteDao[]> {
362
+ applyNullifiers(nullifiers: DataInBlock<Fr>[]): Promise<NoteDao[]> {
336
363
  if (nullifiers.length === 0) {
337
364
  return Promise.resolve([]);
338
365
  }
@@ -342,50 +369,45 @@ export class NoteDataProvider {
342
369
 
343
370
  for (const blockScopedNullifier of nullifiers) {
344
371
  const { data: nullifier, l2BlockNumber: blockNumber } = blockScopedNullifier;
345
- const nullifierKey = nullifier.toString();
372
+ const noteId = nullifier.toString();
346
373
 
347
- const noteIndex = await this.#nullifierToNoteId.getAsync(nullifierKey);
348
- if (!noteIndex) {
349
- // Check if already nullified?
350
- const alreadyNullified = await this.#nullifiedNotesByNullifier.getAsync(nullifierKey);
351
- if (alreadyNullified) {
374
+ const noteBuffer = await this.#notes.getAsync(noteId);
375
+ if (!noteBuffer) {
376
+ // Check if already nullified (noteId === siloedNullifier, so we can check #nullifiedNotes directly)
377
+ if (await this.#nullifiedNotes.hasAsync(noteId)) {
352
378
  throw new Error(`Nullifier already applied in applyNullifiers`);
353
379
  }
354
380
  throw new Error('Nullifier not found in applyNullifiers');
355
381
  }
356
382
 
357
- const noteBuffer = noteIndex ? await this.#notes.getAsync(noteIndex) : undefined;
358
-
359
- if (!noteBuffer) {
360
- throw new Error('Note not found in applyNullifiers');
383
+ const noteScopes = await toArray(this.#notesToScope.getValuesAsync(noteId));
384
+ if (noteScopes.length === 0) {
385
+ // We should never run into this error because notes always have a scope assigned to them - either on initial
386
+ // insertion via `addNotes` or when removing their nullifiers.
387
+ throw new Error('Note scopes are missing in applyNullifiers');
361
388
  }
362
- const noteScopes = (await toArray(this.#notesToScope.getValuesAsync(noteIndex))) ?? [];
389
+
363
390
  const note = NoteDao.fromBuffer(noteBuffer);
364
391
 
365
392
  nullifiedNotes.push(note);
366
393
 
367
- await this.#notes.delete(noteIndex);
368
- await this.#notesToScope.delete(noteIndex);
394
+ await this.#notes.delete(noteId);
395
+ await this.#notesToScope.delete(noteId);
369
396
 
370
397
  const scopes = await toArray(this.#scopes.keysAsync());
371
398
 
372
399
  for (const scope of scopes) {
373
- await this.#notesByContractAndScope.get(scope)!.deleteValue(note.contractAddress.toString(), noteIndex);
374
- await this.#notesByStorageSlotAndScope.get(scope)!.deleteValue(note.storageSlot.toString(), noteIndex);
400
+ await this.#notesByContractAndScope.get(scope)!.deleteValue(note.contractAddress.toString(), noteId);
401
+ await this.#notesByStorageSlotAndScope.get(scope)!.deleteValue(note.storageSlot.toString(), noteId);
375
402
  }
376
403
 
377
- if (noteScopes !== undefined) {
378
- for (const scope of noteScopes) {
379
- await this.#nullifiedNotesToScope.set(noteIndex, scope);
380
- }
404
+ for (const scope of noteScopes) {
405
+ await this.#nullifiedNotesToScope.set(noteId, scope);
381
406
  }
382
- await this.#nullifiedNotes.set(noteIndex, note.toBuffer());
383
- await this.#nullifiersByBlockNumber.set(blockNumber, nullifier.toString());
384
- await this.#nullifiedNotesByContract.set(note.contractAddress.toString(), noteIndex);
385
- await this.#nullifiedNotesByStorageSlot.set(note.storageSlot.toString(), noteIndex);
386
- await this.#nullifiedNotesByNullifier.set(nullifier.toString(), noteIndex);
387
-
388
- await this.#nullifierToNoteId.delete(nullifier.toString());
407
+ await this.#nullifiedNotes.set(noteId, note.toBuffer());
408
+ await this.#nullifiersByBlockNumber.set(blockNumber, noteId);
409
+ await this.#nullifiedNotesByContract.set(note.contractAddress.toString(), noteId);
410
+ await this.#nullifiedNotesByStorageSlot.set(note.storageSlot.toString(), noteId);
389
411
  }
390
412
  return nullifiedNotes;
391
413
  });