@aztec/pxe 0.0.1-commit.d1f2d6c → 0.0.1-commit.d20b825a7

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 (261) hide show
  1. package/dest/bin/check_oracle_version.js +5 -5
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +10 -4
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  4. package/dest/block_synchronizer/block_synchronizer.js +30 -6
  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 -31
  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 -77
  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 +5 -7
  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 +9 -11
  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 +5 -8
  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 +7 -12
  32. package/dest/contract_function_simulator/oracle/interfaces.d.ts +62 -46
  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 +310 -113
  40. package/dest/contract_function_simulator/oracle/private_execution.d.ts +3 -22
  41. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/oracle/private_execution.js +5 -49
  43. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +60 -84
  44. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  45. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +125 -98
  46. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +128 -70
  47. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  48. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +330 -143
  49. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  50. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  51. package/dest/contract_function_simulator/pick_notes.js +20 -3
  52. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  53. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  54. package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
  55. package/dest/contract_logging.d.ts +27 -0
  56. package/dest/contract_logging.d.ts.map +1 -0
  57. package/dest/contract_logging.js +38 -0
  58. package/dest/contract_sync/contract_sync_service.d.ts +44 -0
  59. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  60. package/dest/contract_sync/contract_sync_service.js +116 -0
  61. package/dest/contract_sync/helpers.d.ts +28 -0
  62. package/dest/contract_sync/helpers.d.ts.map +1 -0
  63. package/dest/contract_sync/helpers.js +60 -0
  64. package/dest/debug/pxe_debug_utils.d.ts +24 -10
  65. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  66. package/dest/debug/pxe_debug_utils.js +28 -18
  67. package/dest/entrypoints/client/bundle/index.d.ts +3 -1
  68. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  69. package/dest/entrypoints/client/bundle/index.js +2 -0
  70. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  71. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  72. package/dest/entrypoints/client/bundle/utils.js +23 -9
  73. package/dest/entrypoints/client/lazy/index.d.ts +3 -1
  74. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  75. package/dest/entrypoints/client/lazy/index.js +2 -0
  76. package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
  77. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  78. package/dest/entrypoints/client/lazy/utils.js +24 -10
  79. package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
  80. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  81. package/dest/entrypoints/pxe_creation_options.js +3 -1
  82. package/dest/entrypoints/server/index.d.ts +4 -2
  83. package/dest/entrypoints/server/index.d.ts.map +1 -1
  84. package/dest/entrypoints/server/index.js +3 -1
  85. package/dest/entrypoints/server/utils.d.ts +2 -2
  86. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  87. package/dest/entrypoints/server/utils.js +30 -11
  88. package/dest/events/event_service.d.ts +6 -6
  89. package/dest/events/event_service.d.ts.map +1 -1
  90. package/dest/events/event_service.js +31 -11
  91. package/dest/events/private_event_filter_validator.d.ts +3 -2
  92. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  93. package/dest/events/private_event_filter_validator.js +15 -0
  94. package/dest/job_coordinator/job_coordinator.d.ts +3 -2
  95. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
  96. package/dest/job_coordinator/job_coordinator.js +3 -2
  97. package/dest/logs/log_service.d.ts +10 -9
  98. package/dest/logs/log_service.d.ts.map +1 -1
  99. package/dest/logs/log_service.js +41 -62
  100. package/dest/messages/message_context_service.d.ts +17 -0
  101. package/dest/messages/message_context_service.d.ts.map +1 -0
  102. package/dest/messages/message_context_service.js +36 -0
  103. package/dest/notes/note_service.d.ts +7 -8
  104. package/dest/notes/note_service.d.ts.map +1 -1
  105. package/dest/notes/note_service.js +23 -15
  106. package/dest/notes_filter.d.ts +24 -0
  107. package/dest/notes_filter.d.ts.map +1 -0
  108. package/dest/notes_filter.js +4 -0
  109. package/dest/oracle_version.d.ts +4 -3
  110. package/dest/oracle_version.d.ts.map +1 -1
  111. package/dest/oracle_version.js +20 -10
  112. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  113. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  114. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  115. package/dest/private_kernel/hints/index.d.ts +1 -1
  116. package/dest/private_kernel/hints/index.js +1 -1
  117. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  118. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  119. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +129 -68
  120. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  121. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  122. package/dest/private_kernel/hints/test_utils.js +203 -0
  123. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  124. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  125. package/dest/private_kernel/private_kernel_execution_prover.js +20 -15
  126. package/dest/private_kernel/private_kernel_oracle.d.ts +10 -6
  127. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  128. package/dest/private_kernel/private_kernel_oracle.js +19 -18
  129. package/dest/pxe.d.ts +85 -24
  130. package/dest/pxe.d.ts.map +1 -1
  131. package/dest/pxe.js +169 -87
  132. package/dest/storage/address_store/address_store.d.ts +1 -1
  133. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  134. package/dest/storage/address_store/address_store.js +12 -11
  135. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
  136. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  137. package/dest/storage/anchor_block_store/anchor_block_store.js +9 -2
  138. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  139. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  140. package/dest/storage/capsule_store/capsule_service.js +50 -0
  141. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  142. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  143. package/dest/storage/capsule_store/capsule_store.js +42 -36
  144. package/dest/storage/capsule_store/index.d.ts +2 -1
  145. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  146. package/dest/storage/capsule_store/index.js +1 -0
  147. package/dest/storage/contract_store/contract_store.d.ts +42 -16
  148. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  149. package/dest/storage/contract_store/contract_store.js +160 -85
  150. package/dest/storage/metadata.d.ts +1 -1
  151. package/dest/storage/metadata.js +1 -1
  152. package/dest/storage/note_store/note_store.d.ts +14 -4
  153. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  154. package/dest/storage/note_store/note_store.js +149 -109
  155. package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
  156. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  157. package/dest/storage/private_event_store/private_event_store.js +87 -61
  158. package/dest/storage/private_event_store/stored_private_event.d.ts +4 -4
  159. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -1
  160. package/dest/storage/private_event_store/stored_private_event.js +2 -2
  161. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  162. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  163. package/dest/storage/tagging_store/recipient_tagging_store.js +31 -19
  164. package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
  165. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
  166. package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
  167. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  168. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  169. package/dest/storage/tagging_store/sender_tagging_store.js +233 -137
  170. package/dest/tagging/get_all_logs_by_tags.d.ts +4 -4
  171. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  172. package/dest/tagging/get_all_logs_by_tags.js +17 -3
  173. package/dest/tagging/index.d.ts +3 -3
  174. package/dest/tagging/index.d.ts.map +1 -1
  175. package/dest/tagging/index.js +1 -1
  176. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +5 -6
  177. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  178. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +8 -22
  179. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  180. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +7 -8
  181. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  182. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +12 -11
  183. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -9
  184. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  185. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +13 -7
  186. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  187. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  188. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  189. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -8
  190. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  191. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +36 -24
  192. package/package.json +25 -16
  193. package/src/bin/check_oracle_version.ts +5 -4
  194. package/src/block_synchronizer/block_synchronizer.ts +45 -21
  195. package/src/config/index.ts +3 -9
  196. package/src/config/package_info.ts +1 -1
  197. package/src/contract_function_simulator/contract_function_simulator.ts +366 -136
  198. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  199. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
  200. package/src/contract_function_simulator/index.ts +1 -0
  201. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +10 -10
  202. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
  203. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
  204. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +5 -11
  205. package/src/contract_function_simulator/oracle/interfaces.ts +90 -62
  206. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
  207. package/src/contract_function_simulator/oracle/oracle.ts +391 -150
  208. package/src/contract_function_simulator/oracle/private_execution.ts +5 -83
  209. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +160 -193
  210. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +552 -179
  211. package/src/contract_function_simulator/pick_notes.ts +22 -3
  212. package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
  213. package/src/contract_logging.ts +52 -0
  214. package/src/contract_sync/contract_sync_service.ts +176 -0
  215. package/src/contract_sync/helpers.ts +98 -0
  216. package/src/debug/pxe_debug_utils.ts +63 -19
  217. package/src/entrypoints/client/bundle/index.ts +2 -0
  218. package/src/entrypoints/client/bundle/utils.ts +18 -18
  219. package/src/entrypoints/client/lazy/index.ts +2 -0
  220. package/src/entrypoints/client/lazy/utils.ts +19 -18
  221. package/src/entrypoints/pxe_creation_options.ts +9 -1
  222. package/src/entrypoints/server/index.ts +3 -1
  223. package/src/entrypoints/server/utils.ts +24 -29
  224. package/src/events/event_service.ts +35 -12
  225. package/src/events/private_event_filter_validator.ts +21 -1
  226. package/src/job_coordinator/job_coordinator.ts +4 -3
  227. package/src/logs/log_service.ts +77 -106
  228. package/src/messages/message_context_service.ts +44 -0
  229. package/src/notes/note_service.ts +25 -17
  230. package/src/notes_filter.ts +24 -0
  231. package/src/oracle_version.ts +20 -10
  232. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  233. package/src/private_kernel/hints/index.ts +1 -1
  234. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
  235. package/src/private_kernel/hints/test_utils.ts +325 -0
  236. package/src/private_kernel/private_kernel_execution_prover.ts +24 -19
  237. package/src/private_kernel/private_kernel_oracle.ts +21 -21
  238. package/src/pxe.ts +318 -144
  239. package/src/storage/address_store/address_store.ts +15 -15
  240. package/src/storage/anchor_block_store/anchor_block_store.ts +9 -1
  241. package/src/storage/capsule_store/capsule_service.ts +90 -0
  242. package/src/storage/capsule_store/capsule_store.ts +52 -34
  243. package/src/storage/capsule_store/index.ts +1 -0
  244. package/src/storage/contract_store/contract_store.ts +193 -101
  245. package/src/storage/metadata.ts +1 -1
  246. package/src/storage/note_store/note_store.ts +168 -134
  247. package/src/storage/private_event_store/private_event_store.ts +106 -81
  248. package/src/storage/private_event_store/stored_private_event.ts +3 -3
  249. package/src/storage/tagging_store/recipient_tagging_store.ts +38 -24
  250. package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
  251. package/src/storage/tagging_store/sender_tagging_store.ts +287 -156
  252. package/src/tagging/get_all_logs_by_tags.ts +31 -7
  253. package/src/tagging/index.ts +2 -2
  254. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +14 -27
  255. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  256. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +12 -17
  257. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +25 -12
  258. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  259. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +30 -29
  260. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  261. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
