@aztec/pxe 0.0.1-commit.9ef841308 → 0.0.1-commit.a4600f49

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 (485) hide show
  1. package/dest/bin/check_oracle_version.js +45 -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 +51 -0
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  7. package/dest/bin/oracle_version_helpers.js +254 -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 +23 -15
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +78 -28
  14. package/dest/config/index.d.ts +8 -1
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +13 -14
  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_function_simulator/anchored_contract_data.d.ts +36 -0
  28. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  29. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  30. package/dest/contract_function_simulator/contract_function_simulator.d.ts +27 -21
  31. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/contract_function_simulator.js +82 -39
  33. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  34. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  35. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  36. package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
  37. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  39. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -9
  40. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  41. package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
  42. package/dest/contract_function_simulator/index.d.ts +26 -6
  43. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/index.js +12 -4
  45. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  46. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  47. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  48. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  49. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  50. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  51. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  52. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  53. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  54. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  55. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  56. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  57. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -3
  58. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  59. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +5 -4
  60. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  61. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  62. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  63. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  64. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  65. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  66. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +19 -10
  67. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  68. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +12 -24
  69. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +11 -9
  70. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  71. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -61
  72. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  73. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  74. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  75. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +4 -3
  76. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  77. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +6 -5
  78. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  79. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  80. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  81. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  82. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  83. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  84. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  85. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  86. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  87. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  88. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  89. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  90. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  91. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  92. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +43 -0
  93. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +21 -0
  94. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  95. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +50 -0
  96. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +14 -0
  97. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  98. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  99. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  100. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  101. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  102. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  103. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  104. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  105. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  106. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  107. package/dest/contract_function_simulator/oracle/index.js +1 -1
  108. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -103
  109. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  110. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  111. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  112. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  113. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +74 -0
  114. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  115. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  116. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  117. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  118. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  119. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  120. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +136 -0
  121. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  122. package/dest/contract_function_simulator/oracle/oracle_registry.js +989 -0
  123. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +222 -0
  124. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  125. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
  126. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  127. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  128. package/dest/contract_function_simulator/oracle/private_execution.js +2 -3
  129. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +47 -37
  130. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  131. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +186 -55
  132. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +136 -65
  133. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  134. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +448 -170
  135. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  136. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  137. package/dest/contract_function_simulator/pick_notes.js +20 -3
  138. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  139. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  140. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  141. package/dest/debug/pxe_debug_utils.d.ts +4 -9
  142. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  143. package/dest/debug/pxe_debug_utils.js +0 -6
  144. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  145. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  146. package/dest/entrypoints/client/bundle/index.js +0 -1
  147. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  148. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  149. package/dest/entrypoints/client/bundle/utils.js +20 -7
  150. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  151. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  152. package/dest/entrypoints/client/lazy/index.js +0 -1
  153. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  154. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  155. package/dest/entrypoints/client/lazy/utils.js +20 -7
  156. package/dest/entrypoints/pxe_creation_options.d.ts +16 -2
  157. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  158. package/dest/entrypoints/pxe_creation_options.js +3 -1
  159. package/dest/entrypoints/server/index.d.ts +6 -4
  160. package/dest/entrypoints/server/index.d.ts.map +1 -1
  161. package/dest/entrypoints/server/index.js +4 -3
  162. package/dest/entrypoints/server/utils.d.ts +4 -3
  163. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  164. package/dest/entrypoints/server/utils.js +20 -6
  165. package/dest/error_enriching.d.ts +5 -3
  166. package/dest/error_enriching.d.ts.map +1 -1
  167. package/dest/error_enriching.js +13 -11
  168. package/dest/events/event_service.d.ts +13 -5
  169. package/dest/events/event_service.d.ts.map +1 -1
  170. package/dest/events/event_service.js +30 -9
  171. package/dest/events/private_event_filter_validator.d.ts +3 -2
  172. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  173. package/dest/events/private_event_filter_validator.js +15 -0
  174. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  175. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  176. package/dest/hooks/authorize_utility_call.js +4 -0
  177. package/dest/hooks/execution_hooks.d.ts +62 -0
  178. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  179. package/dest/hooks/execution_hooks.js +9 -0
  180. package/dest/hooks/index.d.ts +5 -0
  181. package/dest/hooks/index.d.ts.map +1 -0
  182. package/dest/hooks/index.js +1 -0
  183. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  184. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  185. package/dest/hooks/resolve_custom_request.js +3 -0
  186. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +48 -0
  187. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  188. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  189. package/dest/logs/log_service.d.ts +13 -11
  190. package/dest/logs/log_service.d.ts.map +1 -1
  191. package/dest/logs/log_service.js +181 -72
  192. package/dest/messages/tx_resolver_service.d.ts +17 -0
  193. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  194. package/dest/messages/tx_resolver_service.js +55 -0
  195. package/dest/notes/note_service.d.ts +27 -6
  196. package/dest/notes/note_service.d.ts.map +1 -1
  197. package/dest/notes/note_service.js +80 -65
  198. package/dest/notes_filter.d.ts +2 -3
  199. package/dest/notes_filter.d.ts.map +1 -1
  200. package/dest/oracle_version.d.ts +4 -3
  201. package/dest/oracle_version.d.ts.map +1 -1
  202. package/dest/oracle_version.js +20 -10
  203. package/dest/private_kernel/batch_planner.d.ts +47 -0
  204. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  205. package/dest/private_kernel/batch_planner.js +104 -0
  206. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
  207. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  208. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +7 -3
  209. package/dest/private_kernel/hints/test_utils.d.ts +1 -1
  210. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
  211. package/dest/private_kernel/hints/test_utils.js +3 -4
  212. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  213. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  214. package/dest/private_kernel/private_kernel_execution_prover.js +203 -89
  215. package/dest/private_kernel/private_kernel_oracle.d.ts +12 -10
  216. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  217. package/dest/private_kernel/private_kernel_oracle.js +40 -26
  218. package/dest/pxe.d.ts +167 -55
  219. package/dest/pxe.d.ts.map +1 -1
  220. package/dest/pxe.js +334 -206
  221. package/dest/storage/allowed_scopes.d.ts +6 -0
  222. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  223. package/dest/storage/allowed_scopes.js +7 -0
  224. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
  225. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  226. package/dest/storage/anchor_block_store/anchor_block_store.js +9 -7
  227. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  228. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  229. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  230. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  231. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  232. package/dest/storage/backwards_compatibility_tests/schema_tests.js +647 -0
  233. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  234. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  235. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  236. package/dest/storage/capsule_store/capsule_service.d.ts +2 -3
  237. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -1
  238. package/dest/storage/capsule_store/capsule_service.js +6 -9
  239. package/dest/storage/capsule_store/capsule_store.d.ts +1 -1
  240. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  241. package/dest/storage/capsule_store/capsule_store.js +8 -5
  242. package/dest/storage/contract_store/contract_store.d.ts +27 -24
  243. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  244. package/dest/storage/contract_store/contract_store.js +70 -98
  245. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  246. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  247. package/dest/storage/fact_store/fact_service.js +45 -0
  248. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  249. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  250. package/dest/storage/fact_store/fact_store.js +408 -0
  251. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  252. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  253. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  254. package/dest/storage/fact_store/index.d.ts +6 -0
  255. package/dest/storage/fact_store/index.d.ts.map +1 -0
  256. package/dest/storage/fact_store/index.js +4 -0
  257. package/dest/storage/fact_store/origin_state.d.ts +57 -0
  258. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  259. package/dest/storage/fact_store/origin_state.js +53 -0
  260. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  261. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  262. package/dest/storage/fact_store/stored_fact.js +64 -0
  263. package/dest/storage/index.d.ts +3 -2
  264. package/dest/storage/index.d.ts.map +1 -1
  265. package/dest/storage/index.js +2 -1
  266. package/dest/storage/metadata.d.ts +2 -2
  267. package/dest/storage/metadata.d.ts.map +1 -1
  268. package/dest/storage/metadata.js +1 -1
  269. package/dest/storage/note_store/note_store.d.ts +42 -33
  270. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  271. package/dest/storage/note_store/note_store.js +199 -170
  272. package/dest/storage/note_store/stored_note.d.ts +3 -8
  273. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  274. package/dest/storage/note_store/stored_note.js +4 -20
  275. package/dest/storage/open_pxe_stores.d.ts +35 -0
  276. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  277. package/dest/storage/open_pxe_stores.js +29 -0
  278. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  279. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  280. package/dest/storage/private_event_store/private_event_store.js +43 -43
  281. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  282. package/dest/storage/tagging_store/index.d.ts +2 -2
  283. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  284. package/dest/storage/tagging_store/index.js +1 -1
  285. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  286. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  287. package/dest/storage/tagging_store/sender_tagging_store.d.ts +5 -5
  288. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  289. package/dest/storage/tagging_store/sender_tagging_store.js +3 -3
  290. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  291. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  292. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  293. package/dest/tagging/constants.d.ts +2 -2
  294. package/dest/tagging/constants.d.ts.map +1 -1
  295. package/dest/tagging/constants.js +5 -8
  296. package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
  297. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  298. package/dest/tagging/get_all_logs_by_tags.js +36 -37
  299. package/dest/tagging/index.d.ts +5 -4
  300. package/dest/tagging/index.d.ts.map +1 -1
  301. package/dest/tagging/index.js +4 -3
  302. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  303. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  304. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  305. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +69 -0
  306. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  307. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +203 -0
  308. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  309. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  310. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  311. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  312. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  313. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -5
  314. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  315. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +26 -14
  316. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -6
  317. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  318. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +21 -0
  319. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
  320. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  321. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +2 -2
  322. package/package.json +20 -17
  323. package/src/bin/check_oracle_version.ts +51 -133
  324. package/src/bin/index.ts +5 -0
  325. package/src/bin/oracle_version_helpers.ts +311 -0
  326. package/src/block_synchronizer/block_stream_source.ts +42 -0
  327. package/src/block_synchronizer/block_synchronizer.ts +96 -39
  328. package/src/config/index.ts +15 -8
  329. package/src/config/package_info.ts +1 -1
  330. package/src/contract/contract_class_service.ts +83 -0
  331. package/src/contract/contract_sync_service.ts +176 -0
  332. package/src/contract/helpers.ts +35 -0
  333. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  334. package/src/contract_function_simulator/contract_function_simulator.ts +136 -55
  335. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  336. package/src/contract_function_simulator/execution_note_cache.ts +8 -29
  337. package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
  338. package/src/contract_function_simulator/index.ts +69 -5
  339. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  340. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  341. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  342. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  343. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -4
  344. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  345. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  346. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -20
  347. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +14 -61
  348. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  349. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -5
  350. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  351. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  352. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  353. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  354. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +58 -0
  355. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +53 -0
  356. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +15 -0
  357. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  358. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  359. package/src/contract_function_simulator/oracle/index.ts +1 -15
  360. package/src/contract_function_simulator/oracle/interfaces.ts +11 -185
  361. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +120 -0
  362. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  363. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  364. package/src/contract_function_simulator/oracle/oracle_registry.ts +689 -0
  365. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +964 -0
  366. package/src/contract_function_simulator/oracle/private_execution.ts +2 -3
  367. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +233 -79
  368. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +681 -320
  369. package/src/contract_function_simulator/pick_notes.ts +22 -3
  370. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  371. package/src/debug/pxe_debug_utils.ts +4 -12
  372. package/src/entrypoints/client/bundle/index.ts +0 -1
  373. package/src/entrypoints/client/bundle/utils.ts +19 -7
  374. package/src/entrypoints/client/lazy/index.ts +0 -1
  375. package/src/entrypoints/client/lazy/utils.ts +19 -7
  376. package/src/entrypoints/pxe_creation_options.ts +21 -1
  377. package/src/entrypoints/server/index.ts +6 -3
  378. package/src/entrypoints/server/utils.ts +24 -7
  379. package/src/error_enriching.ts +27 -11
  380. package/src/events/event_service.ts +54 -19
  381. package/src/events/private_event_filter_validator.ts +21 -1
  382. package/src/hooks/authorize_utility_call.ts +44 -0
  383. package/src/hooks/execution_hooks.ts +68 -0
  384. package/src/hooks/index.ts +12 -0
  385. package/src/hooks/resolve_custom_request.ts +24 -0
  386. package/src/hooks/resolve_tagging_secret_strategy.ts +57 -0
  387. package/src/logs/log_service.ts +212 -139
  388. package/src/messages/tx_resolver_service.ts +69 -0
  389. package/src/notes/note_service.ts +117 -94
  390. package/src/notes_filter.ts +1 -3
  391. package/src/oracle_version.ts +20 -10
  392. package/src/private_kernel/batch_planner.ts +168 -0
  393. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +12 -2
  394. package/src/private_kernel/hints/test_utils.ts +3 -10
  395. package/src/private_kernel/private_kernel_execution_prover.ts +335 -121
  396. package/src/private_kernel/private_kernel_oracle.ts +58 -29
  397. package/src/pxe.ts +530 -236
  398. package/src/storage/allowed_scopes.ts +14 -0
  399. package/src/storage/anchor_block_store/anchor_block_store.ts +9 -7
  400. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  401. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  402. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  403. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  404. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  405. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  406. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  407. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  408. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  409. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  410. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  411. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  412. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  413. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  414. package/src/storage/backwards_compatibility_tests/schema_tests.ts +774 -0
  415. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  416. package/src/storage/capsule_store/capsule_service.ts +8 -14
  417. package/src/storage/capsule_store/capsule_store.ts +15 -5
  418. package/src/storage/contract_store/contract_store.ts +96 -124
  419. package/src/storage/fact_store/fact_service.ts +69 -0
  420. package/src/storage/fact_store/fact_store.ts +487 -0
  421. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  422. package/src/storage/fact_store/index.ts +14 -0
  423. package/src/storage/fact_store/origin_state.ts +75 -0
  424. package/src/storage/fact_store/stored_fact.ts +80 -0
  425. package/src/storage/index.ts +2 -1
  426. package/src/storage/metadata.ts +1 -1
  427. package/src/storage/note_store/note_store.ts +228 -192
  428. package/src/storage/note_store/stored_note.ts +5 -27
  429. package/src/storage/open_pxe_stores.ts +52 -0
  430. package/src/storage/private_event_store/private_event_store.ts +52 -54
  431. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  432. package/src/storage/tagging_store/index.ts +1 -1
  433. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
  434. package/src/storage/tagging_store/sender_tagging_store.ts +6 -6
  435. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  436. package/src/tagging/constants.ts +6 -8
  437. package/src/tagging/get_all_logs_by_tags.ts +78 -50
  438. package/src/tagging/index.ts +4 -3
  439. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  440. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +301 -0
  441. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  442. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  443. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +41 -19
  444. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +23 -8
  445. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +4 -5
  446. package/dest/access_scopes.d.ts +0 -9
  447. package/dest/access_scopes.d.ts.map +0 -1
  448. package/dest/access_scopes.js +0 -6
  449. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
  450. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
  451. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -38
  452. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -80
  453. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  454. package/dest/contract_function_simulator/oracle/oracle.js +0 -458
  455. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  456. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  457. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -80
  458. package/dest/contract_sync/contract_sync_service.d.ts +0 -46
  459. package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
  460. package/dest/contract_sync/contract_sync_service.js +0 -124
  461. package/dest/contract_sync/helpers.d.ts +0 -29
  462. package/dest/contract_sync/helpers.d.ts.map +0 -1
  463. package/dest/contract_sync/helpers.js +0 -60
  464. package/dest/messages/message_context_service.d.ts +0 -17
  465. package/dest/messages/message_context_service.d.ts.map +0 -1
  466. package/dest/messages/message_context_service.js +0 -36
  467. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  468. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  469. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  470. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  471. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  472. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  473. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  474. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  475. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
  476. package/src/access_scopes.ts +0 -9
  477. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -98
  478. package/src/contract_function_simulator/oracle/oracle.ts +0 -721
  479. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
  480. package/src/contract_sync/contract_sync_service.ts +0 -192
  481. package/src/contract_sync/helpers.ts +0 -99
  482. package/src/messages/message_context_service.ts +0 -44
  483. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
  484. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -140
  485. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
