@aztec/pxe 0.0.1-commit.ff7989d6c → 0.0.1-commit.fff30aa

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 (223) hide show
  1. package/dest/bin/check_oracle_version.js +4 -4
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +3 -1
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  4. package/dest/block_synchronizer/block_synchronizer.js +10 -0
  5. package/dest/config/package_info.js +1 -1
  6. package/dest/contract_function_simulator/contract_function_simulator.d.ts +13 -5
  7. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  8. package/dest/contract_function_simulator/contract_function_simulator.js +39 -12
  9. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  10. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  11. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  12. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
  13. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  14. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
  15. package/dest/contract_function_simulator/index.d.ts +2 -1
  16. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  17. package/dest/contract_function_simulator/index.js +1 -0
  18. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -6
  19. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +8 -10
  21. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
  22. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
  23. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  24. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -4
  26. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +4 -7
  27. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +6 -11
  29. package/dest/contract_function_simulator/oracle/interfaces.d.ts +61 -45
  30. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  32. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  33. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +47 -0
  34. package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -44
  35. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  36. package/dest/contract_function_simulator/oracle/oracle.js +281 -96
  37. package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
  38. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +24 -50
  39. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +53 -75
  41. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +94 -60
  42. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +276 -110
  44. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  45. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/pick_notes.js +20 -3
  47. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  48. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  49. package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
  50. package/dest/contract_logging.d.ts +9 -4
  51. package/dest/contract_logging.d.ts.map +1 -1
  52. package/dest/contract_logging.js +21 -6
  53. package/dest/contract_sync/contract_sync_service.d.ts +6 -5
  54. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  55. package/dest/contract_sync/contract_sync_service.js +62 -43
  56. package/dest/contract_sync/helpers.d.ts +2 -3
  57. package/dest/contract_sync/helpers.d.ts.map +1 -1
  58. package/dest/contract_sync/helpers.js +7 -2
  59. package/dest/debug/pxe_debug_utils.d.ts +3 -3
  60. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  61. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  62. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  63. package/dest/entrypoints/client/bundle/index.js +0 -1
  64. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  65. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  66. package/dest/entrypoints/client/bundle/utils.js +2 -2
  67. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  68. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  69. package/dest/entrypoints/client/lazy/index.js +0 -1
  70. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  71. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  72. package/dest/entrypoints/client/lazy/utils.js +2 -2
  73. package/dest/entrypoints/pxe_creation_options.d.ts +3 -1
  74. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  75. package/dest/entrypoints/pxe_creation_options.js +3 -1
  76. package/dest/entrypoints/server/index.d.ts +2 -3
  77. package/dest/entrypoints/server/index.d.ts.map +1 -1
  78. package/dest/entrypoints/server/index.js +1 -2
  79. package/dest/entrypoints/server/utils.d.ts +2 -2
  80. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  81. package/dest/entrypoints/server/utils.js +2 -2
  82. package/dest/events/event_service.d.ts +3 -2
  83. package/dest/events/event_service.d.ts.map +1 -1
  84. package/dest/events/event_service.js +16 -4
  85. package/dest/events/private_event_filter_validator.d.ts +3 -2
  86. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  87. package/dest/events/private_event_filter_validator.js +15 -0
  88. package/dest/logs/log_service.d.ts +7 -8
  89. package/dest/logs/log_service.d.ts.map +1 -1
  90. package/dest/logs/log_service.js +29 -39
  91. package/dest/messages/message_context_service.d.ts +17 -0
  92. package/dest/messages/message_context_service.d.ts.map +1 -0
  93. package/dest/messages/message_context_service.js +36 -0
  94. package/dest/notes/note_service.d.ts +4 -5
  95. package/dest/notes/note_service.d.ts.map +1 -1
  96. package/dest/notes/note_service.js +14 -5
  97. package/dest/notes_filter.d.ts +2 -3
  98. package/dest/notes_filter.d.ts.map +1 -1
  99. package/dest/oracle_version.d.ts +4 -3
  100. package/dest/oracle_version.d.ts.map +1 -1
  101. package/dest/oracle_version.js +20 -10
  102. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  103. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  104. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +125 -64
  105. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  106. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  107. package/dest/private_kernel/hints/test_utils.js +203 -0
  108. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  109. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  110. package/dest/private_kernel/private_kernel_execution_prover.js +17 -12
  111. package/dest/private_kernel/private_kernel_oracle.d.ts +5 -5
  112. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  113. package/dest/private_kernel/private_kernel_oracle.js +12 -15
  114. package/dest/pxe.d.ts +10 -7
  115. package/dest/pxe.d.ts.map +1 -1
  116. package/dest/pxe.js +51 -28
  117. package/dest/storage/anchor_block_store/anchor_block_store.js +1 -1
  118. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  119. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  120. package/dest/storage/capsule_store/capsule_service.js +50 -0
  121. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  122. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  123. package/dest/storage/capsule_store/capsule_store.js +36 -28
  124. package/dest/storage/capsule_store/index.d.ts +2 -1
  125. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  126. package/dest/storage/capsule_store/index.js +1 -0
  127. package/dest/storage/contract_store/contract_store.d.ts +1 -1
  128. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  129. package/dest/storage/contract_store/contract_store.js +4 -2
  130. package/dest/storage/metadata.d.ts +1 -1
  131. package/dest/storage/metadata.js +1 -1
  132. package/dest/storage/note_store/note_store.d.ts +1 -1
  133. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  134. package/dest/storage/note_store/note_store.js +2 -2
  135. package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
  136. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  137. package/dest/storage/private_event_store/private_event_store.js +3 -0
  138. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  139. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  140. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  141. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  142. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  143. package/dest/tagging/index.d.ts +3 -3
  144. package/dest/tagging/index.d.ts.map +1 -1
  145. package/dest/tagging/index.js +1 -1
  146. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -5
  147. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  148. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +4 -18
  149. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +6 -7
  150. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  151. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +12 -11
  152. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -8
  153. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  154. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +13 -7
  155. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  156. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  157. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  158. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -7
  159. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  160. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +36 -24
  161. package/package.json +16 -16
  162. package/src/bin/check_oracle_version.ts +4 -4
  163. package/src/block_synchronizer/block_synchronizer.ts +12 -0
  164. package/src/config/package_info.ts +1 -1
  165. package/src/contract_function_simulator/contract_function_simulator.ts +60 -24
  166. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  167. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
  168. package/src/contract_function_simulator/index.ts +1 -0
  169. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +9 -9
  170. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
  171. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
  172. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -10
  173. package/src/contract_function_simulator/oracle/interfaces.ts +82 -54
  174. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
  175. package/src/contract_function_simulator/oracle/oracle.ts +363 -139
  176. package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
  177. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +65 -95
  178. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +451 -147
  179. package/src/contract_function_simulator/pick_notes.ts +22 -3
  180. package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
  181. package/src/contract_logging.ts +18 -5
  182. package/src/contract_sync/contract_sync_service.ts +99 -75
  183. package/src/contract_sync/helpers.ts +4 -4
  184. package/src/debug/pxe_debug_utils.ts +3 -3
  185. package/src/entrypoints/client/bundle/index.ts +0 -1
  186. package/src/entrypoints/client/bundle/utils.ts +2 -3
  187. package/src/entrypoints/client/lazy/index.ts +0 -1
  188. package/src/entrypoints/client/lazy/utils.ts +2 -3
  189. package/src/entrypoints/pxe_creation_options.ts +7 -0
  190. package/src/entrypoints/server/index.ts +1 -2
  191. package/src/entrypoints/server/utils.ts +2 -3
  192. package/src/events/event_service.ts +17 -4
  193. package/src/events/private_event_filter_validator.ts +21 -1
  194. package/src/logs/log_service.ts +59 -75
  195. package/src/messages/message_context_service.ts +44 -0
  196. package/src/notes/note_service.ts +18 -8
  197. package/src/notes_filter.ts +1 -3
  198. package/src/oracle_version.ts +20 -10
  199. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +157 -110
  200. package/src/private_kernel/hints/test_utils.ts +325 -0
  201. package/src/private_kernel/private_kernel_execution_prover.ts +17 -15
  202. package/src/private_kernel/private_kernel_oracle.ts +14 -14
  203. package/src/pxe.ts +78 -33
  204. package/src/storage/anchor_block_store/anchor_block_store.ts +1 -1
  205. package/src/storage/capsule_store/capsule_service.ts +90 -0
  206. package/src/storage/capsule_store/capsule_store.ts +44 -26
  207. package/src/storage/capsule_store/index.ts +1 -0
  208. package/src/storage/contract_store/contract_store.ts +8 -6
  209. package/src/storage/metadata.ts +1 -1
  210. package/src/storage/note_store/note_store.ts +2 -5
  211. package/src/storage/private_event_store/private_event_store.ts +4 -0
  212. package/src/storage/tagging_store/recipient_tagging_store.ts +9 -5
  213. package/src/storage/tagging_store/sender_tagging_store.ts +185 -138
  214. package/src/tagging/index.ts +2 -2
  215. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +8 -21
  216. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +10 -15
  217. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +23 -10
  218. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  219. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +27 -26
  220. package/dest/access_scopes.d.ts +0 -9
  221. package/dest/access_scopes.d.ts.map +0 -1
  222. package/dest/access_scopes.js +0 -6
  223. package/src/access_scopes.ts +0 -9
