@aztec/pxe 0.0.1-commit.2448fdb → 0.0.1-commit.2606882

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 (279) hide show
  1. package/dest/bin/check_oracle_version.js +40 -96
  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 +26 -0
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  7. package/dest/bin/oracle_version_helpers.js +93 -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 +62 -0
  11. package/dest/block_synchronizer/block_synchronizer.d.ts +5 -3
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +21 -11
  14. package/dest/config/index.d.ts +8 -2
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +13 -15
  17. package/dest/config/package_info.js +1 -1
  18. package/dest/contract_function_simulator/contract_function_simulator.d.ts +4 -1
  19. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/contract_function_simulator.js +20 -12
  21. package/dest/contract_function_simulator/execution_note_cache.d.ts +2 -2
  22. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -9
  24. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
  26. package/dest/contract_function_simulator/index.d.ts +13 -2
  27. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/index.js +10 -0
  29. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +48 -0
  30. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  31. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +45 -0
  32. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  33. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  34. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  35. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -2
  36. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +3 -2
  38. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +12 -2
  39. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +34 -3
  41. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  42. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  43. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  44. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -2
  45. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +3 -2
  47. package/dest/contract_function_simulator/noir-structs/option.d.ts +61 -0
  48. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  49. package/dest/contract_function_simulator/noir-structs/option.js +62 -0
  50. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +11 -0
  51. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  52. package/dest/contract_function_simulator/noir-structs/provided_secret.js +24 -0
  53. package/dest/contract_function_simulator/oracle/interfaces.d.ts +16 -114
  54. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  55. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  56. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  57. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  58. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  59. package/dest/contract_function_simulator/oracle/oracle.d.ts +55 -57
  60. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  61. package/dest/contract_function_simulator/oracle/oracle.js +343 -344
  62. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +127 -0
  63. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  64. package/dest/contract_function_simulator/oracle/oracle_registry.js +786 -0
  65. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +139 -0
  66. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  67. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +560 -0
  68. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +27 -29
  69. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  70. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +55 -47
  71. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +59 -39
  72. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  73. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +244 -149
  74. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  75. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  76. package/dest/contract_function_simulator/proxied_contract_data_source.js +35 -67
  77. package/dest/contract_sync/contract_sync_service.d.ts +4 -6
  78. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  79. package/dest/contract_sync/contract_sync_service.js +43 -24
  80. package/dest/contract_sync/helpers.d.ts +2 -3
  81. package/dest/contract_sync/helpers.d.ts.map +1 -1
  82. package/dest/contract_sync/helpers.js +12 -19
  83. package/dest/debug/pxe_debug_utils.d.ts +1 -6
  84. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  85. package/dest/debug/pxe_debug_utils.js +0 -6
  86. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  87. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  88. package/dest/entrypoints/client/bundle/utils.js +11 -3
  89. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  90. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  91. package/dest/entrypoints/client/lazy/utils.js +11 -3
  92. package/dest/entrypoints/pxe_creation_options.d.ts +7 -1
  93. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  94. package/dest/entrypoints/server/index.d.ts +2 -1
  95. package/dest/entrypoints/server/index.d.ts.map +1 -1
  96. package/dest/entrypoints/server/index.js +1 -0
  97. package/dest/entrypoints/server/utils.d.ts +3 -2
  98. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  99. package/dest/entrypoints/server/utils.js +11 -3
  100. package/dest/events/event_service.d.ts +13 -5
  101. package/dest/events/event_service.d.ts.map +1 -1
  102. package/dest/events/event_service.js +30 -9
  103. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  104. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  105. package/dest/hooks/authorize_utility_call.js +4 -0
  106. package/dest/hooks/execution_hooks.d.ts +42 -0
  107. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  108. package/dest/hooks/execution_hooks.js +9 -0
  109. package/dest/hooks/index.d.ts +4 -0
  110. package/dest/hooks/index.d.ts.map +1 -0
  111. package/dest/hooks/index.js +1 -0
  112. package/dest/logs/log_service.d.ts +6 -5
  113. package/dest/logs/log_service.d.ts.map +1 -1
  114. package/dest/logs/log_service.js +112 -48
  115. package/dest/messages/message_context_service.d.ts +1 -1
  116. package/dest/messages/message_context_service.d.ts.map +1 -1
  117. package/dest/messages/message_context_service.js +28 -9
  118. package/dest/notes/note_service.d.ts +25 -3
  119. package/dest/notes/note_service.d.ts.map +1 -1
  120. package/dest/notes/note_service.js +80 -65
  121. package/dest/oracle_version.d.ts +3 -3
  122. package/dest/oracle_version.js +4 -4
  123. package/dest/private_kernel/batch_planner.d.ts +47 -0
  124. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  125. package/dest/private_kernel/batch_planner.js +104 -0
  126. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +1 -1
  127. package/dest/private_kernel/hints/test_utils.d.ts +1 -1
  128. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
  129. package/dest/private_kernel/hints/test_utils.js +2 -3
  130. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  131. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  132. package/dest/private_kernel/private_kernel_execution_prover.js +148 -52
  133. package/dest/private_kernel/private_kernel_oracle.d.ts +6 -6
  134. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  135. package/dest/private_kernel/private_kernel_oracle.js +12 -7
  136. package/dest/pxe.d.ts +54 -7
  137. package/dest/pxe.d.ts.map +1 -1
  138. package/dest/pxe.js +126 -84
  139. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  140. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  141. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  142. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  143. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  144. package/dest/storage/backwards_compatibility_tests/schema_tests.js +591 -0
  145. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  146. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  147. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  148. package/dest/storage/contract_store/contract_store.d.ts +1 -1
  149. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  150. package/dest/storage/contract_store/contract_store.js +5 -24
  151. package/dest/storage/metadata.d.ts +1 -1
  152. package/dest/storage/metadata.js +1 -1
  153. package/dest/storage/open_pxe_stores.d.ts +33 -0
  154. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  155. package/dest/storage/open_pxe_stores.js +27 -0
  156. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  157. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  158. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  159. package/dest/storage/tagging_store/sender_tagging_store.d.ts +5 -5
  160. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  161. package/dest/storage/tagging_store/sender_tagging_store.js +3 -3
  162. package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
  163. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  164. package/dest/tagging/get_all_logs_by_tags.js +36 -37
  165. package/dest/tagging/index.d.ts +5 -4
  166. package/dest/tagging/index.d.ts.map +1 -1
  167. package/dest/tagging/index.js +4 -3
  168. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  169. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  170. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  171. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +56 -0
  172. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  173. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +163 -0
  174. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  175. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  176. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  177. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  178. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  179. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -5
  180. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  181. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +26 -14
  182. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -6
  183. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  184. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +21 -0
  185. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
  186. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  187. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +2 -2
  188. package/package.json +20 -17
  189. package/src/bin/check_oracle_version.ts +46 -119
  190. package/src/bin/index.ts +1 -0
  191. package/src/bin/oracle_version_helpers.ts +121 -0
  192. package/src/block_synchronizer/block_stream_source.ts +81 -0
  193. package/src/block_synchronizer/block_synchronizer.ts +22 -12
  194. package/src/config/index.ts +15 -9
  195. package/src/config/package_info.ts +1 -1
  196. package/src/contract_function_simulator/contract_function_simulator.ts +34 -11
  197. package/src/contract_function_simulator/execution_note_cache.ts +1 -1
  198. package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
  199. package/src/contract_function_simulator/index.ts +50 -1
  200. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +55 -0
  201. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  202. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +3 -2
  203. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +35 -2
  204. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  205. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -2
  206. package/src/contract_function_simulator/noir-structs/option.ts +69 -0
  207. package/src/contract_function_simulator/noir-structs/provided_secret.ts +27 -0
  208. package/src/contract_function_simulator/oracle/interfaces.ts +12 -204
  209. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  210. package/src/contract_function_simulator/oracle/oracle.ts +406 -556
  211. package/src/contract_function_simulator/oracle/oracle_registry.ts +585 -0
  212. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +553 -0
  213. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +74 -67
  214. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +350 -304
  215. package/src/contract_function_simulator/proxied_contract_data_source.ts +40 -70
  216. package/src/contract_sync/contract_sync_service.ts +56 -43
  217. package/src/contract_sync/helpers.ts +11 -23
  218. package/src/debug/pxe_debug_utils.ts +0 -8
  219. package/src/entrypoints/client/bundle/utils.ts +8 -2
  220. package/src/entrypoints/client/lazy/utils.ts +8 -2
  221. package/src/entrypoints/pxe_creation_options.ts +7 -0
  222. package/src/entrypoints/server/index.ts +1 -0
  223. package/src/entrypoints/server/utils.ts +13 -3
  224. package/src/events/event_service.ts +54 -19
  225. package/src/hooks/authorize_utility_call.ts +44 -0
  226. package/src/hooks/execution_hooks.ts +48 -0
  227. package/src/hooks/index.ts +7 -0
  228. package/src/logs/log_service.ts +137 -92
  229. package/src/messages/message_context_service.ts +42 -24
  230. package/src/notes/note_service.ts +115 -91
  231. package/src/oracle_version.ts +4 -4
  232. package/src/private_kernel/batch_planner.ts +169 -0
  233. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +1 -1
  234. package/src/private_kernel/hints/test_utils.ts +2 -9
  235. package/src/private_kernel/private_kernel_execution_prover.ts +236 -73
  236. package/src/private_kernel/private_kernel_oracle.ts +21 -11
  237. package/src/pxe.ts +208 -85
  238. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  239. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  240. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  241. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  242. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  243. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +46 -0
  244. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +36 -0
  245. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  246. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  247. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +16 -0
  248. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  249. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +97 -0
  250. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  251. package/src/storage/backwards_compatibility_tests/schema_tests.ts +712 -0
  252. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  253. package/src/storage/contract_store/contract_store.ts +6 -29
  254. package/src/storage/metadata.ts +1 -1
  255. package/src/storage/open_pxe_stores.ts +49 -0
  256. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  257. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
  258. package/src/storage/tagging_store/sender_tagging_store.ts +6 -6
  259. package/src/tagging/get_all_logs_by_tags.ts +78 -50
  260. package/src/tagging/index.ts +4 -3
  261. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  262. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +240 -0
  263. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  264. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  265. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +41 -19
  266. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +23 -8
  267. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +4 -5
  268. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
  269. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
  270. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -47
  271. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  272. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  273. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -85
  274. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  275. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  276. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
  277. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -104
  278. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -130
  279. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
