@aztec/pxe 0.0.1-commit.6d3c34e → 0.0.1-commit.72dcdcda8

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 (269) hide show
  1. package/dest/access_scopes.d.ts +9 -0
  2. package/dest/access_scopes.d.ts.map +1 -0
  3. package/dest/access_scopes.js +6 -0
  4. package/dest/bin/check_oracle_version.js +1 -1
  5. package/dest/block_synchronizer/block_synchronizer.d.ts +11 -5
  6. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  7. package/dest/block_synchronizer/block_synchronizer.js +72 -21
  8. package/dest/config/index.d.ts +3 -1
  9. package/dest/config/index.d.ts.map +1 -1
  10. package/dest/config/index.js +17 -0
  11. package/dest/config/package_info.js +1 -1
  12. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  13. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  14. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  15. package/dest/contract_function_simulator/contract_function_simulator.d.ts +57 -35
  16. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  17. package/dest/contract_function_simulator/contract_function_simulator.js +198 -84
  18. package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
  19. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/execution_note_cache.js +45 -28
  21. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -5
  22. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -3
  24. package/dest/contract_function_simulator/index.d.ts +2 -2
  25. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  26. package/dest/contract_function_simulator/index.js +1 -1
  27. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +1 -1
  28. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +2 -2
  29. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -3
  30. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +2 -2
  32. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  33. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  34. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  35. package/dest/contract_function_simulator/oracle/interfaces.d.ts +17 -13
  36. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
  38. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +6 -6
  40. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  41. package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
  42. package/dest/contract_function_simulator/oracle/oracle.d.ts +12 -10
  43. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/oracle/oracle.js +67 -44
  45. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
  46. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/oracle/private_execution.js +0 -35
  48. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +44 -35
  49. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  50. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +89 -32
  51. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +66 -33
  52. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  53. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +130 -111
  54. package/dest/contract_logging.d.ts +22 -0
  55. package/dest/contract_logging.d.ts.map +1 -0
  56. package/dest/contract_logging.js +23 -0
  57. package/dest/contract_sync/contract_sync_service.d.ts +43 -0
  58. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  59. package/dest/contract_sync/contract_sync_service.js +97 -0
  60. package/dest/contract_sync/helpers.d.ts +29 -0
  61. package/dest/contract_sync/helpers.d.ts.map +1 -0
  62. package/dest/contract_sync/helpers.js +55 -0
  63. package/dest/debug/pxe_debug_utils.d.ts +24 -10
  64. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  65. package/dest/debug/pxe_debug_utils.js +28 -17
  66. package/dest/entrypoints/client/bundle/index.d.ts +4 -1
  67. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  68. package/dest/entrypoints/client/bundle/index.js +3 -0
  69. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  70. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  71. package/dest/entrypoints/client/bundle/utils.js +21 -7
  72. package/dest/entrypoints/client/lazy/index.d.ts +4 -1
  73. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  74. package/dest/entrypoints/client/lazy/index.js +3 -0
  75. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  76. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  77. package/dest/entrypoints/client/lazy/utils.js +22 -8
  78. package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
  79. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  80. package/dest/entrypoints/server/index.d.ts +5 -1
  81. package/dest/entrypoints/server/index.d.ts.map +1 -1
  82. package/dest/entrypoints/server/index.js +4 -0
  83. package/dest/entrypoints/server/utils.d.ts +1 -1
  84. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  85. package/dest/entrypoints/server/utils.js +28 -9
  86. package/dest/events/event_service.d.ts +6 -6
  87. package/dest/events/event_service.d.ts.map +1 -1
  88. package/dest/events/event_service.js +19 -22
  89. package/dest/events/private_event_filter_validator.d.ts +5 -5
  90. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  91. package/dest/events/private_event_filter_validator.js +5 -6
  92. package/dest/job_coordinator/job_coordinator.d.ts +3 -2
  93. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
  94. package/dest/job_coordinator/job_coordinator.js +3 -2
  95. package/dest/logs/log_service.d.ts +8 -5
  96. package/dest/logs/log_service.d.ts.map +1 -1
  97. package/dest/logs/log_service.js +31 -33
  98. package/dest/notes/note_service.d.ts +10 -9
  99. package/dest/notes/note_service.d.ts.map +1 -1
  100. package/dest/notes/note_service.js +34 -38
  101. package/dest/notes_filter.d.ts +25 -0
  102. package/dest/notes_filter.d.ts.map +1 -0
  103. package/dest/notes_filter.js +4 -0
  104. package/dest/oracle_version.d.ts +3 -3
  105. package/dest/oracle_version.d.ts.map +1 -1
  106. package/dest/oracle_version.js +4 -3
  107. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  108. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  109. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  110. package/dest/private_kernel/hints/index.d.ts +3 -3
  111. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  112. package/dest/private_kernel/hints/index.js +2 -2
  113. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
  114. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  115. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +140 -73
  116. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  117. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  118. package/dest/private_kernel/hints/test_utils.js +203 -0
  119. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  120. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  121. package/dest/private_kernel/private_kernel_execution_prover.js +22 -14
  122. package/dest/private_kernel/private_kernel_oracle.d.ts +23 -24
  123. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  124. package/dest/private_kernel/private_kernel_oracle.js +94 -2
  125. package/dest/pxe.d.ts +77 -59
  126. package/dest/pxe.d.ts.map +1 -1
  127. package/dest/pxe.js +132 -136
  128. package/dest/storage/address_store/address_store.d.ts +1 -1
  129. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  130. package/dest/storage/address_store/address_store.js +12 -11
  131. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
  132. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  133. package/dest/storage/anchor_block_store/anchor_block_store.js +8 -1
  134. package/dest/storage/capsule_store/capsule_store.d.ts +24 -9
  135. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  136. package/dest/storage/capsule_store/capsule_store.js +130 -23
  137. package/dest/storage/contract_store/contract_store.d.ts +42 -16
  138. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  139. package/dest/storage/contract_store/contract_store.js +157 -84
  140. package/dest/storage/metadata.d.ts +1 -1
  141. package/dest/storage/metadata.js +1 -1
  142. package/dest/storage/note_store/note_store.d.ts +50 -51
  143. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  144. package/dest/storage/note_store/note_store.js +284 -263
  145. package/dest/storage/note_store/stored_note.d.ts +16 -0
  146. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  147. package/dest/storage/note_store/stored_note.js +43 -0
  148. package/dest/storage/private_event_store/private_event_store.d.ts +43 -8
  149. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  150. package/dest/storage/private_event_store/private_event_store.js +226 -111
  151. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  152. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  153. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  154. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +16 -9
  155. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  156. package/dest/storage/tagging_store/recipient_tagging_store.js +88 -19
  157. package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
  158. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
  159. package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
  160. package/dest/storage/tagging_store/sender_tagging_store.d.ts +20 -10
  161. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  162. package/dest/storage/tagging_store/sender_tagging_store.js +253 -101
  163. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  164. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  165. package/dest/tagging/get_all_logs_by_tags.js +60 -0
  166. package/dest/tagging/index.d.ts +3 -2
  167. package/dest/tagging/index.d.ts.map +1 -1
  168. package/dest/tagging/index.js +2 -1
  169. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +5 -5
  170. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  171. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +11 -11
  172. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  173. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +7 -7
  174. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  175. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +16 -12
  176. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -8
  177. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  178. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +8 -11
  179. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +1 -1
  180. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  181. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +5 -8
  182. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +7 -7
  183. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  184. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +23 -19
  185. package/package.json +27 -18
  186. package/src/access_scopes.ts +9 -0
  187. package/src/bin/check_oracle_version.ts +1 -0
  188. package/src/block_synchronizer/block_synchronizer.ts +91 -33
  189. package/src/config/index.ts +14 -0
  190. package/src/config/package_info.ts +1 -1
  191. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  192. package/src/contract_function_simulator/contract_function_simulator.ts +349 -148
  193. package/src/contract_function_simulator/execution_note_cache.ts +44 -25
  194. package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -5
  195. package/src/contract_function_simulator/index.ts +1 -1
  196. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +2 -2
  197. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
  198. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  199. package/src/contract_function_simulator/oracle/interfaces.ts +22 -12
  200. package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
  201. package/src/contract_function_simulator/oracle/oracle.ts +79 -47
  202. package/src/contract_function_simulator/oracle/private_execution.ts +1 -67
  203. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +129 -112
  204. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +197 -116
  205. package/src/contract_logging.ts +39 -0
  206. package/src/contract_sync/contract_sync_service.ts +152 -0
  207. package/src/contract_sync/helpers.ts +98 -0
  208. package/src/debug/pxe_debug_utils.ts +63 -18
  209. package/src/entrypoints/client/bundle/index.ts +3 -0
  210. package/src/entrypoints/client/bundle/utils.ts +16 -15
  211. package/src/entrypoints/client/lazy/index.ts +3 -0
  212. package/src/entrypoints/client/lazy/utils.ts +17 -15
  213. package/src/entrypoints/pxe_creation_options.ts +2 -1
  214. package/src/entrypoints/server/index.ts +4 -0
  215. package/src/entrypoints/server/utils.ts +22 -26
  216. package/src/events/event_service.ts +17 -25
  217. package/src/events/private_event_filter_validator.ts +3 -5
  218. package/src/job_coordinator/job_coordinator.ts +4 -3
  219. package/src/logs/log_service.ts +51 -40
  220. package/src/notes/note_service.ts +41 -45
  221. package/src/notes_filter.ts +26 -0
  222. package/src/oracle_version.ts +4 -3
  223. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  224. package/src/private_kernel/hints/index.ts +2 -2
  225. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +195 -136
  226. package/src/private_kernel/hints/test_utils.ts +325 -0
  227. package/src/private_kernel/private_kernel_execution_prover.ts +26 -16
  228. package/src/private_kernel/private_kernel_oracle.ts +116 -37
  229. package/src/pxe.ts +243 -213
  230. package/src/storage/address_store/address_store.ts +15 -15
  231. package/src/storage/anchor_block_store/anchor_block_store.ts +8 -0
  232. package/src/storage/capsule_store/capsule_store.ts +159 -23
  233. package/src/storage/contract_store/contract_store.ts +186 -96
  234. package/src/storage/metadata.ts +1 -1
  235. package/src/storage/note_store/note_store.ts +326 -320
  236. package/src/storage/note_store/stored_note.ts +48 -0
  237. package/src/storage/private_event_store/private_event_store.ts +292 -124
  238. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  239. package/src/storage/tagging_store/recipient_tagging_store.ts +111 -21
  240. package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
  241. package/src/storage/tagging_store/sender_tagging_store.ts +296 -111
  242. package/src/tagging/get_all_logs_by_tags.ts +92 -0
  243. package/src/tagging/index.ts +2 -1
  244. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +22 -14
  245. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  246. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +17 -16
  247. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +12 -14
  248. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +5 -17
  249. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +26 -23
  250. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  251. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  252. package/dest/contract_function_simulator/proxied_node.js +0 -27
  253. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  254. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  255. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  256. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  257. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
  258. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  259. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -85
  260. package/dest/public_storage/public_storage_service.d.ts +0 -24
  261. package/dest/public_storage/public_storage_service.d.ts.map +0 -1
  262. package/dest/public_storage/public_storage_service.js +0 -26
  263. package/dest/tree_membership/tree_membership_service.d.ts +0 -52
  264. package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
  265. package/dest/tree_membership/tree_membership_service.js +0 -84
  266. package/src/contract_function_simulator/proxied_node.ts +0 -33
  267. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -127
  268. package/src/public_storage/public_storage_service.ts +0 -33
  269. package/src/tree_membership/tree_membership_service.ts +0 -112
