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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/dest/bin/check_oracle_version.js +105 -15
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +41 -0
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  4. package/dest/{synchronizer/synchronizer.js → block_synchronizer/block_synchronizer.js} +35 -30
  5. package/dest/block_synchronizer/index.d.ts +2 -0
  6. package/dest/block_synchronizer/index.d.ts.map +1 -0
  7. package/dest/block_synchronizer/index.js +1 -0
  8. package/dest/config/index.d.ts +4 -4
  9. package/dest/config/index.d.ts.map +1 -1
  10. package/dest/config/package_info.js +1 -1
  11. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  12. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  13. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  14. package/dest/contract_function_simulator/contract_function_simulator.d.ts +42 -14
  15. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  16. package/dest/contract_function_simulator/contract_function_simulator.js +73 -29
  17. package/dest/contract_function_simulator/execution_note_cache.d.ts +21 -12
  18. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/execution_note_cache.js +48 -31
  20. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +1 -1
  21. package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
  22. package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
  23. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
  24. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -3
  25. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  26. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +5 -2
  27. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
  28. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  29. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
  30. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  31. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
  33. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +2 -2
  34. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  35. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  36. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  38. package/dest/contract_function_simulator/oracle/interfaces.d.ts +14 -13
  39. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +4 -2
  41. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
  43. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +9 -5
  44. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  45. package/dest/contract_function_simulator/oracle/note_packing_utils.js +11 -7
  46. package/dest/contract_function_simulator/oracle/oracle.d.ts +7 -7
  47. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  48. package/dest/contract_function_simulator/oracle/oracle.js +37 -25
  49. package/dest/contract_function_simulator/oracle/private_execution.d.ts +10 -16
  50. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  51. package/dest/contract_function_simulator/oracle/private_execution.js +19 -18
  52. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +25 -25
  53. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  54. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +29 -44
  55. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +63 -21
  56. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  57. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +162 -54
  58. package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
  59. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  60. package/dest/contract_function_simulator/pick_notes.js +1 -1
  61. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  62. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  63. package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
  64. package/dest/debug/pxe_debug_utils.d.ts +31 -0
  65. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  66. package/dest/debug/pxe_debug_utils.js +37 -0
  67. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  68. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  69. package/dest/entrypoints/client/bundle/index.js +0 -1
  70. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  71. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  72. package/dest/entrypoints/client/bundle/utils.js +12 -3
  73. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  74. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  75. package/dest/entrypoints/client/lazy/index.js +0 -1
  76. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  77. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  78. package/dest/entrypoints/client/lazy/utils.js +12 -3
  79. package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
  80. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  81. package/dest/entrypoints/server/index.d.ts +3 -2
  82. package/dest/entrypoints/server/index.d.ts.map +1 -1
  83. package/dest/entrypoints/server/index.js +2 -1
  84. package/dest/entrypoints/server/utils.d.ts +1 -1
  85. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  86. package/dest/entrypoints/server/utils.js +12 -8
  87. package/dest/error_enriching.d.ts +4 -4
  88. package/dest/error_enriching.d.ts.map +1 -1
  89. package/dest/error_enriching.js +6 -6
  90. package/dest/events/event_service.d.ts +16 -0
  91. package/dest/events/event_service.d.ts.map +1 -0
  92. package/dest/events/event_service.js +45 -0
  93. package/dest/events/index.d.ts +2 -0
  94. package/dest/events/index.d.ts.map +1 -0
  95. package/dest/events/index.js +1 -0
  96. package/dest/events/private_event_filter_validator.d.ts +9 -0
  97. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  98. package/dest/events/private_event_filter_validator.js +38 -0
  99. package/dest/job_coordinator/job_coordinator.d.ts +74 -0
  100. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  101. package/dest/job_coordinator/job_coordinator.js +93 -0
  102. package/dest/logs/log_service.d.ts +27 -0
  103. package/dest/logs/log_service.d.ts.map +1 -0
  104. package/dest/logs/log_service.js +122 -0
  105. package/dest/notes/index.d.ts +2 -0
  106. package/dest/notes/index.d.ts.map +1 -0
  107. package/dest/notes/index.js +1 -0
  108. package/dest/notes/note_service.d.ts +48 -0
  109. package/dest/notes/note_service.d.ts.map +1 -0
  110. package/dest/notes/note_service.js +147 -0
  111. package/dest/oracle_version.d.ts +2 -2
  112. package/dest/oracle_version.js +2 -2
  113. package/dest/private_kernel/hints/index.d.ts +2 -2
  114. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  115. package/dest/private_kernel/hints/index.js +1 -1
  116. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
  117. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  118. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +13 -7
  119. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  120. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  121. package/dest/private_kernel/private_kernel_execution_prover.js +8 -9
  122. package/dest/private_kernel/private_kernel_oracle.d.ts +26 -29
  123. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  124. package/dest/private_kernel/private_kernel_oracle.js +90 -2
  125. package/dest/pxe.d.ts +45 -81
  126. package/dest/pxe.d.ts.map +1 -1
  127. package/dest/pxe.js +182 -215
  128. package/dest/storage/address_store/address_store.d.ts +11 -0
  129. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  130. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +1 -1
  131. package/dest/storage/address_store/index.d.ts +2 -0
  132. package/dest/storage/address_store/index.d.ts.map +1 -0
  133. package/dest/storage/address_store/index.js +1 -0
  134. package/dest/storage/{sync_data_provider/sync_data_provider.d.ts → anchor_block_store/anchor_block_store.d.ts} +2 -4
  135. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  136. package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +2 -9
  137. package/dest/storage/{sync_data_provider → anchor_block_store}/index.d.ts +2 -2
  138. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  139. package/dest/storage/anchor_block_store/index.js +1 -0
  140. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  141. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  142. package/dest/storage/capsule_store/capsule_store.js +255 -0
  143. package/dest/storage/capsule_store/index.d.ts +2 -0
  144. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  145. package/dest/storage/capsule_store/index.js +1 -0
  146. package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +8 -5
  147. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  148. package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +46 -3
  149. package/dest/storage/contract_store/index.d.ts +2 -0
  150. package/dest/storage/contract_store/index.d.ts.map +1 -0
  151. package/dest/storage/contract_store/index.js +1 -0
  152. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  153. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  154. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
  155. package/dest/storage/index.d.ts +8 -8
  156. package/dest/storage/index.d.ts.map +1 -1
  157. package/dest/storage/index.js +7 -7
  158. package/dest/storage/note_store/index.d.ts +3 -0
  159. package/dest/storage/note_store/index.d.ts.map +1 -0
  160. package/dest/storage/note_store/index.js +2 -0
  161. package/dest/storage/{note_data_provider/note_data_provider.d.ts → note_store/note_store.d.ts} +15 -13
  162. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  163. package/dest/storage/{note_data_provider/note_data_provider.js → note_store/note_store.js} +105 -102
  164. package/dest/storage/private_event_store/private_event_store.d.ts +78 -0
  165. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  166. package/dest/storage/private_event_store/private_event_store.js +222 -0
  167. package/dest/storage/tagging_store/index.d.ts +4 -0
  168. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  169. package/dest/storage/tagging_store/index.js +3 -0
  170. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  171. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  172. package/dest/storage/tagging_store/recipient_tagging_store.js +99 -0
  173. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  174. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  175. package/dest/storage/tagging_store/sender_address_book_store.js +30 -0
  176. package/dest/storage/tagging_store/sender_tagging_store.d.ts +77 -0
  177. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  178. package/dest/storage/tagging_store/sender_tagging_store.js +278 -0
  179. package/dest/tagging/constants.d.ts +2 -2
  180. package/dest/tagging/constants.d.ts.map +1 -1
  181. package/dest/tagging/constants.js +10 -2
  182. package/dest/tagging/index.d.ts +15 -6
  183. package/dest/tagging/index.d.ts.map +1 -1
  184. package/dest/tagging/index.js +14 -5
  185. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +14 -0
  186. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
  187. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
  188. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  189. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  190. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  191. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +14 -0
  192. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
  193. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +29 -0
  194. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +20 -0
  195. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  196. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
  197. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
  198. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  199. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +32 -0
  200. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +20 -0
  201. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  202. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +57 -0
  203. package/dest/tree_membership/tree_membership_service.d.ts +50 -0
  204. package/dest/tree_membership/tree_membership_service.d.ts.map +1 -0
  205. package/dest/tree_membership/tree_membership_service.js +75 -0
  206. package/package.json +18 -18
  207. package/src/bin/check_oracle_version.ts +130 -20
  208. package/src/{synchronizer/synchronizer.ts → block_synchronizer/block_synchronizer.ts} +44 -30
  209. package/src/block_synchronizer/index.ts +1 -0
  210. package/src/config/index.ts +3 -3
  211. package/src/config/package_info.ts +1 -1
  212. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  213. package/src/contract_function_simulator/contract_function_simulator.ts +118 -30
  214. package/src/contract_function_simulator/execution_note_cache.ts +51 -29
  215. package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
  216. package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
  217. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -1
  218. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
  219. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -1
  220. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +1 -1
  221. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  222. package/src/contract_function_simulator/oracle/interfaces.ts +13 -12
  223. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
  224. package/src/contract_function_simulator/oracle/note_packing_utils.ts +23 -9
  225. package/src/contract_function_simulator/oracle/oracle.ts +44 -28
  226. package/src/contract_function_simulator/oracle/private_execution.ts +22 -30
  227. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +97 -58
  228. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +233 -63
  229. package/src/contract_function_simulator/pick_notes.ts +1 -1
  230. package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
  231. package/src/debug/pxe_debug_utils.ts +48 -0
  232. package/src/entrypoints/client/bundle/index.ts +0 -1
  233. package/src/entrypoints/client/bundle/utils.ts +9 -3
  234. package/src/entrypoints/client/lazy/index.ts +0 -1
  235. package/src/entrypoints/client/lazy/utils.ts +9 -4
  236. package/src/entrypoints/pxe_creation_options.ts +4 -1
  237. package/src/entrypoints/server/index.ts +2 -1
  238. package/src/entrypoints/server/utils.ts +12 -16
  239. package/src/error_enriching.ts +7 -15
  240. package/src/events/event_service.ts +73 -0
  241. package/src/events/index.ts +1 -0
  242. package/src/events/private_event_filter_validator.ts +46 -0
  243. package/src/job_coordinator/job_coordinator.ts +149 -0
  244. package/src/logs/log_service.ts +204 -0
  245. package/src/notes/index.ts +1 -0
  246. package/src/notes/note_service.ts +194 -0
  247. package/src/oracle_version.ts +2 -2
  248. package/src/private_kernel/hints/index.ts +1 -1
  249. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +34 -23
  250. package/src/private_kernel/private_kernel_execution_prover.ts +7 -9
  251. package/src/private_kernel/private_kernel_oracle.ts +118 -37
  252. package/src/pxe.ts +233 -279
  253. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +1 -1
  254. package/src/storage/address_store/index.ts +1 -0
  255. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +2 -12
  256. package/src/storage/anchor_block_store/index.ts +1 -0
  257. package/src/storage/capsule_store/capsule_store.ts +315 -0
  258. package/src/storage/capsule_store/index.ts +1 -0
  259. package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +65 -3
  260. package/src/storage/contract_store/index.ts +1 -0
  261. package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
  262. package/src/storage/index.ts +7 -7
  263. package/src/storage/note_store/index.ts +2 -0
  264. package/src/storage/{note_data_provider/note_data_provider.ts → note_store/note_store.ts} +117 -105
  265. package/src/storage/private_event_store/private_event_store.ts +324 -0
  266. package/src/storage/tagging_store/index.ts +3 -0
  267. package/src/storage/tagging_store/recipient_tagging_store.ts +129 -0
  268. package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
  269. package/src/storage/tagging_store/sender_tagging_store.ts +345 -0
  270. package/src/tagging/constants.ts +10 -2
  271. package/src/tagging/index.ts +17 -5
  272. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +133 -0
  273. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  274. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +43 -0
  275. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +97 -0
  276. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +48 -0
  277. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +75 -0
  278. package/src/tree_membership/tree_membership_service.ts +97 -0
  279. package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -267
  280. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
  281. package/dest/contract_function_simulator/execution_data_provider.js +0 -14
  282. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  283. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  284. package/dest/contract_function_simulator/proxied_node.js +0 -27
  285. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -123
  286. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
  287. package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -696
  288. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  289. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  290. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -45
  291. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  292. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  293. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  294. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  295. package/dest/storage/address_data_provider/index.d.ts +0 -2
  296. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  297. package/dest/storage/address_data_provider/index.js +0 -1
  298. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
  299. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  300. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -118
  301. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  302. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  303. package/dest/storage/capsule_data_provider/index.js +0 -1
  304. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  305. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  306. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  307. package/dest/storage/contract_data_provider/index.js +0 -1
  308. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  309. package/dest/storage/note_data_provider/index.d.ts +0 -3
  310. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  311. package/dest/storage/note_data_provider/index.js +0 -2
  312. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  313. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -37
  314. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  315. package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -105
  316. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  317. package/dest/storage/sync_data_provider/index.js +0 -1
  318. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  319. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  320. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  321. package/dest/storage/tagging_data_provider/index.js +0 -1
  322. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
  323. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  324. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
  325. package/dest/synchronizer/index.d.ts +0 -2
  326. package/dest/synchronizer/index.d.ts.map +0 -1
  327. package/dest/synchronizer/index.js +0 -1
  328. package/dest/synchronizer/synchronizer.d.ts +0 -36
  329. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  330. package/dest/tagging/siloed_tag.d.ts +0 -14
  331. package/dest/tagging/siloed_tag.d.ts.map +0 -1
  332. package/dest/tagging/siloed_tag.js +0 -20
  333. package/dest/tagging/tag.d.ts +0 -12
  334. package/dest/tagging/tag.d.ts.map +0 -1
  335. package/dest/tagging/tag.js +0 -17
  336. package/dest/tagging/utils.d.ts +0 -18
  337. package/dest/tagging/utils.d.ts.map +0 -1
  338. package/dest/tagging/utils.js +0 -24
  339. package/src/contract_function_simulator/execution_data_provider.ts +0 -342
  340. package/src/contract_function_simulator/proxied_node.ts +0 -33
  341. package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1023
  342. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
  343. package/src/storage/address_data_provider/index.ts +0 -1
  344. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -147
  345. package/src/storage/capsule_data_provider/index.ts +0 -1
  346. package/src/storage/contract_data_provider/index.ts +0 -1
  347. package/src/storage/note_data_provider/index.ts +0 -2
  348. package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -143
  349. package/src/storage/sync_data_provider/index.ts +0 -1
  350. package/src/storage/tagging_data_provider/index.ts +0 -1
  351. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
  352. package/src/synchronizer/index.ts +0 -1
  353. package/src/tagging/siloed_tag.ts +0 -22
  354. package/src/tagging/tag.ts +0 -16
  355. package/src/tagging/utils.ts +0 -31
