@aztec/pxe 0.0.1-commit.d431d1c → 0.0.1-commit.d58ff9d0

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 (523) hide show
  1. package/dest/bin/check_oracle_version.js +40 -111
  2. package/dest/bin/index.d.ts +2 -0
  3. package/dest/bin/index.d.ts.map +1 -0
  4. package/dest/bin/index.js +1 -0
  5. package/dest/bin/oracle_version_helpers.d.ts +34 -0
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  7. package/dest/bin/oracle_version_helpers.js +46 -0
  8. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  9. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  10. package/dest/block_synchronizer/block_stream_source.js +37 -0
  11. package/dest/block_synchronizer/block_synchronizer.d.ts +26 -14
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +128 -26
  14. package/dest/config/index.d.ts +11 -2
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +18 -2
  17. package/dest/config/package_info.js +1 -1
  18. package/dest/contract/contract_class_service.d.ts +31 -0
  19. package/dest/contract/contract_class_service.d.ts.map +1 -0
  20. package/dest/contract/contract_class_service.js +68 -0
  21. package/dest/contract/contract_sync_service.d.ts +48 -0
  22. package/dest/contract/contract_sync_service.d.ts.map +1 -0
  23. package/dest/contract/contract_sync_service.js +116 -0
  24. package/dest/contract/helpers.d.ts +7 -0
  25. package/dest/contract/helpers.d.ts.map +1 -0
  26. package/dest/contract/helpers.js +20 -0
  27. package/dest/contract/skip_sync_contracts.d.ts +11 -0
  28. package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
  29. package/dest/contract/skip_sync_contracts.js +18 -0
  30. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  31. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  32. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  33. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts +39 -0
  34. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts.map +1 -0
  35. package/dest/contract_function_simulator/aztec_node_read_cache.js +60 -0
  36. package/dest/contract_function_simulator/contract_function_simulator.d.ts +72 -36
  37. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/contract_function_simulator.js +265 -98
  39. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  40. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  41. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  42. package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
  43. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  45. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -11
  46. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -15
  48. package/dest/contract_function_simulator/index.d.ts +26 -5
  49. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  50. package/dest/contract_function_simulator/index.js +11 -3
  51. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  52. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  53. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  54. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  55. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  56. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  57. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  58. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  59. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  60. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  61. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  62. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  63. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -5
  64. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  65. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +10 -11
  66. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  67. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  68. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  69. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  70. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  71. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  72. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +19 -10
  73. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  74. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +12 -24
  75. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +11 -9
  76. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  77. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -63
  78. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  79. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  80. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  81. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +4 -6
  82. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  83. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +9 -13
  84. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  85. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  86. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  87. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  88. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  89. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  90. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  91. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  92. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  93. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  94. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  95. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  96. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  97. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  98. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  99. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
  100. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  101. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
  102. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
  103. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  104. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  105. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  106. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  107. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  108. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  109. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  110. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  111. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  112. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  113. package/dest/contract_function_simulator/oracle/index.js +1 -1
  114. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -95
  115. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  116. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  117. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  118. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  119. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  120. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  121. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  122. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  123. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  124. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  125. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  126. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +139 -0
  127. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  128. package/dest/contract_function_simulator/oracle/oracle_registry.js +1016 -0
  129. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +274 -0
  130. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  131. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
  132. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -22
  133. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  134. package/dest/contract_function_simulator/oracle/private_execution.js +7 -43
  135. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +88 -95
  136. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  137. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +268 -116
  138. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +215 -86
  139. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  140. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +625 -204
  141. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  142. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  143. package/dest/contract_function_simulator/pick_notes.js +20 -3
  144. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  145. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  146. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  147. package/dest/contract_logging.d.ts +27 -0
  148. package/dest/contract_logging.d.ts.map +1 -0
  149. package/dest/contract_logging.js +38 -0
  150. package/dest/debug/pxe_debug_utils.d.ts +19 -10
  151. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  152. package/dest/debug/pxe_debug_utils.js +22 -17
  153. package/dest/entrypoints/client/bundle/index.d.ts +4 -1
  154. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  155. package/dest/entrypoints/client/bundle/index.js +3 -0
  156. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  157. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  158. package/dest/entrypoints/client/bundle/utils.js +45 -12
  159. package/dest/entrypoints/client/lazy/index.d.ts +4 -1
  160. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  161. package/dest/entrypoints/client/lazy/index.js +3 -0
  162. package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
  163. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  164. package/dest/entrypoints/client/lazy/utils.js +46 -13
  165. package/dest/entrypoints/client/store.d.ts +14 -0
  166. package/dest/entrypoints/client/store.d.ts.map +1 -0
  167. package/dest/entrypoints/client/store.js +42 -0
  168. package/dest/entrypoints/pxe_creation_options.d.ts +18 -3
  169. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  170. package/dest/entrypoints/pxe_creation_options.js +3 -1
  171. package/dest/entrypoints/server/index.d.ts +8 -2
  172. package/dest/entrypoints/server/index.d.ts.map +1 -1
  173. package/dest/entrypoints/server/index.js +6 -1
  174. package/dest/entrypoints/server/store.d.ts +18 -0
  175. package/dest/entrypoints/server/store.d.ts.map +1 -0
  176. package/dest/entrypoints/server/store.js +28 -0
  177. package/dest/entrypoints/server/utils.d.ts +4 -3
  178. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  179. package/dest/entrypoints/server/utils.js +54 -15
  180. package/dest/error_enriching.d.ts +5 -3
  181. package/dest/error_enriching.d.ts.map +1 -1
  182. package/dest/error_enriching.js +13 -11
  183. package/dest/events/event_service.d.ts +16 -8
  184. package/dest/events/event_service.d.ts.map +1 -1
  185. package/dest/events/event_service.js +46 -14
  186. package/dest/events/private_event_filter_validator.d.ts +3 -2
  187. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  188. package/dest/events/private_event_filter_validator.js +15 -0
  189. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  190. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  191. package/dest/hooks/authorize_utility_call.js +4 -0
  192. package/dest/hooks/execution_hooks.d.ts +62 -0
  193. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  194. package/dest/hooks/execution_hooks.js +9 -0
  195. package/dest/hooks/index.d.ts +5 -0
  196. package/dest/hooks/index.d.ts.map +1 -0
  197. package/dest/hooks/index.js +2 -0
  198. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  199. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  200. package/dest/hooks/resolve_custom_request.js +3 -0
  201. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  202. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  203. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  204. package/dest/job_coordinator/job_coordinator.d.ts +3 -2
  205. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
  206. package/dest/job_coordinator/job_coordinator.js +3 -2
  207. package/dest/logs/log_service.d.ts +17 -13
  208. package/dest/logs/log_service.d.ts.map +1 -1
  209. package/dest/logs/log_service.js +201 -91
  210. package/dest/messages/tx_resolver_service.d.ts +17 -0
  211. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  212. package/dest/messages/tx_resolver_service.js +60 -0
  213. package/dest/notes/note_service.d.ts +31 -9
  214. package/dest/notes/note_service.d.ts.map +1 -1
  215. package/dest/notes/note_service.js +95 -70
  216. package/dest/notes_filter.d.ts +24 -0
  217. package/dest/notes_filter.d.ts.map +1 -0
  218. package/dest/notes_filter.js +4 -0
  219. package/dest/oracle_version.d.ts +4 -3
  220. package/dest/oracle_version.d.ts.map +1 -1
  221. package/dest/oracle_version.js +20 -9
  222. package/dest/private_kernel/batch_planner.d.ts +47 -0
  223. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  224. package/dest/private_kernel/batch_planner.js +104 -0
  225. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  226. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  227. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  228. package/dest/private_kernel/hints/index.d.ts +1 -1
  229. package/dest/private_kernel/hints/index.js +1 -1
  230. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  231. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  232. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +135 -70
  233. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  234. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  235. package/dest/private_kernel/hints/test_utils.js +202 -0
  236. package/dest/private_kernel/private_kernel_execution_prover.d.ts +7 -2
  237. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  238. package/dest/private_kernel/private_kernel_execution_prover.js +209 -87
  239. package/dest/private_kernel/private_kernel_oracle.d.ts +17 -11
  240. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  241. package/dest/private_kernel/private_kernel_oracle.js +47 -29
  242. package/dest/pxe.d.ts +228 -66
  243. package/dest/pxe.d.ts.map +1 -1
  244. package/dest/pxe.js +418 -231
  245. package/dest/storage/address_store/address_store.d.ts +1 -1
  246. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  247. package/dest/storage/address_store/address_store.js +12 -11
  248. package/dest/storage/allowed_scopes.d.ts +6 -0
  249. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  250. package/dest/storage/allowed_scopes.js +7 -0
  251. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +12 -1
  252. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  253. package/dest/storage/anchor_block_store/anchor_block_store.js +12 -3
  254. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  255. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  256. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  257. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  258. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  259. package/dest/storage/backwards_compatibility_tests/schema_tests.js +671 -0
  260. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  261. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  262. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  263. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  264. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  265. package/dest/storage/capsule_store/capsule_service.js +47 -0
  266. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  267. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  268. package/dest/storage/capsule_store/capsule_store.js +42 -36
  269. package/dest/storage/capsule_store/index.d.ts +2 -1
  270. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  271. package/dest/storage/capsule_store/index.js +1 -0
  272. package/dest/storage/contract_store/contract_store.d.ts +63 -34
  273. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  274. package/dest/storage/contract_store/contract_store.js +191 -146
  275. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  276. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  277. package/dest/storage/fact_store/fact_service.js +45 -0
  278. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  279. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  280. package/dest/storage/fact_store/fact_store.js +408 -0
  281. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  282. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  283. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  284. package/dest/storage/fact_store/index.d.ts +6 -0
  285. package/dest/storage/fact_store/index.d.ts.map +1 -0
  286. package/dest/storage/fact_store/index.js +4 -0
  287. package/dest/storage/fact_store/origin_state.d.ts +59 -0
  288. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  289. package/dest/storage/fact_store/origin_state.js +60 -0
  290. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  291. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  292. package/dest/storage/fact_store/stored_fact.js +64 -0
  293. package/dest/storage/index.d.ts +3 -2
  294. package/dest/storage/index.d.ts.map +1 -1
  295. package/dest/storage/index.js +2 -1
  296. package/dest/storage/metadata.d.ts +2 -2
  297. package/dest/storage/metadata.d.ts.map +1 -1
  298. package/dest/storage/metadata.js +1 -1
  299. package/dest/storage/note_store/note_store.d.ts +63 -56
  300. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  301. package/dest/storage/note_store/note_store.js +321 -266
  302. package/dest/storage/note_store/stored_note.d.ts +11 -0
  303. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  304. package/dest/storage/note_store/stored_note.js +27 -0
  305. package/dest/storage/open_pxe_stores.d.ts +35 -0
  306. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  307. package/dest/storage/open_pxe_stores.js +29 -0
  308. package/dest/storage/private_event_store/private_event_store.d.ts +26 -16
  309. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  310. package/dest/storage/private_event_store/private_event_store.js +214 -163
  311. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  312. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  313. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  314. package/dest/storage/store_identity.d.ts +35 -0
  315. package/dest/storage/store_identity.d.ts.map +1 -0
  316. package/dest/storage/store_identity.js +44 -0
  317. package/dest/storage/tagging_store/index.d.ts +2 -2
  318. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  319. package/dest/storage/tagging_store/index.js +1 -1
  320. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  321. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  322. package/dest/storage/tagging_store/recipient_tagging_store.js +31 -19
  323. package/dest/storage/tagging_store/sender_tagging_store.d.ts +45 -28
  324. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  325. package/dest/storage/tagging_store/sender_tagging_store.js +270 -137
  326. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  327. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  328. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  329. package/dest/tagging/constants.d.ts +3 -2
  330. package/dest/tagging/constants.d.ts.map +1 -1
  331. package/dest/tagging/constants.js +28 -10
  332. package/dest/tagging/get_all_logs_by_tags.d.ts +48 -0
  333. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  334. package/dest/tagging/get_all_logs_by_tags.js +59 -0
  335. package/dest/tagging/index.d.ts +8 -6
  336. package/dest/tagging/index.d.ts.map +1 -1
  337. package/dest/tagging/index.js +6 -4
  338. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  339. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  340. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  341. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +74 -0
  342. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  343. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +238 -0
  344. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  345. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  346. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  347. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  348. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  349. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  350. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -9
  351. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  352. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +32 -14
  353. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +13 -7
  354. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  355. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +44 -16
  356. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -7
  357. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  358. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +46 -27
  359. package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
  360. package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
  361. package/dest/tagging/testing/tag_query_test_utils.js +10 -0
  362. package/package.json +29 -17
  363. package/src/bin/check_oracle_version.ts +46 -134
  364. package/src/bin/index.ts +1 -0
  365. package/src/bin/oracle_version_helpers.ts +54 -0
  366. package/src/block_synchronizer/block_stream_source.ts +42 -0
  367. package/src/block_synchronizer/block_synchronizer.ts +154 -48
  368. package/src/config/index.ts +22 -1
  369. package/src/config/package_info.ts +1 -1
  370. package/src/contract/contract_class_service.ts +83 -0
  371. package/src/contract/contract_sync_service.ts +176 -0
  372. package/src/contract/helpers.ts +35 -0
  373. package/src/contract/skip_sync_contracts.ts +23 -0
  374. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  375. package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
  376. package/src/contract_function_simulator/contract_function_simulator.ts +463 -162
  377. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  378. package/src/contract_function_simulator/execution_note_cache.ts +8 -29
  379. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
  380. package/src/contract_function_simulator/index.ts +89 -4
  381. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  382. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  383. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  384. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  385. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +11 -10
  386. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  387. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  388. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -20
  389. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +14 -64
  390. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  391. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +7 -12
  392. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  393. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  394. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  395. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  396. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  397. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
  398. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
  399. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  400. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  401. package/src/contract_function_simulator/oracle/index.ts +1 -15
  402. package/src/contract_function_simulator/oracle/interfaces.ts +11 -167
  403. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  404. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  405. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  406. package/src/contract_function_simulator/oracle/oracle_registry.ts +710 -0
  407. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1052 -0
  408. package/src/contract_function_simulator/oracle/private_execution.ts +7 -67
  409. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +340 -213
  410. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +966 -275
  411. package/src/contract_function_simulator/pick_notes.ts +22 -3
  412. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  413. package/src/contract_logging.ts +52 -0
  414. package/src/debug/pxe_debug_utils.ts +55 -18
  415. package/src/entrypoints/client/bundle/index.ts +3 -0
  416. package/src/entrypoints/client/bundle/utils.ts +46 -21
  417. package/src/entrypoints/client/lazy/index.ts +3 -0
  418. package/src/entrypoints/client/lazy/utils.ts +48 -22
  419. package/src/entrypoints/client/store.ts +54 -0
  420. package/src/entrypoints/pxe_creation_options.ts +23 -2
  421. package/src/entrypoints/server/index.ts +8 -1
  422. package/src/entrypoints/server/store.ts +47 -0
  423. package/src/entrypoints/server/utils.ts +61 -34
  424. package/src/error_enriching.ts +27 -11
  425. package/src/events/event_service.ts +70 -24
  426. package/src/events/private_event_filter_validator.ts +21 -1
  427. package/src/hooks/authorize_utility_call.ts +44 -0
  428. package/src/hooks/execution_hooks.ts +68 -0
  429. package/src/hooks/index.ts +13 -0
  430. package/src/hooks/resolve_custom_request.ts +24 -0
  431. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  432. package/src/job_coordinator/job_coordinator.ts +4 -3
  433. package/src/logs/log_service.ts +248 -152
  434. package/src/messages/tx_resolver_service.ts +69 -0
  435. package/src/notes/note_service.ts +137 -101
  436. package/src/notes_filter.ts +24 -0
  437. package/src/oracle_version.ts +20 -9
  438. package/src/private_kernel/batch_planner.ts +168 -0
  439. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  440. package/src/private_kernel/hints/index.ts +1 -1
  441. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +176 -119
  442. package/src/private_kernel/hints/test_utils.ts +318 -0
  443. package/src/private_kernel/private_kernel_execution_prover.ts +347 -123
  444. package/src/private_kernel/private_kernel_oracle.ts +65 -36
  445. package/src/pxe.ts +732 -297
  446. package/src/storage/address_store/address_store.ts +15 -15
  447. package/src/storage/allowed_scopes.ts +14 -0
  448. package/src/storage/anchor_block_store/anchor_block_store.ts +12 -2
  449. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  450. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  451. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  452. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  453. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  454. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  455. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  456. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  457. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  458. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +26 -0
  459. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +30 -0
  460. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  461. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  462. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  463. package/src/storage/backwards_compatibility_tests/schema_tests.ts +803 -0
  464. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  465. package/src/storage/capsule_store/capsule_service.ts +85 -0
  466. package/src/storage/capsule_store/capsule_store.ts +52 -34
  467. package/src/storage/capsule_store/index.ts +1 -0
  468. package/src/storage/contract_store/contract_store.ts +247 -185
  469. package/src/storage/fact_store/fact_service.ts +69 -0
  470. package/src/storage/fact_store/fact_store.ts +487 -0
  471. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  472. package/src/storage/fact_store/index.ts +15 -0
  473. package/src/storage/fact_store/origin_state.ts +84 -0
  474. package/src/storage/fact_store/stored_fact.ts +80 -0
  475. package/src/storage/index.ts +2 -1
  476. package/src/storage/metadata.ts +1 -1
  477. package/src/storage/note_store/note_store.ts +363 -324
  478. package/src/storage/note_store/stored_note.ts +26 -0
  479. package/src/storage/open_pxe_stores.ts +52 -0
  480. package/src/storage/private_event_store/private_event_store.ts +268 -210
  481. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  482. package/src/storage/store_identity.ts +72 -0
  483. package/src/storage/tagging_store/index.ts +1 -1
  484. package/src/storage/tagging_store/recipient_tagging_store.ts +34 -24
  485. package/src/storage/tagging_store/sender_tagging_store.ts +333 -155
  486. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  487. package/src/tagging/constants.ts +30 -10
  488. package/src/tagging/get_all_logs_by_tags.ts +120 -0
  489. package/src/tagging/index.ts +7 -5
  490. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  491. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +358 -0
  492. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +4 -4
  493. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  494. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +54 -17
  495. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +47 -29
  496. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +42 -29
  497. package/src/tagging/testing/tag_query_test_utils.ts +11 -0
  498. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -58
  499. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  500. package/dest/contract_function_simulator/oracle/oracle.js +0 -346
  501. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  502. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  503. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -80
  504. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  505. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  506. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  507. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  508. package/dest/storage/tagging_store/sender_address_book_store.js +0 -30
  509. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  510. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  511. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  512. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  513. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  514. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -29
  515. package/dest/tree_membership/tree_membership_service.d.ts +0 -50
  516. package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
  517. package/dest/tree_membership/tree_membership_service.js +0 -75
  518. package/src/contract_function_simulator/oracle/oracle.ts +0 -607
  519. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
  520. package/src/storage/tagging_store/sender_address_book_store.ts +0 -42
  521. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -133
  522. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -43
  523. package/src/tree_membership/tree_membership_service.ts +0 -97
