@aztec/pxe 0.0.1-commit.2f68f620 → 0.0.1-commit.3100065

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 (350) hide show
  1. package/dest/bin/check_oracle_version.js +10 -20
  2. package/dest/bin/index.d.ts +2 -2
  3. package/dest/bin/index.d.ts.map +1 -1
  4. package/dest/bin/index.js +1 -1
  5. package/dest/bin/oracle_version_helpers.d.ts +26 -1
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -1
  7. package/dest/bin/oracle_version_helpers.js +162 -1
  8. package/dest/block_synchronizer/block_stream_source.d.ts +5 -5
  9. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -1
  10. package/dest/block_synchronizer/block_stream_source.js +4 -29
  11. package/dest/block_synchronizer/block_synchronizer.d.ts +18 -14
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +54 -18
  14. package/dest/config/index.d.ts +2 -1
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +1 -0
  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_sync → contract}/contract_sync_service.js +26 -45
  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/aztec_node_read_cache.d.ts +39 -0
  31. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts.map +1 -0
  32. package/dest/contract_function_simulator/aztec_node_read_cache.js +60 -0
  33. package/dest/contract_function_simulator/contract_function_simulator.d.ts +19 -18
  34. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  35. package/dest/contract_function_simulator/contract_function_simulator.js +64 -35
  36. package/dest/contract_function_simulator/execution_note_cache.d.ts +3 -9
  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/index.d.ts +19 -10
  40. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  41. package/dest/contract_function_simulator/index.js +7 -9
  42. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +8 -27
  43. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +8 -23
  45. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  46. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  47. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  48. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  49. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  50. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  51. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
  52. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  53. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  54. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  55. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  56. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  57. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  58. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +11 -12
  59. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  60. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +6 -49
  61. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +10 -8
  62. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  63. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -60
  64. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +2 -2
  65. package/dest/contract_function_simulator/noir-structs/option.d.ts +9 -11
  66. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -1
  67. package/dest/contract_function_simulator/noir-structs/option.js +18 -13
  68. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  69. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  70. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  71. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  72. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  73. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  74. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +6 -9
  75. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -1
  76. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -24
  77. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  78. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  79. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  80. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +21 -0
  81. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  82. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +50 -0
  83. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +14 -0
  84. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  85. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  86. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  87. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  88. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  89. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  90. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  91. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  92. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  93. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  94. package/dest/contract_function_simulator/oracle/index.js +1 -1
  95. package/dest/contract_function_simulator/oracle/interfaces.d.ts +2 -3
  96. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  97. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  98. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  99. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  100. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  101. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  102. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  103. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +41 -30
  104. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -1
  105. package/dest/contract_function_simulator/oracle/oracle_registry.js +248 -27
  106. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +123 -40
  107. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -1
  108. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +947 -264
  109. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  110. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  111. package/dest/contract_function_simulator/oracle/private_execution.js +2 -3
  112. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +21 -8
  113. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  114. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +128 -17
  115. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +73 -33
  116. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  117. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +220 -104
  118. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  119. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  120. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  121. package/dest/debug/pxe_debug_utils.d.ts +2 -2
  122. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  123. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  124. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  125. package/dest/entrypoints/client/bundle/utils.js +8 -3
  126. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  127. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  128. package/dest/entrypoints/client/lazy/utils.js +8 -3
  129. package/dest/entrypoints/pxe_creation_options.d.ts +9 -3
  130. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  131. package/dest/entrypoints/server/index.d.ts +5 -3
  132. package/dest/entrypoints/server/index.d.ts.map +1 -1
  133. package/dest/entrypoints/server/index.js +3 -2
  134. package/dest/entrypoints/server/utils.d.ts +1 -1
  135. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  136. package/dest/entrypoints/server/utils.js +8 -2
  137. package/dest/error_enriching.d.ts +5 -3
  138. package/dest/error_enriching.d.ts.map +1 -1
  139. package/dest/error_enriching.js +13 -11
  140. package/dest/hooks/execution_hooks.d.ts +31 -11
  141. package/dest/hooks/execution_hooks.d.ts.map +1 -1
  142. package/dest/hooks/execution_hooks.js +3 -3
  143. package/dest/hooks/index.d.ts +4 -3
  144. package/dest/hooks/index.d.ts.map +1 -1
  145. package/dest/hooks/index.js +1 -0
  146. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  147. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  148. package/dest/hooks/resolve_custom_request.js +3 -0
  149. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  150. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  151. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  152. package/dest/logs/log_service.d.ts +7 -6
  153. package/dest/logs/log_service.d.ts.map +1 -1
  154. package/dest/logs/log_service.js +79 -28
  155. package/dest/messages/tx_resolver_service.d.ts +17 -0
  156. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  157. package/dest/messages/{message_context_service.js → tx_resolver_service.js} +8 -8
  158. package/dest/oracle_version.d.ts +3 -3
  159. package/dest/oracle_version.js +5 -5
  160. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
  161. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  162. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +6 -2
  163. package/dest/private_kernel/hints/test_utils.js +1 -1
  164. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  165. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  166. package/dest/private_kernel/private_kernel_execution_prover.js +17 -36
  167. package/dest/private_kernel/private_kernel_oracle.d.ts +4 -2
  168. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  169. package/dest/private_kernel/private_kernel_oracle.js +17 -5
  170. package/dest/pxe.d.ts +114 -48
  171. package/dest/pxe.d.ts.map +1 -1
  172. package/dest/pxe.js +222 -139
  173. package/dest/storage/allowed_scopes.d.ts +6 -0
  174. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  175. package/dest/storage/allowed_scopes.js +7 -0
  176. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
  177. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  178. package/dest/storage/anchor_block_store/anchor_block_store.js +8 -6
  179. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +1 -1
  180. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -1
  181. package/dest/storage/backwards_compatibility_tests/schema_tests.js +129 -49
  182. package/dest/storage/capsule_store/capsule_service.d.ts +1 -1
  183. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -1
  184. package/dest/storage/capsule_store/capsule_service.js +6 -9
  185. package/dest/storage/contract_store/contract_store.d.ts +27 -24
  186. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  187. package/dest/storage/contract_store/contract_store.js +64 -75
  188. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  189. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  190. package/dest/storage/fact_store/fact_service.js +45 -0
  191. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  192. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  193. package/dest/storage/fact_store/fact_store.js +408 -0
  194. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  195. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  196. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  197. package/dest/storage/fact_store/index.d.ts +6 -0
  198. package/dest/storage/fact_store/index.d.ts.map +1 -0
  199. package/dest/storage/fact_store/index.js +4 -0
  200. package/dest/storage/fact_store/origin_state.d.ts +57 -0
  201. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  202. package/dest/storage/fact_store/origin_state.js +53 -0
  203. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  204. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  205. package/dest/storage/fact_store/stored_fact.js +64 -0
  206. package/dest/storage/index.d.ts +3 -2
  207. package/dest/storage/index.d.ts.map +1 -1
  208. package/dest/storage/index.js +2 -1
  209. package/dest/storage/metadata.d.ts +2 -2
  210. package/dest/storage/metadata.d.ts.map +1 -1
  211. package/dest/storage/metadata.js +1 -1
  212. package/dest/storage/note_store/note_store.d.ts +42 -33
  213. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  214. package/dest/storage/note_store/note_store.js +197 -168
  215. package/dest/storage/note_store/stored_note.d.ts +3 -8
  216. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  217. package/dest/storage/note_store/stored_note.js +4 -20
  218. package/dest/storage/open_pxe_stores.d.ts +5 -3
  219. package/dest/storage/open_pxe_stores.d.ts.map +1 -1
  220. package/dest/storage/open_pxe_stores.js +5 -3
  221. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  222. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  223. package/dest/storage/private_event_store/private_event_store.js +40 -43
  224. package/dest/storage/tagging_store/index.d.ts +2 -2
  225. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  226. package/dest/storage/tagging_store/index.js +1 -1
  227. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  228. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  229. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  230. package/dest/tagging/constants.d.ts +2 -2
  231. package/dest/tagging/constants.d.ts.map +1 -1
  232. package/dest/tagging/constants.js +18 -9
  233. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +21 -8
  234. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -1
  235. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +56 -16
  236. package/package.json +17 -17
  237. package/src/bin/check_oracle_version.ts +10 -19
  238. package/src/bin/index.ts +5 -1
  239. package/src/bin/oracle_version_helpers.ts +190 -0
  240. package/src/block_synchronizer/block_stream_source.ts +6 -45
  241. package/src/block_synchronizer/block_synchronizer.ts +70 -29
  242. package/src/config/index.ts +1 -0
  243. package/src/config/package_info.ts +1 -1
  244. package/src/contract/contract_class_service.ts +83 -0
  245. package/src/{contract_sync → contract}/contract_sync_service.ts +37 -50
  246. package/src/contract/helpers.ts +35 -0
  247. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  248. package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
  249. package/src/contract_function_simulator/contract_function_simulator.ts +97 -45
  250. package/src/contract_function_simulator/execution_note_cache.ts +7 -28
  251. package/src/contract_function_simulator/index.ts +26 -11
  252. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +12 -24
  253. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  254. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  255. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
  256. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  257. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  258. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +20 -46
  259. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +13 -60
  260. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
  261. package/src/contract_function_simulator/noir-structs/option.ts +17 -11
  262. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  263. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  264. package/src/contract_function_simulator/noir-structs/provided_secret.ts +4 -26
  265. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  266. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +53 -0
  267. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +15 -0
  268. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  269. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  270. package/src/contract_function_simulator/oracle/index.ts +1 -15
  271. package/src/contract_function_simulator/oracle/interfaces.ts +1 -2
  272. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  273. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  274. package/src/contract_function_simulator/oracle/oracle_registry.ts +162 -41
  275. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +659 -248
  276. package/src/contract_function_simulator/oracle/private_execution.ts +2 -3
  277. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +156 -24
  278. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +357 -131
  279. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  280. package/src/debug/pxe_debug_utils.ts +1 -1
  281. package/src/entrypoints/client/bundle/utils.ts +10 -3
  282. package/src/entrypoints/client/lazy/utils.ts +10 -3
  283. package/src/entrypoints/pxe_creation_options.ts +8 -2
  284. package/src/entrypoints/server/index.ts +5 -2
  285. package/src/entrypoints/server/utils.ts +10 -2
  286. package/src/error_enriching.ts +27 -11
  287. package/src/hooks/execution_hooks.ts +32 -12
  288. package/src/hooks/index.ts +8 -2
  289. package/src/hooks/resolve_custom_request.ts +24 -0
  290. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  291. package/src/logs/log_service.ts +91 -37
  292. package/src/messages/{message_context_service.ts → tx_resolver_service.ts} +16 -9
  293. package/src/oracle_version.ts +5 -5
  294. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +11 -1
  295. package/src/private_kernel/hints/test_utils.ts +1 -1
  296. package/src/private_kernel/private_kernel_execution_prover.ts +22 -52
  297. package/src/private_kernel/private_kernel_oracle.ts +23 -4
  298. package/src/pxe.ts +325 -159
  299. package/src/storage/allowed_scopes.ts +14 -0
  300. package/src/storage/anchor_block_store/anchor_block_store.ts +8 -6
  301. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +6 -6
  302. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +1 -1
  303. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  304. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +12 -12
  305. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +9 -15
  306. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +24 -4
  307. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +11 -3
  308. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +12 -4
  309. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  310. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +29 -9
  311. package/src/storage/backwards_compatibility_tests/schema_tests.ts +141 -50
  312. package/src/storage/capsule_store/capsule_service.ts +8 -13
  313. package/src/storage/contract_store/contract_store.ts +86 -93
  314. package/src/storage/fact_store/fact_service.ts +69 -0
  315. package/src/storage/fact_store/fact_store.ts +487 -0
  316. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  317. package/src/storage/fact_store/index.ts +14 -0
  318. package/src/storage/fact_store/origin_state.ts +75 -0
  319. package/src/storage/fact_store/stored_fact.ts +80 -0
  320. package/src/storage/index.ts +2 -1
  321. package/src/storage/metadata.ts +1 -1
  322. package/src/storage/note_store/note_store.ts +226 -187
  323. package/src/storage/note_store/stored_note.ts +5 -27
  324. package/src/storage/open_pxe_stores.ts +6 -3
  325. package/src/storage/private_event_store/private_event_store.ts +49 -55
  326. package/src/storage/tagging_store/index.ts +1 -1
  327. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  328. package/src/tagging/constants.ts +19 -9
  329. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +77 -16
  330. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -89
  331. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  332. package/dest/contract_function_simulator/oracle/oracle.js +0 -552
  333. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  334. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  335. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -51
  336. package/dest/contract_sync/contract_sync_service.d.ts +0 -42
  337. package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
  338. package/dest/contract_sync/helpers.d.ts +0 -27
  339. package/dest/contract_sync/helpers.d.ts.map +0 -1
  340. package/dest/contract_sync/helpers.js +0 -53
  341. package/dest/messages/message_context_service.d.ts +0 -17
  342. package/dest/messages/message_context_service.d.ts.map +0 -1
  343. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  344. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  345. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  346. package/src/contract_function_simulator/oracle/oracle.ts +0 -711
  347. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -60
  348. package/src/contract_sync/helpers.ts +0 -86
  349. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +0 -16
  350. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