@@ -1,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
  /**
@@ -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';
@@ -15,6 +15,7 @@ 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';
@@ -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
  }
@@ -1,16 +1,17 @@
1
1
  import type { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
2
2
  import type { BlockNumber } from '@aztec/foundation/branded-types';
3
- import { Fr, Point } from '@aztec/foundation/fields';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
+ import { Point } from '@aztec/foundation/curves/grumpkin';
4
5
  import type { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
5
6
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
7
+ import { L2BlockHash } from '@aztec/stdlib/block';
6
8
  import type { CompleteAddress, ContractInstance } from '@aztec/stdlib/contract';
7
9
  import type { KeyValidationRequest } from '@aztec/stdlib/kernel';
8
- import type { ContractClassLog } from '@aztec/stdlib/logs';
10
+ import type { ContractClassLog, Tag } from '@aztec/stdlib/logs';
9
11
  import type { Note, NoteStatus } from '@aztec/stdlib/note';
10
12
  import { type MerkleTreeId, type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
11
13
  import type { BlockHeader } from '@aztec/stdlib/tx';
12
14
 
13
- import type { Tag } from '../../tagging/tag.js';
14
15
  import type { UtilityContext } from '../noir-structs/utility_context.js';
15
16
  import type { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
16
17
 
@@ -32,10 +33,10 @@ export interface NoteData {
32
33
  noteNonce: Fr;
33
34
  /** A hash of the note as it gets stored in the note hash tree. */