@@ -1,13 +1,11 @@
1
1
  import type { FUNCTION_TREE_HEIGHT } from '@aztec/constants';
2
- import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { toArray } from '@aztec/foundation/iterable';
4
+ import { BufferReader, numToUInt8, serializeToBuffer } from '@aztec/foundation/serialize';
4
5
  import type { MembershipWitness } from '@aztec/foundation/trees';
5
6
  import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
6
- import { isProtocolContract } from '@aztec/protocol-contracts';
7
7
  import {
8
8
  type ContractArtifact,
9
- type FunctionAbi,
10
- type FunctionArtifact,
11
9
  type FunctionArtifactWithContractName,
12
10
  FunctionCall,
13
11
  type FunctionDebugMetadata,
@@ -16,18 +14,83 @@ import {
16
14
  contractArtifactFromBuffer,
17
15
  contractArtifactToBuffer,
18
16
  encodeArguments,
17
+ findFunctionAbiBySelector,
18
+ findFunctionArtifactBySelector,
19
19
  getFunctionDebugMetadata,
20
20
  } from '@aztec/stdlib/abi';
21
21
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
22
22
  import {
23
- type ContractClass,
24
- type ContractInstanceWithAddress,
25
- SerializableContractInstance,
23
+ type ContractClassIdPreimage,
24
+ type ContractClassWithId,
25
+ type ContractInstancePreimageWithAddress,
26
+ SerializableContractInstancePreimage,
26
27
  getContractClassFromArtifact,
27
28
  } from '@aztec/stdlib/contract';
28
29
 
29
30
  import { PrivateFunctionsTree } from './private_functions_tree.js';
30
31
 
32
+ const VERSION = 1 as const;
33
+
34
+ /**
35
+ * All contract class data except the large packedBytecode.
36
+ * The expensive data from the ContractClass is precomputed and stored in this format to avoid redundant hashing.
37
+ * Since we have to store the artifacts anyway, the final ContractClass is reconstructed by combining this data
38
+ * with the packedBytecode obtained from the former. That way we can have quick class lookups without wasted storage.
39
+ */
40
+ export class SerializableContractClassData {
41
+ public readonly version = VERSION;
42
+ public readonly id: Fr;
43
+ public readonly artifactHash: Fr;
44
+ public readonly privateFunctionsRoot: Fr;
45
+ public readonly publicBytecodeCommitment: Fr;
46
+ public readonly privateFunctions: { selector: FunctionSelector; vkHash: Fr }[];
47
+
48
+ constructor(
49
+ data: ContractClassIdPreimage & {
50
+ id: Fr;
51
+ privateFunctions: { selector: FunctionSelector; vkHash: Fr }[];
52
+ },
53
+ ) {
54
+ this.id = data.id;
55
+ this.artifactHash = data.artifactHash;
56
+ this.privateFunctionsRoot = data.privateFunctionsRoot;
57
+ this.publicBytecodeCommitment = data.publicBytecodeCommitment;
58
+ this.privateFunctions = data.privateFunctions;
59
+ }
60
+
61
+ toBuffer(): Buffer {
62
+ return serializeToBuffer(
63
+ numToUInt8(this.version),
64
+ this.id,
65
+ this.artifactHash,
66
+ this.privateFunctionsRoot,
67
+ this.publicBytecodeCommitment,
68
+ this.privateFunctions.length,
69
+ ...this.privateFunctions.map(fn => serializeToBuffer(fn.selector, fn.vkHash)),
70
+ );
71
+ }
72
+
73
+ static fromBuffer(bufferOrReader: Buffer | BufferReader): SerializableContractClassData {
74
+ const reader = BufferReader.asReader(bufferOrReader);
75
+ const version = reader.readUInt8();
76
+ if (version !== VERSION) {
77
+ throw new Error(`Unexpected contract class data version ${version}`);
78
+ }
79
+ return new SerializableContractClassData({
80
+ id: reader.readObject(Fr),
81
+ artifactHash: reader.readObject(Fr),
82
+ privateFunctionsRoot: reader.readObject(Fr),
83
+ publicBytecodeCommitment: reader.readObject(Fr),
84
+ privateFunctions: reader.readVector({
85
+ fromBuffer: (r: BufferReader) => ({
86
+ selector: r.readObject(FunctionSelector),
87
+ vkHash: r.readObject(Fr),
88
+ }),
89
+ }),
90
+ });
91
+ }
92
+ }
93
+
31
94
  /**
32
95
  * ContractStore serves as a data manager and retriever for Aztec.nr contracts.
33
96
  * It provides methods to obtain contract addresses, function ABI, bytecode, and membership witnesses
@@ -40,71 +103,79 @@ export class ContractStore {
40
103
  // TODO: Update it to be LRU cache so that it doesn't keep all the data all the time.
41
104
  #privateFunctionTrees: Map<string, PrivateFunctionsTree> = new Map();
42
105
 
43
- /** Map from contract address to contract class id */
44
- #contractClassIdMap: Map<string, Fr> = new Map();
106
+ /**
107
+ * In-memory cache of deserialized ContractArtifact objects, keyed by class id string.
108
+ * Avoids repeated LMDB reads + JSON.parse + Zod validation on every oracle call.
109
+ * Artifacts are large but immutable after registration — safe to cache for the lifetime of the store.
110
+ */
111
+ // TODO: Update it to be LRU cache so that it doesn't keep all the data all the time.
112
+ #contractArtifactCache: Map<string, ContractArtifact> = new Map();
45
113
 
114
+ #store: AztecAsyncKVStore;
46
115
  #contractArtifacts: AztecAsyncMap<string, Buffer>;
116
+ #contractClassData: AztecAsyncMap<string, Buffer>;
47
117
  #contractInstances: AztecAsyncMap<string, Buffer>;
48
118
 
49
119
  constructor(store: AztecAsyncKVStore) {
120
+ this.#store = store;
50
121
  this.#contractArtifacts = store.openMap('contract_artifacts');
122
+ this.#contractClassData = store.openMap('contract_classes');
51
123
  this.#contractInstances = store.openMap('contracts_instances');
52
124
  }
53
125
 
54
126
  // Setters
55
127
 
56
- public async addContractArtifact(id: Fr, contract: ContractArtifact): Promise<void> {
128
+ /**
129
+ * Registers a new contract artifact and its corresponding class data.
130
+ *
131
+ * IMPORTANT: This method does not verify that the provided artifact matches the class data or that the class id
132
+ * matches the artifact. It is the caller's responsibility to ensure the consistency and correctness of the provided
133
+ * data. This is done to avoid redundant, expensive contract class computations.
134
+ */
135
+ public async addContractArtifact(
136
+ contract: ContractArtifact,
137
+ contractClassWithIdAndPreimage?: ContractClassWithId & ContractClassIdPreimage,
138
+ ): Promise<Fr> {
139
+ const contractClass = contractClassWithIdAndPreimage ?? (await getContractClassFromArtifact(contract));
140
+ const key = contractClass.id.toString();
141
+
142
+ if (this.#contractArtifactCache.has(key)) {
143
+ return contractClass.id;
144
+ }
145
+
57
146
  const privateFunctions = contract.functions.filter(
58
147
  functionArtifact => functionArtifact.functionType === FunctionType.PRIVATE,
59
148
  );
60
-
61
149
  const privateSelectors = await Promise.all(
62
- privateFunctions.map(async privateFunctionArtifact =>
63
- (
64
- await FunctionSelector.fromNameAndParameters(privateFunctionArtifact.name, privateFunctionArtifact.parameters)
65
- ).toString(),
150
+ privateFunctions.map(async fn =>
151
+ (await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters)).toString(),
66
152
  ),
67
153
  );
68
-
69
154
  if (privateSelectors.length !== new Set(privateSelectors).size) {
70
155
  throw new Error('Repeated function selectors of private functions');
71
156
  }
72
157
 
73
- await this.#contractArtifacts.set(id.toString(), contractArtifactToBuffer(contract));
74
- }
158
+ this.#contractArtifactCache.set(key, contract);
75
159
 
76
- async addContractInstance(contract: ContractInstanceWithAddress): Promise<void> {
77
- this.#contractClassIdMap.set(contract.address.toString(), contract.currentContractClassId);
160
+ await this.#store.transactionAsync(async () => {
161
+ await this.#contractArtifacts.set(key, contractArtifactToBuffer(contract));
162
+ await this.#contractClassData.set(key, new SerializableContractClassData(contractClass).toBuffer());
163
+ });
78
164
 
79
- await this.#contractInstances.set(
80
- contract.address.toString(),
81
- new SerializableContractInstance(contract).toBuffer(),
82
- );
165
+ return contractClass.id;
83
166
  }
