@aztec/pxe 0.0.1-commit.24de95ac → 0.0.1-commit.2e2504e2

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 (398) hide show
  1. package/dest/bin/check_oracle_version.d.ts +1 -1
  2. package/dest/bin/check_oracle_version.js +105 -15
  3. package/dest/block_synchronizer/block_synchronizer.d.ts +45 -0
  4. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  5. package/dest/block_synchronizer/block_synchronizer.js +153 -0
  6. package/dest/block_synchronizer/index.d.ts +2 -0
  7. package/dest/block_synchronizer/index.d.ts.map +1 -0
  8. package/dest/block_synchronizer/index.js +1 -0
  9. package/dest/config/index.d.ts +6 -12
  10. package/dest/config/index.d.ts.map +1 -1
  11. package/dest/config/index.js +24 -13
  12. package/dest/config/package_info.d.ts +1 -1
  13. package/dest/config/package_info.js +1 -1
  14. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  15. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  16. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  17. package/dest/contract_function_simulator/contract_function_simulator.d.ts +44 -16
  18. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/contract_function_simulator.js +81 -41
  20. package/dest/contract_function_simulator/execution_note_cache.d.ts +25 -14
  21. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  22. package/dest/contract_function_simulator/execution_note_cache.js +59 -34
  23. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +2 -2
  24. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
  26. package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
  27. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/index.d.ts +2 -2
  29. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  30. package/dest/contract_function_simulator/index.js +1 -1
  31. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +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 +6 -3
  34. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
  35. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  36. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
  37. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +3 -3
  38. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
  40. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +7 -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 +13 -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/index.d.ts +1 -1
  47. package/dest/contract_function_simulator/oracle/interfaces.d.ts +29 -19
  48. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  49. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +2 -2
  50. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  51. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
  52. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +14 -8
  53. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  54. package/dest/contract_function_simulator/oracle/note_packing_utils.js +16 -11
  55. package/dest/contract_function_simulator/oracle/oracle.d.ts +14 -11
  56. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  57. package/dest/contract_function_simulator/oracle/oracle.js +90 -50
  58. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -27
  59. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  60. package/dest/contract_function_simulator/oracle/private_execution.js +2 -38
  61. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +38 -33
  62. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  63. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +58 -49
  64. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +84 -30
  65. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  66. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +170 -68
  67. package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
  68. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  69. package/dest/contract_function_simulator/pick_notes.js +1 -1
  70. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  71. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  72. package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
  73. package/dest/contract_sync/contract_sync_service.d.ts +41 -0
  74. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  75. package/dest/contract_sync/contract_sync_service.js +82 -0
  76. package/dest/contract_sync/helpers.d.ts +28 -0
  77. package/dest/contract_sync/helpers.d.ts.map +1 -0
  78. package/dest/contract_sync/helpers.js +55 -0
  79. package/dest/debug/pxe_debug_utils.d.ts +41 -0
  80. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  81. package/dest/debug/pxe_debug_utils.js +47 -0
  82. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  83. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  84. package/dest/entrypoints/client/bundle/index.js +0 -1
  85. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  86. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  87. package/dest/entrypoints/client/bundle/utils.js +24 -9
  88. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  89. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  90. package/dest/entrypoints/client/lazy/index.js +0 -1
  91. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  92. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  93. package/dest/entrypoints/client/lazy/utils.js +25 -10
  94. package/dest/entrypoints/pxe_creation_options.d.ts +7 -3
  95. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  96. package/dest/entrypoints/server/index.d.ts +4 -2
  97. package/dest/entrypoints/server/index.d.ts.map +1 -1
  98. package/dest/entrypoints/server/index.js +3 -1
  99. package/dest/entrypoints/server/utils.d.ts +1 -1
  100. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  101. package/dest/entrypoints/server/utils.js +31 -27
  102. package/dest/error_enriching.d.ts +4 -4
  103. package/dest/error_enriching.d.ts.map +1 -1
  104. package/dest/error_enriching.js +6 -6
  105. package/dest/events/event_service.d.ts +15 -0
  106. package/dest/events/event_service.d.ts.map +1 -0
  107. package/dest/events/event_service.js +44 -0
  108. package/dest/events/index.d.ts +2 -0
  109. package/dest/events/index.d.ts.map +1 -0
  110. package/dest/events/index.js +1 -0
  111. package/dest/events/private_event_filter_validator.d.ts +9 -0
  112. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  113. package/dest/events/private_event_filter_validator.js +38 -0
  114. package/dest/job_coordinator/job_coordinator.d.ts +75 -0
  115. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  116. package/dest/job_coordinator/job_coordinator.js +94 -0
  117. package/dest/logs/log_service.d.ts +28 -0
  118. package/dest/logs/log_service.d.ts.map +1 -0
  119. package/dest/logs/log_service.js +123 -0
  120. package/dest/notes/index.d.ts +2 -0
  121. package/dest/notes/index.d.ts.map +1 -0
  122. package/dest/notes/index.js +1 -0
  123. package/dest/notes/note_service.d.ts +48 -0
  124. package/dest/notes/note_service.d.ts.map +1 -0
  125. package/dest/notes/note_service.js +147 -0
  126. package/dest/oracle_version.d.ts +3 -3
  127. package/dest/oracle_version.d.ts.map +1 -1
  128. package/dest/oracle_version.js +4 -3
  129. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +1 -1
  130. package/dest/private_kernel/hints/index.d.ts +2 -2
  131. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  132. package/dest/private_kernel/hints/index.js +1 -1
  133. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
  134. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  135. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +19 -13
  136. package/dest/private_kernel/index.d.ts +1 -1
  137. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  138. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  139. package/dest/private_kernel/private_kernel_execution_prover.js +17 -17
  140. package/dest/private_kernel/private_kernel_oracle.d.ts +26 -29
  141. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  142. package/dest/private_kernel/private_kernel_oracle.js +90 -2
  143. package/dest/pxe.d.ts +55 -83
  144. package/dest/pxe.d.ts.map +1 -1
  145. package/dest/pxe.js +207 -243
  146. package/dest/storage/address_store/address_store.d.ts +11 -0
  147. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  148. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -12
  149. package/dest/storage/address_store/index.d.ts +2 -0
  150. package/dest/storage/address_store/index.d.ts.map +1 -0
  151. package/dest/storage/address_store/index.js +1 -0
  152. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
  153. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  154. package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +10 -10
  155. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  156. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  157. package/dest/storage/anchor_block_store/index.js +1 -0
  158. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  159. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  160. package/dest/storage/capsule_store/capsule_store.js +253 -0
  161. package/dest/storage/capsule_store/index.d.ts +2 -0
  162. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  163. package/dest/storage/capsule_store/index.js +1 -0
  164. package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +7 -15
  165. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  166. package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +56 -28
  167. package/dest/storage/contract_store/index.d.ts +2 -0
  168. package/dest/storage/contract_store/index.d.ts.map +1 -0
  169. package/dest/storage/contract_store/index.js +1 -0
  170. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  171. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  172. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
  173. package/dest/storage/index.d.ts +8 -8
  174. package/dest/storage/index.d.ts.map +1 -1
  175. package/dest/storage/index.js +7 -7
  176. package/dest/storage/metadata.d.ts +2 -2
  177. package/dest/storage/metadata.js +1 -1
  178. package/dest/storage/note_store/index.d.ts +3 -0
  179. package/dest/storage/note_store/index.d.ts.map +1 -0
  180. package/dest/storage/note_store/index.js +2 -0
  181. package/dest/storage/note_store/note_store.d.ts +83 -0
  182. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  183. package/dest/storage/note_store/note_store.js +341 -0
  184. package/dest/storage/note_store/stored_note.d.ts +16 -0
  185. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  186. package/dest/storage/note_store/stored_note.js +43 -0
  187. package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
  188. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  189. package/dest/storage/private_event_store/private_event_store.js +273 -0
  190. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  191. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  192. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  193. package/dest/storage/tagging_store/index.d.ts +4 -0
  194. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  195. package/dest/storage/tagging_store/index.js +3 -0
  196. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  197. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  198. package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
  199. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  200. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  201. package/dest/storage/tagging_store/sender_address_book_store.js +36 -0
  202. package/dest/storage/tagging_store/sender_tagging_store.d.ts +77 -0
  203. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  204. package/dest/storage/tagging_store/sender_tagging_store.js +348 -0
  205. package/dest/tagging/constants.d.ts +2 -2
  206. package/dest/tagging/constants.d.ts.map +1 -1
  207. package/dest/tagging/constants.js +10 -2
  208. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  209. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  210. package/dest/tagging/get_all_logs_by_tags.js +46 -0
  211. package/dest/tagging/index.d.ts +16 -6
  212. package/dest/tagging/index.d.ts.map +1 -1
  213. package/dest/tagging/index.js +15 -5
  214. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +15 -0
  215. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
  216. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
  217. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  218. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  219. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  220. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +15 -0
  221. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
  222. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +32 -0
  223. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +21 -0
  224. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  225. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
  226. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
  227. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  228. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +29 -0
  229. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +21 -0
  230. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  231. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +60 -0
  232. package/package.json +29 -19
  233. package/src/bin/check_oracle_version.ts +131 -20
  234. package/src/block_synchronizer/block_synchronizer.ts +178 -0
  235. package/src/block_synchronizer/index.ts +1 -0
  236. package/src/config/index.ts +24 -25
  237. package/src/config/package_info.ts +1 -1
  238. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  239. package/src/contract_function_simulator/contract_function_simulator.ts +131 -43
  240. package/src/contract_function_simulator/execution_note_cache.ts +58 -28
  241. package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
  242. package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
  243. package/src/contract_function_simulator/index.ts +1 -1
  244. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +6 -2
  245. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
  246. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -2
  247. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +15 -3
  248. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  249. package/src/contract_function_simulator/oracle/interfaces.ts +42 -17
  250. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
  251. package/src/contract_function_simulator/oracle/note_packing_utils.ts +30 -14
  252. package/src/contract_function_simulator/oracle/oracle.ts +108 -46
  253. package/src/contract_function_simulator/oracle/private_execution.ts +2 -68
  254. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +135 -60
  255. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +261 -75
  256. package/src/contract_function_simulator/pick_notes.ts +1 -1
  257. package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
  258. package/src/contract_sync/contract_sync_service.ts +129 -0
  259. package/src/contract_sync/helpers.ts +93 -0
  260. package/src/debug/pxe_debug_utils.ts +63 -0
  261. package/src/entrypoints/client/bundle/index.ts +0 -1
  262. package/src/entrypoints/client/bundle/utils.ts +16 -17
  263. package/src/entrypoints/client/lazy/index.ts +0 -1
  264. package/src/entrypoints/client/lazy/utils.ts +17 -18
  265. package/src/entrypoints/pxe_creation_options.ts +6 -2
  266. package/src/entrypoints/server/index.ts +3 -1
  267. package/src/entrypoints/server/utils.ts +27 -49
  268. package/src/error_enriching.ts +7 -15
  269. package/src/events/event_service.ts +71 -0
  270. package/src/events/index.ts +1 -0
  271. package/src/events/private_event_filter_validator.ts +46 -0
  272. package/src/job_coordinator/job_coordinator.ts +150 -0
  273. package/src/logs/log_service.ts +220 -0
  274. package/src/notes/index.ts +1 -0
  275. package/src/notes/note_service.ts +195 -0
  276. package/src/oracle_version.ts +4 -3
  277. package/src/private_kernel/hints/index.ts +1 -1
  278. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +38 -31
  279. package/src/private_kernel/private_kernel_execution_prover.ts +21 -24
  280. package/src/private_kernel/private_kernel_oracle.ts +118 -37
  281. package/src/pxe.ts +291 -318
  282. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +16 -16
  283. package/src/storage/address_store/index.ts +1 -0
  284. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +10 -11
  285. package/src/storage/anchor_block_store/index.ts +1 -0
  286. package/src/storage/capsule_store/capsule_store.ts +315 -0
  287. package/src/storage/capsule_store/index.ts +1 -0
  288. package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +67 -31
  289. package/src/storage/contract_store/index.ts +1 -0
  290. package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
  291. package/src/storage/index.ts +7 -7
  292. package/src/storage/metadata.ts +1 -1
  293. package/src/storage/note_store/index.ts +2 -0
  294. package/src/storage/note_store/note_store.ts +411 -0
  295. package/src/storage/note_store/stored_note.ts +48 -0
  296. package/src/storage/private_event_store/private_event_store.ts +384 -0
  297. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  298. package/src/storage/tagging_store/index.ts +3 -0
  299. package/src/storage/tagging_store/recipient_tagging_store.ts +139 -0
  300. package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
  301. package/src/storage/tagging_store/sender_tagging_store.ts +429 -0
  302. package/src/tagging/constants.ts +10 -2
  303. package/src/tagging/get_all_logs_by_tags.ts +68 -0
  304. package/src/tagging/index.ts +18 -5
  305. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +143 -0
  306. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  307. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +49 -0
  308. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +99 -0
  309. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +36 -0
  310. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +84 -0
  311. package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -274
  312. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
  313. package/dest/contract_function_simulator/execution_data_provider.js +0 -14
  314. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  315. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  316. package/dest/contract_function_simulator/proxied_node.js +0 -27
  317. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
  318. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
  319. package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -701
  320. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  321. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  322. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -45
  323. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  324. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  325. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  326. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  327. package/dest/storage/address_data_provider/index.d.ts +0 -2
  328. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  329. package/dest/storage/address_data_provider/index.js +0 -1
  330. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
  331. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  332. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -118
  333. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  334. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  335. package/dest/storage/capsule_data_provider/index.js +0 -1
  336. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  337. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  338. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  339. package/dest/storage/contract_data_provider/index.js +0 -1
  340. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  341. package/dest/storage/note_data_provider/index.d.ts +0 -3
  342. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  343. package/dest/storage/note_data_provider/index.js +0 -2
  344. package/dest/storage/note_data_provider/note_dao.d.ts +0 -100
  345. package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
  346. package/dest/storage/note_data_provider/note_dao.js +0 -102
  347. package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -83
  348. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  349. package/dest/storage/note_data_provider/note_data_provider.js +0 -308
  350. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -43
  351. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  352. package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -104
  353. package/dest/storage/sync_data_provider/index.d.ts +0 -2
  354. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  355. package/dest/storage/sync_data_provider/index.js +0 -1
  356. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -10
  357. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  358. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  359. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  360. package/dest/storage/tagging_data_provider/index.js +0 -1
  361. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
  362. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  363. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
  364. package/dest/synchronizer/index.d.ts +0 -2
  365. package/dest/synchronizer/index.d.ts.map +0 -1
  366. package/dest/synchronizer/index.js +0 -1
  367. package/dest/synchronizer/synchronizer.d.ts +0 -35
  368. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  369. package/dest/synchronizer/synchronizer.js +0 -101
  370. package/dest/tagging/siloed_tag.d.ts +0 -14
  371. package/dest/tagging/siloed_tag.d.ts.map +0 -1
  372. package/dest/tagging/siloed_tag.js +0 -20
  373. package/dest/tagging/tag.d.ts +0 -12
  374. package/dest/tagging/tag.d.ts.map +0 -1
  375. package/dest/tagging/tag.js +0 -17
  376. package/dest/tagging/utils.d.ts +0 -18
  377. package/dest/tagging/utils.d.ts.map +0 -1
  378. package/dest/tagging/utils.js +0 -24
  379. package/src/contract_function_simulator/execution_data_provider.ts +0 -343
  380. package/src/contract_function_simulator/proxied_node.ts +0 -33
  381. package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1019
  382. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
  383. package/src/storage/address_data_provider/index.ts +0 -1
  384. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -147
  385. package/src/storage/capsule_data_provider/index.ts +0 -1
  386. package/src/storage/contract_data_provider/index.ts +0 -1
  387. package/src/storage/note_data_provider/index.ts +0 -2
  388. package/src/storage/note_data_provider/note_dao.ts +0 -154
  389. package/src/storage/note_data_provider/note_data_provider.ts +0 -393
  390. package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -148
  391. package/src/storage/sync_data_provider/index.ts +0 -1
  392. package/src/storage/tagging_data_provider/index.ts +0 -1
  393. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
  394. package/src/synchronizer/index.ts +0 -1
  395. package/src/synchronizer/synchronizer.ts +0 -120
  396. package/src/tagging/siloed_tag.ts +0 -22
  397. package/src/tagging/tag.ts +0 -16
  398. package/src/tagging/utils.ts +0 -31