34
35
  noteHash: Fr;
36
+ /** True if the note is pending, false if settled. */
37
+ isPending: boolean;
35
38
  /** The corresponding nullifier of the note. Undefined for pending notes. */
36
39
  siloedNullifier?: Fr;
37
- /** The note's leaf index in the note hash tree. Undefined for pending notes. */
38
- index?: bigint;
39
40
  }
40
41
 
41
42
  // These interfaces contain the list of oracles required by aztec-nr in order to simulate and execute transactions, i.e.
@@ -62,24 +63,24 @@ export interface IMiscOracle {
62
63
  export interface IUtilityExecutionOracle {
63
64
  isUtility: true;
64
65
 
65
- utilityGetUtilityContext(): Promise<UtilityContext>;
66
+ utilityGetUtilityContext(): UtilityContext;
66
67
  utilityGetKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest>;
67
68
  utilityGetContractInstance(address: AztecAddress): Promise<ContractInstance>;
68
- utilityGetMembershipWitness(blockNumber: BlockNumber, treeId: MerkleTreeId, leafValue: Fr): Promise<Fr[] | undefined>;
69
+ utilityGetMembershipWitness(blockHash: L2BlockHash, treeId: MerkleTreeId, leafValue: Fr): Promise<Fr[] | undefined>;
69
70
  utilityGetNullifierMembershipWitness(
70
- blockNumber: BlockNumber,
71
+ blockHash: L2BlockHash,
71
72
  nullifier: Fr,
72
73
  ): Promise<NullifierMembershipWitness | undefined>;
73
- utilityGetPublicDataWitness(blockNumber: BlockNumber, leafSlot: Fr): Promise<PublicDataWitness | undefined>;
74
+ utilityGetPublicDataWitness(blockHash: L2BlockHash, leafSlot: Fr): Promise<PublicDataWitness | undefined>;
74
75
  utilityGetLowNullifierMembershipWitness(
75
- blockNumber: BlockNumber,
76
+ blockHash: L2BlockHash,
76
77
  nullifier: Fr,
77
78
  ): Promise<NullifierMembershipWitness | undefined>;
78
79
  utilityGetBlockHeader(blockNumber: BlockNumber): Promise<BlockHeader | undefined>;
79
80
  utilityGetPublicKeysAndPartialAddress(account: AztecAddress): Promise<CompleteAddress>;
80
81
  utilityGetAuthWitness(messageHash: Fr): Promise<Fr[] | undefined>;
81
82
  utilityGetNotes(
82
- owner: AztecAddress,
83
+ owner: AztecAddress | undefined,
83
84
  storageSlot: Fr,
84
85
  numSelects: number,
85
86
  selectByIndexes: number[],
@@ -102,9 +103,9 @@ export interface IUtilityExecutionOracle {
102
103
  secret: Fr,
103
104
  ): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
104
105
  utilityStorageRead(
106
+ blockHash: L2BlockHash,
105
107
  contractAddress: AztecAddress,
106
108
  startStorageSlot: Fr,
107
- blockNumber: BlockNumber,
108
109
  numberOfElements: number,
109
110
  ): Promise<Fr[]>;
110
111
  utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr): Promise<void>;
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { SiblingPath } from '@aztec/foundation/trees';
3
3
 
4
4
  export class MessageLoadOracleInputs<N extends number> {
@@ -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 type { Note } from '@aztec/stdlib/note';
4
4
 
@@ -24,31 +24,45 @@ function fromRawData(nonzeroNoteHashCounter: boolean, maybeNoteNonce: Fr): { sta
24
24
  * and only after that it packs the retrieved note. Hence it doesn't map one to one with `RetrievedNote::pack()`.
25
25
  *
26
26
  * @param contractAddress - The address of the contract that owns the note
27
+ * @param owner - The owner of the note
27
28
  * @param randomness - The randomness injected into the note to get the hiding property of commitments
29
+ * @param storageSlot - The storage slot of the note
28
30
  * @param noteNonce - The nonce injected into the note hash preimage by kernels.
29
- * @param index - Optional index in the note hash tree. If undefined, indicates a transient note
31
+ * @param isPending - True if the note is pending, false if settled
30
32
  * @param note - The note content containing the actual note data
31
33
  * @returns The packed note as an array of field elements
32
34
  */
33
35
  export function packAsRetrievedNote({
34
36
  contractAddress,
37
+ owner,
35
38
  randomness,
39
+ storageSlot,
36
40
  noteNonce,
37
- index,
41
+ isPending,
38
42
  note,
39
43
  }: {
40
44
  contractAddress: AztecAddress;
45
+ owner: AztecAddress;
41
46
  randomness: Fr;
47
+ storageSlot: Fr;
42
48
  noteNonce: Fr;
43
- index?: bigint;
49
+ isPending: boolean;
44
50
  note: Note;
45
51
  }) {
46
- // If index is undefined, the note is transient which implies that the nonzero_note_hash_counter has to be true
47
- const nonzeroNoteHashCounter = index === undefined;
52
+ // If the note is pending it means it has a non-zero note hash counter associated with it.
53
+ const nonZeroNoteHashCounter = isPending;
48
54
 
49
55
  // To pack the note as retrieved note we first need to reconstruct the note metadata.
50
- const noteMetadata = fromRawData(nonzeroNoteHashCounter, noteNonce);
56
+ const noteMetadata = fromRawData(nonZeroNoteHashCounter, noteNonce);
51
57
 
52
- // Pack metadata first (stage and maybe_note_nonce), followed by the rest
53
- return [...note.items, contractAddress, randomness, new Fr(noteMetadata.stage), noteMetadata.maybeNoteNonce];
58
+ // Pack in order: note, contract_address, owner, randomness, storage_slot, metadata (stage, maybe_note_nonce)
59
+ return [
60
+ ...note.items,
61
+ contractAddress,
62
+ owner,
63
+ randomness,
64
+ storageSlot,
65
+ new Fr(noteMetadata.stage),
66
+ noteMetadata.maybeNoteNonce,
67
+ ];
54
68
  }
@@ -1,5 +1,6 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { Fr, Point } from '@aztec/foundation/fields';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { Point } from '@aztec/foundation/curves/grumpkin';
3
4
  import {
4
5
  type ACIRCallback,
5
6
  type ACVMField,
@@ -11,6 +12,7 @@ import {
11
12
  } from '@aztec/simulator/client';
12
13
  import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
13
14
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
15
+ import { L2BlockHash } from '@aztec/stdlib/block';
14
16
  import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
15
17
  import { MerkleTreeId } from '@aztec/stdlib/trees';
16
18
 
@@ -111,9 +113,9 @@ export class Oracle {
111
113
  return [values.map(toACVMField)];
112
114
  }
113
115
 
114
- async utilityGetUtilityContext(): Promise<(ACVMField | ACVMField[])[]> {
115
- const context = await this.handlerAsUtility().utilityGetUtilityContext();
116
- return context.toNoirRepresentation();
116
+ utilityGetUtilityContext(): Promise<(ACVMField | ACVMField[])[]> {
117
+ const context = this.handlerAsUtility().utilityGetUtilityContext();
118
+ return Promise.resolve(context.toNoirRepresentation());
117
119
  }
118
120
 
119
121
  async utilityGetKeyValidationRequest([pkMHash]: ACVMField[]): Promise<ACVMField[]> {
@@ -137,76 +139,77 @@ export class Oracle {
137
139
  }
138
140
 
139
141
  async utilityGetMembershipWitness(
140
- [blockNumber]: ACVMField[],
142
+ [blockHash]: ACVMField[],
141
143
  [treeId]: ACVMField[],
142
144
  [leafValue]: ACVMField[],
143
145
  ): Promise<(ACVMField | ACVMField[])[]> {
144
- const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
146
+ const parsedBlockHash = L2BlockHash.fromString(blockHash);
145
147
  const parsedTreeId = Fr.fromString(treeId).toNumber();
146
148
  const parsedLeafValue = Fr.fromString(leafValue);
147
149
 
148
150
  const witness = await this.handlerAsUtility().utilityGetMembershipWitness(
149
- BlockNumber(parsedBlockNumber),
151
+ parsedBlockHash,
150
152
  parsedTreeId,
151
153
  parsedLeafValue,
152
154
  );
153
155
  if (!witness) {
154
156
  throw new Error(
155
- `Leaf ${leafValue} not found in the tree ${MerkleTreeId[parsedTreeId]} at block ${parsedBlockNumber}.`,
157
+ `Leaf ${leafValue} not found in the tree ${MerkleTreeId[parsedTreeId]} at block hash ${parsedBlockHash.toString()}.`,
156
158
  );
157
159
  }
158
160
  return [toACVMField(witness[0]), witness.slice(1).map(toACVMField)];
159
161
  }
160
162
 
161
163
  async utilityGetNullifierMembershipWitness(
162
- [blockNumber]: ACVMField[],
164
+ [blockHash]: ACVMField[],
163
165
  [nullifier]: ACVMField[], // nullifier, we try to find the witness for (to prove inclusion)
164
166
  ): Promise<(ACVMField | ACVMField[])[]> {
165
- const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
167
+ const parsedBlockHash = L2BlockHash.fromString(blockHash);
166
168
  const parsedNullifier = Fr.fromString(nullifier);
167
169
 
168
170
  const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(
169
- BlockNumber(parsedBlockNumber),
171
+ parsedBlockHash,
170
172
  parsedNullifier,
171
173
  );
172
174
  if (!witness) {
173
- throw new Error(`Nullifier witness not found for nullifier ${parsedNullifier} at block ${parsedBlockNumber}.`);
175
+ throw new Error(
176
+ `Nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
177
+ );
174
178
  }
175
179
  return witness.toNoirRepresentation();
176
180
  }
177
181
 
178
182
  async utilityGetLowNullifierMembershipWitness(
179
- [blockNumber]: ACVMField[],
183
+ [blockHash]: ACVMField[],
180
184
  [nullifier]: ACVMField[], // nullifier, we try to find the low nullifier witness for (to prove non-inclusion)
181
185
  ): Promise<(ACVMField | ACVMField[])[]> {
182
- const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
186
+ const parsedBlockHash = L2BlockHash.fromString(blockHash);
183
187
  const parsedNullifier = Fr.fromString(nullifier);
184
188
 
185
189
  const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(
186
- BlockNumber(parsedBlockNumber),
190
+ parsedBlockHash,
187
191
  parsedNullifier,
188
192
  );
189
193
  if (!witness) {
190
194
  throw new Error(
191
- `Low nullifier witness not found for nullifier ${parsedNullifier} at block ${parsedBlockNumber}.`,
195
+ `Low nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
192
196
  );
193
197
  }
194
198
  return witness.toNoirRepresentation();
195
199
  }
196
200
 
197
201
  async utilityGetPublicDataWitness(
198
- [blockNumber]: ACVMField[],
202
+ [blockHash]: ACVMField[],
199
203
  [leafSlot]: ACVMField[],
200
204
  ): Promise<(ACVMField | ACVMField[])[]> {
201
- const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
205
+ const parsedBlockHash = L2BlockHash.fromString(blockHash);
202
206
  const parsedLeafSlot = Fr.fromString(leafSlot);
203
207
 
204
- const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(
205
- BlockNumber(parsedBlockNumber),
206
- parsedLeafSlot,
207
- );
208
+ const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(parsedBlockHash, parsedLeafSlot);
208
209
  if (!witness) {
209
- throw new Error(`Public data witness not found for slot ${parsedLeafSlot} at block ${parsedBlockNumber}.`);
210
+ throw new Error(
211
+ `Public data witness not found for slot ${parsedLeafSlot} at block hash ${parsedBlockHash.toString()}.`,
212
+ );
210
213
  }
211
214
  return witness.toNoirRepresentation();
212
215
  }
@@ -239,7 +242,8 @@ export class Oracle {
239
242
  }
240
243
 
241
244
  async utilityGetNotes(
242
- [owner]: ACVMField[],
245
+ [ownerSome]: ACVMField[],
246
+ [ownerValue]: ACVMField[],
243
247
  [storageSlot]: ACVMField[],
244
248
  [numSelects]: ACVMField[],
245
249
  selectByIndexes: ACVMField[],
@@ -257,8 +261,10 @@ export class Oracle {
257
261
  [maxNotes]: ACVMField[],
258
262
  [packedRetrievedNoteLength]: ACVMField[],
259
263
  ): Promise<(ACVMField | ACVMField[])[]> {
264
+ // Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
265
+ const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
260
266
  const noteDatas = await this.handlerAsUtility().utilityGetNotes(
261
- AztecAddress.fromString(owner),
267
+ owner,
262
268
  Fr.fromString(storageSlot),
263
269
  +numSelects,
264
270
  selectByIndexes.map(s => +s),
@@ -275,7 +281,17 @@ export class Oracle {
275
281
  +status,
276
282
  );
277
283
 
278
- const returnDataAsArrayOfPackedRetrievedNotes = noteDatas.map(packAsRetrievedNote);
284
+ const returnDataAsArrayOfPackedRetrievedNotes = noteDatas.map(noteData =>
285
+ packAsRetrievedNote({
286
+ contractAddress: noteData.contractAddress,
287
+ owner: noteData.owner,
288
+ randomness: noteData.randomness,
289
+ storageSlot: noteData.storageSlot,
290
+ noteNonce: noteData.noteNonce,
291
+ isPending: noteData.isPending,
292
+ note: noteData.note,
293
+ }),
294
+ );
279
295
 
280
296
  // Now we convert each sub-array to an array of ACVMField
281
297
  const returnDataAsArrayOfACVMFieldArrays = returnDataAsArrayOfPackedRetrievedNotes.map(subArray =>
@@ -344,15 +360,15 @@ export class Oracle {
344
360
  }
345
361
 
346
362
  async utilityStorageRead(
363
+ [blockHash]: ACVMField[],
347
364
  [contractAddress]: ACVMField[],
348
365
  [startStorageSlot]: ACVMField[],
349
- [blockNumber]: ACVMField[],
350
366
  [numberOfElements]: ACVMField[],
351
367
  ): Promise<ACVMField[][]> {
352
368
  const values = await this.handlerAsUtility().utilityStorageRead(
369
+ L2BlockHash.fromString(blockHash),
353
370
  new AztecAddress(Fr.fromString(contractAddress)),
354
371
  Fr.fromString(startStorageSlot),
355
- BlockNumber(+blockNumber),
356
372
  +numberOfElements,
357
373
  );
358
374
  return [values.map(toACVMField)];