84
167
 
85
- // Private getters
86
-
87
- async #getContractClassId(contractAddress: AztecAddress): Promise<Fr | undefined> {
88
- if (!this.#contractClassIdMap.has(contractAddress.toString())) {
89
- const instance = await this.getContractInstance(contractAddress);
90
- if (!instance) {
91
- return;
92
- }
93
- this.#contractClassIdMap.set(contractAddress.toString(), instance.currentContractClassId);
94
- }
95
- return this.#contractClassIdMap.get(contractAddress.toString());
168
+ async addContractInstance(contract: ContractInstancePreimageWithAddress): Promise<void> {
169
+ await this.#store.transactionAsync(async () => {
170
+ await this.#contractInstances.set(
171
+ contract.address.toString(),
172
+ new SerializableContractInstancePreimage(contract).toBuffer(),
173
+ );
174
+ });
96
175
  }
97
176
 
98
- /**
99
- * Retrieve or create a ContractTree instance based on the provided class id.
100
- * If an existing tree with the same class id is found in the cache, it will be returned.
101
- * Otherwise, a new ContractTree instance will be created using the contract data from the database
102
- * and added to the cache before returning.
103
- *
104
- * @param classId - The class id of the contract for which the ContractTree is required.
105
- * @returns A ContractTree instance associated with the specified contract address.
106
- * @throws An Error if the contract is not found in the ContractDatabase.
107
- */
177
+ // Private getters
178
+
108
179
  async #getPrivateFunctionTreeForClassId(classId: Fr): Promise<PrivateFunctionsTree | undefined> {