@@ -2,7 +2,6 @@ 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 { KeyStore } from '@aztec/key-store';
6
5
  import { type CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
7
6
  import {
8
7
  type FunctionAbi,
@@ -12,33 +11,23 @@ import {
12
11
  type NoteSelector,
13
12
  countArgumentsSize,
14
13
  } from '@aztec/stdlib/abi';
15
- import type { AuthWitness } from '@aztec/stdlib/auth-witness';
16
14
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
17
15
  import { siloNullifier } from '@aztec/stdlib/hash';
18
- import type { AztecNode } from '@aztec/stdlib/interfaces/client';
19
16
  import { PrivateContextInputs } from '@aztec/stdlib/kernel';
20
- import { type ContractClassLog, DirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
17
+ import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
21
18
  import { Tag } from '@aztec/stdlib/logs';
22
19
  import { Note, type NoteStatus } from '@aztec/stdlib/note';
23
20
  import {
24
- type BlockHeader,
25
21
  CallContext,
26
- Capsule,
27
22
  CountedContractClassLog,
28
23
  NoteAndSlot,
29
24
  PrivateCallExecutionResult,
30
25
  type TxContext,
31
26
  } from '@aztec/stdlib/tx';
32
27
 
28
+ import type { AccessScopes } from '../../access_scopes.js';
29
+ import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
33
30
  import { NoteService } from '../../notes/note_service.js';
34
- import type { AddressStore } from '../../storage/address_store/address_store.js';
35
- import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
36
- import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
37
- import type { ContractStore } from '../../storage/contract_store/contract_store.js';
38
- import type { NoteStore } from '../../storage/note_store/note_store.js';
39
- import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
40
- import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
41
- import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
42
31
  import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
43
32
  import { syncSenderTaggingIndexes } from '../../tagging/index.js';
44
33
  import type { ExecutionNoteCache } from '../execution_note_cache.js';
@@ -46,8 +35,26 @@ import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js'
46
35
  import type { HashedValuesCache } from '../hashed_values_cache.js';
47
36
  import { pickNotes } from '../pick_notes.js';
48
37
  import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
49
- import { executePrivateFunction, verifyCurrentClassId } from './private_execution.js';
50
- import { UtilityExecutionOracle } from './utility_execution_oracle.js';
38
+ import { executePrivateFunction } from './private_execution.js';
39
+ import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
40
+
41
+ /** Args for PrivateExecutionOracle constructor. */
42
+ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
43
+ argsHash: Fr;
44
+ txContext: TxContext;
45
+ callContext: CallContext;
46
+ /** Needed to trigger contract synchronization before nested calls */
47
+ utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
48
+ executionCache: HashedValuesCache;
49
+ noteCache: ExecutionNoteCache;
50
+ taggingIndexCache: ExecutionTaggingIndexCache;
51
+ senderTaggingStore: SenderTaggingStore;
52
+ contractSyncService: ContractSyncService;
53
+ totalPublicCalldataCount?: number;
54
+ sideEffectCounter?: number;
55
+ senderForTags?: AztecAddress;
56
+ simulator?: CircuitSimulator;
57
+ };
51
58
 
52
59
  /**
53
60
  * The execution oracle for the private part of a transaction.
@@ -69,58 +76,39 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
69
76
  private offchainEffects: { data: Fr[] }[] = [];
70
77
  private nestedExecutionResults: PrivateCallExecutionResult[] = [];
71
78
 
72
- constructor(
73
- private readonly argsHash: Fr,
74
- private readonly txContext: TxContext,
75
- private readonly callContext: CallContext,
76
- /** Header of a block whose state is used during private execution (not the block the transaction is included in). */
77
- protected override readonly anchorBlockHeader: BlockHeader,
78
- /** Needed to trigger contract synchronization before nested calls */
79
- private readonly utilityExecutor: (call: FunctionCall) => Promise<void>,
80
- /** List of transient auth witnesses to be used during this simulation */
81
- authWitnesses: AuthWitness[],
82
- capsules: Capsule[],
83
- private readonly executionCache: HashedValuesCache,
84
- private readonly noteCache: ExecutionNoteCache,
85
- private readonly taggingIndexCache: ExecutionTaggingIndexCache,
86
- contractStore: ContractStore,
87
- noteStore: NoteStore,
88
- keyStore: KeyStore,
89
- addressStore: AddressStore,
90
- aztecNode: AztecNode,
91
- anchorBlockStore: AnchorBlockStore,
92
- private readonly senderTaggingStore: SenderTaggingStore,
93
- recipientTaggingStore: RecipientTaggingStore,
94
- senderAddressBookStore: SenderAddressBookStore,
95
- capsuleStore: CapsuleStore,
96
- privateEventStore: PrivateEventStore,
97
- jobId: string,
98
- private totalPublicCalldataCount: number = 0,
99
- protected sideEffectCounter: number = 0,
100
- log = createLogger('simulator:client_execution_context'),
101
- scopes?: AztecAddress[],
102
- private senderForTags?: AztecAddress,
103
- private simulator?: CircuitSimulator,
104
- ) {
105
- super(
106
- callContext.contractAddress,
107
- authWitnesses,
108
- capsules,
109
- anchorBlockHeader,
110
- contractStore,
111
- noteStore,
112
- keyStore,
113
- addressStore,
114
- aztecNode,
115
- anchorBlockStore,
116
- recipientTaggingStore,
117
- senderAddressBookStore,
118
- capsuleStore,
119
- privateEventStore,
120
- jobId,
121
- log,
122
- scopes,
123
- );
79
+ private readonly argsHash: Fr;
80
+ private readonly txContext: TxContext;
81
+ private readonly callContext: CallContext;
82
+ private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
83
+ private readonly executionCache: HashedValuesCache;
84
+ private readonly noteCache: ExecutionNoteCache;
85
+ private readonly taggingIndexCache: ExecutionTaggingIndexCache;
86
+ private readonly senderTaggingStore: SenderTaggingStore;
87
+ private readonly contractSyncService: ContractSyncService;
88
+ private totalPublicCalldataCount: number;
89
+ protected sideEffectCounter: number;
90
+ private senderForTags?: AztecAddress;
91
+ private readonly simulator?: CircuitSimulator;
92
+
93
+ constructor(args: PrivateExecutionOracleArgs) {
94
+ super({
95
+ ...args,
96
+ contractAddress: args.callContext.contractAddress,
97
+ log: args.log ?? createLogger('simulator:client_execution_context'),
98
+ });
99
+ this.argsHash = args.argsHash;
100
+ this.txContext = args.txContext;
101
+ this.callContext = args.callContext;
102
+ this.utilityExecutor = args.utilityExecutor;
103
+ this.executionCache = args.executionCache;
104
+ this.noteCache = args.noteCache;
105
+ this.taggingIndexCache = args.taggingIndexCache;
106
+ this.senderTaggingStore = args.senderTaggingStore;
107
+ this.contractSyncService = args.contractSyncService;
108
+ this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
109
+ this.sideEffectCounter = args.sideEffectCounter ?? 0;
110
+ this.senderForTags = args.senderForTags;
111
+ this.simulator = args.simulator;
124
112
  }
125
113
 
126
114
  public getPrivateContextInputs(): PrivateContextInputs {
@@ -228,25 +216,29 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
228
216
  * @returns An app tag to be used in a log.
229
217
  */
230
218
  public async privateGetNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
231
- const secret = await this.#calculateDirectionalAppTaggingSecret(this.contractAddress, sender, recipient);
219
+ const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
220
+ this.contractAddress,
221
+ sender,
222
+ recipient,
223
+ );
232
224
 
233
- const index = await this.#getIndexToUseForSecret(secret);
225
+ const index = await this.#getIndexToUseForSecret(extendedSecret);
234
226
  this.log.debug(
235
227
  `Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
236
228
  );
237
- this.taggingIndexCache.setLastUsedIndex(secret, index);
229
+ this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
238
230
 
239
- return Tag.compute({ secret, index });
231
+ return Tag.compute({ extendedSecret, index });
240
232
  }
241
233
 
242
- async #calculateDirectionalAppTaggingSecret(
234
+ async #calculateExtendedDirectionalAppTaggingSecret(
243
235
  contractAddress: AztecAddress,
244
236
  sender: AztecAddress,
245
237
  recipient: AztecAddress,
246
238
  ) {
247
- const senderCompleteAddress = await this.getCompleteAddress(sender);
239
+ const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
248
240
  const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
249
- return DirectionalAppTaggingSecret.compute(
241
+ return ExtendedDirectionalAppTaggingSecret.compute(
250
242
  senderCompleteAddress,
251
243
  senderIvsk,
252
244
  recipient,
@@ -255,7 +247,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
255
247
  );
256
248
  }
257
249
 
258
- async #getIndexToUseForSecret(secret: DirectionalAppTaggingSecret): Promise<number> {
250
+ async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
259
251
  // If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
260
252
  const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
261
253
 
@@ -265,9 +257,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
265
257
  // This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
266
258
  // are up to date. We do this here because this store is not synced as part of the global sync because
267
259
  // that'd be wasteful as most tagging secrets are not used in each tx.
268
- await syncSenderTaggingIndexes(secret, this.contractAddress, this.aztecNode, this.senderTaggingStore);
269
-
270
- const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret);
260
+ await syncSenderTaggingIndexes(
261
+ secret,
262
+ this.aztecNode,
263
+ this.senderTaggingStore,
264
+ await this.anchorBlockHeader.hash(),
265
+ this.jobId,
266
+ );
267
+
268
+ const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
271
269
  // If lastUsedIndex is undefined, we've never used this secret, so start from 0
272
270
  // Otherwise, the next index to use is one past the last used index
273
271
  return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
@@ -356,7 +354,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
356
354
 
357
355
  const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
358
356
 
359
- const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
357
+ const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
360
358
  const dbNotes = await noteService.getNotes(
361
359
  this.callContext.contractAddress,
362
360
  owner,
@@ -428,6 +426,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
428
426
  note,
429
427
  siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
430
428
  noteHash,
429
+ isPending: true, // This note has just been created and hence is not settled yet.
431
430
  },
432
431
  counter,
433
432
  );
@@ -462,6 +461,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
462
461
  return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
463
462
  }
464
463
 
464
+ /**
465
+ * Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
466
+ * called for this inner nullifier from the contract with the specified address.
467
+ * @param innerNullifier - The inner nullifier to check.
468
+ * @param contractAddress - Address of the contract that emitted the nullifier.
469
+ * @returns A boolean indicating whether the nullifier is pending or not.
470
+ */
471
+ public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
472
+ const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
473
+ const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
474
+ return Promise.resolve(isNullifierPending);
475
+ }
476
+
465
477
  /**
466
478
  * Emit a contract class log.
467
479
  * This fn exists because we only carry a poseidon hash through the kernels, and need to
@@ -518,9 +530,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
518
530
 
519
531
  isStaticCall = isStaticCall || this.callContext.isStaticCall;
520
532
 
521
- await verifyCurrentClassId(targetContractAddress, this.aztecNode, this.contractStore, this.anchorBlockHeader);
522
-
523
- await this.contractStore.syncPrivateState(targetContractAddress, functionSelector, this.utilityExecutor);
533
+ await this.contractSyncService.ensureContractSynced(
534
+ targetContractAddress,
535
+ functionSelector,
536
+ this.utilityExecutor,
537
+ this.anchorBlockHeader,
538
+ this.jobId,
539
+ this.scopes,
540
+ );
524
541
 
525
542
  const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
526
543
  targetContractAddress,
@@ -531,41 +548,41 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
531
548
 
532
549
  const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
533
550
 
534
- const privateExecutionOracle = new PrivateExecutionOracle(
551
+ const privateExecutionOracle = new PrivateExecutionOracle({
535
552
  argsHash,
536
- derivedTxContext,
537
- derivedCallContext,
538
- this.anchorBlockHeader,
539
- this.utilityExecutor,
540
- this.authWitnesses,
541
- this.capsules,
542
- this.executionCache,
543
- this.noteCache,
544
- this.taggingIndexCache,
545
- this.contractStore,
546
- this.noteStore,
547
- this.keyStore,
548
- this.addressStore,
549
- this.aztecNode,
550
- this.anchorBlockStore,
551
- this.senderTaggingStore,
552
- this.recipientTaggingStore,
553
- this.senderAddressBookStore,
554
- this.capsuleStore,
555
- this.privateEventStore,
556
- this.jobId,
557
- this.totalPublicCalldataCount,
553
+ txContext: derivedTxContext,
554
+ callContext: derivedCallContext,
555
+ anchorBlockHeader: this.anchorBlockHeader,
556
+ utilityExecutor: this.utilityExecutor,
557
+ authWitnesses: this.authWitnesses,
558
+ capsules: this.capsules,
559
+ executionCache: this.executionCache,
560
+ noteCache: this.noteCache,
561
+ taggingIndexCache: this.taggingIndexCache,
562
+ contractStore: this.contractStore,
563
+ noteStore: this.noteStore,
564
+ keyStore: this.keyStore,
565
+ addressStore: this.addressStore,
566
+ aztecNode: this.aztecNode,
567
+ senderTaggingStore: this.senderTaggingStore,
568
+ recipientTaggingStore: this.recipientTaggingStore,
569
+ senderAddressBookStore: this.senderAddressBookStore,
570
+ capsuleStore: this.capsuleStore,
571
+ privateEventStore: this.privateEventStore,
572
+ contractSyncService: this.contractSyncService,
573
+ jobId: this.jobId,
574
+ totalPublicCalldataCount: this.totalPublicCalldataCount,
558
575
  sideEffectCounter,
559
- this.log,
560
- this.scopes,
561
- this.senderForTags,
562
- this.simulator,
563
- );
576
+ log: this.log,
577
+ scopes: this.scopes,
578
+ senderForTags: this.senderForTags,
579
+ simulator: this.simulator!,
580
+ });
564
581
 
565
582
  const setupTime = simulatorSetupTimer.ms();
566
583
 
567
584
  const childExecutionResult = await executePrivateFunction(
568
- this.simulator,
585
+ this.simulator!,
569
586
  privateExecutionOracle,
570
587
  targetArtifact,
571
588
  targetContractAddress,