@aztec/pxe 0.0.1-commit.3469e52 → 0.0.1-commit.35158ae7e

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 (247) hide show
  1. package/dest/access_scopes.d.ts +9 -0
  2. package/dest/access_scopes.d.ts.map +1 -0
  3. package/dest/access_scopes.js +6 -0
  4. package/dest/bin/check_oracle_version.js +1 -1
  5. package/dest/block_synchronizer/block_synchronizer.d.ts +9 -5
  6. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  7. package/dest/block_synchronizer/block_synchronizer.js +62 -16
  8. package/dest/config/index.d.ts +4 -2
  9. package/dest/config/index.d.ts.map +1 -1
  10. package/dest/config/index.js +18 -1
  11. package/dest/config/package_info.js +1 -1
  12. package/dest/contract_function_simulator/contract_function_simulator.d.ts +61 -31
  13. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  14. package/dest/contract_function_simulator/contract_function_simulator.js +201 -78
  15. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
  16. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  17. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
  18. package/dest/contract_function_simulator/index.d.ts +2 -1
  19. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/index.js +1 -0
  21. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -4
  22. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +6 -5
  24. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
  25. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  26. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -3
  27. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +16 -0
  28. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +1 -0
  29. package/dest/contract_function_simulator/noir-structs/message_tx_context.js +57 -0
  30. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -5
  31. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +4 -6
  33. package/dest/contract_function_simulator/oracle/interfaces.d.ts +54 -46
  34. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  35. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  36. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  37. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +42 -0
  38. package/dest/contract_function_simulator/oracle/oracle.d.ts +45 -42
  39. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/oracle/oracle.js +201 -110
  41. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -22
  42. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/oracle/private_execution.js +5 -40
  44. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +60 -77
  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 +110 -86
  47. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +104 -54
  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 +216 -119
  50. package/dest/contract_logging.d.ts +22 -0
  51. package/dest/contract_logging.d.ts.map +1 -0
  52. package/dest/contract_logging.js +23 -0
  53. package/dest/contract_sync/contract_sync_service.d.ts +45 -0
  54. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  55. package/dest/contract_sync/contract_sync_service.js +114 -0
  56. package/dest/contract_sync/helpers.d.ts +29 -0
  57. package/dest/contract_sync/helpers.d.ts.map +1 -0
  58. package/dest/contract_sync/helpers.js +55 -0
  59. package/dest/debug/pxe_debug_utils.d.ts +24 -10
  60. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  61. package/dest/debug/pxe_debug_utils.js +28 -17
  62. package/dest/entrypoints/client/bundle/index.d.ts +4 -1
  63. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  64. package/dest/entrypoints/client/bundle/index.js +3 -0
  65. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  66. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  67. package/dest/entrypoints/client/bundle/utils.js +21 -7
  68. package/dest/entrypoints/client/lazy/index.d.ts +4 -1
  69. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  70. package/dest/entrypoints/client/lazy/index.js +3 -0
  71. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  72. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  73. package/dest/entrypoints/client/lazy/utils.js +22 -8
  74. package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
  75. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  76. package/dest/entrypoints/server/index.d.ts +4 -1
  77. package/dest/entrypoints/server/index.d.ts.map +1 -1
  78. package/dest/entrypoints/server/index.js +3 -0
  79. package/dest/entrypoints/server/utils.d.ts +1 -1
  80. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  81. package/dest/entrypoints/server/utils.js +28 -9
  82. package/dest/events/event_service.d.ts +5 -6
  83. package/dest/events/event_service.d.ts.map +1 -1
  84. package/dest/events/event_service.js +6 -7
  85. package/dest/job_coordinator/job_coordinator.d.ts +3 -2
  86. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
  87. package/dest/job_coordinator/job_coordinator.js +3 -2
  88. package/dest/logs/log_service.d.ts +7 -5
  89. package/dest/logs/log_service.d.ts.map +1 -1
  90. package/dest/logs/log_service.js +28 -32
  91. package/dest/messages/message_context_service.d.ts +17 -0
  92. package/dest/messages/message_context_service.d.ts.map +1 -0
  93. package/dest/messages/message_context_service.js +36 -0
  94. package/dest/notes/note_service.d.ts +9 -8
  95. package/dest/notes/note_service.d.ts.map +1 -1
  96. package/dest/notes/note_service.js +17 -16
  97. package/dest/notes_filter.d.ts +25 -0
  98. package/dest/notes_filter.d.ts.map +1 -0
  99. package/dest/notes_filter.js +4 -0
  100. package/dest/oracle_version.d.ts +3 -3
  101. package/dest/oracle_version.d.ts.map +1 -1
  102. package/dest/oracle_version.js +5 -4
  103. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  104. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  105. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  106. package/dest/private_kernel/hints/index.d.ts +1 -1
  107. package/dest/private_kernel/hints/index.js +1 -1
  108. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  109. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  110. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +129 -68
  111. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  112. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  113. package/dest/private_kernel/hints/test_utils.js +203 -0
  114. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  115. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  116. package/dest/private_kernel/private_kernel_execution_prover.js +21 -13
  117. package/dest/private_kernel/private_kernel_oracle.d.ts +8 -4
  118. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  119. package/dest/private_kernel/private_kernel_oracle.js +7 -3
  120. package/dest/pxe.d.ts +74 -24
  121. package/dest/pxe.d.ts.map +1 -1
  122. package/dest/pxe.js +134 -80
  123. package/dest/storage/address_store/address_store.d.ts +1 -1
  124. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  125. package/dest/storage/address_store/address_store.js +12 -11
  126. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
  127. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  128. package/dest/storage/anchor_block_store/anchor_block_store.js +8 -1
  129. package/dest/storage/capsule_store/capsule_store.js +6 -8
  130. package/dest/storage/contract_store/contract_store.d.ts +42 -16
  131. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  132. package/dest/storage/contract_store/contract_store.js +157 -84
  133. package/dest/storage/metadata.d.ts +1 -1
  134. package/dest/storage/metadata.js +1 -1
  135. package/dest/storage/note_store/note_store.d.ts +47 -49
  136. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  137. package/dest/storage/note_store/note_store.js +278 -252
  138. package/dest/storage/note_store/stored_note.d.ts +16 -0
  139. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  140. package/dest/storage/note_store/stored_note.js +43 -0
  141. package/dest/storage/private_event_store/private_event_store.d.ts +17 -4
  142. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  143. package/dest/storage/private_event_store/private_event_store.js +198 -147
  144. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  145. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  146. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  147. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  148. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  149. package/dest/storage/tagging_store/recipient_tagging_store.js +31 -19
  150. package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
  151. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
  152. package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
  153. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  154. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  155. package/dest/storage/tagging_store/sender_tagging_store.js +233 -137
  156. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  157. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  158. package/dest/tagging/get_all_logs_by_tags.js +60 -0
  159. package/dest/tagging/index.d.ts +4 -3
  160. package/dest/tagging/index.d.ts.map +1 -1
  161. package/dest/tagging/index.js +2 -1
  162. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +5 -5
  163. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  164. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +7 -7
  165. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  166. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +7 -7
  167. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  168. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +16 -12
  169. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -8
  170. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  171. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +13 -7
  172. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  173. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  174. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +23 -16
  175. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -7
  176. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  177. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +42 -27
  178. package/package.json +25 -16
  179. package/src/access_scopes.ts +9 -0
  180. package/src/bin/check_oracle_version.ts +1 -0
  181. package/src/block_synchronizer/block_synchronizer.ts +76 -33
  182. package/src/config/index.ts +15 -1
  183. package/src/config/package_info.ts +1 -1
  184. package/src/contract_function_simulator/contract_function_simulator.ts +361 -142
  185. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
  186. package/src/contract_function_simulator/index.ts +1 -0
  187. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +9 -6
  188. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
  189. package/src/contract_function_simulator/noir-structs/message_tx_context.ts +55 -0
  190. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -7
  191. package/src/contract_function_simulator/oracle/interfaces.ts +67 -58
  192. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +135 -0
  193. package/src/contract_function_simulator/oracle/oracle.ts +217 -149
  194. package/src/contract_function_simulator/oracle/private_execution.ts +5 -64
  195. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +150 -182
  196. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +330 -134
  197. package/src/contract_logging.ts +39 -0
  198. package/src/contract_sync/contract_sync_service.ts +181 -0
  199. package/src/contract_sync/helpers.ts +98 -0
  200. package/src/debug/pxe_debug_utils.ts +63 -18
  201. package/src/entrypoints/client/bundle/index.ts +3 -0
  202. package/src/entrypoints/client/bundle/utils.ts +16 -15
  203. package/src/entrypoints/client/lazy/index.ts +3 -0
  204. package/src/entrypoints/client/lazy/utils.ts +17 -15
  205. package/src/entrypoints/pxe_creation_options.ts +2 -1
  206. package/src/entrypoints/server/index.ts +3 -0
  207. package/src/entrypoints/server/utils.ts +22 -26
  208. package/src/events/event_service.ts +5 -7
  209. package/src/job_coordinator/job_coordinator.ts +4 -3
  210. package/src/logs/log_service.ts +48 -39
  211. package/src/messages/message_context_service.ts +45 -0
  212. package/src/notes/note_service.ts +24 -22
  213. package/src/notes_filter.ts +26 -0
  214. package/src/oracle_version.ts +5 -4
  215. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  216. package/src/private_kernel/hints/index.ts +1 -1
  217. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
  218. package/src/private_kernel/hints/test_utils.ts +325 -0
  219. package/src/private_kernel/private_kernel_execution_prover.ts +25 -15
  220. package/src/private_kernel/private_kernel_oracle.ts +9 -9
  221. package/src/pxe.ts +261 -126
  222. package/src/storage/address_store/address_store.ts +15 -15
  223. package/src/storage/anchor_block_store/anchor_block_store.ts +8 -0
  224. package/src/storage/capsule_store/capsule_store.ts +8 -8
  225. package/src/storage/contract_store/contract_store.ts +186 -96
  226. package/src/storage/metadata.ts +1 -1
  227. package/src/storage/note_store/note_store.ts +321 -318
  228. package/src/storage/note_store/stored_note.ts +48 -0
  229. package/src/storage/private_event_store/private_event_store.ts +250 -190
  230. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  231. package/src/storage/tagging_store/recipient_tagging_store.ts +38 -24
  232. package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
  233. package/src/storage/tagging_store/sender_tagging_store.ts +287 -156
  234. package/src/tagging/get_all_logs_by_tags.ts +92 -0
  235. package/src/tagging/index.ts +3 -2
  236. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +17 -10
  237. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  238. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +17 -16
  239. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +25 -10
  240. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +29 -26
  241. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +39 -29
  242. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  243. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  244. package/dest/tree_membership/tree_membership_service.d.ts +0 -50
  245. package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
  246. package/dest/tree_membership/tree_membership_service.js +0 -75
  247. package/src/tree_membership/tree_membership_service.ts +0 -97