@@ -0,0 +1,73 @@
1
+ import type {
2
+ AztecAsyncArray,
3
+ AztecAsyncCounter,
4
+ AztecAsyncKVStore,
5
+ AztecAsyncMap,
6
+ AztecAsyncMultiMap,
7
+ AztecAsyncSet,
8
+ AztecAsyncSingleton,
9
+ Key,
10
+ } from '@aztec/kv-store';
11
+
12
+ type Value = NonNullable<any>;
13
+
14
+ /** The kind of named sub-store opened on an `AztecAsyncKVStore`. */
15
+ export type StoreKind = 'map' | 'multimap' | 'array' | 'singleton' | 'set' | 'counter';
16
+
17
+ /** A single recorded `open*()` call against a spied store. */
18
+ export interface OpenedStoreEntry {
19
+ name: string;
20
+ kind: StoreKind;
21
+ }
22
+
23
+ /** A spied `AztecAsyncKVStore` together with a function that returns the sorted log of `open*()` calls. */
24
+ export interface StoreSpy {
25
+ store: AztecAsyncKVStore;
26
+ getOpenedStores: () => OpenedStoreEntry[];
27
+ }
28
+
29
+ /**
30
+ * Wraps an `AztecAsyncKVStore` so every `openMap`/`openMultiMap`/`openArray`/`openSingleton`/`openSet`/`openCounter`
31
+ * call is recorded before being delegated to the inner store.
32
+ */
33
+ export function createStoreSpy(inner: AztecAsyncKVStore): StoreSpy {
34
+ const entries: OpenedStoreEntry[] = [];
35
+
36
+ const store: AztecAsyncKVStore = {
37
+ openMap<K extends Key, V extends Value>(name: string): AztecAsyncMap<K, V> {
38
+ entries.push({ name, kind: 'map' });
39
+ return inner.openMap<K, V>(name);
40
+ },
41
+ openMultiMap<K extends Key, V extends Value>(name: string): AztecAsyncMultiMap<K, V> {
42
+ entries.push({ name, kind: 'multimap' });
43
+ return inner.openMultiMap<K, V>(name);
44
+ },
45
+ openArray<T extends Value>(name: string): AztecAsyncArray<T> {
46
+ entries.push({ name, kind: 'array' });
47
+ return inner.openArray<T>(name);
48
+ },
49
+ openSingleton<T extends Value>(name: string): AztecAsyncSingleton<T> {
50
+ entries.push({ name, kind: 'singleton' });
51
+ return inner.openSingleton<T>(name);
52
+ },
53
+ openSet<K extends Key>(name: string): AztecAsyncSet<K> {
54
+ entries.push({ name, kind: 'set' });
55
+ return inner.openSet<K>(name);
56
+ },
57
+ openCounter<K extends Key>(name: string): AztecAsyncCounter<K> {
58
+ entries.push({ name, kind: 'counter' });
59
+ return inner.openCounter<K>(name);
60
+ },
61
+ transactionAsync: callback => inner.transactionAsync(callback),
62
+ clear: () => inner.clear(),
63
+ delete: () => inner.delete(),
64
+ estimateSize: () => inner.estimateSize(),
65
+ close: () => inner.close(),
66
+ backupTo: (dstPath, compact) => inner.backupTo(dstPath, compact),
67
+ };
68
+
69
+ const getOpenedStores = () =>
70
+ [...entries].sort((a, b) => (a.name === b.name ? a.kind.localeCompare(b.kind) : a.name.localeCompare(b.name)));
71
+
72
+ return { store, getOpenedStores };
73
+ }
@@ -2,7 +2,7 @@ import type { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
3
  import type { Capsule } from '@aztec/stdlib/tx';
4
4
 
5
- import type { AccessScopes } from '../../access_scopes.js';
5
+ import { assertAllowedScope } from '../allowed_scopes.js';
6
6
  import type { CapsuleStore } from './capsule_store.js';
7
7
 
8
8
  /**
@@ -10,10 +10,15 @@ import type { CapsuleStore } from './capsule_store.js';
10
10
  * allowed scopes list before delegating to the underlying store.
11
11
  */
12
12
  export class CapsuleService {
13
+ private readonly allowedScopes: AztecAddress[];
14
+
13
15
  constructor(
14
16
  private readonly capsuleStore: CapsuleStore,
15
- private readonly allowedScopes: AccessScopes,
16
- ) {}
17
+ allowedScopes: AztecAddress[],
18
+ ) {
19
+ // The zero address denotes the global capsule scope, which is always permitted.
20
+ this.allowedScopes = [...allowedScopes, AztecAddress.ZERO];
21
+ }
17
22
 
18
23
  setCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[], jobId: string, scope: AztecAddress) {
19
24
  assertAllowedScope(scope, this.allowedScopes);
@@ -78,14 +83,3 @@ export class CapsuleService {
78
83
  return this.capsuleStore.setCapsuleArray(contractAddress, baseSlot, content, jobId, scope);
79
84
  }
80
85
  }
