@aztec/pxe 0.0.1-commit.592b9384 → 0.0.1-commit.59a0419c6

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 (244) hide show
  1. package/dest/bin/check_oracle_version.js +4 -4
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +9 -3
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  4. package/dest/block_synchronizer/block_synchronizer.js +26 -2
  5. package/dest/config/index.d.ts +2 -2
  6. package/dest/config/index.d.ts.map +1 -1
  7. package/dest/config/index.js +8 -15
  8. package/dest/config/package_info.js +1 -1
  9. package/dest/contract_function_simulator/contract_function_simulator.d.ts +63 -29
  10. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  11. package/dest/contract_function_simulator/contract_function_simulator.js +206 -75
  12. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  13. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  14. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  15. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
  16. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  17. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
  18. package/dest/contract_function_simulator/index.d.ts +2 -1
  19. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/index.js +1 -0
  21. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -6
  22. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +8 -10
  24. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
  25. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
  26. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  27. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -4
  29. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +4 -7
  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 +6 -11
  32. package/dest/contract_function_simulator/oracle/interfaces.d.ts +61 -45
  33. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  34. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  35. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  36. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +47 -0
  37. package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -44
  38. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/oracle/oracle.js +300 -103
  40. package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
  41. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +60 -83
  42. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +123 -95
  44. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +120 -66
  45. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +317 -134
  47. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  48. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  49. package/dest/contract_function_simulator/pick_notes.js +20 -3
  50. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  51. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  52. package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
  53. package/dest/contract_logging.d.ts +27 -0
  54. package/dest/contract_logging.d.ts.map +1 -0
  55. package/dest/contract_logging.js +38 -0
  56. package/dest/contract_sync/contract_sync_service.d.ts +44 -0
  57. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  58. package/dest/contract_sync/contract_sync_service.js +116 -0
  59. package/dest/contract_sync/helpers.d.ts +28 -0
  60. package/dest/contract_sync/helpers.d.ts.map +1 -0
  61. package/dest/contract_sync/{index.js → helpers.js} +19 -13
  62. package/dest/debug/pxe_debug_utils.d.ts +14 -10
  63. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  64. package/dest/debug/pxe_debug_utils.js +16 -15
  65. package/dest/entrypoints/client/bundle/index.d.ts +3 -1
  66. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  67. package/dest/entrypoints/client/bundle/index.js +2 -0
  68. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  69. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  70. package/dest/entrypoints/client/bundle/utils.js +11 -3
  71. package/dest/entrypoints/client/lazy/index.d.ts +3 -1
  72. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  73. package/dest/entrypoints/client/lazy/index.js +2 -0
  74. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  75. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  76. package/dest/entrypoints/client/lazy/utils.js +11 -3
  77. package/dest/entrypoints/pxe_creation_options.d.ts +3 -1
  78. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  79. package/dest/entrypoints/pxe_creation_options.js +3 -1
  80. package/dest/entrypoints/server/index.d.ts +4 -3
  81. package/dest/entrypoints/server/index.d.ts.map +1 -1
  82. package/dest/entrypoints/server/index.js +3 -2
  83. package/dest/entrypoints/server/utils.d.ts +2 -2
  84. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  85. package/dest/entrypoints/server/utils.js +11 -3
  86. package/dest/events/event_service.d.ts +3 -2
  87. package/dest/events/event_service.d.ts.map +1 -1
  88. package/dest/events/event_service.js +26 -5
  89. package/dest/events/private_event_filter_validator.d.ts +3 -2
  90. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  91. package/dest/events/private_event_filter_validator.js +15 -0
  92. package/dest/logs/log_service.d.ts +7 -7
  93. package/dest/logs/log_service.d.ts.map +1 -1
  94. package/dest/logs/log_service.js +34 -51
  95. package/dest/messages/message_context_service.d.ts +17 -0
  96. package/dest/messages/message_context_service.d.ts.map +1 -0
  97. package/dest/messages/message_context_service.js +36 -0
  98. package/dest/notes/note_service.d.ts +4 -4
  99. package/dest/notes/note_service.d.ts.map +1 -1
  100. package/dest/notes/note_service.js +17 -7
  101. package/dest/notes_filter.d.ts +24 -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 +4 -3
  105. package/dest/oracle_version.d.ts.map +1 -1
  106. package/dest/oracle_version.js +20 -10
  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 +1 -1
  111. package/dest/private_kernel/hints/index.js +1 -1
  112. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  113. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  114. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +129 -68
  115. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  116. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  117. package/dest/private_kernel/hints/test_utils.js +203 -0
  118. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  119. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  120. package/dest/private_kernel/private_kernel_execution_prover.js +18 -13
  121. package/dest/private_kernel/private_kernel_oracle.d.ts +10 -6
  122. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  123. package/dest/private_kernel/private_kernel_oracle.js +19 -18
  124. package/dest/pxe.d.ts +85 -24
  125. package/dest/pxe.d.ts.map +1 -1
  126. package/dest/pxe.js +165 -84
  127. package/dest/storage/anchor_block_store/anchor_block_store.js +1 -1
  128. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  129. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  130. package/dest/storage/capsule_store/capsule_service.js +50 -0
  131. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  132. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  133. package/dest/storage/capsule_store/capsule_store.js +36 -28
  134. package/dest/storage/capsule_store/index.d.ts +2 -1
  135. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  136. package/dest/storage/capsule_store/index.js +1 -0
  137. package/dest/storage/contract_store/contract_store.d.ts +42 -15
  138. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  139. package/dest/storage/contract_store/contract_store.js +148 -70
  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 +3 -3
  143. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  144. package/dest/storage/note_store/note_store.js +6 -4
  145. package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
  146. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  147. package/dest/storage/private_event_store/private_event_store.js +3 -0
  148. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  149. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  150. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  151. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  152. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  153. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  154. package/dest/tagging/get_all_logs_by_tags.d.ts +1 -1
  155. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  156. package/dest/tagging/get_all_logs_by_tags.js +17 -3
  157. package/dest/tagging/index.d.ts +3 -3
  158. package/dest/tagging/index.d.ts.map +1 -1
  159. package/dest/tagging/index.js +1 -1
  160. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -5
  161. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  162. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +8 -22
  163. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  164. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +6 -7
  165. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  166. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +12 -11
  167. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -8
  168. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  169. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +13 -7
  170. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  171. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  172. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  173. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -7
  174. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  175. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +36 -24
  176. package/package.json +25 -16
  177. package/src/bin/check_oracle_version.ts +4 -4
  178. package/src/block_synchronizer/block_synchronizer.ts +28 -2
  179. package/src/config/index.ts +3 -9
  180. package/src/config/package_info.ts +1 -1
  181. package/src/contract_function_simulator/contract_function_simulator.ts +366 -136
  182. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  183. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
  184. package/src/contract_function_simulator/index.ts +1 -0
  185. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +9 -9
  186. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
  187. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
  188. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -10
  189. package/src/contract_function_simulator/oracle/interfaces.ts +82 -54
  190. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
  191. package/src/contract_function_simulator/oracle/oracle.ts +373 -142
  192. package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
  193. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +157 -185
  194. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +532 -165
  195. package/src/contract_function_simulator/pick_notes.ts +22 -3
  196. package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
  197. package/src/contract_logging.ts +52 -0
  198. package/src/contract_sync/contract_sync_service.ts +176 -0
  199. package/src/contract_sync/{index.ts → helpers.ts} +22 -22
  200. package/src/debug/pxe_debug_utils.ts +48 -18
  201. package/src/entrypoints/client/bundle/index.ts +2 -0
  202. package/src/entrypoints/client/bundle/utils.ts +11 -4
  203. package/src/entrypoints/client/lazy/index.ts +2 -0
  204. package/src/entrypoints/client/lazy/utils.ts +11 -4
  205. package/src/entrypoints/pxe_creation_options.ts +7 -0
  206. package/src/entrypoints/server/index.ts +3 -2
  207. package/src/entrypoints/server/utils.ts +9 -10
  208. package/src/events/event_service.ts +30 -5
  209. package/src/events/private_event_filter_validator.ts +21 -1
  210. package/src/logs/log_service.ts +64 -92
  211. package/src/messages/message_context_service.ts +44 -0
  212. package/src/notes/note_service.ts +19 -8
  213. package/src/notes_filter.ts +24 -0
  214. package/src/oracle_version.ts +20 -10
  215. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  216. package/src/private_kernel/hints/index.ts +1 -1
  217. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
  218. package/src/private_kernel/hints/test_utils.ts +325 -0
  219. package/src/private_kernel/private_kernel_execution_prover.ts +18 -16
  220. package/src/private_kernel/private_kernel_oracle.ts +21 -21
  221. package/src/pxe.ts +305 -138
  222. package/src/storage/anchor_block_store/anchor_block_store.ts +1 -1
  223. package/src/storage/capsule_store/capsule_service.ts +90 -0
  224. package/src/storage/capsule_store/capsule_store.ts +44 -26
  225. package/src/storage/capsule_store/index.ts +1 -0
  226. package/src/storage/contract_store/contract_store.ts +181 -80
  227. package/src/storage/metadata.ts +1 -1
  228. package/src/storage/note_store/note_store.ts +9 -5
  229. package/src/storage/private_event_store/private_event_store.ts +4 -0
  230. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  231. package/src/storage/tagging_store/recipient_tagging_store.ts +9 -5
  232. package/src/storage/tagging_store/sender_tagging_store.ts +185 -138
  233. package/src/tagging/get_all_logs_by_tags.ts +28 -4
  234. package/src/tagging/index.ts +2 -2
  235. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +12 -25
  236. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  237. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +10 -15
  238. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +23 -10
  239. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  240. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +27 -26
  241. package/dest/contract_sync/index.d.ts +0 -23
  242. package/dest/contract_sync/index.d.ts.map +0 -1
  243. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  244. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
