@aztec/pxe 0.0.1-commit.96bb3f7 → 0.0.1-commit.993d240

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 (379) hide show
  1. package/dest/bin/check_oracle_version.d.ts +12 -2
  2. package/dest/bin/check_oracle_version.d.ts.map +1 -1
  3. package/dest/bin/check_oracle_version.js +32 -26
  4. package/dest/bin/index.d.ts +2 -0
  5. package/dest/bin/index.d.ts.map +1 -0
  6. package/dest/bin/index.js +1 -0
  7. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  8. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  9. package/dest/block_synchronizer/block_stream_source.js +62 -0
  10. package/dest/block_synchronizer/block_synchronizer.d.ts +16 -6
  11. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  12. package/dest/block_synchronizer/block_synchronizer.js +94 -23
  13. package/dest/config/index.d.ts +10 -2
  14. package/dest/config/index.d.ts.map +1 -1
  15. package/dest/config/index.js +17 -2
  16. package/dest/config/package_info.js +1 -1
  17. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  18. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  19. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  20. package/dest/contract_function_simulator/contract_function_simulator.d.ts +69 -36
  21. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  22. package/dest/contract_function_simulator/contract_function_simulator.js +240 -91
  23. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  24. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  25. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  26. package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
  27. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/execution_note_cache.js +45 -28
  29. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -11
  30. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -15
  32. package/dest/contract_function_simulator/index.d.ts +5 -2
  33. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  34. package/dest/contract_function_simulator/index.js +4 -1
  35. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +48 -0
  36. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  37. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +45 -0
  38. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -7
  39. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +9 -10
  41. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +13 -3
  42. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +35 -4
  44. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  45. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -4
  47. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -8
  48. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  49. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +7 -11
  50. package/dest/contract_function_simulator/noir-structs/option.d.ts +61 -0
  51. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  52. package/dest/contract_function_simulator/noir-structs/option.js +62 -0
  53. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  54. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  55. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  56. package/dest/contract_function_simulator/oracle/interfaces.d.ts +70 -50
  57. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  58. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
  59. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  60. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +7 -7
  61. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  62. package/dest/contract_function_simulator/oracle/note_packing_utils.js +10 -10
  63. package/dest/contract_function_simulator/oracle/oracle.d.ts +74 -43
  64. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  65. package/dest/contract_function_simulator/oracle/oracle.js +471 -264
  66. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +147 -0
  67. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  68. package/dest/contract_function_simulator/oracle/oracle_registry.js +1199 -0
  69. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
  70. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  71. package/dest/contract_function_simulator/oracle/private_execution.js +5 -38
  72. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +74 -91
  73. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  74. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +164 -110
  75. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +156 -78
  76. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  77. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +459 -186
  78. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  79. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  80. package/dest/contract_function_simulator/pick_notes.js +20 -3
  81. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  82. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  83. package/dest/contract_function_simulator/proxied_contract_data_source.js +35 -64
  84. package/dest/contract_logging.d.ts +27 -0
  85. package/dest/contract_logging.d.ts.map +1 -0
  86. package/dest/contract_logging.js +38 -0
  87. package/dest/contract_sync/contract_sync_service.d.ts +42 -0
  88. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  89. package/dest/contract_sync/contract_sync_service.js +135 -0
  90. package/dest/contract_sync/helpers.d.ts +27 -0
  91. package/dest/contract_sync/helpers.d.ts.map +1 -0
  92. package/dest/contract_sync/helpers.js +53 -0
  93. package/dest/debug/pxe_debug_utils.d.ts +19 -10
  94. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  95. package/dest/debug/pxe_debug_utils.js +22 -17
  96. package/dest/entrypoints/client/bundle/index.d.ts +3 -1
  97. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  98. package/dest/entrypoints/client/bundle/index.js +2 -0
  99. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  100. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  101. package/dest/entrypoints/client/bundle/utils.js +33 -11
  102. package/dest/entrypoints/client/lazy/index.d.ts +3 -1
  103. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  104. package/dest/entrypoints/client/lazy/index.js +2 -0
  105. package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
  106. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  107. package/dest/entrypoints/client/lazy/utils.js +34 -12
  108. package/dest/entrypoints/pxe_creation_options.d.ts +11 -2
  109. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  110. package/dest/entrypoints/pxe_creation_options.js +3 -1
  111. package/dest/entrypoints/server/index.d.ts +6 -2
  112. package/dest/entrypoints/server/index.d.ts.map +1 -1
  113. package/dest/entrypoints/server/index.js +5 -1
  114. package/dest/entrypoints/server/utils.d.ts +4 -3
  115. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  116. package/dest/entrypoints/server/utils.js +40 -13
  117. package/dest/events/event_service.d.ts +17 -8
  118. package/dest/events/event_service.d.ts.map +1 -1
  119. package/dest/events/event_service.js +58 -28
  120. package/dest/events/private_event_filter_validator.d.ts +6 -5
  121. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  122. package/dest/events/private_event_filter_validator.js +20 -6
  123. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  124. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  125. package/dest/hooks/authorize_utility_call.js +4 -0
  126. package/dest/hooks/execution_hooks.d.ts +42 -0
  127. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  128. package/dest/hooks/execution_hooks.js +9 -0
  129. package/dest/hooks/index.d.ts +4 -0
  130. package/dest/hooks/index.d.ts.map +1 -0
  131. package/dest/hooks/index.js +1 -0
  132. package/dest/job_coordinator/job_coordinator.d.ts +3 -2
  133. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
  134. package/dest/job_coordinator/job_coordinator.js +3 -2
  135. package/dest/logs/log_service.d.ts +13 -10
  136. package/dest/logs/log_service.d.ts.map +1 -1
  137. package/dest/logs/log_service.js +132 -84
  138. package/dest/messages/message_context_service.d.ts +17 -0
  139. package/dest/messages/message_context_service.d.ts.map +1 -0
  140. package/dest/messages/message_context_service.js +38 -0
  141. package/dest/notes/note_service.d.ts +31 -9
  142. package/dest/notes/note_service.d.ts.map +1 -1
  143. package/dest/notes/note_service.js +97 -77
  144. package/dest/notes_filter.d.ts +24 -0
  145. package/dest/notes_filter.d.ts.map +1 -0
  146. package/dest/notes_filter.js +4 -0
  147. package/dest/oracle_version.d.ts +4 -3
  148. package/dest/oracle_version.d.ts.map +1 -1
  149. package/dest/oracle_version.js +20 -9
  150. package/dest/private_kernel/batch_planner.d.ts +47 -0
  151. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  152. package/dest/private_kernel/batch_planner.js +104 -0
  153. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  154. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  155. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  156. package/dest/private_kernel/hints/index.d.ts +3 -3
  157. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  158. package/dest/private_kernel/hints/index.js +2 -2
  159. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
  160. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  161. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +141 -74
  162. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  163. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  164. package/dest/private_kernel/hints/test_utils.js +202 -0
  165. package/dest/private_kernel/private_kernel_execution_prover.d.ts +7 -2
  166. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  167. package/dest/private_kernel/private_kernel_execution_prover.js +168 -67
  168. package/dest/private_kernel/private_kernel_oracle.d.ts +28 -29
  169. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  170. package/dest/private_kernel/private_kernel_oracle.js +96 -2
  171. package/dest/pxe.d.ts +126 -59
  172. package/dest/pxe.d.ts.map +1 -1
  173. package/dest/pxe.js +257 -200
  174. package/dest/storage/address_store/address_store.d.ts +1 -1
  175. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  176. package/dest/storage/address_store/address_store.js +12 -11
  177. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
  178. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  179. package/dest/storage/anchor_block_store/anchor_block_store.js +9 -2
  180. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  181. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  182. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  183. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  184. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  185. package/dest/storage/backwards_compatibility_tests/schema_tests.js +591 -0
  186. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  187. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  188. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  189. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  190. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  191. package/dest/storage/capsule_store/capsule_service.js +50 -0
  192. package/dest/storage/capsule_store/capsule_store.d.ts +25 -10
  193. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  194. package/dest/storage/capsule_store/capsule_store.js +143 -28
  195. package/dest/storage/capsule_store/index.d.ts +2 -1
  196. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  197. package/dest/storage/capsule_store/index.js +1 -0
  198. package/dest/storage/contract_store/contract_store.d.ts +42 -16
  199. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  200. package/dest/storage/contract_store/contract_store.js +158 -102
  201. package/dest/storage/metadata.d.ts +1 -1
  202. package/dest/storage/metadata.js +1 -1
  203. package/dest/storage/note_store/note_store.d.ts +50 -51
  204. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  205. package/dest/storage/note_store/note_store.js +284 -263
  206. package/dest/storage/note_store/stored_note.d.ts +16 -0
  207. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  208. package/dest/storage/note_store/stored_note.js +43 -0
  209. package/dest/storage/open_pxe_stores.d.ts +33 -0
  210. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  211. package/dest/storage/open_pxe_stores.js +27 -0
  212. package/dest/storage/private_event_store/private_event_store.d.ts +43 -8
  213. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  214. package/dest/storage/private_event_store/private_event_store.js +229 -111
  215. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  216. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  217. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  218. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +16 -9
  219. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  220. package/dest/storage/tagging_store/recipient_tagging_store.js +88 -19
  221. package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
  222. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
  223. package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
  224. package/dest/storage/tagging_store/sender_tagging_store.d.ts +43 -32
  225. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  226. package/dest/storage/tagging_store/sender_tagging_store.js +300 -122
  227. package/dest/tagging/get_all_logs_by_tags.d.ts +48 -0
  228. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  229. package/dest/tagging/get_all_logs_by_tags.js +59 -0
  230. package/dest/tagging/index.d.ts +7 -5
  231. package/dest/tagging/index.d.ts.map +1 -1
  232. package/dest/tagging/index.js +5 -3
  233. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  234. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  235. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  236. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +56 -0
  237. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  238. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +163 -0
  239. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  240. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  241. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  242. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  243. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  244. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  245. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -9
  246. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  247. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +34 -18
  248. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +13 -7
  249. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  250. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +44 -16
  251. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +8 -7
  252. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  253. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +44 -27
  254. package/package.json +31 -19
  255. package/src/bin/check_oracle_version.ts +42 -31
  256. package/src/bin/index.ts +1 -0
  257. package/src/block_synchronizer/block_stream_source.ts +81 -0
  258. package/src/block_synchronizer/block_synchronizer.ts +116 -36
  259. package/src/config/index.ts +21 -1
  260. package/src/config/package_info.ts +1 -1
  261. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  262. package/src/contract_function_simulator/contract_function_simulator.ts +417 -156
  263. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  264. package/src/contract_function_simulator/execution_note_cache.ts +44 -25
  265. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
  266. package/src/contract_function_simulator/index.ts +4 -1
  267. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +55 -0
  268. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +11 -10
  269. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +36 -3
  270. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
  271. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -11
  272. package/src/contract_function_simulator/noir-structs/option.ts +69 -0
  273. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  274. package/src/contract_function_simulator/oracle/interfaces.ts +93 -70
  275. package/src/contract_function_simulator/oracle/note_packing_utils.ts +13 -13
  276. package/src/contract_function_simulator/oracle/oracle.ts +567 -461
  277. package/src/contract_function_simulator/oracle/oracle_registry.ts +904 -0
  278. package/src/contract_function_simulator/oracle/private_execution.ts +5 -71
  279. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +213 -209
  280. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +657 -254
  281. package/src/contract_function_simulator/pick_notes.ts +22 -3
  282. package/src/contract_function_simulator/proxied_contract_data_source.ts +41 -64
  283. package/src/contract_logging.ts +52 -0
  284. package/src/contract_sync/contract_sync_service.ts +189 -0
  285. package/src/contract_sync/helpers.ts +86 -0
  286. package/src/debug/pxe_debug_utils.ts +55 -18
  287. package/src/entrypoints/client/bundle/index.ts +2 -0
  288. package/src/entrypoints/client/bundle/utils.ts +26 -20
  289. package/src/entrypoints/client/lazy/index.ts +2 -0
  290. package/src/entrypoints/client/lazy/utils.ts +28 -21
  291. package/src/entrypoints/pxe_creation_options.ts +16 -1
  292. package/src/entrypoints/server/index.ts +5 -1
  293. package/src/entrypoints/server/utils.ts +37 -32
  294. package/src/events/event_service.ts +79 -39
  295. package/src/events/private_event_filter_validator.ts +23 -5
  296. package/src/hooks/authorize_utility_call.ts +44 -0
  297. package/src/hooks/execution_hooks.ts +48 -0
  298. package/src/hooks/index.ts +7 -0
  299. package/src/job_coordinator/job_coordinator.ts +4 -3
  300. package/src/logs/log_service.ts +171 -141
  301. package/src/messages/message_context_service.ts +45 -0
  302. package/src/notes/note_service.ts +137 -107
  303. package/src/notes_filter.ts +24 -0
  304. package/src/oracle_version.ts +20 -9
  305. package/src/private_kernel/batch_planner.ts +169 -0
  306. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  307. package/src/private_kernel/hints/index.ts +2 -2
  308. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +196 -137
  309. package/src/private_kernel/hints/test_utils.ts +318 -0
  310. package/src/private_kernel/private_kernel_execution_prover.ts +261 -93
  311. package/src/private_kernel/private_kernel_oracle.ts +129 -40
  312. package/src/pxe.ts +467 -273
  313. package/src/storage/address_store/address_store.ts +15 -15
  314. package/src/storage/anchor_block_store/anchor_block_store.ts +9 -1
  315. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  316. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  317. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  318. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  319. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  320. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +46 -0
  321. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +36 -0
  322. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  323. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  324. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +16 -0
  325. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  326. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +97 -0
  327. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  328. package/src/storage/backwards_compatibility_tests/schema_tests.ts +712 -0
  329. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  330. package/src/storage/capsule_store/capsule_service.ts +90 -0
  331. package/src/storage/capsule_store/capsule_store.ts +183 -29
  332. package/src/storage/capsule_store/index.ts +1 -0
  333. package/src/storage/contract_store/contract_store.ts +194 -125
  334. package/src/storage/metadata.ts +1 -1
  335. package/src/storage/note_store/note_store.ts +323 -320
  336. package/src/storage/note_store/stored_note.ts +48 -0
  337. package/src/storage/open_pxe_stores.ts +49 -0
  338. package/src/storage/private_event_store/private_event_store.ts +296 -124
  339. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  340. package/src/storage/tagging_store/recipient_tagging_store.ts +107 -21
  341. package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
  342. package/src/storage/tagging_store/sender_tagging_store.ts +366 -134
  343. package/src/tagging/get_all_logs_by_tags.ts +120 -0
  344. package/src/tagging/index.ts +6 -4
  345. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  346. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +240 -0
  347. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +4 -4
  348. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  349. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +59 -21
  350. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +47 -29
  351. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +41 -29
  352. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  353. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  354. package/dest/contract_function_simulator/proxied_node.js +0 -27
  355. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  356. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  357. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  358. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  359. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
  360. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  361. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -85
  362. package/dest/public_storage/public_storage_service.d.ts +0 -24
  363. package/dest/public_storage/public_storage_service.d.ts.map +0 -1
  364. package/dest/public_storage/public_storage_service.js +0 -26
  365. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  366. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  367. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  368. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  369. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  370. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -29
  371. package/dest/tree_membership/tree_membership_service.d.ts +0 -52
  372. package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
  373. package/dest/tree_membership/tree_membership_service.js +0 -84
  374. package/src/contract_function_simulator/proxied_node.ts +0 -33
  375. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -127
  376. package/src/public_storage/public_storage_service.ts +0 -33
  377. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -132
  378. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -43
  379. package/src/tree_membership/tree_membership_service.ts +0 -112
