@aztec/pxe 5.0.0-rc.1 → 5.0.0

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 (297) hide show
  1. package/dest/block_synchronizer/block_stream_source.d.ts +5 -5
  2. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -1
  3. package/dest/block_synchronizer/block_stream_source.js +4 -29
  4. package/dest/block_synchronizer/block_synchronizer.d.ts +16 -12
  5. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  6. package/dest/block_synchronizer/block_synchronizer.js +49 -15
  7. package/dest/config/index.d.ts +2 -1
  8. package/dest/config/index.d.ts.map +1 -1
  9. package/dest/config/index.js +1 -0
  10. package/dest/contract/contract_class_service.d.ts +31 -0
  11. package/dest/contract/contract_class_service.d.ts.map +1 -0
  12. package/dest/contract/contract_class_service.js +68 -0
  13. package/dest/{contract_sync → contract}/contract_sync_service.d.ts +7 -6
  14. package/dest/contract/contract_sync_service.d.ts.map +1 -0
  15. package/dest/{contract_sync → contract}/contract_sync_service.js +10 -30
  16. package/dest/contract/helpers.d.ts +7 -0
  17. package/dest/contract/helpers.d.ts.map +1 -0
  18. package/dest/contract/helpers.js +20 -0
  19. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  20. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  21. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  22. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts +39 -0
  23. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts.map +1 -0
  24. package/dest/contract_function_simulator/aztec_node_read_cache.js +60 -0
  25. package/dest/contract_function_simulator/contract_function_simulator.d.ts +19 -18
  26. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  27. package/dest/contract_function_simulator/contract_function_simulator.js +52 -31
  28. package/dest/contract_function_simulator/execution_note_cache.d.ts +3 -9
  29. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  30. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  31. package/dest/contract_function_simulator/index.d.ts +17 -9
  32. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/index.js +4 -7
  34. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +8 -27
  35. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -1
  36. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +8 -23
  37. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  38. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  39. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  40. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  41. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  42. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  43. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
  44. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  45. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  46. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  47. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  48. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  49. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  50. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +11 -12
  51. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  52. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +6 -49
  53. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +10 -8
  54. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  55. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -60
  56. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +2 -2
  57. package/dest/contract_function_simulator/noir-structs/option.d.ts +9 -11
  58. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -1
  59. package/dest/contract_function_simulator/noir-structs/option.js +18 -13
  60. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  61. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  62. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  63. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  64. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  65. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  66. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +6 -9
  67. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -1
  68. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -14
  69. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  70. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  71. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  72. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +21 -0
  73. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  74. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +50 -0
  75. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +14 -0
  76. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  77. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  78. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  79. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  80. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  81. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +7 -2
  82. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -1
  83. package/dest/contract_function_simulator/oracle/acir_callback.js +55 -11
  84. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  85. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  86. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  87. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  88. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  89. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  90. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +86 -8
  91. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -1
  92. package/dest/contract_function_simulator/oracle/oracle_registry.js +168 -18
  93. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +123 -40
  94. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -1
  95. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +947 -264
  96. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +21 -8
  97. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  98. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +126 -16
  99. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +63 -33
  100. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  101. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +175 -90
  102. package/dest/debug/pxe_debug_utils.d.ts +2 -2
  103. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  104. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  105. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  106. package/dest/entrypoints/client/bundle/utils.js +3 -2
  107. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  108. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  109. package/dest/entrypoints/client/lazy/utils.js +3 -2
  110. package/dest/entrypoints/pxe_creation_options.d.ts +8 -2
  111. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  112. package/dest/entrypoints/server/index.d.ts +5 -3
  113. package/dest/entrypoints/server/index.d.ts.map +1 -1
  114. package/dest/entrypoints/server/index.js +3 -2
  115. package/dest/entrypoints/server/utils.d.ts +1 -1
  116. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  117. package/dest/entrypoints/server/utils.js +3 -1
  118. package/dest/error_enriching.d.ts +5 -3
  119. package/dest/error_enriching.d.ts.map +1 -1
  120. package/dest/error_enriching.js +13 -11
  121. package/dest/hooks/execution_hooks.d.ts +27 -7
  122. package/dest/hooks/execution_hooks.d.ts.map +1 -1
  123. package/dest/hooks/execution_hooks.js +3 -3
  124. package/dest/hooks/index.d.ts +4 -3
  125. package/dest/hooks/index.d.ts.map +1 -1
  126. package/dest/hooks/index.js +1 -0
  127. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  128. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  129. package/dest/hooks/resolve_custom_request.js +3 -0
  130. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  131. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  132. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  133. package/dest/logs/log_service.d.ts +7 -6
  134. package/dest/logs/log_service.d.ts.map +1 -1
  135. package/dest/logs/log_service.js +79 -28
  136. package/dest/messages/tx_resolver_service.d.ts +17 -0
  137. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  138. package/dest/messages/{message_context_service.js → tx_resolver_service.js} +8 -8
  139. package/dest/oracle_version.d.ts +3 -3
  140. package/dest/oracle_version.js +3 -3
  141. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
  142. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  143. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +6 -2
  144. package/dest/private_kernel/hints/test_utils.js +1 -1
  145. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  146. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  147. package/dest/private_kernel/private_kernel_execution_prover.js +17 -36
  148. package/dest/private_kernel/private_kernel_oracle.d.ts +4 -2
  149. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  150. package/dest/private_kernel/private_kernel_oracle.js +17 -5
  151. package/dest/pxe.d.ts +109 -47
  152. package/dest/pxe.d.ts.map +1 -1
  153. package/dest/pxe.js +222 -139
  154. package/dest/storage/allowed_scopes.d.ts +6 -0
  155. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  156. package/dest/storage/allowed_scopes.js +7 -0
  157. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +1 -1
  158. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -1
  159. package/dest/storage/backwards_compatibility_tests/schema_tests.js +114 -37
  160. package/dest/storage/capsule_store/capsule_service.d.ts +1 -1
  161. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -1
  162. package/dest/storage/capsule_store/capsule_service.js +6 -9
  163. package/dest/storage/contract_store/contract_store.d.ts +27 -24
  164. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  165. package/dest/storage/contract_store/contract_store.js +64 -75
  166. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  167. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  168. package/dest/storage/fact_store/fact_service.js +45 -0
  169. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  170. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  171. package/dest/storage/fact_store/fact_store.js +408 -0
  172. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  173. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  174. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  175. package/dest/storage/fact_store/index.d.ts +6 -0
  176. package/dest/storage/fact_store/index.d.ts.map +1 -0
  177. package/dest/storage/fact_store/index.js +4 -0
  178. package/dest/storage/fact_store/origin_state.d.ts +57 -0
  179. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  180. package/dest/storage/fact_store/origin_state.js +53 -0
  181. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  182. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  183. package/dest/storage/fact_store/stored_fact.js +64 -0
  184. package/dest/storage/index.d.ts +2 -1
  185. package/dest/storage/index.d.ts.map +1 -1
  186. package/dest/storage/index.js +1 -0
  187. package/dest/storage/metadata.d.ts +2 -2
  188. package/dest/storage/metadata.d.ts.map +1 -1
  189. package/dest/storage/metadata.js +1 -1
  190. package/dest/storage/open_pxe_stores.d.ts +5 -3
  191. package/dest/storage/open_pxe_stores.d.ts.map +1 -1
  192. package/dest/storage/open_pxe_stores.js +5 -3
  193. package/dest/storage/tagging_store/index.d.ts +2 -2
  194. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  195. package/dest/storage/tagging_store/index.js +1 -1
  196. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  197. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  198. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  199. package/dest/tagging/constants.d.ts +2 -2
  200. package/dest/tagging/constants.d.ts.map +1 -1
  201. package/dest/tagging/constants.js +18 -9
  202. package/package.json +17 -17
  203. package/src/block_synchronizer/block_stream_source.ts +6 -45
  204. package/src/block_synchronizer/block_synchronizer.ts +65 -24
  205. package/src/config/index.ts +1 -0
  206. package/src/contract/contract_class_service.ts +83 -0
  207. package/src/{contract_sync → contract}/contract_sync_service.ts +18 -37
  208. package/src/contract/helpers.ts +35 -0
  209. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  210. package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
  211. package/src/contract_function_simulator/contract_function_simulator.ts +86 -43
  212. package/src/contract_function_simulator/execution_note_cache.ts +7 -28
  213. package/src/contract_function_simulator/index.ts +24 -9
  214. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +12 -24
  215. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  216. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  217. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
  218. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  219. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  220. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +20 -46
  221. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +13 -60
  222. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
  223. package/src/contract_function_simulator/noir-structs/option.ts +17 -11
  224. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  225. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  226. package/src/contract_function_simulator/noir-structs/provided_secret.ts +4 -15
  227. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  228. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +53 -0
  229. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +15 -0
  230. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  231. package/src/contract_function_simulator/oracle/acir_callback.ts +58 -12
  232. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  233. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  234. package/src/contract_function_simulator/oracle/oracle_registry.ts +119 -86
  235. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +659 -248
  236. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +155 -24
  237. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +300 -115
  238. package/src/debug/pxe_debug_utils.ts +1 -1
  239. package/src/entrypoints/client/bundle/utils.ts +3 -2
  240. package/src/entrypoints/client/lazy/utils.ts +3 -2
  241. package/src/entrypoints/pxe_creation_options.ts +7 -1
  242. package/src/entrypoints/server/index.ts +5 -2
  243. package/src/entrypoints/server/utils.ts +3 -1
  244. package/src/error_enriching.ts +27 -11
  245. package/src/hooks/execution_hooks.ts +28 -8
  246. package/src/hooks/index.ts +8 -2
  247. package/src/hooks/resolve_custom_request.ts +24 -0
  248. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  249. package/src/logs/log_service.ts +91 -37
  250. package/src/messages/{message_context_service.ts → tx_resolver_service.ts} +16 -9
  251. package/src/oracle_version.ts +3 -3
  252. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +11 -1
  253. package/src/private_kernel/hints/test_utils.ts +1 -1
  254. package/src/private_kernel/private_kernel_execution_prover.ts +22 -52
  255. package/src/private_kernel/private_kernel_oracle.ts +23 -4
  256. package/src/pxe.ts +320 -158
  257. package/src/storage/allowed_scopes.ts +14 -0
  258. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +6 -6
  259. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +1 -1
  260. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  261. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +12 -12
  262. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +1 -1
  263. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +11 -3
  264. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +12 -4
  265. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  266. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +21 -5
  267. package/src/storage/backwards_compatibility_tests/schema_tests.ts +125 -36
  268. package/src/storage/capsule_store/capsule_service.ts +8 -13
  269. package/src/storage/contract_store/contract_store.ts +86 -93
  270. package/src/storage/fact_store/fact_service.ts +69 -0
  271. package/src/storage/fact_store/fact_store.ts +487 -0
  272. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  273. package/src/storage/fact_store/index.ts +14 -0
  274. package/src/storage/fact_store/origin_state.ts +75 -0
  275. package/src/storage/fact_store/stored_fact.ts +80 -0
  276. package/src/storage/index.ts +1 -0
  277. package/src/storage/metadata.ts +1 -1
  278. package/src/storage/open_pxe_stores.ts +6 -3
  279. package/src/storage/tagging_store/index.ts +1 -1
  280. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  281. package/src/tagging/constants.ts +19 -9
  282. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  283. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  284. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -51
  285. package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
  286. package/dest/contract_sync/helpers.d.ts +0 -27
  287. package/dest/contract_sync/helpers.d.ts.map +0 -1
  288. package/dest/contract_sync/helpers.js +0 -53
  289. package/dest/messages/message_context_service.d.ts +0 -17
  290. package/dest/messages/message_context_service.d.ts.map +0 -1
  291. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  292. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  293. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  294. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -60
  295. package/src/contract_sync/helpers.ts +0 -86
  296. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +0 -16
  297. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