@@ -7,6 +7,7 @@ import {
7
7
  FIXED_AVM_STARTUP_L2_GAS,
8
8
  FIXED_DA_GAS,
9
9
  FIXED_L2_GAS,
10
+ GeneratorIndex,
10
11
  L2_GAS_PER_CONTRACT_CLASS_LOG,
11
12
  L2_GAS_PER_PRIVATE_LOG,
12
13
  MAX_CONTRACT_CLASS_LOGS_PER_TX,
@@ -17,10 +18,11 @@ import {
17
18
  MAX_PRIVATE_LOGS_PER_TX,
18
19
  } from '@aztec/constants';
19
20
  import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
20
- import { poseidon2Hash } from '@aztec/foundation/crypto';
21
- import { Fr } from '@aztec/foundation/fields';
21
+ import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
22
+ import { Fr } from '@aztec/foundation/curves/bn254';
22
23
  import { type Logger, createLogger } from '@aztec/foundation/log';
23
24
  import { Timer } from '@aztec/foundation/timer';
25
+ import type { KeyStore } from '@aztec/key-store';
24
26
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
25
27
  import { protocolContractsHash } from '@aztec/protocol-contracts';
26
28
  import {
@@ -32,12 +34,19 @@ import {
32
34
  toACVMWitness,
33
35
  witnessMapToFields,
34
36
  } from '@aztec/simulator/client';
35
- import type { AbiDecoded, FunctionCall } from '@aztec/stdlib/abi';
36
- import { FunctionSelector, FunctionType, decodeFromAbi } from '@aztec/stdlib/abi';
37
+ import type { FunctionCall } from '@aztec/stdlib/abi';
38
+ import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
37
39
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
38
40
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
39
41
  import { Gas } from '@aztec/stdlib/gas';
40
- import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
42
+ import {
43
+ computeNoteHashNonce,
44
+ computeProtocolNullifier,
45
+ computeUniqueNoteHash,
46
+ siloNoteHash,
47
+ siloNullifier,
48
+ } from '@aztec/stdlib/hash';
49
+ import type { AztecNode } from '@aztec/stdlib/interfaces/server';
41
50
  import {
42
51
  PartialPrivateTailPublicInputsForPublic,
43
52
  PartialPrivateTailPublicInputsForRollup,
@@ -53,6 +62,7 @@ import { PrivateLog } from '@aztec/stdlib/logs';
53
62
  import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
54
63
  import { ChonkProof } from '@aztec/stdlib/proofs';
55
64
  import {
65
+ BlockHeader,
56
66
  CallContext,
57
67
  HashedValues,
58
68
  PrivateExecutionResult,
@@ -62,13 +72,21 @@ import {
62
72
  getFinalMinRevertibleSideEffectCounter,
63
73
  } from '@aztec/stdlib/tx';
64
74
 
65
- import type { ContractDataProvider } from '../storage/index.js';
66
- import type { ExecutionDataProvider } from './execution_data_provider.js';
75
+ import type { ContractSyncService } from '../contract_sync/contract_sync_service.js';
76
+ import type { AddressStore } from '../storage/address_store/address_store.js';
77
+ import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
78
+ import type { ContractStore } from '../storage/contract_store/contract_store.js';
79
+ import type { NoteStore } from '../storage/note_store/note_store.js';
80
+ import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
81
+ import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
82
+ import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
83
+ import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
84
+ import type { BenchmarkedNode } from './benchmarked_node.js';
67
85
  import { ExecutionNoteCache } from './execution_note_cache.js';
68
86
  import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
69
87
  import { HashedValuesCache } from './hashed_values_cache.js';
70
88
  import { Oracle } from './oracle/oracle.js';
71
- import { executePrivateFunction, verifyCurrentClassId } from './oracle/private_execution.js';
89
+ import { executePrivateFunction } from './oracle/private_execution.js';
72
90
  import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
73
91
  import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
74
92
 
@@ -79,8 +97,18 @@ export class ContractFunctionSimulator {
79
97
  private log: Logger;
80
98
 
81
99
  constructor(
82
- private executionDataProvider: ExecutionDataProvider,
100
+ private contractStore: ContractStore,
101
+ private noteStore: NoteStore,
102
+ private keyStore: KeyStore,
103
+ private addressStore: AddressStore,
104
+ private aztecNode: AztecNode,
105
+ private senderTaggingStore: SenderTaggingStore,
106
+ private recipientTaggingStore: RecipientTaggingStore,
107
+ private senderAddressBookStore: SenderAddressBookStore,
108
+ private capsuleStore: CapsuleStore,
109
+ private privateEventStore: PrivateEventStore,
83
110
  private simulator: CircuitSimulator,
111
+ private contractSyncService: ContractSyncService,
84
112
  ) {
85
113
  this.log = createLogger('simulator');
86
114
  }
@@ -92,9 +120,11 @@ export class ContractFunctionSimulator {
92
120
  * @param contractAddress - The address of the contract (should match request.origin)
93
121
  * @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract
94
122
  * or a specific account.
123
+ * @param anchorBlockHeader - The block header to use as base state for this run.
95
124
  * @param senderForTags - The address that is used as a tagging sender when emitting private logs. Returned from
96
125
  * the `privateGetSenderForTags` oracle.
97
126
  * @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
127
+ * @param jobId - The job ID for staged writes.
98
128
  * @returns The result of the execution.
99
129
  */
100
130
  public async run(
@@ -102,15 +132,14 @@ export class ContractFunctionSimulator {
102
132
  contractAddress: AztecAddress,
103
133
  selector: FunctionSelector,
104
134
  msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
105
- senderForTags?: AztecAddress,
106
- scopes?: AztecAddress[],
135
+ anchorBlockHeader: BlockHeader,
136
+ senderForTags: AztecAddress | undefined,
137
+ scopes: AztecAddress[] | undefined,
138
+ jobId: string,
107
139
  ): Promise<PrivateExecutionResult> {
108
140
  const simulatorSetupTimer = new Timer();
109
- const anchorBlockHeader = await this.executionDataProvider.getAnchorBlockHeader();
110
-
111
- await verifyCurrentClassId(contractAddress, this.executionDataProvider);
112
141
 
113
- const entryPointArtifact = await this.executionDataProvider.getFunctionArtifact(contractAddress, selector);
142
+ const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
114
143
 
115
144
  if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
116
145
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
@@ -123,7 +152,7 @@ export class ContractFunctionSimulator {
123
152
  }
124
153
 
125
154
  // reserve the first side effect for the tx hash (inserted by the private kernel)
126
- const startSideEffectCounter = 1;
155
+ const startSideEffectCounter = 2;
127
156
 
128
157
  const callContext = new CallContext(
129
158
  msgSender,
@@ -132,8 +161,8 @@ export class ContractFunctionSimulator {
132
161
  entryPointArtifact.isStatic,
133
162
  );
134
163
 
135
- const txRequestHash = await request.toTxRequest().hash();
136
- const noteCache = new ExecutionNoteCache(txRequestHash);
164
+ const protocolNullifier = await computeProtocolNullifier(await request.toTxRequest().hash());
165
+ const noteCache = new ExecutionNoteCache(protocolNullifier);
137
166
  const taggingIndexCache = new ExecutionTaggingIndexCache();
138
167
 
139
168
  const privateExecutionOracle = new PrivateExecutionOracle(
@@ -141,12 +170,26 @@ export class ContractFunctionSimulator {
141
170
  request.txContext,
142
171
  callContext,
143
172
  anchorBlockHeader,
173
+ async call => {
174
+ await this.runUtility(call, [], anchorBlockHeader, scopes, jobId);
175
+ },
144
176
  request.authWitnesses,
145
177
  request.capsules,
146
178
  HashedValuesCache.create(request.argsOfCalls),
147
179
  noteCache,
148
180
  taggingIndexCache,
149
- this.executionDataProvider,
181
+ this.contractStore,
182
+ this.noteStore,
183
+ this.keyStore,
184
+ this.addressStore,
185
+ this.aztecNode,
186
+ this.senderTaggingStore,
187
+ this.recipientTaggingStore,
188
+ this.senderAddressBookStore,
189
+ this.capsuleStore,
190
+ this.privateEventStore,
191
+ this.contractSyncService,
192
+ jobId,
150
193
  0, // totalPublicArgsCount
151
194
  startSideEffectCounter,
152
195
  undefined, // log
@@ -170,8 +213,9 @@ export class ContractFunctionSimulator {
170
213
  request.functionSelector,
171
214
  );
172
215
  const simulatorTeardownTimer = new Timer();
173
- const { usedTxRequestHashForNonces } = noteCache.finish();
174
- const firstNullifierHint = usedTxRequestHashForNonces ? Fr.ZERO : noteCache.getAllNullifiers()[0];
216
+
217
+ noteCache.finish();
218
+ const firstNullifierHint = noteCache.getNonceGenerator();
175
219
 
176
220
  const publicCallRequests = collectNested([executionResult], r =>
177
221
  r.publicInputs.publicCallRequests
@@ -207,20 +251,42 @@ export class ContractFunctionSimulator {
207
251
  * Runs a utility function.
208
252
  * @param call - The function call to execute.
209
253
  * @param authwits - Authentication witnesses required for the function call.
254
+ * @param anchorBlockHeader - The block header to use as base state for this run.
210
255
  * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
211
256
  * accounts if not specified.
212
- * @returns A decoded ABI value containing the function's return data.
257
+ * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
213
258
  */
214
- public async runUtility(call: FunctionCall, authwits: AuthWitness[], scopes?: AztecAddress[]): Promise<AbiDecoded> {
215
- await verifyCurrentClassId(call.to, this.executionDataProvider);
216
-
217
- const entryPointArtifact = await this.executionDataProvider.getFunctionArtifact(call.to, call.selector);
259
+ public async runUtility(
260
+ call: FunctionCall,
261
+ authwits: AuthWitness[],
262
+ anchorBlockHeader: BlockHeader,
263
+ scopes: AztecAddress[] | undefined,
264
+ jobId: string,
265
+ ): Promise<Fr[]> {
266
+ const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
218
267
 
219
268
  if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
220
269
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
221
270
  }
222
271
 
223
- const oracle = new UtilityExecutionOracle(call.to, authwits, [], this.executionDataProvider, undefined, scopes);
272
+ const oracle = new UtilityExecutionOracle(
273
+ call.to,
274
+ authwits,
275
+ [],
276
+ anchorBlockHeader,
277
+ this.contractStore,
278
+ this.noteStore,
279
+ this.keyStore,
280
+ this.addressStore,
281
+ this.aztecNode,
282
+ this.recipientTaggingStore,
283
+ this.senderAddressBookStore,
284
+ this.capsuleStore,
285
+ this.privateEventStore,
286
+ jobId,
287
+ undefined,
288
+ scopes,
289
+ );
224
290
 
225
291
  try {
226
292
  this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
@@ -244,17 +310,28 @@ export class ContractFunctionSimulator {
244
310
  );
245
311
  });
246
312
 
247
- const returnWitness = witnessMapToFields(acirExecutionResult.returnWitness);
248
313
  this.log.verbose(`Utility simulation for ${call.to}.${call.selector} completed`);
249
- return decodeFromAbi(entryPointArtifact.returnTypes, returnWitness);
314
+ return witnessMapToFields(acirExecutionResult.returnWitness);
250
315
  } catch (err) {
251
316
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
252
317
  }
253
318
  }
254
319
  // docs:end:execute_utility_function
255
320
 
321
+ /**
322
+ * Returns the execution statistics collected during the simulator run.
323
+ * @returns The execution statistics.
324
+ */
256
325
  getStats() {
257
- return this.executionDataProvider.getStats();
326
+ const nodeRPCCalls =
327
+ typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
328
+ ? (this.aztecNode as BenchmarkedNode).getStats()
329
+ : {
330
+ perMethod: {},
331
+ roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
332
+ };
333
+
334
+ return { nodeRPCCalls };
258
335
  }
259
336
  }
260
337
 
@@ -275,15 +352,15 @@ class OrderedSideEffect<T> {
275
352
  * (allowing state overrides) and is much faster, while still generating a valid
276
353
  * output that can be sent to the node for public simulation
277
354
  * @param privateExecutionResult - The result of the private execution.
278
- * @param nonceGenerator - A nonce generator for note hashes. According to the protocol rules,
279
- * it can either be the first nullifier in the tx or the hash of the initial tx request if there are none.
280
- * @param contractDataProvider - A provider for contract data in order to get function names and debug info.
355
+ * @param contractStore - A provider for contract data in order to get function names and debug info.
356
+ * @param minRevertibleSideEffectCounterOverride - Optional override for the min revertible side effect counter.
357
+ * Used by TXE to simulate account contract behavior (setting the counter before app execution).
281
358
  * @returns The simulated proving result.
282
359
  */
283
360
  export async function generateSimulatedProvingResult(
284
361
  privateExecutionResult: PrivateExecutionResult,
285
- nonceGenerator: Fr,
286
- contractDataProvider: ContractDataProvider,
362
+ contractStore: ContractStore,
363
+ minRevertibleSideEffectCounterOverride?: number,
287
364
  ): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
288
365
  const siloedNoteHashes: OrderedSideEffect<Fr>[] = [];
289
366
  const nullifiers: OrderedSideEffect<Fr>[] = [];
@@ -324,7 +401,10 @@ export async function generateSimulatedProvingResult(
324
401
 
325
402
  const privateLogsFromExecution = await Promise.all(
326
403
  execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
327
- metadata.log.fields[0] = await poseidon2Hash([contractAddress, metadata.log.fields[0]]);
404
+ metadata.log.fields[0] = await poseidon2HashWithSeparator(
405
+ [contractAddress, metadata.log.fields[0]],
406
+ GeneratorIndex.PRIVATE_LOG_FIRST_FIELD,
407
+ );
328
408
  return new OrderedSideEffect(metadata.log, metadata.counter);
329
409
  }),
330
410
  );
@@ -360,7 +440,7 @@ export async function generateSimulatedProvingResult(
360
440
  : execution.publicInputs.publicTeardownCallRequest;
361
441
 
362
442
  executionSteps.push({
363
- functionName: await contractDataProvider.getDebugFunctionName(
443
+ functionName: await contractStore.getDebugFunctionName(
364
444
  execution.publicInputs.callContext.contractAddress,
365
445
  execution.publicInputs.callContext.functionSelector,
366
446
  ),
@@ -387,16 +467,18 @@ export async function generateSimulatedProvingResult(
387
467
  const getEffect = <T>(orderedSideEffect: OrderedSideEffect<T>) => orderedSideEffect.sideEffect;
388
468
 
389
469
  const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
390
- const minRevertibleSideEffectCounter = getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
470
+ const minRevertibleSideEffectCounter =
471
+ minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
391
472
 
392
473
  const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(
393
474
  nullifiers.sort(sortByCounter),
394
475
  minRevertibleSideEffectCounter,
395
476
  );
396
- if (nonRevertibleNullifiers.length > 0 && !nonRevertibleNullifiers[0].equals(nonceGenerator)) {
477
+ const nonceGenerator = privateExecutionResult.firstNullifier;
478
+ if (nonRevertibleNullifiers.length === 0) {
479
+ nonRevertibleNullifiers.push(nonceGenerator);
480
+ } else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
397
481
  throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
398
- } else {
399
- nonRevertibleNullifiers.unshift(nonceGenerator);
400
482
  }
401
483
 
402
484
  if (isPrivateOnlyTx) {
@@ -432,6 +514,12 @@ export async function generateSimulatedProvingResult(
432
514
  siloedNoteHashes.sort(sortByCounter),
433
515
  minRevertibleSideEffectCounter,
434
516
  );
517
+ const nonRevertibleUniqueNoteHashes = await Promise.all(
518
+ nonRevertibleNoteHashes.map(async (noteHash, i) => {
519
+ const nonce = await computeNoteHashNonce(nonceGenerator, i);
520
+ return await computeUniqueNoteHash(nonce, noteHash);
521
+ }),
522
+ );
435
523
  const [nonRevertibleL2ToL1Messages, revertibleL2ToL1Messages] = splitOrderedSideEffects(
436
524
  l2ToL1Messages.sort(sortByCounter),
437
525
  minRevertibleSideEffectCounter,
@@ -450,7 +538,7 @@ export async function generateSimulatedProvingResult(
450
538
  );
451
539
 
452
540
  const nonRevertibleData = new PrivateToPublicAccumulatedData(
453
- padArrayEnd(nonRevertibleNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
541
+ padArrayEnd(nonRevertibleUniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
454
542
  padArrayEnd(nonRevertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
455
543
  padArrayEnd(nonRevertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
456
544
  padArrayEnd(nonRevertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
@@ -498,7 +586,7 @@ function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertib
498
586
  const revertibleSideEffects: T[] = [];
499
587
  const nonRevertibleSideEffects: T[] = [];
500
588
  effects.forEach(effect => {
501
- if (effect.counter < minRevertibleSideEffectCounter) {
589
+ if (minRevertibleSideEffectCounter === 0 || effect.counter < minRevertibleSideEffectCounter) {
502
590
  nonRevertibleSideEffects.push(effect.sideEffect);
503
591
  } else {
504
592
  revertibleSideEffects.push(effect.sideEffect);
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
3
  import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
4
4
 
@@ -32,21 +32,24 @@ export class ExecutionNoteCache {
32
32
  private nullifierMap: Map<bigint, Set<bigint>> = new Map();
33
33
 
34
34
  /**
35
- * All nullifiers emitted in this transaction.
35
+ * Nullifiers emitted by private calls in this transaction.
36
36
  */
37
- private allNullifiers: Set<bigint> = new Set();
37
+ private emittedNullifiers: Set<bigint> = new Set();
38
38
 
39
+ /**
40
+ * The counter that separates non-revertible side effects (which persist even if the tx reverts) from revertible ones.
41
+ */
39
42
  private minRevertibleSideEffectCounter = 0;
40
43
 
41
44
  private inRevertiblePhase = false;
42
45
 
43
46
  /**
44
- * We don't need to use the tx request hash for nonces if another non revertible nullifier is emitted.
45
- * In that case we disable injecting the tx request hash as a nullifier.
47
+ * Whether the protocol nullifier was used for nonce generation.
48
+ * We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
46
49
  */
47
- private usedTxRequestHashForNonces = true;
50
+ private usedProtocolNullifierForNonces: boolean | undefined;
48
51
 
49
- constructor(private readonly txRequestHash: Fr) {}
52
+ constructor(private readonly protocolNullifier: Fr) {}
50
53
 
51
54
  /**
52
55
  * Enters the revertible phase of the transaction.
@@ -61,17 +64,17 @@ export class ExecutionNoteCache {
61
64
  this.inRevertiblePhase = true;
62
65
  this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
63
66
 
64
- let nonceGenerator = this.txRequestHash;
65
- const nullifiers = this.getAllNullifiers();
66
- if (nullifiers.length > 0) {
67
- nonceGenerator = new Fr(nullifiers[0]);
68
- this.usedTxRequestHashForNonces = false;
69
- }
67
+ const nullifiers = this.getEmittedNullifiers();
68
+ // If there are no nullifiers emitted by private calls so far, we use the protocol nullifier as the nonce generator.
69
+ // Note: There could still be nullifiers emitted after the counter is set, but those nullifiers are revertible, so
70
+ // we don't want to use them as the nonce generator.
71
+ this.usedProtocolNullifierForNonces = nullifiers.length === 0;
72
+ const nonceGenerator = this.usedProtocolNullifierForNonces ? this.protocolNullifier : new Fr(nullifiers[0]);
70
73
 
71
74
  // The existing pending notes are all non-revertible.
72
75
  // They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
73
76
  // Their indexes in the tx are known at this point and won't change. So we can assign a nonce to each one of them.
74
- // The nonces will be used to create the "complete" nullifier.
77
+ // The nonces will be used to create the "unique" note hashes.
75
78
  const updatedNotes = await Promise.all(
76
79
  this.notes.map(async ({ note, counter }, i) => {
77
80
  const noteNonce = await computeNoteHashNonce(nonceGenerator, i);
@@ -92,15 +95,19 @@ export class ExecutionNoteCache {
92
95
  updatedNotes.forEach(n => this.#addNote(n));
93
96
  }
94
97
 
98
+ public isSideEffectCounterRevertible(sideEffectCounter: number): boolean {
99
+ if (!this.inRevertiblePhase) {
100
+ return false;
101
+ }
102
+ return sideEffectCounter >= this.minRevertibleSideEffectCounter;
103
+ }
104
+
95
105
  public finish() {
96
- // If we never entered the revertible phase, we need to use the tx request hash as a nonce for the notes if no nullifiers have been emitted.
106
+ // If we never entered the revertible phase, and there are no nullifiers emitted, we need to use the protocol
107
+ // nullifier as the nonce generator.
97
108
  if (!this.inRevertiblePhase) {
98
- this.usedTxRequestHashForNonces = this.getAllNullifiers().length === 0;
109
+ this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
99
110
  }
100
- // If we entered the revertible phase, the nonce generator was decided based on wether or not a nullifier was emitted before entering.
101
- return {
102
- usedTxRequestHashForNonces: this.usedTxRequestHashForNonces,
103
- };
104
111
  }
105
112
 
106
113
  /**
@@ -143,11 +150,11 @@ export class ExecutionNoteCache {
143
150
 
144
151
  // If the note is non revertible and the nullifier was emitted in the revertible phase, both the note hash and the nullifier will be emitted
145
152
  if (this.inRevertiblePhase && note.counter < this.minRevertibleSideEffectCounter) {
146
- this.recordNullifier(contractAddress, siloedNullifier);
153
+ this.#recordNullifier(contractAddress, siloedNullifier);
147
154
  }
148
155
  } else {
149
156
  // If the note being nullified comes from a previous tx the nullifier will be emitted.
150
- this.recordNullifier(contractAddress, siloedNullifier);
157
+ this.#recordNullifier(contractAddress, siloedNullifier);
151
158
  }
152
159
  return nullifiedNoteHashCounter;
153
160
  }
@@ -159,18 +166,22 @@ export class ExecutionNoteCache {
159
166
  */
160
167
  public async nullifierCreated(contractAddress: AztecAddress, innerNullifier: Fr) {
161
168
  const siloedNullifier = (await siloNullifier(contractAddress, innerNullifier)).toBigInt();
162
- this.recordNullifier(contractAddress, siloedNullifier);
169
+ this.#recordNullifier(contractAddress, siloedNullifier);
163
170
  }
164
171
 
165
172
  /**
166
173
  * Return notes created up to current point in execution.
167
174
  * If a nullifier for a note in this list is emitted, the note will be deleted.
168
175
  * @param contractAddress - Contract address of the notes.
176
+ * @param owner - Owner of the notes. If undefined, returns all notes regardless of owner.
169
177
  * @param storageSlot - Storage slot of the notes.
170
178
  **/
171
- public getNotes(contractAddress: AztecAddress, storageSlot: Fr) {
179
+ public getNotes(contractAddress: AztecAddress, owner: AztecAddress | undefined, storageSlot: Fr) {
172
180
  const notes = this.noteMap.get(contractAddress.toBigInt()) ?? [];
173
- return notes.filter(n => n.note.storageSlot.equals(storageSlot)).map(n => n.note);
181
+ return notes
182
+ .filter(n => owner === undefined || n.note.owner.equals(owner))
183
+ .filter(n => n.note.storageSlot.equals(storageSlot))
184
+ .map(n => n.note);
174
185
  }
175
186
 
176
187
  /**
@@ -204,11 +215,30 @@ export class ExecutionNoteCache {
204
215
  return this.notes;
205
216
  }
206
217
 
218
+ /**
219
+ * @returns All nullifiers emitted by private calls in this transaction.
220
+ */
221
+ getEmittedNullifiers(): Fr[] {
222
+ return [...this.emittedNullifiers].map(n => new Fr(n));
223
+ }
224
+
225
+ /**
226
+ * @returns All nullifiers emitted by private calls in this transaction. If the protocol nullifier was used as the
227
+ * nonce generator, it is injected as the first nullifier.
228
+ */
207
229
  getAllNullifiers(): Fr[] {
208
- return [...this.allNullifiers].map(n => new Fr(n));
230
+ if (this.usedProtocolNullifierForNonces === undefined) {
231
+ throw new Error('usedProtocolNullifierForNonces is not set yet. Call finish() to complete the transaction.');
232
+ }
233
+ const allNullifiers = this.getEmittedNullifiers();
234
+ return [...(this.usedProtocolNullifierForNonces ? [this.protocolNullifier] : []), ...allNullifiers];
235
+ }
236
+
237
+ getNonceGenerator(): Fr {
238
+ return this.getAllNullifiers()[0];
209
239
  }
210
240
 
211
- recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
241
+ #recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
212
242
  const nullifiers = this.getNullifiers(contractAddress);
213
243
 
214
244
  if (nullifiers.has(siloedNullifier)) {
@@ -217,6 +247,6 @@ export class ExecutionNoteCache {
217
247
 
218
248
  nullifiers.add(siloedNullifier);
219
249
  this.nullifierMap.set(contractAddress.toBigInt(), nullifiers);
220
- this.allNullifiers.add(siloedNullifier);
250
+ this.emittedNullifiers.add(siloedNullifier);
221
251
  }
222
252
  }
@@ -21,7 +21,7 @@ export class ExecutionTaggingIndexCache {
21
21
  }
22
22
 
23
23
  /**
24
- * Returns the pre tags that were used in this execution (and that need to be stored in the db).
24
+ * Returns the pre-tags that were used in this execution (and that need to be stored in the db).
25
25
  */
26
26
  public getUsedPreTags(): PreTag[] {
27
27
  return Array.from(this.taggingIndexMap.entries()).map(([secret, index]) => ({
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { HashedValues } from '@aztec/stdlib/tx';
3
3
 
4
4
  /**
@@ -9,5 +9,5 @@ export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
9
9
  export { Oracle } from './oracle/oracle.js';
10
10
  export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
11
11
  export { generateSimulatedProvingResult } from './contract_function_simulator.js';
12
- export { packAsRetrievedNote } from './oracle/note_packing_utils.js';
12
+ export { packAsHintedNote } from './oracle/note_packing_utils.js';
13
13
  export { UtilityContext } from './noir-structs/utility_context.js';
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { FieldReader } from '@aztec/foundation/serialize';
3
3
  import { EventSelector } from '@aztec/stdlib/abi';
4
4
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
@@ -8,13 +8,14 @@ import { TxHash } from '@aztec/stdlib/tx';
8
8
  const MAX_EVENT_SERIALIZED_LEN = 12;
9
9
 
10
10
  /**
11
- * Intermediate struct used to perform batch event validation by PXE. The `utilityValidateEnqueuedNotesAndEvents` oracle
11
+ * Intermediate struct used to perform batch event validation by PXE. The `utilityValidateAndStoreEnqueuedNotesAndEvents` oracle
12
12
  * expects for values of this type to be stored in a `CapsuleArray`.
13
13
  */
14
14
  export class EventValidationRequest {
15
15
  constructor(
16
16
  public contractAddress: AztecAddress,
17
17
  public eventTypeId: EventSelector,
18
+ public randomness: Fr,
18
19
  public serializedEvent: Fr[],
19
20
  public eventCommitment: Fr,
20
21
  public txHash: TxHash,
@@ -27,6 +28,8 @@ export class EventValidationRequest {
27
28
  const contractAddress = AztecAddress.fromField(reader.readField());
28
29
  const eventTypeId = EventSelector.fromField(reader.readField());
29
30
 
31
+ const randomness = reader.readField();
32
+
30
33
  const eventStorage = reader.readFieldArray(MAX_EVENT_SERIALIZED_LEN);
31
34
  const eventLen = reader.readField().toNumber();
32
35
  const serializedEvent = eventStorage.slice(0, eventLen);
@@ -38,6 +41,7 @@ export class EventValidationRequest {
38
41
  return new EventValidationRequest(
39
42
  contractAddress,
40
43
  eventTypeId,
44
+ randomness,
41
45
  serializedEvent,
42
46
  eventCommitment,
43
47
  txHash,
@@ -1,6 +1,7 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { FieldReader } from '@aztec/foundation/serialize';
3
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import { Tag } from '@aztec/stdlib/logs';
4
5
 
5
6
  /**
6
7
  * Intermediate struct used to perform batch log retrieval by PXE. The `utilityBulkRetrieveLogs` oracle expects values of this
@@ -9,19 +10,19 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
9
10
  export class LogRetrievalRequest {
10
11
  constructor(
11
12
  public contractAddress: AztecAddress,
12
- public unsiloedTag: Fr,
13
+ public tag: Tag,
13
14
  ) {}
14
15
 
15
16
  toFields(): Fr[] {
16
- return [this.contractAddress.toField(), this.unsiloedTag];
17
+ return [this.contractAddress.toField(), this.tag.value];
17
18
  }
18
19
 
19
20
  static fromFields(fields: Fr[] | FieldReader): LogRetrievalRequest {
20
21
  const reader = FieldReader.asReader(fields);
21
22
 
22
23
  const contractAddress = AztecAddress.fromField(reader.readField());
23
- const unsiloedTag = reader.readField();
24
+ const tag = new Tag(reader.readField());
24
25
 
25
- return new LogRetrievalRequest(contractAddress, unsiloedTag);
26
+ return new LogRetrievalRequest(contractAddress, tag);
26
27
  }
27
28
  }
@@ -1,6 +1,6 @@
1
1
  import { MAX_NOTE_HASHES_PER_TX, PRIVATE_LOG_CIPHERTEXT_LEN } from '@aztec/constants';
2
2
  import { range } from '@aztec/foundation/array';
3
- import { Fr } from '@aztec/foundation/fields';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import type { TxHash } from '@aztec/stdlib/tx';
5
5
 
6
6
  import { MAX_NOTE_PACKED_LEN } from './note_validation_request.js';
@@ -42,7 +42,7 @@ export class LogRetrievalResponse {
42
42
  return range(serializationLen).map(_ => Fr.zero());
43
43
  }
44
44
 
45
- static toSerializedOption(response?: LogRetrievalResponse): Fr[] {
45
+ static toSerializedOption(response: LogRetrievalResponse | null): Fr[] {
46
46
  if (response) {
47
47
  return [new Fr(1), ...response.toFields()];
48
48
  } else {