@@ -0,0 +1,78 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ /** In-memory store for ephemeral arrays scoped to a single contract call frame. */ export class EphemeralArrayService {
3
+ /**
4
+ * Maps a slot to the elements of the array stored at that slot. Each element is a serialized representation of
5
+ * the original type.
6
+ */ #arrays = new Map();
7
+ /** Returns all elements in the array, or an empty array if uninitialized. */ readArrayAt(slot) {
8
+ return this.#arrays.get(slot.toString()) ?? [];
9
+ }
10
+ #setArray(slot, array) {
11
+ this.#arrays.set(slot.toString(), array);
12
+ }
13
+ /** Returns the number of elements in the array at the given slot. */ len(slot) {
14
+ return this.readArrayAt(slot).length;
15
+ }
16
+ /** Appends an element to the array and returns the new length. */ push(slot, elements) {
17
+ const array = this.readArrayAt(slot);
18
+ array.push(elements);
19
+ this.#setArray(slot, array);
20
+ return array.length;
21
+ }
22
+ /** Removes and returns the last element. Throws if empty. */ pop(slot) {
23
+ const array = this.readArrayAt(slot);
24
+ if (array.length === 0) {
25
+ throw new Error(`Ephemeral array at slot ${slot} is empty`);
26
+ }
27
+ const element = array.pop();
28
+ this.#setArray(slot, array);
29
+ return element;
30
+ }
31
+ /** Returns the element at the given index. Throws if out of bounds. */ get(slot, index) {
32
+ const array = this.readArrayAt(slot);
33
+ if (index < 0 || index >= array.length) {
34
+ throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
35
+ }
36
+ return array[index];
37
+ }
38
+ /** Overwrites the element at the given index. Throws if out of bounds. */ set(slot, index, value) {
39
+ const array = this.readArrayAt(slot);
40
+ if (index < 0 || index >= array.length) {
41
+ throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
42
+ }
43
+ array[index] = value;
44
+ }
45
+ /** Removes the element at the given index, shifting subsequent elements backward. Throws if out of bounds. */ remove(slot, index) {
46
+ const array = this.readArrayAt(slot);
47
+ if (index < 0 || index >= array.length) {
48
+ throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
49
+ }
50
+ array.splice(index, 1);
51
+ }
52
+ /** Removes all elements from the array. */ clear(slot) {
53
+ this.#arrays.delete(slot.toString());
54
+ }
55
+ /** Allocates a fresh, unused slot for a new ephemeral array. */ allocateSlot() {
56
+ let slot;
57
+ do {
58
+ slot = Fr.random();
59
+ }while (this.#arrays.has(slot.toString()))
60
+ return slot;
61
+ }
62
+ /** Creates a new ephemeral array pre-populated with the given elements and returns its slot. */ newArray(elements) {
63
+ const slot = this.allocateSlot();
64
+ this.#setArray(slot, elements);
65
+ return slot;
66
+ }
67
+ /** Copies `count` elements from the source array to the destination array (overwrites destination). */ copy(srcSlot, dstSlot, count) {
68
+ const srcArray = this.readArrayAt(srcSlot);
69
+ if (count > srcArray.length) {
70
+ throw new Error(`Cannot copy ${count} elements from ephemeral array of length ${srcArray.length} at slot ${srcSlot}`);
71
+ }
72
+ // Deep copy the elements to avoid aliasing
73
+ const copied = srcArray.slice(0, count).map((el)=>[
74
+ ...el
75
+ ]);
76
+ this.#setArray(dstSlot, copied);
77
+ }
78
+ }
@@ -28,14 +28,17 @@ export declare class ExecutionNoteCache {
28
28
  */
29
29
  private nullifierMap;
30
30
  /**
31
- * All nullifiers emitted in this transaction.
31
+ * Nullifiers emitted by private calls in this transaction.
32
+ */
33
+ private emittedNullifiers;
34
+ /**
35
+ * The counter that separates non-revertible side effects (which persist even if the tx reverts) from revertible ones.
32
36
  */
33
- private allNullifiers;
34
37
  private minRevertibleSideEffectCounter;
35
38
  private inRevertiblePhase;
36
39
  /**
37
- * We don't need to use the tx request hash for nonces if another non revertible nullifier is emitted.
38
- * In that case we disable injecting the tx request hash as a nullifier.
40
+ * Whether the protocol nullifier was used for nonce generation.
41
+ * We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
39
42
  */
40
43
  private usedProtocolNullifierForNonces;
41
44
  constructor(protocolNullifier: Fr);
@@ -45,9 +48,7 @@ export declare class ExecutionNoteCache {
45
48
  */
46
49
  setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void>;
47
50
  isSideEffectCounterRevertible(sideEffectCounter: number): boolean;
48
- finish(): {
49
- usedProtocolNullifierForNonces: boolean;
50
- };
51
+ finish(): void;
51
52
  /**
52
53
  * Add a new note to cache.
53
54
  * @param note - New note created during execution.
@@ -88,8 +89,16 @@ export declare class ExecutionNoteCache {
88
89
  */
89
90
  getNullifiers(contractAddress: AztecAddress): Set<bigint>;
90
91
  getAllNotes(): PendingNote[];
92
+ /**
93
+ * @returns All nullifiers emitted by private calls in this transaction.
94
+ */
95
+ getEmittedNullifiers(): Fr[];
96
+ /**
97
+ * @returns All nullifiers emitted by private calls in this transaction. If the protocol nullifier was used as the
98
+ * nonce generator, it is injected as the first nullifier.
99
+ */
91
100
  getAllNullifiers(): Fr[];
92
- recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint): void;
101
+ getNonceGenerator(): Fr;
93
102
  }