@@ -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
  {
@@ -14,7 +14,7 @@ import {
14
14
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
15
15
  import { siloNullifier } from '@aztec/stdlib/hash';
16
16
  import { PrivateContextInputs } from '@aztec/stdlib/kernel';
17
- import { type ContractClassLog, DirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
17
+ import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
18
18
  import { Tag } from '@aztec/stdlib/logs';
19
19
  import { Note, type NoteStatus } from '@aztec/stdlib/note';
20
20
  import {
@@ -25,8 +25,6 @@ import {
25
25
  type TxContext,
26
26
  } from '@aztec/stdlib/tx';
27
27
 
28
- import type { AccessScopes } from '../../access_scopes.js';
29
- import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
30
28
  import { NoteService } from '../../notes/note_service.js';
31
29
  import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
32
30
  import { syncSenderTaggingIndexes } from '../../tagging/index.js';
@@ -44,12 +42,11 @@ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contr
44
42
  txContext: TxContext;
45
43
  callContext: CallContext;
46
44
  /** Needed to trigger contract synchronization before nested calls */
47
- utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
45
+ utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<void>;
48
46
  executionCache: HashedValuesCache;
49
47
  noteCache: ExecutionNoteCache;
50
48
  taggingIndexCache: ExecutionTaggingIndexCache;
51
49
  senderTaggingStore: SenderTaggingStore;
52
- contractSyncService: ContractSyncService;
53
50
  totalPublicCalldataCount?: number;
54
51
  sideEffectCounter?: number;
55
52
  senderForTags?: AztecAddress;
@@ -73,20 +70,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
73
70
  private newNotes: NoteAndSlot[] = [];
74
71
  private noteHashNullifierCounterMap: Map<number, number> = new Map();
75
72
  private contractClassLogs: CountedContractClassLog[] = [];
76
- private offchainEffects: { data: Fr[] }[] = [];
77
73
  private nestedExecutionResults: PrivateCallExecutionResult[] = [];
78
74
 
79
75
  private readonly argsHash: Fr;
80
76
  private readonly txContext: TxContext;
81
77
  private readonly callContext: CallContext;
82
- private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
78
+ private readonly utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<void>;
83
79
  private readonly executionCache: HashedValuesCache;
84
80
  private readonly noteCache: ExecutionNoteCache;
85
81
  private readonly taggingIndexCache: ExecutionTaggingIndexCache;
86
82
  private readonly senderTaggingStore: SenderTaggingStore;
87
- private readonly contractSyncService: ContractSyncService;
88
83
  private totalPublicCalldataCount: number;
89
- protected sideEffectCounter: number;
84
+ private readonly initialSideEffectCounter: number;
90
85
  private senderForTags?: AztecAddress;
91
86
  private readonly simulator?: CircuitSimulator;
92
87
 
@@ -104,15 +99,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
104
99
  this.noteCache = args.noteCache;
105
100
  this.taggingIndexCache = args.taggingIndexCache;
106
101
  this.senderTaggingStore = args.senderTaggingStore;
107
- this.contractSyncService = args.contractSyncService;
108
102
  this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
109
- this.sideEffectCounter = args.sideEffectCounter ?? 0;
103
+ this.initialSideEffectCounter = args.sideEffectCounter ?? 0;
110
104
  this.senderForTags = args.senderForTags;
111
105
  this.simulator = args.simulator;
112
106
  }
113
107
 
114
108
  public getPrivateContextInputs(): PrivateContextInputs {
115
- return new PrivateContextInputs(this.callContext, this.anchorBlockHeader, this.txContext, this.sideEffectCounter);
109
+ return new PrivateContextInputs(
110
+ this.callContext,
111
+ this.anchorBlockHeader,
112
+ this.txContext,
113
+ this.initialSideEffectCounter,
114
+ );
116
115
  }
117
116
 
118
117
  // We still need this function until we can get user-defined ordering of structs for fn arguments
@@ -159,17 +158,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
159
158
  }
160
159
 
161
160
  /**
162
- * Return the offchain effects emitted during this execution.
163
- */
164
- public getOffchainEffects() {
165
- return this.offchainEffects;
166
- }
167
-
168
- /**
169
- * Returns the pre-tags that were used in this execution (and that need to be stored in the db).
161
+ * Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
170
162
  */
171
- public getUsedPreTags(): PreTag[] {
172
- return this.taggingIndexCache.getUsedPreTags();
163
+ public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
164
+ return this.taggingIndexCache.getUsedTaggingIndexRanges();
173
165
  }
174
166
 
175
167
  /**
@@ -189,7 +181,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
189
181
  * The value persists through nested calls, meaning all calls down the stack will use the same
190
182
  * 'senderForTags' value (unless it is replaced).
191
183
  */
192
- public privateGetSenderForTags(): Promise<AztecAddress | undefined> {
184
+ public getSenderForTags(): Promise<AztecAddress | undefined> {
193
185
  return Promise.resolve(this.senderForTags);
194
186
  }
195
187
 
@@ -204,7 +196,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
204
196
  * through nested calls, meaning all calls down the stack will use the same 'senderForTags'
205
197
  * value (unless it is replaced by another call to this setter).
206
198
  */
207
- public privateSetSenderForTags(senderForTags: AztecAddress): Promise<void> {
199
+ public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
208
200
  this.senderForTags = senderForTags;
209
201
  return Promise.resolve();
210
202
  }
@@ -215,26 +207,40 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
215
207
  * @param recipient - The address receiving the log
216
208
  * @returns An app tag to be used in a log.
217
209
  */
218
- public async privateGetNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
219
- const secret = await this.#calculateDirectionalAppTaggingSecret(this.contractAddress, sender, recipient);
210
+ public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
211
+ const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
212
+ this.contractAddress,
213
+ sender,
214
+ recipient,
215
+ );
216
+
217
+ if (!extendedSecret) {
218
+ // We'd only fail to compute an extended secret if the recipient is an invalid address. To prevent
219
+ // king-of-the-hill attacks, instead of failing we use a random tag. By including a correct-looking tag in the
220
+ // log, the transaction shape is preserved and no privacy is leaked, even if the tag is bogus.
221
+ this.logger.warn(`Computing a tag for invalid recipient ${recipient} - returning a random tag instead`, {
222
+ contractAddress: this.contractAddress,
223
+ });
224
+ return new Tag(Fr.random());
225
+ }
220
226
 
221
- const index = await this.#getIndexToUseForSecret(secret);
222
- this.log.debug(
227
+ const index = await this.#getIndexToUseForSecret(extendedSecret);
228
+ this.logger.debug(
223
229
  `Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
224
230
  );
225
- this.taggingIndexCache.setLastUsedIndex(secret, index);
231
+ this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
226
232
 
227
- return Tag.compute({ secret, index });
233
+ return Tag.compute({ extendedSecret, index });
228
234
  }
229
235
 
230
- async #calculateDirectionalAppTaggingSecret(
236
+ async #calculateExtendedDirectionalAppTaggingSecret(
231
237
  contractAddress: AztecAddress,
232
238
  sender: AztecAddress,
233
239
  recipient: AztecAddress,
234
240
  ) {
235
241
  const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
236
242
  const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
237
- return DirectionalAppTaggingSecret.compute(
243
+ return ExtendedDirectionalAppTaggingSecret.compute(
238
244
  senderCompleteAddress,
239
245
  senderIvsk,
240
246
  recipient,
@@ -243,7 +249,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
243
249
  );
244
250
  }
245
251
 
246
- async #getIndexToUseForSecret(secret: DirectionalAppTaggingSecret): Promise<number> {
252
+ async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
247
253
  // If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
248
254
  const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
249
255
 
@@ -255,7 +261,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
255
261
  // that'd be wasteful as most tagging secrets are not used in each tx.
256
262
  await syncSenderTaggingIndexes(
257
263
  secret,
258
- this.contractAddress,
259
264
  this.aztecNode,
260
265
  this.senderTaggingStore,
261
266
  await this.anchorBlockHeader.hash(),
@@ -274,7 +279,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
274
279
  * @param values - Values to store.
275
280
  * @returns The hash of the values.
276
281
  */
277
- public privateStoreInExecutionCache(values: Fr[], hash: Fr) {
282
+ public setHashPreimage(values: Fr[], hash: Fr) {
278
283
  return this.executionCache.store(values, hash);
279
284
  }
280
285
 
@@ -283,7 +288,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
283
288
  * @param hash - Hash of the values.
284
289
  * @returns The values.
285
290
  */
286
- public privateLoadFromExecutionCache(hash: Fr): Promise<Fr[]> {
291
+ public getHashPreimage(hash: Fr): Promise<Fr[]> {
287
292
  const preimage = this.executionCache.getPreimage(hash);
288
293
  if (!preimage) {
289
294
  throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
@@ -291,12 +296,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
291
296
  return Promise.resolve(preimage);
292
297
  }
293
298
 
294
- override async utilityCheckNullifierExists(innerNullifier: Fr): Promise<boolean> {
299
+ override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
295
300
  // This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
296
301
  // in the synched block, during private execution there's also the possibility of it being pending, i.e. created
297
302
  // in the current transaction.
298
303
 
299
- this.log.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
304
+ this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
300
305
  contractAddress: this.contractAddress,
301
306
  });
302
307
 
@@ -304,7 +309,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
304
309
 
305
310
  return (
306
311
  this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
307
- (await super.utilityCheckNullifierExists(innerNullifier))
312
+ (await super.doesNullifierExist(innerNullifier))
308
313
  );
309
314
  }
310
315
 
@@ -329,7 +334,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
329
334
  * @param status - The status of notes to fetch.
330
335
  * @returns Array of note data.
331
336
  */
332
- public override async utilityGetNotes(
337
+ public override async getNotes(
333
338
  owner: AztecAddress | undefined,
334
339
  storageSlot: Fr,
335
340
  numSelects: number,
@@ -375,7 +380,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
375
380
  offset,
376
381
  });
377
382
 
378
- this.log.debug(
383
+ this.logger.debug(
379
384
  `Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
380
385
  .map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
381
386
  .join(', ')}`,
@@ -395,7 +400,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
395
400
  * @param noteHash - A hash of the new note.
396
401
  * @returns
397
402
  */
398
- public privateNotifyCreatedNote(
403
+ public notifyCreatedNote(
399
404
  owner: AztecAddress,
400
405
  storageSlot: Fr,
401
406
  randomness: Fr,
@@ -404,7 +409,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
404
409
  noteHash: Fr,
405
410
  counter: number,
406
411
  ) {
407
- this.log.debug(`Notified of new note with inner hash ${noteHash}`, {
412
+ this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
408
413
  contractAddress: this.callContext.contractAddress,
409
414
  storageSlot,
410
415
  randomness,
@@ -436,7 +441,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
436
441
  * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
437
442
  * @param noteHash - A hash of the new note.
438
443
  */
439
- public async privateNotifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
444
+ public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
440
445
  const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
441
446
  this.callContext.contractAddress,
442
447
  innerNullifier,
@@ -453,19 +458,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
453
458
  * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
454
459
  * @param noteHash - A hash of the new note.
455
460
  */
456
- public privateNotifyCreatedNullifier(innerNullifier: Fr) {
457
- this.log.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
461
+ public notifyCreatedNullifier(innerNullifier: Fr) {
462
+ this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
458
463
  return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
459
464
  }
460
465
 
461
466
  /**
462
- * Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
467
+ * Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
463
468
  * called for this inner nullifier from the contract with the specified address.
464
469
  * @param innerNullifier - The inner nullifier to check.
465
470
  * @param contractAddress - Address of the contract that emitted the nullifier.
466
471
  * @returns A boolean indicating whether the nullifier is pending or not.
467
472
  */
468
- public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
473
+ public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
469
474
  const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
470
475
  const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
471
476
  return Promise.resolve(isNullifierPending);
@@ -478,10 +483,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
478
483
  * @param log - The contract class log to be emitted.
479
484
  * @param counter - The contract class log's counter.
480
485
  */
481
- public privateNotifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
486
+ public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
482
487
  this.contractClassLogs.push(new CountedContractClassLog(log, counter));
483
488
  const text = log.toBuffer().toString('hex');
484
- this.log.verbose(
489
+ this.logger.verbose(
485
490
  `Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
486
491
  );
487
492
  }
@@ -507,7 +512,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
507
512
  * @param isStaticCall - Whether the call is a static call.
508
513
  * @returns The execution result.
509
514
  */
510
- async privateCallPrivateFunction(
515
+ async callPrivateFunction(
511
516
  targetContractAddress: AztecAddress,
512
517
  functionSelector: FunctionSelector,
513
518
  argsHash: Fr,
@@ -521,7 +526,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
521
526
  }
522
527
 
523
528
  const simulatorSetupTimer = new Timer();
524
- this.log.debug(
529
+ this.logger.debug(
525
530
  `Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
526
531
  );
527
532
 
@@ -564,16 +569,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
564
569
  senderTaggingStore: this.senderTaggingStore,
565
570
  recipientTaggingStore: this.recipientTaggingStore,
566
571
  senderAddressBookStore: this.senderAddressBookStore,
567
- capsuleStore: this.capsuleStore,
572
+ capsuleService: this.capsuleService,
568
573
  privateEventStore: this.privateEventStore,
574
+ messageContextService: this.messageContextService,
569
575
  contractSyncService: this.contractSyncService,
570
576
  jobId: this.jobId,
571
577
  totalPublicCalldataCount: this.totalPublicCalldataCount,
572
578
  sideEffectCounter,
573
- log: this.log,
574
579
  scopes: this.scopes,
580
+ log: this.logger,
575
581
  senderForTags: this.senderForTags,
576
582
  simulator: this.simulator!,
583
+ l2TipsStore: this.l2TipsStore,
577
584
  });
578
585
 
579
586
  const setupTime = simulatorSetupTimer.ms();
@@ -605,7 +612,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
605
612
  };
606
613
  }
607
614
 
608
- #onNewPublicFunctionCall(calldataHash: Fr) {
615
+ /** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
616
+ public assertValidPublicCalldata(calldataHash: Fr) {
609
617
  const calldata = this.executionCache.getPreimage(calldataHash);
610
618
  if (!calldata) {
611
619
  throw new Error('Calldata for public call not found in cache');
@@ -615,47 +623,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
615
623
  if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
616
624
  throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
617
625
  }
618
- }
619
-
620
- /**
621
- * Verify relevant information when a public function is enqueued.
622
- * @param targetContractAddress - The address of the contract to call.
623
- * @param calldataHash - The hash of the function selector and arguments.
624
- * @param sideEffectCounter - The side effect counter at the start of the call.
625
- * @param isStaticCall - Whether the call is a static call.
626
- */
627
- public privateNotifyEnqueuedPublicFunctionCall(
628
- _targetContractAddress: AztecAddress,
629
- calldataHash: Fr,
630
- _sideEffectCounter: number,
631
- _isStaticCall: boolean,
632
- ) {
633
- this.#onNewPublicFunctionCall(calldataHash);
634
- return Promise.resolve();
635
- }
636
-
637
- /**
638
- * Verify relevant information when a public teardown function is set.
639
- * @param targetContractAddress - The address of the contract to call.
640
- * @param argsHash - The arguments hash to pass to the function.
641
- * @param sideEffectCounter - The side effect counter at the start of the call.
642
- * @param isStaticCall - Whether the call is a static call.
643
- */
644
- public privateNotifySetPublicTeardownFunctionCall(
645
- _targetContractAddress: AztecAddress,
646
- calldataHash: Fr,
647
- _sideEffectCounter: number,
648
- _isStaticCall: boolean,
649
- ) {
650
- this.#onNewPublicFunctionCall(calldataHash);
651
626
  return Promise.resolve();
652
627
  }
653
628
 
654
- public privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void> {
629
+ public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
655
630
  return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
656
631
  }
657
632
 
658
- public privateIsSideEffectCounterRevertible(sideEffectCounter: number): Promise<boolean> {
633
+ public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
659
634
  return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
660
635
  }
661
636
 
@@ -682,9 +657,4 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
682
657
  public getDebugFunctionName() {
683
658
  return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
684
659
  }
685
-
686
- public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
687
- this.offchainEffects.push({ data });
688
- return Promise.resolve();
689
- }
690
660
  }