@@ -76,12 +76,12 @@ export async function executePrivateFunction(
76
76
 
77
77
  const contractClassLogs = privateExecutionOracle.getContractClassLogs();
78
78
 
79
- const rawReturnValues = await privateExecutionOracle.privateLoadFromExecutionCache(publicInputs.returnsHash);
79
+ const rawReturnValues = await privateExecutionOracle.getHashPreimage(publicInputs.returnsHash);
80
80
 
81
81
  const newNotes = privateExecutionOracle.getNewNotes();
82
82
  const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
83
83
  const offchainEffects = privateExecutionOracle.getOffchainEffects();
84
- const preTags = privateExecutionOracle.getUsedPreTags();
84
+ const taggingIndexRanges = privateExecutionOracle.getUsedTaggingIndexRanges();
85
85
  const nestedExecutionResults = privateExecutionOracle.getNestedExecutionResults();
86
86
 
87
87
  let timerSubtractionList = nestedExecutionResults;
@@ -103,8 +103,8 @@ export async function executePrivateFunction(
103
103
  newNotes,
104
104
  noteHashNullifierCounterMap,
105
105
  rawReturnValues,
106
- offchainEffects,
107
- preTags,
106
+ offchainEffects.map(e => ({ data: e.data })),
107
+ taggingIndexRanges,
108
108
  nestedExecutionResults,
109
109
  contractClassLogs,
110
110
  {
@@ -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,21 @@ 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 TaggingIndexRange } 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
 
33
- import { ensureContractSynced } from '../../contract_sync/index.js';
34
28
  import { NoteService } from '../../notes/note_service.js';
35
- import type { AddressStore } from '../../storage/address_store/address_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
29
  import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
43
30
  import { syncSenderTaggingIndexes } from '../../tagging/index.js';
44
31
  import type { ExecutionNoteCache } from '../execution_note_cache.js';
@@ -47,7 +34,24 @@ import type { HashedValuesCache } from '../hashed_values_cache.js';
47
34
  import { pickNotes } from '../pick_notes.js';
48
35
  import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
49
36
  import { executePrivateFunction } from './private_execution.js';
50
- import { UtilityExecutionOracle } from './utility_execution_oracle.js';
37
+ import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
38
+
39
+ /** Args for PrivateExecutionOracle constructor. */
40
+ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
41
+ argsHash: Fr;
42
+ txContext: TxContext;
43
+ callContext: CallContext;
44
+ /** Needed to trigger contract synchronization before nested calls */
45
+ utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<void>;
46
+ executionCache: HashedValuesCache;
47
+ noteCache: ExecutionNoteCache;
48
+ taggingIndexCache: ExecutionTaggingIndexCache;
49
+ senderTaggingStore: SenderTaggingStore;
50
+ totalPublicCalldataCount?: number;
51
+ sideEffectCounter?: number;
52
+ senderForTags?: AztecAddress;
53
+ simulator?: CircuitSimulator;
54
+ };
51
55
 
52
56
  /**
53
57
  * The execution oracle for the private part of a transaction.
@@ -66,63 +70,51 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
66
70
  private newNotes: NoteAndSlot[] = [];
67
71
  private noteHashNullifierCounterMap: Map<number, number> = new Map();
68
72
  private contractClassLogs: CountedContractClassLog[] = [];
69
- private offchainEffects: { data: Fr[] }[] = [];
70
73
  private nestedExecutionResults: PrivateCallExecutionResult[] = [];
71
74
 
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
- private readonly senderTaggingStore: SenderTaggingStore,
92
- recipientTaggingStore: RecipientTaggingStore,
93
- senderAddressBookStore: SenderAddressBookStore,
94
- capsuleStore: CapsuleStore,
95
- privateEventStore: PrivateEventStore,
96
- jobId: string,
97
- private totalPublicCalldataCount: number = 0,
98
- protected sideEffectCounter: number = 0,
99
- log = createLogger('simulator:client_execution_context'),
100
- scopes?: AztecAddress[],
101
- private senderForTags?: AztecAddress,
102
- private simulator?: CircuitSimulator,
103
- ) {
104
- super(
105
- callContext.contractAddress,
106
- authWitnesses,
107
- capsules,
108
- anchorBlockHeader,
109
- contractStore,
110
- noteStore,
111
- keyStore,
112
- addressStore,
113
- aztecNode,
114
- recipientTaggingStore,
115
- senderAddressBookStore,
116
- capsuleStore,
117
- privateEventStore,
118
- jobId,
119
- log,
120
- scopes,
121
- );
75
+ private readonly argsHash: Fr;
76
+ private readonly txContext: TxContext;
77
+ private readonly callContext: CallContext;
78
+ private readonly utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<void>;
79
+ private readonly executionCache: HashedValuesCache;
80
+ private readonly noteCache: ExecutionNoteCache;
81
+ private readonly taggingIndexCache: ExecutionTaggingIndexCache;
82
+ private readonly senderTaggingStore: SenderTaggingStore;
83
+ private totalPublicCalldataCount: number;
84
+ private readonly initialSideEffectCounter: number;
85
+ /** Sender for tags passed in at oracle construction time. Returned by `getSenderForTags` unless overridden. */
86
+ private readonly defaultSenderForTags: AztecAddress | undefined;
87
+ /** Per-call sender-for-tags override, set by `setSenderForTags`. Takes precedence over `defaultSenderForTags`. */
88
+ private currentSenderForTags: AztecAddress | undefined;
89
+ private readonly simulator?: CircuitSimulator;
90
+
91
+ constructor(args: PrivateExecutionOracleArgs) {
92
+ super({
93
+ ...args,
94
+ contractAddress: args.callContext.contractAddress,
95
+ log: args.log ?? createLogger('simulator:client_execution_context'),
96
+ });
97
+ this.argsHash = args.argsHash;
98
+ this.txContext = args.txContext;
99
+ this.callContext = args.callContext;
100
+ this.utilityExecutor = args.utilityExecutor;
101
+ this.executionCache = args.executionCache;
102
+ this.noteCache = args.noteCache;
103
+ this.taggingIndexCache = args.taggingIndexCache;
104
+ this.senderTaggingStore = args.senderTaggingStore;
105
+ this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
106
+ this.initialSideEffectCounter = args.sideEffectCounter ?? 0;
107
+ this.defaultSenderForTags = args.senderForTags;
108
+ this.simulator = args.simulator;
122
109
  }
123
110
 
124
111
  public getPrivateContextInputs(): PrivateContextInputs {
125
- return new PrivateContextInputs(this.callContext, this.anchorBlockHeader, this.txContext, this.sideEffectCounter);
112
+ return new PrivateContextInputs(
113
+ this.callContext,
114
+ this.anchorBlockHeader,
115
+ this.txContext,
116
+ this.initialSideEffectCounter,
117
+ );
126
118
  }
127
119
 
128
120
  // We still need this function until we can get user-defined ordering of structs for fn arguments
@@ -169,17 +161,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
169
161
  }