@@ -2,11 +2,10 @@ import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS, PRIVATE_CONTEXT_INPUTS_LENGTH }
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { Timer } from '@aztec/foundation/timer';
5
- import { type CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
5
+ import { toACVMWitness } from '@aztec/simulator/client';
6
6
  import {
7
7
  type FunctionAbi,
8
8
  type FunctionArtifact,
9
- type FunctionCall,
10
9
  FunctionSelector,
11
10
  type NoteSelector,
12
11
  countArgumentsSize,
@@ -14,8 +13,12 @@ import {
14
13
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
15
14
  import { siloNullifier } from '@aztec/stdlib/hash';
16
15
  import { PrivateContextInputs } from '@aztec/stdlib/kernel';
17
- import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
18
- import { Tag } from '@aztec/stdlib/logs';
16
+ import {
17
+ AppTaggingSecret,
18
+ AppTaggingSecretKind,
19
+ type ContractClassLog,
20
+ type TaggingIndexRange,
21
+ } from '@aztec/stdlib/logs';
19
22
  import { Note, type NoteStatus } from '@aztec/stdlib/note';
20
23
  import {
21
24
  CallContext,
@@ -31,8 +34,11 @@ import { syncSenderTaggingIndexes } from '../../tagging/index.js';
31
34
  import type { ExecutionNoteCache } from '../execution_note_cache.js';
32
35
  import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
33
36
  import type { HashedValuesCache } from '../hashed_values_cache.js';
37
+ import { BoundedVec } from '../noir-structs/bounded_vec.js';
38
+ import type { NoteData } from '../noir-structs/note_data.js';
39
+ import { Option } from '../noir-structs/option.js';
34
40
  import { pickNotes } from '../pick_notes.js';
35
- import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
41
+ import type { IPrivateExecutionOracle } from './interfaces.js';
36
42
  import { executePrivateFunction } from './private_execution.js';
37
43
  import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
38
44
 
@@ -41,8 +47,6 @@ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contr
41
47
  argsHash: Fr;
42
48
  txContext: TxContext;
43
49
  callContext: CallContext;
44
- /** Needed to trigger contract synchronization before nested calls */
45
- utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<void>;
46
50
  executionCache: HashedValuesCache;
47
51
  noteCache: ExecutionNoteCache;
48
52
  taggingIndexCache: ExecutionTaggingIndexCache;
@@ -50,7 +54,6 @@ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contr
50
54
  totalPublicCalldataCount?: number;
51
55
  sideEffectCounter?: number;
52
56
  senderForTags?: AztecAddress;
53
- simulator?: CircuitSimulator;
54
57
  };
55
58
 
56
59
  /**
@@ -75,15 +78,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
75
78
  private readonly argsHash: Fr;
76
79
  private readonly txContext: TxContext;
77
80
  private readonly callContext: CallContext;
78
- private readonly utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<void>;
79
81
  private readonly executionCache: HashedValuesCache;
80
82
  private readonly noteCache: ExecutionNoteCache;
81
83
  private readonly taggingIndexCache: ExecutionTaggingIndexCache;
82
84
  private readonly senderTaggingStore: SenderTaggingStore;
83
85
  private totalPublicCalldataCount: number;
84
86
  private readonly initialSideEffectCounter: number;
85
- private senderForTags?: AztecAddress;
86
- private readonly simulator?: CircuitSimulator;
87
+ /** Sender for tags passed in at oracle construction time. Returned by `getSenderForTags`. */
88
+ private readonly defaultSenderForTags: AztecAddress | undefined;
87
89
 
88
90
  constructor(args: PrivateExecutionOracleArgs) {
89
91
  super({
@@ -94,15 +96,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
94
96
  this.argsHash = args.argsHash;
95
97
  this.txContext = args.txContext;
96
98
  this.callContext = args.callContext;
97
- this.utilityExecutor = args.utilityExecutor;
98
99
  this.executionCache = args.executionCache;
99
100
  this.noteCache = args.noteCache;
100
101
  this.taggingIndexCache = args.taggingIndexCache;
101
102
  this.senderTaggingStore = args.senderTaggingStore;
102
103
  this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
103
104
  this.initialSideEffectCounter = args.sideEffectCounter ?? 0;
104
- this.senderForTags = args.senderForTags;
105
- this.simulator = args.simulator;
105
+ this.defaultSenderForTags = args.senderForTags;
106
106
  }
107
107
 
108
108
  public getPrivateContextInputs(): PrivateContextInputs {
@@ -178,69 +178,62 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
178
178
  * for a tag in order to emit a log. Constrained tagging should not use this as there is no
179
179
  * guarantee that the recipient knows about the sender, and hence about the shared secret.
180
180
  *
181
- * The value persists through nested calls, meaning all calls down the stack will use the same
182
- * 'senderForTags' value (unless it is replaced).
181
+ * Returns the wallet-supplied default sender for tags, or `None` if no default was provided.
183
182
  */
184
- public getSenderForTags(): Promise<AztecAddress | undefined> {
185
- return Promise.resolve(this.senderForTags);
183
+ public getSenderForTags(): Promise<Option<AztecAddress>> {
184
+ return Promise.resolve(
185
+ this.defaultSenderForTags ? Option.some(this.defaultSenderForTags) : Option.none(AztecAddress.ZERO),
186
+ );
186
187
  }
187
188
 
188
189
  /**
189
- * Set the sender for tags.
190
+ * Returns the sender-side app tagging secret for a `(sender, recipient)` pair.
190
191
  *
191
- * This unconstrained value is used as the sender when computing an unconstrained shared secret
192
- * for a tag in order to emit a log. Constrained tagging should not use this as there is no
193
- * guarantee that the recipient knows about the sender, and hence about the shared secret.
192
+ * The caller obtains an index via {@link getNextTaggingIndex} and computes the final tag itself.
193
+ * The only expected `None` case is an invalid recipient address; missing sender data fails while deriving.
194
194
  *
195
- * Account contracts typically set this value before calling other contracts. The value persists
196
- * through nested calls, meaning all calls down the stack will use the same 'senderForTags'
197
- * value (unless it is replaced by another call to this setter).
198
- */
199
- public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
200
- this.senderForTags = senderForTags;
201
- return Promise.resolve();
202
- }
203
-
204
- /**
205
- * Returns the next app tag for a given sender and recipient pair.
206
195
  * @param sender - The address sending the log
207
196
  * @param recipient - The address receiving the log
208
- * @returns An app tag to be used in a log.
197
+ * @returns The app tagging secret, or `None` if the recipient is invalid.
209
198
  */
210
- public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
211
- const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
212
- this.contractAddress,
213
- sender,
214
- recipient,
215
- );
199
+ public async getAppTaggingSecret(sender: AztecAddress, recipient: AztecAddress): Promise<Option<Fr>> {
200
+ const extendedSecret = await this.#calculateAppTaggingSecret(this.contractAddress, sender, recipient);
216
201
 
217
202
  if (!extendedSecret) {
218
- // We'd only fail to compute an extended secret if the recipient is an invalid address. To prevent
219
- // king-of-the-hill attacks, instead of failing we use a random tag. By including a correct-looking tag in the
220
- // log, the transaction shape is preserved and no privacy is leaked, even if the tag is bogus.
221
- this.logger.warn(`Computing a tag for invalid recipient ${recipient} - returning a random tag instead`, {
203
+ this.logger.warn(`Computing a tagging secret for invalid recipient ${recipient} - returning no secret`, {
222
204
  contractAddress: this.contractAddress,
223
205
  });
224
- return new Tag(Fr.random());
206
+ return Option.none(Fr.ZERO);
225
207
  }
226
208
 
227
- const index = await this.#getIndexToUseForSecret(extendedSecret);
228
- this.logger.debug(
229
- `Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
230
- );
231
- this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
209
+ return Option.some(extendedSecret.secret);
210
+ }
232
211
 
233
- return Tag.compute({ extendedSecret, index });
212
+ /**
213
+ * Returns the next sender-side tagging index for a given secret and delivery mode.
214
+ *
215
+ * @param secret - The tagging secret to allocate an index for.
216
+ * @param kind - The sender-side index namespace.
217
+ * @returns The next index to use for this secret.
218
+ */
219
+ public async getNextTaggingIndex(secret: Fr, kind: AppTaggingSecretKind): Promise<number> {
220
+ const appTaggingSecret = new AppTaggingSecret(secret, this.contractAddress, kind);
221
+ const index = await this.#reserveNextIndexForSecret(appTaggingSecret);
222
+ this.logger.debug(`Incrementing ${kind} tagging index for secret in contract ${this.contractAddress} to ${index}`);
223
+ return index;
234
224
  }
235
225
 
236
- async #calculateExtendedDirectionalAppTaggingSecret(
237
- contractAddress: AztecAddress,
238
- sender: AztecAddress,
239
- recipient: AztecAddress,
240
- ) {
226
+ /** Resolves the next index for a given tagging secret, syncing from chain if it is missing from the in-tx cache. */
227
+ async #reserveNextIndexForSecret(secret: AppTaggingSecret): Promise<number> {
228
+ const index = await this.#getIndexToUseForSecret(secret);
229
+ this.taggingIndexCache.setLastUsedIndex(secret, index);
230
+ return index;
231
+ }
232
+
233
+ async #calculateAppTaggingSecret(contractAddress: AztecAddress, sender: AztecAddress, recipient: AztecAddress) {
241
234
  const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
242
235
  const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
243
- return ExtendedDirectionalAppTaggingSecret.compute(
236
+ return AppTaggingSecret.computeUnconstrained(
244
237
  senderCompleteAddress,
245
238
  senderIvsk,
246
239
  recipient,
@@ -249,7 +242,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
249
242
  );
250
243
  }
251
244
 
252
- async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
245
+ async #getIndexToUseForSecret(secret: AppTaggingSecret): Promise<number> {
253
246
  // If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
254
247
  const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
255
248
 
@@ -335,7 +328,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
335
328
  * @returns Array of note data.
336
329
  */
337
330
  public override async getNotes(
338
- owner: AztecAddress | undefined,
331
+ owner: Option<AztecAddress>,
339
332
  storageSlot: Fr,
340
333
  numSelects: number,
341
334
  selectByIndexes: number[],
@@ -350,16 +343,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
350
343
  limit: number,
351
344
  offset: number,
352
345
  status: NoteStatus,
353
- ): Promise<NoteData[]> {
346
+ maxNotes: number,
347
+ packedHintedNoteLength: number,
348
+ ): Promise<BoundedVec<NoteData>> {
354
349
  // Nullified pending notes are already removed from the list.
355
- const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
350
+ const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner.value, storageSlot);
356
351
 
357
352
  const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
358
353
 
359
354
  const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
360
355
  const dbNotes = await noteService.getNotes(
361
356
  this.callContext.contractAddress,
362
- owner,
357
+ owner.value,
363
358
  storageSlot,
364
359
  status,
365
360
  this.scopes,
@@ -386,7 +381,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
386
381
  .join(', ')}`,
387
382
  );
388
383
 
389
- return notes;
384
+ return BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength });
390
385
  }
391
386
 
392
387
  /**
@@ -576,23 +571,27 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
576
571
  jobId: this.jobId,
577
572
  totalPublicCalldataCount: this.totalPublicCalldataCount,
578
573
  sideEffectCounter,
579
- scopes: this.scopes,
580
574
  log: this.logger,
581
- senderForTags: this.senderForTags,
582
- simulator: this.simulator!,
575
+ scopes: this.scopes,
576
+ senderForTags: this.defaultSenderForTags,
577
+ simulator: this.simulator,
578
+ hooks: this.hooks,
583
579
  l2TipsStore: this.l2TipsStore,
584
580
  });
585
581
 
586
582
  const setupTime = simulatorSetupTimer.ms();
587
583
 
588
584
  const childExecutionResult = await executePrivateFunction(
589
- this.simulator!,
585
+ this.simulator,
590
586
  privateExecutionOracle,
591
587
  targetArtifact,
592
588
  targetContractAddress,
593
589
  functionSelector,
594
590
  );
595
591
 
592
+ // Propagate the nested call's calldata count so the parent sees its increments on subsequent enqueues.
593
+ this.totalPublicCalldataCount = privateExecutionOracle.getTotalPublicCalldataCount();
594
+
596
595
  if (isStaticCall) {
597
596
  this.#checkValidStaticCall(childExecutionResult);
598
597
  }
@@ -626,6 +625,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
626
625
  return Promise.resolve();
627
626
  }
628
627
 
628
+ public getTotalPublicCalldataCount(): number {
629
+ return this.totalPublicCalldataCount;
630
+ }
631
+
629
632
  public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
630
633
  return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
631
634
  }
@@ -657,4 +660,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
657
660
  public getDebugFunctionName() {
658
661
  return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
659
662
  }
663
+
664
+ protected override get callerContext() {
665
+ return this.callContext.isStaticCall ? 'private view' : 'private';
666
+ }
660
667
  }