81
-
82
- function assertAllowedScope(scope: AztecAddress, allowedScopes: AccessScopes) {
83
- if (allowedScopes === 'ALL_SCOPES' || scope.equals(AztecAddress.ZERO)) {
84
- return;
85
- }
86
- if (!allowedScopes.some(allowed => allowed.equals(scope))) {
87
- throw new Error(
88
- `Scope ${scope.toString()} is not in the allowed scopes list: [${allowedScopes.map(s => s.toString()).join(', ')}]. See https://docs.aztec.network/errors/10`,
89
- );
90
- }
91
- }
@@ -148,7 +148,17 @@ export class CapsuleStore implements StagedStore {
148
148
  * @param slot - The slot in the database to read.
149
149
  * @returns The stored data or `null` if no data is stored under the slot.
150
150
  */
151
- async getCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string, scope: AztecAddress): Promise<Fr[] | null> {
151
+ getCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string, scope: AztecAddress): Promise<Fr[] | null> {
152
+ return this.#store.transactionAsync(() => this.#getCapsuleInternal(contractAddress, slot, jobId, scope));
153
+ }
154
+
155
+ /** Same as getCapsule but without its own transaction, for use inside an existing transactionAsync. */
156
+ async #getCapsuleInternal(
157
+ contractAddress: AztecAddress,
158
+ slot: Fr,
159
+ jobId: string,
160
+ scope: AztecAddress,
161
+ ): Promise<Fr[] | null> {
152
162
  const dataBuffer = await this.#getFromStage(jobId, dbSlotToKey(contractAddress, slot, scope));
153
163
  if (!dataBuffer) {
154
164
  this.logger.trace(`Data not found for contract ${contractAddress.toString()} and slot ${slot.toString()}`);
@@ -240,7 +250,7 @@ export class CapsuleStore implements StagedStore {
240
250
  // and not using a transaction here would heavily impact performance.
241
251
  return this.#store.transactionAsync(async () => {
242
252
  // Load current length, defaulting to 0 if not found
243
- const lengthData = await this.getCapsule(contractAddress, baseSlot, jobId, scope);
253
+ const lengthData = await this.#getCapsuleInternal(contractAddress, baseSlot, jobId, scope);
244
254
  const currentLength = lengthData ? lengthData[0].toNumber() : 0;
245
255
 
246
256
  // Store each capsule at consecutive slots after baseSlot + 1 + currentLength
@@ -263,14 +273,14 @@ export class CapsuleStore implements StagedStore {
263
273
  // of jobs: different calls running concurrently on the same contract may cause trouble.
264
274
  return this.#store.transactionAsync(async () => {
265
275
  // Load length, defaulting to 0 if not found
266
- const maybeLength = await this.getCapsule(contractAddress, baseSlot, jobId, scope);
276
+ const maybeLength = await this.#getCapsuleInternal(contractAddress, baseSlot, jobId, scope);
267
277
  const length = maybeLength ? maybeLength[0].toBigInt() : 0n;
268
278
 
269
279
  const values: Fr[][] = [];
270
280
 
271
281
  // Read each capsule at consecutive slots after baseSlot
272
282
  for (let i = 0; i < length; i++) {
273
- const currentValue = await this.getCapsule(contractAddress, arraySlot(baseSlot, i), jobId, scope);
283
+ const currentValue = await this.#getCapsuleInternal(contractAddress, arraySlot(baseSlot, i), jobId, scope);
274
284
  if (currentValue == undefined) {
275
285
  throw new Error(
276
286
  `Expected non-empty value at capsule array in base slot ${baseSlot} at index ${i} for contract ${contractAddress}`,
@@ -295,7 +305,7 @@ export class CapsuleStore implements StagedStore {
295
305
  // of jobs: different calls running concurrently on the same contract may cause trouble.
296
306
  return this.#store.transactionAsync(async () => {
297
307
  // Load current length, defaulting to 0 if not found
298
- const maybeLength = await this.getCapsule(contractAddress, baseSlot, jobId, scope);
308
+ const maybeLength = await this.#getCapsuleInternal(contractAddress, baseSlot, jobId, scope);
299
309
  const originalLength = maybeLength ? maybeLength[0].toNumber() : 0;
300
310
 
301
311
  // Set the new length
@@ -6,8 +6,6 @@ import type { MembershipWitness } from '@aztec/foundation/trees';
6
6
  import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
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,14 +14,16 @@ 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
23
  type ContractClassIdPreimage,
24
24
  type ContractClassWithId,
25
- type ContractInstanceWithAddress,
26
- SerializableContractInstance,
25
+ type ContractInstancePreimageWithAddress,
26
+ SerializableContractInstancePreimage,
27
27
  getContractClassFromArtifact,
28
28
  } from '@aztec/stdlib/contract';
29
29
 
@@ -111,9 +111,6 @@ export class ContractStore {
111
111
  // TODO: Update it to be LRU cache so that it doesn't keep all the data all the time.
112
112
  #contractArtifactCache: Map<string, ContractArtifact> = new Map();
113
113
 
114
- /** Map from contract address to contract class id (avoids KV round-trip on hot path). */
115
- #contractClassIdMap: Map<string, Fr> = new Map();
116
-
117
114
  #store: AztecAsyncKVStore;
118
115
  #contractArtifacts: AztecAsyncMap<string, Buffer>;
119
116
  #contractClassData: AztecAsyncMap<string, Buffer>;
@@ -130,9 +127,10 @@ export class ContractStore {
130
127
 
131
128
  /**
132
129
  * Registers a new contract artifact and its corresponding class data.
133
- * IMPORTANT: This method does not verify that the provided artifact matches the class data or that the class id matches the artifact.
134
- * It is the caller's responsibility to ensure the consistency and correctness of the provided data.
135
- * This is done to avoid redundant, expensive contract class computations
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.
136
134
  */
137
135
  public async addContractArtifact(
138
136
  contract: ContractArtifact,
@@ -167,29 +165,17 @@ export class ContractStore {
167
165
  return contractClass.id;
168
166
  }
169
167
 
170
- async addContractInstance(contract: ContractInstanceWithAddress): Promise<void> {
171
- this.#contractClassIdMap.set(contract.address.toString(), contract.currentContractClassId);
172
-
173
- await this.#contractInstances.set(
174
- contract.address.toString(),
175
- new SerializableContractInstance(contract).toBuffer(),
176
- );
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
+ });
177
175
  }
178
176
 
179
177
  // Private getters
180
178
 
181
- async #getContractClassId(contractAddress: AztecAddress): Promise<Fr | undefined> {
182
- const key = contractAddress.toString();
183
- if (!this.#contractClassIdMap.has(key)) {
184
- const instance = await this.getContractInstance(contractAddress);
185
- if (!instance) {
186
- return;
187
- }
188
- this.#contractClassIdMap.set(key, instance.currentContractClassId);
189
- }
190
- return this.#contractClassIdMap.get(key);
191
- }
192
-
193
179
  async #getPrivateFunctionTreeForClassId(classId: Fr): Promise<PrivateFunctionsTree | undefined> {
194
180
  if (!this.#privateFunctionTrees.has(classId.toString())) {
195
181
  const artifact = await this.getContractArtifact(classId);
@@ -202,25 +188,20 @@ export class ContractStore {
202
188
  return this.#privateFunctionTrees.get(classId.toString())!;
203
189
  }
204
190
 
205
- async #getArtifactByAddress(contractAddress: AztecAddress): Promise<ContractArtifact | undefined> {
206
- const classId = await this.#getContractClassId(contractAddress);
207
- return classId && this.getContractArtifact(classId);
208
- }
209
-
210
191
  // Public getters
211
192
 
212
193
  getContractsAddresses(): Promise<AztecAddress[]> {
213
194
  return this.#store.transactionAsync(async () => {
214
195
  const keys = await toArray(this.#contractInstances.keysAsync());
215
- return keys.map(AztecAddress.fromString);
196
+ return keys.map(AztecAddress.fromStringUnsafe);
216
197
  });
217
198
  }
218
199
 
219
- /** Returns a contract instance for a given address. */
220
- public getContractInstance(contractAddress: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
200
+ /** Returns the address preimage of a given address. */
201
+ public getContractInstance(contractAddress: AztecAddress): Promise<ContractInstancePreimageWithAddress | undefined> {
221
202
  return this.#store.transactionAsync(async () => {
222
203
  const contract = await this.#contractInstances.getAsync(contractAddress.toString());
223
- return contract && SerializableContractInstance.fromBuffer(contract).withAddress(contractAddress);
204
+ return contract && SerializableContractInstancePreimage.fromBuffer(contract).withAddress(contractAddress);
224
205
  });
225
206
  }
226
207
 
@@ -246,7 +227,7 @@ export class ContractStore {
246
227
  contractClassId: Fr,
247
228
  ): Promise<(ContractClassWithId & ContractClassIdPreimage) | undefined> {
248
229
  const key = contractClassId.toString();
249
- const buf = await this.#contractClassData.getAsync(key);
230
+ const buf = await this.#store.transactionAsync(() => this.#contractClassData.getAsync(key));
250
231
  if (!buf) {
251
232
  return undefined;
252
233
  }
@@ -259,93 +240,78 @@ export class ContractStore {
259
240
  return { ...classData, packedBytecode };
260
241
  }
261
242
 
262
- public async getContract(
263
- address: AztecAddress,
264
- ): Promise<(ContractInstanceWithAddress & ContractArtifact) | undefined> {
265
- const instance = await this.getContractInstance(address);
266
- if (!instance) {
267
- return;
268
- }
269
- const artifact = await this.getContractArtifact(instance.currentContractClassId);
270
- if (!artifact) {
271
- return;
272
- }
273
- return { ...instance, ...artifact };
274
- }
275
-
276
243
  /**
277
- * Retrieves the artifact of a specified function within a given contract.
244
+ * Retrieves the artifact of a specified function within a given contract class.
278
245
  *
279
- * @param contractAddress - The AztecAddress representing the contract containing the function.
246
+ * @param contractClassId - The id of the contract class containing the function.
280
247
  * @param selector - The function selector.
281
- * @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.
282
249
  */
283
250
  public async getFunctionArtifact(
284
- contractAddress: AztecAddress,
251
+ contractClassId: Fr,
285
252
  selector: FunctionSelector,
286
253
  ): Promise<FunctionArtifactWithContractName | undefined> {
287
- const artifact = await this.#getArtifactByAddress(contractAddress);
254
+ const artifact = await this.getContractArtifact(contractClassId);
288
255
  if (!artifact) {
289
256
  return undefined;
290
257
  }
291
- const fn = await this.#findFunctionArtifactBySelector(artifact, selector);
292
- return fn && { ...fn, contractName: artifact.name };
258
+ const fn = assertSelectorInArtifact(artifact, await findFunctionArtifactBySelector(artifact, selector), {
259
+ contractClassId,
260
+ selector,
261
+ });
262
+ return { ...fn, contractName: artifact.name };
293
263
  }
294
264
 
265
+ /**
266
+ * Same as {@link getFunctionArtifact} but with debug metadata attached. Returns `undefined` when the class artifact
267
+ * is not registered.
268
+ */
295
269
  public async getFunctionArtifactWithDebugMetadata(
296
- contractAddress: AztecAddress,
270
+ contractClassId: Fr,
297
271
  selector: FunctionSelector,
298
- ): Promise<FunctionArtifactWithContractName> {
299
- const artifact = await this.getFunctionArtifact(contractAddress, selector);
272
+ ): Promise<FunctionArtifactWithContractName | undefined> {
273
+ const artifact = await this.getContractArtifact(contractClassId);
300
274
  if (!artifact) {
301
- throw new Error(`Function artifact not found for contract ${contractAddress} and selector ${selector}.`);
275
+ return undefined;
302
276
  }
303
- const debug = await this.getFunctionDebugMetadata(contractAddress, selector);
277
+ const fn = assertSelectorInArtifact(artifact, await findFunctionArtifactBySelector(artifact, selector), {
278
+ contractClassId,
279
+ selector,
280
+ });
304
281
  return {
305
- ...artifact,
306
- debug,
282
+ ...fn,
283
+ contractName: artifact.name,
284
+ debug: getFunctionDebugMetadata(artifact, fn),
307
285
  };
308
286
  }
309
287
 
310
- public async getPublicFunctionArtifact(
311
- contractAddress: AztecAddress,
312
- ): Promise<FunctionArtifactWithContractName | undefined> {
313
- const artifact = await this.#getArtifactByAddress(contractAddress);
288
+ public async getPublicFunctionArtifact(contractClassId: Fr): Promise<FunctionArtifactWithContractName | undefined> {
289
+ const artifact = await this.getContractArtifact(contractClassId);
314
290
  const fn = artifact && artifact.functions.find(f => f.functionType === FunctionType.PUBLIC);
315
291
  return fn && { ...fn, contractName: artifact.name };
316
292
  }
317
293
 
318
- public async getFunctionAbi(
319
- contractAddress: AztecAddress,
320
- selector: FunctionSelector,
321
- ): Promise<FunctionAbi | undefined> {
322
- const artifact = await this.#getArtifactByAddress(contractAddress);
323
- return artifact && (await this.#findFunctionAbiBySelector(artifact, selector));
324
- }
325
-
326
294
  /**
327
- * Retrieves the debug metadata of a specified function within a given contract.
295
+ * Retrieves the debug metadata of a specified function within a given contract class.
328
296
  *
329
- * @param contractAddress - The AztecAddress representing the contract containing the function.
297
+ * @param contractClassId - The id of the contract class containing the function.
330
298
  * @param selector - The function selector.
331
299
  * @returns The corresponding function's debug metadata, or undefined.
332
300
  */
333
301
  public async getFunctionDebugMetadata(
334
- contractAddress: AztecAddress,
302
+ contractClassId: Fr,
335
303
  selector: FunctionSelector,
336
304
  ): Promise<FunctionDebugMetadata | undefined> {
337
- const artifact = await this.#getArtifactByAddress(contractAddress);
305
+ const artifact = await this.getContractArtifact(contractClassId);
338
306
  if (!artifact) {
339
307
  return undefined;
340
308
  }
341
- const fn = await this.#findFunctionArtifactBySelector(artifact, selector);
309
+ const fn = await findFunctionArtifactBySelector(artifact, selector);
342
310
  return fn && getFunctionDebugMetadata(artifact, fn);
343
311
  }
344
312
 
345
- public async getPublicFunctionDebugMetadata(
346
- contractAddress: AztecAddress,
347
- ): Promise<FunctionDebugMetadata | undefined> {
348
- const artifact = await this.#getArtifactByAddress(contractAddress);
313
+ public async getPublicFunctionDebugMetadata(contractClassId: Fr): Promise<FunctionDebugMetadata | undefined> {
314
+ const artifact = await this.getContractArtifact(contractClassId);
349
315
  const fn = artifact && artifact.functions.find(f => f.functionType === FunctionType.PUBLIC);
350
316
  return fn && getFunctionDebugMetadata(artifact, fn);
351
317
  }
@@ -365,52 +331,34 @@ export class ContractStore {
365
331
  return tree?.getFunctionMembershipWitness(selector);
366
332
  }
367
333
 
368
- public async getDebugContractName(contractAddress: AztecAddress) {
369
- const artifact = await this.#getArtifactByAddress(contractAddress);
334
+ public async getDebugContractName(contractClassId: Fr) {
335
+ const artifact = await this.getContractArtifact(contractClassId);
370
336
  return artifact?.name;
371
337
  }
372
338
 
373
- public async getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector) {
374
- const artifact = await this.#getArtifactByAddress(contractAddress);
375
- const fn = artifact && (await this.#findFunctionAbiBySelector(artifact, selector));
376
- return `${artifact?.name ?? contractAddress}:${fn?.name ?? selector}`;
377
- }
378
-
379
- async #findFunctionArtifactBySelector(
380
- artifact: ContractArtifact,
381
- selector: FunctionSelector,
382
- ): Promise<FunctionArtifact | undefined> {
383
- for (const fn of artifact.functions) {
384
- const fnSelector = await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters);
385
- if (fnSelector.equals(selector)) {
386
- return fn;
387
- }
388
- }
389
- }
390
-
391
- async #findFunctionAbiBySelector(
392
- artifact: ContractArtifact,
393
- selector: FunctionSelector,
394
- ): Promise<FunctionAbi | undefined> {
395
- for (const fn of [...artifact.functions, ...(artifact.nonDispatchPublicFunctions ?? [])]) {
396
- const fnSelector = await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters);
397
- if (fnSelector.equals(selector)) {
398
- return fn;
399
- }
400
- }
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}`;
401
343
  }
402
344
 
403
- public async getFunctionCall(functionName: string, args: any[], to: AztecAddress): Promise<FunctionCall> {
404
- const contract = await this.getContract(to);
405
- 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) {
406
353
  throw new Error(
407
- `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`,
408
356
  );
409
357
  }
410
358
 
411
- const functionDao = contract.functions.find(f => f.name === functionName);
359
+ const functionDao = artifact.functions.find(f => f.name === functionName);
412
360
  if (!functionDao) {
413
- throw new Error(`Unknown function ${functionName} in contract ${contract.name}.`);
361
+ throw new Error(`Unknown function ${functionName} in contract ${artifact.name}.`);
414
362
  }
415
363
 
416
364
  const selector = await FunctionSelector.fromNameAndParameters(functionDao.name, functionDao.parameters);
@@ -427,3 +375,27 @@ export class ContractStore {
427
375
  });
428
376
  }
429
377
  }
378
+
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
+ );
399
+ }
400
+ return fn;
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
+ }