170
162
 
171
163
  /**
172
- * Return the offchain effects emitted during this execution.
164
+ * Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
173
165
  */
174
- public getOffchainEffects() {
175
- return this.offchainEffects;
176
- }
177
-
178
- /**
179
- * Returns the pre-tags that were used in this execution (and that need to be stored in the db).
180
- */
181
- public getUsedPreTags(): PreTag[] {
182
- return this.taggingIndexCache.getUsedPreTags();
166
+ public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
167
+ return this.taggingIndexCache.getUsedTaggingIndexRanges();
183
168
  }
184
169
 
185
170
  /**
@@ -196,11 +181,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
196
181
  * for a tag in order to emit a log. Constrained tagging should not use this as there is no
197
182
  * guarantee that the recipient knows about the sender, and hence about the shared secret.
198
183
  *
199
- * The value persists through nested calls, meaning all calls down the stack will use the same
200
- * 'senderForTags' value (unless it is replaced).
184
+ * Returns `currentSenderForTags` if set (via `setSenderForTags`), otherwise `defaultSenderForTags`.
201
185
  */
202
- public privateGetSenderForTags(): Promise<AztecAddress | undefined> {
203
- return Promise.resolve(this.senderForTags);
186
+ public getSenderForTags(): Promise<AztecAddress | undefined> {
187
+ return Promise.resolve(this.currentSenderForTags ?? this.defaultSenderForTags);
204
188
  }
205
189
 
206
190
  /**
@@ -210,12 +194,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
210
194
  * for a tag in order to emit a log. Constrained tagging should not use this as there is no
211
195
  * guarantee that the recipient knows about the sender, and hence about the shared secret.
212
196
  *
213
- * Account contracts typically set this value before calling other contracts. The value persists
214
- * through nested calls, meaning all calls down the stack will use the same 'senderForTags'
215
- * value (unless it is replaced by another call to this setter).
197
+ * Overrides `defaultSenderForTags` for the remainder of this call. Each oracle instance is
198
+ * independent, so this has no effect on any other call in the execution.
216
199
  */
217
- public privateSetSenderForTags(senderForTags: AztecAddress): Promise<void> {
218
- this.senderForTags = senderForTags;
200
+ public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
201
+ this.logger.debug(
202
+ `Sender for tags switched to ${senderForTags} by contract ${this.contractAddress} (default was ${this.defaultSenderForTags})`,
203
+ );
204
+ this.currentSenderForTags = senderForTags;
219
205
  return Promise.resolve();
220
206
  }
221
207
 
@@ -225,26 +211,40 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
225
211
  * @param recipient - The address receiving the log
226
212
  * @returns An app tag to be used in a log.
227
213
  */
228
- public async privateGetNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
229
- const secret = await this.#calculateDirectionalAppTaggingSecret(this.contractAddress, sender, recipient);
214
+ public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
215
+ const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
216
+ this.contractAddress,
217
+ sender,
218
+ recipient,
219
+ );
220
+
221
+ if (!extendedSecret) {
222
+ // We'd only fail to compute an extended secret if the recipient is an invalid address. To prevent
223
+ // king-of-the-hill attacks, instead of failing we use a random tag. By including a correct-looking tag in the
224
+ // log, the transaction shape is preserved and no privacy is leaked, even if the tag is bogus.
225
+ this.logger.warn(`Computing a tag for invalid recipient ${recipient} - returning a random tag instead`, {
226
+ contractAddress: this.contractAddress,
227
+ });
228
+ return Tag.random();
229
+ }
230
230
 