@@ -19,6 +19,7 @@ import {
19
19
  MAX_PRIVATE_LOGS_PER_TX,
20
20
  MAX_TX_LIFETIME,
21
21
  PRIVATE_TX_L2_GAS_OVERHEAD,
22
+ PUBLIC_DATA_WRITE_LENGTH,
22
23
  PUBLIC_TX_L2_GAS_OVERHEAD,
23
24
  TX_DA_GAS_OVERHEAD,
24
25
  } from '@aztec/constants';
@@ -80,6 +81,7 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
80
81
  import {
81
82
  BlockHeader,
82
83
  CallContext,
84
+ type ContractOverrides,
83
85
  HashedValues,
84
86
  type OffchainEffect,
85
87
  PrivateExecutionResult,
@@ -90,18 +92,22 @@ import {
90
92
  getFinalMinRevertibleSideEffectCounter,
91
93
  } from '@aztec/stdlib/tx';
92
94
 
93
- import type { ContractSyncService } from '../contract_sync/contract_sync_service.js';
95
+ import type { ContractClassService } from '../contract/contract_class_service.js';
96
+ import type { ContractSyncService } from '../contract/contract_sync_service.js';
94
97
  import type { ExecutionHooks } from '../hooks/index.js';
95
- import type { MessageContextService } from '../messages/message_context_service.js';
98
+ import type { TxResolverService } from '../messages/tx_resolver_service.js';
96
99
  import type { AddressStore } from '../storage/address_store/address_store.js';
97
100
  import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
98
101
  import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
99
102
  import type { ContractStore } from '../storage/contract_store/contract_store.js';
103
+ import { FactService } from '../storage/fact_store/index.js';
104
+ import type { FactStore } from '../storage/fact_store/index.js';
100
105
  import type { NoteStore } from '../storage/note_store/note_store.js';
101
106
  import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
102
107
  import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
103
- import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
104
108
  import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
109
+ import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
110
+ import { AnchoredContractData } from './anchored_contract_data.js';
105
111
  import type { BenchmarkedNode } from './benchmarked_node.js';
106
112
  import { ExecutionNoteCache } from './execution_note_cache.js';
107
113
  import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
@@ -114,10 +120,6 @@ import { TransientArrayService } from './transient_array_service.js';
114
120
 
115
121
  /** Options for ContractFunctionSimulator.run. */
116
122
  export type ContractSimulatorRunOpts = {
117
- /** The address of the contract (should match request.origin). */
118
- contractAddress: AztecAddress;
119
- /** The function selector of the entry point. */
120
- selector: FunctionSelector;
121
123
  /** The address calling the function. Can be replaced to simulate a call from another contract or account. */
122
124
  msgSender?: AztecAddress;
123
125
  /** The block header to use as base state for this run. */
@@ -133,6 +135,9 @@ export type ContractSimulatorRunOpts = {
133
135
  /** Args for ContractFunctionSimulator constructor. */
134
136
  export type ContractFunctionSimulatorArgs = {
135
137
  contractStore: ContractStore;
138
+ contractClassService: ContractClassService;
139
+ /** Per-simulation contract overrides. */
140
+ overrides?: ContractOverrides;
136
141
  noteStore: NoteStore;
137
142
  keyStore: KeyStore;
138
143
  addressStore: AddressStore;
@@ -140,12 +145,13 @@ export type ContractFunctionSimulatorArgs = {
140
145
  l2TipsStore: L2TipsProvider;
141
146
  senderTaggingStore: SenderTaggingStore;
142
147
  recipientTaggingStore: RecipientTaggingStore;
143
- senderAddressBookStore: SenderAddressBookStore;
148
+ taggingSecretSourcesStore: TaggingSecretSourcesStore;
144
149
  capsuleStore: CapsuleStore;
150
+ factStore: FactStore;
145
151
  privateEventStore: PrivateEventStore;
146
152
  simulator: CircuitSimulator;
147
153
  contractSyncService: ContractSyncService;
148
- messageContextService: MessageContextService;
154
+ txResolver: TxResolverService;
149
155
  hooks?: ExecutionHooks;
150
156
  };
151
157
 
@@ -155,6 +161,8 @@ export type ContractFunctionSimulatorArgs = {
155
161
  export class ContractFunctionSimulator {
156
162
  private readonly log: Logger;
157
163
  private readonly contractStore: ContractStore;
164
+ private readonly contractClassService: ContractClassService;
165
+ private readonly overrides: ContractOverrides | undefined;
158
166
  private readonly noteStore: NoteStore;
159
167
  private readonly keyStore: KeyStore;
160
168
  private readonly addressStore: AddressStore;
@@ -162,16 +170,19 @@ export class ContractFunctionSimulator {
162
170
  private readonly l2TipsStore: L2TipsProvider;
163
171
  private readonly senderTaggingStore: SenderTaggingStore;
164
172
  private readonly recipientTaggingStore: RecipientTaggingStore;
165
- private readonly senderAddressBookStore: SenderAddressBookStore;
173
+ private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
166
174
  private readonly capsuleStore: CapsuleStore;
175
+ private readonly factStore: FactStore;
167
176
  private readonly privateEventStore: PrivateEventStore;
168
177
  private readonly simulator: CircuitSimulator;
169
178
  private readonly contractSyncService: ContractSyncService;
170
- private readonly messageContextService: MessageContextService;
179
+ private readonly txResolver: TxResolverService;
171
180
  private readonly hooks: ExecutionHooks | undefined;
172
181
 
173
182
  constructor(args: ContractFunctionSimulatorArgs) {
174
183
  this.contractStore = args.contractStore;
184
+ this.contractClassService = args.contractClassService;
185
+ this.overrides = args.overrides;
175
186
  this.noteStore = args.noteStore;
176
187
  this.keyStore = args.keyStore;
177
188
  this.addressStore = args.addressStore;
@@ -179,12 +190,13 @@ export class ContractFunctionSimulator {
179
190
  this.l2TipsStore = args.l2TipsStore;
180
191
  this.senderTaggingStore = args.senderTaggingStore;
181
192
  this.recipientTaggingStore = args.recipientTaggingStore;
182
- this.senderAddressBookStore = args.senderAddressBookStore;
193
+ this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
183
194
  this.capsuleStore = args.capsuleStore;
195
+ this.factStore = args.factStore;
184
196
  this.privateEventStore = args.privateEventStore;
185
197
  this.simulator = args.simulator;
186
198
  this.contractSyncService = args.contractSyncService;
187
- this.messageContextService = args.messageContextService;
199
+ this.txResolver = args.txResolver;
188
200
  this.hooks = args.hooks;
189
201
  this.log = createLogger('simulator');
190
202
  }
@@ -196,9 +208,7 @@ export class ContractFunctionSimulator {
196
208
  public async run(
197
209
  request: TxExecutionRequest,
198
210
  {
199
- contractAddress,
200
- selector,
201
- msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
211
+ msgSender = AztecAddress.NULL_MSG_SENDER,
202
212
  anchorBlockHeader,
203
213
  senderForTags,
204
214
  scopes,
@@ -207,18 +217,30 @@ export class ContractFunctionSimulator {
207
217
  ): Promise<PrivateExecutionResult> {
208
218
  const simulatorSetupTimer = new Timer();
209
219
 
210
- const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
220
+ const contractAddress = request.origin;
211
221
 
212
- if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
213
- throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
214
- }
222
+ const anchoredContractData = new AnchoredContractData(
223
+ this.contractStore,
224
+ this.contractClassService,
225
+ anchorBlockHeader,
226
+ this.overrides,
227
+ );
215
228
 
216
- if (request.origin !== contractAddress) {
229
+ const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(
230
+ contractAddress,
231
+ request.functionSelector,
232
+ );
233
+ if (!entryPointArtifact) {
217
234
  throw new Error(
218
- `Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`,
235
+ `Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` +
236
+ `Register it via wallet.registerContract(...).`,
219
237
  );
220
238
  }
221
239
 
240
+ if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
241
+ throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
242
+ }
243
+
222
244
  // reserve the first side effect for the tx hash (inserted by the private kernel)
223
245
  const startSideEffectCounter = 2;
224
246
 
@@ -241,6 +263,7 @@ export class ContractFunctionSimulator {
241
263
  const privateExecutionOracle = new PrivateExecutionOracle({
242
264
  argsHash: request.firstCallArgsHash,
243
265
  txContext: request.txContext,
266
+ txRequestSalt: request.salt,
244
267
  callContext,
245
268
  anchorBlockHeader,
246
269
  utilityExecutor: async (call, execScopes) => {
@@ -251,17 +274,18 @@ export class ContractFunctionSimulator {
251
274
  executionCache: HashedValuesCache.create(request.argsOfCalls),
252
275
  noteCache,
253
276
  taggingIndexCache,
254
- contractStore: this.contractStore,
277
+ anchoredContractData,
255
278
  noteStore: this.noteStore,
256
279
  keyStore: this.keyStore,
257
280
  addressStore: this.addressStore,
258
281
  aztecNode: this.aztecNode,
259
282
  senderTaggingStore: this.senderTaggingStore,
260
283
  recipientTaggingStore: this.recipientTaggingStore,
261
- senderAddressBookStore: this.senderAddressBookStore,
284
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
262
285
  capsuleService: new CapsuleService(this.capsuleStore, scopes),
286
+ factService: new FactService(this.factStore, scopes),
263
287
  privateEventStore: this.privateEventStore,
264
- messageContextService: this.messageContextService,
288
+ txResolver: this.txResolver,
265
289
  contractSyncService: this.contractSyncService,
266
290
  jobId,
267
291
  totalPublicCalldataCount: 0,
@@ -290,8 +314,7 @@ export class ContractFunctionSimulator {
290
314
  );
291
315
  const simulatorTeardownTimer = new Timer();
292
316
 
293
- noteCache.finish();
294
- const firstNullifierHint = noteCache.getNonceGenerator();
317
+ const firstNullifier = noteCache.getNonceGenerator();
295
318
 
296
319
  const publicCallRequests = collectNested([executionResult], r =>
297
320
  r.publicInputs.publicCallRequests
@@ -314,9 +337,9 @@ export class ContractFunctionSimulator {
314
337
  }
315
338
 
316
339
  // Not to be confused with a PrivateCallExecutionResult. This is a superset
317
- // of the PrivateCallExecutionResult, containing also firstNullifierHint
340
+ // of the PrivateCallExecutionResult, containing also firstNullifier
318
341
  // and publicFunctionsCalldata.
319
- return new PrivateExecutionResult(executionResult, firstNullifierHint, publicFunctionsCalldata);
342
+ return new PrivateExecutionResult(executionResult, firstNullifier, publicFunctionsCalldata);
320
343
  } catch (err) {
321
344
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
322
345
  }
@@ -325,10 +348,6 @@ export class ContractFunctionSimulator {
325
348
  /**
326
349
  * Runs a utility function.
327
350
  * @param call - The function call to execute.
328
- * @param authwits - Authentication witnesses required for the function call.
329
- * @param anchorBlockHeader - The block header to use as base state for this run.
330
- * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
331
- * accounts if not specified.
332
351
  * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
333
352
  */
334
353
  public async runUtility(
@@ -338,7 +357,20 @@ export class ContractFunctionSimulator {
338
357
  scopes: AztecAddress[],
339
358
  jobId: string,
340
359
  ): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
341
- const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
360
+ const anchoredContractData = new AnchoredContractData(
361
+ this.contractStore,
362
+ this.contractClassService,
363
+ anchorBlockHeader,
364
+ this.overrides,
365
+ );
366
+
367
+ const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
368
+ if (!entryPointArtifact) {
369
+ throw new Error(
370
+ `Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` +
371
+ `Register it via wallet.registerContract(...).`,
372
+ );
373
+ }
342
374
 
343
375
  if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
344
376
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
@@ -349,20 +381,26 @@ export class ContractFunctionSimulator {
349
381
  };
350
382
 
351
383
  const oracle = new UtilityExecutionOracle({
352
- contractAddress: call.to,
384
+ callContext: CallContext.from({
385
+ msgSender: AztecAddress.NULL_MSG_SENDER,
386
+ contractAddress: call.to,
387
+ functionSelector: call.selector,
388
+ isStaticCall: true,
389
+ }),
353
390
  authWitnesses: authwits,
354
391
  capsules: [],
355
392
  anchorBlockHeader,
356
- contractStore: this.contractStore,
393
+ anchoredContractData,
357
394
  noteStore: this.noteStore,
358
395
  keyStore: this.keyStore,
359
396
  addressStore: this.addressStore,
360
397
  aztecNode: this.aztecNode,
361
398
  recipientTaggingStore: this.recipientTaggingStore,
362
- senderAddressBookStore: this.senderAddressBookStore,
399
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
363
400
  capsuleService: new CapsuleService(this.capsuleStore, scopes),
401
+ factService: new FactService(this.factStore, scopes),
364
402
  privateEventStore: this.privateEventStore,
365
- messageContextService: this.messageContextService,
403
+ txResolver: this.txResolver,
366
404
  contractSyncService: this.contractSyncService,
367
405
  l2TipsStore: this.l2TipsStore,
368
406
  jobId,
@@ -617,12 +655,12 @@ export async function generateSimulatedProvingResult(
617
655
  siloedNullifiers,
618
656
  minRevertibleSideEffectCounter,
619
657
  );
658
+ // The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
659
+ // init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
660
+ // the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
661
+ // nullifier.
620
662
  const nonceGenerator = privateExecutionResult.firstNullifier;
621
- if (nonRevertibleNullifiers.length === 0) {
622
- nonRevertibleNullifiers.push(nonceGenerator);
623
- } else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
624
- throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
625
- }
663
+ nonRevertibleNullifiers.unshift(nonceGenerator);
626
664
 
627
665
  if (isPrivateOnlyTx) {
628
666
  // We must make the note hashes unique by using the
@@ -885,6 +923,11 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
885
923
  );
886
924
  meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
887
925
 
926
+ if (isPrivateOnlyTx) {
927
+ // The public data write that the private tx base rollup always performs to update the fee payer's balance.
928
+ meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
929
+ }
930
+
888
931
  const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
889
932
 
890
933
  if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
@@ -43,12 +43,6 @@ export class ExecutionNoteCache {
43
43
 
44
44
  private inRevertiblePhase = false;
45
45
 
46
- /**
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.
49
- */
50
- private usedProtocolNullifierForNonces: boolean | undefined;
51
-
52
46
  constructor(private readonly protocolNullifier: Fr) {}
53
47
 
54
48
  /**
@@ -64,12 +58,9 @@ export class ExecutionNoteCache {
64
58
  this.inRevertiblePhase = true;
65
59
  this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
66
60
 
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]);
61
+ // The protocol nullifier is always the tx's first nullifier (injected by the kernel init), so it is the
62
+ // nonce generator for every note hash.
63
+ const nonceGenerator = this.protocolNullifier;
73
64
 
74
65
  // The existing pending notes are all non-revertible.
75
66
  // They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
@@ -102,14 +93,6 @@ export class ExecutionNoteCache {
102
93
  return sideEffectCounter >= this.minRevertibleSideEffectCounter;
103
94
  }
104
95
 
105
- public finish() {
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.
108
- if (!this.inRevertiblePhase) {
109
- this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
110
- }
111
- }
112
-
113
96
  /**
114
97
  * Add a new note to cache.
115
98
  * @param note - New note created during execution.
@@ -223,19 +206,15 @@ export class ExecutionNoteCache {
223
206
  }
224
207
 
225
208
  /**
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.
209
+ * @returns All nullifiers of the transaction: the protocol nullifier (the kernel-injected first nullifier),
210
+ * followed by those emitted by private calls.
228
211
  */
229
212
  getAllNullifiers(): Fr[] {
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];
213
+ return [this.protocolNullifier, ...this.getEmittedNullifiers()];
235
214
  }
236
215
 
237
216
  getNonceGenerator(): Fr {
238
- return this.getAllNullifiers()[0];
217
+ return this.protocolNullifier;
239
218
  }
240
219
 
241
220
  #recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
@@ -1,40 +1,47 @@
1
1
  export {
2
2
  ORACLE_REGISTRY,
3
3
  makeEntry,
4
- type HandlersForPrefix,
5
4
  type NamedValue,
6
5
  type OracleRegistryEntry,
7
6
  type ParamTypes,
8
- type StripOraclePrefix,
9
7
  } from './oracle/oracle_registry.js';
10
8
  export {
11
9
  ARRAY,
12
10
  AZTEC_ADDRESS,
13
11
  BIGINT,
12
+ BLOCK_HASH,
14
13
  BLOCK_NUMBER,
15
14
  BOOL,
16
15
  BOUNDED_VEC,
17
16
  BUFFER,
18
17
  BYTE,
18
+ CONTRACT_INSTANCE,
19
19
  DELIVERY_MODE,
20
20
  EPHEMERAL_ARRAY,
21
+ ETH_ADDRESS,
21
22
  EVENT_VALIDATION_REQUEST,
22
23
  FIELD,
24
+ FIXED_ARRAY,
23
25
  FUNCTION_SELECTOR,
24
26
  LOG_RETRIEVAL_REQUEST,
25
27
  LOG_RETRIEVAL_RESPONSE,
26
28
  MEMBERSHIP_WITNESS,
27
- MESSAGE_CONTEXT,
29
+ NOTE_SELECTOR,
28
30
  NOTE_VALIDATION_REQUEST,
29
31
  OPTION,
30
32
  PENDING_TAGGED_LOG,
31
33
  POINT,
32
34
  PROVIDED_SECRET,
35
+ SLOT_NUMBER,
33
36
  STR,
37
+ STRUCT,
34
38
  U32,
39
+ tryFieldWidth,
35
40
  type InputSlot,
36
41
  type MaybePromise,
37
42
  type OutputSlot,
43
+ type SlotShape,
44
+ type StructField,
38
45
  type TypeMapping,
39
46
  } from './oracle/oracle_type_mappings.js';
40
47
  export { ExecutionNoteCache } from './execution_note_cache.js';
@@ -42,22 +49,30 @@ export { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
42
49
  export { HashedValuesCache } from './hashed_values_cache.js';
43
50
  export { pickNotes } from './pick_notes.js';
44
51
  export type { IMiscOracle, IUtilityExecutionOracle, IPrivateExecutionOracle } from './oracle/interfaces.js';
52
+ export type { FactCollection } from './noir-structs/fact_collection.js';
45
53
  export type { NoteData } from './noir-structs/note_data.js';
46
- export { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
47
- export { MessageContextService } from '../messages/message_context_service.js';
54
+ export type { ResolvedTaggingStrategy } from './noir-structs/resolved_tagging_strategy.js';
55
+ export type { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
56
+ export { TxResolverService } from '../messages/tx_resolver_service.js';
48
57
  export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
49
58
  export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
50
59
  export { buildACIRCallback, UnavailableOracleError } from './oracle/acir_callback.js';
60
+ export { LEGACY_ORACLE_REGISTRY } from './oracle/legacy_oracle_registry.js';
51
61
  export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
52
62
  export { generateSimulatedProvingResult } from './contract_function_simulator.js';
53
63
  export { packAsHintedNote } from './oracle/note_packing_utils.js';
54
64
  export { BoundedVec } from './noir-structs/bounded_vec.js';
65
+ export type { ContractClassLogData } from './noir-structs/contract_class_log_data.js';
66
+ export type { EmbeddedCurvePoint } from './noir-structs/embedded_curve_point.js';
55
67
  export { EphemeralArray } from './noir-structs/ephemeral_array.js';
56
68
  export { Option } from './noir-structs/option.js';
57
- export { UtilityContext } from './noir-structs/utility_context.js';
69
+ export type { UtilityContext } from './noir-structs/utility_context.js';
58
70
  export { EventValidationRequest } from './noir-structs/event_validation_request.js';
59
- export { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
60
- export { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
71
+ export type { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
72
+ export type { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
61
73
  export { NoteValidationRequest } from './noir-structs/note_validation_request.js';
62
- export { ProvidedSecret } from './noir-structs/provided_secret.js';
74
+ export type { PendingTaggedLog } from './noir-structs/pending_tagged_log.js';
75
+ export type { TxEffectData } from './noir-structs/tx_effect_data.js';
76
+ export type { ProvidedSecret } from './noir-structs/provided_secret.js';
77
+ export { ResolvedTx } from './noir-structs/resolved_tx.js';
63
78
  export { TransientArrayService } from './transient_array_service.js';
@@ -1,9 +1,4 @@
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
- */
1
+ /** TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`. */
7
2
  export class BoundedVec<T> {
8
3
  private constructor(
9
4
  public readonly data: T[],
@@ -15,16 +10,11 @@ export class BoundedVec<T> {
15
10
  * Construct a BoundedVec with data.
16
11
  *
17
12
  * @param data - Actual elements. Length must be `<= maxLength`.
18
- * @param maxLength - Maximum capacity declared at the Noir call site.
19
- * The storage slot is padded to this many elements.
20
- * @param elementSize - Number of Fr fields each element contributes when serialized.
21
- * `1` for scalar elements (u8, Field) this is the default.
22
- * `> 1` for compound elements (e.g. a packed note that spans multiple fields).
23
- *
24
- * @example A bounded vec of bytes (elementSize defaults to 1):
25
- * ```ts
26
- * BoundedVec.from({ data: plaintext, maxLength: ciphertext.maxLength })
27
- * ```
13
+ * @param maxLength - Maximum capacity declared at the Noir call site. The storage slot is padded to this many
14
+ * elements.
15
+ * @param elementSize - Number of Fr fields each element contributes when serialized. Only consulted for
16
+ * variable-width elements whose width isn't statically known from their shape (e.g. a packed note spanning
17
+ * `packedHintedNoteLength` fields); fixed-width elements derive it from the shape, so it can be omitted.
28
18
  *
29
19
  * @example A bounded vec of packed notes, each spanning `packedHintedNoteLength` fields:
30
20
  * ```ts
@@ -43,13 +33,11 @@ export class BoundedVec<T> {
43
33
  return new BoundedVec<T>(data, maxLength, elementSize);
44
34
  }
45
35
 
46
- /**
47
- * Construct an empty BoundedVec, typically used as a shape template for `Option.empty(...)`.
48
- *
49
- * @param maxLength - Maximum capacity declared at the Noir call site.
50
- * @param elementSize - Number of Fr fields each element contributes when serialized (default 1).
51
- */
52
- static empty<T>({ maxLength, elementSize = 1 }: { maxLength: number; elementSize?: number }): BoundedVec<T> {
53
- return new BoundedVec<T>([], maxLength, elementSize);
36
+ equals(other: BoundedVec<T>, innerEquals: (a: T, b: T) => boolean): boolean {
37
+ return (
38
+ this.maxLength === other.maxLength &&
39
+ this.data.length === other.data.length &&
40
+ this.data.every((value, i) => innerEquals(value, other.data[i]))
41
+ );
54
42
  }
55
43
  }
@@ -0,0 +1,9 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+
4
+ /** Wire form of a contract class log. */
5
+ export type ContractClassLogData = {
6
+ contractAddress: AztecAddress;
7
+ fields: Fr[];
8
+ emittedLength: number;
9
+ };
@@ -0,0 +1,4 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+
3
+ /** Wire form of a Grumpkin point crossing the oracle boundary: Noir's `EmbeddedCurvePoint` serializes to `[x, y]`. */
4
+ export type EmbeddedCurvePoint = { x: Fr; y: Fr };
@@ -21,7 +21,7 @@ export class EventValidationRequest {
21
21
  static fromFields(fields: Fr[] | FieldReader): EventValidationRequest {
22
22
  const reader = FieldReader.asReader(fields);
23
23
 
24
- const contractAddress = AztecAddress.fromField(reader.readField());
24
+ const contractAddress = AztecAddress.fromFieldUnsafe(reader.readField());
25
25
  const eventTypeId = EventSelector.fromField(reader.readField());
26
26
 
27
27
  const randomness = reader.readField();
@@ -0,0 +1,13 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+
3
+ import type { RetractableFactOrigin } from '../../storage/fact_store/index.js';
4
+ import type { EphemeralArray } from './ephemeral_array.js';
5
+ import type { Option } from './option.js';
6
+
7
+ /**
8
+ * A single fact returned within a fact collection by the fact store oracles.
9
+ *
10
+ * A TS version of the `Fact` struct in `facts/mod.nr`. `originBlock` is `Some` for a retractable fact (carrying its
11
+ * origin block's current chain state) and `None` for a non-retractable one.
12
+ */
13
+ export type Fact = { factTypeId: Fr; payload: EphemeralArray<Fr>; originBlock: Option<RetractableFactOrigin> };
@@ -0,0 +1,64 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+
4
+ import type { FactWithOriginState, RetractableFactOrigin } from '../../storage/fact_store/index.js';
5
+ import { OriginBlockState } from '../../storage/fact_store/index.js';
6
+ import type { EphemeralArrayService } from '../ephemeral_array_service.js';
7
+ import { EphemeralArray } from './ephemeral_array.js';
8
+ import type { Fact } from './fact.js';
9
+ import { Option } from './option.js';
10
+
11
+ /**
12
+ * A fact collection.
13
+ */
14
+ export type FactCollection = {
15
+ contractAddress: AztecAddress;
16
+ scope: AztecAddress;
17
+ factCollectionTypeId: Fr;
18
+ factCollectionId: Fr;
19
+ facts: EphemeralArray<Fact>;
20
+ };
21
+
22
+ /**
23
+ * Builds the Noir-facing `FactCollection` from stored facts.
24
+ */
25
+ export function toNoirFactCollection(
26
+ service: EphemeralArrayService,
27
+ contractAddress: AztecAddress,
28
+ scope: AztecAddress,
29
+ factCollectionTypeId: Fr,
30
+ factCollectionId: Fr,
31
+ facts: FactWithOriginState[],
32
+ ): FactCollection {
33
+ return {
34
+ contractAddress,
35
+ scope,
36
+ factCollectionTypeId,
37
+ factCollectionId,
38
+ facts: EphemeralArray.fromValues(
39
+ service,
40
+ facts.map(
41
+ (fact: FactWithOriginState): Fact => ({
42
+ factTypeId: fact.factTypeId,
43
+ payload: EphemeralArray.fromValues(service, fact.payload),
44
+ originBlock: fact.originBlock
45
+ ? Option.some(fact.originBlock)
46
+ : Option.none<RetractableFactOrigin>({
47
+ blockNumber: 0,
48
+ blockHash: Fr.ZERO,
49
+ blockState: OriginBlockState.Pending,
50
+ }),
51
+ }),
52
+ ),
53
+ ),
54
+ };
55
+ }
56
+
57
+ /**
58
+ * A zeroed `FactCollection` used only as a serialization shape template for the `None` case of
59
+ * `Option<FactCollection>`. Noir's `Option<T>` is fixed-width on the wire, so `None` must emit the same number of
60
+ * (zeroed) field slots as `Some`.
61
+ **/
62
+ export function emptyFactCollection(service: EphemeralArrayService): FactCollection {
63
+ return toNoirFactCollection(service, AztecAddress.ZERO, AztecAddress.ZERO, Fr.ZERO, Fr.ZERO, []);
64
+ }