94
103
  export {};
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX25vdGVfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX25vdGVfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELFVBQVUsV0FBVztJQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQ2YsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixzQkFBc0IsRUFBRSxFQUFFLENBQUM7Q0FDNUI7QUFFRDs7R0FFRztBQUNILHFCQUFhLGtCQUFrQjs7SUFpQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBaEM5Qzs7O09BR0c7SUFDSCxPQUFPLENBQUMsS0FBSyxDQUFxQjtJQUNsQzs7T0FFRztJQUNILE9BQU8sQ0FBQyxPQUFPLENBQXlDO0lBRXhEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsWUFBWSxDQUF1QztJQUUzRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxhQUFhLENBQTBCO0lBRS9DLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBSztJQUUzQyxPQUFPLENBQUMsaUJBQWlCLENBQVM7SUFFbEM7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLDhCQUE4QixDQUFRO0lBRTlDLFlBQTZCLGlCQUFpQixFQUFFLEVBQUUsRUFBSTtJQUV0RDs7O09BR0c7SUFDVSxpQ0FBaUMsQ0FBQyw4QkFBOEIsRUFBRSxNQUFNLGlCQXFDcEY7SUFFTSw2QkFBNkIsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUt2RTtJQUVNLE1BQU07O01BVVo7SUFFRDs7O09BR0c7SUFDSSxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQVNoRDtJQUVEOzs7Ozs7T0FNRztJQUNVLFdBQVcsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsK0JBeUJ2RjtJQUVEOzs7O09BSUc7SUFDVSxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxFQUFFLGlCQUc5RTtJQUVEOzs7Ozs7UUFNSTtJQUNHLFFBQVEsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEdBQUcsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFLGNBTTlGO0lBRUQ7Ozs7O1FBS0k7SUFDRyxlQUFlLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxXQUdqRTtJQUVEOzs7T0FHRztJQUNJLGFBQWEsQ0FBQyxlQUFlLEVBQUUsWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FFL0Q7SUFVRCxXQUFXLElBQUksV0FBVyxFQUFFLENBRTNCO0lBRUQsZ0JBQWdCLElBQUksRUFBRSxFQUFFLENBRXZCO0lBRUQsZUFBZSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sUUFVckU7Q0FDRiJ9
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX25vdGVfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX25vdGVfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELFVBQVUsV0FBVztJQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQ2YsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixzQkFBc0IsRUFBRSxFQUFFLENBQUM7Q0FDNUI7QUFFRDs7R0FFRztBQUNILHFCQUFhLGtCQUFrQjs7SUFvQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBbkM5Qzs7O09BR0c7SUFDSCxPQUFPLENBQUMsS0FBSyxDQUFxQjtJQUNsQzs7T0FFRztJQUNILE9BQU8sQ0FBQyxPQUFPLENBQXlDO0lBRXhEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsWUFBWSxDQUF1QztJQUUzRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBMEI7SUFFbkQ7O09BRUc7SUFDSCxPQUFPLENBQUMsOEJBQThCLENBQUs7SUFFM0MsT0FBTyxDQUFDLGlCQUFpQixDQUFTO0lBRWxDOzs7T0FHRztJQUNILE9BQU8sQ0FBQyw4QkFBOEIsQ0FBc0I7SUFFNUQsWUFBNkIsaUJBQWlCLEVBQUUsRUFBRSxFQUFJO0lBRXREOzs7T0FHRztJQUNVLGlDQUFpQyxDQUFDLDhCQUE4QixFQUFFLE1BQU0saUJBc0NwRjtJQUVNLDZCQUE2QixDQUFDLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxPQUFPLENBS3ZFO0lBRU0sTUFBTSxTQU1aO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFTaEQ7SUFFRDs7Ozs7O09BTUc7SUFDVSxXQUFXLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLCtCQXlCdkY7SUFFRDs7OztPQUlHO0lBQ1UsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxpQkFHOUU7SUFFRDs7Ozs7O1FBTUk7SUFDRyxRQUFRLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxjQU05RjtJQUVEOzs7OztRQUtJO0lBQ0csZUFBZSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsV0FHakU7SUFFRDs7O09BR0c7SUFDSSxhQUFhLENBQUMsZUFBZSxFQUFFLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBRS9EO0lBVUQsV0FBVyxJQUFJLFdBQVcsRUFBRSxDQUUzQjtJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLElBQUksRUFBRSxFQUFFLENBRTNCO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLElBQUksRUFBRSxFQUFFLENBTXZCO0lBRUQsaUJBQWlCLElBQUksRUFBRSxDQUV0QjtDQWFGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"execution_note_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_note_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,UAAU,WAAW;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,EAAE,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,kBAAkB;;IAiCjB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAhC9C;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAqB;IAClC;;OAEG;IACH,OAAO,CAAC,OAAO,CAAyC;IAExD;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAuC;IAE3D;;OAEG;IACH,OAAO,CAAC,aAAa,CAA0B;IAE/C,OAAO,CAAC,8BAA8B,CAAK;IAE3C,OAAO,CAAC,iBAAiB,CAAS;IAElC;;;OAGG;IACH,OAAO,CAAC,8BAA8B,CAAQ;IAE9C,YAA6B,iBAAiB,EAAE,EAAE,EAAI;IAEtD;;;OAGG;IACU,iCAAiC,CAAC,8BAA8B,EAAE,MAAM,iBAqCpF;IAEM,6BAA6B,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAKvE;IAEM,MAAM;;MAUZ;IAED;;;OAGG;IACI,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAShD;IAED;;;;;;OAMG;IACU,WAAW,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,+BAyBvF;IAED;;;;OAIG;IACU,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,iBAG9E;IAED;;;;;;QAMI;IACG,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,WAAW,EAAE,EAAE,cAM9F;IAED;;;;;QAKI;IACG,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,WAGjE;IAED;;;OAGG;IACI,aAAa,CAAC,eAAe,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAE/D;IAUD,WAAW,IAAI,WAAW,EAAE,CAE3B;IAED,gBAAgB,IAAI,EAAE,EAAE,CAEvB;IAED,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,QAUrE;CACF"}
1
+ {"version":3,"file":"execution_note_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_note_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,UAAU,WAAW;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,EAAE,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,kBAAkB;;IAoCjB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAnC9C;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAqB;IAClC;;OAEG;IACH,OAAO,CAAC,OAAO,CAAyC;IAExD;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAuC;IAE3D;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAA0B;IAEnD;;OAEG;IACH,OAAO,CAAC,8BAA8B,CAAK;IAE3C,OAAO,CAAC,iBAAiB,CAAS;IAElC;;;OAGG;IACH,OAAO,CAAC,8BAA8B,CAAsB;IAE5D,YAA6B,iBAAiB,EAAE,EAAE,EAAI;IAEtD;;;OAGG;IACU,iCAAiC,CAAC,8BAA8B,EAAE,MAAM,iBAsCpF;IAEM,6BAA6B,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAKvE;IAEM,MAAM,SAMZ;IAED;;;OAGG;IACI,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAShD;IAED;;;;;;OAMG;IACU,WAAW,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,+BAyBvF;IAED;;;;OAIG;IACU,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,iBAG9E;IAED;;;;;;QAMI;IACG,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,WAAW,EAAE,EAAE,cAM9F;IAED;;;;;QAKI;IACG,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,WAGjE;IAED;;;OAGG;IACI,aAAa,CAAC,eAAe,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAE/D;IAUD,WAAW,IAAI,WAAW,EAAE,CAE3B;IAED;;OAEG;IACH,oBAAoB,IAAI,EAAE,EAAE,CAE3B;IAED;;;OAGG;IACH,gBAAgB,IAAI,EAAE,EAAE,CAMvB;IAED,iBAAiB,IAAI,EAAE,CAEtB;CAaF"}
@@ -17,23 +17,24 @@ import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifie
17
17
  * Note that their value (bigint representation) is used because Frs cannot be looked up in Sets.
