@aztec/pxe 0.0.1-commit.e558bd1c → 0.0.1-commit.e5a3663dd

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 (246) hide show
  1. package/dest/bin/check_oracle_version.js +4 -4
  2. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  3. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  4. package/dest/block_synchronizer/block_stream_source.js +37 -0
  5. package/dest/block_synchronizer/block_synchronizer.d.ts +6 -2
  6. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  7. package/dest/block_synchronizer/block_synchronizer.js +30 -10
  8. package/dest/config/index.d.ts +2 -2
  9. package/dest/config/index.d.ts.map +1 -1
  10. package/dest/config/index.js +8 -15
  11. package/dest/config/package_info.js +1 -1
  12. package/dest/contract_function_simulator/contract_function_simulator.d.ts +62 -30
  13. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  14. package/dest/contract_function_simulator/contract_function_simulator.js +206 -76
  15. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  16. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  17. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  18. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
  19. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
  21. package/dest/contract_function_simulator/index.d.ts +2 -1
  22. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/index.js +1 -0
  24. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -6
  25. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  26. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +8 -10
  27. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
  28. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
  29. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  30. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -4
  32. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +4 -7
  33. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  34. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +6 -11
  35. package/dest/contract_function_simulator/oracle/interfaces.d.ts +63 -45
  36. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  38. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  39. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +47 -0
  40. package/dest/contract_function_simulator/oracle/oracle.d.ts +76 -44
  41. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/oracle/oracle.js +289 -97
  43. package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
  44. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +58 -86
  45. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +121 -95
  47. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +124 -64
  48. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  49. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +356 -126
  50. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  51. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  52. package/dest/contract_function_simulator/pick_notes.js +20 -3
  53. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  54. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  55. package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
  56. package/dest/contract_logging.d.ts +27 -0
  57. package/dest/contract_logging.d.ts.map +1 -0
  58. package/dest/contract_logging.js +38 -0
  59. package/dest/contract_sync/contract_sync_service.d.ts +7 -4
  60. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  61. package/dest/contract_sync/contract_sync_service.js +69 -35
  62. package/dest/contract_sync/helpers.d.ts +2 -2
  63. package/dest/contract_sync/helpers.d.ts.map +1 -1
  64. package/dest/contract_sync/helpers.js +9 -4
  65. package/dest/debug/pxe_debug_utils.d.ts +5 -6
  66. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  67. package/dest/debug/pxe_debug_utils.js +4 -7
  68. package/dest/entrypoints/client/bundle/index.d.ts +3 -1
  69. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  70. package/dest/entrypoints/client/bundle/index.js +2 -0
  71. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  72. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  73. package/dest/entrypoints/client/bundle/utils.js +11 -3
  74. package/dest/entrypoints/client/lazy/index.d.ts +3 -1
  75. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  76. package/dest/entrypoints/client/lazy/index.js +2 -0
  77. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  78. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  79. package/dest/entrypoints/client/lazy/utils.js +11 -3
  80. package/dest/entrypoints/pxe_creation_options.d.ts +3 -1
  81. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  82. package/dest/entrypoints/pxe_creation_options.js +3 -1
  83. package/dest/entrypoints/server/index.d.ts +3 -2
  84. package/dest/entrypoints/server/index.d.ts.map +1 -1
  85. package/dest/entrypoints/server/index.js +2 -1
  86. package/dest/entrypoints/server/utils.d.ts +2 -2
  87. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  88. package/dest/entrypoints/server/utils.js +11 -3
  89. package/dest/events/event_service.d.ts +3 -2
  90. package/dest/events/event_service.d.ts.map +1 -1
  91. package/dest/events/event_service.js +26 -5
  92. package/dest/events/private_event_filter_validator.d.ts +3 -2
  93. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  94. package/dest/events/private_event_filter_validator.js +15 -0
  95. package/dest/logs/log_service.d.ts +7 -7
  96. package/dest/logs/log_service.d.ts.map +1 -1
  97. package/dest/logs/log_service.js +33 -48
  98. package/dest/messages/message_context_service.d.ts +17 -0
  99. package/dest/messages/message_context_service.d.ts.map +1 -0
  100. package/dest/messages/message_context_service.js +36 -0
  101. package/dest/notes/note_service.d.ts +4 -4
  102. package/dest/notes/note_service.d.ts.map +1 -1
  103. package/dest/notes/note_service.js +17 -7
  104. package/dest/notes_filter.d.ts +24 -0
  105. package/dest/notes_filter.d.ts.map +1 -0
  106. package/dest/notes_filter.js +4 -0
  107. package/dest/oracle_version.d.ts +4 -3
  108. package/dest/oracle_version.d.ts.map +1 -1
  109. package/dest/oracle_version.js +20 -10
  110. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  111. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  112. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  113. package/dest/private_kernel/hints/index.d.ts +1 -1
  114. package/dest/private_kernel/hints/index.js +1 -1
  115. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  116. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  117. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +129 -68
  118. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  119. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  120. package/dest/private_kernel/hints/test_utils.js +203 -0
  121. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  122. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  123. package/dest/private_kernel/private_kernel_execution_prover.js +18 -13
  124. package/dest/private_kernel/private_kernel_oracle.d.ts +10 -6
  125. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  126. package/dest/private_kernel/private_kernel_oracle.js +19 -18
  127. package/dest/pxe.d.ts +84 -24
  128. package/dest/pxe.d.ts.map +1 -1
  129. package/dest/pxe.js +153 -83
  130. package/dest/storage/anchor_block_store/anchor_block_store.js +1 -1
  131. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  132. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  133. package/dest/storage/capsule_store/capsule_service.js +50 -0
  134. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  135. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  136. package/dest/storage/capsule_store/capsule_store.js +36 -28
  137. package/dest/storage/capsule_store/index.d.ts +2 -1
  138. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  139. package/dest/storage/capsule_store/index.js +1 -0
  140. package/dest/storage/contract_store/contract_store.d.ts +42 -15
  141. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  142. package/dest/storage/contract_store/contract_store.js +148 -70
  143. package/dest/storage/metadata.d.ts +1 -1
  144. package/dest/storage/metadata.js +1 -1
  145. package/dest/storage/note_store/note_store.d.ts +3 -3
  146. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  147. package/dest/storage/note_store/note_store.js +3 -4
  148. package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
  149. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  150. package/dest/storage/private_event_store/private_event_store.js +3 -0
  151. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  152. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  153. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  154. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  155. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  156. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  157. package/dest/tagging/get_all_logs_by_tags.d.ts +1 -1
  158. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  159. package/dest/tagging/get_all_logs_by_tags.js +17 -3
  160. package/dest/tagging/index.d.ts +3 -3
  161. package/dest/tagging/index.d.ts.map +1 -1
  162. package/dest/tagging/index.js +1 -1
  163. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -5
  164. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  165. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +8 -22
  166. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  167. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +6 -7
  168. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  169. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +12 -11
  170. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -8
  171. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  172. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +13 -7
  173. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  174. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  175. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  176. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -7
  177. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  178. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +36 -24
  179. package/package.json +16 -16
  180. package/src/bin/check_oracle_version.ts +4 -4
  181. package/src/block_synchronizer/block_stream_source.ts +52 -0
  182. package/src/block_synchronizer/block_synchronizer.ts +33 -11
  183. package/src/config/index.ts +3 -9
  184. package/src/config/package_info.ts +1 -1
  185. package/src/contract_function_simulator/contract_function_simulator.ts +366 -138
  186. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  187. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
  188. package/src/contract_function_simulator/index.ts +1 -0
  189. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +9 -9
  190. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
  191. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
  192. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -10
  193. package/src/contract_function_simulator/oracle/interfaces.ts +91 -53
  194. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
  195. package/src/contract_function_simulator/oracle/oracle.ts +378 -140
  196. package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
  197. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +151 -183
  198. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +598 -156
  199. package/src/contract_function_simulator/pick_notes.ts +22 -3
  200. package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
  201. package/src/contract_logging.ts +52 -0
  202. package/src/contract_sync/contract_sync_service.ts +102 -55
  203. package/src/contract_sync/helpers.ts +8 -3
  204. package/src/debug/pxe_debug_utils.ts +11 -14
  205. package/src/entrypoints/client/bundle/index.ts +2 -0
  206. package/src/entrypoints/client/bundle/utils.ts +11 -4
  207. package/src/entrypoints/client/lazy/index.ts +2 -0
  208. package/src/entrypoints/client/lazy/utils.ts +11 -4
  209. package/src/entrypoints/pxe_creation_options.ts +7 -0
  210. package/src/entrypoints/server/index.ts +2 -1
  211. package/src/entrypoints/server/utils.ts +9 -10
  212. package/src/events/event_service.ts +30 -5
  213. package/src/events/private_event_filter_validator.ts +21 -1
  214. package/src/logs/log_service.ts +63 -91
  215. package/src/messages/message_context_service.ts +44 -0
  216. package/src/notes/note_service.ts +19 -8
  217. package/src/notes_filter.ts +24 -0
  218. package/src/oracle_version.ts +20 -10
  219. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  220. package/src/private_kernel/hints/index.ts +1 -1
  221. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
  222. package/src/private_kernel/hints/test_utils.ts +325 -0
  223. package/src/private_kernel/private_kernel_execution_prover.ts +18 -16
  224. package/src/private_kernel/private_kernel_oracle.ts +21 -21
  225. package/src/pxe.ts +278 -131
  226. package/src/storage/anchor_block_store/anchor_block_store.ts +1 -1
  227. package/src/storage/capsule_store/capsule_service.ts +90 -0
  228. package/src/storage/capsule_store/capsule_store.ts +44 -26
  229. package/src/storage/capsule_store/index.ts +1 -0
  230. package/src/storage/contract_store/contract_store.ts +181 -80
  231. package/src/storage/metadata.ts +1 -1
  232. package/src/storage/note_store/note_store.ts +5 -5
  233. package/src/storage/private_event_store/private_event_store.ts +4 -0
  234. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  235. package/src/storage/tagging_store/recipient_tagging_store.ts +9 -5
  236. package/src/storage/tagging_store/sender_tagging_store.ts +185 -138
  237. package/src/tagging/get_all_logs_by_tags.ts +28 -4
  238. package/src/tagging/index.ts +2 -2
  239. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +12 -25
  240. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  241. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +10 -15
  242. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +23 -10
  243. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  244. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +27 -26
  245. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  246. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
