@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
@@ -0,0 +1,196 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ import type { DataInBlock } from '@aztec/stdlib/block';
4
+ import { computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
5
+ import { type AztecNode, MAX_RPC_LEN } from '@aztec/stdlib/interfaces/client';
6
+ import { Note, NoteDao, NoteStatus } from '@aztec/stdlib/note';
7
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
8
+ import type { BlockHeader, TxHash } from '@aztec/stdlib/tx';
9
+
10
+ import type { AccessScopes } from '../access_scopes.js';
11
+ import type { NoteStore } from '../storage/note_store/note_store.js';
12
+
13
+ export class NoteService {
14
+ constructor(
15
+ private readonly noteStore: NoteStore,
16
+ private readonly aztecNode: AztecNode,
17
+ private readonly anchorBlockHeader: BlockHeader,
18
+ private readonly jobId: string,
19
+ ) {}
20
+
21
+ /**
22
+ * Retrieves a set of notes stored in the database for a given contract address and storage slot.
23
+ * The query result is paginated using 'limit' and 'offset' values.
24
+ * Returns an object containing an array of note data.
25
+ *
26
+ * @param owner - The owner of the notes. If undefined, returns notes for all known owners.
27
+ * @param status - The status of notes to fetch.
28
+ * @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
29
+ */
30
+ public async getNotes(
31
+ contractAddress: AztecAddress,
32
+ owner: AztecAddress | undefined,
33
+ storageSlot: Fr,
34
+ status: NoteStatus,
35
+ scopes: AccessScopes,
36
+ ) {
37
+ const noteDaos = await this.noteStore.getNotes(
38
+ {
39
+ contractAddress,
40
+ owner,
41
+ storageSlot,
42
+ status,
43
+ scopes,
44
+ },
45
+ this.jobId,
46
+ );
47
+ return noteDaos.map(
48
+ ({ contractAddress, owner, storageSlot, randomness, noteNonce, note, noteHash, siloedNullifier }) => ({
49
+ contractAddress,
50
+ owner,
51
+ storageSlot,
52
+ randomness,
53
+ noteNonce,
54
+ note,
55
+ noteHash,
56
+ isPending: false, // Note service deals only with settled notes
57
+ siloedNullifier,
58
+ }),
59
+ );
60
+ }
61
+
62
+ /**
63
+ * Looks for nullifiers of active contract notes and marks them as nullified if a nullifier is found.
64
+ *
65
+ * Fetches notes from the NoteStore and checks which nullifiers are present in the
66
+ * onchain nullifier Merkle tree - up to the latest locally synced block. We use the
67
+ * locally synced block instead of querying the chain's 'latest' block to ensure correctness:
68
+ * notes are only marked nullified once their corresponding nullifier has been included in a
69
+ * block up to which the PXE has synced.
70
+ * This allows recent nullifications to be processed even if the node is not an archive node.
71
+ *
72
+ * @param contractAddress - The contract whose notes should be checked and nullified.
73
+ */
74
+ public async syncNoteNullifiers(contractAddress: AztecAddress, scopes: AccessScopes): Promise<void> {
75
+ const anchorBlockHash = await this.anchorBlockHeader.hash();
76
+
77
+ const contractNotes = await this.noteStore.getNotes({ contractAddress, scopes }, this.jobId);
78
+
79
+ if (contractNotes.length === 0) {
80
+ return;
81
+ }
82
+
83
+ const nullifiersToCheck = contractNotes.map(note => note.siloedNullifier);
84
+ const nullifierBatches = nullifiersToCheck.reduce(
85
+ (acc, nullifier) => {
86
+ if (acc[acc.length - 1].length < MAX_RPC_LEN) {
87
+ acc[acc.length - 1].push(nullifier);
88
+ } else {
89
+ acc.push([nullifier]);
90
+ }
91
+ return acc;
92
+ },
93
+ [[]] as Fr[][],
94
+ );
95
+ const nullifierIndexes = (
96
+ await Promise.all(
97
+ nullifierBatches.map(batch =>
98
+ this.aztecNode.findLeavesIndexes(anchorBlockHash, MerkleTreeId.NULLIFIER_TREE, batch),
99
+ ),
100
+ )
101
+ ).flat();
102
+
103
+ const foundNullifiers = nullifiersToCheck
104
+ .map((nullifier, i) => {
105
+ if (nullifierIndexes[i] !== undefined) {
106
+ return { ...nullifierIndexes[i], ...{ data: nullifier } } as DataInBlock<Fr>;
107
+ }
108
+ })
109
+ .filter(nullifier => nullifier !== undefined) as DataInBlock<Fr>[];
110
+
111
+ await this.noteStore.applyNullifiers(foundNullifiers, this.jobId);
112
+ }
113
+
114
+ public async validateAndStoreNote(
115
+ contractAddress: AztecAddress,
116
+ owner: AztecAddress,
117
+ storageSlot: Fr,
118
+ randomness: Fr,
119
+ noteNonce: Fr,
120
+ content: Fr[],
121
+ noteHash: Fr,
122
+ nullifier: Fr,
123
+ txHash: TxHash,
124
+ recipient: AztecAddress,
125
+ ): Promise<void> {
126
+ // We are going to store the new note in the NoteStore, which will let us later return it via `getNotes`.
127
+ // There's two things we need to check before we do this however:
128
+ // - we must make sure the note does actually exist in the note hash tree
129
+ // - we need to check if the note has already been nullified
130
+ //
131
+ // Failing to do either of the above would result in circuits getting either non-existent notes and failing to
132
+ // produce inclusion proofs for them, or getting nullified notes and producing duplicate nullifiers, both of which
133
+ // are catastrophic failure modes.
134
+ //
135
+ // Note that adding a note and removing it is *not* equivalent to never adding it in the first place. A nullifier
136
+ // emitted in a block that comes after note creation might result in the note being de-nullified by a chain reorg,
137
+ // so we must store both the note hash and nullifier block information.
138
+
139
+ // We avoid making node queries at 'latest' since we don't want to process notes or nullifiers that only exist ahead
140
+ // in time of the locally synced state.
141
+ // Note that while this technically results in historical queries, we perform it at the latest locally synced block
142
+ // number which *should* be recent enough to be available, even for non-archive nodes.
143
+ // Also note that the note should never be ahead of the synced block here since `fetchTaggedLogs` only processes
144
+ // logs up to the synced block making this only an additional safety check.
145
+ const anchorBlockNumber = this.anchorBlockHeader.getBlockNumber();
146
+ const anchorBlockHash = await this.anchorBlockHeader.hash();
147
+
148
+ // By computing siloed and unique note hashes ourselves we prevent contracts from interfering with the note storage
149
+ // of other contracts, which would constitute a security breach.
150
+ const uniqueNoteHash = await computeUniqueNoteHash(noteNonce, await siloNoteHash(contractAddress, noteHash));
151
+ const siloedNullifier = await siloNullifier(contractAddress, nullifier);
152
+
153
+ const [txEffect, [nullifierIndex]] = await Promise.all([
154
+ this.aztecNode.getTxEffect(txHash),
155
+ this.aztecNode.findLeavesIndexes(anchorBlockHash, MerkleTreeId.NULLIFIER_TREE, [siloedNullifier]),
156
+ ]);
157
+ if (!txEffect) {
158
+ throw new Error(`Could not find tx effect for tx hash ${txHash}`);
159
+ }
160
+
161
+ if (txEffect.l2BlockNumber > anchorBlockNumber) {
162
+ throw new Error(`Could not find tx effect for tx hash ${txHash} as of block number ${anchorBlockNumber}`);
163
+ }
164
+
165
+ // Find the index of the note hash in the noteHashes array to determine note ordering within the tx
166
+ const noteIndexInTx = txEffect.data.noteHashes.findIndex(nh => nh.equals(uniqueNoteHash));
167
+ if (noteIndexInTx === -1) {
168
+ throw new Error(`Note hash ${noteHash} (uniqued as ${uniqueNoteHash}) is not present in tx ${txHash}`);
169
+ }
170
+
171
+ const noteDao = new NoteDao(
172
+ new Note(content),
173
+ contractAddress,
174
+ owner,
175
+ storageSlot,
176
+ randomness,
177
+ noteNonce,
178
+ noteHash,
179
+ siloedNullifier,
180
+ txHash,
181
+ txEffect.l2BlockNumber,
182
+ txEffect.l2BlockHash.toString(),
183
+ txEffect.txIndexInBlock,
184
+ noteIndexInTx,
185
+ );
186
+
187
+ // The note was found by `recipient`, so we use that as the scope when storing the note.
188
+ await this.noteStore.addNotes([noteDao], recipient, this.jobId);
189
+
190
+ if (nullifierIndex !== undefined) {
191
+ // We found nullifier index which implies that the note has already been nullified.
192
+ const { data: _, ...blockHashAndNum } = nullifierIndex;
193
+ await this.noteStore.applyNullifiers([{ data: siloedNullifier, ...blockHashAndNum }], this.jobId);
194
+ }
195
+ }
196
+ }
@@ -0,0 +1,26 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ import type { NoteStatus } from '@aztec/stdlib/note';
4
+
5
+ import type { AccessScopes } from './access_scopes.js';
6
+
7
+ /**
8
+ * A filter used to fetch notes.
9
+ * @remarks This filter is applied as an intersection of all its params.
10
+ */
11
+ export type NotesFilter = {
12
+ /**
13
+ * The contract address the note belongs to.
14
+ * @remarks Providing a contract address is required as we need that information to trigger private state sync.
15
+ */
16
+ contractAddress: AztecAddress;
17
+ /** The owner of the note. */
18
+ owner?: AztecAddress;
19
+ /** The specific storage location of the note on the contract. */
20
+ storageSlot?: Fr;
21
+ /** The status of the note. Defaults to 'ACTIVE'. */
22
+ status?: NoteStatus;
23
+ /** The siloed nullifier for the note. */
24
+ siloedNullifier?: Fr;
25
+ scopes: AccessScopes;
26
+ };
@@ -4,8 +4,9 @@
4
4
  ///
5
5
  /// @dev Whenever a contract function or Noir test is run, the `utilityAssertCompatibleOracleVersion` oracle is called
6
6
  /// and if the oracle version is incompatible an error is thrown.
7
- export const ORACLE_VERSION = 4;
7
+ export const ORACLE_VERSION = 12;
8
8
 
9
9
  /// This hash is computed as by hashing the Oracle interface and it is used to detect when the Oracle interface changes,
10
- /// which in turn implies that you need to update the ORACLE_VERSION constant.
11
- export const ORACLE_INTERFACE_HASH = 'd1496df59c0b51a481d5ef93f218b5c35ddfce6242da28d60bb5c66386940eac';
10
+ /// which in turn implies that you need to update the ORACLE_VERSION constant in this file and in
11
+ /// `noir-projects/aztec-nr/aztec/src/oracle/version.nr`.
12
+ export const ORACLE_INTERFACE_HASH = '666a8a7fc697f72b29dbf0ae7464db269cf5afa019acac8861f814543147dbb4';
@@ -1,4 +1,4 @@
1
- import { MAX_INCLUDE_BY_TIMESTAMP_DURATION } from '@aztec/constants';
1
+ import { MAX_TX_LIFETIME } from '@aztec/constants';
2
2
  import type { PrivateKernelCircuitPublicInputs } from '@aztec/stdlib/kernel';
3
3
  import type { UInt64 } from '@aztec/stdlib/types';
4
4
 
@@ -8,12 +8,12 @@ const ROUNDED_DURATIONS = [
8
8
  1, // 1 second
9
9
  ];
10
10
 
11
- function roundTimestamp(blockTimestamp: bigint, includeByTimestamp: bigint): UInt64 {
11
+ function roundTimestamp(blockTimestamp: bigint, expirationTimestamp: bigint): UInt64 {
12
12
  return ROUNDED_DURATIONS.reduce((timestamp, duration) => {
13
13
  if (timestamp <= blockTimestamp) {
14
14
  // The timestamp must be greater than the block timestamp.
15
15
  // If it is too small, round it down again using a smaller duration.
16
- const totalDuration = includeByTimestamp - blockTimestamp;
16
+ const totalDuration = expirationTimestamp - blockTimestamp;
17
17
  const roundedDuration = totalDuration - (totalDuration % BigInt(duration));
18
18
  return blockTimestamp + roundedDuration;
19
19
  }
@@ -21,36 +21,36 @@ function roundTimestamp(blockTimestamp: bigint, includeByTimestamp: bigint): UIn
21
21
  }, 0n);
22
22
  }
23
23
 
24
- export function computeTxIncludeByTimestamp(
24
+ export function computeTxExpirationTimestamp(
25
25
  previousKernel: PrivateKernelCircuitPublicInputs,
26
- maxDuration = MAX_INCLUDE_BY_TIMESTAMP_DURATION,
26
+ txLifetime = MAX_TX_LIFETIME,
27
27
  ): UInt64 {
28
- if (maxDuration > MAX_INCLUDE_BY_TIMESTAMP_DURATION) {
28
+ if (txLifetime > MAX_TX_LIFETIME) {
29
29
  throw new Error(
30
- `Custom max duration cannot be greater than the max allowed. Max allowed: ${MAX_INCLUDE_BY_TIMESTAMP_DURATION}. Custom value: ${maxDuration}.`,
30
+ `Custom tx lifetime cannot be greater than the max allowed. Max allowed: ${MAX_TX_LIFETIME}. Custom value: ${txLifetime}.`,
31
31
  );
32
32
  }
33
33
 
34
34
  const anchorBlockTimestamp = previousKernel.constants.anchorBlockHeader.globalVariables.timestamp;
35
- const maxTimestamp = anchorBlockTimestamp + BigInt(maxDuration);
36
- const includeByTimestamp = previousKernel.includeByTimestamp;
35
+ const maxTimestamp = anchorBlockTimestamp + BigInt(txLifetime);
36
+ const expirationTimestamp = previousKernel.expirationTimestamp;
37
37
 
38
- // If the includeByTimestamp set during the tx execution is greater than or equal to the max allowed duration,
38
+ // If the expirationTimestamp set during the tx execution is greater than or equal to the max allowed duration,
39
39
  // use the maximum allowed timestamp.
40
40
  // Note: It shouldn't be larger than the max allowed duration, but we check for it anyway.
41
- if (includeByTimestamp >= maxTimestamp) {
41
+ if (expirationTimestamp >= maxTimestamp) {
42
42
  return maxTimestamp;
43
43
  }
44
44
 
45
45
  // Round it down to the nearest hour/min/second to reduce precision and avoid revealing the exact value.
46
46
  // This makes it harder for others to infer what function calls may have been used to produce a specific timestamp.
47
- const roundedTimestamp = roundTimestamp(anchorBlockTimestamp, includeByTimestamp);
47
+ const roundedTimestamp = roundTimestamp(anchorBlockTimestamp, expirationTimestamp);
48
48
 
49
49
  // The tx can't be published if the timestamp is the same or less than the anchor block's timestamp.
50
50
  // Future blocks will have a greater timestamp, so the tx would never be included.
51
51
  if (roundedTimestamp <= anchorBlockTimestamp) {
52
52
  throw new Error(
53
- `Include-by timestamp must be greater than the anchor block timestamp. Anchor block timestamp: ${anchorBlockTimestamp}. Include-by timestamp: ${includeByTimestamp}.`,
53
+ `Include-by timestamp must be greater than the anchor block timestamp. Anchor block timestamp: ${anchorBlockTimestamp}. Include-by timestamp: ${expirationTimestamp}.`,
54
54
  );
55
55
  }
56
56
 
@@ -1,2 +1,2 @@
1
- export * from './build_private_kernel_reset_private_inputs.js';
2
- export * from './compute_tx_include_by_timestamp.js';
1
+ export * from './private_kernel_reset_private_inputs_builder.js';
2
+ export * from './compute_tx_expiration_timestamp.js';
@@ -9,7 +9,7 @@ import {
9
9
  } from '@aztec/constants';
10
10
  import { makeTuple } from '@aztec/foundation/array';
11
11
  import { padArrayEnd } from '@aztec/foundation/collection';
12
- import type { Fr } from '@aztec/foundation/fields';
12
+ import type { Fr } from '@aztec/foundation/curves/bn254';
13
13
  import { type Tuple, assertLength } from '@aztec/foundation/serialize';
14
14
  import { MembershipWitness } from '@aztec/foundation/trees';
15
15
  import { privateKernelResetDimensionsConfig } from '@aztec/noir-protocol-circuits-types/client';
@@ -26,7 +26,7 @@ import {
26
26
  type PrivateKernelSimulateOutput,
27
27
  ReadRequestActionEnum,
28
28
  ReadRequestResetActions,
29
- type ScopedKeyValidationRequestAndGenerator,
29
+ type ScopedKeyValidationRequestAndSeparator,
30
30
  ScopedNoteHash,
31
31
  ScopedNullifier,
32
32
  ScopedReadRequest,
@@ -68,9 +68,9 @@ function getNullifierMembershipWitnessResolver(oracle: PrivateKernelOracle) {
68
68
  };
69
69
  }
70
70
 
71
- async function getMasterSecretKeysAndAppKeyGenerators(
71
+ async function getMasterSecretKeysAndKeyTypeDomainSeparators(
72
72
  keyValidationRequests: ClaimedLengthArray<
73
- ScopedKeyValidationRequestAndGenerator,
73
+ ScopedKeyValidationRequestAndSeparator,
74
74
  typeof MAX_KEY_VALIDATION_REQUESTS_PER_TX
75
75
  >,
76
76
  numRequestsToVerify: number,
@@ -138,7 +138,7 @@ export class PrivateKernelResetPrivateInputsBuilder {
138
138
  }
139
139
  }
140
140
 
141
- async build(oracle: PrivateKernelOracle, noteHashLeafIndexMap: Map<bigint, bigint>) {
141
+ async build(oracle: PrivateKernelOracle) {
142
142
  if (privateKernelResetDimensionNames.every(name => !this.requestedDimensions[name])) {
143
143
  throw new Error('Reset is not required.');
144
144
  }
@@ -157,16 +157,6 @@ export class PrivateKernelResetPrivateInputsBuilder {
157
157
  allowRemainder,
158
158
  );
159
159
 
160
- const previousVkMembershipWitness = await oracle.getVkMembershipWitness(
161
- this.previousKernelOutput.verificationKey.keyAsFields,
162
- );
163
- const vkData = new VkData(
164
- this.previousKernelOutput.verificationKey,
165
- Number(previousVkMembershipWitness.leafIndex),
166
- previousVkMembershipWitness.siblingPath,
167
- );
168
- const previousKernelData = new PrivateKernelData(this.previousKernelOutput.publicInputs, vkData);
169
-
170
160
  this.reduceReadRequestActions(
171
161
  this.noteHashResetActions,
172
162
  dimensions.NOTE_HASH_PENDING_READ,
@@ -178,30 +168,51 @@ export class PrivateKernelResetPrivateInputsBuilder {
178
168
  dimensions.NULLIFIER_SETTLED_READ,
179
169
  );
180
170
 
181
- // TODO: Enable padding when we have a better idea what are the final amounts we should pad to.
182
- const paddedSideEffects = PaddedSideEffects.empty();
183
-
184
- return new PrivateKernelResetCircuitPrivateInputs(
185
- previousKernelData,
186
- paddedSideEffects,
187
- new PrivateKernelResetHints(
188
- await buildNoteHashReadRequestHintsFromResetActions(
171
+ // Execute all the expensive node querying operations in parallel.
172
+ const [previousVkMembershipWitness, noteHashReadRequestHints, nullifierReadRequestHints, keyValidationHints] =
173
+ await Promise.all([
174
+ oracle.getVkMembershipWitness(this.previousKernelOutput.verificationKey.keyAsFields),
175
+ buildNoteHashReadRequestHintsFromResetActions<
176
+ typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
177
+ typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX
178
+ >(
189
179
  oracle,
190
180
  this.previousKernel.validationRequests.noteHashReadRequests,
191
181
  this.previousKernel.end.noteHashes,
192
182
  this.noteHashResetActions,
193
- noteHashLeafIndexMap,
194
183
  ),
195
- await buildNullifierReadRequestHintsFromResetActions(
184
+ buildNullifierReadRequestHintsFromResetActions<
185
+ typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX,
186
+ typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX
187
+ >(
196
188
  { getNullifierMembershipWitness: getNullifierMembershipWitnessResolver(oracle) },
197
189
  this.previousKernel.validationRequests.nullifierReadRequests,
198
190
  this.nullifierResetActions,
199
191
  ),
200
- await getMasterSecretKeysAndAppKeyGenerators(
201
- this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators,
192
+ getMasterSecretKeysAndKeyTypeDomainSeparators(
193
+ this.previousKernel.validationRequests.scopedKeyValidationRequestsAndSeparators,
202
194
  dimensions.KEY_VALIDATION,
203
195
  oracle,
204
196
  ),
197
+ ]);
198
+
199
+ const vkData = new VkData(
200
+ this.previousKernelOutput.verificationKey,
201
+ Number(previousVkMembershipWitness.leafIndex),
202
+ previousVkMembershipWitness.siblingPath,
203
+ );
204
+ const previousKernelData = new PrivateKernelData(this.previousKernelOutput.publicInputs, vkData);
205
+
206
+ // TODO: Enable padding when we have a better idea what are the final amounts we should pad to.
207
+ const paddedSideEffects = PaddedSideEffects.empty();
208
+
209
+ return new PrivateKernelResetCircuitPrivateInputs(
210
+ previousKernelData,
211
+ paddedSideEffects,
212
+ new PrivateKernelResetHints(
213
+ noteHashReadRequestHints,
214
+ nullifierReadRequestHints,
215
+ keyValidationHints,
205
216
  this.transientDataSquashingHints,
206
217
  ),
207
218
  dimensions,
@@ -346,8 +357,8 @@ export class PrivateKernelResetPrivateInputsBuilder {
346
357
  }
347
358
 
348
359
  private needsResetNullifierKeys() {
349
- const numCurr = this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators.claimedLength;
350
- const numNext = this.nextIteration ? this.nextIteration.keyValidationRequestsAndGenerators.claimedLength : 0;
360
+ const numCurr = this.previousKernel.validationRequests.scopedKeyValidationRequestsAndSeparators.claimedLength;
361
+ const numNext = this.nextIteration ? this.nextIteration.keyValidationRequestsAndSeparators.claimedLength : 0;
351
362
  const maxAmountToKeep = !this.nextIteration ? 0 : MAX_KEY_VALIDATION_REQUESTS_PER_TX;
352
363
  if (numCurr + numNext <= maxAmountToKeep) {
353
364
  return false;
@@ -1,6 +1,6 @@
1
- import { vkAsFieldsMegaHonk } from '@aztec/foundation/crypto';
2
- import { Fr } from '@aztec/foundation/fields';
3
- import { createLogger } from '@aztec/foundation/log';
1
+ import { vkAsFieldsMegaHonk } from '@aztec/foundation/crypto/keys';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
4
4
  import { pushTestData } from '@aztec/foundation/testing';
5
5
  import { Timer } from '@aztec/foundation/timer';
6
6
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
@@ -28,13 +28,12 @@ import {
28
28
  type PrivateCallExecutionResult,
29
29
  type PrivateExecutionResult,
30
30
  TxRequest,
31
- collectNoteHashLeafIndexMap,
32
31
  collectNoteHashNullifierCounterMap,
33
32
  getFinalMinRevertibleSideEffectCounter,
34
33
  } from '@aztec/stdlib/tx';
35
34
  import { VerificationKeyAsFields, VerificationKeyData, VkData } from '@aztec/stdlib/vks';
36
35
 
37
- import { PrivateKernelResetPrivateInputsBuilder } from './hints/build_private_kernel_reset_private_inputs.js';
36
+ import { PrivateKernelResetPrivateInputsBuilder } from './hints/private_kernel_reset_private_inputs_builder.js';
38
37
  import type { PrivateKernelOracle } from './private_kernel_oracle.js';
39
38
 
40
39
  const NULL_SIMULATE_OUTPUT: PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs> = {
@@ -57,13 +56,16 @@ export interface PrivateKernelExecutionProverConfig {
57
56
  * inform state tree updates.
58
57
  */
59
58
  export class PrivateKernelExecutionProver {
60
- private log = createLogger('pxe:private-kernel-execution-prover');
59
+ private log: Logger;
61
60
 
62
61
  constructor(
63
62
  private oracle: PrivateKernelOracle,
64
63
  private proofCreator: PrivateKernelProver,
65
64
  private fakeProofs = false,
66
- ) {}
65
+ bindings?: LoggerBindings,
66
+ ) {
67
+ this.log = createLogger('pxe:private-kernel-execution-prover', bindings);
68
+ }
67
69
 
68
70
  /**
69
71
  * Generate a proof for a given transaction request and execution result.
@@ -101,7 +103,6 @@ export class PrivateKernelExecutionProver {
101
103
 
102
104
  const executionSteps: PrivateExecutionStep[] = [];
103
105
 
104
- const noteHashLeafIndexMap = collectNoteHashLeafIndexMap(executionResult);
105
106
  const noteHashNullifierCounterMap = collectNoteHashNullifierCounterMap(executionResult);
106
107
  const minRevertibleSideEffectCounter = getFinalMinRevertibleSideEffectCounter(executionResult);
107
108
  const splitCounter = isPrivateOnlyTx ? 0 : minRevertibleSideEffectCounter;
@@ -116,7 +117,7 @@ export class PrivateKernelExecutionProver {
116
117
  );
117
118
  while (resetBuilder.needsReset()) {
118
119
  const witgenTimer = new Timer();
119
- const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
120
+ const privateInputs = await resetBuilder.build(this.oracle);
120
121
  output = generateWitnesses
121
122
  ? await this.proofCreator.generateResetOutput(privateInputs)
122
123
  : await this.proofCreator.simulateReset(privateInputs);
@@ -224,7 +225,7 @@ export class PrivateKernelExecutionProver {
224
225
  );
225
226
  while (resetBuilder.needsReset()) {
226
227
  const witgenTimer = new Timer();
227
- const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
228
+ const privateInputs = await resetBuilder.build(this.oracle);
228
229
  output = generateWitnesses
229
230
  ? await this.proofCreator.generateResetOutput(privateInputs)
230
231
  : await this.proofCreator.simulateReset(privateInputs);
@@ -259,20 +260,20 @@ export class PrivateKernelExecutionProver {
259
260
  // TODO: Enable padding once we better understand the final amounts to pad to.
260
261
  const paddedSideEffectAmounts = PaddedSideEffectAmounts.empty();
261
262
 
262
- // Use the aggregated includeByTimestamp set throughout the tx execution.
263
- // TODO: Call `computeTxIncludeByTimestamp` to round the value down and reduce precision, improving privacy.
264
- const includeByTimestampUpperBound = previousKernelData.publicInputs.includeByTimestamp;
263
+ // Use the aggregated expirationTimestamp set throughout the tx execution.
264
+ // TODO: Call `computeTxExpirationTimestamp` to round the value down and reduce precision, improving privacy.
265
+ const expirationTimestampUpperBound = previousKernelData.publicInputs.expirationTimestamp;
265
266
  const anchorBlockTimestamp = previousKernelData.publicInputs.constants.anchorBlockHeader.globalVariables.timestamp;
266
- if (includeByTimestampUpperBound <= anchorBlockTimestamp) {
267
+ if (expirationTimestampUpperBound <= anchorBlockTimestamp) {
267
268
  throw new Error(
268
- `Include-by timestamp must be greater than the anchor block timestamp. Anchor block timestamp: ${anchorBlockTimestamp}. Include-by timestamp: ${includeByTimestampUpperBound}.`,
269
+ `Include-by timestamp must be greater than the anchor block timestamp. Anchor block timestamp: ${anchorBlockTimestamp}. Include-by timestamp: ${expirationTimestampUpperBound}.`,
269
270
  );
270
271
  }
271
272
 
272
273
  const privateInputs = new PrivateKernelTailCircuitPrivateInputs(
273
274
  previousKernelData,
274
275
  paddedSideEffectAmounts,
275
- includeByTimestampUpperBound,
276
+ expirationTimestampUpperBound,
276
277
  );
277
278
 
278
279
  const witgenTimer = new Timer();
@@ -290,8 +291,8 @@ export class PrivateKernelExecutionProver {
290
291
  },
291
292
  });
292
293
 
293
- // Hiding circuit is only executed if we are generating witnesses.
294
- // For simulation, we can end with the tail, since the hiding circuit will simply return the same tail output.
294
+ // Hiding kernel is only executed if we are generating witnesses.
295
+ // For simulation, we can end with the tail, since the Hiding kernel will simply return the same tail output.
295
296
  if (generateWitnesses) {
296
297
  const previousKernelVkData = await this.getVkData(tailOutput.verificationKey);
297
298
 
@@ -415,6 +416,7 @@ export class PrivateKernelExecutionProver {
415
416
  await this.oracle.getContractClassIdPreimage(currentContractClassId);
416
417
 
417
418
  const updatedClassIdHints = await this.oracle.getUpdatedClassIdHints(contractAddress);
419
+
418
420
  return PrivateCallData.from({
419
421
  publicInputs,
420
422
  vk,