18
18
  */ nullifierMap;
19
19
  /**
20
- * All nullifiers emitted in this transaction.
21
- */ allNullifiers;
22
- minRevertibleSideEffectCounter;
20
+ * Nullifiers emitted by private calls in this transaction.
21
+ */ emittedNullifiers;
22
+ /**
23
+ * The counter that separates non-revertible side effects (which persist even if the tx reverts) from revertible ones.
24
+ */ minRevertibleSideEffectCounter;
23
25
  inRevertiblePhase;
24
26
  /**
25
- * We don't need to use the tx request hash for nonces if another non revertible nullifier is emitted.
26
- * In that case we disable injecting the tx request hash as a nullifier.
27
+ * Whether the protocol nullifier was used for nonce generation.
28
+ * We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
27
29
  */ usedProtocolNullifierForNonces;
28
30
  constructor(protocolNullifier){
29
31
  this.protocolNullifier = protocolNullifier;
30
32
  this.notes = [];
31
33
  this.noteMap = new Map();
32
34
  this.nullifierMap = new Map();
33
- this.allNullifiers = new Set();
35
+ this.emittedNullifiers = new Set();
34
36
  this.minRevertibleSideEffectCounter = 0;
35
37
  this.inRevertiblePhase = false;
36
- this.usedProtocolNullifierForNonces = true;
37
38
  }