@@ -4,9 +4,9 @@ import { Point } from '@aztec/foundation/curves/grumpkin';
4
4
  import { arrayOfArraysToBoundedVecOfArrays, bufferToBoundedVec, fromUintArray, fromUintBoundedVec, toACVMField } from '@aztec/simulator/client';
5
5
  import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
6
6
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
7
- import { L2BlockHash } from '@aztec/stdlib/block';
7
+ import { BlockHash } from '@aztec/stdlib/block';
8
8
  import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
9
- import { MerkleTreeId } from '@aztec/stdlib/trees';
9
+ import { buildLegacyOracleCallbacks } from './legacy_oracle_mappings.js';
10
10
  import { packAsHintedNote } from './note_packing_utils.js';
11
11
  export class UnavailableOracleError extends Error {
12
12
  constructor(oracleName){
@@ -49,11 +49,11 @@ export class UnavailableOracleError extends Error {
49
49
  ];
50
50
  // Get all the oracle function names
51
51
  const oracleNames = Object.getOwnPropertyNames(Oracle.prototype).filter((name)=>!excludedProps.includes(name));
52
- // Validate oracle names - these must be prefixed with either "private" or "utility" to indicate their scope
52
+ // Validate oracle names - these must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate their scope
53
53
  // and must correspond to a function on the Oracle class.
54
54
  oracleNames.forEach((name)=>{
55
- if (!name.startsWith('private') && !name.startsWith('utility')) {
56
- throw new Error(`Oracle function "${name}" must be prefixed with either "private" or "utility" to indicate its scope`);
55
+ if (!name.startsWith('aztec_prv_') && !name.startsWith('aztec_utl_')) {
56
+ throw new Error(`Oracle function "${name}" must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate its scope`);
57
57
  }
58
58
  const method = this[name];
59
59
  if (typeof method !== 'function') {
@@ -61,42 +61,53 @@ export class UnavailableOracleError extends Error {
61
61
  }
62
62
  });
63
63
  // Build callback object and return it
64
- return oracleNames.reduce((acc, name)=>{
64
+ const callback = oracleNames.reduce((acc, name)=>{
65
65
  const method = this[name];
66
66
  acc[name] = method.bind(this);
67
67
  return acc;
68
68
  }, {});
69
- }
70
- utilityAssertCompatibleOracleVersion([version]) {
71
- this.handlerAsMisc().utilityAssertCompatibleOracleVersion(Fr.fromString(version).toNumber());
69
+ return {
70
+ ...callback,
71
+ ...buildLegacyOracleCallbacks(this)
72
+ };
73
+ }
74
+ // eslint-disable-next-line camelcase
75
+ aztec_utl_assertCompatibleOracleVersion([version]) {
76
+ this.handlerAsMisc().assertCompatibleOracleVersion(Fr.fromString(version).toNumber());
72
77
  return Promise.resolve([]);
73
78
  }
74
- utilityGetRandomField() {
75
- const val = this.handlerAsMisc().utilityGetRandomField();
79
+ // eslint-disable-next-line camelcase
80
+ aztec_utl_getRandomField() {
81
+ const val = this.handlerAsMisc().getRandomField();
76
82
  return Promise.resolve([
77
83
  toACVMField(val)
78
84
  ]);
79
85
  }
80
- privateStoreInExecutionCache(values, [hash]) {
81
- this.handlerAsPrivate().privateStoreInExecutionCache(values.map(Fr.fromString), Fr.fromString(hash));
86
+ // eslint-disable-next-line camelcase
87
+ aztec_prv_storeInExecutionCache(values, [hash]) {
88
+ this.handlerAsPrivate().storeInExecutionCache(values.map(Fr.fromString), Fr.fromString(hash));
82
89
  return Promise.resolve([]);
83
90
  }
84
- async privateLoadFromExecutionCache([returnsHash]) {
85
- const values = await this.handlerAsPrivate().privateLoadFromExecutionCache(Fr.fromString(returnsHash));
91
+ // eslint-disable-next-line camelcase
92
+ async aztec_prv_loadFromExecutionCache([returnsHash]) {
93
+ const values = await this.handlerAsPrivate().loadFromExecutionCache(Fr.fromString(returnsHash));
86
94
  return [
87
95
  values.map(toACVMField)
88
96
  ];
89
97
  }
90
- utilityGetUtilityContext() {
91
- const context = this.handlerAsUtility().utilityGetUtilityContext();
98
+ // eslint-disable-next-line camelcase
99
+ aztec_utl_getUtilityContext() {
100
+ const context = this.handlerAsUtility().getUtilityContext();
92
101
  return Promise.resolve(context.toNoirRepresentation());
93
102
  }
94
- async utilityGetKeyValidationRequest([pkMHash]) {
95
- const keyValidationRequest = await this.handlerAsUtility().utilityGetKeyValidationRequest(Fr.fromString(pkMHash));
103
+ // eslint-disable-next-line camelcase
104
+ async aztec_utl_getKeyValidationRequest([pkMHash]) {
105
+ const keyValidationRequest = await this.handlerAsUtility().getKeyValidationRequest(Fr.fromString(pkMHash));
96
106
  return keyValidationRequest.toFields().map(toACVMField);
97
107
  }
98
- async utilityGetContractInstance([address]) {
99
- const instance = await this.handlerAsUtility().utilityGetContractInstance(AztecAddress.fromField(Fr.fromString(address)));
108
+ // eslint-disable-next-line camelcase
109
+ async aztec_utl_getContractInstance([address]) {
110
+ const instance = await this.handlerAsUtility().getContractInstance(AztecAddress.fromField(Fr.fromString(address)));
100
111
  return [
101
112
  instance.salt,
102
113
  instance.deployer,
@@ -105,57 +116,69 @@ export class UnavailableOracleError extends Error {
105
116
  ...instance.publicKeys.toFields()
106
117
  ].map(toACVMField);
107
118
  }
108
- async utilityGetMembershipWitness([blockHash], [treeId], [leafValue]) {
109
- const parsedBlockHash = L2BlockHash.fromString(blockHash);
110
- const parsedTreeId = Fr.fromString(treeId).toNumber();
111
- const parsedLeafValue = Fr.fromString(leafValue);
112
- const witness = await this.handlerAsUtility().utilityGetMembershipWitness(parsedBlockHash, parsedTreeId, parsedLeafValue);
119
+ // eslint-disable-next-line camelcase
120
+ async aztec_utl_getNoteHashMembershipWitness([anchorBlockHash], [noteHash]) {
121
+ const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
122
+ const parsedNoteHash = Fr.fromString(noteHash);
123
+ const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(parsedAnchorBlockHash, parsedNoteHash);
113
124
  if (!witness) {
114
- throw new Error(`Leaf ${leafValue} not found in the tree ${MerkleTreeId[parsedTreeId]} at block hash ${parsedBlockHash.toString()}.`);
125
+ throw new Error(`Note hash ${noteHash} not found in the note hash tree at anchor block hash ${parsedAnchorBlockHash.toString()}.`);
115
126
  }
116
- return [
117
- toACVMField(witness[0]),
118
- witness.slice(1).map(toACVMField)
119
- ];
127
+ return witness.toNoirRepresentation();
120
128
  }
121
- async utilityGetNullifierMembershipWitness([blockHash], [nullifier]) {
122
- const parsedBlockHash = L2BlockHash.fromString(blockHash);
129
+ // eslint-disable-next-line camelcase
130
+ async aztec_utl_getBlockHashMembershipWitness([anchorBlockHash], [blockHash]) {
131
+ const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
132
+ const parsedBlockHash = BlockHash.fromString(blockHash);
133
+ const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(parsedAnchorBlockHash, parsedBlockHash);
134
+ if (!witness) {
135
+ throw new Error(`Block hash ${parsedBlockHash.toString()} not found in the archive tree at anchor block ${parsedAnchorBlockHash.toString()}.`);
136
+ }
137
+ return witness.toNoirRepresentation();
138
+ }
139
+ // eslint-disable-next-line camelcase
140
+ async aztec_utl_getNullifierMembershipWitness([blockHash], [nullifier]) {
141
+ const parsedBlockHash = BlockHash.fromString(blockHash);
123
142
  const parsedNullifier = Fr.fromString(nullifier);
124
- const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
143
+ const witness = await this.handlerAsUtility().getNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
125
144
  if (!witness) {
126
145
  throw new Error(`Nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`);
127
146
  }
128
147
  return witness.toNoirRepresentation();
129
148
  }
130
- async utilityGetLowNullifierMembershipWitness([blockHash], [nullifier]) {
131
- const parsedBlockHash = L2BlockHash.fromString(blockHash);
149
+ // eslint-disable-next-line camelcase
150
+ async aztec_utl_getLowNullifierMembershipWitness([blockHash], [nullifier]) {
151
+ const parsedBlockHash = BlockHash.fromString(blockHash);
132
152
  const parsedNullifier = Fr.fromString(nullifier);
133
- const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
153
+ const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
134
154
  if (!witness) {
135
155
  throw new Error(`Low nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`);
136
156
  }
137
157
  return witness.toNoirRepresentation();
138
158
  }
139
- async utilityGetPublicDataWitness([blockHash], [leafSlot]) {
140
- const parsedBlockHash = L2BlockHash.fromString(blockHash);
159
+ // eslint-disable-next-line camelcase
160
+ async aztec_utl_getPublicDataWitness([blockHash], [leafSlot]) {
161
+ const parsedBlockHash = BlockHash.fromString(blockHash);
141
162
  const parsedLeafSlot = Fr.fromString(leafSlot);
142
- const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(parsedBlockHash, parsedLeafSlot);
163
+ const witness = await this.handlerAsUtility().getPublicDataWitness(parsedBlockHash, parsedLeafSlot);
143
164
  if (!witness) {
144
165
  throw new Error(`Public data witness not found for slot ${parsedLeafSlot} at block hash ${parsedBlockHash.toString()}.`);
145
166
  }
146
167
  return witness.toNoirRepresentation();
147
168
  }
148
- async utilityGetBlockHeader([blockNumber]) {
169
+ // eslint-disable-next-line camelcase
170
+ async aztec_utl_getBlockHeader([blockNumber]) {
149
171
  const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
150
- const header = await this.handlerAsUtility().utilityGetBlockHeader(BlockNumber(parsedBlockNumber));
172
+ const header = await this.handlerAsUtility().getBlockHeader(BlockNumber(parsedBlockNumber));
151
173
  if (!header) {
152
174
  throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
153
175
  }
154
176
  return header.toFields().map(toACVMField);
155
177
  }
156
- async utilityGetAuthWitness([messageHash]) {
178
+ // eslint-disable-next-line camelcase
179
+ async aztec_utl_getAuthWitness([messageHash]) {
157
180
  const messageHashField = Fr.fromString(messageHash);
158
- const witness = await this.handlerAsUtility().utilityGetAuthWitness(messageHashField);
181
+ const witness = await this.handlerAsUtility().getAuthWitness(messageHashField);
159
182
  if (!witness) {
160
183
  throw new Error(`Unknown auth witness for message hash ${messageHashField}`);
161
184
  }
@@ -163,20 +186,34 @@ export class UnavailableOracleError extends Error {
163
186
  witness.map(toACVMField)
164
187
  ];
165
188
  }
166
- async utilityGetPublicKeysAndPartialAddress([address]) {
189
+ // eslint-disable-next-line camelcase
190
+ async aztec_utl_tryGetPublicKeysAndPartialAddress([address]) {
167
191
  const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
168
- const { publicKeys, partialAddress } = await this.handlerAsUtility().utilityGetPublicKeysAndPartialAddress(parsedAddress);
169
- return [
170
- [
171
- ...publicKeys.toFields(),
172
- partialAddress
173
- ].map(toACVMField)
174
- ];
192
+ const result = await this.handlerAsUtility().tryGetPublicKeysAndPartialAddress(parsedAddress);
193
+ // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
194
+ // with two fields: `some` (a boolean) and `value` (a field array in this case).
195
+ if (result === undefined) {
196
+ // No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
197
+ return [
198
+ toACVMField(0),
199
+ Array(13).fill(toACVMField(0))
200
+ ];
201
+ } else {
202
+ // Data was found so we set `some` to 1 and return it along with `value`.
203
+ return [
204
+ toACVMField(1),
205
+ [
206
+ ...result.publicKeys.toFields(),
207
+ result.partialAddress
208
+ ].map(toACVMField)
209
+ ];
210
+ }
175
211
  }
176
- async utilityGetNotes([ownerSome], [ownerValue], [storageSlot], [numSelects], selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, [limit], [offset], [status], [maxNotes], [packedHintedNoteLength]) {
212
+ // eslint-disable-next-line camelcase
213
+ async aztec_utl_getNotes([ownerSome], [ownerValue], [storageSlot], [numSelects], selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, [limit], [offset], [status], [maxNotes], [packedHintedNoteLength]) {
177
214
  // Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
178
215
  const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
179
- const noteDatas = await this.handlerAsUtility().utilityGetNotes(owner, Fr.fromString(storageSlot), +numSelects, selectByIndexes.map((s)=>+s), selectByOffsets.map((s)=>+s), selectByLengths.map((s)=>+s), selectValues.map(Fr.fromString), selectComparators.map((s)=>+s), sortByIndexes.map((s)=>+s), sortByOffsets.map((s)=>+s), sortByLengths.map((s)=>+s), sortOrder.map((s)=>+s), +limit, +offset, +status);
216
+ const noteDatas = await this.handlerAsUtility().getNotes(owner, Fr.fromString(storageSlot), +numSelects, selectByIndexes.map((s)=>+s), selectByOffsets.map((s)=>+s), selectByLengths.map((s)=>+s), selectValues.map(Fr.fromString), selectComparators.map((s)=>+s), sortByIndexes.map((s)=>+s), sortByOffsets.map((s)=>+s), sortByLengths.map((s)=>+s), sortOrder.map((s)=>+s), +limit, +offset, +status);
180
217
  const returnDataAsArrayOfPackedHintedNotes = noteDatas.map((noteData)=>packAsHintedNote({
181
218
  contractAddress: noteData.contractAddress,
182
219
  owner: noteData.owner,
@@ -191,51 +228,67 @@ export class UnavailableOracleError extends Error {
191
228
  // At last we convert the array of arrays to a bounded vec of arrays
192
229
  return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +packedHintedNoteLength);
193
230
  }
194
- privateNotifyCreatedNote([owner], [storageSlot], [randomness], [noteTypeId], note, [noteHash], [counter]) {
195
- this.handlerAsPrivate().privateNotifyCreatedNote(AztecAddress.fromString(owner), Fr.fromString(storageSlot), Fr.fromString(randomness), NoteSelector.fromField(Fr.fromString(noteTypeId)), note.map(Fr.fromString), Fr.fromString(noteHash), +counter);
231
+ // eslint-disable-next-line camelcase
232
+ aztec_prv_notifyCreatedNote([owner], [storageSlot], [randomness], [noteTypeId], note, [noteHash], [counter]) {
233
+ this.handlerAsPrivate().notifyCreatedNote(AztecAddress.fromString(owner), Fr.fromString(storageSlot), Fr.fromString(randomness), NoteSelector.fromField(Fr.fromString(noteTypeId)), note.map(Fr.fromString), Fr.fromString(noteHash), +counter);
196
234
  return Promise.resolve([]);
197
235
  }
198
- async privateNotifyNullifiedNote([innerNullifier], [noteHash], [counter]) {
199
- await this.handlerAsPrivate().privateNotifyNullifiedNote(Fr.fromString(innerNullifier), Fr.fromString(noteHash), +counter);
236
+ // eslint-disable-next-line camelcase
237
+ async aztec_prv_notifyNullifiedNote([innerNullifier], [noteHash], [counter]) {
238
+ await this.handlerAsPrivate().notifyNullifiedNote(Fr.fromString(innerNullifier), Fr.fromString(noteHash), +counter);
200
239
  return [];
201
240
  }
202
- async privateNotifyCreatedNullifier([innerNullifier]) {
203
- await this.handlerAsPrivate().privateNotifyCreatedNullifier(Fr.fromString(innerNullifier));
241
+ // eslint-disable-next-line camelcase
242
+ async aztec_prv_notifyCreatedNullifier([innerNullifier]) {
243
+ await this.handlerAsPrivate().notifyCreatedNullifier(Fr.fromString(innerNullifier));
204
244
  return [];
205
245
  }
206
- async utilityCheckNullifierExists([innerNullifier]) {
207
- const exists = await this.handlerAsUtility().utilityCheckNullifierExists(Fr.fromString(innerNullifier));
246
+ // eslint-disable-next-line camelcase
247
+ async aztec_prv_isNullifierPending([innerNullifier], [contractAddress]) {
248
+ const isPending = await this.handlerAsPrivate().isNullifierPending(Fr.fromString(innerNullifier), AztecAddress.fromString(contractAddress));
249
+ return [
250
+ toACVMField(isPending)
251
+ ];
252
+ }
253
+ // eslint-disable-next-line camelcase
254
+ async aztec_utl_checkNullifierExists([innerNullifier]) {
255
+ const exists = await this.handlerAsUtility().checkNullifierExists(Fr.fromString(innerNullifier));
208
256
  return [
209
257
  toACVMField(exists)
210
258
  ];
211
259
  }
212
- async utilityGetL1ToL2MembershipWitness([contractAddress], [messageHash], [secret]) {
213
- const message = await this.handlerAsUtility().utilityGetL1ToL2MembershipWitness(AztecAddress.fromString(contractAddress), Fr.fromString(messageHash), Fr.fromString(secret));
260
+ // eslint-disable-next-line camelcase
261
+ async aztec_utl_getL1ToL2MembershipWitness([contractAddress], [messageHash], [secret]) {
262
+ const message = await this.handlerAsUtility().getL1ToL2MembershipWitness(AztecAddress.fromString(contractAddress), Fr.fromString(messageHash), Fr.fromString(secret));
214
263
  return message.toNoirRepresentation();
215
264
  }
216
- async utilityStorageRead([blockHash], [contractAddress], [startStorageSlot], [numberOfElements]) {
217
- const values = await this.handlerAsUtility().utilityStorageRead(L2BlockHash.fromString(blockHash), new AztecAddress(Fr.fromString(contractAddress)), Fr.fromString(startStorageSlot), +numberOfElements);
265
+ // eslint-disable-next-line camelcase
266
+ async aztec_utl_storageRead([blockHash], [contractAddress], [startStorageSlot], [numberOfElements]) {
267
+ const values = await this.handlerAsUtility().storageRead(BlockHash.fromString(blockHash), new AztecAddress(Fr.fromString(contractAddress)), Fr.fromString(startStorageSlot), +numberOfElements);
218
268
  return [
219
269
  values.map(toACVMField)
220
270
  ];
221
271
  }
222
- privateNotifyCreatedContractClassLog([contractAddress], message, [length], [counter]) {
272
+ // eslint-disable-next-line camelcase
273
+ aztec_prv_notifyCreatedContractClassLog([contractAddress], message, [length], [counter]) {
223
274
  const logFields = new ContractClassLogFields(message.map(Fr.fromString));
224
275
  const log = new ContractClassLog(new AztecAddress(Fr.fromString(contractAddress)), logFields, +length);
225
- this.handlerAsPrivate().privateNotifyCreatedContractClassLog(log, +counter);
276
+ this.handlerAsPrivate().notifyCreatedContractClassLog(log, +counter);
226
277
  return Promise.resolve([]);
227
278
  }
228
- utilityDebugLog(level, message, _ignoredFieldsSize, fields) {
279
+ // eslint-disable-next-line camelcase
280
+ async aztec_utl_log(level, message, _ignoredFieldsSize, fields) {
229
281
  const levelFr = Fr.fromString(level[0]);
230
282
  const messageStr = message.map((acvmField)=>String.fromCharCode(Fr.fromString(acvmField).toNumber())).join('');
231
283
  const fieldsFr = fields.map(Fr.fromString);
232
- this.handlerAsMisc().utilityDebugLog(levelFr.toNumber(), messageStr, fieldsFr);
233
- return Promise.resolve([]);
284
+ await this.handlerAsMisc().log(levelFr.toNumber(), messageStr, fieldsFr);
285
+ return [];
234
286
  }
235
287
  // This function's name is directly hardcoded in `circuit_recorder.ts`. Don't forget to update it there if you
236
288
  // change the name here.
237
- async privateCallPrivateFunction([contractAddress], [functionSelector], [argsHash], [sideEffectCounter], [isStaticCall]) {
238
- const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().privateCallPrivateFunction(AztecAddress.fromField(Fr.fromString(contractAddress)), FunctionSelector.fromField(Fr.fromString(functionSelector)), Fr.fromString(argsHash), Fr.fromString(sideEffectCounter).toNumber(), Fr.fromString(isStaticCall).toBool());
289
+ // eslint-disable-next-line camelcase
290
+ async aztec_prv_callPrivateFunction([contractAddress], [functionSelector], [argsHash], [sideEffectCounter], [isStaticCall]) {
291
+ const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().callPrivateFunction(AztecAddress.fromField(Fr.fromString(contractAddress)), FunctionSelector.fromField(Fr.fromString(functionSelector)), Fr.fromString(argsHash), Fr.fromString(sideEffectCounter).toNumber(), Fr.fromString(isStaticCall).toBool());
239
292
  return [
240
293
  [
241
294
  endSideEffectCounter,
@@ -243,48 +296,58 @@ export class UnavailableOracleError extends Error {
243
296
  ].map(toACVMField)
244
297
  ];
245
298
  }
246
- async privateNotifyEnqueuedPublicFunctionCall([contractAddress], [calldataHash], [sideEffectCounter], [isStaticCall]) {
247
- await this.handlerAsPrivate().privateNotifyEnqueuedPublicFunctionCall(AztecAddress.fromString(contractAddress), Fr.fromString(calldataHash), Fr.fromString(sideEffectCounter).toNumber(), Fr.fromString(isStaticCall).toBool());
299
+ // eslint-disable-next-line camelcase
300
+ async aztec_prv_validatePublicCalldata([calldataHash]) {
301
+ await this.handlerAsPrivate().validatePublicCalldata(Fr.fromString(calldataHash));
248
302
  return [];
249
303
  }
250
- async privateNotifySetPublicTeardownFunctionCall([contractAddress], [calldataHash], [sideEffectCounter], [isStaticCall]) {
251
- await this.handlerAsPrivate().privateNotifySetPublicTeardownFunctionCall(AztecAddress.fromString(contractAddress), Fr.fromString(calldataHash), Fr.fromString(sideEffectCounter).toNumber(), Fr.fromString(isStaticCall).toBool());
252
- return [];
253
- }
254
- async privateNotifySetMinRevertibleSideEffectCounter([minRevertibleSideEffectCounter]) {
255
- await this.handlerAsPrivate().privateNotifySetMinRevertibleSideEffectCounter(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
304
+ // eslint-disable-next-line camelcase
305
+ async aztec_prv_notifyRevertiblePhaseStart([minRevertibleSideEffectCounter]) {
306
+ await this.handlerAsPrivate().notifyRevertiblePhaseStart(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
256
307
  return Promise.resolve([]);
257
308
  }
258
- async privateIsSideEffectCounterRevertible([sideEffectCounter]) {
259
- const isRevertible = await this.handlerAsPrivate().privateIsSideEffectCounterRevertible(Fr.fromString(sideEffectCounter).toNumber());
309
+ // eslint-disable-next-line camelcase
310
+ async aztec_prv_inRevertiblePhase([sideEffectCounter]) {
311
+ const isRevertible = await this.handlerAsPrivate().inRevertiblePhase(Fr.fromString(sideEffectCounter).toNumber());
260
312
  return Promise.resolve([
261
313
  toACVMField(isRevertible)
262
314
  ]);
263
315
  }
264
- async privateGetNextAppTagAsSender([sender], [recipient]) {
265
- const tag = await this.handlerAsPrivate().privateGetNextAppTagAsSender(AztecAddress.fromString(sender), AztecAddress.fromString(recipient));
316
+ // eslint-disable-next-line camelcase
317
+ async aztec_prv_getNextAppTagAsSender([sender], [recipient]) {
318
+ const tag = await this.handlerAsPrivate().getNextAppTagAsSender(AztecAddress.fromString(sender), AztecAddress.fromString(recipient));
266
319
  return [
267
320
  toACVMField(tag.value)
268
321
  ];
269
322
  }
270
- async utilityFetchTaggedLogs([pendingTaggedLogArrayBaseSlot]) {
271
- await this.handlerAsUtility().utilityFetchTaggedLogs(Fr.fromString(pendingTaggedLogArrayBaseSlot));
323
+ // eslint-disable-next-line camelcase
324
+ async aztec_utl_fetchTaggedLogs([pendingTaggedLogArrayBaseSlot]) {
325
+ await this.handlerAsUtility().fetchTaggedLogs(Fr.fromString(pendingTaggedLogArrayBaseSlot));
272
326
  return [];
273
327
  }
274
- async utilityValidateEnqueuedNotesAndEvents([contractAddress], [noteValidationRequestsArrayBaseSlot], [eventValidationRequestsArrayBaseSlot]) {
275
- await this.handlerAsUtility().utilityValidateEnqueuedNotesAndEvents(AztecAddress.fromString(contractAddress), Fr.fromString(noteValidationRequestsArrayBaseSlot), Fr.fromString(eventValidationRequestsArrayBaseSlot));
328
+ // eslint-disable-next-line camelcase
329
+ async aztec_utl_validateAndStoreEnqueuedNotesAndEvents([contractAddress], [noteValidationRequestsArrayBaseSlot], [eventValidationRequestsArrayBaseSlot], [maxNotePackedLen], [maxEventSerializedLen]) {
330
+ await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(AztecAddress.fromString(contractAddress), Fr.fromString(noteValidationRequestsArrayBaseSlot), Fr.fromString(eventValidationRequestsArrayBaseSlot), Fr.fromString(maxNotePackedLen).toNumber(), Fr.fromString(maxEventSerializedLen).toNumber());
276
331
  return [];
277
332
  }
278
- async utilityBulkRetrieveLogs([contractAddress], [logRetrievalRequestsArrayBaseSlot], [logRetrievalResponsesArrayBaseSlot]) {
279
- await this.handlerAsUtility().utilityBulkRetrieveLogs(AztecAddress.fromString(contractAddress), Fr.fromString(logRetrievalRequestsArrayBaseSlot), Fr.fromString(logRetrievalResponsesArrayBaseSlot));
333
+ // eslint-disable-next-line camelcase
334
+ async aztec_utl_bulkRetrieveLogs([contractAddress], [logRetrievalRequestsArrayBaseSlot], [logRetrievalResponsesArrayBaseSlot]) {
335
+ await this.handlerAsUtility().bulkRetrieveLogs(AztecAddress.fromString(contractAddress), Fr.fromString(logRetrievalRequestsArrayBaseSlot), Fr.fromString(logRetrievalResponsesArrayBaseSlot));
280
336
  return [];
281
337
  }
282
- async utilityStoreCapsule([contractAddress], [slot], capsule) {
283
- await this.handlerAsUtility().utilityStoreCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot), capsule.map(Fr.fromString));
338
+ // eslint-disable-next-line camelcase
339
+ async aztec_utl_utilityResolveMessageContexts([contractAddress], [messageContextRequestsArrayBaseSlot], [messageContextResponsesArrayBaseSlot]) {
340
+ await this.handlerAsUtility().utilityResolveMessageContexts(AztecAddress.fromString(contractAddress), Fr.fromString(messageContextRequestsArrayBaseSlot), Fr.fromString(messageContextResponsesArrayBaseSlot));
284
341
  return [];
285
342
  }
286
- async utilityLoadCapsule([contractAddress], [slot], [tSize]) {
287
- const values = await this.handlerAsUtility().utilityLoadCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot));
343
+ // eslint-disable-next-line camelcase
344
+ async aztec_utl_storeCapsule([contractAddress], [slot], capsule) {
345
+ await this.handlerAsUtility().storeCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot), capsule.map(Fr.fromString));
346
+ return [];
347
+ }
348
+ // eslint-disable-next-line camelcase
349
+ async aztec_utl_loadCapsule([contractAddress], [slot], [tSize]) {
350
+ const values = await this.handlerAsUtility().loadCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot));
288
351
  // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
289
352
  // with two fields: `some` (a boolean) and `value` (a field array in this case).
290
353
  if (values === null) {
@@ -301,35 +364,62 @@ export class UnavailableOracleError extends Error {
301
364
  ];
302
365
  }
303
366
  }
304
- async utilityDeleteCapsule([contractAddress], [slot]) {
305
- await this.handlerAsUtility().utilityDeleteCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot));
367
+ // eslint-disable-next-line camelcase
368
+ async aztec_utl_deleteCapsule([contractAddress], [slot]) {
369
+ await this.handlerAsUtility().deleteCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot));
306
370
  return [];
307
371
  }
308
- async utilityCopyCapsule([contractAddress], [srcSlot], [dstSlot], [numEntries]) {
309
- await this.handlerAsUtility().utilityCopyCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(srcSlot), Fr.fromString(dstSlot), Fr.fromString(numEntries).toNumber());
372
+ // eslint-disable-next-line camelcase
373
+ async aztec_utl_copyCapsule([contractAddress], [srcSlot], [dstSlot], [numEntries]) {
374
+ await this.handlerAsUtility().copyCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(srcSlot), Fr.fromString(dstSlot), Fr.fromString(numEntries).toNumber());
310
375
  return [];
311
376
  }
312
- async utilityAes128Decrypt(ciphertextBVecStorage, [ciphertextLength], iv, symKey) {
377
+ // eslint-disable-next-line camelcase
378
+ async aztec_utl_tryAes128Decrypt(ciphertextBVecStorage, [ciphertextLength], iv, symKey) {
313
379
  const ciphertext = fromUintBoundedVec(ciphertextBVecStorage, ciphertextLength, 8);
314
380
  const ivBuffer = fromUintArray(iv, 8);
315
381
  const symKeyBuffer = fromUintArray(symKey, 8);
316
- const plaintext = await this.handlerAsUtility().utilityAes128Decrypt(ciphertext, ivBuffer, symKeyBuffer);
317
- return bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
382
+ // Noir Option<BoundedVec> is encoded as [is_some: Field, storage: Field[], length: Field].
383
+ try {
384
+ const plaintext = await this.handlerAsUtility().aes128Decrypt(ciphertext, ivBuffer, symKeyBuffer);
385
+ const [storage, length] = bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
386
+ return [
387
+ toACVMField(1),
388
+ storage,
389
+ length
390
+ ];
391
+ } catch {
392
+ const zeroStorage = Array(ciphertextBVecStorage.length).fill(toACVMField(0));
393
+ return [
394
+ toACVMField(0),
395
+ zeroStorage,
396
+ toACVMField(0)
397
+ ];
398
+ }
318
399
  }
319
- async utilityGetSharedSecret([address], [ephPKField0], [ephPKField1], [ephPKField2]) {
320
- const secret = await this.handlerAsUtility().utilityGetSharedSecret(AztecAddress.fromField(Fr.fromString(address)), Point.fromFields([
400
+ // eslint-disable-next-line camelcase
401
+ async aztec_utl_getSharedSecret([address], [ephPKField0], [ephPKField1], [ephPKField2]) {
402
+ const secret = await this.handlerAsUtility().getSharedSecret(AztecAddress.fromField(Fr.fromString(address)), Point.fromFields([
321
403
  ephPKField0,
322
404
  ephPKField1,
323
405
  ephPKField2
324
406
  ].map(Fr.fromString)));
325
407
  return secret.toFields().map(toACVMField);
326
408
  }
327
- async utilityEmitOffchainEffect(data) {
328
- await this.handlerAsPrivate().utilityEmitOffchainEffect(data.map(Fr.fromString));
409
+ // eslint-disable-next-line camelcase
410
+ aztec_utl_invalidateContractSyncCache([contractAddress], scopes, [scopeCount]) {
411
+ const scopeAddresses = scopes.slice(0, +scopeCount).map((s)=>AztecAddress.fromField(Fr.fromString(s)));
412
+ this.handlerAsUtility().invalidateContractSyncCache(AztecAddress.fromField(Fr.fromString(contractAddress)), scopeAddresses);
413
+ return Promise.resolve([]);
414
+ }
415
+ // eslint-disable-next-line camelcase
416
+ async aztec_utl_emitOffchainEffect(data) {
417
+ await this.handlerAsUtility().emitOffchainEffect(data.map(Fr.fromString));
329
418
  return [];
330
419
  }
331
- async privateGetSenderForTags() {
332
- const sender = await this.handlerAsPrivate().privateGetSenderForTags();
420
+ // eslint-disable-next-line camelcase
421
+ async aztec_prv_getSenderForTags() {
422
+ const sender = await this.handlerAsPrivate().getSenderForTags();
333
423
  // Return [1, address] for Some(address), [0, 0] for None
334
424
  return sender ? [
335
425
  toACVMField(1n),
@@ -339,8 +429,9 @@ export class UnavailableOracleError extends Error {
339
429
  toACVMField(0n)
340
430
  ];
341
431
  }
342
- async privateSetSenderForTags([senderForTags]) {
343
- await this.handlerAsPrivate().privateSetSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
432
+ // eslint-disable-next-line camelcase
433
+ async aztec_prv_setSenderForTags([senderForTags]) {
434
+ await this.handlerAsPrivate().setSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
344
435
  return [];
345
436
  }
346
437
  }
@@ -1,12 +1,8 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
2
1
  import { type ACVMWitness, type CircuitSimulator } from '@aztec/simulator/client';
3
2
  import { type FunctionArtifact, type FunctionArtifactWithContractName, type FunctionSelector } from '@aztec/stdlib/abi';
4
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
5
- import type { ContractInstance } from '@aztec/stdlib/contract';
6
- import type { AztecNode } from '@aztec/stdlib/interfaces/client';
7
4
  import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
8
- import { BlockHeader, PrivateCallExecutionResult } from '@aztec/stdlib/tx';
9
- import { ContractStore } from '../../storage/contract_store/index.js';
5
+ import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
10
6
  import type { PrivateExecutionOracle } from './private_execution_oracle.js';
11
7
  /**
12
8
  * Execute a private function and return the execution result.
@@ -24,20 +20,4 @@ export declare function executePrivateFunction(simulator: CircuitSimulator, priv
24
20
  * @returns - The public inputs.
25
21
  */
26
22
  export declare function extractPrivateCircuitPublicInputs(artifact: FunctionArtifact, partialWitness: ACVMWitness): PrivateCircuitPublicInputs;
27
- /**
28
- * Read the current class id of a contract from the execution data provider or AztecNode. If not found, class id
29
- * from the instance is used.
30
- * @param contractAddress - The address of the contract to read the class id for.
31
- * @param instance - The instance of the contract.
32
- * @param aztecNode - The Aztec node to query for storage.
33
- * @param header - The header of the block at which to load the DelayedPublicMutable storing the class id.
34
- * @returns The current class id.
35
- */
36
- export declare function readCurrentClassId(contractAddress: AztecAddress, instance: ContractInstance, aztecNode: AztecNode, header: BlockHeader): Promise<Fr>;
37
- /**
38
- * Verify that the current class id of a contract obtained from AztecNode is the same as the one in contract data
39
- * provider (i.e. PXE's own storage).
40
- * @param header - The header of the block at which to verify the current class id.
41
- */
42
- export declare function verifyCurrentClassId(contractAddress: AztecAddress, aztecNode: AztecNode, contractStore: ContractStore, header: BlockHeader): Promise<void>;
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leGVjdXRpb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3Ivb3JhY2xlL3ByaXZhdGVfZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUlwRCxPQUFPLEVBQ0wsS0FBSyxXQUFXLEVBQ2hCLEtBQUssZ0JBQWdCLEVBS3RCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssZ0NBQWdDLEVBQ3JDLEtBQUssZ0JBQWdCLEVBRXRCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXRFLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFNUU7Ozs7Ozs7R0FPRztBQUNILHdCQUFzQixzQkFBc0IsQ0FDMUMsU0FBUyxFQUFFLGdCQUFnQixFQUMzQixzQkFBc0IsRUFBRSxzQkFBc0IsRUFDOUMsUUFBUSxFQUFFLGdDQUFnQyxFQUMxQyxlQUFlLEVBQUUsWUFBWSxFQUM3QixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsR0FBRyx5Q0FBOEMsR0FDaEQsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBMkVyQztBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGlDQUFpQyxDQUMvQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQzFCLGNBQWMsRUFBRSxXQUFXLEdBQzFCLDBCQUEwQixDQWE1QjtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQXNCLGtCQUFrQixDQUN0QyxlQUFlLEVBQUUsWUFBWSxFQUM3QixRQUFRLEVBQUUsZ0JBQWdCLEVBQzFCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxXQUFXLGVBY3BCO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFzQixvQkFBb0IsQ0FDeEMsZUFBZSxFQUFFLFlBQVksRUFDN0IsU0FBUyxFQUFFLFNBQVMsRUFDcEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsTUFBTSxFQUFFLFdBQVcsaUJBYXBCIn0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leGVjdXRpb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3Ivb3JhY2xlL3ByaXZhdGVfZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFDaEIsS0FBSyxnQkFBZ0IsRUFLdEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxnQ0FBZ0MsRUFDckMsS0FBSyxnQkFBZ0IsRUFFdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTVFOzs7Ozs7O0dBT0c7QUFDSCx3QkFBc0Isc0JBQXNCLENBQzFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFDM0Isc0JBQXNCLEVBQUUsc0JBQXNCLEVBQzlDLFFBQVEsRUFBRSxnQ0FBZ0MsRUFDMUMsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLEdBQUcseUNBQThDLEdBQ2hELE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQTJFckM7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQixpQ0FBaUMsQ0FDL0MsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixjQUFjLEVBQUUsV0FBVyxHQUMxQiwwQkFBMEIsQ0FhNUIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"private_execution.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAIpD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAKtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,EAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,gBAAgB,EAC3B,sBAAsB,EAAE,sBAAsB,EAC9C,QAAQ,EAAE,gCAAgC,EAC1C,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,yCAA8C,GAChD,OAAO,CAAC,0BAA0B,CAAC,CA2ErC;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,gBAAgB,EAC1B,cAAc,EAAE,WAAW,GAC1B,0BAA0B,CAa5B;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,eAcpB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,YAAY,EAC7B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,WAAW,iBAapB"}
1
+ {"version":3,"file":"private_execution.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAKtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,EAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAG9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,gBAAgB,EAC3B,sBAAsB,EAAE,sBAAsB,EAC9C,QAAQ,EAAE,gCAAgC,EAC1C,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,yCAA8C,GAChD,OAAO,CAAC,0BAA0B,CAAC,CA2ErC;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,gBAAgB,EAC1B,cAAc,EAAE,WAAW,GAC1B,0BAA0B,CAa5B"}
@@ -2,11 +2,8 @@ import { PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, PRIVATE_CONTEXT_INPUTS_LENGTH } f
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { Timer } from '@aztec/foundation/timer';
5
- import { ProtocolContractAddress } from '@aztec/protocol-contracts';
6
5
  import { ExecutionError, extractCallStack, resolveAssertionMessageFromError, witnessMapToFields } from '@aztec/simulator/client';
7
6
  import { countArgumentsSize } from '@aztec/stdlib/abi';
8
- import { L2BlockHash } from '@aztec/stdlib/block';
9
- import { DelayedPublicMutableValues, DelayedPublicMutableValuesWithHash } from '@aztec/stdlib/delayed-public-mutable';
10
7
  import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
11
8
  import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
12
9
  import { Oracle } from './oracle.js';
@@ -48,11 +45,11 @@ import { Oracle } from './oracle.js';
48
45
  appCircuitName: functionName
49
46
  });
50
47
  const contractClassLogs = privateExecutionOracle.getContractClassLogs();
51
- const rawReturnValues = await privateExecutionOracle.privateLoadFromExecutionCache(publicInputs.returnsHash);
48
+ const rawReturnValues = await privateExecutionOracle.loadFromExecutionCache(publicInputs.returnsHash);
52
49
  const newNotes = privateExecutionOracle.getNewNotes();
53
50
  const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
54
51
  const offchainEffects = privateExecutionOracle.getOffchainEffects();
55
- const preTags = privateExecutionOracle.getUsedPreTags();
52
+ const taggingIndexRanges = privateExecutionOracle.getUsedTaggingIndexRanges();
56
53
  const nestedExecutionResults = privateExecutionOracle.getNestedExecutionResults();
57
54
  let timerSubtractionList = nestedExecutionResults;
58
55
  let witgenTime = duration;
@@ -62,7 +59,9 @@ import { Oracle } from './oracle.js';
62
59
  timerSubtractionList = timerSubtractionList.flatMap((nested)=>nested.nestedExecutionResults ?? []);
63
60
  }
64
61
  log.debug(`Returning from call to ${contractAddress.toString()}:${functionSelector}`);
65
- return new PrivateCallExecutionResult(artifact.bytecode, Buffer.from(artifact.verificationKey, 'base64'), partialWitness, publicInputs, newNotes, noteHashNullifierCounterMap, rawReturnValues, offchainEffects, preTags, nestedExecutionResults, contractClassLogs, {
62
+ return new PrivateCallExecutionResult(artifact.bytecode, Buffer.from(artifact.verificationKey, 'base64'), partialWitness, publicInputs, newNotes, noteHashNullifierCounterMap, rawReturnValues, offchainEffects.map((e)=>({
63
+ data: e.data
64
+ })), taggingIndexRanges, nestedExecutionResults, contractClassLogs, {
66
65
  timings: {
67
66
  witgen: witgenTime,
68
67
  oracles: acirExecutionResult.oracles
@@ -88,37 +87,3 @@ import { Oracle } from './oracle.js';
88
87
  }
89
88
  return PrivateCircuitPublicInputs.fromFields(returnData);
90
89
  }
91
- /**
92
- * Read the current class id of a contract from the execution data provider or AztecNode. If not found, class id
93
- * from the instance is used.
94
- * @param contractAddress - The address of the contract to read the class id for.
95
- * @param instance - The instance of the contract.
96
- * @param aztecNode - The Aztec node to query for storage.
97
- * @param header - The header of the block at which to load the DelayedPublicMutable storing the class id.
98
- * @returns The current class id.
99
- */ export async function readCurrentClassId(contractAddress, instance, aztecNode, header) {
100
- const blockHashFr = await header.hash();
101
- const blockHash = L2BlockHash.fromField(blockHashFr);
102
- const timestamp = header.globalVariables.timestamp;
103
- const { delayedPublicMutableSlot } = await DelayedPublicMutableValuesWithHash.getContractUpdateSlots(contractAddress);
104
- const delayedPublicMutableValues = await DelayedPublicMutableValues.readFromTree(delayedPublicMutableSlot, (slot)=>aztecNode.getPublicStorageAt(blockHash, ProtocolContractAddress.ContractInstanceRegistry, slot));
105
- let currentClassId = delayedPublicMutableValues.svc.getCurrentAt(timestamp)[0];
106
- if (currentClassId.isZero()) {
107
- currentClassId = instance.originalContractClassId;
108
- }
109
- return currentClassId;
110
- }
111
- /**
112
- * Verify that the current class id of a contract obtained from AztecNode is the same as the one in contract data
113
- * provider (i.e. PXE's own storage).
114
- * @param header - The header of the block at which to verify the current class id.
115
- */ export async function verifyCurrentClassId(contractAddress, aztecNode, contractStore, header) {
116
- const instance = await contractStore.getContractInstance(contractAddress);
117
- if (!instance) {
118
- throw new Error(`No contract instance found for address ${contractAddress.toString()}`);
119
- }
120
- const currentClassId = await readCurrentClassId(contractAddress, instance, aztecNode, header);
121
- if (!instance.currentContractClassId.equals(currentClassId)) {
122
- throw new Error(`Contract ${contractAddress} is outdated, current class id is ${currentClassId}, local class id is ${instance.currentContractClassId}`);
123
- }
124
- }