@@ -1,20 +1,31 @@
1
+ import { PRIVATE_LOG_CIPHERTEXT_LEN } from '@aztec/constants';
1
2
  import type { BlockNumber } from '@aztec/foundation/branded-types';
3
+ import type { GrumpkinScalar, Point } from '@aztec/foundation/curves/grumpkin';
2
4
  import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
5
  import type { KeyStore } from '@aztec/key-store';
4
6
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
7
  import type { BlockHash, L2TipsProvider } from '@aztec/stdlib/block';
8
+ import type { CompleteAddress } from '@aztec/stdlib/contract';
6
9
  import type { AztecNode } from '@aztec/stdlib/interfaces/server';
7
- import { AppTaggingSecret, type LogResult, PendingTaggedLog, SiloedTag } from '@aztec/stdlib/logs';
10
+ import {
11
+ AppTaggingSecret,
12
+ AppTaggingSecretKind,
13
+ type LogResult,
14
+ SiloedTag,
15
+ computeSharedTaggingSecret,
16
+ } from '@aztec/stdlib/logs';
8
17
  import type { BlockHeader } from '@aztec/stdlib/tx';
9
18
 
10
19
  import {
11
20
  type LogRetrievalRequest,
12
21
  LogSource,
13
22
  } from '../contract_function_simulator/noir-structs/log_retrieval_request.js';