231
- const index = await this.#getIndexToUseForSecret(secret);
232
- this.log.debug(
231
+ const index = await this.#getIndexToUseForSecret(extendedSecret);
232
+ this.logger.debug(
233
233
  `Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
234
234
  );
235
- this.taggingIndexCache.setLastUsedIndex(secret, index);
235
+ this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
236
236
 
237
- return Tag.compute({ secret, index });
237
+ return Tag.compute({ extendedSecret, index });
238
238
  }
239
239
 
240
- async #calculateDirectionalAppTaggingSecret(
240
+ async #calculateExtendedDirectionalAppTaggingSecret(
241
241
  contractAddress: AztecAddress,
242
242
  sender: AztecAddress,
243
243
  recipient: AztecAddress,
244
244
  ) {
245
- const senderCompleteAddress = await this.getCompleteAddress(sender);
245
+ const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
246
246
  const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
247
- return DirectionalAppTaggingSecret.compute(
247
+ return ExtendedDirectionalAppTaggingSecret.compute(
248
248
  senderCompleteAddress,
249
249
  senderIvsk,
250
250
  recipient,
@@ -253,7 +253,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
253
253
  );
254
254
  }
255
255
 
256
- async #getIndexToUseForSecret(secret: DirectionalAppTaggingSecret): Promise<number> {
256
+ async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
257
257
  // If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
258
258
  const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
259
259
 
@@ -265,7 +265,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
265
265
  // that'd be wasteful as most tagging secrets are not used in each tx.
266
266
  await syncSenderTaggingIndexes(
267
267
  secret,
268
- this.contractAddress,
269
268
  this.aztecNode,
270
269
  this.senderTaggingStore,
271
270
  await this.anchorBlockHeader.hash(),
@@ -284,7 +283,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
284
283
  * @param values - Values to store.
285
284
  * @returns The hash of the values.
286
285
  */
287
- public privateStoreInExecutionCache(values: Fr[], hash: Fr) {
286
+ public setHashPreimage(values: Fr[], hash: Fr) {
288
287
  return this.executionCache.store(values, hash);
289
288
  }
290
289
 
@@ -293,7 +292,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
293
292
  * @param hash - Hash of the values.
294
293
  * @returns The values.
295
294
  */
296
- public privateLoadFromExecutionCache(hash: Fr): Promise<Fr[]> {
295
+ public getHashPreimage(hash: Fr): Promise<Fr[]> {
297
296
  const preimage = this.executionCache.getPreimage(hash);
298
297
  if (!preimage) {
299
298
  throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
@@ -301,12 +300,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
301
300
  return Promise.resolve(preimage);
302
301
  }
303
302
 
304
- override async utilityCheckNullifierExists(innerNullifier: Fr): Promise<boolean> {
303
+ override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
305
304
  // This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
306
305
  // in the synched block, during private execution there's also the possibility of it being pending, i.e. created
307
306
  // in the current transaction.
308
307
 
309
- this.log.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
308
+ this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
310
309
  contractAddress: this.contractAddress,
311
310
  });
312
311
 
@@ -314,7 +313,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
314
313
 
315
314
  return (
316
315
  this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
317
- (await super.utilityCheckNullifierExists(innerNullifier))
316
+ (await super.doesNullifierExist(innerNullifier))
318
317
  );
319
318
  }
320
319
 
@@ -339,7 +338,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
339
338
  * @param status - The status of notes to fetch.
340
339
  * @returns Array of note data.
341
340
  */
342
- public override async utilityGetNotes(
341
+ public override async getNotes(
343
342
  owner: AztecAddress | undefined,
344
343
  storageSlot: Fr,
345
344
  numSelects: number,
@@ -385,7 +384,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
385
384
  offset,
386
385
  });
387
386
 
388
- this.log.debug(
387
+ this.logger.debug(
389
388
  `Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
390
389
  .map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
391
390
  .join(', ')}`,
@@ -405,7 +404,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
405
404
  * @param noteHash - A hash of the new note.
406
405
  * @returns
407
406
  */
408
- public privateNotifyCreatedNote(
407
+ public notifyCreatedNote(
409
408
  owner: AztecAddress,
410
409
  storageSlot: Fr,
411
410
  randomness: Fr,
@@ -414,7 +413,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
414
413
  noteHash: Fr,
415
414
  counter: number,
416
415
  ) {
417
- this.log.debug(`Notified of new note with inner hash ${noteHash}`, {
416
+ this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
418
417
  contractAddress: this.callContext.contractAddress,
419
418
  storageSlot,
420
419
  randomness,
@@ -446,7 +445,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
446
445
  * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
447
446
  * @param noteHash - A hash of the new note.
448
447
  */
449
- public async privateNotifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
448
+ public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
450
449
  const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
451
450
  this.callContext.contractAddress,
452
451
  innerNullifier,
@@ -463,19 +462,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
463
462
  * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
464
463
  * @param noteHash - A hash of the new note.
465
464
  */
466
- public privateNotifyCreatedNullifier(innerNullifier: Fr) {
467
- this.log.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
465
+ public notifyCreatedNullifier(innerNullifier: Fr) {
466
+ this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
468
467
  return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
469
468
  }
470
469
 
471
470
  /**
472
- * Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
471
+ * Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
473
472
  * called for this inner nullifier from the contract with the specified address.
474
473
  * @param innerNullifier - The inner nullifier to check.
475
474
  * @param contractAddress - Address of the contract that emitted the nullifier.
476
475
  * @returns A boolean indicating whether the nullifier is pending or not.
477
476
  */
478
- public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
477
+ public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
479
478
  const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
480
479
  const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
481
480
  return Promise.resolve(isNullifierPending);
@@ -488,10 +487,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
488
487
  * @param log - The contract class log to be emitted.
489
488
  * @param counter - The contract class log's counter.
490
489
  */
491
- public privateNotifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
490
+ public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
492
491
  this.contractClassLogs.push(new CountedContractClassLog(log, counter));
493
492
  const text = log.toBuffer().toString('hex');
494
- this.log.verbose(
493
+ this.logger.verbose(
495
494
  `Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
496
495
  );
