@aztec/pxe 0.0.1-fake-c83136db25 → 0.0.2-commit.217f559981

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 (418) 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.d.ts +1 -1
  5. package/dest/bin/check_oracle_version.js +105 -15
  6. package/dest/block_synchronizer/block_synchronizer.d.ts +45 -0
  7. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  8. package/dest/block_synchronizer/block_synchronizer.js +153 -0
  9. package/dest/block_synchronizer/index.d.ts +2 -0
  10. package/dest/block_synchronizer/index.d.ts.map +1 -0
  11. package/dest/block_synchronizer/index.js +1 -0
  12. package/dest/config/index.d.ts +6 -12
  13. package/dest/config/index.d.ts.map +1 -1
  14. package/dest/config/index.js +24 -13
  15. package/dest/config/package_info.d.ts +1 -1
  16. package/dest/config/package_info.js +1 -1
  17. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  18. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  19. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  20. package/dest/contract_function_simulator/contract_function_simulator.d.ts +78 -26
  21. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  22. package/dest/contract_function_simulator/contract_function_simulator.js +224 -80
  23. package/dest/contract_function_simulator/execution_note_cache.d.ts +25 -14
  24. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/execution_note_cache.js +59 -34
  26. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +2 -2
  27. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
  29. package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
  30. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/index.d.ts +2 -2
  32. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/index.js +1 -1
  34. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -4
  35. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  36. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -4
  37. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
  38. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
  40. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +3 -3
  41. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
  43. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +7 -5
  44. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  45. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +13 -4
  46. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  47. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  48. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  49. package/dest/contract_function_simulator/oracle/index.d.ts +1 -1
  50. package/dest/contract_function_simulator/oracle/interfaces.d.ts +30 -20
  51. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  52. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +2 -2
  53. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  54. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
  55. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +14 -8
  56. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  57. package/dest/contract_function_simulator/oracle/note_packing_utils.js +16 -11
  58. package/dest/contract_function_simulator/oracle/oracle.d.ts +15 -12
  59. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  60. package/dest/contract_function_simulator/oracle/oracle.js +93 -53
  61. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -27
  62. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  63. package/dest/contract_function_simulator/oracle/private_execution.js +2 -38
  64. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +56 -52
  65. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  66. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +117 -63
  67. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +114 -39
  68. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  69. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +214 -86
  70. package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
  71. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  72. package/dest/contract_function_simulator/pick_notes.js +1 -1
  73. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  74. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  75. package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
  76. package/dest/contract_logging.d.ts +22 -0
  77. package/dest/contract_logging.d.ts.map +1 -0
  78. package/dest/contract_logging.js +23 -0
  79. package/dest/contract_sync/contract_sync_service.d.ts +43 -0
  80. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  81. package/dest/contract_sync/contract_sync_service.js +97 -0
  82. package/dest/contract_sync/helpers.d.ts +29 -0
  83. package/dest/contract_sync/helpers.d.ts.map +1 -0
  84. package/dest/contract_sync/helpers.js +55 -0
  85. package/dest/debug/pxe_debug_utils.d.ts +45 -0
  86. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  87. package/dest/debug/pxe_debug_utils.js +48 -0
  88. package/dest/entrypoints/client/bundle/index.d.ts +4 -2
  89. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  90. package/dest/entrypoints/client/bundle/index.js +3 -1
  91. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  92. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  93. package/dest/entrypoints/client/bundle/utils.js +33 -10
  94. package/dest/entrypoints/client/lazy/index.d.ts +4 -2
  95. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  96. package/dest/entrypoints/client/lazy/index.js +3 -1
  97. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  98. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  99. package/dest/entrypoints/client/lazy/utils.js +34 -11
  100. package/dest/entrypoints/pxe_creation_options.d.ts +7 -3
  101. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  102. package/dest/entrypoints/server/index.d.ts +6 -2
  103. package/dest/entrypoints/server/index.d.ts.map +1 -1
  104. package/dest/entrypoints/server/index.js +5 -1
  105. package/dest/entrypoints/server/utils.d.ts +1 -1
  106. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  107. package/dest/entrypoints/server/utils.js +40 -28
  108. package/dest/error_enriching.d.ts +4 -4
  109. package/dest/error_enriching.d.ts.map +1 -1
  110. package/dest/error_enriching.js +6 -6
  111. package/dest/events/event_service.d.ts +15 -0
  112. package/dest/events/event_service.d.ts.map +1 -0
  113. package/dest/events/event_service.js +44 -0
  114. package/dest/events/index.d.ts +2 -0
  115. package/dest/events/index.d.ts.map +1 -0
  116. package/dest/events/index.js +1 -0
  117. package/dest/events/private_event_filter_validator.d.ts +9 -0
  118. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  119. package/dest/events/private_event_filter_validator.js +38 -0
  120. package/dest/job_coordinator/job_coordinator.d.ts +75 -0
  121. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  122. package/dest/job_coordinator/job_coordinator.js +94 -0
  123. package/dest/logs/log_service.d.ts +29 -0
  124. package/dest/logs/log_service.d.ts.map +1 -0
  125. package/dest/logs/log_service.js +118 -0
  126. package/dest/notes/index.d.ts +2 -0
  127. package/dest/notes/index.d.ts.map +1 -0
  128. package/dest/notes/index.js +1 -0
  129. package/dest/notes/note_service.d.ts +49 -0
  130. package/dest/notes/note_service.d.ts.map +1 -0
  131. package/dest/notes/note_service.js +148 -0
  132. package/dest/notes_filter.d.ts +25 -0
  133. package/dest/notes_filter.d.ts.map +1 -0
  134. package/dest/notes_filter.js +4 -0
  135. package/dest/oracle_version.d.ts +3 -3
  136. package/dest/oracle_version.d.ts.map +1 -1
  137. package/dest/oracle_version.js +4 -3
  138. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  139. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  140. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  141. package/dest/private_kernel/hints/index.d.ts +3 -3
  142. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  143. package/dest/private_kernel/hints/index.js +2 -2
  144. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
  145. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  146. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +22 -16
  147. package/dest/private_kernel/index.d.ts +1 -1
  148. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  149. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  150. package/dest/private_kernel/private_kernel_execution_prover.js +23 -23
  151. package/dest/private_kernel/private_kernel_oracle.d.ts +26 -25
  152. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  153. package/dest/private_kernel/private_kernel_oracle.js +94 -2
  154. package/dest/pxe.d.ts +120 -103
  155. package/dest/pxe.d.ts.map +1 -1
  156. package/dest/pxe.js +260 -275
  157. package/dest/storage/address_store/address_store.d.ts +11 -0
  158. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  159. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -12
  160. package/dest/storage/address_store/index.d.ts +2 -0
  161. package/dest/storage/address_store/index.d.ts.map +1 -0
  162. package/dest/storage/address_store/index.js +1 -0
  163. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
  164. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  165. package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +10 -10
  166. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  167. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  168. package/dest/storage/anchor_block_store/index.js +1 -0
  169. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  170. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  171. package/dest/storage/capsule_store/capsule_store.js +253 -0
  172. package/dest/storage/capsule_store/index.d.ts +2 -0
  173. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  174. package/dest/storage/capsule_store/index.js +1 -0
  175. package/dest/storage/contract_store/contract_store.d.ts +93 -0
  176. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  177. package/dest/storage/contract_store/contract_store.js +309 -0
  178. package/dest/storage/contract_store/index.d.ts +2 -0
  179. package/dest/storage/contract_store/index.d.ts.map +1 -0
  180. package/dest/storage/contract_store/index.js +1 -0
  181. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  182. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  183. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
  184. package/dest/storage/index.d.ts +8 -8
  185. package/dest/storage/index.d.ts.map +1 -1
  186. package/dest/storage/index.js +7 -7
  187. package/dest/storage/metadata.d.ts +2 -2
  188. package/dest/storage/metadata.js +1 -1
  189. package/dest/storage/note_store/index.d.ts +3 -0
  190. package/dest/storage/note_store/index.d.ts.map +1 -0
  191. package/dest/storage/note_store/index.js +2 -0
  192. package/dest/storage/note_store/note_store.d.ts +83 -0
  193. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  194. package/dest/storage/note_store/note_store.js +343 -0
  195. package/dest/storage/note_store/stored_note.d.ts +16 -0
  196. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  197. package/dest/storage/note_store/stored_note.js +43 -0
  198. package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
  199. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  200. package/dest/storage/private_event_store/private_event_store.js +273 -0
  201. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  202. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  203. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  204. package/dest/storage/tagging_store/index.d.ts +4 -0
  205. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  206. package/dest/storage/tagging_store/index.js +3 -0
  207. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  208. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  209. package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
  210. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  211. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  212. package/dest/storage/tagging_store/sender_address_book_store.js +36 -0
  213. package/dest/storage/tagging_store/sender_tagging_store.d.ts +77 -0
  214. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  215. package/dest/storage/tagging_store/sender_tagging_store.js +348 -0
  216. package/dest/tagging/constants.d.ts +2 -2
  217. package/dest/tagging/constants.d.ts.map +1 -1
  218. package/dest/tagging/constants.js +10 -2
  219. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  220. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  221. package/dest/tagging/get_all_logs_by_tags.js +60 -0
  222. package/dest/tagging/index.d.ts +16 -6
  223. package/dest/tagging/index.d.ts.map +1 -1
  224. package/dest/tagging/index.js +15 -5
  225. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +15 -0
  226. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
  227. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
  228. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  229. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  230. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  231. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +15 -0
  232. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
  233. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +32 -0
  234. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +21 -0
  235. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  236. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
  237. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
  238. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  239. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +29 -0
  240. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +21 -0
  241. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  242. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +60 -0
  243. package/package.json +29 -19
  244. package/src/access_scopes.ts +9 -0
  245. package/src/bin/check_oracle_version.ts +131 -20
  246. package/src/block_synchronizer/block_synchronizer.ts +178 -0
  247. package/src/block_synchronizer/index.ts +1 -0
  248. package/src/config/index.ts +24 -25
  249. package/src/config/package_info.ts +1 -1
  250. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  251. package/src/contract_function_simulator/contract_function_simulator.ts +394 -113
  252. package/src/contract_function_simulator/execution_note_cache.ts +58 -28
  253. package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
  254. package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
  255. package/src/contract_function_simulator/index.ts +1 -1
  256. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +7 -3
  257. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
  258. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -2
  259. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +15 -3
  260. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  261. package/src/contract_function_simulator/oracle/interfaces.ts +43 -18
  262. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
  263. package/src/contract_function_simulator/oracle/note_packing_utils.ts +30 -14
  264. package/src/contract_function_simulator/oracle/oracle.ts +111 -49
  265. package/src/contract_function_simulator/oracle/private_execution.ts +2 -68
  266. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +163 -98
  267. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +350 -91
  268. package/src/contract_function_simulator/pick_notes.ts +1 -1
  269. package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
  270. package/src/contract_logging.ts +39 -0
  271. package/src/contract_sync/contract_sync_service.ts +152 -0
  272. package/src/contract_sync/helpers.ts +98 -0
  273. package/src/debug/pxe_debug_utils.ts +93 -0
  274. package/src/entrypoints/client/bundle/index.ts +3 -1
  275. package/src/entrypoints/client/bundle/utils.ts +25 -18
  276. package/src/entrypoints/client/lazy/index.ts +3 -1
  277. package/src/entrypoints/client/lazy/utils.ts +26 -19
  278. package/src/entrypoints/pxe_creation_options.ts +6 -2
  279. package/src/entrypoints/server/index.ts +5 -1
  280. package/src/entrypoints/server/utils.ts +34 -56
  281. package/src/error_enriching.ts +7 -15
  282. package/src/events/event_service.ts +71 -0
  283. package/src/events/index.ts +1 -0
  284. package/src/events/private_event_filter_validator.ts +46 -0
  285. package/src/job_coordinator/job_coordinator.ts +150 -0
  286. package/src/logs/log_service.ts +208 -0
  287. package/src/notes/index.ts +1 -0
  288. package/src/notes/note_service.ts +196 -0
  289. package/src/notes_filter.ts +26 -0
  290. package/src/oracle_version.ts +4 -3
  291. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  292. package/src/private_kernel/hints/index.ts +2 -2
  293. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +44 -37
  294. package/src/private_kernel/private_kernel_execution_prover.ts +27 -30
  295. package/src/private_kernel/private_kernel_oracle.ts +118 -37
  296. package/src/pxe.ts +402 -373
  297. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +16 -16
  298. package/src/storage/address_store/index.ts +1 -0
  299. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +10 -11
  300. package/src/storage/anchor_block_store/index.ts +1 -0
  301. package/src/storage/capsule_store/capsule_store.ts +315 -0
  302. package/src/storage/capsule_store/index.ts +1 -0
  303. package/src/storage/contract_store/contract_store.ts +429 -0
  304. package/src/storage/contract_store/index.ts +1 -0
  305. package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
  306. package/src/storage/index.ts +7 -7
  307. package/src/storage/metadata.ts +1 -1
  308. package/src/storage/note_store/index.ts +2 -0
  309. package/src/storage/note_store/note_store.ts +418 -0
  310. package/src/storage/note_store/stored_note.ts +48 -0
  311. package/src/storage/private_event_store/private_event_store.ts +384 -0
  312. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  313. package/src/storage/tagging_store/index.ts +3 -0
  314. package/src/storage/tagging_store/recipient_tagging_store.ts +139 -0
  315. package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
  316. package/src/storage/tagging_store/sender_tagging_store.ts +429 -0
  317. package/src/tagging/constants.ts +10 -2
  318. package/src/tagging/get_all_logs_by_tags.ts +92 -0
  319. package/src/tagging/index.ts +18 -5
  320. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +143 -0
  321. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  322. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +49 -0
  323. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +99 -0
  324. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +36 -0
  325. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +84 -0
  326. package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -274
  327. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
  328. package/dest/contract_function_simulator/execution_data_provider.js +0 -14
  329. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  330. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  331. package/dest/contract_function_simulator/proxied_node.js +0 -27
  332. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
  333. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
  334. package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -688
  335. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  336. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  337. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  338. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  339. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -45
  340. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  341. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  342. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  343. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  344. package/dest/storage/address_data_provider/index.d.ts +0 -2
  345. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  346. package/dest/storage/address_data_provider/index.js +0 -1
  347. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
  348. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  349. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -118
  350. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  351. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  352. package/dest/storage/capsule_data_provider/index.js +0 -1
  353. package/dest/storage/contract_data_provider/contract_data_provider.d.ts +0 -74
  354. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  355. package/dest/storage/contract_data_provider/contract_data_provider.js +0 -205
  356. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  357. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  358. package/dest/storage/contract_data_provider/index.js +0 -1
  359. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  360. package/dest/storage/note_data_provider/index.d.ts +0 -3
  361. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  362. package/dest/storage/note_data_provider/index.js +0 -2
  363. package/dest/storage/note_data_provider/note_dao.d.ts +0 -100
  364. package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
  365. package/dest/storage/note_data_provider/note_dao.js +0 -102
  366. package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -83
  367. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  368. package/dest/storage/note_data_provider/note_data_provider.js +0 -308
  369. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -35
  370. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  371. package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -93
  372. package/dest/storage/sync_data_provider/index.d.ts +0 -2
  373. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  374. package/dest/storage/sync_data_provider/index.js +0 -1
  375. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -10
  376. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  377. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  378. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  379. package/dest/storage/tagging_data_provider/index.js +0 -1
  380. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
  381. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  382. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
  383. package/dest/synchronizer/index.d.ts +0 -2
  384. package/dest/synchronizer/index.d.ts.map +0 -1
  385. package/dest/synchronizer/index.js +0 -1
  386. package/dest/synchronizer/synchronizer.d.ts +0 -35
  387. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  388. package/dest/synchronizer/synchronizer.js +0 -101
  389. package/dest/tagging/siloed_tag.d.ts +0 -14
  390. package/dest/tagging/siloed_tag.d.ts.map +0 -1
  391. package/dest/tagging/siloed_tag.js +0 -20
  392. package/dest/tagging/tag.d.ts +0 -12
  393. package/dest/tagging/tag.d.ts.map +0 -1
  394. package/dest/tagging/tag.js +0 -17
  395. package/dest/tagging/utils.d.ts +0 -18
  396. package/dest/tagging/utils.d.ts.map +0 -1
  397. package/dest/tagging/utils.js +0 -24
  398. package/src/contract_function_simulator/execution_data_provider.ts +0 -343
  399. package/src/contract_function_simulator/proxied_node.ts +0 -33
  400. package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1001
  401. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
  402. package/src/storage/address_data_provider/index.ts +0 -1
  403. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -147
  404. package/src/storage/capsule_data_provider/index.ts +0 -1
  405. package/src/storage/contract_data_provider/contract_data_provider.ts +0 -294
  406. package/src/storage/contract_data_provider/index.ts +0 -1
  407. package/src/storage/note_data_provider/index.ts +0 -2
  408. package/src/storage/note_data_provider/note_dao.ts +0 -154
  409. package/src/storage/note_data_provider/note_data_provider.ts +0 -393
  410. package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -128
  411. package/src/storage/sync_data_provider/index.ts +0 -1
  412. package/src/storage/tagging_data_provider/index.ts +0 -1
  413. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
  414. package/src/synchronizer/index.ts +0 -1
  415. package/src/synchronizer/synchronizer.ts +0 -120
  416. package/src/tagging/siloed_tag.ts +0 -22
  417. package/src/tagging/tag.ts +0 -16
  418. 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 = 3;
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 = 'f9168ceb5a2227c148c5021ebffd4e2ca0da99885b87c5be3ee5ac0d8dd3d67c';
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';
@@ -24,10 +24,9 @@ import {
24
24
  PrivateKernelResetDimensions,
25
25
  PrivateKernelResetHints,
26
26
  type PrivateKernelSimulateOutput,
27
- type ReadRequest,
28
27
  ReadRequestActionEnum,
29
28
  ReadRequestResetActions,
30
- type ScopedKeyValidationRequestAndGenerator,
29
+ type ScopedKeyValidationRequestAndSeparator,
31
30
  ScopedNoteHash,
32
31
  ScopedNullifier,
33
32
  ScopedReadRequest,
@@ -47,12 +46,10 @@ import type { PrivateKernelOracle } from '../private_kernel_oracle.js';
47
46
 
48
47
  function collectNestedReadRequests<N extends number>(
49
48
  executionStack: PrivateCallExecutionResult[],
50
- extractReadRequests: (execution: PrivateCallExecutionResult) => ClaimedLengthArray<ReadRequest, N>,
49
+ extractReadRequests: (execution: PrivateCallExecutionResult) => ClaimedLengthArray<ScopedReadRequest, N>,
51
50
  ): ScopedReadRequest[] {
52
51
  return collectNested(executionStack, executionResult => {
53
- return extractReadRequests(executionResult)
54
- .getActiveItems()
55
- .map(readRequest => new ScopedReadRequest(readRequest, executionResult.publicInputs.callContext.contractAddress));
52
+ return extractReadRequests(executionResult).getActiveItems();
56
53
  });
57
54
  }
58
55
 
@@ -71,9 +68,9 @@ function getNullifierMembershipWitnessResolver(oracle: PrivateKernelOracle) {
71
68
  };
72
69
  }
