@aztec/pxe 0.0.1-commit.d3ec352c → 0.0.1-commit.f295ac2

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