497
496
  }
@@ -517,7 +516,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
517
516
  * @param isStaticCall - Whether the call is a static call.
518
517
  * @returns The execution result.
519
518
  */
520
- async privateCallPrivateFunction(
519
+ async callPrivateFunction(
521
520
  targetContractAddress: AztecAddress,
522
521
  functionSelector: FunctionSelector,
523
522
  argsHash: Fr,
@@ -531,19 +530,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
531
530
  }
532
531
 
533
532
  const simulatorSetupTimer = new Timer();
534
- this.log.debug(
533
+ this.logger.debug(
535
534
  `Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
536
535
  );
537
536
 
538
537
  isStaticCall = isStaticCall || this.callContext.isStaticCall;
539
538
 
540
- await ensureContractSynced(
539
+ await this.contractSyncService.ensureContractSynced(
541
540
  targetContractAddress,
542
541
  functionSelector,
543
542
  this.utilityExecutor,
544
- this.aztecNode,
545
- this.contractStore,
546
543
  this.anchorBlockHeader,
544
+ this.jobId,
545
+ this.scopes,
547
546
  );
548
547
 
549
548
  const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
@@ -555,46 +554,52 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
555
554
 
556
555
  const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
557
556
 
558
- const privateExecutionOracle = new PrivateExecutionOracle(
557
+ const privateExecutionOracle = new PrivateExecutionOracle({
559
558
  argsHash,
560
- derivedTxContext,
561
- derivedCallContext,
562
- this.anchorBlockHeader,
563
- this.utilityExecutor,
564
- this.authWitnesses,
565
- this.capsules,
566
- this.executionCache,
567
- this.noteCache,
568
- this.taggingIndexCache,
569
- this.contractStore,
570
- this.noteStore,
571
- this.keyStore,
572
- this.addressStore,
573
- this.aztecNode,
574
- this.senderTaggingStore,
575
- this.recipientTaggingStore,
576
- this.senderAddressBookStore,
577
- this.capsuleStore,
578
- this.privateEventStore,
579
- this.jobId,
580
- this.totalPublicCalldataCount,
559
+ txContext: derivedTxContext,
560
+ callContext: derivedCallContext,
561
+ anchorBlockHeader: this.anchorBlockHeader,
562
+ utilityExecutor: this.utilityExecutor,
563
+ authWitnesses: this.authWitnesses,
564
+ capsules: this.capsules,
565
+ executionCache: this.executionCache,
566
+ noteCache: this.noteCache,
567
+ taggingIndexCache: this.taggingIndexCache,
568
+ contractStore: this.contractStore,
569
+ noteStore: this.noteStore,
570
+ keyStore: this.keyStore,
571
+ addressStore: this.addressStore,
572
+ aztecNode: this.aztecNode,
573
+ senderTaggingStore: this.senderTaggingStore,
574
+ recipientTaggingStore: this.recipientTaggingStore,
575
+ senderAddressBookStore: this.senderAddressBookStore,
576
+ capsuleService: this.capsuleService,
577
+ privateEventStore: this.privateEventStore,
578
+ messageContextService: this.messageContextService,
579
+ contractSyncService: this.contractSyncService,
580
+ jobId: this.jobId,
581
+ totalPublicCalldataCount: this.totalPublicCalldataCount,
581
582
  sideEffectCounter,
582
- this.log,
583
- this.scopes,
584
- this.senderForTags,
585
- this.simulator,
586
- );
583
+ log: this.logger,
584
+ scopes: this.scopes,
585
+ senderForTags: this.defaultSenderForTags,
586
+ simulator: this.simulator!,
587
+ l2TipsStore: this.l2TipsStore,
588
+ });
587
589
 
588
590
  const setupTime = simulatorSetupTimer.ms();
589
591
 
590
592
  const childExecutionResult = await executePrivateFunction(
591
- this.simulator,
593
+ this.simulator!,
592
594
  privateExecutionOracle,
593
595
  targetArtifact,
594
596
  targetContractAddress,
595
597
  functionSelector,
596
598
  );
597
599
 
600
+ // Propagate the nested call's calldata count so the parent sees its increments on subsequent enqueues.
601
+ this.totalPublicCalldataCount = privateExecutionOracle.getTotalPublicCalldataCount();
602
+
598
603
  if (isStaticCall) {
599
604
  this.#checkValidStaticCall(childExecutionResult);
600
605
  }
@@ -614,7 +619,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
614
619
  };
615
620
  }
616
621
 
617
- #onNewPublicFunctionCall(calldataHash: Fr) {
622
+ /** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
623
+ public assertValidPublicCalldata(calldataHash: Fr) {
618
624
  const calldata = this.executionCache.getPreimage(calldataHash);
619
625
  if (!calldata) {
620
626
  throw new Error('Calldata for public call not found in cache');
@@ -624,47 +630,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
624
630
  if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
625
631
  throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
626
632
  }
627
- }
628
-
629
- /**
630
- * Verify relevant information when a public function is enqueued.
631
- * @param targetContractAddress - The address of the contract to call.
632
- * @param calldataHash - The hash of the function selector and arguments.
633
- * @param sideEffectCounter - The side effect counter at the start of the call.
634
- * @param isStaticCall - Whether the call is a static call.
635
- */
636
- public privateNotifyEnqueuedPublicFunctionCall(
637
- _targetContractAddress: AztecAddress,
638
- calldataHash: Fr,
639
- _sideEffectCounter: number,
640
- _isStaticCall: boolean,
641
- ) {
642
- this.#onNewPublicFunctionCall(calldataHash);
643
633
  return Promise.resolve();
644
634
  }
645
635
 
646
- /**
647
- * Verify relevant information when a public teardown function is set.
648
- * @param targetContractAddress - The address of the contract to call.
649
- * @param argsHash - The arguments hash to pass to the function.
650
- * @param sideEffectCounter - The side effect counter at the start of the call.
651
- * @param isStaticCall - Whether the call is a static call.
652
- */
653
- public privateNotifySetPublicTeardownFunctionCall(
654
- _targetContractAddress: AztecAddress,
655
- calldataHash: Fr,
656
- _sideEffectCounter: number,
657
- _isStaticCall: boolean,
658
- ) {
659
- this.#onNewPublicFunctionCall(calldataHash);
660
- return Promise.resolve();
636
+ public getTotalPublicCalldataCount(): number {
637
+ return this.totalPublicCalldataCount;
661
638
  }
662
639
 
663
- public privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void> {
640
+ public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
664
641
  return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
665
642
  }
666
643
 
667
- public privateIsSideEffectCounterRevertible(sideEffectCounter: number): Promise<boolean> {
644
+ public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
668
645
  return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
669
646
  }
670
647
 
@@ -691,9 +668,4 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
691
668
  public getDebugFunctionName() {
692
669
  return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
693
670
  }
694
-
695
- public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
696
- this.offchainEffects.push({ data });
697
- return Promise.resolve();
698
- }
699
671
  }