@aztec/pxe 0.0.1-commit.db765a8 → 0.0.1-commit.ddcf04837

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 (197) hide show
  1. package/dest/bin/check_oracle_version.js +4 -4
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +1 -1
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  4. package/dest/block_synchronizer/block_synchronizer.js +6 -0
  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/contract_function_simulator/contract_function_simulator.d.ts +13 -5
  9. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  10. package/dest/contract_function_simulator/contract_function_simulator.js +34 -7
  11. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  12. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  13. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  14. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -5
  15. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  16. package/dest/contract_function_simulator/execution_tagging_index_cache.js +17 -9
  17. package/dest/contract_function_simulator/index.d.ts +2 -1
  18. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/index.js +1 -0
  20. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -6
  21. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  22. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +8 -10
  23. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
  24. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
  25. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  26. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  27. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -4
  28. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +4 -7
  29. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  30. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +6 -11
  31. package/dest/contract_function_simulator/oracle/interfaces.d.ts +38 -22
  32. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  34. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  35. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +47 -0
  36. package/dest/contract_function_simulator/oracle/oracle.d.ts +51 -20
  37. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/oracle/oracle.js +188 -46
  39. package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
  40. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +12 -38
  41. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +23 -45
  43. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +79 -42
  44. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  45. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +260 -87
  46. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  47. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  48. package/dest/contract_function_simulator/pick_notes.js +9 -2
  49. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  50. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  51. package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
  52. package/dest/contract_logging.d.ts +9 -4
  53. package/dest/contract_logging.d.ts.map +1 -1
  54. package/dest/contract_logging.js +21 -6
  55. package/dest/contract_sync/contract_sync_service.d.ts +6 -5
  56. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  57. package/dest/contract_sync/contract_sync_service.js +62 -43
  58. package/dest/contract_sync/helpers.d.ts +2 -3
  59. package/dest/contract_sync/helpers.d.ts.map +1 -1
  60. package/dest/contract_sync/helpers.js +7 -2
  61. package/dest/debug/pxe_debug_utils.d.ts +3 -3
  62. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  63. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  64. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  65. package/dest/entrypoints/client/bundle/index.js +0 -1
  66. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  67. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  68. package/dest/entrypoints/client/bundle/utils.js +2 -2
  69. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  70. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  71. package/dest/entrypoints/client/lazy/index.js +0 -1
  72. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  73. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  74. package/dest/entrypoints/client/lazy/utils.js +2 -2
  75. package/dest/entrypoints/pxe_creation_options.d.ts +3 -1
  76. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  77. package/dest/entrypoints/pxe_creation_options.js +3 -1
  78. package/dest/entrypoints/server/index.d.ts +2 -3
  79. package/dest/entrypoints/server/index.d.ts.map +1 -1
  80. package/dest/entrypoints/server/index.js +1 -2
  81. package/dest/entrypoints/server/utils.d.ts +2 -2
  82. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  83. package/dest/entrypoints/server/utils.js +2 -2
  84. package/dest/events/event_service.d.ts +3 -2
  85. package/dest/events/event_service.d.ts.map +1 -1
  86. package/dest/events/event_service.js +16 -4
  87. package/dest/events/private_event_filter_validator.d.ts +3 -2
  88. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  89. package/dest/events/private_event_filter_validator.js +15 -0
  90. package/dest/logs/log_service.d.ts +7 -8
  91. package/dest/logs/log_service.d.ts.map +1 -1
  92. package/dest/logs/log_service.js +27 -37
  93. package/dest/messages/message_context_service.d.ts +17 -0
  94. package/dest/messages/message_context_service.d.ts.map +1 -0
  95. package/dest/messages/message_context_service.js +36 -0
  96. package/dest/notes/note_service.d.ts +4 -5
  97. package/dest/notes/note_service.d.ts.map +1 -1
  98. package/dest/notes/note_service.js +14 -5
  99. package/dest/notes_filter.d.ts +2 -3
  100. package/dest/notes_filter.d.ts.map +1 -1
  101. package/dest/oracle_version.d.ts +4 -3
  102. package/dest/oracle_version.d.ts.map +1 -1
  103. package/dest/oracle_version.js +20 -10
  104. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  105. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  106. package/dest/private_kernel/private_kernel_execution_prover.js +4 -7
  107. package/dest/pxe.d.ts +10 -7
  108. package/dest/pxe.d.ts.map +1 -1
  109. package/dest/pxe.js +45 -23
  110. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  111. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  112. package/dest/storage/capsule_store/capsule_service.js +50 -0
  113. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  114. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  115. package/dest/storage/capsule_store/capsule_store.js +33 -28
  116. package/dest/storage/capsule_store/index.d.ts +2 -1
  117. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  118. package/dest/storage/capsule_store/index.js +1 -0
  119. package/dest/storage/metadata.d.ts +1 -1
  120. package/dest/storage/metadata.js +1 -1
  121. package/dest/storage/note_store/note_store.d.ts +1 -1
  122. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  123. package/dest/storage/note_store/note_store.js +2 -2
  124. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  125. package/dest/storage/tagging_store/sender_tagging_store.d.ts +26 -25
  126. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  127. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  128. package/dest/tagging/index.d.ts +2 -2
  129. package/dest/tagging/index.d.ts.map +1 -1
  130. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +2 -2
  131. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  132. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +1 -15
  133. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +1 -1
  134. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  135. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +10 -1
  136. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  137. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  138. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  139. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +2 -1
  140. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  141. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +24 -11
  142. package/package.json +16 -16
  143. package/src/bin/check_oracle_version.ts +4 -4
  144. package/src/block_synchronizer/block_synchronizer.ts +6 -0
  145. package/src/config/index.ts +3 -9
  146. package/src/contract_function_simulator/contract_function_simulator.ts +48 -11
  147. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  148. package/src/contract_function_simulator/execution_tagging_index_cache.ts +16 -11
  149. package/src/contract_function_simulator/index.ts +1 -0
  150. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +9 -9
  151. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
  152. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
  153. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -10
  154. package/src/contract_function_simulator/oracle/interfaces.ts +58 -30
  155. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
  156. package/src/contract_function_simulator/oracle/oracle.ts +262 -66
  157. package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
  158. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +27 -65
  159. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +436 -118
  160. package/src/contract_function_simulator/pick_notes.ts +9 -2
  161. package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
  162. package/src/contract_logging.ts +18 -5
  163. package/src/contract_sync/contract_sync_service.ts +99 -75
  164. package/src/contract_sync/helpers.ts +4 -4
  165. package/src/debug/pxe_debug_utils.ts +3 -3
  166. package/src/entrypoints/client/bundle/index.ts +0 -1
  167. package/src/entrypoints/client/bundle/utils.ts +2 -3
  168. package/src/entrypoints/client/lazy/index.ts +0 -1
  169. package/src/entrypoints/client/lazy/utils.ts +2 -3
  170. package/src/entrypoints/pxe_creation_options.ts +7 -0
  171. package/src/entrypoints/server/index.ts +1 -2
  172. package/src/entrypoints/server/utils.ts +2 -3
  173. package/src/events/event_service.ts +17 -4
  174. package/src/events/private_event_filter_validator.ts +21 -1
  175. package/src/logs/log_service.ts +57 -78
  176. package/src/messages/message_context_service.ts +44 -0
  177. package/src/notes/note_service.ts +18 -8
  178. package/src/notes_filter.ts +1 -3
  179. package/src/oracle_version.ts +20 -10
  180. package/src/private_kernel/private_kernel_execution_prover.ts +4 -9
  181. package/src/pxe.ts +72 -28
  182. package/src/storage/capsule_store/capsule_service.ts +90 -0
  183. package/src/storage/capsule_store/capsule_store.ts +34 -26
  184. package/src/storage/capsule_store/index.ts +1 -0
  185. package/src/storage/metadata.ts +1 -1
  186. package/src/storage/note_store/note_store.ts +2 -5
  187. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  188. package/src/storage/tagging_store/sender_tagging_store.ts +182 -135
  189. package/src/tagging/index.ts +1 -1
  190. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +2 -14
  191. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +19 -1
  192. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  193. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +19 -9
  194. package/dest/access_scopes.d.ts +0 -9
  195. package/dest/access_scopes.d.ts.map +0 -1
  196. package/dest/access_scopes.js +0 -6
  197. package/src/access_scopes.ts +0 -9
