@aztec/pxe 0.0.1-commit.c31f2472 → 0.0.1-commit.c52d6e7

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