@aztec/pxe 0.0.1-commit.d1cd2107c → 0.0.1-commit.d1da697d6

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 (165) hide show
  1. package/dest/block_synchronizer/block_synchronizer.d.ts +1 -1
  2. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  3. package/dest/block_synchronizer/block_synchronizer.js +6 -0
  4. package/dest/contract_function_simulator/contract_function_simulator.d.ts +10 -5
  5. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  6. package/dest/contract_function_simulator/contract_function_simulator.js +29 -6
  7. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -5
  8. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  9. package/dest/contract_function_simulator/execution_tagging_index_cache.js +17 -9
  10. package/dest/contract_function_simulator/index.d.ts +2 -1
  11. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  12. package/dest/contract_function_simulator/index.js +1 -0
  13. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -5
  14. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  15. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -9
  16. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
  17. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  18. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -3
  19. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -6
  20. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  21. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +5 -10
  22. package/dest/contract_function_simulator/oracle/interfaces.d.ts +21 -20
  23. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  24. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  25. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  26. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +38 -0
  27. package/dest/contract_function_simulator/oracle/oracle.d.ts +39 -19
  28. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  29. package/dest/contract_function_simulator/oracle/oracle.js +91 -44
  30. package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
  31. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +12 -38
  32. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +21 -44
  34. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +45 -28
  35. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  36. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +164 -71
  37. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  38. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/pick_notes.js +9 -2
  40. package/dest/contract_logging.d.ts +9 -4
  41. package/dest/contract_logging.d.ts.map +1 -1
  42. package/dest/contract_logging.js +21 -6
  43. package/dest/contract_sync/contract_sync_service.d.ts +6 -5
  44. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  45. package/dest/contract_sync/contract_sync_service.js +44 -37
  46. package/dest/contract_sync/helpers.d.ts +2 -3
  47. package/dest/contract_sync/helpers.d.ts.map +1 -1
  48. package/dest/contract_sync/helpers.js +7 -2
  49. package/dest/debug/pxe_debug_utils.d.ts +3 -3
  50. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  51. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  52. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  53. package/dest/entrypoints/client/bundle/index.js +0 -1
  54. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  55. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  56. package/dest/entrypoints/client/bundle/utils.js +2 -2
  57. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  58. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  59. package/dest/entrypoints/client/lazy/index.js +0 -1
  60. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  61. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  62. package/dest/entrypoints/client/lazy/utils.js +2 -2
  63. package/dest/entrypoints/pxe_creation_options.d.ts +3 -1
  64. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  65. package/dest/entrypoints/pxe_creation_options.js +3 -1
  66. package/dest/entrypoints/server/index.d.ts +1 -2
  67. package/dest/entrypoints/server/index.d.ts.map +1 -1
  68. package/dest/entrypoints/server/index.js +0 -1
  69. package/dest/entrypoints/server/utils.d.ts +2 -2
  70. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  71. package/dest/entrypoints/server/utils.js +2 -2
  72. package/dest/events/event_service.d.ts +3 -2
  73. package/dest/events/event_service.d.ts.map +1 -1
  74. package/dest/events/event_service.js +16 -4
  75. package/dest/logs/log_service.d.ts +6 -7
  76. package/dest/logs/log_service.d.ts.map +1 -1
  77. package/dest/logs/log_service.js +32 -30
  78. package/dest/messages/message_context_service.d.ts +17 -0
  79. package/dest/messages/message_context_service.d.ts.map +1 -0
  80. package/dest/messages/message_context_service.js +36 -0
  81. package/dest/notes/note_service.d.ts +4 -5
  82. package/dest/notes/note_service.d.ts.map +1 -1
  83. package/dest/notes/note_service.js +14 -5
  84. package/dest/notes_filter.d.ts +2 -3
  85. package/dest/notes_filter.d.ts.map +1 -1
  86. package/dest/oracle_version.d.ts +2 -2
  87. package/dest/oracle_version.js +2 -2
  88. package/dest/pxe.d.ts +9 -7
  89. package/dest/pxe.d.ts.map +1 -1
  90. package/dest/pxe.js +39 -23
  91. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  92. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  93. package/dest/storage/capsule_store/capsule_service.js +50 -0
  94. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  95. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  96. package/dest/storage/capsule_store/capsule_store.js +33 -28
  97. package/dest/storage/capsule_store/index.d.ts +2 -1
  98. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  99. package/dest/storage/capsule_store/index.js +1 -0
  100. package/dest/storage/metadata.d.ts +1 -1
  101. package/dest/storage/metadata.js +1 -1
  102. package/dest/storage/note_store/note_store.d.ts +1 -1
  103. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  104. package/dest/storage/note_store/note_store.js +2 -2
  105. package/dest/storage/tagging_store/sender_tagging_store.d.ts +26 -25
  106. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  107. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  108. package/dest/tagging/index.d.ts +2 -2
  109. package/dest/tagging/index.d.ts.map +1 -1
  110. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +1 -1
  111. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  112. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +10 -1
  113. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  114. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  115. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  116. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +2 -1
  117. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  118. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +24 -11
  119. package/package.json +16 -16
  120. package/src/block_synchronizer/block_synchronizer.ts +6 -0
  121. package/src/contract_function_simulator/contract_function_simulator.ts +42 -10
  122. package/src/contract_function_simulator/execution_tagging_index_cache.ts +16 -11
  123. package/src/contract_function_simulator/index.ts +1 -0
  124. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +8 -8
  125. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
  126. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -9
  127. package/src/contract_function_simulator/oracle/interfaces.ts +34 -28
  128. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +98 -0
  129. package/src/contract_function_simulator/oracle/oracle.ts +120 -64
  130. package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
  131. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +26 -65
  132. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +288 -85
  133. package/src/contract_function_simulator/pick_notes.ts +9 -2
  134. package/src/contract_logging.ts +18 -5
  135. package/src/contract_sync/contract_sync_service.ts +77 -59
  136. package/src/contract_sync/helpers.ts +4 -4
  137. package/src/debug/pxe_debug_utils.ts +3 -3
  138. package/src/entrypoints/client/bundle/index.ts +0 -1
  139. package/src/entrypoints/client/bundle/utils.ts +2 -3
  140. package/src/entrypoints/client/lazy/index.ts +0 -1
  141. package/src/entrypoints/client/lazy/utils.ts +2 -3
  142. package/src/entrypoints/pxe_creation_options.ts +7 -0
  143. package/src/entrypoints/server/index.ts +0 -1
  144. package/src/entrypoints/server/utils.ts +2 -3
  145. package/src/events/event_service.ts +17 -4
  146. package/src/logs/log_service.ts +63 -48
  147. package/src/messages/message_context_service.ts +44 -0
  148. package/src/notes/note_service.ts +18 -8
  149. package/src/notes_filter.ts +1 -3
  150. package/src/oracle_version.ts +2 -2
  151. package/src/pxe.ts +62 -28
  152. package/src/storage/capsule_store/capsule_service.ts +90 -0
  153. package/src/storage/capsule_store/capsule_store.ts +34 -26
  154. package/src/storage/capsule_store/index.ts +1 -0
  155. package/src/storage/metadata.ts +1 -1
  156. package/src/storage/note_store/note_store.ts +2 -5
  157. package/src/storage/tagging_store/sender_tagging_store.ts +182 -135
  158. package/src/tagging/index.ts +1 -1
  159. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +19 -1
  160. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  161. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +19 -9
  162. package/dest/access_scopes.d.ts +0 -9
  163. package/dest/access_scopes.d.ts.map +0 -1
  164. package/dest/access_scopes.js +0 -6
  165. package/src/access_scopes.ts +0 -9