73
70
 
74
- async function getMasterSecretKeysAndAppKeyGenerators(
71
+ async function getMasterSecretKeysAndKeyTypeDomainSeparators(
75
72
  keyValidationRequests: ClaimedLengthArray<
76
- ScopedKeyValidationRequestAndGenerator,
73
+ ScopedKeyValidationRequestAndSeparator,
77
74
  typeof MAX_KEY_VALIDATION_REQUESTS_PER_TX
78
75
  >,
79
76
  numRequestsToVerify: number,
@@ -104,7 +101,7 @@ export class PrivateKernelResetPrivateInputsBuilder {
104
101
  private previousKernelOutput: PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>,
105
102
  private executionStack: PrivateCallExecutionResult[],
106
103
  private noteHashNullifierCounterMap: Map<number, number>,
107
- private validationRequestsSplitCounter: number,
104
+ private splitCounter: number,
108
105
  ) {
109
106
  this.previousKernel = previousKernelOutput.publicInputs;
110
107
  this.requestedDimensions = PrivateKernelResetDimensions.empty();
@@ -141,7 +138,7 @@ export class PrivateKernelResetPrivateInputsBuilder {
141
138
  }
142
139
  }
143
140
 
144
- async build(oracle: PrivateKernelOracle, noteHashLeafIndexMap: Map<bigint, bigint>) {
141
+ async build(oracle: PrivateKernelOracle) {
145
142
  if (privateKernelResetDimensionNames.every(name => !this.requestedDimensions[name])) {
146
143
  throw new Error('Reset is not required.');
147
144
  }
@@ -160,16 +157,6 @@ export class PrivateKernelResetPrivateInputsBuilder {
160
157
  allowRemainder,
161
158
  );
162
159
 
163
- const previousVkMembershipWitness = await oracle.getVkMembershipWitness(
164
- this.previousKernelOutput.verificationKey.keyAsFields,
165
- );
166
- const vkData = new VkData(
167
- this.previousKernelOutput.verificationKey,
168
- Number(previousVkMembershipWitness.leafIndex),
169
- previousVkMembershipWitness.siblingPath,
170
- );
171
- const previousKernelData = new PrivateKernelData(this.previousKernelOutput.publicInputs, vkData);
172
-
173
160
  this.reduceReadRequestActions(
174
161
  this.noteHashResetActions,
175
162
  dimensions.NOTE_HASH_PENDING_READ,
@@ -181,32 +168,52 @@ export class PrivateKernelResetPrivateInputsBuilder {
181
168
  dimensions.NULLIFIER_SETTLED_READ,
182
169
  );
183
170
 
184
- // TODO: Enable padding when we have a better idea what are the final amounts we should pad to.
185
- const paddedSideEffects = PaddedSideEffects.empty();
186
-
187
- return new PrivateKernelResetCircuitPrivateInputs(
188
- previousKernelData,
189
- paddedSideEffects,
190
- new PrivateKernelResetHints(
191
- 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
+ >(
192
179
  oracle,
193
180
  this.previousKernel.validationRequests.noteHashReadRequests,
194
181
  this.previousKernel.end.noteHashes,
195
182
  this.noteHashResetActions,
196
- noteHashLeafIndexMap,
197
183
  ),
198
- await buildNullifierReadRequestHintsFromResetActions(
184
+ buildNullifierReadRequestHintsFromResetActions<
185
+ typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX,
186
+ typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX
187
+ >(
199
188
  { getNullifierMembershipWitness: getNullifierMembershipWitnessResolver(oracle) },
200
189
  this.previousKernel.validationRequests.nullifierReadRequests,
201
190
  this.nullifierResetActions,
202
191
  ),
203
- await getMasterSecretKeysAndAppKeyGenerators(
204
- this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators,
192
+ getMasterSecretKeysAndKeyTypeDomainSeparators(
193
+ this.previousKernel.validationRequests.scopedKeyValidationRequestsAndSeparators,
205
194
  dimensions.KEY_VALIDATION,
206
195
  oracle,
207
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,
208
216
  this.transientDataSquashingHints,
209
- this.validationRequestsSplitCounter,
210
217
  ),
211
218
  dimensions,
212
219
  );
@@ -350,8 +357,8 @@ export class PrivateKernelResetPrivateInputsBuilder {
350
357
  }
351
358
 
352
359
  private needsResetNullifierKeys() {
353
- const numCurr = this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators.claimedLength;
354
- 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;
355
362
  const maxAmountToKeep = !this.nextIteration ? 0 : MAX_KEY_VALIDATION_REQUESTS_PER_TX;
356
363
  if (numCurr + numNext <= maxAmountToKeep) {
357
364
  return false;
@@ -403,7 +410,7 @@ export class PrivateKernelResetPrivateInputsBuilder {
403
410
  futureNoteHashReads,
404
411
  futureNullifierReads,
405
412
  this.noteHashNullifierCounterMap,
406
- this.validationRequestsSplitCounter,
413
+ this.splitCounter,
407
414
  );
408
415
 
409
416
  if (this.nextIteration && !numTransientData) {
@@ -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,11 +103,9 @@ export class PrivateKernelExecutionProver {
101
103
 
102
104
  const executionSteps: PrivateExecutionStep[] = [];
103
105
 
104
- const noteHashLeafIndexMap = collectNoteHashLeafIndexMap(executionResult);
105
106
  const noteHashNullifierCounterMap = collectNoteHashNullifierCounterMap(executionResult);
106
- const validationRequestsSplitCounter = isPrivateOnlyTx
107
- ? 0
108
- : getFinalMinRevertibleSideEffectCounter(executionResult);
107
+ const minRevertibleSideEffectCounter = getFinalMinRevertibleSideEffectCounter(executionResult);
108
+ const splitCounter = isPrivateOnlyTx ? 0 : minRevertibleSideEffectCounter;
109
109
 
110
110
  while (executionStack.length) {
111
111
  if (!firstIteration) {
@@ -113,11 +113,11 @@ export class PrivateKernelExecutionProver {
113
113
  output,
114
114
  executionStack,
115
115
  noteHashNullifierCounterMap,
116
- validationRequestsSplitCounter,
116
+ splitCounter,
117
117
  );
118
118
  while (resetBuilder.needsReset()) {
119
119
  const witgenTimer = new Timer();
120
- const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
120
+ const privateInputs = await resetBuilder.build(this.oracle);
121
121
  output = generateWitnesses
122
122
  ? await this.proofCreator.generateResetOutput(privateInputs)
123
123
  : await this.proofCreator.simulateReset(privateInputs);
@@ -134,7 +134,7 @@ export class PrivateKernelExecutionProver {
134
134
  output,
135
135
  executionStack,
136
136
  noteHashNullifierCounterMap,
137
- validationRequestsSplitCounter,
137
+ splitCounter,
138
138
  );
139
139
  }
140
140
  }
@@ -171,6 +171,7 @@ export class PrivateKernelExecutionProver {
171
171
  privateCallData,
172
172
  isPrivateOnlyTx,
173
173
  executionResult.firstNullifier,
174
+ minRevertibleSideEffectCounter,
174
175
  );
175
176
  this.log.debug(
176
177
  `Calling private kernel init with isPrivateOnly ${isPrivateOnlyTx} and firstNullifierHint ${proofInput.firstNullifierHint}`,
@@ -220,11 +221,11 @@ export class PrivateKernelExecutionProver {
220
221
  output,
221
222
  [],
222
223
  noteHashNullifierCounterMap,
223
- validationRequestsSplitCounter,
224
+ splitCounter,
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);
@@ -239,12 +240,7 @@ export class PrivateKernelExecutionProver {
239
240
  },
240
241
  });
241
242
 
242
- resetBuilder = new PrivateKernelResetPrivateInputsBuilder(
243
- output,
244
- [],
245
- noteHashNullifierCounterMap,
246
- validationRequestsSplitCounter,
247
- );
243
+ resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, [], noteHashNullifierCounterMap, splitCounter);
248
244
  }
249
245
 
250
246
  if (output.publicInputs.feePayer.isZero() && skipFeeEnforcement) {
@@ -264,20 +260,20 @@ export class PrivateKernelExecutionProver {
264
260
  // TODO: Enable padding once we better understand the final amounts to pad to.
265
261
  const paddedSideEffectAmounts = PaddedSideEffectAmounts.empty();
266
262
 
267
- // Use the aggregated includeByTimestamp set throughout the tx execution.
268
- // TODO: Call `computeTxIncludeByTimestamp` to round the value down and reduce precision, improving privacy.
269
- 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;
270
266
  const anchorBlockTimestamp = previousKernelData.publicInputs.constants.anchorBlockHeader.globalVariables.timestamp;
271
- if (includeByTimestampUpperBound <= anchorBlockTimestamp) {
267
+ if (expirationTimestampUpperBound <= anchorBlockTimestamp) {
272
268
  throw new Error(
273
- `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}.`,
274
270
  );
275
271
  }
276
272
 
277
273
  const privateInputs = new PrivateKernelTailCircuitPrivateInputs(
278
274
  previousKernelData,
279
275
  paddedSideEffectAmounts,
280
- includeByTimestampUpperBound,
276
+ expirationTimestampUpperBound,
281
277
  );
282
278
 
283
279
  const witgenTimer = new Timer();
@@ -295,8 +291,8 @@ export class PrivateKernelExecutionProver {
295
291
  },
296
292
  });
297
293
 
298
- // Hiding circuit is only executed if we are generating witnesses.
299
- // 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.
300
296
  if (generateWitnesses) {
301
297
  const previousKernelVkData = await this.getVkData(tailOutput.verificationKey);
302
298
 
@@ -420,6 +416,7 @@ export class PrivateKernelExecutionProver {
420
416
  await this.oracle.getContractClassIdPreimage(currentContractClassId);
421
417
 
422
418
  const updatedClassIdHints = await this.oracle.getUpdatedClassIdHints(contractAddress);
419
+
423
420
  return PrivateCallData.from({
424
421
  publicInputs,
425
422
  vk,