@@ -15,7 +15,9 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
15
15
  import { BlockHash } from '@aztec/stdlib/block';
16
16
  import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
17
17
 
18
+ import { ORACLE_VERSION_MAJOR, ORACLE_VERSION_MINOR } from '../../oracle_version.js';
18
19
  import type { IMiscOracle, IPrivateExecutionOracle, IUtilityExecutionOracle } from './interfaces.js';
20
+ import { buildLegacyOracleCallbacks } from './legacy_oracle_mappings.js';
19
21
  import { packAsHintedNote } from './note_packing_utils.js';
20
22
 
21
23
  export class UnavailableOracleError extends Error {
@@ -26,6 +28,25 @@ export class UnavailableOracleError extends Error {
26
28
 
27
29
  /**
28
30
  * A data source that has all the apis required by Aztec.nr.
31
+ *
32
+ * ## Oracle naming conventions
33
+ *
34
+ * We try to keep oracle naming consistent, please see below the conventions we adhere to.
35
+ *
36
+ * Each oracle method name has the form `aztec_{scope}_{verb}{Object}`, where:
37
+ *
38
+ * - **Scope prefix** indicates the execution context required:
39
+ * - `aztec_prv_` — available only during private function execution.
40
+ * - `aztec_utl_` — available during both utility and private execution.
41
+ *
42
+ * - **Verb** signals the operation's semantics (verb-first, then object):
43
+ * - `get` — read / lookup / get data from oracle into contract.
44
+ * - `does`/`is`/`has` — predicate (returns boolean).
45
+ * - `emit`/`notify` — propagate data from contract to oracle.
46
+ * - `set` — contract driven oracle state mutation (capsules, execution cache, tagging, etc).
47
+ * - `call` — trigger nested execution (control flow).
48
+ * - `assert` — validate a condition, throw on failure.
49
+ * - Standalone verbs (`delete`, `copy`, `decrypt`, `log`, etc) are used when no generic verb fits.
29
50
  */
30
51
  export class Oracle {
31
52
  constructor(private handler: IMiscOracle | IUtilityExecutionOracle | IPrivateExecutionOracle) {}
@@ -69,12 +90,12 @@ export class Oracle {
69
90
  name => !excludedProps.includes(name as (typeof excludedProps)[number]),
70
91
  );
71
92
 
72
- // Validate oracle names - these must be prefixed with either "private" or "utility" to indicate their scope
93
+ // Validate oracle names - these must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate their scope
73
94
  // and must correspond to a function on the Oracle class.
74
95
  oracleNames.forEach(name => {
75
- if (!name.startsWith('private') && !name.startsWith('utility')) {
96
+ if (!name.startsWith('aztec_prv_') && !name.startsWith('aztec_utl_')) {
76
97
  throw new Error(
77
- `Oracle function "${name}" must be prefixed with either "private" or "utility" to indicate its scope`,
98
+ `Oracle function "${name}" must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate its scope`,
78
99
  );
79
100
  }
80
101
 
@@ -85,48 +106,110 @@ export class Oracle {
85
106
  });
86
107
 
87
108
  // Build callback object and return it
88
- return oracleNames.reduce((acc, name) => {
109
+ const callback = oracleNames.reduce((acc, name) => {
89
110
  const method = this[name as keyof Omit<Oracle, (typeof excludedProps)[number]>];
90
111
  acc[name] = method.bind(this);
91
112
  return acc;
92
113
  }, {} as ACIRCallback);
114
+
115
+ const allCallbacks = { ...callback, ...buildLegacyOracleCallbacks(this) };
116
+
117
+ // Wrap in a Proxy to intercept access to missing oracle names and provide enhanced error messages when the
118
+ // contract's minor version is higher than the PXE's (i.e. the contract expects oracles that were added in a newer
119
+ // minor version).
120
+ const handler = this.handler;
121
+ return new Proxy(allCallbacks, {
122
+ get(target, prop: string) {
123
+ if (prop in target) {
124
+ return target[prop];
125
+ }
126
+ // Return a function that throws with an enhanced error message if applicable
127
+ return () => {
128
+ type NonOracleFunctionGetContractOracleVersion = {
129
+ nonOracleFunctionGetContractOracleVersion(): { major: number; minor: number } | undefined;
130
+ };
131
+
132
+ let contractVersion = undefined;
133
+ if ('nonOracleFunctionGetContractOracleVersion' in handler) {
134
+ contractVersion = (
135
+ handler as unknown as NonOracleFunctionGetContractOracleVersion
136
+ ).nonOracleFunctionGetContractOracleVersion();
137
+ }
138
+ if (!contractVersion) {
139
+ throw new Error(
140
+ `Oracle '${prop}' not found and the contract's oracle version is unknown (the version check oracle ` +
141
+ `was not called before '${prop}'). This usually means the contract was not compiled with the ` +
142
+ `#[aztec] macro, which injects the version check as the first oracle call in every private/utility ` +
143
+ `external function. If you're using a custom entry point, ensure assert_compatible_oracle_version() ` +
144
+ `is called before any other oracle calls. See https://docs.aztec.network/errors/8`,
145
+ );
146
+ } else if (contractVersion.minor > ORACLE_VERSION_MINOR) {
147
+ throw new Error(
148
+ `Oracle '${prop}' not found.` +
149
+ ` This usually means the contract requires a newer private execution environment than you have.` +
150
+ ` Upgrade your private execution environment to a compatible version. The contract was compiled with` +
151
+ ` Aztec.nr oracle version ${contractVersion.major}.${contractVersion.minor}, but this private` +
152
+ ` execution environment only supports up to ${ORACLE_VERSION_MAJOR}.${ORACLE_VERSION_MINOR}.` +
153
+ ` See https://docs.aztec.network/errors/8`,
154
+ );
155
+ } else {
156
+ throw new Error(
157
+ `Oracle '${prop}' not found.` +
158
+ ` The contract's oracle version (${contractVersion.major}.${contractVersion.minor}) is compatible` +
159
+ ` with this private execution environment (${ORACLE_VERSION_MAJOR}.${ORACLE_VERSION_MINOR}), so all` +
160
+ ` standard oracles should be available. This could mean the contract was compiled against a modified` +
161
+ ` version of Aztec.nr, or that it references an oracle that does not exist.` +
162
+ ` See https://docs.aztec.network/errors/8`,
163
+ );
164
+ }
165
+ };
166
+ },
167
+ });
93
168
  }
94
169
 
95
- utilityAssertCompatibleOracleVersion([version]: ACVMField[]) {
96
- this.handlerAsMisc().utilityAssertCompatibleOracleVersion(Fr.fromString(version).toNumber());
170
+ // eslint-disable-next-line camelcase
171
+ aztec_utl_assertCompatibleOracleVersionV2([major]: ACVMField[], [minor]: ACVMField[]) {
172
+ this.handlerAsMisc().assertCompatibleOracleVersion(
173
+ Fr.fromString(major).toNumber(),
174
+ Fr.fromString(minor).toNumber(),
175
+ );
97
176
  return Promise.resolve([]);
98
177
  }
99
178
 
100
- utilityGetRandomField(): Promise<ACVMField[]> {
101
- const val = this.handlerAsMisc().utilityGetRandomField();
179
+ // eslint-disable-next-line camelcase
180
+ aztec_utl_getRandomField(): Promise<ACVMField[]> {
181
+ const val = this.handlerAsMisc().getRandomField();
102
182
  return Promise.resolve([toACVMField(val)]);
103
183
  }
104
184
 
105
- privateStoreInExecutionCache(values: ACVMField[], [hash]: ACVMField[]): Promise<ACVMField[]> {
106
- this.handlerAsPrivate().privateStoreInExecutionCache(values.map(Fr.fromString), Fr.fromString(hash));
185
+ // eslint-disable-next-line camelcase
186
+ aztec_prv_setHashPreimage(values: ACVMField[], [hash]: ACVMField[]): Promise<ACVMField[]> {
187
+ this.handlerAsPrivate().setHashPreimage(values.map(Fr.fromString), Fr.fromString(hash));
107
188
  return Promise.resolve([]);
108
189
  }
109
190
 
110
- async privateLoadFromExecutionCache([returnsHash]: ACVMField[]): Promise<ACVMField[][]> {
111
- const values = await this.handlerAsPrivate().privateLoadFromExecutionCache(Fr.fromString(returnsHash));
191
+ // eslint-disable-next-line camelcase
192
+ async aztec_prv_getHashPreimage([returnsHash]: ACVMField[]): Promise<ACVMField[][]> {
193
+ const values = await this.handlerAsPrivate().getHashPreimage(Fr.fromString(returnsHash));
112
194
  return [values.map(toACVMField)];
113
195
  }
114
196
 
115
- utilityGetUtilityContext(): Promise<(ACVMField | ACVMField[])[]> {
116
- const context = this.handlerAsUtility().utilityGetUtilityContext();
197
+ // eslint-disable-next-line camelcase
198
+ aztec_utl_getUtilityContext(): Promise<(ACVMField | ACVMField[])[]> {
199
+ const context = this.handlerAsUtility().getUtilityContext();
117
200
  return Promise.resolve(context.toNoirRepresentation());
118
201
  }
119
202
 
120
- async utilityGetKeyValidationRequest([pkMHash]: ACVMField[]): Promise<ACVMField[]> {
121
- const keyValidationRequest = await this.handlerAsUtility().utilityGetKeyValidationRequest(Fr.fromString(pkMHash));
203
+ // eslint-disable-next-line camelcase
204
+ async aztec_utl_getKeyValidationRequest([pkMHash]: ACVMField[]): Promise<ACVMField[]> {
205
+ const keyValidationRequest = await this.handlerAsUtility().getKeyValidationRequest(Fr.fromString(pkMHash));
122
206
 
123
207
  return keyValidationRequest.toFields().map(toACVMField);
124
208
  }
125
209
 
126
- async utilityGetContractInstance([address]: ACVMField[]): Promise<ACVMField[]> {
127
- const instance = await this.handlerAsUtility().utilityGetContractInstance(
128
- AztecAddress.fromField(Fr.fromString(address)),
129
- );
210
+ // eslint-disable-next-line camelcase
211
+ async aztec_utl_getContractInstance([address]: ACVMField[]): Promise<ACVMField[]> {
212
+ const instance = await this.handlerAsUtility().getContractInstance(AztecAddress.fromField(Fr.fromString(address)));
130
213
 
131
214
  return [
132
215
  instance.salt,
@@ -137,17 +220,15 @@ export class Oracle {
137
220
  ].map(toACVMField);
138
221
  }
139
222
 
140
- async utilityGetNoteHashMembershipWitness(
223
+ // eslint-disable-next-line camelcase
224
+ async aztec_utl_getNoteHashMembershipWitness(
141
225
  [anchorBlockHash]: ACVMField[],
142
226
  [noteHash]: ACVMField[],
143
227
  ): Promise<(ACVMField | ACVMField[])[]> {
144
228
  const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
145
229
  const parsedNoteHash = Fr.fromString(noteHash);
146
230
 
147
- const witness = await this.handlerAsUtility().utilityGetNoteHashMembershipWitness(
148
- parsedAnchorBlockHash,
149
- parsedNoteHash,
150
- );
231
+ const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(parsedAnchorBlockHash, parsedNoteHash);
151
232
  if (!witness) {
152
233
  throw new Error(
153
234
  `Note hash ${noteHash} not found in the note hash tree at anchor block hash ${parsedAnchorBlockHash.toString()}.`,
@@ -156,17 +237,15 @@ export class Oracle {
156
237
  return witness.toNoirRepresentation();
157
238
  }
158
239
 
159
- async utilityGetBlockHashMembershipWitness(
240
+ // eslint-disable-next-line camelcase
241
+ async aztec_utl_getBlockHashMembershipWitness(
160
242
  [anchorBlockHash]: ACVMField[],
161
243
  [blockHash]: ACVMField[],
162
244
  ): Promise<(ACVMField | ACVMField[])[]> {
163
245
  const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
164
246
  const parsedBlockHash = BlockHash.fromString(blockHash);
165
247
 
166
- const witness = await this.handlerAsUtility().utilityGetBlockHashMembershipWitness(
167
- parsedAnchorBlockHash,
168
- parsedBlockHash,
169
- );
248
+ const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(parsedAnchorBlockHash, parsedBlockHash);
170
249
  if (!witness) {
171
250
  throw new Error(
172
251
  `Block hash ${parsedBlockHash.toString()} not found in the archive tree at anchor block ${parsedAnchorBlockHash.toString()}.`,
@@ -175,17 +254,15 @@ export class Oracle {
175
254
  return witness.toNoirRepresentation();
176
255
  }
177
256
 
178
- async utilityGetNullifierMembershipWitness(
257
+ // eslint-disable-next-line camelcase
258
+ async aztec_utl_getNullifierMembershipWitness(
179
259
  [blockHash]: ACVMField[],
180
260
  [nullifier]: ACVMField[], // nullifier, we try to find the witness for (to prove inclusion)
181
261
  ): Promise<(ACVMField | ACVMField[])[]> {
182
262
  const parsedBlockHash = BlockHash.fromString(blockHash);
183
263
  const parsedNullifier = Fr.fromString(nullifier);
184
264
 
185
- const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(
186
- parsedBlockHash,
187
- parsedNullifier,
188
- );
265
+ const witness = await this.handlerAsUtility().getNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
189
266
  if (!witness) {
190
267
  throw new Error(
191
268
  `Nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
@@ -194,17 +271,15 @@ export class Oracle {
194
271
  return witness.toNoirRepresentation();
195
272
  }
196
273
 
197
- async utilityGetLowNullifierMembershipWitness(
274
+ // eslint-disable-next-line camelcase
275
+ async aztec_utl_getLowNullifierMembershipWitness(
198
276
  [blockHash]: ACVMField[],
199
277
  [nullifier]: ACVMField[], // nullifier, we try to find the low nullifier witness for (to prove non-inclusion)
200
278
  ): Promise<(ACVMField | ACVMField[])[]> {
201
279
  const parsedBlockHash = BlockHash.fromString(blockHash);
202
280
  const parsedNullifier = Fr.fromString(nullifier);
203
281
 
204
- const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(
205
- parsedBlockHash,
206
- parsedNullifier,
207
- );
282
+ const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
208
283
  if (!witness) {
209
284
  throw new Error(
210
285
  `Low nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
@@ -213,14 +288,15 @@ export class Oracle {
213
288
  return witness.toNoirRepresentation();
214
289
  }
215
290
 
216
- async utilityGetPublicDataWitness(
291
+ // eslint-disable-next-line camelcase
292
+ async aztec_utl_getPublicDataWitness(
217
293
  [blockHash]: ACVMField[],
218
294
  [leafSlot]: ACVMField[],
219
295
  ): Promise<(ACVMField | ACVMField[])[]> {
220
296
  const parsedBlockHash = BlockHash.fromString(blockHash);
221
297
  const parsedLeafSlot = Fr.fromString(leafSlot);
222
298
 
223
- const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(parsedBlockHash, parsedLeafSlot);
299
+ const witness = await this.handlerAsUtility().getPublicDataWitness(parsedBlockHash, parsedLeafSlot);
224
300
  if (!witness) {
225
301
  throw new Error(
226
302
  `Public data witness not found for slot ${parsedLeafSlot} at block hash ${parsedBlockHash.toString()}.`,
@@ -229,28 +305,31 @@ export class Oracle {
229
305
  return witness.toNoirRepresentation();
230
306
  }
231
307
 
232
- async utilityGetBlockHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]> {
308
+ // eslint-disable-next-line camelcase
309
+ async aztec_utl_getBlockHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]> {
233
310
  const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
234
311
 
235
- const header = await this.handlerAsUtility().utilityGetBlockHeader(BlockNumber(parsedBlockNumber));
312
+ const header = await this.handlerAsUtility().getBlockHeader(BlockNumber(parsedBlockNumber));
236
313
  if (!header) {
237
314
  throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
238
315
  }
239
316
  return header.toFields().map(toACVMField);
240
317
  }
241
318
 
242
- async utilityGetAuthWitness([messageHash]: ACVMField[]): Promise<ACVMField[][]> {
319
+ // eslint-disable-next-line camelcase
320
+ async aztec_utl_getAuthWitness([messageHash]: ACVMField[]): Promise<ACVMField[][]> {
243
321
  const messageHashField = Fr.fromString(messageHash);
244
- const witness = await this.handlerAsUtility().utilityGetAuthWitness(messageHashField);
322
+ const witness = await this.handlerAsUtility().getAuthWitness(messageHashField);
245
323
  if (!witness) {
246
324
  throw new Error(`Unknown auth witness for message hash ${messageHashField}`);
247
325
  }
248
326
  return [witness.map(toACVMField)];
249
327
  }
250
328
 
251
- async utilityTryGetPublicKeysAndPartialAddress([address]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]> {
329
+ // eslint-disable-next-line camelcase
330
+ async aztec_utl_getPublicKeysAndPartialAddress([address]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]> {
252
331
  const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
253
- const result = await this.handlerAsUtility().utilityTryGetPublicKeysAndPartialAddress(parsedAddress);
332
+ const result = await this.handlerAsUtility().getPublicKeysAndPartialAddress(parsedAddress);
254
333
 
255
334
  // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
256
335
  // with two fields: `some` (a boolean) and `value` (a field array in this case).
@@ -263,7 +342,8 @@ export class Oracle {
263
342
  }
264
343
  }
265
344
 
266
- async utilityGetNotes(
345
+ // eslint-disable-next-line camelcase
346
+ async aztec_utl_getNotes(
267
347
  [ownerSome]: ACVMField[],
268
348
  [ownerValue]: ACVMField[],
269
349
  [storageSlot]: ACVMField[],
@@ -285,7 +365,7 @@ export class Oracle {
285
365
  ): Promise<(ACVMField | ACVMField[])[]> {
286
366
  // Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
287
367
  const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
288
- const noteDatas = await this.handlerAsUtility().utilityGetNotes(
368
+ const noteDatas = await this.handlerAsUtility().getNotes(
289
369
  owner,
290
370
  Fr.fromString(storageSlot),
291
371
  +numSelects,
@@ -324,7 +404,8 @@ export class Oracle {
324
404
  return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +packedHintedNoteLength);
325
405
  }
326
406
 
327
- privateNotifyCreatedNote(
407
+ // eslint-disable-next-line camelcase
408
+ aztec_prv_notifyCreatedNote(
328
409
  [owner]: ACVMField[],
329
410
  [storageSlot]: ACVMField[],
330
411
  [randomness]: ACVMField[],
@@ -333,7 +414,7 @@ export class Oracle {
333
414
  [noteHash]: ACVMField[],
334
415
  [counter]: ACVMField[],
335
416
  ): Promise<ACVMField[]> {
336
- this.handlerAsPrivate().privateNotifyCreatedNote(
417
+ this.handlerAsPrivate().notifyCreatedNote(
337
418
  AztecAddress.fromString(owner),
338
419
  Fr.fromString(storageSlot),
339
420
  Fr.fromString(randomness),
@@ -345,43 +426,47 @@ export class Oracle {
345
426
  return Promise.resolve([]);
346
427
  }
347
428
 
348
- async privateNotifyNullifiedNote(
429
+ // eslint-disable-next-line camelcase
430
+ async aztec_prv_notifyNullifiedNote(
349
431
  [innerNullifier]: ACVMField[],
350
432
  [noteHash]: ACVMField[],
351
433
  [counter]: ACVMField[],
352
434
  ): Promise<ACVMField[]> {
353
- await this.handlerAsPrivate().privateNotifyNullifiedNote(
354
- Fr.fromString(innerNullifier),
355
- Fr.fromString(noteHash),
356
- +counter,
357
- );
435
+ await this.handlerAsPrivate().notifyNullifiedNote(Fr.fromString(innerNullifier), Fr.fromString(noteHash), +counter);
358
436
  return [];
359
437
  }
360
438
 
361
- async privateNotifyCreatedNullifier([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
362
- await this.handlerAsPrivate().privateNotifyCreatedNullifier(Fr.fromString(innerNullifier));
439
+ // eslint-disable-next-line camelcase
440
+ async aztec_prv_notifyCreatedNullifier([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
441
+ await this.handlerAsPrivate().notifyCreatedNullifier(Fr.fromString(innerNullifier));
363
442
  return [];
364
443
  }
365
444
 
366
- async privateIsNullifierPending([innerNullifier]: ACVMField[], [contractAddress]: ACVMField[]): Promise<ACVMField[]> {
367
- const isPending = await this.handlerAsPrivate().privateIsNullifierPending(
445
+ // eslint-disable-next-line camelcase
446
+ async aztec_prv_isNullifierPending(
447
+ [innerNullifier]: ACVMField[],
448
+ [contractAddress]: ACVMField[],
449
+ ): Promise<ACVMField[]> {
450
+ const isPending = await this.handlerAsPrivate().isNullifierPending(
368
451
  Fr.fromString(innerNullifier),
369
452
  AztecAddress.fromString(contractAddress),
370
453
  );
371
454
  return [toACVMField(isPending)];
372
455
  }
373
456
 
374
- async utilityCheckNullifierExists([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
375
- const exists = await this.handlerAsUtility().utilityCheckNullifierExists(Fr.fromString(innerNullifier));
457
+ // eslint-disable-next-line camelcase
458
+ async aztec_utl_doesNullifierExist([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
459
+ const exists = await this.handlerAsUtility().doesNullifierExist(Fr.fromString(innerNullifier));
376
460
  return [toACVMField(exists)];
377
461
  }
378
462
 
379
- async utilityGetL1ToL2MembershipWitness(
463
+ // eslint-disable-next-line camelcase
464
+ async aztec_utl_getL1ToL2MembershipWitness(
380
465
  [contractAddress]: ACVMField[],
381
466
  [messageHash]: ACVMField[],
382
467
  [secret]: ACVMField[],
383
468
  ): Promise<(ACVMField | ACVMField[])[]> {
384
- const message = await this.handlerAsUtility().utilityGetL1ToL2MembershipWitness(
469
+ const message = await this.handlerAsUtility().getL1ToL2MembershipWitness(
385
470
  AztecAddress.fromString(contractAddress),
386
471
  Fr.fromString(messageHash),
387
472
  Fr.fromString(secret),
@@ -389,13 +474,14 @@ export class Oracle {
389
474
  return message.toNoirRepresentation();
390
475
  }
391
476
 
392
- async utilityStorageRead(
477
+ // eslint-disable-next-line camelcase
478
+ async aztec_utl_getFromPublicStorage(
393
479
  [blockHash]: ACVMField[],
394
480
  [contractAddress]: ACVMField[],
395
481
  [startStorageSlot]: ACVMField[],
396
482
  [numberOfElements]: ACVMField[],
397
483
  ): Promise<ACVMField[][]> {
398
- const values = await this.handlerAsUtility().utilityStorageRead(
484
+ const values = await this.handlerAsUtility().getFromPublicStorage(
399
485
  BlockHash.fromString(blockHash),
400
486
  new AztecAddress(Fr.fromString(contractAddress)),
401
487
  Fr.fromString(startStorageSlot),
@@ -404,7 +490,22 @@ export class Oracle {
404
490
  return [values.map(toACVMField)];
405
491
  }
406
492
 
407
- privateNotifyCreatedContractClassLog(
493
+ // eslint-disable-next-line camelcase
494
+ async aztec_utl_callUtilityFunction(
495
+ [contractAddress]: ACVMField[],
496
+ [functionSelector]: ACVMField[],
497
+ args: ACVMField[],
498
+ ): Promise<ACVMField[][]> {
499
+ const result = await this.handlerAsUtility().callUtilityFunction(
500
+ AztecAddress.fromField(Fr.fromString(contractAddress)),
501
+ FunctionSelector.fromField(Fr.fromString(functionSelector)),
502
+ args.map(Fr.fromString),
503
+ );
504
+ return [result.map(toACVMField)];
505
+ }
506
+
507
+ // eslint-disable-next-line camelcase
508
+ aztec_prv_notifyCreatedContractClassLog(
408
509
  [contractAddress]: ACVMField[],
409
510
  message: ACVMField[],
410
511
  [length]: ACVMField[],
@@ -413,11 +514,12 @@ export class Oracle {
413
514
  const logFields = new ContractClassLogFields(message.map(Fr.fromString));
414
515
  const log = new ContractClassLog(new AztecAddress(Fr.fromString(contractAddress)), logFields, +length);
415
516
 
416
- this.handlerAsPrivate().privateNotifyCreatedContractClassLog(log, +counter);
517
+ this.handlerAsPrivate().notifyCreatedContractClassLog(log, +counter);
417
518
  return Promise.resolve([]);
418
519
  }
419
520
 
420
- utilityDebugLog(
521
+ // eslint-disable-next-line camelcase
522
+ async aztec_utl_log(
421
523
  level: ACVMField[],
422
524
  message: ACVMField[],
423
525
  _ignoredFieldsSize: ACVMField[],
@@ -426,20 +528,21 @@ export class Oracle {
426
528
  const levelFr = Fr.fromString(level[0]);
427
529
  const messageStr = message.map(acvmField => String.fromCharCode(Fr.fromString(acvmField).toNumber())).join('');
428
530
  const fieldsFr = fields.map(Fr.fromString);
429
- this.handlerAsMisc().utilityDebugLog(levelFr.toNumber(), messageStr, fieldsFr);
430
- return Promise.resolve([]);
531
+ await this.handlerAsMisc().log(levelFr.toNumber(), messageStr, fieldsFr);
532
+ return [];
431
533
  }
432
534
 
433
535
  // This function's name is directly hardcoded in `circuit_recorder.ts`. Don't forget to update it there if you
434
536
  // change the name here.
435
- async privateCallPrivateFunction(
537
+ // eslint-disable-next-line camelcase
538
+ async aztec_prv_callPrivateFunction(
436
539
  [contractAddress]: ACVMField[],
437
540
  [functionSelector]: ACVMField[],
438
541
  [argsHash]: ACVMField[],
439
542
  [sideEffectCounter]: ACVMField[],
440
543
  [isStaticCall]: ACVMField[],
441
544
  ): Promise<ACVMField[][]> {
442
- const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().privateCallPrivateFunction(
545
+ const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().callPrivateFunction(
443
546
  AztecAddress.fromField(Fr.fromString(contractAddress)),
444
547
  FunctionSelector.fromField(Fr.fromString(functionSelector)),
445
548
  Fr.fromString(argsHash),
@@ -449,113 +552,165 @@ export class Oracle {
449
552
  return [[endSideEffectCounter, returnsHash].map(toACVMField)];
450
553
  }
451
554
 
452
- async privateNotifyEnqueuedPublicFunctionCall(
453
- [contractAddress]: ACVMField[],
454
- [calldataHash]: ACVMField[],
455
- [sideEffectCounter]: ACVMField[],
456
- [isStaticCall]: ACVMField[],
457
- ): Promise<ACVMField[]> {
458
- await this.handlerAsPrivate().privateNotifyEnqueuedPublicFunctionCall(
459
- AztecAddress.fromString(contractAddress),
460
- Fr.fromString(calldataHash),
461
- Fr.fromString(sideEffectCounter).toNumber(),
462
- Fr.fromString(isStaticCall).toBool(),
463
- );
464
- return [];
465
- }
466
-
467
- async privateNotifySetPublicTeardownFunctionCall(
468
- [contractAddress]: ACVMField[],
469
- [calldataHash]: ACVMField[],
470
- [sideEffectCounter]: ACVMField[],
471
- [isStaticCall]: ACVMField[],
472
- ): Promise<ACVMField[]> {
473
- await this.handlerAsPrivate().privateNotifySetPublicTeardownFunctionCall(
474
- AztecAddress.fromString(contractAddress),
475
- Fr.fromString(calldataHash),
476
- Fr.fromString(sideEffectCounter).toNumber(),
477
- Fr.fromString(isStaticCall).toBool(),
478
- );
555
+ // eslint-disable-next-line camelcase
556
+ async aztec_prv_assertValidPublicCalldata([calldataHash]: ACVMField[]): Promise<ACVMField[]> {
557
+ await this.handlerAsPrivate().assertValidPublicCalldata(Fr.fromString(calldataHash));
479
558
  return [];
480
559
  }
481
560
 
482
- async privateNotifySetMinRevertibleSideEffectCounter([minRevertibleSideEffectCounter]: ACVMField[]): Promise<
483
- ACVMField[]
484
- > {
485
- await this.handlerAsPrivate().privateNotifySetMinRevertibleSideEffectCounter(
486
- Fr.fromString(minRevertibleSideEffectCounter).toNumber(),
487
- );
561
+ // eslint-disable-next-line camelcase
562
+ async aztec_prv_notifyRevertiblePhaseStart([minRevertibleSideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
563
+ await this.handlerAsPrivate().notifyRevertiblePhaseStart(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
488
564
  return Promise.resolve([]);
489
565
  }
490
566
 
491
- async privateIsSideEffectCounterRevertible([sideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
492
- const isRevertible = await this.handlerAsPrivate().privateIsSideEffectCounterRevertible(
567
+ // eslint-disable-next-line camelcase
568
+ async aztec_prv_isExecutionInRevertiblePhase([sideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
569
+ const isRevertible = await this.handlerAsPrivate().isExecutionInRevertiblePhase(
493
570
  Fr.fromString(sideEffectCounter).toNumber(),
494
571
  );
495
572
  return Promise.resolve([toACVMField(isRevertible)]);
496
573
  }
497
574
 
498
- async privateGetNextAppTagAsSender([sender]: ACVMField[], [recipient]: ACVMField[]): Promise<ACVMField[]> {
499
- const tag = await this.handlerAsPrivate().privateGetNextAppTagAsSender(
575
+ // eslint-disable-next-line camelcase
576
+ async aztec_prv_getNextAppTagAsSender([sender]: ACVMField[], [recipient]: ACVMField[]): Promise<ACVMField[]> {
577
+ const tag = await this.handlerAsPrivate().getNextAppTagAsSender(
500
578
  AztecAddress.fromString(sender),
501
579
  AztecAddress.fromString(recipient),
502
580
  );
503
581
  return [toACVMField(tag.value)];
504
582
  }
505
583
 
506
- async utilityFetchTaggedLogs([pendingTaggedLogArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]> {
507
- await this.handlerAsUtility().utilityFetchTaggedLogs(Fr.fromString(pendingTaggedLogArrayBaseSlot));
584
+ // eslint-disable-next-line camelcase
585
+ async aztec_utl_getPendingTaggedLogs(
586
+ [pendingTaggedLogArrayBaseSlot]: ACVMField[],
587
+ [scope]: ACVMField[],
588
+ ): Promise<ACVMField[]> {
589
+ await this.handlerAsUtility().getPendingTaggedLogs(
590
+ Fr.fromString(pendingTaggedLogArrayBaseSlot),
591
+ AztecAddress.fromString(scope),
592
+ );
508
593
  return [];
509
594
  }
510
595
 
511
- async utilityValidateAndStoreEnqueuedNotesAndEvents(
596
+ // eslint-disable-next-line camelcase
597
+ async aztec_utl_getPendingTaggedLogs_v2([scope]: ACVMField[]): Promise<ACVMField[]> {
598
+ const slot = await this.handlerAsUtility().getPendingTaggedLogsV2(AztecAddress.fromString(scope));
599
+ return [toACVMField(slot)];
600
+ }
601
+
602
+ // eslint-disable-next-line camelcase
603
+ async aztec_utl_validateAndStoreEnqueuedNotesAndEvents(
512
604
  [contractAddress]: ACVMField[],
513
605
  [noteValidationRequestsArrayBaseSlot]: ACVMField[],
514
606
  [eventValidationRequestsArrayBaseSlot]: ACVMField[],
607
+ [maxNotePackedLen]: ACVMField[],
608
+ [maxEventSerializedLen]: ACVMField[],
609
+ [scope]: ACVMField[],
515
610
  ): Promise<ACVMField[]> {
516
- await this.handlerAsUtility().utilityValidateAndStoreEnqueuedNotesAndEvents(
611
+ await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(
517
612
  AztecAddress.fromString(contractAddress),
518
613
  Fr.fromString(noteValidationRequestsArrayBaseSlot),
519
614
  Fr.fromString(eventValidationRequestsArrayBaseSlot),
615
+ Fr.fromString(maxNotePackedLen).toNumber(),
616
+ Fr.fromString(maxEventSerializedLen).toNumber(),
617
+ AztecAddress.fromString(scope),
520
618
  );
521
619
 
522
620
  return [];
523
621
  }
524
622
 
525
- async utilityBulkRetrieveLogs(
623
+ // eslint-disable-next-line camelcase
624
+ async aztec_utl_validateAndStoreEnqueuedNotesAndEvents_v2(
625
+ [noteValidationRequestsArrayBaseSlot]: ACVMField[],
626
+ [eventValidationRequestsArrayBaseSlot]: ACVMField[],
627
+ [maxNotePackedLen]: ACVMField[],
628
+ [maxEventSerializedLen]: ACVMField[],
629
+ [scope]: ACVMField[],
630
+ ): Promise<ACVMField[]> {
631
+ await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEventsV2(
632
+ Fr.fromString(noteValidationRequestsArrayBaseSlot),
633
+ Fr.fromString(eventValidationRequestsArrayBaseSlot),
634
+ Fr.fromString(maxNotePackedLen).toNumber(),
635
+ Fr.fromString(maxEventSerializedLen).toNumber(),
636
+ AztecAddress.fromString(scope),
637
+ );
638
+ return [];
639
+ }
640
+
641
+ // eslint-disable-next-line camelcase
642
+ async aztec_utl_getLogsByTag(
526
643
  [contractAddress]: ACVMField[],
527
644
  [logRetrievalRequestsArrayBaseSlot]: ACVMField[],
528
645
  [logRetrievalResponsesArrayBaseSlot]: ACVMField[],
646
+ [scope]: ACVMField[],
529
647
  ): Promise<ACVMField[]> {
530
- await this.handlerAsUtility().utilityBulkRetrieveLogs(
648
+ await this.handlerAsUtility().getLogsByTag(
531
649
  AztecAddress.fromString(contractAddress),
532
650
  Fr.fromString(logRetrievalRequestsArrayBaseSlot),
533
651
  Fr.fromString(logRetrievalResponsesArrayBaseSlot),
652
+ AztecAddress.fromString(scope),
534
653
  );
535
654
  return [];
536
655
  }
537
656
 
538
- async utilityStoreCapsule(
657
+ // eslint-disable-next-line camelcase
658
+ async aztec_utl_getMessageContextsByTxHash(
659
+ [contractAddress]: ACVMField[],
660
+ [messageContextRequestsArrayBaseSlot]: ACVMField[],
661
+ [messageContextResponsesArrayBaseSlot]: ACVMField[],
662
+ [scope]: ACVMField[],
663
+ ): Promise<ACVMField[]> {
664
+ await this.handlerAsUtility().getMessageContextsByTxHash(
665
+ AztecAddress.fromString(contractAddress),
666
+ Fr.fromString(messageContextRequestsArrayBaseSlot),
667
+ Fr.fromString(messageContextResponsesArrayBaseSlot),
668
+ AztecAddress.fromString(scope),
669
+ );
670
+ return [];
671
+ }
672
+
673
+ // eslint-disable-next-line camelcase
674
+ async aztec_utl_getLogsByTag_v2([requestArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]> {
675
+ const responseSlot = await this.handlerAsUtility().getLogsByTagV2(Fr.fromString(requestArrayBaseSlot));
676
+ return [toACVMField(responseSlot)];
677
+ }
678
+
679
+ // eslint-disable-next-line camelcase
680
+ async aztec_utl_getMessageContextsByTxHash_v2([requestArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]> {
681
+ const responseSlot = await this.handlerAsUtility().getMessageContextsByTxHashV2(
682
+ Fr.fromString(requestArrayBaseSlot),
683
+ );
684
+ return [toACVMField(responseSlot)];
685
+ }
686
+
687
+ // eslint-disable-next-line camelcase
688
+ aztec_utl_setCapsule(
539
689
  [contractAddress]: ACVMField[],
540
690
  [slot]: ACVMField[],
541
691
  capsule: ACVMField[],
692
+ [scope]: ACVMField[],
542
693
  ): Promise<ACVMField[]> {
543
- await this.handlerAsUtility().utilityStoreCapsule(
694
+ this.handlerAsUtility().setCapsule(
544
695
  AztecAddress.fromField(Fr.fromString(contractAddress)),
545
696
  Fr.fromString(slot),
546
697
  capsule.map(Fr.fromString),
698
+ AztecAddress.fromField(Fr.fromString(scope)),
547
699
  );
548
- return [];
700
+ return Promise.resolve([]);
549
701
  }
550
702
 
551
- async utilityLoadCapsule(
703
+ // eslint-disable-next-line camelcase
704
+ async aztec_utl_getCapsule(
552
705
  [contractAddress]: ACVMField[],
553
706
  [slot]: ACVMField[],
554
707
  [tSize]: ACVMField[],
708
+ [scope]: ACVMField[],
555
709
  ): Promise<(ACVMField | ACVMField[])[]> {
556
- const values = await this.handlerAsUtility().utilityLoadCapsule(
710
+ const values = await this.handlerAsUtility().getCapsule(
557
711
  AztecAddress.fromField(Fr.fromString(contractAddress)),
558
712
  Fr.fromString(slot),
713
+ AztecAddress.fromField(Fr.fromString(scope)),
559
714
  );
560
715
 
561
716
  // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
@@ -569,30 +724,86 @@ export class Oracle {
569
724
  }
570
725
  }
571
726
 
572
- async utilityDeleteCapsule([contractAddress]: ACVMField[], [slot]: ACVMField[]): Promise<ACVMField[]> {
573
- await this.handlerAsUtility().utilityDeleteCapsule(
727
+ // eslint-disable-next-line camelcase
728
+ aztec_utl_deleteCapsule(
729
+ [contractAddress]: ACVMField[],
730
+ [slot]: ACVMField[],
731
+ [scope]: ACVMField[],
732
+ ): Promise<ACVMField[]> {
733
+ this.handlerAsUtility().deleteCapsule(
574
734
  AztecAddress.fromField(Fr.fromString(contractAddress)),
575
735
  Fr.fromString(slot),
736
+ AztecAddress.fromField(Fr.fromString(scope)),
576
737
  );
577
- return [];
738
+ return Promise.resolve([]);
578
739
  }
579
740
 
580
- async utilityCopyCapsule(
741
+ // eslint-disable-next-line camelcase
742
+ async aztec_utl_copyCapsule(
581
743
  [contractAddress]: ACVMField[],
582
744
  [srcSlot]: ACVMField[],
583
745
  [dstSlot]: ACVMField[],
584
746
  [numEntries]: ACVMField[],
747
+ [scope]: ACVMField[],
585
748
  ): Promise<ACVMField[]> {
586
- await this.handlerAsUtility().utilityCopyCapsule(
749
+ await this.handlerAsUtility().copyCapsule(
587
750
  AztecAddress.fromField(Fr.fromString(contractAddress)),
588
751
  Fr.fromString(srcSlot),
589
752
  Fr.fromString(dstSlot),
590
753
  Fr.fromString(numEntries).toNumber(),
754
+ AztecAddress.fromField(Fr.fromString(scope)),
591
755
  );
592
756
  return [];
593
757
  }
594
758
 
595
- async utilityAes128Decrypt(
759
+ // eslint-disable-next-line camelcase
760
+ aztec_utl_pushEphemeral([slot]: ACVMField[], elements: ACVMField[]): Promise<ACVMField[]> {
761
+ const newLen = this.handlerAsUtility().pushEphemeral(Fr.fromString(slot), elements.map(Fr.fromString));
762
+ return Promise.resolve([toACVMField(newLen)]);
763
+ }
764
+
765
+ // eslint-disable-next-line camelcase
766
+ aztec_utl_popEphemeral([slot]: ACVMField[]): Promise<ACVMField[][]> {
767
+ const element = this.handlerAsUtility().popEphemeral(Fr.fromString(slot));
768
+ return Promise.resolve([element.map(toACVMField)]);
769
+ }
770
+
771
+ // eslint-disable-next-line camelcase
772
+ aztec_utl_getEphemeral([slot]: ACVMField[], [index]: ACVMField[]): Promise<ACVMField[][]> {
773
+ const element = this.handlerAsUtility().getEphemeral(Fr.fromString(slot), Fr.fromString(index).toNumber());
774
+ return Promise.resolve([element.map(toACVMField)]);
775
+ }
776
+
777
+ // eslint-disable-next-line camelcase
778
+ aztec_utl_setEphemeral([slot]: ACVMField[], [index]: ACVMField[], elements: ACVMField[]): Promise<ACVMField[]> {
779
+ this.handlerAsUtility().setEphemeral(
780
+ Fr.fromString(slot),
781
+ Fr.fromString(index).toNumber(),
782
+ elements.map(Fr.fromString),
783
+ );
784
+ return Promise.resolve([]);
785
+ }
786
+
787
+ // eslint-disable-next-line camelcase
788
+ aztec_utl_getEphemeralLen([slot]: ACVMField[]): Promise<ACVMField[]> {
789
+ const len = this.handlerAsUtility().getEphemeralLen(Fr.fromString(slot));
790
+ return Promise.resolve([toACVMField(len)]);
791
+ }
792
+
793
+ // eslint-disable-next-line camelcase
794
+ aztec_utl_removeEphemeral([slot]: ACVMField[], [index]: ACVMField[]): Promise<ACVMField[]> {
795
+ this.handlerAsUtility().removeEphemeral(Fr.fromString(slot), Fr.fromString(index).toNumber());
796
+ return Promise.resolve([]);
797
+ }
798
+
799
+ // eslint-disable-next-line camelcase
800
+ aztec_utl_clearEphemeral([slot]: ACVMField[]): Promise<ACVMField[]> {
801
+ this.handlerAsUtility().clearEphemeral(Fr.fromString(slot));
802
+ return Promise.resolve([]);
803
+ }
804
+
805
+ // eslint-disable-next-line camelcase
806
+ async aztec_utl_decryptAes128(
596
807
  ciphertextBVecStorage: ACVMField[],
597
808
  [ciphertextLength]: ACVMField[],
598
809
  iv: ACVMField[],
@@ -602,36 +813,63 @@ export class Oracle {
602
813
  const ivBuffer = fromUintArray(iv, 8);
603
814
  const symKeyBuffer = fromUintArray(symKey, 8);
604
815
 
605
- const plaintext = await this.handlerAsUtility().utilityAes128Decrypt(ciphertext, ivBuffer, symKeyBuffer);
606
- return bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
816
+ // Noir Option<BoundedVec> is encoded as [is_some: Field, storage: Field[], length: Field].
817
+ try {
818
+ const plaintext = await this.handlerAsUtility().decryptAes128(ciphertext, ivBuffer, symKeyBuffer);
819
+ const [storage, length] = bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
820
+ return [toACVMField(1), storage, length];
821
+ } catch {
822
+ const zeroStorage = Array(ciphertextBVecStorage.length).fill(toACVMField(0));
823
+ return [toACVMField(0), zeroStorage, toACVMField(0)];
824
+ }
607
825
  }
608
826
 
609
- async utilityGetSharedSecret(
827
+ // eslint-disable-next-line camelcase
828
+ async aztec_utl_getSharedSecret(
610
829
  [address]: ACVMField[],
611
830
  [ephPKField0]: ACVMField[],
612
831
  [ephPKField1]: ACVMField[],
613
832
  [ephPKField2]: ACVMField[],
833
+ [contractAddress]: ACVMField[],
614
834
  ): Promise<ACVMField[]> {
615
- const secret = await this.handlerAsUtility().utilityGetSharedSecret(
835
+ const secret = await this.handlerAsUtility().getSharedSecret(
616
836
  AztecAddress.fromField(Fr.fromString(address)),
617
837
  Point.fromFields([ephPKField0, ephPKField1, ephPKField2].map(Fr.fromString)),
838
+ AztecAddress.fromField(Fr.fromString(contractAddress)),
618
839
  );
619
- return secret.toFields().map(toACVMField);
840
+ return [toACVMField(secret)];
841
+ }
842
+
843
+ // eslint-disable-next-line camelcase
844
+ aztec_utl_setContractSyncCacheInvalid(
845
+ [contractAddress]: ACVMField[],
846
+ scopes: ACVMField[],
847
+ [scopeCount]: ACVMField[],
848
+ ): Promise<ACVMField[]> {
849
+ const scopeAddresses = scopes.slice(0, +scopeCount).map(s => AztecAddress.fromField(Fr.fromString(s)));
850
+ this.handlerAsUtility().setContractSyncCacheInvalid(
851
+ AztecAddress.fromField(Fr.fromString(contractAddress)),
852
+ scopeAddresses,
853
+ );
854
+ return Promise.resolve([]);
620
855
  }
621
856
 
622
- async utilityEmitOffchainEffect(data: ACVMField[]) {
623
- await this.handlerAsPrivate().utilityEmitOffchainEffect(data.map(Fr.fromString));
857
+ // eslint-disable-next-line camelcase
858
+ async aztec_utl_emitOffchainEffect(data: ACVMField[]) {
859
+ await this.handlerAsUtility().emitOffchainEffect(data.map(Fr.fromString));
624
860
  return [];
625
861
  }
626
862
 
627
- async privateGetSenderForTags(): Promise<ACVMField[]> {
628
- const sender = await this.handlerAsPrivate().privateGetSenderForTags();
863
+ // eslint-disable-next-line camelcase
864
+ async aztec_prv_getSenderForTags(): Promise<ACVMField[]> {
865
+ const sender = await this.handlerAsPrivate().getSenderForTags();
629
866
  // Return [1, address] for Some(address), [0, 0] for None
630
867
  return sender ? [toACVMField(1n), toACVMField(sender)] : [toACVMField(0n), toACVMField(0n)];
631
868
  }
632
869
 
633
- async privateSetSenderForTags([senderForTags]: ACVMField[]): Promise<ACVMField[]> {
634
- await this.handlerAsPrivate().privateSetSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
870
+ // eslint-disable-next-line camelcase
871
+ async aztec_prv_setSenderForTags([senderForTags]: ACVMField[]): Promise<ACVMField[]> {
872
+ await this.handlerAsPrivate().setSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
635
873
  return [];
636
874
  }
637
875
  }