@@ -0,0 +1,98 @@
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
+ return {
14
+ // Simple prefix renames (privateXxx/utilityXxx → aztec_prv_/aztec_utl_)
15
+ utilityLog: (
16
+ level: ACVMField[],
17
+ message: ACVMField[],
18
+ _ignoredFieldsSize: ACVMField[],
19
+ fields: ACVMField[],
20
+ ): Promise<ACVMField[]> => oracle.aztec_utl_log(level, message, _ignoredFieldsSize, fields),
21
+ utilityAssertCompatibleOracleVersion: (version: ACVMField[]): Promise<ACVMField[]> =>
22
+ oracle.aztec_utl_assertCompatibleOracleVersion(version),
23
+ utilityLoadCapsule: (
24
+ contractAddress: ACVMField[],
25
+ slot: ACVMField[],
26
+ tSize: ACVMField[],
27
+ ): Promise<(ACVMField | ACVMField[])[]> =>
28
+ oracle.aztec_utl_getCapsule(contractAddress, slot, tSize, [toACVMField(AztecAddress.ZERO)]),
29
+ privateStoreInExecutionCache: (values: ACVMField[], hash: ACVMField[]): Promise<ACVMField[]> =>
30
+ oracle.aztec_prv_setHashPreimage(values, hash),
31
+ privateLoadFromExecutionCache: (returnsHash: ACVMField[]): Promise<ACVMField[][]> =>
32
+ oracle.aztec_prv_getHashPreimage(returnsHash),
33
+ privateCallPrivateFunction: (
34
+ contractAddress: ACVMField[],
35
+ functionSelector: ACVMField[],
36
+ argsHash: ACVMField[],
37
+ sideEffectCounter: ACVMField[],
38
+ isStaticCall: ACVMField[],
39
+ ): Promise<ACVMField[][]> =>
40
+ oracle.aztec_prv_callPrivateFunction(
41
+ contractAddress,
42
+ functionSelector,
43
+ argsHash,
44
+ sideEffectCounter,
45
+ isStaticCall,
46
+ ),
47
+ privateIsNullifierPending: (innerNullifier: ACVMField[], contractAddress: ACVMField[]): Promise<ACVMField[]> =>
48
+ oracle.aztec_prv_isNullifierPending(innerNullifier, contractAddress),
49
+ privateNotifyCreatedNullifier: (innerNullifier: ACVMField[]): Promise<ACVMField[]> =>
50
+ oracle.aztec_prv_notifyCreatedNullifier(innerNullifier),
51
+ privateNotifyCreatedContractClassLog: (
52
+ contractAddress: ACVMField[],
53
+ message: ACVMField[],
54
+ length: ACVMField[],
55
+ counter: ACVMField[],
56
+ ): Promise<ACVMField[]> =>
57
+ oracle.aztec_prv_notifyCreatedContractClassLog(contractAddress, message, length, counter),
58
+ utilityGetUtilityContext: (): Promise<(ACVMField | ACVMField[])[]> => oracle.aztec_utl_getUtilityContext(),
59
+ utilityStorageRead: (
60
+ blockHash: ACVMField[],
61
+ contractAddress: ACVMField[],
62
+ startStorageSlot: ACVMField[],
63
+ numberOfElements: ACVMField[],
64
+ ): Promise<ACVMField[][]> =>
65
+ oracle.aztec_utl_getFromPublicStorage(blockHash, contractAddress, startStorageSlot, numberOfElements),
66
+ utilityStoreCapsule: (
67
+ contractAddress: ACVMField[],
68
+ slot: ACVMField[],
69
+ capsule: ACVMField[],
70
+ ): Promise<ACVMField[]> =>
71
+ oracle.aztec_utl_setCapsule(contractAddress, slot, capsule, [toACVMField(AztecAddress.ZERO)]),
72
+ utilityCopyCapsule: (
73
+ contractAddress: ACVMField[],
74
+ srcSlot: ACVMField[],
75
+ dstSlot: ACVMField[],
76
+ numEntries: ACVMField[],
77
+ ): Promise<ACVMField[]> =>
78
+ oracle.aztec_utl_copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, [toACVMField(AztecAddress.ZERO)]),
79
+ utilityDeleteCapsule: (contractAddress: ACVMField[], slot: ACVMField[]): Promise<ACVMField[]> =>
80
+ oracle.aztec_utl_deleteCapsule(contractAddress, slot, [toACVMField(AztecAddress.ZERO)]),
81
+ utilityGetL1ToL2MembershipWitness: (
82
+ contractAddress: ACVMField[],
83
+ messageHash: ACVMField[],
84
+ secret: ACVMField[],
85
+ ): Promise<(ACVMField | ACVMField[])[]> =>
86
+ oracle.aztec_utl_getL1ToL2MembershipWitness(contractAddress, messageHash, secret),
87
+ // Renames (same signature, different oracle name)
88
+ privateNotifySetMinRevertibleSideEffectCounter: (counter: ACVMField[]): Promise<ACVMField[]> =>
89
+ oracle.aztec_prv_notifyRevertiblePhaseStart(counter),
90
+ // Signature changes: old 4-param oracles → new 1-param validatePublicCalldata
91
+ privateNotifyEnqueuedPublicFunctionCall: (
92
+ _contractAddress: ACVMField[],
93
+ calldataHash: ACVMField[],
94
+ _sideEffectCounter: ACVMField[],
95
+ _isStaticCall: ACVMField[],
96
+ ): Promise<ACVMField[]> => oracle.aztec_prv_assertValidPublicCalldata(calldataHash),
97
+ };
98
+ }
@@ -16,6 +16,7 @@ import { BlockHash } from '@aztec/stdlib/block';
16
16
  import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