38
39
  /**
39
40
  * Enters the revertible phase of the transaction.
@@ -44,16 +45,16 @@ import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifie
44
45
  }
45
46
  this.inRevertiblePhase = true;
46
47
  this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
47
- let nonceGenerator = this.protocolNullifier;
48
- const nullifiers = this.getAllNullifiers();
49
- if (nullifiers.length > 0) {
50
- nonceGenerator = new Fr(nullifiers[0]);
51
- this.usedProtocolNullifierForNonces = false;
52
- }
48
+ const nullifiers = this.getEmittedNullifiers();
49
+ // If there are no nullifiers emitted by private calls so far, we use the protocol nullifier as the nonce generator.
50
+ // Note: There could still be nullifiers emitted after the counter is set, but those nullifiers are revertible, so
51
+ // we don't want to use them as the nonce generator.
52
+ this.usedProtocolNullifierForNonces = nullifiers.length === 0;
53
+ const nonceGenerator = this.usedProtocolNullifierForNonces ? this.protocolNullifier : new Fr(nullifiers[0]);
53
54
  // The existing pending notes are all non-revertible.
54
55
  // They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
55
56
  // 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.
56
- // The nonces will be used to create the "complete" nullifier.
57
+ // The nonces will be used to create the "unique" note hashes.
57
58
  const updatedNotes = await Promise.all(this.notes.map(async ({ note, counter }, i)=>{
58
59
  const noteNonce = await computeNoteHashNonce(nonceGenerator, i);
59
60
  const uniqueNoteHash = await computeUniqueNoteHash(noteNonce, await siloNoteHash(note.contractAddress, note.noteHash));
@@ -78,15 +79,11 @@ import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifie
78
79
  return sideEffectCounter >= this.minRevertibleSideEffectCounter;
79
80
  }
80
81
  finish() {
81
- // If we never entered the revertible phase, we need to use the protocol nullifier to compute the nonces for the
82
- // notes if no nullifiers have been emitted.
82
+ // If we never entered the revertible phase, and there are no nullifiers emitted, we need to use the protocol
83
+ // nullifier as the nonce generator.
83
84
  if (!this.inRevertiblePhase) {
84
- this.usedProtocolNullifierForNonces = this.getAllNullifiers().length === 0;
85
+ this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
85
86
  }
86
- // If we entered the revertible phase, the nonce generator was decided based on wether or not a nullifier was emitted before entering.
87
- return {
88
- usedProtocolNullifierForNonces: this.usedProtocolNullifierForNonces
89
- };
90
87
  }
91
88
  /**
92
89
  * Add a new note to cache.
@@ -124,11 +121,11 @@ import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifie
124
121
  this.notes = this.notes.filter((n)=>n.counter !== note.counter);
125
122
  // 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
126
123
  if (this.inRevertiblePhase && note.counter < this.minRevertibleSideEffectCounter) {
127
- this.recordNullifier(contractAddress, siloedNullifier);
124
+ this.#recordNullifier(contractAddress, siloedNullifier);
128
125
  }
129
126
  } else {
130
127
  // If the note being nullified comes from a previous tx the nullifier will be emitted.
131
- this.recordNullifier(contractAddress, siloedNullifier);
128
+ this.#recordNullifier(contractAddress, siloedNullifier);
132
129
  }
133
130
  return nullifiedNoteHashCounter;
134
131
  }
@@ -138,7 +135,7 @@ import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifie
138
135
  * @param innerNullifier
139
136
  */ async nullifierCreated(contractAddress, innerNullifier) {
140
137
  const siloedNullifier = (await siloNullifier(contractAddress, innerNullifier)).toBigInt();
141
- this.recordNullifier(contractAddress, siloedNullifier);
138
+ this.#recordNullifier(contractAddress, siloedNullifier);
142
139
  }
143
140
  /**
144
141
  * Return notes created up to current point in execution.
@@ -174,18 +171,38 @@ import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifie
174
171
  getAllNotes() {
175
172
  return this.notes;
176
173
  }
177
- getAllNullifiers() {
174
+ /**
175
+ * @returns All nullifiers emitted by private calls in this transaction.
176
+ */ getEmittedNullifiers() {
178
177
  return [
179
- ...this.allNullifiers
178
+ ...this.emittedNullifiers
180
179
  ].map((n)=>new Fr(n));
181
180
  }
182
- recordNullifier(contractAddress, siloedNullifier) {
181
+ /**
182
+ * @returns All nullifiers emitted by private calls in this transaction. If the protocol nullifier was used as the
183
+ * nonce generator, it is injected as the first nullifier.
184
+ */ getAllNullifiers() {
185
+ if (this.usedProtocolNullifierForNonces === undefined) {
186
+ throw new Error('usedProtocolNullifierForNonces is not set yet. Call finish() to complete the transaction.');
187
+ }
188
+ const allNullifiers = this.getEmittedNullifiers();
189
+ return [
190
+ ...this.usedProtocolNullifierForNonces ? [
191
+ this.protocolNullifier
192
+ ] : [],
193
+ ...allNullifiers
194
+ ];
195
+ }
196
+ getNonceGenerator() {
197
+ return this.getAllNullifiers()[0];
198
+ }
199
+ #recordNullifier(contractAddress, siloedNullifier) {
183
200
  const nullifiers = this.getNullifiers(contractAddress);
184
201
  if (nullifiers.has(siloedNullifier)) {
185
202
  throw new Error(`Duplicate siloed nullifier ${siloedNullifier} emitted by contract ${contractAddress}`);
186
203
  }
187
204
  nullifiers.add(siloedNullifier);
188
205
  this.nullifierMap.set(contractAddress.toBigInt(), nullifiers);
189
- this.allNullifiers.add(siloedNullifier);
206
+ this.emittedNullifiers.add(siloedNullifier);
190
207
  }