@@ -3,12 +3,9 @@ import { FieldReader } from '@aztec/foundation/serialize';
3
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import { TxHash } from '@aztec/stdlib/tx';
5
5
 
6
- // TODO(#14617): should we compute this from constants? This value is aztec-nr specific.
7
- export const MAX_NOTE_PACKED_LEN = 8;
8
-
9
6
  /**
10
7
  * Intermediate struct used to perform batch note validation by PXE. The `utilityValidateAndStoreEnqueuedNotesAndEvents` oracle
11
- * expects for values of this type to be stored in a `CapsuleArray`.
8
+ * expects for values of this type to be stored in a `EphemeralArray`.
12
9
  */
13
10
  export class NoteValidationRequest {
14
11
  constructor(
@@ -21,10 +18,9 @@ export class NoteValidationRequest {
21
18
  public noteHash: Fr,
22
19
  public nullifier: Fr,
23
20
  public txHash: TxHash,
24
- public recipient: AztecAddress,
25
21
  ) {}
26
22
 
27
- static fromFields(fields: Fr[] | FieldReader): NoteValidationRequest {
23
+ static fromFields(fields: Fr[], maxNotePackedLen: number): NoteValidationRequest {
28
24
  const reader = FieldReader.asReader(fields);
29
25
 
30
26
  const contractAddress = AztecAddress.fromField(reader.readField());
@@ -33,18 +29,17 @@ export class NoteValidationRequest {
33
29
  const randomness = reader.readField();
34
30
  const noteNonce = reader.readField();
35
31
 
36
- const contentStorage = reader.readFieldArray(MAX_NOTE_PACKED_LEN);
32
+ const contentStorage = reader.readFieldArray(maxNotePackedLen);
37
33
  const contentLen = reader.readField().toNumber();
38
34
  const content = contentStorage.slice(0, contentLen);
39
35
 
40
36
  const noteHash = reader.readField();
41
37
  const nullifier = reader.readField();
42
38
  const txHash = TxHash.fromField(reader.readField());
43
- const recipient = AztecAddress.fromField(reader.readField());
44
39
 
45
40
  if (reader.remainingFields() !== 0) {
46
41
  throw new Error(
47
- `Error converting array of fields to NoteValidationRequest. Hint: check that MAX_NOTE_PACKED_LEN is consistent with private_notes::MAX_NOTE_PACKED_LEN in Aztec-nr.`,
42
+ `Error converting array of fields to NoteValidationRequest: expected ${reader.cursor} fields but received ${fields.length} (maxNotePackedLen=${maxNotePackedLen}).`,
48
43
  );
49
44
  }
50
45
 
@@ -58,7 +53,6 @@ export class NoteValidationRequest {
58
53
  noteHash,
59
54
  nullifier,
60
55
  txHash,
61
- recipient,
62
56
  );
63
57
  }
64
58
  }
@@ -6,8 +6,9 @@ import { MembershipWitness } from '@aztec/foundation/trees';
6
6
  import type { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
7
7
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
8
8
  import { BlockHash } from '@aztec/stdlib/block';
9
- import type { CompleteAddress, ContractInstance } from '@aztec/stdlib/contract';
9
+ import type { ContractInstance, PartialAddress } from '@aztec/stdlib/contract';
10
10
  import type { KeyValidationRequest } from '@aztec/stdlib/kernel';
11
+ import type { PublicKeys } from '@aztec/stdlib/keys';
11
12
  import type { ContractClassLog, Tag } from '@aztec/stdlib/logs';
12
13
  import type { Note, NoteStatus } from '@aztec/stdlib/note';
13
14
  import { type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
@@ -53,7 +54,7 @@ export interface IMiscOracle {
53
54
  isMisc: true;
54
55
 
55
56
  getRandomField(): Fr;
56
- assertCompatibleOracleVersion(version: number): void;
57
+ assertCompatibleOracleVersion(major: number, minor: number): void;
57
58
  log(level: number, message: string, fields: Fr[]): Promise<void>;
58
59
  }
59
60
 
@@ -85,7 +86,9 @@ export interface IUtilityExecutionOracle {
85
86
  nullifier: Fr,
86
87
  ): Promise<NullifierMembershipWitness | undefined>;
87
88
  getBlockHeader(blockNumber: BlockNumber): Promise<BlockHeader | undefined>;
88
- tryGetPublicKeysAndPartialAddress(account: AztecAddress): Promise<CompleteAddress | undefined>;
89
+ getPublicKeysAndPartialAddress(
90
+ account: AztecAddress,
91
+ ): Promise<{ publicKeys: PublicKeys; partialAddress: PartialAddress } | undefined>;
89
92
  getAuthWitness(messageHash: Fr): Promise<Fr[] | undefined>;
90
93
  getNotes(
91
94
  owner: AztecAddress | undefined,
@@ -104,35 +107,72 @@ export interface IUtilityExecutionOracle {
104
107
  offset: number,
105
108
  status: NoteStatus,
106
109
  ): Promise<NoteData[]>;
107
- checkNullifierExists(innerNullifier: Fr): Promise<boolean>;
110
+ doesNullifierExist(innerNullifier: Fr): Promise<boolean>;
108
111
  getL1ToL2MembershipWitness(
109
112
  contractAddress: AztecAddress,
110
113
  messageHash: Fr,
111
114
  secret: Fr,
112
115
  ): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
113
- storageRead(
116
+ getFromPublicStorage(
114
117
  anchorBlockHash: BlockHash,
115
118
  contractAddress: AztecAddress,
116
119
  startStorageSlot: Fr,
117
120
  numberOfElements: number,
118
121
  ): Promise<Fr[]>;
119
- fetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr): Promise<void>;
122
+ getPendingTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr, scope: AztecAddress): Promise<void>;
123
+ getPendingTaggedLogsV2(scope: AztecAddress): Promise<Fr>;
120
124
  validateAndStoreEnqueuedNotesAndEvents(
121
125
  contractAddress: AztecAddress,
122
126
  noteValidationRequestsArrayBaseSlot: Fr,
123
127
  eventValidationRequestsArrayBaseSlot: Fr,
128
+ maxNotePackedLen: number,
129
+ maxEventSerializedLen: number,
130
+ scope: AztecAddress,
124
131
  ): Promise<void>;
125
- bulkRetrieveLogs(
132
+ getLogsByTag(
126
133
  contractAddress: AztecAddress,
127
134
  logRetrievalRequestsArrayBaseSlot: Fr,
128
135
  logRetrievalResponsesArrayBaseSlot: Fr,
136
+ scope: AztecAddress,
129
137
  ): Promise<void>;
130
- storeCapsule(contractAddress: AztecAddress, key: Fr, capsule: Fr[]): Promise<void>;
131
- loadCapsule(contractAddress: AztecAddress, key: Fr): Promise<Fr[] | null>;
132
- deleteCapsule(contractAddress: AztecAddress, key: Fr): Promise<void>;
133
- copyCapsule(contractAddress: AztecAddress, srcKey: Fr, dstKey: Fr, numEntries: number): Promise<void>;
134
- aes128Decrypt(ciphertext: Buffer, iv: Buffer, symKey: Buffer): Promise<Buffer>;
135
- getSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point>;
138
+ validateAndStoreEnqueuedNotesAndEventsV2(
139
+ noteValidationRequestsArrayBaseSlot: Fr,
140
+ eventValidationRequestsArrayBaseSlot: Fr,
141
+ maxNotePackedLen: number,
142
+ maxEventSerializedLen: number,
143
+ scope: AztecAddress,
144
+ ): Promise<void>;
145
+ getLogsByTagV2(requestArrayBaseSlot: Fr): Promise<Fr>;
146
+ getMessageContextsByTxHashV2(requestArrayBaseSlot: Fr): Promise<Fr>;
147
+ getMessageContextsByTxHash(
148
+ contractAddress: AztecAddress,
149
+ messageContextRequestsArrayBaseSlot: Fr,
150
+ messageContextResponsesArrayBaseSlot: Fr,
151
+ scope: AztecAddress,
152
+ ): Promise<void>;
153
+ setCapsule(contractAddress: AztecAddress, key: Fr, capsule: Fr[], scope: AztecAddress): void;
154
+ getCapsule(contractAddress: AztecAddress, key: Fr, scope: AztecAddress): Promise<Fr[] | null>;
155
+ deleteCapsule(contractAddress: AztecAddress, key: Fr, scope: AztecAddress): void;
156
+ copyCapsule(
157
+ contractAddress: AztecAddress,
158
+ srcKey: Fr,
159
+ dstKey: Fr,
160
+ numEntries: number,
161
+ scope: AztecAddress,
162
+ ): Promise<void>;
163
+ decryptAes128(ciphertext: Buffer, iv: Buffer, symKey: Buffer): Promise<Buffer>;
164
+ getSharedSecret(address: AztecAddress, ephPk: Point, contractAddress: AztecAddress): Promise<Fr>;
165
+ setContractSyncCacheInvalid(contractAddress: AztecAddress, scopes: AztecAddress[]): void;
166
+ emitOffchainEffect(data: Fr[]): Promise<void>;
167
+
168
+ // Ephemeral array methods
169
+ pushEphemeral(slot: Fr, elements: Fr[]): number;
170
+ popEphemeral(slot: Fr): Fr[];
171
+ getEphemeral(slot: Fr, index: number): Fr[];
172
+ setEphemeral(slot: Fr, index: number, elements: Fr[]): void;
173
+ getEphemeralLen(slot: Fr): number;
174
+ removeEphemeral(slot: Fr, index: number): void;
175
+ clearEphemeral(slot: Fr): void;
136
176
  }
137
177
 
138
178
  /**
@@ -142,8 +182,8 @@ export interface IUtilityExecutionOracle {
142
182
  export interface IPrivateExecutionOracle {
143
183
  isPrivate: true;
144
184
 
145
- storeInExecutionCache(values: Fr[], hash: Fr): void;
146
- loadFromExecutionCache(hash: Fr): Promise<Fr[]>;
185
+ setHashPreimage(values: Fr[], hash: Fr): void;
186
+ getHashPreimage(hash: Fr): Promise<Fr[]>;
147
187
  notifyCreatedNote(
148
188
  owner: AztecAddress,
149
189
  storageSlot: Fr,
@@ -164,22 +204,10 @@ export interface IPrivateExecutionOracle {
164
204
  sideEffectCounter: number,
165
205
  isStaticCall: boolean,
166
206
  ): Promise<{ endSideEffectCounter: Fr; returnsHash: Fr }>;
167
- notifyEnqueuedPublicFunctionCall(
168
- targetContractAddress: AztecAddress,
169
- calldataHash: Fr,
170
- sideEffectCounter: number,
171
- isStaticCall: boolean,
172
- ): Promise<void>;
173
- notifySetPublicTeardownFunctionCall(
174
- targetContractAddress: AztecAddress,
175
- calldataHash: Fr,
176
- sideEffectCounter: number,
177
- isStaticCall: boolean,
178
- ): Promise<void>;
179
- notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void>;
180
- isSideEffectCounterRevertible(sideEffectCounter: number): Promise<boolean>;
207
+ assertValidPublicCalldata(calldataHash: Fr): Promise<void>;
208
+ notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void>;
209
+ isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean>;
181
210
  getSenderForTags(): Promise<AztecAddress | undefined>;
182
211
  setSenderForTags(senderForTags: AztecAddress): Promise<void>;
183
212
  getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag>;
184
- emitOffchainEffect(data: Fr[]): Promise<void>;
185
213
  }
@@ -0,0 +1,104 @@
1
+ import { toACVMField } from '@aztec/simulator/client';
2
+ import type { ACIRCallback, ACVMField } from '@aztec/simulator/client';
3
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+
5
+ import type { Oracle } from './oracle.js';
6
+
7
+ /**
8
+ * Builds legacy oracle name callbacks for pinned protocol contracts whose artifacts are committed and cannot be
9
+ * changed.
10
+ * TODO(F-416): Remove these aliases on v5 when protocol contracts are redeployed.
11
+ */
12
+ export function buildLegacyOracleCallbacks(oracle: Oracle): ACIRCallback {
13
+ // If you are about to add a new mapping ensure that the old oracle name is different from the new one - this can
14
+ // commonly occur when only the args are getting modified.
15
+ return {
16
+ // Simple prefix renames (privateXxx/utilityXxx → aztec_prv_/aztec_utl_)
17
+ utilityLog: (
18
+ level: ACVMField[],
19
+ message: ACVMField[],
20
+ _ignoredFieldsSize: ACVMField[],
21
+ fields: ACVMField[],
22
+ ): Promise<ACVMField[]> => oracle.aztec_utl_log(level, message, _ignoredFieldsSize, fields),
23
+ utilityAssertCompatibleOracleVersion: (version: ACVMField[]): Promise<ACVMField[]> =>
24
+ oracle.aztec_utl_assertCompatibleOracleVersionV2(version, [toACVMField(0)]),
25
+ // Old 1-arg oracle before minor/major split. Maps to V2 with minor=0.
26
+ // eslint-disable-next-line camelcase
27
+ aztec_utl_assertCompatibleOracleVersion: (version: ACVMField[]): Promise<ACVMField[]> =>
28
+ oracle.aztec_utl_assertCompatibleOracleVersionV2(version, [toACVMField(0)]),
29
+ utilityLoadCapsule: (
30
+ contractAddress: ACVMField[],
31
+ slot: ACVMField[],
32
+ tSize: ACVMField[],
33
+ ): Promise<(ACVMField | ACVMField[])[]> =>
34
+ oracle.aztec_utl_getCapsule(contractAddress, slot, tSize, [toACVMField(AztecAddress.ZERO)]),
35
+ privateStoreInExecutionCache: (values: ACVMField[], hash: ACVMField[]): Promise<ACVMField[]> =>
36
+ oracle.aztec_prv_setHashPreimage(values, hash),
37
+ privateLoadFromExecutionCache: (returnsHash: ACVMField[]): Promise<ACVMField[][]> =>
38
+ oracle.aztec_prv_getHashPreimage(returnsHash),
39
+ privateCallPrivateFunction: (
40
+ contractAddress: ACVMField[],
41
+ functionSelector: ACVMField[],
42
+ argsHash: ACVMField[],
43
+ sideEffectCounter: ACVMField[],
44
+ isStaticCall: ACVMField[],
45
+ ): Promise<ACVMField[][]> =>
46
+ oracle.aztec_prv_callPrivateFunction(
47
+ contractAddress,
48
+ functionSelector,
49
+ argsHash,
50
+ sideEffectCounter,
51
+ isStaticCall,
52
+ ),
53
+ privateIsNullifierPending: (innerNullifier: ACVMField[], contractAddress: ACVMField[]): Promise<ACVMField[]> =>
54
+ oracle.aztec_prv_isNullifierPending(innerNullifier, contractAddress),
55
+ privateNotifyCreatedNullifier: (innerNullifier: ACVMField[]): Promise<ACVMField[]> =>
56
+ oracle.aztec_prv_notifyCreatedNullifier(innerNullifier),
57
+ privateNotifyCreatedContractClassLog: (
58
+ contractAddress: ACVMField[],
59
+ message: ACVMField[],
60
+ length: ACVMField[],
61
+ counter: ACVMField[],
62
+ ): Promise<ACVMField[]> =>
63
+ oracle.aztec_prv_notifyCreatedContractClassLog(contractAddress, message, length, counter),
64
+ utilityGetUtilityContext: (): Promise<(ACVMField | ACVMField[])[]> => oracle.aztec_utl_getUtilityContext(),
65
+ utilityStorageRead: (
66
+ blockHash: ACVMField[],
67
+ contractAddress: ACVMField[],
68
+ startStorageSlot: ACVMField[],
69
+ numberOfElements: ACVMField[],
70
+ ): Promise<ACVMField[][]> =>
71
+ oracle.aztec_utl_getFromPublicStorage(blockHash, contractAddress, startStorageSlot, numberOfElements),
72
+ utilityStoreCapsule: (
73
+ contractAddress: ACVMField[],
74
+ slot: ACVMField[],
75
+ capsule: ACVMField[],
76
+ ): Promise<ACVMField[]> =>
77
+ oracle.aztec_utl_setCapsule(contractAddress, slot, capsule, [toACVMField(AztecAddress.ZERO)]),
78
+ utilityCopyCapsule: (
79
+ contractAddress: ACVMField[],
80
+ srcSlot: ACVMField[],
81
+ dstSlot: ACVMField[],
82
+ numEntries: ACVMField[],
83
+ ): Promise<ACVMField[]> =>
84
+ oracle.aztec_utl_copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, [toACVMField(AztecAddress.ZERO)]),
85
+ utilityDeleteCapsule: (contractAddress: ACVMField[], slot: ACVMField[]): Promise<ACVMField[]> =>
86
+ oracle.aztec_utl_deleteCapsule(contractAddress, slot, [toACVMField(AztecAddress.ZERO)]),
87
+ utilityGetL1ToL2MembershipWitness: (
88
+ contractAddress: ACVMField[],
89
+ messageHash: ACVMField[],
90
+ secret: ACVMField[],
91
+ ): Promise<(ACVMField | ACVMField[])[]> =>
92
+ oracle.aztec_utl_getL1ToL2MembershipWitness(contractAddress, messageHash, secret),
93
+ // Renames (same signature, different oracle name)
94
+ privateNotifySetMinRevertibleSideEffectCounter: (counter: ACVMField[]): Promise<ACVMField[]> =>
95
+ oracle.aztec_prv_notifyRevertiblePhaseStart(counter),
96
+ // Signature changes: old 4-param oracles → new 1-param validatePublicCalldata
97
+ privateNotifyEnqueuedPublicFunctionCall: (
98
+ _contractAddress: ACVMField[],
99
+ calldataHash: ACVMField[],
100
+ _sideEffectCounter: ACVMField[],
101
+ _isStaticCall: ACVMField[],
102
+ ): Promise<ACVMField[]> => oracle.aztec_prv_assertValidPublicCalldata(calldataHash),
103
+ };
104
+ }