17
17
 
18
18
  import type { IMiscOracle, IPrivateExecutionOracle, IUtilityExecutionOracle } from './interfaces.js';
19
+ import { buildLegacyOracleCallbacks } from './legacy_oracle_mappings.js';
19
20
  import { packAsHintedNote } from './note_packing_utils.js';
20
21
 
21
22
  export class UnavailableOracleError extends Error {
@@ -26,6 +27,25 @@ export class UnavailableOracleError extends Error {
26
27
 
27
28
  /**
28
29
  * A data source that has all the apis required by Aztec.nr.
30
+ *
31
+ * ## Oracle naming conventions
32
+ *
33
+ * We try to keep oracle naming consistent, please see below the conventions we adhere to.
34
+ *
35
+ * Each oracle method name has the form `aztec_{scope}_{verb}{Object}`, where:
36
+ *
37
+ * - **Scope prefix** indicates the execution context required:
38
+ * - `aztec_prv_` — available only during private function execution.
39
+ * - `aztec_utl_` — available during both utility and private execution.
40
+ *
41
+ * - **Verb** signals the operation's semantics (verb-first, then object):
42
+ * - `get` — read / lookup / get data from oracle into contract.
43
+ * - `does`/`is`/`has` — predicate (returns boolean).
44
+ * - `emit`/`notify` — propagate data from contract to oracle.
45
+ * - `set` — contract driven oracle state mutation (capsules, execution cache, tagging, etc).
46
+ * - `call` — trigger nested execution (control flow).
47
+ * - `assert` — validate a condition, throw on failure.
48
+ * - Standalone verbs (`delete`, `copy`, `decrypt`, `log`, etc) are used when no generic verb fits.
29
49
  */
30
50
  export class Oracle {
31
51
  constructor(private handler: IMiscOracle | IUtilityExecutionOracle | IPrivateExecutionOracle) {}
@@ -85,11 +105,13 @@ export class Oracle {
85
105
  });
86
106
 
87
107
  // Build callback object and return it
88
- return oracleNames.reduce((acc, name) => {
108
+ const callback = oracleNames.reduce((acc, name) => {
89
109
  const method = this[name as keyof Omit<Oracle, (typeof excludedProps)[number]>];
90
110
  acc[name] = method.bind(this);
91
111
  return acc;
92
112
  }, {} as ACIRCallback);
113
+
114
+ return { ...callback, ...buildLegacyOracleCallbacks(this) };
93
115
  }
94
116
 
95
117
  // eslint-disable-next-line camelcase
@@ -105,14 +127,14 @@ export class Oracle {
105
127
  }
106
128
 
107
129
  // eslint-disable-next-line camelcase
108
- aztec_prv_storeInExecutionCache(values: ACVMField[], [hash]: ACVMField[]): Promise<ACVMField[]> {
109
- this.handlerAsPrivate().storeInExecutionCache(values.map(Fr.fromString), Fr.fromString(hash));
130
+ aztec_prv_setHashPreimage(values: ACVMField[], [hash]: ACVMField[]): Promise<ACVMField[]> {
131
+ this.handlerAsPrivate().setHashPreimage(values.map(Fr.fromString), Fr.fromString(hash));
110
132
  return Promise.resolve([]);
111
133
  }
112
134
 
113
135
  // eslint-disable-next-line camelcase
114
- async aztec_prv_loadFromExecutionCache([returnsHash]: ACVMField[]): Promise<ACVMField[][]> {
115
- const values = await this.handlerAsPrivate().loadFromExecutionCache(Fr.fromString(returnsHash));
136
+ async aztec_prv_getHashPreimage([returnsHash]: ACVMField[]): Promise<ACVMField[][]> {
137
+ const values = await this.handlerAsPrivate().getHashPreimage(Fr.fromString(returnsHash));
116
138
  return [values.map(toACVMField)];
117
139
  }
118
140
 
@@ -249,9 +271,9 @@ export class Oracle {
249
271
  }
250
272
 
251
273
  // eslint-disable-next-line camelcase
252
- async aztec_utl_tryGetPublicKeysAndPartialAddress([address]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]> {
274
+ async aztec_utl_getPublicKeysAndPartialAddress([address]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]> {
253
275
  const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
254
- const result = await this.handlerAsUtility().tryGetPublicKeysAndPartialAddress(parsedAddress);
276
+ const result = await this.handlerAsUtility().getPublicKeysAndPartialAddress(parsedAddress);
255
277
 
256
278
  // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
257
279
  // with two fields: `some` (a boolean) and `value` (a field array in this case).
@@ -377,8 +399,8 @@ export class Oracle {
377
399
  }
378
400
 
379
401
  // eslint-disable-next-line camelcase
380
- async aztec_utl_checkNullifierExists([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
381
- const exists = await this.handlerAsUtility().checkNullifierExists(Fr.fromString(innerNullifier));
402
+ async aztec_utl_doesNullifierExist([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
403
+ const exists = await this.handlerAsUtility().doesNullifierExist(Fr.fromString(innerNullifier));
382
404
  return [toACVMField(exists)];
383
405
  }
384
406
 
@@ -397,13 +419,13 @@ export class Oracle {
397
419
  }
398
420
 
399
421
  // eslint-disable-next-line camelcase
400
- async aztec_utl_storageRead(
422
+ async aztec_utl_getFromPublicStorage(
401
423
  [blockHash]: ACVMField[],
402
424
  [contractAddress]: ACVMField[],
403
425
  [startStorageSlot]: ACVMField[],
404
426
  [numberOfElements]: ACVMField[],
405
427
  ): Promise<ACVMField[][]> {
406
- const values = await this.handlerAsUtility().storageRead(
428
+ const values = await this.handlerAsUtility().getFromPublicStorage(
407
429
  BlockHash.fromString(blockHash),
408
430
  new AztecAddress(Fr.fromString(contractAddress)),
409
431
  Fr.fromString(startStorageSlot),
@@ -461,50 +483,20 @@ export class Oracle {
461
483
  }
462
484
 
463
485
  // eslint-disable-next-line camelcase
464
- async aztec_prv_notifyEnqueuedPublicFunctionCall(
465
- [contractAddress]: ACVMField[],
466
- [calldataHash]: ACVMField[],
467
- [sideEffectCounter]: ACVMField[],
468
- [isStaticCall]: ACVMField[],
469
- ): Promise<ACVMField[]> {
470
- await this.handlerAsPrivate().notifyEnqueuedPublicFunctionCall(
471
- AztecAddress.fromString(contractAddress),
472
- Fr.fromString(calldataHash),
473
- Fr.fromString(sideEffectCounter).toNumber(),
474
- Fr.fromString(isStaticCall).toBool(),
475
- );
486
+ async aztec_prv_assertValidPublicCalldata([calldataHash]: ACVMField[]): Promise<ACVMField[]> {
487
+ await this.handlerAsPrivate().assertValidPublicCalldata(Fr.fromString(calldataHash));
476
488
  return [];
477
489
  }
478
490
 
479
491
  // eslint-disable-next-line camelcase
480
- async aztec_prv_notifySetPublicTeardownFunctionCall(
481
- [contractAddress]: ACVMField[],
482
- [calldataHash]: ACVMField[],
483
- [sideEffectCounter]: ACVMField[],
484
- [isStaticCall]: ACVMField[],
485
- ): Promise<ACVMField[]> {
486
- await this.handlerAsPrivate().notifySetPublicTeardownFunctionCall(
487
- AztecAddress.fromString(contractAddress),
488
- Fr.fromString(calldataHash),
489
- Fr.fromString(sideEffectCounter).toNumber(),
490
- Fr.fromString(isStaticCall).toBool(),
491
- );
492
- return [];
493
- }
494
-
495
- // eslint-disable-next-line camelcase
496
- async aztec_prv_notifySetMinRevertibleSideEffectCounter([minRevertibleSideEffectCounter]: ACVMField[]): Promise<
497
- ACVMField[]
498
- > {
499
- await this.handlerAsPrivate().notifySetMinRevertibleSideEffectCounter(
500
- Fr.fromString(minRevertibleSideEffectCounter).toNumber(),
501
- );
492
+ async aztec_prv_notifyRevertiblePhaseStart([minRevertibleSideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
493
+ await this.handlerAsPrivate().notifyRevertiblePhaseStart(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
502
494
  return Promise.resolve([]);
503
495
  }
504
496
 
505
497
  // eslint-disable-next-line camelcase
506
- async aztec_prv_isSideEffectCounterRevertible([sideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
507
- const isRevertible = await this.handlerAsPrivate().isSideEffectCounterRevertible(
498
+ async aztec_prv_isExecutionInRevertiblePhase([sideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
499
+ const isRevertible = await this.handlerAsPrivate().isExecutionInRevertiblePhase(
508
500
  Fr.fromString(sideEffectCounter).toNumber(),
509
501
  );
510
502
  return Promise.resolve([toACVMField(isRevertible)]);
@@ -520,8 +512,14 @@ export class Oracle {
520
512
  }
521
513
 
522
514
  // eslint-disable-next-line camelcase
523
- async aztec_utl_fetchTaggedLogs([pendingTaggedLogArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]> {
524
- await this.handlerAsUtility().fetchTaggedLogs(Fr.fromString(pendingTaggedLogArrayBaseSlot));
515
+ async aztec_utl_getPendingTaggedLogs(
516
+ [pendingTaggedLogArrayBaseSlot]: ACVMField[],
517
+ [scope]: ACVMField[],
518
+ ): Promise<ACVMField[]> {
519
+ await this.handlerAsUtility().getPendingTaggedLogs(
520
+ Fr.fromString(pendingTaggedLogArrayBaseSlot),
521
+ AztecAddress.fromString(scope),
522
+ );
525
523
  return [];
526
524
  }
527
525
 
@@ -530,53 +528,81 @@ export class Oracle {
530
528
  [contractAddress]: ACVMField[],
531
529
  [noteValidationRequestsArrayBaseSlot]: ACVMField[],
532
530
  [eventValidationRequestsArrayBaseSlot]: ACVMField[],
531
+ [maxNotePackedLen]: ACVMField[],
532
+ [maxEventSerializedLen]: ACVMField[],
533
+ [scope]: ACVMField[],
533
534
  ): Promise<ACVMField[]> {
534
535
  await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(
535
536
  AztecAddress.fromString(contractAddress),
536
537
  Fr.fromString(noteValidationRequestsArrayBaseSlot),
537
538
  Fr.fromString(eventValidationRequestsArrayBaseSlot),
539
+ Fr.fromString(maxNotePackedLen).toNumber(),
540
+ Fr.fromString(maxEventSerializedLen).toNumber(),
541
+ AztecAddress.fromString(scope),
538
542
  );
539
543
 
540
544
  return [];
541
545
  }
542
546
 
543
547
  // eslint-disable-next-line camelcase
544
- async aztec_utl_bulkRetrieveLogs(
548
+ async aztec_utl_getLogsByTag(
545
549
  [contractAddress]: ACVMField[],
546
550
  [logRetrievalRequestsArrayBaseSlot]: ACVMField[],
547
551
  [logRetrievalResponsesArrayBaseSlot]: ACVMField[],
552
+ [scope]: ACVMField[],
548
553
  ): Promise<ACVMField[]> {
549
- await this.handlerAsUtility().bulkRetrieveLogs(
554
+ await this.handlerAsUtility().getLogsByTag(
550
555
  AztecAddress.fromString(contractAddress),
551
556
  Fr.fromString(logRetrievalRequestsArrayBaseSlot),
552
557
  Fr.fromString(logRetrievalResponsesArrayBaseSlot),
558
+ AztecAddress.fromString(scope),
559
+ );
560
+ return [];
561
+ }
562
+
563
+ // eslint-disable-next-line camelcase
564
+ async aztec_utl_getMessageContextsByTxHash(
565
+ [contractAddress]: ACVMField[],
566
+ [messageContextRequestsArrayBaseSlot]: ACVMField[],
567
+ [messageContextResponsesArrayBaseSlot]: ACVMField[],
568
+ [scope]: ACVMField[],
569
+ ): Promise<ACVMField[]> {
570
+ await this.handlerAsUtility().getMessageContextsByTxHash(
571
+ AztecAddress.fromString(contractAddress),
572
+ Fr.fromString(messageContextRequestsArrayBaseSlot),
573
+ Fr.fromString(messageContextResponsesArrayBaseSlot),
574
+ AztecAddress.fromString(scope),
553
575
  );
554
576
  return [];
555
577
  }
556
578
 
557
579
  // eslint-disable-next-line camelcase
558
- async aztec_utl_storeCapsule(
580
+ aztec_utl_setCapsule(
559
581
  [contractAddress]: ACVMField[],
560
582
  [slot]: ACVMField[],
561
583
  capsule: ACVMField[],
584
+ [scope]: ACVMField[],
562
585
  ): Promise<ACVMField[]> {
563
- await this.handlerAsUtility().storeCapsule(
586
+ this.handlerAsUtility().setCapsule(
564
587
  AztecAddress.fromField(Fr.fromString(contractAddress)),
565
588
  Fr.fromString(slot),
566
589
  capsule.map(Fr.fromString),
590
+ AztecAddress.fromField(Fr.fromString(scope)),
567
591
  );
568
- return [];
592
+ return Promise.resolve([]);
569
593
  }
570
594
 
571
595
  // eslint-disable-next-line camelcase
572
- async aztec_utl_loadCapsule(
596
+ async aztec_utl_getCapsule(
573
597
  [contractAddress]: ACVMField[],
574
598
  [slot]: ACVMField[],
575
599
  [tSize]: ACVMField[],
600
+ [scope]: ACVMField[],
576
601
  ): Promise<(ACVMField | ACVMField[])[]> {
577
- const values = await this.handlerAsUtility().loadCapsule(
602
+ const values = await this.handlerAsUtility().getCapsule(
578
603
  AztecAddress.fromField(Fr.fromString(contractAddress)),
579
604
  Fr.fromString(slot),
605
+ AztecAddress.fromField(Fr.fromString(scope)),
580
606
  );
581
607
 
582
608
  // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
@@ -591,12 +617,17 @@ export class Oracle {
591
617
  }
592
618
 
593
619
  // eslint-disable-next-line camelcase
594
- async aztec_utl_deleteCapsule([contractAddress]: ACVMField[], [slot]: ACVMField[]): Promise<ACVMField[]> {
595
- await this.handlerAsUtility().deleteCapsule(
620
+ aztec_utl_deleteCapsule(
621
+ [contractAddress]: ACVMField[],
622
+ [slot]: ACVMField[],
623
+ [scope]: ACVMField[],
624
+ ): Promise<ACVMField[]> {
625
+ this.handlerAsUtility().deleteCapsule(
596
626
  AztecAddress.fromField(Fr.fromString(contractAddress)),
597
627
  Fr.fromString(slot),
628
+ AztecAddress.fromField(Fr.fromString(scope)),
598
629
  );
599
- return [];
630
+ return Promise.resolve([]);
600
631
  }
601
632
 
602
633
  // eslint-disable-next-line camelcase
@@ -605,18 +636,20 @@ export class Oracle {
605
636
  [srcSlot]: ACVMField[],
606
637
  [dstSlot]: ACVMField[],
607
638
  [numEntries]: ACVMField[],
639
+ [scope]: ACVMField[],
608
640
  ): Promise<ACVMField[]> {
609
641
  await this.handlerAsUtility().copyCapsule(
610
642
  AztecAddress.fromField(Fr.fromString(contractAddress)),
611
643
  Fr.fromString(srcSlot),
612
644
  Fr.fromString(dstSlot),
613
645
  Fr.fromString(numEntries).toNumber(),
646
+ AztecAddress.fromField(Fr.fromString(scope)),
614
647
  );
615
648
  return [];
616
649
  }
617
650
 
618
651
  // eslint-disable-next-line camelcase
619
- async aztec_utl_aes128Decrypt(
652
+ async aztec_utl_decryptAes128(
620
653
  ciphertextBVecStorage: ACVMField[],
621
654
  [ciphertextLength]: ACVMField[],
622
655
  iv: ACVMField[],
@@ -626,8 +659,15 @@ export class Oracle {
626
659
  const ivBuffer = fromUintArray(iv, 8);
627
660
  const symKeyBuffer = fromUintArray(symKey, 8);
628
661
 
629
- const plaintext = await this.handlerAsUtility().aes128Decrypt(ciphertext, ivBuffer, symKeyBuffer);
630
- return bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
662
+ // Noir Option<BoundedVec> is encoded as [is_some: Field, storage: Field[], length: Field].
663
+ try {
664
+ const plaintext = await this.handlerAsUtility().decryptAes128(ciphertext, ivBuffer, symKeyBuffer);
665
+ const [storage, length] = bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
666
+ return [toACVMField(1), storage, length];
667
+ } catch {
668
+ const zeroStorage = Array(ciphertextBVecStorage.length).fill(toACVMField(0));
669
+ return [toACVMField(0), zeroStorage, toACVMField(0)];
670
+ }
631
671
  }
632
672
 
633
673
  // eslint-disable-next-line camelcase
@@ -636,17 +676,33 @@ export class Oracle {
636
676
  [ephPKField0]: ACVMField[],
637
677
  [ephPKField1]: ACVMField[],
638
678
  [ephPKField2]: ACVMField[],
679
+ [contractAddress]: ACVMField[],
639
680
  ): Promise<ACVMField[]> {
640
681
  const secret = await this.handlerAsUtility().getSharedSecret(
641
682
  AztecAddress.fromField(Fr.fromString(address)),
642
683
  Point.fromFields([ephPKField0, ephPKField1, ephPKField2].map(Fr.fromString)),
684
+ AztecAddress.fromField(Fr.fromString(contractAddress)),
685
+ );
686
+ return [toACVMField(secret)];
687
+ }
688
+
689
+ // eslint-disable-next-line camelcase
690
+ aztec_utl_setContractSyncCacheInvalid(
691
+ [contractAddress]: ACVMField[],
692
+ scopes: ACVMField[],
693
+ [scopeCount]: ACVMField[],
694
+ ): Promise<ACVMField[]> {
695
+ const scopeAddresses = scopes.slice(0, +scopeCount).map(s => AztecAddress.fromField(Fr.fromString(s)));
696
+ this.handlerAsUtility().setContractSyncCacheInvalid(
697
+ AztecAddress.fromField(Fr.fromString(contractAddress)),
698
+ scopeAddresses,
643
699
  );
644
- return secret.toFields().map(toACVMField);
700
+ return Promise.resolve([]);
645
701
  }
646
702
 
647
703
  // eslint-disable-next-line camelcase
648
704
  async aztec_utl_emitOffchainEffect(data: ACVMField[]) {
649
- await this.handlerAsPrivate().emitOffchainEffect(data.map(Fr.fromString));
705
+ await this.handlerAsUtility().emitOffchainEffect(data.map(Fr.fromString));
650
706
  return [];
651
707
  }
652
708
 
@@ -76,12 +76,12 @@ export async function executePrivateFunction(
76
76
 
77
77
  const contractClassLogs = privateExecutionOracle.getContractClassLogs();
78
78
 
79
- const rawReturnValues = await privateExecutionOracle.loadFromExecutionCache(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
  {