109
180
  if (!this.#privateFunctionTrees.has(classId.toString())) {
110
181
  const artifact = await this.getContractArtifact(classId);
@@ -117,130 +188,136 @@ export class ContractStore {
117
188
  return this.#privateFunctionTrees.get(classId.toString())!;
118
189
  }
119
190
 
120
- async #getContractArtifactByAddress(contractAddress: AztecAddress): Promise<ContractArtifact | undefined> {
121
- const contractClassId = await this.#getContractClassId(contractAddress);
122
- return contractClassId && this.getContractArtifact(contractClassId);
123
- }
124
-
125
191
  // Public getters
126
192
 
127
- async getContractsAddresses(): Promise<AztecAddress[]> {
128
- const keys = await toArray(this.#contractInstances.keysAsync());
129
- return keys.map(AztecAddress.fromString);
193
+ getContractsAddresses(): Promise<AztecAddress[]> {
194
+ return this.#store.transactionAsync(async () => {
195
+ const keys = await toArray(this.#contractInstances.keysAsync());
196
+ return keys.map(AztecAddress.fromStringUnsafe);
197
+ });
130
198
  }
131
199
 
132
- /** Returns a contract instance for a given address. Throws if not found. */
133
- public async getContractInstance(contractAddress: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
134
- const contract = await this.#contractInstances.getAsync(contractAddress.toString());
135
- return contract && SerializableContractInstance.fromBuffer(contract).withAddress(contractAddress);
200
+ /** Returns the address preimage of a given address. */
201
+ public getContractInstance(contractAddress: AztecAddress): Promise<ContractInstancePreimageWithAddress | undefined> {
202
+ return this.#store.transactionAsync(async () => {
203
+ const contract = await this.#contractInstances.getAsync(contractAddress.toString());
204
+ return contract && SerializableContractInstancePreimage.fromBuffer(contract).withAddress(contractAddress);
205
+ });
136
206
  }