@@ -4,52 +4,66 @@ import { createLogger } from '@aztec/foundation/log';
4
4
  import { Timer } from '@aztec/foundation/timer';
5
5
  import { toACVMWitness } from '@aztec/simulator/client';
6
6
  import { FunctionSelector, countArgumentsSize } from '@aztec/stdlib/abi';
7
- import { L2BlockHash } from '@aztec/stdlib/block';
8
7
  import { siloNullifier } from '@aztec/stdlib/hash';
9
8
  import { PrivateContextInputs } from '@aztec/stdlib/kernel';
10
- import { DirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
9
+ import { ExtendedDirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
11
10
  import { Tag } from '@aztec/stdlib/logs';
12
11
  import { Note } from '@aztec/stdlib/note';
13
12
  import { CallContext, CountedContractClassLog, NoteAndSlot } from '@aztec/stdlib/tx';
14
13
  import { NoteService } from '../../notes/note_service.js';
15
14
  import { syncSenderTaggingIndexes } from '../../tagging/index.js';
16
15
  import { pickNotes } from '../pick_notes.js';
17
- import { ensureContractSynced, executePrivateFunction } from './private_execution.js';
16
+ import { executePrivateFunction } from './private_execution.js';
18
17
  import { UtilityExecutionOracle } from './utility_execution_oracle.js';
19
18
  /**
20
19
  * The execution oracle for the private part of a transaction.
21
20
  */ export class PrivateExecutionOracle extends UtilityExecutionOracle {
21
+ isPrivate = true;
22
+ /**
23
+ * New notes created during this execution.
24
+ * It's possible that a note in this list has been nullified (in the same or other executions) and doesn't exist in
25
+ * the ExecutionNoteCache and the final proof data. But we still include those notes in the execution result because
26
+ * their commitments are still in the public inputs of this execution.
27
+ * This information is only for references (currently used for tests), and is not used for any sort of constrains.
28
+ * Users can also use this to get a clearer idea of what's happened during a simulation.
29
+ */ newNotes = [];
30
+ noteHashNullifierCounterMap = new Map();
31
+ contractClassLogs = [];
32
+ nestedExecutionResults = [];
22
33
  argsHash;
23
34
  txContext;
24
35
  callContext;
25
- anchorBlockHeader;
26
36
  utilityExecutor;
27
37
  executionCache;
28
38
  noteCache;
29
39
  taggingIndexCache;
30
40
  senderTaggingStore;
31
41
  totalPublicCalldataCount;
32
- sideEffectCounter;
33
- senderForTags;
42
+ initialSideEffectCounter;
43
+ /** Sender for tags passed in at oracle construction time. Returned by `getSenderForTags` unless overridden. */ defaultSenderForTags;
44
+ /** Per-call sender-for-tags override, set by `setSenderForTags`. Takes precedence over `defaultSenderForTags`. */ currentSenderForTags;
34
45
  simulator;
35
- isPrivate;
36
- /**
37
- * New notes created during this execution.
38
- * It's possible that a note in this list has been nullified (in the same or other executions) and doesn't exist in
39
- * the ExecutionNoteCache and the final proof data. But we still include those notes in the execution result because
40
- * their commitments are still in the public inputs of this execution.
41
- * This information is only for references (currently used for tests), and is not used for any sort of constrains.
42
- * Users can also use this to get a clearer idea of what's happened during a simulation.
43
- */ newNotes;
44
- noteHashNullifierCounterMap;
45
- contractClassLogs;
46
- offchainEffects;
47
- nestedExecutionResults;
48
- constructor(argsHash, txContext, callContext, /** Header of a block whose state is used during private execution (not the block the transaction is included in). */ anchorBlockHeader, /** Needed to trigger contract synchronization before nested calls */ utilityExecutor, /** List of transient auth witnesses to be used during this simulation */ authWitnesses, capsules, executionCache, noteCache, taggingIndexCache, contractStore, noteStore, keyStore, addressStore, aztecNode, anchorBlockStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, jobId, totalPublicCalldataCount = 0, sideEffectCounter = 0, log = createLogger('simulator:client_execution_context'), scopes, senderForTags, simulator){
49
- super(callContext.contractAddress, authWitnesses, capsules, anchorBlockHeader, contractStore, noteStore, keyStore, addressStore, aztecNode, anchorBlockStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, jobId, log, scopes), this.argsHash = argsHash, this.txContext = txContext, this.callContext = callContext, this.anchorBlockHeader = anchorBlockHeader, this.utilityExecutor = utilityExecutor, this.executionCache = executionCache, this.noteCache = noteCache, this.taggingIndexCache = taggingIndexCache, this.senderTaggingStore = senderTaggingStore, this.totalPublicCalldataCount = totalPublicCalldataCount, this.sideEffectCounter = sideEffectCounter, this.senderForTags = senderForTags, this.simulator = simulator, this.isPrivate = true, this.newNotes = [], this.noteHashNullifierCounterMap = new Map(), this.contractClassLogs = [], this.offchainEffects = [], this.nestedExecutionResults = [];
46
+ constructor(args){
47
+ super({
48
+ ...args,
49
+ contractAddress: args.callContext.contractAddress,
50
+ log: args.log ?? createLogger('simulator:client_execution_context')
51
+ });
52
+ this.argsHash = args.argsHash;
53
+ this.txContext = args.txContext;
54
+ this.callContext = args.callContext;
55
+ this.utilityExecutor = args.utilityExecutor;
56
+ this.executionCache = args.executionCache;
57
+ this.noteCache = args.noteCache;
58
+ this.taggingIndexCache = args.taggingIndexCache;
59
+ this.senderTaggingStore = args.senderTaggingStore;
60
+ this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
61
+ this.initialSideEffectCounter = args.sideEffectCounter ?? 0;
62
+ this.defaultSenderForTags = args.senderForTags;
63
+ this.simulator = args.simulator;
50
64
  }
51
65
  getPrivateContextInputs() {
52
- return new PrivateContextInputs(this.callContext, this.anchorBlockHeader, this.txContext, this.sideEffectCounter);
66
+ return new PrivateContextInputs(this.callContext, this.anchorBlockHeader, this.txContext, this.initialSideEffectCounter);
53
67
  }
54
68
  // We still need this function until we can get user-defined ordering of structs for fn arguments
55
69
  // TODO When that is sorted out on noir side, we can use instead the utilities in serialize.ts
@@ -87,14 +101,9 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
87
101
  return this.contractClassLogs;
88
102
  }
89
103
  /**
90
- * Return the offchain effects emitted during this execution.
91
- */ getOffchainEffects() {
92
- return this.offchainEffects;
93
- }
94
- /**
95
- * Returns the pre-tags that were used in this execution (and that need to be stored in the db).
96
- */ getUsedPreTags() {
97
- return this.taggingIndexCache.getUsedPreTags();
104
+ * Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
105
+ */ getUsedTaggingIndexRanges() {
106
+ return this.taggingIndexCache.getUsedTaggingIndexRanges();
98
107
  }
99
108
  /**
100
109
  * Return the nested execution results during this execution.
@@ -108,10 +117,9 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
108
117
  * for a tag in order to emit a log. Constrained tagging should not use this as there is no
109
118
  * guarantee that the recipient knows about the sender, and hence about the shared secret.
110
119
  *
111
- * The value persists through nested calls, meaning all calls down the stack will use the same
112
- * 'senderForTags' value (unless it is replaced).
113
- */ privateGetSenderForTags() {
114
- return Promise.resolve(this.senderForTags);
120
+ * Returns `currentSenderForTags` if set (via `setSenderForTags`), otherwise `defaultSenderForTags`.
121
+ */ getSenderForTags() {
122
+ return Promise.resolve(this.currentSenderForTags ?? this.defaultSenderForTags);
115
123
  }
116
124
  /**
117
125
  * Set the sender for tags.
@@ -120,11 +128,11 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
120
128
  * for a tag in order to emit a log. Constrained tagging should not use this as there is no
121
129
  * guarantee that the recipient knows about the sender, and hence about the shared secret.
122
130
  *
123
- * Account contracts typically set this value before calling other contracts. The value persists
124
- * through nested calls, meaning all calls down the stack will use the same 'senderForTags'
125
- * value (unless it is replaced by another call to this setter).
126
- */ privateSetSenderForTags(senderForTags) {
127
- this.senderForTags = senderForTags;
131
+ * Overrides `defaultSenderForTags` for the remainder of this call. Each oracle instance is
132
+ * independent, so this has no effect on any other call in the execution.
133
+ */ setSenderForTags(senderForTags) {
134
+ this.logger.debug(`Sender for tags switched to ${senderForTags} by contract ${this.contractAddress} (default was ${this.defaultSenderForTags})`);
135
+ this.currentSenderForTags = senderForTags;
128
136
  return Promise.resolve();
129
137
  }
130
138
  /**
@@ -132,20 +140,29 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
132
140
  * @param sender - The address sending the log
133
141
  * @param recipient - The address receiving the log
134
142
  * @returns An app tag to be used in a log.
135
- */ async privateGetNextAppTagAsSender(sender, recipient) {
136
- const secret = await this.#calculateDirectionalAppTaggingSecret(this.contractAddress, sender, recipient);
137
- const index = await this.#getIndexToUseForSecret(secret);
138
- this.log.debug(`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`);
139
- this.taggingIndexCache.setLastUsedIndex(secret, index);
143
+ */ async getNextAppTagAsSender(sender, recipient) {
144
+ const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(this.contractAddress, sender, recipient);
145
+ if (!extendedSecret) {
146
+ // We'd only fail to compute an extended secret if the recipient is an invalid address. To prevent
147
+ // king-of-the-hill attacks, instead of failing we use a random tag. By including a correct-looking tag in the
148
+ // log, the transaction shape is preserved and no privacy is leaked, even if the tag is bogus.
149
+ this.logger.warn(`Computing a tag for invalid recipient ${recipient} - returning a random tag instead`, {
150
+ contractAddress: this.contractAddress
151
+ });
152
+ return Tag.random();
153
+ }
154
+ const index = await this.#getIndexToUseForSecret(extendedSecret);
155
+ this.logger.debug(`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`);
156
+ this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
140
157
  return Tag.compute({
141
- secret,
158
+ extendedSecret,
142
159
  index
143
160
  });
144
161
  }
145
- async #calculateDirectionalAppTaggingSecret(contractAddress, sender, recipient) {
146
- const senderCompleteAddress = await this.getCompleteAddress(sender);
162
+ async #calculateExtendedDirectionalAppTaggingSecret(contractAddress, sender, recipient) {
163
+ const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
147
164
  const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
148
- return DirectionalAppTaggingSecret.compute(senderCompleteAddress, senderIvsk, recipient, contractAddress, recipient);
165
+ return ExtendedDirectionalAppTaggingSecret.compute(senderCompleteAddress, senderIvsk, recipient, contractAddress, recipient);
149
166
  }
150
167
  async #getIndexToUseForSecret(secret) {
151
168
  // If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
@@ -156,8 +173,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
156
173
  // This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
157
174
  // are up to date. We do this here because this store is not synced as part of the global sync because
158
175
  // that'd be wasteful as most tagging secrets are not used in each tx.
159
- const anchorBlockHash = L2BlockHash.fromField(await this.anchorBlockHeader.hash());
160
- await syncSenderTaggingIndexes(secret, this.contractAddress, this.aztecNode, this.senderTaggingStore, anchorBlockHash, this.jobId);
176
+ await syncSenderTaggingIndexes(secret, this.aztecNode, this.senderTaggingStore, await this.anchorBlockHeader.hash(), this.jobId);
161
177
  const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
162
178
  // If lastUsedIndex is undefined, we've never used this secret, so start from 0
163
179
  // Otherwise, the next index to use is one past the last used index
@@ -168,29 +184,29 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
168
184
  * Store values in the execution cache.
169
185
  * @param values - Values to store.
170
186
  * @returns The hash of the values.
171
- */ privateStoreInExecutionCache(values, hash) {
187
+ */ setHashPreimage(values, hash) {
172
188
  return this.executionCache.store(values, hash);
173
189
  }
174
190
  /**
175
191
  * Gets values from the execution cache.
176
192
  * @param hash - Hash of the values.
177
193
  * @returns The values.
178
- */ privateLoadFromExecutionCache(hash) {
194
+ */ getHashPreimage(hash) {
179
195
  const preimage = this.executionCache.getPreimage(hash);
180
196
  if (!preimage) {
181
197
  throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
182
198
  }
183
199
  return Promise.resolve(preimage);
184
200
  }
185
- async utilityCheckNullifierExists(innerNullifier) {
201
+ async doesNullifierExist(innerNullifier) {
186
202
  // This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
187
203
  // in the synched block, during private execution there's also the possibility of it being pending, i.e. created
188
204
  // in the current transaction.
189
- this.log.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
205
+ this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
190
206
  contractAddress: this.contractAddress
191
207
  });
192
208
  const nullifier = (await siloNullifier(this.contractAddress, innerNullifier)).toBigInt();
193
- return this.noteCache.getNullifiers(this.contractAddress).has(nullifier) || await super.utilityCheckNullifierExists(innerNullifier);
209
+ return this.noteCache.getNullifiers(this.contractAddress).has(nullifier) || await super.doesNullifierExist(innerNullifier);
194
210
  }
195
211
  /**
196
212
  * Gets some notes for a storage slot.
@@ -212,11 +228,11 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
212
228
  * @param offset - The starting index for pagination.
213
229
  * @param status - The status of notes to fetch.
214
230
  * @returns Array of note data.
215
- */ async utilityGetNotes(owner, storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status) {
231
+ */ async getNotes(owner, storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status) {
216
232
  // Nullified pending notes are already removed from the list.
217
233
  const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
218
234
  const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
219
- const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore, this.jobId);
235
+ const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
220
236
  const dbNotes = await noteService.getNotes(this.callContext.contractAddress, owner, storageSlot, status, this.scopes);
221
237
  const dbNotesFiltered = dbNotes.filter((n)=>!pendingNullifiers.has(n.siloedNullifier.value));
222
238
  const notes = pickNotes([
@@ -243,7 +259,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
243
259
  limit,
244
260
  offset
245
261
  });
246
- this.log.debug(`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes.map((n)=>`${n.noteNonce.toString()}:[${n.note.items.map((i)=>i.toString()).join(',')}]`).join(', ')}`);
262
+ this.logger.debug(`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes.map((n)=>`${n.noteNonce.toString()}:[${n.note.items.map((i)=>i.toString()).join(',')}]`).join(', ')}`);
247
263
  return notes;
248
264
  }
249
265
  /**
@@ -256,8 +272,8 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
256
272
  * @param noteItems - The items to be included in a Note.
257
273
  * @param noteHash - A hash of the new note.
258
274
  * @returns
259
- */ privateNotifyCreatedNote(owner, storageSlot, randomness, noteTypeId, noteItems, noteHash, counter) {
260
- this.log.debug(`Notified of new note with inner hash ${noteHash}`, {
275
+ */ notifyCreatedNote(owner, storageSlot, randomness, noteTypeId, noteItems, noteHash, counter) {
276
+ this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
261
277
  contractAddress: this.callContext.contractAddress,
262
278
  storageSlot,
263
279
  randomness,
@@ -288,7 +304,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
288
304
  * within the current transaction/execution.
289
305
  * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
290
306
  * @param noteHash - A hash of the new note.
291
- */ async privateNotifyNullifiedNote(innerNullifier, noteHash, counter) {
307
+ */ async notifyNullifiedNote(innerNullifier, noteHash, counter) {
292
308
  const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(this.callContext.contractAddress, innerNullifier, noteHash);
293
309
  if (nullifiedNoteHashCounter !== undefined) {
294
310
  this.noteHashNullifierCounterMap.set(nullifiedNoteHashCounter, counter);
@@ -299,19 +315,19 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
299
315
  * within the current transaction/execution.
300
316
  * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
301
317
  * @param noteHash - A hash of the new note.
302
- */ privateNotifyCreatedNullifier(innerNullifier) {
303
- this.log.debug(`Notified of new inner nullifier ${innerNullifier}`, {
318
+ */ notifyCreatedNullifier(innerNullifier) {
319
+ this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, {
304
320
  contractAddress: this.contractAddress
305
321
  });
306
322
  return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
307
323
  }
308
324
  /**
309
- * Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
325
+ * Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
310
326
  * called for this inner nullifier from the contract with the specified address.
311
327
  * @param innerNullifier - The inner nullifier to check.
312
328
  * @param contractAddress - Address of the contract that emitted the nullifier.
313
329
  * @returns A boolean indicating whether the nullifier is pending or not.
314
- */ async privateIsNullifierPending(innerNullifier, contractAddress) {
330
+ */ async isNullifierPending(innerNullifier, contractAddress) {
315
331
  const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
316
332
  const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
317
333
  return Promise.resolve(isNullifierPending);
@@ -322,10 +338,10 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
322
338
  * keep the preimage in ts for later.
323
339
  * @param log - The contract class log to be emitted.
324
340
  * @param counter - The contract class log's counter.
325
- */ privateNotifyCreatedContractClassLog(log, counter) {
341
+ */ notifyCreatedContractClassLog(log, counter) {
326
342
  this.contractClassLogs.push(new CountedContractClassLog(log, counter));
327
343
  const text = log.toBuffer().toString('hex');
328
- this.log.verbose(`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`);
344
+ this.logger.verbose(`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`);
329
345
  }
330
346
  #checkValidStaticCall(childExecutionResult) {
331
347
  if (childExecutionResult.publicInputs.noteHashes.claimedLength > 0 || childExecutionResult.publicInputs.nullifiers.claimedLength > 0 || childExecutionResult.publicInputs.l2ToL1Msgs.claimedLength > 0 || childExecutionResult.publicInputs.privateLogs.claimedLength > 0 || childExecutionResult.publicInputs.contractClassLogsHashes.claimedLength > 0) {
@@ -340,22 +356,55 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
340
356
  * @param sideEffectCounter - The side effect counter at the start of the call.
341
357
  * @param isStaticCall - Whether the call is a static call.
342
358
  * @returns The execution result.
343
- */ async privateCallPrivateFunction(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall) {
359
+ */ async callPrivateFunction(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall) {
344
360
  if (!this.simulator) {
345
361
  // In practice it is only when creating inline private contexts in a Noir test using TXE that we create an
346
362
  // instance of this class without a simulator.
347
363
  throw new Error('No simulator provided, cannot perform a nested private call');
348
364
  }
349
365
  const simulatorSetupTimer = new Timer();
350
- this.log.debug(`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`);
366
+ this.logger.debug(`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`);
351
367
  isStaticCall = isStaticCall || this.callContext.isStaticCall;
352
- await ensureContractSynced(targetContractAddress, functionSelector, this.utilityExecutor, this.aztecNode, this.contractStore, this.anchorBlockHeader);
368
+ await this.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, this.utilityExecutor, this.anchorBlockHeader, this.jobId, this.scopes);
353
369
  const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(targetContractAddress, functionSelector);
354
370
  const derivedTxContext = this.txContext.clone();
355
371
  const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
356
- const privateExecutionOracle = new PrivateExecutionOracle(argsHash, derivedTxContext, derivedCallContext, this.anchorBlockHeader, this.utilityExecutor, this.authWitnesses, this.capsules, this.executionCache, this.noteCache, this.taggingIndexCache, this.contractStore, this.noteStore, this.keyStore, this.addressStore, this.aztecNode, this.anchorBlockStore, this.senderTaggingStore, this.recipientTaggingStore, this.senderAddressBookStore, this.capsuleStore, this.privateEventStore, this.jobId, this.totalPublicCalldataCount, sideEffectCounter, this.log, this.scopes, this.senderForTags, this.simulator);
372
+ const privateExecutionOracle = new PrivateExecutionOracle({
373
+ argsHash,
374
+ txContext: derivedTxContext,
375
+ callContext: derivedCallContext,
376
+ anchorBlockHeader: this.anchorBlockHeader,
377
+ utilityExecutor: this.utilityExecutor,
378
+ authWitnesses: this.authWitnesses,
379
+ capsules: this.capsules,
380
+ executionCache: this.executionCache,
381
+ noteCache: this.noteCache,
382
+ taggingIndexCache: this.taggingIndexCache,
383
+ contractStore: this.contractStore,
384
+ noteStore: this.noteStore,
385
+ keyStore: this.keyStore,
386
+ addressStore: this.addressStore,
387
+ aztecNode: this.aztecNode,
388
+ senderTaggingStore: this.senderTaggingStore,
389
+ recipientTaggingStore: this.recipientTaggingStore,
390
+ senderAddressBookStore: this.senderAddressBookStore,
391
+ capsuleService: this.capsuleService,
392
+ privateEventStore: this.privateEventStore,
393
+ messageContextService: this.messageContextService,
394
+ contractSyncService: this.contractSyncService,
395
+ jobId: this.jobId,
396
+ totalPublicCalldataCount: this.totalPublicCalldataCount,
397
+ sideEffectCounter,
398
+ log: this.logger,
399
+ scopes: this.scopes,
400
+ senderForTags: this.defaultSenderForTags,
401
+ simulator: this.simulator,
402
+ l2TipsStore: this.l2TipsStore
403
+ });
357
404
  const setupTime = simulatorSetupTimer.ms();
358
405
  const childExecutionResult = await executePrivateFunction(this.simulator, privateExecutionOracle, targetArtifact, targetContractAddress, functionSelector);
406
+ // Propagate the nested call's calldata count so the parent sees its increments on subsequent enqueues.
407
+ this.totalPublicCalldataCount = privateExecutionOracle.getTotalPublicCalldataCount();
359
408
  if (isStaticCall) {
360
409
  this.#checkValidStaticCall(childExecutionResult);
361
410
  }
@@ -370,7 +419,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
370
419
  returnsHash: publicInputs.returnsHash
371
420
  };
372
421
  }
373
- #onNewPublicFunctionCall(calldataHash) {
422
+ /** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */ assertValidPublicCalldata(calldataHash) {
374
423
  const calldata = this.executionCache.getPreimage(calldataHash);
375
424
  if (!calldata) {
376
425
  throw new Error('Calldata for public call not found in cache');
@@ -379,31 +428,15 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
379
428
  if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
380
429
  throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
381
430
  }
382
- }
383
- /**
384
- * Verify relevant information when a public function is enqueued.
385
- * @param targetContractAddress - The address of the contract to call.
386
- * @param calldataHash - The hash of the function selector and arguments.
387
- * @param sideEffectCounter - The side effect counter at the start of the call.
388
- * @param isStaticCall - Whether the call is a static call.
389
- */ privateNotifyEnqueuedPublicFunctionCall(_targetContractAddress, calldataHash, _sideEffectCounter, _isStaticCall) {
390
- this.#onNewPublicFunctionCall(calldataHash);
391
431
  return Promise.resolve();
392
432
  }
393
- /**
394
- * Verify relevant information when a public teardown function is set.
395
- * @param targetContractAddress - The address of the contract to call.
396
- * @param argsHash - The arguments hash to pass to the function.
397
- * @param sideEffectCounter - The side effect counter at the start of the call.
398
- * @param isStaticCall - Whether the call is a static call.
399
- */ privateNotifySetPublicTeardownFunctionCall(_targetContractAddress, calldataHash, _sideEffectCounter, _isStaticCall) {
400
- this.#onNewPublicFunctionCall(calldataHash);
401
- return Promise.resolve();
433
+ getTotalPublicCalldataCount() {
434
+ return this.totalPublicCalldataCount;
402
435
  }
403
- privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter) {
436
+ notifyRevertiblePhaseStart(minRevertibleSideEffectCounter) {
404
437
  return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
405
438
  }
406
- privateIsSideEffectCounterRevertible(sideEffectCounter) {
439
+ isExecutionInRevertiblePhase(sideEffectCounter) {
407
440
  return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
408
441
  }
409
442
  /**
@@ -418,10 +451,4 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
418
451
  getDebugFunctionName() {
419
452
  return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
420
453
  }
421
- utilityEmitOffchainEffect(data) {
422
- this.offchainEffects.push({
423
- data
424
- });
425
- return Promise.resolve();
426
- }
427
454
  }