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

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 (387) hide show
  1. package/dest/bin/check_oracle_version.js +105 -15
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +45 -0
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  4. package/dest/block_synchronizer/block_synchronizer.js +153 -0
  5. package/dest/block_synchronizer/index.d.ts +2 -0
  6. package/dest/block_synchronizer/index.d.ts.map +1 -0
  7. package/dest/block_synchronizer/index.js +1 -0
  8. package/dest/config/index.d.ts +6 -4
  9. package/dest/config/index.d.ts.map +1 -1
  10. package/dest/config/index.js +17 -0
  11. package/dest/config/package_info.js +1 -1
  12. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  13. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  14. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  15. package/dest/contract_function_simulator/contract_function_simulator.d.ts +42 -14
  16. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  17. package/dest/contract_function_simulator/contract_function_simulator.js +74 -33
  18. package/dest/contract_function_simulator/execution_note_cache.d.ts +21 -12
  19. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/execution_note_cache.js +48 -31
  21. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +1 -1
  22. package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
  23. package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
  24. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/index.d.ts +2 -2
  26. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  27. package/dest/contract_function_simulator/index.js +1 -1
  28. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -4
  29. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  30. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +6 -3
  31. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
  32. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
  34. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  35. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  36. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
  37. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -3
  38. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +1 -1
  40. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  41. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  43. package/dest/contract_function_simulator/oracle/interfaces.d.ts +22 -18
  44. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  45. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +4 -2
  46. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
  48. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +11 -7
  49. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  50. package/dest/contract_function_simulator/oracle/note_packing_utils.js +14 -10
  51. package/dest/contract_function_simulator/oracle/oracle.d.ts +11 -9
  52. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  53. package/dest/contract_function_simulator/oracle/oracle.js +82 -48
  54. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -28
  55. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  56. package/dest/contract_function_simulator/oracle/private_execution.js +2 -38
  57. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +34 -25
  58. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  59. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +41 -45
  60. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +88 -32
  61. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  62. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +201 -74
  63. package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
  64. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  65. package/dest/contract_function_simulator/pick_notes.js +1 -1
  66. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  67. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  68. package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
  69. package/dest/contract_sync/contract_sync_service.d.ts +41 -0
  70. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  71. package/dest/contract_sync/contract_sync_service.js +82 -0
  72. package/dest/contract_sync/helpers.d.ts +28 -0
  73. package/dest/contract_sync/helpers.d.ts.map +1 -0
  74. package/dest/contract_sync/helpers.js +55 -0
  75. package/dest/debug/pxe_debug_utils.d.ts +44 -0
  76. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  77. package/dest/debug/pxe_debug_utils.js +48 -0
  78. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  79. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  80. package/dest/entrypoints/client/bundle/index.js +0 -1
  81. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  82. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  83. package/dest/entrypoints/client/bundle/utils.js +23 -8
  84. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  85. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  86. package/dest/entrypoints/client/lazy/index.js +0 -1
  87. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  88. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  89. package/dest/entrypoints/client/lazy/utils.js +24 -9
  90. package/dest/entrypoints/pxe_creation_options.d.ts +7 -3
  91. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  92. package/dest/entrypoints/server/index.d.ts +4 -2
  93. package/dest/entrypoints/server/index.d.ts.map +1 -1
  94. package/dest/entrypoints/server/index.js +3 -1
  95. package/dest/entrypoints/server/utils.d.ts +1 -1
  96. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  97. package/dest/entrypoints/server/utils.js +30 -15
  98. package/dest/error_enriching.d.ts +4 -4
  99. package/dest/error_enriching.d.ts.map +1 -1
  100. package/dest/error_enriching.js +6 -6
  101. package/dest/events/event_service.d.ts +15 -0
  102. package/dest/events/event_service.d.ts.map +1 -0
  103. package/dest/events/event_service.js +44 -0
  104. package/dest/events/index.d.ts +2 -0
  105. package/dest/events/index.d.ts.map +1 -0
  106. package/dest/events/index.js +1 -0
  107. package/dest/events/private_event_filter_validator.d.ts +9 -0
  108. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  109. package/dest/events/private_event_filter_validator.js +38 -0
  110. package/dest/job_coordinator/job_coordinator.d.ts +75 -0
  111. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  112. package/dest/job_coordinator/job_coordinator.js +94 -0
  113. package/dest/logs/log_service.d.ts +28 -0
  114. package/dest/logs/log_service.d.ts.map +1 -0
  115. package/dest/logs/log_service.js +123 -0
  116. package/dest/notes/index.d.ts +2 -0
  117. package/dest/notes/index.d.ts.map +1 -0
  118. package/dest/notes/index.js +1 -0
  119. package/dest/notes/note_service.d.ts +48 -0
  120. package/dest/notes/note_service.d.ts.map +1 -0
  121. package/dest/notes/note_service.js +147 -0
  122. package/dest/oracle_version.d.ts +3 -3
  123. package/dest/oracle_version.d.ts.map +1 -1
  124. package/dest/oracle_version.js +4 -3
  125. package/dest/private_kernel/hints/index.d.ts +2 -2
  126. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  127. package/dest/private_kernel/hints/index.js +1 -1
  128. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
  129. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  130. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +13 -7
  131. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  132. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  133. package/dest/private_kernel/private_kernel_execution_prover.js +10 -11
  134. package/dest/private_kernel/private_kernel_oracle.d.ts +26 -29
  135. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  136. package/dest/private_kernel/private_kernel_oracle.js +90 -2
  137. package/dest/pxe.d.ts +56 -81
  138. package/dest/pxe.d.ts.map +1 -1
  139. package/dest/pxe.js +209 -217
  140. package/dest/storage/address_store/address_store.d.ts +11 -0
  141. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  142. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -12
  143. package/dest/storage/address_store/index.d.ts +2 -0
  144. package/dest/storage/address_store/index.d.ts.map +1 -0
  145. package/dest/storage/address_store/index.js +1 -0
  146. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
  147. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  148. package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +10 -10
  149. package/dest/storage/{sync_data_provider → anchor_block_store}/index.d.ts +2 -2
  150. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  151. package/dest/storage/anchor_block_store/index.js +1 -0
  152. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  153. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  154. package/dest/storage/capsule_store/capsule_store.js +253 -0
  155. package/dest/storage/capsule_store/index.d.ts +2 -0
  156. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  157. package/dest/storage/capsule_store/index.js +1 -0
  158. package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +7 -5
  159. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  160. package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +56 -16
  161. package/dest/storage/contract_store/index.d.ts +2 -0
  162. package/dest/storage/contract_store/index.d.ts.map +1 -0
  163. package/dest/storage/contract_store/index.js +1 -0
  164. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  165. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  166. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
  167. package/dest/storage/index.d.ts +8 -8
  168. package/dest/storage/index.d.ts.map +1 -1
  169. package/dest/storage/index.js +7 -7
  170. package/dest/storage/metadata.d.ts +1 -1
  171. package/dest/storage/metadata.js +1 -1
  172. package/dest/storage/note_store/index.d.ts +3 -0
  173. package/dest/storage/note_store/index.d.ts.map +1 -0
  174. package/dest/storage/note_store/index.js +2 -0
  175. package/dest/storage/note_store/note_store.d.ts +83 -0
  176. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  177. package/dest/storage/note_store/note_store.js +344 -0
  178. package/dest/storage/note_store/stored_note.d.ts +16 -0
  179. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  180. package/dest/storage/note_store/stored_note.js +43 -0
  181. package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
  182. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  183. package/dest/storage/private_event_store/private_event_store.js +273 -0
  184. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  185. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  186. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  187. package/dest/storage/tagging_store/index.d.ts +4 -0
  188. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  189. package/dest/storage/tagging_store/index.js +3 -0
  190. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  191. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  192. package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
  193. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  194. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  195. package/dest/storage/tagging_store/sender_address_book_store.js +36 -0
  196. package/dest/storage/tagging_store/sender_tagging_store.d.ts +77 -0
  197. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  198. package/dest/storage/tagging_store/sender_tagging_store.js +348 -0
  199. package/dest/tagging/constants.d.ts +2 -2
  200. package/dest/tagging/constants.d.ts.map +1 -1
  201. package/dest/tagging/constants.js +10 -2
  202. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  203. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  204. package/dest/tagging/get_all_logs_by_tags.js +46 -0
  205. package/dest/tagging/index.d.ts +16 -6
  206. package/dest/tagging/index.d.ts.map +1 -1
  207. package/dest/tagging/index.js +15 -5
  208. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +15 -0
  209. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
  210. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
  211. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  212. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  213. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  214. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +15 -0
  215. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
  216. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +32 -0
  217. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +21 -0
  218. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  219. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
  220. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
  221. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  222. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +29 -0
  223. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +21 -0
  224. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  225. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +60 -0
  226. package/package.json +27 -18
  227. package/src/bin/check_oracle_version.ts +131 -20
  228. package/src/block_synchronizer/block_synchronizer.ts +178 -0
  229. package/src/block_synchronizer/index.ts +1 -0
  230. package/src/config/index.ts +17 -3
  231. package/src/config/package_info.ts +1 -1
  232. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  233. package/src/contract_function_simulator/contract_function_simulator.ts +117 -34
  234. package/src/contract_function_simulator/execution_note_cache.ts +51 -29
  235. package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
  236. package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
  237. package/src/contract_function_simulator/index.ts +1 -1
  238. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +6 -2
  239. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
  240. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -1
  241. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
  242. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  243. package/src/contract_function_simulator/oracle/interfaces.ts +27 -17
  244. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
  245. package/src/contract_function_simulator/oracle/note_packing_utils.ts +27 -13
  246. package/src/contract_function_simulator/oracle/oracle.ts +97 -51
  247. package/src/contract_function_simulator/oracle/private_execution.ts +2 -69
  248. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +121 -59
  249. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +294 -91
  250. package/src/contract_function_simulator/pick_notes.ts +1 -1
  251. package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
  252. package/src/contract_sync/contract_sync_service.ts +129 -0
  253. package/src/contract_sync/helpers.ts +93 -0
  254. package/src/debug/pxe_debug_utils.ts +91 -0
  255. package/src/entrypoints/client/bundle/index.ts +0 -1
  256. package/src/entrypoints/client/bundle/utils.ts +15 -16
  257. package/src/entrypoints/client/lazy/index.ts +0 -1
  258. package/src/entrypoints/client/lazy/utils.ts +16 -17
  259. package/src/entrypoints/pxe_creation_options.ts +6 -2
  260. package/src/entrypoints/server/index.ts +3 -1
  261. package/src/entrypoints/server/utils.ts +26 -34
  262. package/src/error_enriching.ts +7 -15
  263. package/src/events/event_service.ts +71 -0
  264. package/src/events/index.ts +1 -0
  265. package/src/events/private_event_filter_validator.ts +46 -0
  266. package/src/job_coordinator/job_coordinator.ts +150 -0
  267. package/src/logs/log_service.ts +220 -0
  268. package/src/notes/index.ts +1 -0
  269. package/src/notes/note_service.ts +195 -0
  270. package/src/oracle_version.ts +4 -3
  271. package/src/private_kernel/hints/index.ts +1 -1
  272. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +34 -23
  273. package/src/private_kernel/private_kernel_execution_prover.ts +13 -12
  274. package/src/private_kernel/private_kernel_oracle.ts +118 -37
  275. package/src/pxe.ts +299 -280
  276. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +16 -16
  277. package/src/storage/address_store/index.ts +1 -0
  278. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +10 -12
  279. package/src/storage/anchor_block_store/index.ts +1 -0
  280. package/src/storage/capsule_store/capsule_store.ts +315 -0
  281. package/src/storage/capsule_store/index.ts +1 -0
  282. package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +67 -14
  283. package/src/storage/contract_store/index.ts +1 -0
  284. package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
  285. package/src/storage/index.ts +7 -7
  286. package/src/storage/metadata.ts +1 -1
  287. package/src/storage/note_store/index.ts +2 -0
  288. package/src/storage/note_store/note_store.ts +415 -0
  289. package/src/storage/note_store/stored_note.ts +48 -0
  290. package/src/storage/private_event_store/private_event_store.ts +384 -0
  291. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  292. package/src/storage/tagging_store/index.ts +3 -0
  293. package/src/storage/tagging_store/recipient_tagging_store.ts +139 -0
  294. package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
  295. package/src/storage/tagging_store/sender_tagging_store.ts +429 -0
  296. package/src/tagging/constants.ts +10 -2
  297. package/src/tagging/get_all_logs_by_tags.ts +68 -0
  298. package/src/tagging/index.ts +18 -5
  299. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +143 -0
  300. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  301. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +49 -0
  302. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +99 -0
  303. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +36 -0
  304. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +84 -0
  305. package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -267
  306. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
  307. package/dest/contract_function_simulator/execution_data_provider.js +0 -14
  308. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  309. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  310. package/dest/contract_function_simulator/proxied_node.js +0 -27
  311. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -123
  312. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
  313. package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -696
  314. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  315. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  316. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -45
  317. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  318. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  319. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  320. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  321. package/dest/storage/address_data_provider/index.d.ts +0 -2
  322. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  323. package/dest/storage/address_data_provider/index.js +0 -1
  324. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
  325. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  326. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -118
  327. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  328. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  329. package/dest/storage/capsule_data_provider/index.js +0 -1
  330. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  331. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  332. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  333. package/dest/storage/contract_data_provider/index.js +0 -1
  334. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  335. package/dest/storage/note_data_provider/index.d.ts +0 -3
  336. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  337. package/dest/storage/note_data_provider/index.js +0 -2
  338. package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -83
  339. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  340. package/dest/storage/note_data_provider/note_data_provider.js +0 -314
  341. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -37
  342. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  343. package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -105
  344. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  345. package/dest/storage/sync_data_provider/index.js +0 -1
  346. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -11
  347. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  348. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  349. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  350. package/dest/storage/tagging_data_provider/index.js +0 -1
  351. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
  352. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  353. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
  354. package/dest/synchronizer/index.d.ts +0 -2
  355. package/dest/synchronizer/index.d.ts.map +0 -1
  356. package/dest/synchronizer/index.js +0 -1
  357. package/dest/synchronizer/synchronizer.d.ts +0 -36
  358. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  359. package/dest/synchronizer/synchronizer.js +0 -102
  360. package/dest/tagging/siloed_tag.d.ts +0 -14
  361. package/dest/tagging/siloed_tag.d.ts.map +0 -1
  362. package/dest/tagging/siloed_tag.js +0 -20
  363. package/dest/tagging/tag.d.ts +0 -12
  364. package/dest/tagging/tag.d.ts.map +0 -1
  365. package/dest/tagging/tag.js +0 -17
  366. package/dest/tagging/utils.d.ts +0 -18
  367. package/dest/tagging/utils.d.ts.map +0 -1
  368. package/dest/tagging/utils.js +0 -24
  369. package/src/contract_function_simulator/execution_data_provider.ts +0 -342
  370. package/src/contract_function_simulator/proxied_node.ts +0 -33
  371. package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1023
  372. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
  373. package/src/storage/address_data_provider/index.ts +0 -1
  374. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -147
  375. package/src/storage/capsule_data_provider/index.ts +0 -1
  376. package/src/storage/contract_data_provider/index.ts +0 -1
  377. package/src/storage/note_data_provider/index.ts +0 -2
  378. package/src/storage/note_data_provider/note_data_provider.ts +0 -403
  379. package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -143
  380. package/src/storage/sync_data_provider/index.ts +0 -1
  381. package/src/storage/tagging_data_provider/index.ts +0 -1
  382. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
  383. package/src/synchronizer/index.ts +0 -1
  384. package/src/synchronizer/synchronizer.ts +0 -121
  385. package/src/tagging/siloed_tag.ts +0 -22
  386. package/src/tagging/tag.ts +0 -16
  387. 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 {
@@ -44,6 +46,7 @@ import {
44
46
  siloNoteHash,
45
47
  siloNullifier,
46
48
  } from '@aztec/stdlib/hash';
49
+ import type { AztecNode } from '@aztec/stdlib/interfaces/server';
47
50
  import {
48
51
  PartialPrivateTailPublicInputsForPublic,
49
52
  PartialPrivateTailPublicInputsForRollup,
@@ -59,6 +62,7 @@ import { PrivateLog } from '@aztec/stdlib/logs';
59
62
  import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
60
63
  import { ChonkProof } from '@aztec/stdlib/proofs';
61
64
  import {
65
+ BlockHeader,
62
66
  CallContext,
63
67
  HashedValues,
64
68
  PrivateExecutionResult,
@@ -68,13 +72,21 @@ import {
68
72
  getFinalMinRevertibleSideEffectCounter,
69
73
  } from '@aztec/stdlib/tx';
70
74
 
71
- import type { ContractDataProvider } from '../storage/index.js';
72
- 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';
73
85
  import { ExecutionNoteCache } from './execution_note_cache.js';
74
86
  import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
75
87
  import { HashedValuesCache } from './hashed_values_cache.js';
76
88
  import { Oracle } from './oracle/oracle.js';
77
- import { executePrivateFunction, verifyCurrentClassId } from './oracle/private_execution.js';
89
+ import { executePrivateFunction } from './oracle/private_execution.js';
78
90
  import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
79
91
  import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
80
92
 
@@ -85,8 +97,18 @@ export class ContractFunctionSimulator {
85
97
  private log: Logger;
86
98
 
87
99
  constructor(
88
- 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,
89
110
  private simulator: CircuitSimulator,
111
+ private contractSyncService: ContractSyncService,
90
112
  ) {
91
113
  this.log = createLogger('simulator');
92
114
  }
@@ -98,9 +120,11 @@ export class ContractFunctionSimulator {
98
120
  * @param contractAddress - The address of the contract (should match request.origin)
99
121
  * @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract
100
122
  * or a specific account.
123
+ * @param anchorBlockHeader - The block header to use as base state for this run.
101
124
  * @param senderForTags - The address that is used as a tagging sender when emitting private logs. Returned from
102
125
  * the `privateGetSenderForTags` oracle.
103
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.
104
128
  * @returns The result of the execution.
105
129
  */
106
130
  public async run(
@@ -108,15 +132,14 @@ export class ContractFunctionSimulator {
108
132
  contractAddress: AztecAddress,
109
133
  selector: FunctionSelector,
110
134
  msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
111
- senderForTags?: AztecAddress,
112
- scopes?: AztecAddress[],
135
+ anchorBlockHeader: BlockHeader,
136
+ senderForTags: AztecAddress | undefined,
137
+ scopes: AztecAddress[] | undefined,
138
+ jobId: string,
113
139
  ): Promise<PrivateExecutionResult> {
114
140
  const simulatorSetupTimer = new Timer();
115
- const anchorBlockHeader = await this.executionDataProvider.getAnchorBlockHeader();
116
141
 
117
- await verifyCurrentClassId(contractAddress, this.executionDataProvider);
118
-
119
- const entryPointArtifact = await this.executionDataProvider.getFunctionArtifact(contractAddress, selector);
142
+ const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
120
143
 
121
144
  if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
122
145
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
@@ -147,12 +170,26 @@ export class ContractFunctionSimulator {
147
170
  request.txContext,
148
171
  callContext,
149
172
  anchorBlockHeader,
173
+ async call => {
174
+ await this.runUtility(call, [], anchorBlockHeader, scopes, jobId);
175
+ },
150
176
  request.authWitnesses,
151
177
  request.capsules,
152
178
  HashedValuesCache.create(request.argsOfCalls),
153
179
  noteCache,
154
180
  taggingIndexCache,
155
- 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,
156
193
  0, // totalPublicArgsCount
157
194
  startSideEffectCounter,
158
195
  undefined, // log
@@ -176,8 +213,9 @@ export class ContractFunctionSimulator {
176
213
  request.functionSelector,
177
214
  );
178
215
  const simulatorTeardownTimer = new Timer();
179
- const { usedProtocolNullifierForNonces } = noteCache.finish();
180
- const firstNullifierHint = usedProtocolNullifierForNonces ? Fr.ZERO : noteCache.getAllNullifiers()[0];
216
+
217
+ noteCache.finish();
218
+ const firstNullifierHint = noteCache.getNonceGenerator();
181
219
 
182
220
  const publicCallRequests = collectNested([executionResult], r =>
183
221
  r.publicInputs.publicCallRequests
@@ -213,20 +251,42 @@ export class ContractFunctionSimulator {
213
251
  * Runs a utility function.
214
252
  * @param call - The function call to execute.
215
253
  * @param authwits - Authentication witnesses required for the function call.
254
+ * @param anchorBlockHeader - The block header to use as base state for this run.
216
255
  * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
217
256
  * accounts if not specified.
218
257
  * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
219
258
  */
220
- public async runUtility(call: FunctionCall, authwits: AuthWitness[], scopes?: AztecAddress[]): Promise<Fr[]> {
221
- await verifyCurrentClassId(call.to, this.executionDataProvider);
222
-
223
- 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);
224
267
 
225
268
  if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
226
269
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
227
270
  }
228
271
 
229
- 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
+ );
230
290
 
231
291
  try {
232
292
  this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
@@ -258,8 +318,20 @@ export class ContractFunctionSimulator {
258
318
  }
259
319
  // docs:end:execute_utility_function
260
320
 
321
+ /**
322
+ * Returns the execution statistics collected during the simulator run.
323
+ * @returns The execution statistics.
324
+ */
261
325
  getStats() {
262
- 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 };
263
335
  }
264
336
  }
265
337
 
@@ -280,15 +352,15 @@ class OrderedSideEffect<T> {
280
352
  * (allowing state overrides) and is much faster, while still generating a valid
281
353
  * output that can be sent to the node for public simulation
282
354
  * @param privateExecutionResult - The result of the private execution.
283
- * @param nonceGenerator - A nonce generator for note hashes. According to the protocol rules,
284
- * it can either be the first nullifier in the tx or the hash of the initial tx request if there are none.
285
- * @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).
286
358
  * @returns The simulated proving result.
287
359
  */
288
360
  export async function generateSimulatedProvingResult(
289
361
  privateExecutionResult: PrivateExecutionResult,
290
- nonceGenerator: Fr,
291
- contractDataProvider: ContractDataProvider,
362
+ debugFunctionNameGetter: (contractAddress: AztecAddress, functionSelector: FunctionSelector) => Promise<string>,
363
+ minRevertibleSideEffectCounterOverride?: number,
292
364
  ): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
293
365
  const siloedNoteHashes: OrderedSideEffect<Fr>[] = [];
294
366
  const nullifiers: OrderedSideEffect<Fr>[] = [];
@@ -329,7 +401,10 @@ export async function generateSimulatedProvingResult(
329
401
 
330
402
  const privateLogsFromExecution = await Promise.all(
331
403
  execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
332
- 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
+ );
333
408
  return new OrderedSideEffect(metadata.log, metadata.counter);
334
409
  }),
335
410
  );
@@ -365,7 +440,7 @@ export async function generateSimulatedProvingResult(
365
440
  : execution.publicInputs.publicTeardownCallRequest;
366
441
 
367
442
  executionSteps.push({
368
- functionName: await contractDataProvider.getDebugFunctionName(
443
+ functionName: await debugFunctionNameGetter(
369
444
  execution.publicInputs.callContext.contractAddress,
370
445
  execution.publicInputs.callContext.functionSelector,
371
446
  ),
@@ -392,16 +467,18 @@ export async function generateSimulatedProvingResult(
392
467
  const getEffect = <T>(orderedSideEffect: OrderedSideEffect<T>) => orderedSideEffect.sideEffect;
393
468
 
394
469
  const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
395
- const minRevertibleSideEffectCounter = getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
470
+ const minRevertibleSideEffectCounter =
471
+ minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
396
472
 
397
473
  const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(
398
474
  nullifiers.sort(sortByCounter),
399
475
  minRevertibleSideEffectCounter,
400
476
  );
401
- 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)) {
402
481
  throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
403
- } else {
404
- nonRevertibleNullifiers.unshift(nonceGenerator);
405
482
  }
406
483
 
407
484
  if (isPrivateOnlyTx) {
@@ -437,6 +514,12 @@ export async function generateSimulatedProvingResult(
437
514
  siloedNoteHashes.sort(sortByCounter),
438
515
  minRevertibleSideEffectCounter,
439
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
+ );
440
523
  const [nonRevertibleL2ToL1Messages, revertibleL2ToL1Messages] = splitOrderedSideEffects(
441
524
  l2ToL1Messages.sort(sortByCounter),
442
525
  minRevertibleSideEffectCounter,
@@ -455,7 +538,7 @@ export async function generateSimulatedProvingResult(
455
538
  );
456
539
 
457
540
  const nonRevertibleData = new PrivateToPublicAccumulatedData(
458
- padArrayEnd(nonRevertibleNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
541
+ padArrayEnd(nonRevertibleUniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
459
542
  padArrayEnd(nonRevertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
460
543
  padArrayEnd(nonRevertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
461
544
  padArrayEnd(nonRevertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
@@ -503,7 +586,7 @@ function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertib
503
586
  const revertibleSideEffects: T[] = [];
504
587
  const nonRevertibleSideEffects: T[] = [];
505
588
  effects.forEach(effect => {
506
- if (effect.counter < minRevertibleSideEffectCounter) {
589
+ if (minRevertibleSideEffectCounter === 0 || effect.counter < minRevertibleSideEffectCounter) {
507
590
  nonRevertibleSideEffects.push(effect.sideEffect);
508
591
  } else {
509
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,19 +32,22 @@ 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 usedProtocolNullifierForNonces = true;
50
+ private usedProtocolNullifierForNonces: boolean | undefined;
48
51
 
49
52
  constructor(private readonly protocolNullifier: Fr) {}
50
53
 
@@ -60,17 +63,18 @@ export class ExecutionNoteCache {
60
63
  }
61
64
  this.inRevertiblePhase = true;
62
65
  this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
63
- let nonceGenerator = this.protocolNullifier;
64
- const nullifiers = this.getAllNullifiers();
65
- if (nullifiers.length > 0) {
66
- nonceGenerator = new Fr(nullifiers[0]);
67
- this.usedProtocolNullifierForNonces = false;
68
- }
66
+
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]);
69
73
 
70
74
  // The existing pending notes are all non-revertible.
71
75
  // They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
72
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.
73
- // The nonces will be used to create the "complete" nullifier.
77
+ // The nonces will be used to create the "unique" note hashes.
74
78
  const updatedNotes = await Promise.all(
75
79
  this.notes.map(async ({ note, counter }, i) => {
76
80
  const noteNonce = await computeNoteHashNonce(nonceGenerator, i);
@@ -99,15 +103,11 @@ export class ExecutionNoteCache {
99
103
  }
100
104
 
101
105
  public finish() {
102
- // If we never entered the revertible phase, we need to use the protocol nullifier to compute the nonces for the
103
- // 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.
104
108
  if (!this.inRevertiblePhase) {
105
- this.usedProtocolNullifierForNonces = this.getAllNullifiers().length === 0;
109
+ this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
106
110
  }
107
- // If we entered the revertible phase, the nonce generator was decided based on wether or not a nullifier was emitted before entering.
108
- return {
109
- usedProtocolNullifierForNonces: this.usedProtocolNullifierForNonces,
110
- };
111
111
  }
112
112
 
113
113
  /**
@@ -150,11 +150,11 @@ export class ExecutionNoteCache {
150
150
 
151
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
152
152
  if (this.inRevertiblePhase && note.counter < this.minRevertibleSideEffectCounter) {
153
- this.recordNullifier(contractAddress, siloedNullifier);
153
+ this.#recordNullifier(contractAddress, siloedNullifier);
154
154
  }
155
155
  } else {
156
156
  // If the note being nullified comes from a previous tx the nullifier will be emitted.
157
- this.recordNullifier(contractAddress, siloedNullifier);
157
+ this.#recordNullifier(contractAddress, siloedNullifier);
158
158
  }
159
159
  return nullifiedNoteHashCounter;
160
160
  }
@@ -166,19 +166,22 @@ export class ExecutionNoteCache {
166
166
  */
167
167
  public async nullifierCreated(contractAddress: AztecAddress, innerNullifier: Fr) {
168
168
  const siloedNullifier = (await siloNullifier(contractAddress, innerNullifier)).toBigInt();
169
- this.recordNullifier(contractAddress, siloedNullifier);
169
+ this.#recordNullifier(contractAddress, siloedNullifier);
170
170
  }
171
171
 
172
172
  /**
173
173
  * Return notes created up to current point in execution.
174
174
  * If a nullifier for a note in this list is emitted, the note will be deleted.
175
175
  * @param contractAddress - Contract address of the notes.
176
- * @param owner - Owner of the notes.
176
+ * @param owner - Owner of the notes. If undefined, returns all notes regardless of owner.
177
177
  * @param storageSlot - Storage slot of the notes.
178
178
  **/
179
- public getNotes(contractAddress: AztecAddress, owner: AztecAddress, storageSlot: Fr) {
179
+ public getNotes(contractAddress: AztecAddress, owner: AztecAddress | undefined, storageSlot: Fr) {
180
180
  const notes = this.noteMap.get(contractAddress.toBigInt()) ?? [];
181
- return notes.filter(n => n.note.owner.equals(owner) && 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);
182
185
  }
183
186
 
184
187
  /**
@@ -212,11 +215,30 @@ export class ExecutionNoteCache {
212
215
  return this.notes;
213
216
  }
214
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
+ */
215
229
  getAllNullifiers(): Fr[] {
216
- 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];
217
239
  }
218
240
 
219
- recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
241
+ #recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
220
242
  const nullifiers = this.getNullifiers(contractAddress);
221
243
 
222
244
  if (nullifiers.has(siloedNullifier)) {
@@ -225,6 +247,6 @@ export class ExecutionNoteCache {
225
247
 
226
248
  nullifiers.add(siloedNullifier);
227
249
  this.nullifierMap.set(contractAddress.toBigInt(), nullifiers);
228
- this.allNullifiers.add(siloedNullifier);
250
+ this.emittedNullifiers.add(siloedNullifier);
229
251
  }
230
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';
@@ -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 { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import { TxHash } from '@aztec/stdlib/tx';
@@ -7,7 +7,7 @@ import { TxHash } from '@aztec/stdlib/tx';
7
7
  export const MAX_NOTE_PACKED_LEN = 10;
8
8
 
9
9
  /**
10
- * Intermediate struct used to perform batch note validation by PXE. The `utilityValidateEnqueuedNotesAndEvents` oracle
10
+ * Intermediate struct used to perform batch note validation by PXE. The `utilityValidateAndStoreEnqueuedNotesAndEvents` oracle
11
11
  * expects for values of this type to be stored in a `CapsuleArray`.
12
12
  */
13
13
  export class NoteValidationRequest {
@@ -1,42 +1,23 @@
1
- import { Fr } from '@aztec/foundation/fields';
2
- import type { FieldsOf } from '@aztec/foundation/types';
1
+ import { toACVMField } from '@aztec/simulator/client';
3
2
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- import type { UInt64 } from '@aztec/stdlib/types';
3
+ import type { BlockHeader } from '@aztec/stdlib/tx';
5
4
 
6
5
  /**
7
6
  * TypeScript counterpart of utility_context.nr. Used only as a return value for the utilityGetUtilityContext oracle.
8
7
  */
9
8
  export class UtilityContext {
10
- private constructor(
11
- public readonly blockNumber: number,
12
- public readonly timestamp: UInt64,
9
+ constructor(
10
+ public readonly blockHeader: BlockHeader,
13
11
  public readonly contractAddress: AztecAddress,
14
- public readonly version: Fr,
15
- public readonly chainId: Fr,
16
12
  ) {}
17
13
 
18
- static from(fields: FieldsOf<UtilityContext>) {
19
- return new UtilityContext(
20
- fields.blockNumber,
21
- fields.timestamp,
22
- fields.contractAddress,
23
- fields.version,
24
- fields.chainId,
25
- );
26
- }
27
-
28
14
  /**
29
15
  * Returns a representation of the utility context as expected by intrinsic Noir deserialization.
30
16
  * The order of the fields has to be the same as the order of the fields in the utility_context.nr.
31
17
  */
32
18
  public toNoirRepresentation(): (string | string[])[] {
33
19
  // TODO(#12874): remove the stupid as string conversion by modifying ForeignCallOutput type in acvm.js
34
- return [
35
- new Fr(this.blockNumber).toString() as string,
36
- new Fr(this.timestamp).toString() as string,
37
- this.contractAddress.toString() as string,
38
- this.version.toString() as string,
39
- this.chainId.toString() as string,
40
- ];
20
+ const blockHeaderFields = this.blockHeader.toFields().map(toACVMField);
21
+ return [...blockHeaderFields, this.contractAddress.toString() as string];
41
22
  }
42
23
  }