137
207
 
208
+ /** Returns the raw contract artifact for a given class id. */
138
209
  public async getContractArtifact(contractClassId: Fr): Promise<ContractArtifact | undefined> {
139
- const contract = await this.#contractArtifacts.getAsync(contractClassId.toString());
140
- // TODO(@spalladino): AztecAsyncMap lies and returns Uint8Arrays instead of Buffers, hence the extra Buffer.from.
141
- return contract && contractArtifactFromBuffer(Buffer.from(contract));
142
- }
143
-
144
- /** Returns a contract class for a given class id. Throws if not found. */
145
- public async getContractClass(contractClassId: Fr): Promise<ContractClass | undefined> {
146
- const artifact = await this.getContractArtifact(contractClassId);
147
- return artifact && getContractClassFromArtifact(artifact);
210
+ const key = contractClassId.toString();
211
+ const cached = this.#contractArtifactCache.get(key);
212
+ if (cached) {
213
+ return cached;
214
+ }
215
+ const artifact = await this.#store.transactionAsync(async () => {
216
+ const buf = await this.#contractArtifacts.getAsync(key);
217
+ return buf && contractArtifactFromBuffer(buf);
218
+ });
219
+ if (artifact) {
220
+ this.#contractArtifactCache.set(key, artifact);
221
+ }
222
+ return artifact;
148
223
  }