191
208
  }
@@ -1,16 +1,12 @@
1
- import { DirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
2
- /**
3
- * A map that stores the tagging index for a given directional app tagging secret.
4
- * Note: The directional app tagging secret is unique for a (sender, recipient, contract) tuple while the direction
5
- * of sender -> recipient matters.
6
- */
1
+ import { AppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
2
+ /** A map that stores the tagging index range for a given app tagging secret. */
7
3
  export declare class ExecutionTaggingIndexCache {
8
4
  private taggingIndexMap;
9
- getLastUsedIndex(secret: DirectionalAppTaggingSecret): number | undefined;
10
- setLastUsedIndex(secret: DirectionalAppTaggingSecret, index: number): void;
5
+ getLastUsedIndex(secret: AppTaggingSecret): number | undefined;
6
+ setLastUsedIndex(secret: AppTaggingSecret, index: number): void;
11
7
  /**
12
- * Returns the pre-tags that were used in this execution (and that need to be stored in the db).
8
+ * Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
13
9
  */
14
- getUsedPreTags(): PreTag[];
10
+ getUsedTaggingIndexRanges(): TaggingIndexRange[];
15
11
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDJCQUEyQixFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUU7Ozs7R0FJRztBQUNILHFCQUFhLDBCQUEwQjtJQUNyQyxPQUFPLENBQUMsZUFBZSxDQUFrQztJQUVsRCxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsMkJBQTJCLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FFL0U7SUFFTSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFNekU7SUFFRDs7T0FFRztJQUNJLGNBQWMsSUFBSSxNQUFNLEVBQUUsQ0FLaEM7Q0FDRiJ9
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEtBQUssaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RSxnRkFBZ0Y7QUFDaEYscUJBQWEsMEJBQTBCO0lBQ3JDLE9BQU8sQ0FBQyxlQUFlLENBQXlFO0lBRXpGLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUVwRTtJQUVNLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxRQVU5RDtJQUVEOztPQUVHO0lBQ0kseUJBQXlCLElBQUksaUJBQWlCLEVBQUUsQ0FNdEQ7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"execution_tagging_index_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_tagging_index_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE9E;;;;GAIG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,eAAe,CAAkC;IAElD,gBAAgB,CAAC,MAAM,EAAE,2BAA2B,GAAG,MAAM,GAAG,SAAS,CAE/E;IAEM,gBAAgB,CAAC,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,QAMzE;IAED;;OAEG;IACI,cAAc,IAAI,MAAM,EAAE,CAKhC;CACF"}
1
+ {"version":3,"file":"execution_tagging_index_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_tagging_index_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,gFAAgF;AAChF,qBAAa,0BAA0B;IACrC,OAAO,CAAC,eAAe,CAAyE;IAEzF,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAEpE;IAEM,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,QAU9D;IAED;;OAEG;IACI,yBAAyB,IAAI,iBAAiB,EAAE,CAMtD;CACF"}
@@ -1,26 +1,30 @@
1
- import { DirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
2
- /**
3
- * A map that stores the tagging index for a given directional app tagging secret.
4
- * Note: The directional app tagging secret is unique for a (sender, recipient, contract) tuple while the direction
5
- * of sender -> recipient matters.
6
- */ export class ExecutionTaggingIndexCache {
1
+ import { AppTaggingSecret } from '@aztec/stdlib/logs';
2
+ /** A map that stores the tagging index range for a given app tagging secret. */ export class ExecutionTaggingIndexCache {
7
3
  taggingIndexMap = new Map();
8
4
  getLastUsedIndex(secret) {
9
- return this.taggingIndexMap.get(secret.toString());
5
+ return this.taggingIndexMap.get(secret.toString())?.highestIndex;
10
6
  }
11
7
  setLastUsedIndex(secret, index) {
12
8
  const currentValue = this.taggingIndexMap.get(secret.toString());
13
- if (currentValue !== undefined && currentValue !== index - 1) {
14
- throw new Error(`Invalid tagging index update. Current value: ${currentValue}, new value: ${index}`);
9
+ if (currentValue !== undefined && currentValue.highestIndex !== index - 1) {
10
+ throw new Error(`Invalid tagging index update. Current value: ${currentValue.highestIndex}, new value: ${index}`);
11
+ }
12
+ if (currentValue !== undefined) {
13
+ currentValue.highestIndex = index;
14
+ } else {
15
+ this.taggingIndexMap.set(secret.toString(), {
16
+ lowestIndex: index,
17
+ highestIndex: index
18
+ });
15
19
  }
16
- this.taggingIndexMap.set(secret.toString(), index);
17
20
  }
18
21
  /**
19
- * Returns the pre-tags that were used in this execution (and that need to be stored in the db).
20
- */ getUsedPreTags() {
21
- return Array.from(this.taggingIndexMap.entries()).map(([secret, index])=>({
22
- secret: DirectionalAppTaggingSecret.fromString(secret),
23
- index
22
+ * Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
23
+ */ getUsedTaggingIndexRanges() {
24
+ return Array.from(this.taggingIndexMap.entries()).map(([secret, { lowestIndex, highestIndex }])=>({
25
+ extendedSecret: AppTaggingSecret.fromString(secret),
26
+ lowestIndex,
27
+ highestIndex
24
28
  }));
25
29
  }
26
30
  }
@@ -4,11 +4,14 @@ export { HashedValuesCache } from './hashed_values_cache.js';
4
4
  export { pickNotes } from './pick_notes.js';
5
5
  export type { NoteData, IMiscOracle, IUtilityExecutionOracle, IPrivateExecutionOracle } from './oracle/interfaces.js';
6
6
  export { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
7
+ export { MessageContextService } from '../messages/message_context_service.js';
7
8
  export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
8
9
  export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
9
10
  export { Oracle } from './oracle/oracle.js';
10
11
  export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
11
12
  export { generateSimulatedProvingResult } from './contract_function_simulator.js';
12
- export { packAsRetrievedNote } from './oracle/note_packing_utils.js';
13
+ export { packAsHintedNote } from './oracle/note_packing_utils.js';
14
+ export { BoundedVec } from './noir-structs/bounded_vec.js';
15
+ export { Option } from './noir-structs/option.js';
13
16
  export { UtilityContext } from './noir-structs/utility_context.js';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLFlBQVksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQyJ9
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLFlBQVksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAC1G,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAC1G,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC"}
@@ -3,10 +3,13 @@ export { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
3
3
  export { HashedValuesCache } from './hashed_values_cache.js';
4
4
  export { pickNotes } from './pick_notes.js';
5
5
  export { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
6
+ export { MessageContextService } from '../messages/message_context_service.js';
6
7
  export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
7
8
  export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
8
9
  export { Oracle } from './oracle/oracle.js';
9
10
  export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
10
11
  export { generateSimulatedProvingResult } from './contract_function_simulator.js';
11
- export { packAsRetrievedNote } from './oracle/note_packing_utils.js';
12
+ export { packAsHintedNote } from './oracle/note_packing_utils.js';
13
+ export { BoundedVec } from './noir-structs/bounded_vec.js';
14
+ export { Option } from './noir-structs/option.js';
12
15
  export { UtilityContext } from './noir-structs/utility_context.js';
@@ -0,0 +1,48 @@
1
+ /**
2
+ * TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`.
3
+ *
4
+ * Carries the actual `data` plus wire-format metadata (`maxLength`, `elementSize`) so the ACVM
5
+ * serializer can pad the storage slot to exactly `maxLength * elementSize` fields.
6
+ */
7
+ export declare class BoundedVec<T> {
8
+ readonly data: T[];
9
+ readonly maxLength: number;
10
+ readonly elementSize: number;
11
+ private constructor();
12
+ /**
13
+ * Construct a BoundedVec with data.
14
+ *
15
+ * @param data - Actual elements. Length must be `<= maxLength`.
16
+ * @param maxLength - Maximum capacity declared at the Noir call site.
17
+ * The storage slot is padded to this many elements.
18
+ * @param elementSize - Number of Fr fields each element contributes when serialized.
19
+ * `1` for scalar elements (u8, Field) — this is the default.
20
+ * `> 1` for compound elements (e.g. a packed note that spans multiple fields).
21
+ *
22
+ * @example A bounded vec of bytes (elementSize defaults to 1):
23
+ * ```ts
24
+ * BoundedVec.from({ data: plaintext, maxLength: ciphertext.maxLength })
25
+ * ```
26
+ *
27
+ * @example A bounded vec of packed notes, each spanning `packedHintedNoteLength` fields:
28
+ * ```ts
29
+ * BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength })
30
+ * ```
31
+ */
32
+ static from<T>({ data, maxLength, elementSize }: {
33
+ data: T[];
34
+ maxLength: number;
35
+ elementSize?: number;
36
+ }): BoundedVec<T>;
37
+ /**
38
+ * Construct an empty BoundedVec, typically used as a shape template for `Option.empty(...)`.
39
+ *
40
+ * @param maxLength - Maximum capacity declared at the Noir call site.
41
+ * @param elementSize - Number of Fr fields each element contributes when serialized (default 1).
42
+ */
43
+ static empty<T>({ maxLength, elementSize }: {
44
+ maxLength: number;
45
+ elementSize?: number;
46
+ }): BoundedVec<T>;
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRlZF92ZWMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3Ivbm9pci1zdHJ1Y3RzL2JvdW5kZWRfdmVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gscUJBQWEsVUFBVSxDQUFDLENBQUM7YUFFTCxJQUFJLEVBQUUsQ0FBQyxFQUFFO2FBQ1QsU0FBUyxFQUFFLE1BQU07YUFDakIsV0FBVyxFQUFFLE1BQU07SUFIckMsT0FBTyxlQUlIO0lBRUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQkc7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUNiLElBQUksRUFDSixTQUFTLEVBQ1QsV0FBZSxFQUNoQixFQUFFO1FBQ0QsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ1YsU0FBUyxFQUFFLE1BQU0sQ0FBQztRQUNsQixXQUFXLENBQUMsRUFBRSxNQUFNLENBQUM7S0FDdEIsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBRWhCO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFlLEVBQUUsRUFBRTtRQUFFLFNBQVMsRUFBRSxNQUFNLENBQUM7UUFBQyxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FFMUc7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded_vec.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/noir-structs/bounded_vec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,UAAU,CAAC,CAAC;aAEL,IAAI,EAAE,CAAC,EAAE;aACT,SAAS,EAAE,MAAM;aACjB,WAAW,EAAE,MAAM;IAHrC,OAAO,eAIH;IAEJ;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EACb,IAAI,EACJ,SAAS,EACT,WAAe,EAChB,EAAE;QACD,IAAI,EAAE,CAAC,EAAE,CAAC;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,UAAU,CAAC,CAAC,CAAC,CAEhB;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,WAAe,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAE1G;CACF"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`.
3
+ *
4
+ * Carries the actual `data` plus wire-format metadata (`maxLength`, `elementSize`) so the ACVM
5
+ * serializer can pad the storage slot to exactly `maxLength * elementSize` fields.
6
+ */ export class BoundedVec {
7
+ data;
8
+ maxLength;
9
+ elementSize;
10
+ constructor(data, maxLength, elementSize){
11
+ this.data = data;
12
+ this.maxLength = maxLength;
13
+ this.elementSize = elementSize;
14
+ }
15
+ /**
16
+ * Construct a BoundedVec with data.
17
+ *
18
+ * @param data - Actual elements. Length must be `<= maxLength`.
19
+ * @param maxLength - Maximum capacity declared at the Noir call site.
20
+ * The storage slot is padded to this many elements.
21
+ * @param elementSize - Number of Fr fields each element contributes when serialized.
22
+ * `1` for scalar elements (u8, Field) — this is the default.
23
+ * `> 1` for compound elements (e.g. a packed note that spans multiple fields).
24
+ *
25
+ * @example A bounded vec of bytes (elementSize defaults to 1):
26
+ * ```ts
27
+ * BoundedVec.from({ data: plaintext, maxLength: ciphertext.maxLength })
28
+ * ```
29
+ *
30
+ * @example A bounded vec of packed notes, each spanning `packedHintedNoteLength` fields:
31
+ * ```ts
32
+ * BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength })
33
+ * ```
34
+ */ static from({ data, maxLength, elementSize = 1 }) {
35
+ return new BoundedVec(data, maxLength, elementSize);
36
+ }
37
+ /**
38
+ * Construct an empty BoundedVec, typically used as a shape template for `Option.empty(...)`.
39
+ *
40
+ * @param maxLength - Maximum capacity declared at the Noir call site.
41
+ * @param elementSize - Number of Fr fields each element contributes when serialized (default 1).
42
+ */ static empty({ maxLength, elementSize = 1 }) {
43
+ return new BoundedVec([], maxLength, elementSize);
44
+ }
45
+ }
@@ -1,11 +1,10 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
- import { FieldReader } from '@aztec/foundation/serialize';
3
2
  import { EventSelector } from '@aztec/stdlib/abi';
4
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
4
  import { TxHash } from '@aztec/stdlib/tx';
6
5
  /**
7
- * Intermediate struct used to perform batch event validation by PXE. The `utilityValidateEnqueuedNotesAndEvents` oracle
8
- * expects for values of this type to be stored in a `CapsuleArray`.
6
+ * Intermediate struct used to perform batch event validation by PXE. The `utilityValidateAndStoreEnqueuedNotesAndEvents` oracle
7
+ * expects for values of this type to be stored in a `EphemeralArray`.
9
8
  */
10
9
  export declare class EventValidationRequest {
11
10
  contractAddress: AztecAddress;
@@ -14,8 +13,7 @@ export declare class EventValidationRequest {
14
13
  serializedEvent: Fr[];
15
14
  eventCommitment: Fr;
16
15
  txHash: TxHash;
17
- recipient: AztecAddress;
18
- constructor(contractAddress: AztecAddress, eventTypeId: EventSelector, randomness: Fr, serializedEvent: Fr[], eventCommitment: Fr, txHash: TxHash, recipient: AztecAddress);
19
- static fromFields(fields: Fr[] | FieldReader): EventValidationRequest;
16
+ constructor(contractAddress: AztecAddress, eventTypeId: EventSelector, randomness: Fr, serializedEvent: Fr[], eventCommitment: Fr, txHash: TxHash);
17
+ static fromFields(fields: Fr[]): EventValidationRequest;
20
18
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfdmFsaWRhdGlvbl9yZXF1ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL25vaXItc3RydWN0cy9ldmVudF92YWxpZGF0aW9uX3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUsxQzs7O0dBR0c7QUFDSCxxQkFBYSxzQkFBc0I7SUFFeEIsZUFBZSxFQUFFLFlBQVk7SUFDN0IsV0FBVyxFQUFFLGFBQWE7SUFDMUIsVUFBVSxFQUFFLEVBQUU7SUFDZCxlQUFlLEVBQUUsRUFBRSxFQUFFO0lBQ3JCLGVBQWUsRUFBRSxFQUFFO0lBQ25CLE1BQU0sRUFBRSxNQUFNO0lBQ2QsU0FBUyxFQUFFLFlBQVk7SUFQaEMsWUFDUyxlQUFlLEVBQUUsWUFBWSxFQUM3QixXQUFXLEVBQUUsYUFBYSxFQUMxQixVQUFVLEVBQUUsRUFBRSxFQUNkLGVBQWUsRUFBRSxFQUFFLEVBQUUsRUFDckIsZUFBZSxFQUFFLEVBQUUsRUFDbkIsTUFBTSxFQUFFLE1BQU0sRUFDZCxTQUFTLEVBQUUsWUFBWSxFQUM1QjtJQUVKLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLFdBQVcsR0FBRyxzQkFBc0IsQ0F5QnBFO0NBQ0YifQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfdmFsaWRhdGlvbl9yZXF1ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL25vaXItc3RydWN0cy9ldmVudF92YWxpZGF0aW9uX3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFDOzs7R0FHRztBQUNILHFCQUFhLHNCQUFzQjtJQUV4QixlQUFlLEVBQUUsWUFBWTtJQUM3QixXQUFXLEVBQUUsYUFBYTtJQUMxQixVQUFVLEVBQUUsRUFBRTtJQUNkLGVBQWUsRUFBRSxFQUFFLEVBQUU7SUFDckIsZUFBZSxFQUFFLEVBQUU7SUFDbkIsTUFBTSxFQUFFLE1BQU07SUFOdkIsWUFDUyxlQUFlLEVBQUUsWUFBWSxFQUM3QixXQUFXLEVBQUUsYUFBYSxFQUMxQixVQUFVLEVBQUUsRUFBRSxFQUNkLGVBQWUsRUFBRSxFQUFFLEVBQUUsRUFDckIsZUFBZSxFQUFFLEVBQUUsRUFDbkIsTUFBTSxFQUFFLE1BQU0sRUFDbkI7SUFFSixNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxzQkFBc0IsQ0E4QnREO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"event_validation_request.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/noir-structs/event_validation_request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK1C;;;GAGG;AACH,qBAAa,sBAAsB;IAExB,eAAe,EAAE,YAAY;IAC7B,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,EAAE;IACd,eAAe,EAAE,EAAE,EAAE;IACrB,eAAe,EAAE,EAAE;IACnB,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,YAAY;IAPhC,YACS,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,aAAa,EAC1B,UAAU,EAAE,EAAE,EACd,eAAe,EAAE,EAAE,EAAE,EACrB,eAAe,EAAE,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,YAAY,EAC5B;IAEJ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,sBAAsB,CAyBpE;CACF"}
1
+ {"version":3,"file":"event_validation_request.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/noir-structs/event_validation_request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;;GAGG;AACH,qBAAa,sBAAsB;IAExB,eAAe,EAAE,YAAY;IAC7B,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,EAAE;IACd,eAAe,EAAE,EAAE,EAAE;IACrB,eAAe,EAAE,EAAE;IACnB,MAAM,EAAE,MAAM;IANvB,YACS,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,aAAa,EAC1B,UAAU,EAAE,EAAE,EACd,eAAe,EAAE,EAAE,EAAE,EACrB,eAAe,EAAE,EAAE,EACnB,MAAM,EAAE,MAAM,EACnB;IAEJ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,sBAAsB,CA8BtD;CACF"}
@@ -2,11 +2,9 @@ import { FieldReader } from '@aztec/foundation/serialize';
2
2
  import { EventSelector } from '@aztec/stdlib/abi';
3
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import { TxHash } from '@aztec/stdlib/tx';
5
- // TODO(#14617): should we compute this from constants? This value is aztec-nr specific.
6
- const MAX_EVENT_SERIALIZED_LEN = 12;
7
5
  /**
8
- * Intermediate struct used to perform batch event validation by PXE. The `utilityValidateEnqueuedNotesAndEvents` oracle
9
- * expects for values of this type to be stored in a `CapsuleArray`.
6
+ * Intermediate struct used to perform batch event validation by PXE. The `utilityValidateAndStoreEnqueuedNotesAndEvents` oracle
7
+ * expects for values of this type to be stored in a `EphemeralArray`.
10
8
  */ export class EventValidationRequest {
11
9
  contractAddress;
12
10
  eventTypeId;
@@ -14,27 +12,28 @@ const MAX_EVENT_SERIALIZED_LEN = 12;
14
12
  serializedEvent;
15
13
  eventCommitment;
16
14
  txHash;
17
- recipient;
18
- constructor(contractAddress, eventTypeId, randomness, serializedEvent, eventCommitment, txHash, recipient){
15
+ constructor(contractAddress, eventTypeId, randomness, serializedEvent, eventCommitment, txHash){
19
16
  this.contractAddress = contractAddress;
20
17
  this.eventTypeId = eventTypeId;
21
18
  this.randomness = randomness;
22
19
  this.serializedEvent = serializedEvent;
23
20
  this.eventCommitment = eventCommitment;
24
21
  this.txHash = txHash;
25
- this.recipient = recipient;
26
22
  }
27
23
  static fromFields(fields) {
28
24
  const reader = FieldReader.asReader(fields);
29
25
  const contractAddress = AztecAddress.fromField(reader.readField());
30
26
  const eventTypeId = EventSelector.fromField(reader.readField());
31
27
  const randomness = reader.readField();
32
- const eventStorage = reader.readFieldArray(MAX_EVENT_SERIALIZED_LEN);
28
+ const maxEventSerializedLen = reader.readField().toNumber();
29
+ const eventStorage = reader.readFieldArray(maxEventSerializedLen);
33
30
  const eventLen = reader.readField().toNumber();
34
31
  const serializedEvent = eventStorage.slice(0, eventLen);
35
32
  const eventCommitment = reader.readField();
36
33
  const txHash = TxHash.fromField(reader.readField());
37
- const recipient = AztecAddress.fromField(reader.readField());
38
- return new EventValidationRequest(contractAddress, eventTypeId, randomness, serializedEvent, eventCommitment, txHash, recipient);
34
+ if (reader.remainingFields() !== 0) {
35
+ throw new Error(`Error converting array of fields to EventValidationRequest: expected ${reader.cursor} fields but received ${fields.length} (maxEventSerializedLen=${maxEventSerializedLen}).`);
36
+ }
37
+ return new EventValidationRequest(contractAddress, eventTypeId, randomness, serializedEvent, eventCommitment, txHash);
39
38
  }
40
39
  }