14
- import { LogRetrievalResponse } from '../contract_function_simulator/noir-structs/log_retrieval_response.js';
23
+ import type { LogRetrievalResponse } from '../contract_function_simulator/noir-structs/log_retrieval_response.js';
24
+ import type { PendingTaggedLog } from '../contract_function_simulator/noir-structs/pending_tagged_log.js';
25
+ import { ResolvedTx } from '../contract_function_simulator/noir-structs/resolved_tx.js';
15
26
  import { AddressStore } from '../storage/address_store/address_store.js';
16
27
  import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
17
- import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
28
+ import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
18
29
  import {
19
30
  getAllPrivateLogsByTags,
20
31
  getAllPublicLogsByTagsFromContract,
@@ -34,7 +45,7 @@ export class LogService {
34
45
  private readonly l2TipsStore: L2TipsProvider,
35
46
  private readonly keyStore: KeyStore,
36
47
  private readonly recipientTaggingStore: RecipientTaggingStore,
37
- private readonly senderAddressBookStore: SenderAddressBookStore,
48
+ private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore,
38
49
  private readonly addressStore: AddressStore,
39
50
  private readonly jobId: string,
40
51
  bindings?: LoggerBindings,
@@ -139,12 +150,14 @@ export class LogService {
139
150
  ): Map<RangeKey, { fromBlock?: BlockNumber; toBlock?: BlockNumber; entries: typeof entries }> {
140
151
  const groups = new Map<RangeKey, { fromBlock?: BlockNumber; toBlock?: BlockNumber; entries: typeof entries }>();
141
152
  for (const entry of entries) {
142
- const key = rangeKey(entry.request.fromBlock, entry.request.toBlock);
153
+ const fromBlock = entry.request.fromBlock.value;
154
+ const toBlock = entry.request.toBlock.value;
155
+ const key = rangeKey(fromBlock, toBlock);
143
156
  const existing = groups.get(key);
144
157
  if (existing) {
145
158
  existing.entries.push(entry);
146
159
  } else {
147
- groups.set(key, { fromBlock: entry.request.fromBlock, toBlock: entry.request.toBlock, entries: [entry] });
160
+ groups.set(key, { fromBlock, toBlock, entries: [entry] });
148
161
  }
149
162
  }
150
163
  return groups;
@@ -158,12 +171,17 @@ export class LogService {
158
171
  if (nullifiers.length === 0) {
159
172
  throw new Error(`Log for tx ${log.txHash} returned no nullifiers from the node`);
160
173
  }
161
- return new LogRetrievalResponse(
162
- log.logData.slice(1), // Skip the tag
163
- log.txHash,
164
- noteHashes,
165
- nullifiers[0],
166
- );
174
+ return {
175
+ // Skip the tag, and clip to the wire cap: public logs can exceed PRIVATE_LOG_CIPHERTEXT_LEN, which is the fixed
176
+ // size of the oracle's BoundedVec slot. A no-op for private logs, which are already within the cap.
177
+ logPayload: log.logData.slice(1, 1 + PRIVATE_LOG_CIPHERTEXT_LEN),
178
+ txHash: log.txHash,
179
+ uniqueNoteHashesInTx: noteHashes,
180
+ firstNullifierInTx: nullifiers[0],
181
+ blockNumber: log.blockNumber,
182
+ blockTimestamp: log.blockTimestamp,
183
+ blockHash: log.blockHash,
184
+ };
167
185
  }
168
186
 
169
187
  public async fetchTaggedLogs(
@@ -171,12 +189,20 @@ export class LogService {
171
189
  recipient: AztecAddress,
172
190
  providedSecrets: AppTaggingSecret[],
173
191
  ): Promise<PendingTaggedLog[]> {
174
- this.log.verbose(`Fetching tagged logs for ${contractAddress.toString()}`);
192
+ this.log.verbose(
193
+ `Fetching tagged logs for contract ${contractAddress.toString()} and recipient ${recipient.toString()}`,
194
+ );
175
195
 
176
196
  const l2Tips = await this.l2TipsStore.getL2Tips();
177
- // The secrets PXE derives or stores internally, plus any the app supplies explicitly for secrets PXE cannot
178
- // enumerate itself (e.g. handshake-derived ones).
179
- const secrets = [...(await this.#getSecretsForSenders(contractAddress, recipient)), ...providedSecrets];
197
+
198
+ // Secrets PXE can enumerate for this recipient (senders via ECDH + pre-shared store secrets), plus any the app
199
+ // supplies explicitly for secrets PXE cannot enumerate itself (e.g. handshake-derived ones). The latter arrive
200
+ // already computed and are searched even when the recipient's account is unknown locally, since they need no ECDH.
201
+ const combinedSecrets = [...(await this.#getPointDerivedSecrets(contractAddress, recipient)), ...providedSecrets];
202
+
203
+ // These sources can overlap (a sender that is also a PXE account, or a pre-shared secret that coincides with a
204
+ // sender-derived one), so we deduplicate the combined set.
205
+ const secrets = Array.from(new Map(combinedSecrets.map(secret => [secret.toString(), secret])).values());
180
206
 
181
207
  const logs = await syncTaggedPrivateLogs(
182
208
  secrets,
@@ -193,44 +219,72 @@ export class LogService {
193
219
  if (nullifiers.length === 0) {
194
220
  throw new Error(`Log for tx ${log.txHash} returned no nullifiers from the node`);
195
221
  }
196
- return new PendingTaggedLog(log.logData, log.txHash, noteHashes, nullifiers[0]);
222
+ return {
223
+ log: log.logData,
224
+ context: new ResolvedTx(log.txHash, noteHashes, nullifiers[0], log.blockNumber, log.blockHash.toFr()),
225
+ };
197
226
  });
198
227
  }
199
228
 
200
- async #getSecretsForSenders(contractAddress: AztecAddress, recipient: AztecAddress): Promise<AppTaggingSecret[]> {
229
+ /**
230
+ * Computes the tagging secrets PXE can enumerate for a recipient: one per known sender (via ECDH) plus any
231
+ * pre-shared secrets registered directly for the recipient. Each registered secret is scanned under the tag
232
+ * streams its kind can back. Deriving the sender-based secrets requires the recipient's address preimage and keys,
233
+ * so returns an empty array when those are unavailable. App-supplied secrets (e.g. derived from discovered
234
+ * handshakes) are handled separately by the caller and do not go through here.
235
+ */
236
+ async #getPointDerivedSecrets(contractAddress: AztecAddress, recipient: AztecAddress): Promise<AppTaggingSecret[]> {
201
237
  const recipientCompleteAddress = await this.addressStore.getCompleteAddress(recipient);
202
- if (!recipientCompleteAddress) {
238
+ if (!recipientCompleteAddress || !(await this.keyStore.hasAccount(recipient))) {
239
+ this.log.warn(
240
+ `Skipping sender-derived tag retrieval for ${recipient.toString()} due to unknown address preimage`,
241
+ );
203
242
  return [];
204
243
  }
205
244
  const recipientIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(recipient);
206
245
 
207
- // We implicitly add all PXE accounts as senders, this helps us find tagged logs with messages that are sent to a
208
- // local account (recipient = us, sender = us)
209
- const allSenders = [...(await this.senderAddressBookStore.getSenders()), ...(await this.keyStore.getAccounts())];
246
+ const [senderPoints, registeredSecrets] = await Promise.all([
247
+ this.#getSecretsForSenders(recipientCompleteAddress, recipientIvsk),
248
+ this.taggingSecretSourcesStore.getSharedSecretsForRecipient(recipient),
249
+ ]);
250
+ return Promise.all([
251
+ ...senderPoints.map(secret => AppTaggingSecret.computeDirectional(secret, contractAddress, recipient)),
252
+ ...registeredSecrets.flatMap(({ kind, secret }) => {
253
+ switch (kind) {
254
+ case 'arbitrary-secret':
255
+ return [AppTaggingSecret.computeDirectional(secret, contractAddress, recipient)];
256
+ case 'handshake':
257
+ // A handshake-backed sender tags messages with the bare app-siloed secret, one tag domain per delivery
258
+ // mode.
259
+ return [
260
+ AppTaggingSecret.computeAppSiloed(secret, contractAddress, AppTaggingSecretKind.UNCONSTRAINED),
261
+ AppTaggingSecret.computeAppSiloed(secret, contractAddress, AppTaggingSecretKind.CONSTRAINED),
262
+ ];
263
+ }
264
+ }),
265
+ ]);
266
+ }
210
267
 
211
- // We deduplicate the senders by adding them to a set and then converting the set back to an array
212
- const deduplicatedSenders = Array.from(new Set(allSenders.map(sender => sender.toString()))).map(sender =>
213
- AztecAddress.fromString(sender),
214
- );
268
+ async #getSecretsForSenders(
269
+ recipientCompleteAddress: CompleteAddress,
270
+ recipientIvsk: GrumpkinScalar,
271
+ ): Promise<Point[]> {
272
+ // We implicitly add all PXE accounts as senders, this helps us decrypt tags on notes that we send to ourselves
273
+ // (recipient = us, sender = us).
274
+ const allSenders = [...(await this.taggingSecretSourcesStore.getSenders()), ...(await this.keyStore.getAccounts())];
215
275
 
216
276
  return Promise.all(
217
- deduplicatedSenders.map(async sender => {
218
- const secret = await AppTaggingSecret.computeUnconstrained(
219
- recipientCompleteAddress,
220
- recipientIvsk,
221
- sender,
222
- contractAddress,
223
- recipient,
224
- );
277
+ allSenders.map(async sender => {
278
+ const taggingSecretPoint = await computeSharedTaggingSecret(recipientCompleteAddress, recipientIvsk, sender);
225
279
 
226
- if (!secret) {
227
- // Note that all senders originate from either the SenderAddressBookStore or the KeyStore.
280
+ if (!taggingSecretPoint) {
281
+ // Note that all senders originate from either the TaggingSecretSourcesStore or the KeyStore.
228
282
  throw new Error(
229
283
  `Failed to compute a tagging secret for sender ${sender} - this implies this is an invalid address, which should not happen as they have been previously registered in PXE.`,
230
284
  );
231
285
  }
232
286
 
233
- return secret;
287
+ return taggingSecretPoint;
234
288
  }),
235
289
  );
236
290
  }
@@ -1,21 +1,22 @@
1
1
  import { uniqueBy } from '@aztec/foundation/collection';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import type { AztecNode } from '@aztec/stdlib/interfaces/server';
4
- import { MessageContext } from '@aztec/stdlib/logs';
5
4
  import { type IndexedTxEffect, TxHash } from '@aztec/stdlib/tx';
6
5
 
7
- /** Resolves transaction hashes into the context needed to process messages. */
8
- export class MessageContextService {
6
+ import { ResolvedTx } from '../contract_function_simulator/noir-structs/resolved_tx.js';
7
+
8
+ /** Resolves transaction hashes into their on-chain context (note hashes, first nullifier, and mined block). */
9
+ export class TxResolverService {
9
10
  constructor(private readonly aztecNode: AztecNode) {}
10
11
 
11
12
  /**
12
- * Resolves a list of tx hashes into their message contexts.
13
+ * Resolves a list of tx hashes into their on-chain context.
13
14
  *
14
- * For each tx hash, looks up the corresponding tx effect and extracts the note hashes and first nullifier needed to
15
- * process messages that originated from that transaction. Returns `null` for tx hashes that are zero, not yet
16
- * available, or in blocks beyond the anchor block.
15
+ * For each tx hash, looks up the corresponding tx effect and extracts the note hashes, first nullifier, and the
16
+ * number and hash of the block it was mined in. Returns `null` for tx hashes that are zero, not yet available, or in
17
+ * blocks beyond the anchor block.
17
18
  */
18
- async getMessageContextsByTxHash(txHashes: Fr[], anchorBlockNumber: number): Promise<(MessageContext | null)[]> {
19
+ async resolveTxs(txHashes: Fr[], anchorBlockNumber: number): Promise<(ResolvedTx | null)[]> {
19
20
  const nonZeroTxHashes = txHashes.filter(h => !h.isZero()).map(h => TxHash.fromField(h));
20
21
  const uniqueTxHashes = uniqueBy(nonZeroTxHashes, h => h.toString());
21
22
  const fetched = await Promise.all(
@@ -56,7 +57,13 @@ export class MessageContextService {
56
57
  throw new Error(`Tx effect for ${txHash} has no nullifiers`);
57
58
  }
58
59
 
59
- return new MessageContext(data.txHash, data.noteHashes, data.nullifiers[0]);
60
+ return new ResolvedTx(
61
+ data.txHash,
62
+ data.noteHashes,
63
+ data.nullifiers[0],
64
+ txEffect.l2BlockNumber,
65
+ txEffect.l2BlockHash.toFr(),
66
+ );
60
67
  });
61
68
  }
62
69
  }
@@ -10,13 +10,13 @@
10
10
  /// used to provide helpful error messages if a contract calls an oracle that doesn't exist. We don't throw immediately
11
11
  /// if AZTEC_NR_MINOR > PXE_MINOR because if a contract is updated to use a newer Aztec.nr dependency without actually
12
12
  /// using any of the new oracles then there is no reason to throw.
13
- export const ORACLE_VERSION_MAJOR = 29;
14
- export const ORACLE_VERSION_MINOR = 0;
13
+ export const ORACLE_VERSION_MAJOR = 30;
14
+ export const ORACLE_VERSION_MINOR = 7;
15
15
 
16
- /// This hash is computed from the Oracle interface and is used to detect when that interface changes. When it does,
17
- /// you need to either:
16
+ /// This hash is computed from the `ORACLE_REGISTRY` declaration (each oracle's name, ordered parameter names and
17
+ /// types, and return type) and is used to detect when the oracle interface changes. When it does, you need to either:
18
18
  /// - increment `ORACLE_VERSION_MAJOR` and reset `ORACLE_VERSION_MINOR` to zero if the change is breaking, or
19
19
  /// - increment only `ORACLE_VERSION_MINOR` if the change is additive (a new oracle was added).
20
20
  ///
21
21
  /// These constants must be kept in sync between this file and `noir-projects/aztec-nr/aztec/src/oracle/version.nr`.
22
- export const ORACLE_INTERFACE_HASH = '157fe8fa79f0e5a25db3d61341f9bcf5b43cb68367bea497204006daa48751b6';
22
+ export const ORACLE_INTERFACE_HASH = '416b0e7d3e6dca5803ebe2a65ea93f1e79759dc39ef8ec4c52eeba5e2b0f3fca';
@@ -35,6 +35,7 @@ import {
35
35
  findPrivateKernelResetDimensions,
36
36
  getNoteHashReadRequestResetActions,
37
37
  getNullifierReadRequestResetActions,
38
+ kernelStateIsForPublic,
38
39
  privateKernelResetDimensionNames,
39
40
  } from '@aztec/stdlib/kernel';
40
41
  import { type PrivateCallExecutionResult, collectNested } from '@aztec/stdlib/tx';
@@ -138,10 +139,19 @@ export class PrivateKernelResetPrivateInputsBuilder {
138
139
  // The dimensions found must be big enough to reset all values, i.e. empty remainder.
139
140
  const allowRemainder = isInner;
140
141
 
142
+ // Terminal reset picks from the finalTail / finalTailToPublic catalogs; mid-tx resets always
143
+ // use the inner catalog. The public/private decision must match `kernelStateIsForPublic` - the
144
+ // same predicate the circuit inputs and the orchestrator use.
145
+ const mode = isInner
146
+ ? ('inner' as const)
147
+ : kernelStateIsForPublic(this.previousKernel)
148
+ ? ('finalTailToPublic' as const)
149
+ : ('finalTail' as const);
150
+
141
151
  const dimensions = findPrivateKernelResetDimensions(
142
152
  this.requestedDimensions,
143
153
  privateKernelResetDimensionsConfig,
144
- isInner,
154
+ mode,
145
155
  allowRemainder,
146
156
  );
147
157
 
@@ -36,7 +36,7 @@ import { PrivateLog } from '@aztec/stdlib/logs';
36
36
  import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
37
37
  import { VerificationKeyData } from '@aztec/stdlib/vks';
38
38
 
39
- const DEFAULT_CONTRACT_ADDRESS = AztecAddress.fromBigInt(987654n);
39
+ const DEFAULT_CONTRACT_ADDRESS = AztecAddress.fromBigIntUnsafe(987654n);
40
40
 
41
41
  /**
42
42
  * Builds a ClaimedLengthArray from a list of items, padding to the required size.
@@ -24,8 +24,8 @@ import {
24
24
  PrivateKernelInner2CircuitPrivateInputs,
25
25
  PrivateKernelInner3CircuitPrivateInputs,
26
26
  PrivateKernelInnerCircuitPrivateInputs,
27
+ PrivateKernelResetTailCircuitPrivateInputs,
27
28
  type PrivateKernelSimulateOutput,
28
- PrivateKernelTailCircuitPrivateInputs,
29
29
  type PrivateKernelTailCircuitPublicInputs,
30
30
  PrivateVerificationKeyHints,
31
31
  type UpdatedClassIdHints,
@@ -170,7 +170,6 @@ export class PrivateKernelExecutionProver {
170
170
  previousOutput: output,
171
171
  txRequest,
172
172
  isPrivateOnlyTx,
173
- firstNullifierHint: executionResult.firstNullifier,
174
173
  minRevertibleSideEffectCounter,
175
174
  executionSteps,
176
175
  generateWitnesses,
@@ -179,7 +178,8 @@ export class PrivateKernelExecutionProver {
179
178
  firstIteration = false;
180
179
  }
181
180
 
182
- // Final reset: include siloing of note hashes, nullifiers and private logs.
181
+ // Terminal reset+tail. The final reset must be performed exactly once because each tx has at
182
+ // least one nullifier that requires siloing, and siloing cannot be done multiple times.
183
183
  const finalResetBuilder = new PrivateKernelResetPrivateInputsBuilder(
184
184
  output,
185
185
  [],
@@ -187,29 +187,9 @@ export class PrivateKernelExecutionProver {
187
187
  splitCounter,
188
188
  );
189
189
  if (!finalResetBuilder.needsReset()) {
190
- // The final reset must be performed exactly once, because each tx has at least one nullifier that requires
191
- // siloing, and siloing cannot be done multiple times.
192
- // While, in theory, it might be possible to silo note hashes first and then run another reset to silo nullifiers
193
- // and/or private logs, we currently don't have standalone dimensions for the arrays that require siloing. As a
194
- // result, all necessary siloing must be done together in a single reset.
190
+ // Siloing for note hashes, nullifiers, and private logs is dimensioned as one terminal reset.
195
191
  // Refer to the possible combinations of dimensions in private_kernel_reset_config.json.
196
192
  throw new Error('Nothing to reset for the final reset.');
197
- } else {
198
- const witgenTimer = new Timer();
199
- const privateInputs = await finalResetBuilder.build(this.oracle);
200
- output = generateWitnesses
201
- ? await this.proofCreator.generateResetOutput(privateInputs)
202
- : await this.proofCreator.simulateReset(privateInputs);
203
-
204
- executionSteps.push({
205
- functionName: 'private_kernel_reset',
206
- bytecode: output.bytecode,
207
- witness: output.outputWitness,
208
- vk: output.verificationKey.keyAsBytes,
209
- timings: {
210
- witgen: witgenTimer.ms(),
211
- },
212
- });
213
193
  }
214
194
 
215
195
  if (output.publicInputs.feePayer.isZero() && skipFeeEnforcement) {
@@ -218,34 +198,35 @@ export class PrivateKernelExecutionProver {
218
198
  }
219
199
  output.publicInputs.feePayer = new AztecAddress(Fr.MAX_FIELD_VALUE);
220
200
  }
221
- // Private tail.
222
- const vkData = await this.getVkData(output.verificationKey);
223
- const previousKernelData = new PrivateKernelData(output.publicInputs, vkData);
224
-
225
- this.log.debug(
226
- `Calling private kernel tail with hwm ${previousKernelData.publicInputs.minRevertibleSideEffectCounter}`,
227
- );
228
201
 
229
202
  // TODO: Enable padding once we better understand the final amounts to pad to.
230
203
  const paddedSideEffectAmounts = PaddedSideEffectAmounts.empty();
231
204
 
232
205
  // Round the aggregated expirationTimestamp down to reduce precision and avoid leaking which private
233
206
  // functions were called via their exact expiration offsets.
234
- const expirationTimestampUpperBound = computeTxExpirationTimestamp(previousKernelData.publicInputs);
235
-
236
- const privateInputs = new PrivateKernelTailCircuitPrivateInputs(
237
- previousKernelData,
207
+ const expirationTimestampUpperBound = computeTxExpirationTimestamp(output.publicInputs);
208
+
209
+ const resetInputs = await finalResetBuilder.build(this.oracle);
210
+ const mergedInputs = new PrivateKernelResetTailCircuitPrivateInputs(
211
+ resetInputs.previousKernel,
212
+ resetInputs.paddedSideEffects,
213
+ resetInputs.hints,
214
+ resetInputs.dimensions,
238
215
  paddedSideEffectAmounts,
239
216
  expirationTimestampUpperBound,
240
217
  );
241
218
 
219
+ this.log.debug(
220
+ `Calling terminal private kernel reset+tail (${mergedInputs.isForPublic() ? 'to-public' : 'to-rollup'}) with hwm ${output.publicInputs.minRevertibleSideEffectCounter}`,
221
+ );
222
+
242
223
  const witgenTimer = new Timer();
243
224
  const tailOutput = generateWitnesses
244
- ? await this.proofCreator.generateTailOutput(privateInputs)
245
- : await this.proofCreator.simulateTail(privateInputs);
225
+ ? await this.proofCreator.generateResetTailOutput(mergedInputs)
226
+ : await this.proofCreator.simulateResetTail(mergedInputs);
246
227
 
247
228
  executionSteps.push({
248
- functionName: 'private_kernel_tail',
229
+ functionName: mergedInputs.isForPublic() ? 'private_kernel_reset_tail_to_public' : 'private_kernel_reset_tail',
249
230
  bytecode: tailOutput.bytecode,
250
231
  witness: tailOutput.outputWitness,
251
232
  vk: tailOutput.verificationKey.keyAsBytes,
@@ -457,7 +438,6 @@ export class PrivateKernelExecutionProver {
457
438
  previousOutput: PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>;
458
439
  txRequest: TxRequest;
459
440
  isPrivateOnlyTx: boolean;
460
- firstNullifierHint: Fr;
461
441
  minRevertibleSideEffectCounter: number;
462
442
  executionSteps: PrivateExecutionStep[];
463
443
  generateWitnesses: boolean;
@@ -468,7 +448,6 @@ export class PrivateKernelExecutionProver {
468
448
  previousOutput,
469
449
  txRequest,
470
450
  isPrivateOnlyTx,
471
- firstNullifierHint,
472
451
  minRevertibleSideEffectCounter,
473
452
  executionSteps,
474
453
  generateWitnesses,
@@ -488,12 +467,9 @@ export class PrivateKernelExecutionProver {
488
467
  ProtocolContractsList,
489
468
  apps[0],
490
469
  isPrivateOnlyTx,
491
- firstNullifierHint,
492
470
  minRevertibleSideEffectCounter,
493
471
  );
494
- this.log.debug(
495
- `Calling private kernel init with isPrivateOnly ${isPrivateOnlyTx} and firstNullifierHint ${proofInput.firstNullifierHint}`,
496
- );
472
+ this.log.debug(`Calling private kernel init with isPrivateOnly ${isPrivateOnlyTx}`);
497
473
  pushTestData('private-kernel-inputs-init', proofInput);
498
474
  output = generateWitnesses
499
475
  ? await this.proofCreator.generateInitOutput(proofInput)
@@ -509,12 +485,9 @@ export class PrivateKernelExecutionProver {
509
485
  apps[0],
510
486
  apps[1],
511
487
  isPrivateOnlyTx,
512
- firstNullifierHint,
513
488
  minRevertibleSideEffectCounter,
514
489
  );
515
- this.log.debug(
516
- `Calling private kernel init_2 with isPrivateOnly ${isPrivateOnlyTx} and firstNullifierHint ${proofInput.firstNullifierHint}`,
517
- );
490
+ this.log.debug(`Calling private kernel init_2 with isPrivateOnly ${isPrivateOnlyTx}`);
518
491
  pushTestData('private-kernel-inputs-init-2', proofInput);
519
492
  output = generateWitnesses
520
493
  ? await this.proofCreator.generateInit2Output(proofInput)
@@ -531,12 +504,9 @@ export class PrivateKernelExecutionProver {
531
504
  apps[1],
532
505
  apps[2],
533
506
  isPrivateOnlyTx,
534
- firstNullifierHint,
535
507
  minRevertibleSideEffectCounter,
536
508
  );
537
- this.log.debug(
538
- `Calling private kernel init_3 with isPrivateOnly ${isPrivateOnlyTx} and firstNullifierHint ${proofInput.firstNullifierHint}`,
539
- );
509
+ this.log.debug(`Calling private kernel init_3 with isPrivateOnly ${isPrivateOnlyTx}`);
540
510
  pushTestData('private-kernel-inputs-init-3', proofInput);
541
511
  output = generateWitnesses
542
512
  ? await this.proofCreator.generateInit3Output(proofInput)
@@ -22,30 +22,45 @@ import type { NullifierMembershipWitness } from '@aztec/stdlib/trees';
22
22
  import type { BlockHeader } from '@aztec/stdlib/tx';
23
23
  import type { VerificationKeyAsFields } from '@aztec/stdlib/vks';
24
24
 
25
+ import type { ContractClassService } from '../contract/contract_class_service.js';
26
+ import { AnchoredContractData } from '../contract_function_simulator/anchored_contract_data.js';
25
27
  import type { ContractStore } from '../storage/contract_store/contract_store.js';
26
28
 
27
29
  /**
28
30
  * Provides functionality needed by the private kernel for interacting with our state trees.
29
31
  */
30
32
  export class PrivateKernelOracle {
33
+ private readonly anchoredContractData: AnchoredContractData;
34
+
31
35
  constructor(
32
36
  private contractStore: ContractStore,
37
+ contractClassService: ContractClassService,
33
38
  private keyStore: KeyStore,
34
39
  private node: AztecNode,
35
40
  private blockHeader: BlockHeader,
36
- ) {}
41
+ ) {
42
+ // Kernels never use contract overrides (those are confined to simulations, which skip proving), so this view is
43
+ // built without them.
44
+ this.anchoredContractData = new AnchoredContractData(contractStore, contractClassService, blockHeader);
45
+ }
37
46
 
38
47
  /** Retrieves the preimage of a contract address from the registered contract instances db. */
39
48
  public async getContractAddressPreimage(
40
49
  address: AztecAddress,
41
50
  ): Promise<ContractInstanceWithAddress & { saltedInitializationHash: Fr }> {
42
- const instance = await this.contractStore.getContractInstance(address);
51
+ const instance = await this.anchoredContractData.getContractInstance(address);
43
52
  if (!instance) {
44
53
  throw new Error(`Contract instance not found when getting address preimage. Contract address: ${address}.`);
45
54
  }
55
+ // Local instance existence was checked above, so resolution below cannot come back empty.
56
+ const currentContractClassId = await this.anchoredContractData.getCurrentClassId(address);
57
+ if (!currentContractClassId) {
58
+ throw new Error(`Could not resolve the current class id for registered contract ${address}.`);
59
+ }
46
60
  return {
47
61
  saltedInitializationHash: await computeSaltedInitializationHash(instance),
48
62
  ...instance,
63
+ currentContractClassId,
49
64
  };
50
65
  }
51
66
 
@@ -114,8 +129,12 @@ export class PrivateKernelOracle {
114
129
  }
115
130
 
116
131
  /** Use debug data to get the function name corresponding to a selector. */
117
- public getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined> {
118
- return this.contractStore.getDebugFunctionName(contractAddress, selector);
132
+ public async getDebugFunctionName(
133
+ contractAddress: AztecAddress,
134
+ selector: FunctionSelector,
135
+ ): Promise<string | undefined> {
136
+ const classId = await this.anchoredContractData.getCurrentClassId(contractAddress);
137
+ return classId ? this.contractStore.getDebugFunctionName(classId, selector) : undefined;
119
138
  }
120
139
 
121
140
  /**