149
224
 
150
- public async getContract(
151
- address: AztecAddress,
152
- ): Promise<(ContractInstanceWithAddress & ContractArtifact) | undefined> {
153
- const instance = await this.getContractInstance(address);
154
- if (!instance) {
155
- return;
225
+ /** Returns a contract class for a given class id. */
226
+ public async getContractClassWithPreimage(
227
+ contractClassId: Fr,
228
+ ): Promise<(ContractClassWithId & ContractClassIdPreimage) | undefined> {
229
+ const key = contractClassId.toString();
230
+ const buf = await this.#store.transactionAsync(() => this.#contractClassData.getAsync(key));
231
+ if (!buf) {
232
+ return undefined;
156
233
  }
157
- const artifact = await this.getContractArtifact(instance.currentContractClassId);
234
+ const classData = SerializableContractClassData.fromBuffer(buf);
235
+ const artifact = await this.getContractArtifact(contractClassId);
158
236
  if (!artifact) {
159
- return;
237
+ return undefined;
160
238
  }
161
- return { ...instance, ...artifact };
239
+ const packedBytecode = artifact.functions.find(f => f.name === 'public_dispatch')?.bytecode ?? Buffer.alloc(0);
240
+ return { ...classData, packedBytecode };
162
241
  }
163
242
 
164
243
  /**
165
- * Retrieves the artifact of a specified function within a given contract.
166
- * The function is identified by its selector, which is a unique code generated from the function's signature.
167
- * Throws an error if the contract address or function selector are invalid or not found.
244
+ * Retrieves the artifact of a specified function within a given contract class.
168
245
  *
169
- * @param contractAddress - The AztecAddress representing the contract containing the function.
246
+ * @param contractClassId - The id of the contract class containing the function.
170
247
  * @param selector - The function selector.
171
- * @returns The corresponding function's artifact as an object.
248
+ * @returns The corresponding function's artifact as an object, or `undefined` if the class is not registered.
172
249
  */
173
250
  public async getFunctionArtifact(
174
- contractAddress: AztecAddress,
251
+ contractClassId: Fr,
175
252
  selector: FunctionSelector,
176
253
  ): Promise<FunctionArtifactWithContractName | undefined> {
177
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
178
- const fnArtifact = artifact && (await this.#findFunctionArtifactBySelector(artifact, selector));
179
- return fnArtifact && { ...fnArtifact, contractName: artifact.name };
254
+ const artifact = await this.getContractArtifact(contractClassId);
255
+ if (!artifact) {
256
+ return undefined;
257
+ }
258
+ const fn = assertSelectorInArtifact(artifact, await findFunctionArtifactBySelector(artifact, selector), {
259
+ contractClassId,
260
+ selector,
261
+ });
262
+ return { ...fn, contractName: artifact.name };
180
263
  }
181
264
 
265
+ /**
266
+ * Same as {@link getFunctionArtifact} but with debug metadata attached. Returns `undefined` when the class artifact
267
+ * is not registered.
268
+ */
182
269
  public async getFunctionArtifactWithDebugMetadata(
183
- contractAddress: AztecAddress,
270
+ contractClassId: Fr,
184
271
  selector: FunctionSelector,
185
- ): Promise<FunctionArtifactWithContractName> {
186
- const artifact = await this.getFunctionArtifact(contractAddress, selector);
272
+ ): Promise<FunctionArtifactWithContractName | undefined> {
273
+ const artifact = await this.getContractArtifact(contractClassId);
187
274
  if (!artifact) {
188
- throw new Error(`Function artifact not found for contract ${contractAddress} and selector ${selector}.`);
275
+ return undefined;
189
276
  }
190
- const debug = await this.getFunctionDebugMetadata(contractAddress, selector);
277
+ const fn = assertSelectorInArtifact(artifact, await findFunctionArtifactBySelector(artifact, selector), {
278
+ contractClassId,
279
+ selector,
280
+ });
191
281
  return {
192
- ...artifact,
193
- debug,
282
+ ...fn,
283
+ contractName: artifact.name,
284
+ debug: getFunctionDebugMetadata(artifact, fn),
194
285
  };
195
286
  }
196
287
 
197
- public async getPublicFunctionArtifact(
198
- contractAddress: AztecAddress,
199
- ): Promise<FunctionArtifactWithContractName | undefined> {
200
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
201
- const fnArtifact = artifact && artifact.functions.find(fn => fn.functionType === FunctionType.PUBLIC);
202
- return fnArtifact && { ...fnArtifact, contractName: artifact.name };
203
- }
204
-
205
- public async getFunctionAbi(
206
- contractAddress: AztecAddress,
207
- selector: FunctionSelector,
208
- ): Promise<FunctionAbi | undefined> {
209
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
210
- return artifact && (await this.#findFunctionAbiBySelector(artifact, selector));
288
+ public async getPublicFunctionArtifact(contractClassId: Fr): Promise<FunctionArtifactWithContractName | undefined> {
289
+ const artifact = await this.getContractArtifact(contractClassId);
290
+ const fn = artifact && artifact.functions.find(f => f.functionType === FunctionType.PUBLIC);
291
+ return fn && { ...fn, contractName: artifact.name };
211
292
  }
212
293
 
213
294
  /**
214
- * Retrieves the debug metadata of a specified function within a given contract.
215
- * The function is identified by its selector, which is a unique code generated from the function's signature.
216
- * Returns undefined if the debug metadata for the given function is not found.
217
- * Throws if the contract has not been added to the database.
295
+ * Retrieves the debug metadata of a specified function within a given contract class.
218
296
  *
219
- * @param contractAddress - The AztecAddress representing the contract containing the function.
297
+ * @param contractClassId - The id of the contract class containing the function.
220
298
  * @param selector - The function selector.
221
- * @returns The corresponding function's artifact as an object.
299
+ * @returns The corresponding function's debug metadata, or undefined.
222
300
  */
223
301
  public async getFunctionDebugMetadata(
224
- contractAddress: AztecAddress,
302
+ contractClassId: Fr,
225
303
  selector: FunctionSelector,
226
304
  ): Promise<FunctionDebugMetadata | undefined> {
227
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
228
- const fnArtifact = artifact && (await this.#findFunctionArtifactBySelector(artifact, selector));
229
- return fnArtifact && getFunctionDebugMetadata(artifact, fnArtifact);
305
+ const artifact = await this.getContractArtifact(contractClassId);
306
+ if (!artifact) {
307
+ return undefined;
308
+ }
309
+ const fn = await findFunctionArtifactBySelector(artifact, selector);
310
+ return fn && getFunctionDebugMetadata(artifact, fn);
230
311
  }
231
312
 
232
- public async getPublicFunctionDebugMetadata(
233
- contractAddress: AztecAddress,
234
- ): Promise<FunctionDebugMetadata | undefined> {
235
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
236
- const fnArtifact = artifact && artifact.functions.find(fn => fn.functionType === FunctionType.PUBLIC);
237
- return fnArtifact && getFunctionDebugMetadata(artifact, fnArtifact);
313
+ public async getPublicFunctionDebugMetadata(contractClassId: Fr): Promise<FunctionDebugMetadata | undefined> {
314
+ const artifact = await this.getContractArtifact(contractClassId);
315
+ const fn = artifact && artifact.functions.find(f => f.functionType === FunctionType.PUBLIC);
316
+ return fn && getFunctionDebugMetadata(artifact, fn);
238
317
  }
239
318
 
240
319
  /**
241
320
  * Retrieve the function membership witness for the given contract class and function selector.
242
- * The function membership witness represents a proof that the function belongs to the specified contract.
243
- * Throws an error if the contract address or function selector is unknown.
244
321
  *
245
322
  * @param contractClassId - The id of the class.
246
323
  * @param selector - The function selector.
@@ -254,86 +331,71 @@ export class ContractStore {
254
331
  return tree?.getFunctionMembershipWitness(selector);
255
332
  }
256
333
 
257
- public async getDebugContractName(contractAddress: AztecAddress) {
258
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
334
+ public async getDebugContractName(contractClassId: Fr) {
335
+ const artifact = await this.getContractArtifact(contractClassId);
259
336
  return artifact?.name;
260
337
  }
261
338
 
262
- public async getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector) {
263
- const artifact = await this.#getContractArtifactByAddress(contractAddress);
264
- const fnArtifact = artifact && (await this.#findFunctionAbiBySelector(artifact, selector));
265
- return `${artifact?.name ?? contractAddress}:${fnArtifact?.name ?? selector}`;
266
- }
267
-
268
- async #findFunctionArtifactBySelector(
269
- artifact: ContractArtifact,
270
- selector: FunctionSelector,
271
- ): Promise<FunctionArtifact | undefined> {
272
- const functions = artifact.functions;
273
- for (let i = 0; i < functions.length; i++) {
274
- const fn = functions[i];
275
- const fnSelector = await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters);
276
- if (fnSelector.equals(selector)) {
277
- return fn;
278
- }
279
- }
280
- }
281
-
282
- async #findFunctionAbiBySelector(
283
- artifact: ContractArtifact,
284
- selector: FunctionSelector,
285
- ): Promise<FunctionAbi | undefined> {
286
- const functions = [...artifact.functions, ...(artifact.nonDispatchPublicFunctions ?? [])];
287
- for (let i = 0; i < functions.length; i++) {
288
- const fn = functions[i];
289
- const fnSelector = await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters);
290
- if (fnSelector.equals(selector)) {
291
- return fn;
292
- }
293
- }
339
+ public async getDebugFunctionName(contractClassId: Fr, selector: FunctionSelector) {
340
+ const artifact = await this.getContractArtifact(contractClassId);
341
+ const fn = artifact && (await findFunctionAbiBySelector(artifact, selector));
342
+ return `${artifact?.name ?? contractClassId}:${fn?.name ?? selector}`;
294
343
  }
295
344
 
296
- public async getFunctionCall(functionName: string, args: any[], to: AztecAddress): Promise<FunctionCall> {
297
- const contract = await this.getContract(to);
298
- if (!contract) {
345
+ public async getFunctionCall(
346
+ functionName: string,
347
+ args: any[],
348
+ to: AztecAddress,
349
+ contractClassId: Fr,
350
+ ): Promise<FunctionCall> {
351
+ const artifact = await this.getContractArtifact(contractClassId);
352
+ if (!artifact) {
299
353
  throw new Error(
300
- `Unknown contract ${to}: add it to PXE by calling server.addContracts(...).\nSee docs for context: https://docs.aztec.network/developers/resources/debugging/aztecnr-errors#unknown-contract-0x0-add-it-to-pxe-by-calling-serveraddcontracts`,
354
+ `No artifact registered for contract class ${contractClassId} (contract ${to}): register it by calling ` +
355
+ `wallet.registerContract(...).\nSee docs for context: https://docs.aztec.network/errors/14`,
301
356
  );
302
357
  }
303
358
 
304
- const functionDao = contract.functions.find(f => f.name === functionName);
359
+ const functionDao = artifact.functions.find(f => f.name === functionName);
305
360
  if (!functionDao) {
306
- throw new Error(`Unknown function ${functionName} in contract ${contract.name}.`);
361
+ throw new Error(`Unknown function ${functionName} in contract ${artifact.name}.`);
307
362
  }
308
363
 
309
- return {
364
+ const selector = await FunctionSelector.fromNameAndParameters(functionDao.name, functionDao.parameters);
365
+
366
+ return FunctionCall.from({
310
367
  name: functionDao.name,
311
- args: encodeArguments(functionDao, args),
312
- selector: await FunctionSelector.fromNameAndParameters(functionDao.name, functionDao.parameters),
313
- type: functionDao.functionType,
314
368
  to,
369
+ selector,
370
+ type: functionDao.functionType,
315
371
  hideMsgSender: false,
316
372
  isStatic: functionDao.isStatic,
373
+ args: encodeArguments(functionDao, args),
317
374
  returnTypes: functionDao.returnTypes,
318
- };
375
+ });
319
376
  }
377
+ }
320
378
 
321
- // Synchronize target contract data
322
- public async syncPrivateState(
323
- contractAddress: AztecAddress,
324
- functionToInvokeAfterSync: FunctionSelector | null,
325
- utilityExecutor: (privateSyncCall: FunctionCall) => Promise<any>,
326
- ) {
327
- // Protocol contracts don't have private state to sync
328
- if (!isProtocolContract(contractAddress)) {
329
- const syncPrivateStateFunctionCall = await this.getFunctionCall('sync_private_state', [], contractAddress);
330
- if (functionToInvokeAfterSync && functionToInvokeAfterSync.equals(syncPrivateStateFunctionCall.selector)) {
331
- throw new Error(
332
- 'Forbidden `sync_private_state` invocation. `sync_private_state` can only be invoked by PXE, manual execution can lead to inconsistencies.',
333
- );
334
- }
335
-
336
- return utilityExecutor(syncPrivateStateFunctionCall);
337
- }
379
+ /**
380
+ * Narrows the result of a selector lookup against a registered artifact. A missing class artifact is reported as
381
+ * `undefined` by the callers (an absence they can handle), but a selector that is absent from an artifact we *do* have
382
+ * is exceptional and throws rather than returning undefined. We cannot tell from here why the selector is missing: it
383
+ * may be that no such function exists in the contract (a wrong selector), or that the registered artifact does not
384
+ * correspond to the resolved class id (registration performs no validation, so a mismatched artifact is possible). The
385
+ * error names both possibilities.
386
+ */
387
+ function assertSelectorInArtifact<T>(
388
+ artifact: ContractArtifact,
389
+ fn: T | undefined,
390
+ context: { contractClassId: Fr; selector: FunctionSelector },
391
+ ): T {
392
+ if (!fn) {
393
+ throw new Error(
394
+ `Function with selector ${context.selector} not found in the registered artifact for contract class ` +
395
+ `${context.contractClassId} (${artifact.name}). Either no function with this selector exists in the ` +
396
+ `contract, or the registered artifact does not match the class id (re-register it via ` +
397
+ `wallet.registerContract(...)).`,
398
+ );
338
399
  }
400
+ return fn;
339
401
  }
@@ -0,0 +1,69 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+
4
+ import { assertAllowedScope } from '../allowed_scopes.js';
5
+ import type { FactStore } from './fact_store.js';
6
+ import type { FactCollectionKey, FactCollectionTypeKey, OriginBlock } from './fact_store_keys.js';
7
+ import {
8
+ type FactCollectionWithOriginState,
9
+ type FactWithOriginState,
10
+ type TipBlockNumbers,
11
+ toFactWithOriginState,
12
+ } from './origin_state.js';
13
+ import type { Fact } from './stored_fact.js';
14
+
15
+ /**
16
+ * Wraps a {@link FactStore} with scope-based access control.
17
+ *
18
+ * Each method asserts scope validity before delegating to FactStore, gating which accounts a contract may record facts
19
+ * under or read facts from.
20
+ */
21
+ export class FactService {
22
+ constructor(
23
+ private readonly factStore: FactStore,
24
+ private readonly allowedScopes: AztecAddress[],
25
+ ) {}
26
+
27
+ recordFact(
28
+ factCollectionKey: FactCollectionKey,
29
+ factTypeId: Fr,
30
+ payload: Fr[],
31
+ originBlock: OriginBlock | undefined,
32
+ jobId: string,
33
+ ): Promise<void> {
34
+ assertAllowedScope(factCollectionKey.scope, this.allowedScopes);
35
+ return this.factStore.recordFact(factCollectionKey, factTypeId, payload, originBlock, jobId);
36
+ }
37
+
38
+ deleteFactCollection(factCollectionKey: FactCollectionKey, jobId: string): Promise<void> {
39
+ assertAllowedScope(factCollectionKey.scope, this.allowedScopes);
40
+ return this.factStore.deleteFactCollection(factCollectionKey, jobId);
41
+ }
42
+
43
+ async getFactCollection(
44
+ factCollectionKey: FactCollectionKey,
45
+ tips: TipBlockNumbers,
46
+ jobId: string,
47
+ ): Promise<FactCollectionWithOriginState | undefined> {
48
+ assertAllowedScope(factCollectionKey.scope, this.allowedScopes);
49
+ const collection = await this.factStore.getFactCollection(factCollectionKey, jobId);
50
+ if (!collection) {
51
+ return undefined;
52
+ }
53
+ return { key: collection.key, facts: this.#annotate(collection.facts, tips) };
54
+ }
55
+
56
+ async getFactCollectionsByType(
57
+ factCollectionTypeKey: FactCollectionTypeKey,
58
+ tips: TipBlockNumbers,
59
+ jobId: string,
60
+ ): Promise<FactCollectionWithOriginState[]> {
61
+ assertAllowedScope(factCollectionTypeKey.scope, this.allowedScopes);
62
+ const collections = await this.factStore.getFactCollectionsByType(factCollectionTypeKey, jobId);
63
+ return collections.map(collection => ({ key: collection.key, facts: this.#annotate(collection.facts, tips) }));
64
+ }
65
+
66
+ #annotate(facts: Fact[], tips: TipBlockNumbers): FactWithOriginState[] {
67
+ return facts.map(fact => toFactWithOriginState(fact, tips));
68
+ }
69
+ }