@aztec/pxe 0.0.1-commit.d1f2d6c → 0.0.1-commit.d20b825a7

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 (261) hide show
  1. package/dest/bin/check_oracle_version.js +5 -5
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +10 -4
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  4. package/dest/block_synchronizer/block_synchronizer.js +30 -6
  5. package/dest/config/index.d.ts +2 -2
  6. package/dest/config/index.d.ts.map +1 -1
  7. package/dest/config/index.js +8 -15
  8. package/dest/config/package_info.js +1 -1
  9. package/dest/contract_function_simulator/contract_function_simulator.d.ts +63 -31
  10. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  11. package/dest/contract_function_simulator/contract_function_simulator.js +206 -77
  12. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  13. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  14. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  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 +5 -7
  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 +9 -11
  24. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
  25. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
  26. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  27. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -4
  29. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -8
  30. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +7 -12
  32. package/dest/contract_function_simulator/oracle/interfaces.d.ts +62 -46
  33. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  34. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  35. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  36. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +47 -0
  37. package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -44
  38. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/oracle/oracle.js +310 -113
  40. package/dest/contract_function_simulator/oracle/private_execution.d.ts +3 -22
  41. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/oracle/private_execution.js +5 -49
  43. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +60 -84
  44. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  45. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +125 -98
  46. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +128 -70
  47. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  48. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +330 -143
  49. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  50. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  51. package/dest/contract_function_simulator/pick_notes.js +20 -3
  52. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  53. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  54. package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
  55. package/dest/contract_logging.d.ts +27 -0
  56. package/dest/contract_logging.d.ts.map +1 -0
  57. package/dest/contract_logging.js +38 -0
  58. package/dest/contract_sync/contract_sync_service.d.ts +44 -0
  59. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  60. package/dest/contract_sync/contract_sync_service.js +116 -0
  61. package/dest/contract_sync/helpers.d.ts +28 -0
  62. package/dest/contract_sync/helpers.d.ts.map +1 -0
  63. package/dest/contract_sync/helpers.js +60 -0
  64. package/dest/debug/pxe_debug_utils.d.ts +24 -10
  65. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  66. package/dest/debug/pxe_debug_utils.js +28 -18
  67. package/dest/entrypoints/client/bundle/index.d.ts +3 -1
  68. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  69. package/dest/entrypoints/client/bundle/index.js +2 -0
  70. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  71. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  72. package/dest/entrypoints/client/bundle/utils.js +23 -9
  73. package/dest/entrypoints/client/lazy/index.d.ts +3 -1
  74. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  75. package/dest/entrypoints/client/lazy/index.js +2 -0
  76. package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
  77. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  78. package/dest/entrypoints/client/lazy/utils.js +24 -10
  79. package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
  80. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  81. package/dest/entrypoints/pxe_creation_options.js +3 -1
  82. package/dest/entrypoints/server/index.d.ts +4 -2
  83. package/dest/entrypoints/server/index.d.ts.map +1 -1
  84. package/dest/entrypoints/server/index.js +3 -1
  85. package/dest/entrypoints/server/utils.d.ts +2 -2
  86. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  87. package/dest/entrypoints/server/utils.js +30 -11
  88. package/dest/events/event_service.d.ts +6 -6
  89. package/dest/events/event_service.d.ts.map +1 -1
  90. package/dest/events/event_service.js +31 -11
  91. package/dest/events/private_event_filter_validator.d.ts +3 -2
  92. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  93. package/dest/events/private_event_filter_validator.js +15 -0
  94. package/dest/job_coordinator/job_coordinator.d.ts +3 -2
  95. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
  96. package/dest/job_coordinator/job_coordinator.js +3 -2
  97. package/dest/logs/log_service.d.ts +10 -9
  98. package/dest/logs/log_service.d.ts.map +1 -1
  99. package/dest/logs/log_service.js +41 -62
  100. package/dest/messages/message_context_service.d.ts +17 -0
  101. package/dest/messages/message_context_service.d.ts.map +1 -0
  102. package/dest/messages/message_context_service.js +36 -0
  103. package/dest/notes/note_service.d.ts +7 -8
  104. package/dest/notes/note_service.d.ts.map +1 -1
  105. package/dest/notes/note_service.js +23 -15
  106. package/dest/notes_filter.d.ts +24 -0
  107. package/dest/notes_filter.d.ts.map +1 -0
  108. package/dest/notes_filter.js +4 -0
  109. package/dest/oracle_version.d.ts +4 -3
  110. package/dest/oracle_version.d.ts.map +1 -1
  111. package/dest/oracle_version.js +20 -10
  112. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  113. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  114. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  115. package/dest/private_kernel/hints/index.d.ts +1 -1
  116. package/dest/private_kernel/hints/index.js +1 -1
  117. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  118. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  119. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +129 -68
  120. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  121. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  122. package/dest/private_kernel/hints/test_utils.js +203 -0
  123. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  124. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  125. package/dest/private_kernel/private_kernel_execution_prover.js +20 -15
  126. package/dest/private_kernel/private_kernel_oracle.d.ts +10 -6
  127. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  128. package/dest/private_kernel/private_kernel_oracle.js +19 -18
  129. package/dest/pxe.d.ts +85 -24
  130. package/dest/pxe.d.ts.map +1 -1
  131. package/dest/pxe.js +169 -87
  132. package/dest/storage/address_store/address_store.d.ts +1 -1
  133. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  134. package/dest/storage/address_store/address_store.js +12 -11
  135. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
  136. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  137. package/dest/storage/anchor_block_store/anchor_block_store.js +9 -2
  138. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  139. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  140. package/dest/storage/capsule_store/capsule_service.js +50 -0
  141. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  142. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  143. package/dest/storage/capsule_store/capsule_store.js +42 -36
  144. package/dest/storage/capsule_store/index.d.ts +2 -1
  145. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  146. package/dest/storage/capsule_store/index.js +1 -0
  147. package/dest/storage/contract_store/contract_store.d.ts +42 -16
  148. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  149. package/dest/storage/contract_store/contract_store.js +160 -85
  150. package/dest/storage/metadata.d.ts +1 -1
  151. package/dest/storage/metadata.js +1 -1
  152. package/dest/storage/note_store/note_store.d.ts +14 -4
  153. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  154. package/dest/storage/note_store/note_store.js +149 -109
  155. package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
  156. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  157. package/dest/storage/private_event_store/private_event_store.js +87 -61
  158. package/dest/storage/private_event_store/stored_private_event.d.ts +4 -4
  159. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -1
  160. package/dest/storage/private_event_store/stored_private_event.js +2 -2
  161. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  162. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  163. package/dest/storage/tagging_store/recipient_tagging_store.js +31 -19
  164. package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
  165. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
  166. package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
  167. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  168. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  169. package/dest/storage/tagging_store/sender_tagging_store.js +233 -137
  170. package/dest/tagging/get_all_logs_by_tags.d.ts +4 -4
  171. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  172. package/dest/tagging/get_all_logs_by_tags.js +17 -3
  173. package/dest/tagging/index.d.ts +3 -3
  174. package/dest/tagging/index.d.ts.map +1 -1
  175. package/dest/tagging/index.js +1 -1
  176. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +5 -6
  177. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  178. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +8 -22
  179. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  180. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +7 -8
  181. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  182. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +12 -11
  183. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -9
  184. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  185. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +13 -7
  186. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  187. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  188. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  189. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -8
  190. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  191. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +36 -24
  192. package/package.json +25 -16
  193. package/src/bin/check_oracle_version.ts +5 -4
  194. package/src/block_synchronizer/block_synchronizer.ts +45 -21
  195. package/src/config/index.ts +3 -9
  196. package/src/config/package_info.ts +1 -1
  197. package/src/contract_function_simulator/contract_function_simulator.ts +366 -136
  198. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  199. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
  200. package/src/contract_function_simulator/index.ts +1 -0
  201. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +10 -10
  202. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
  203. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
  204. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +5 -11
  205. package/src/contract_function_simulator/oracle/interfaces.ts +90 -62
  206. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
  207. package/src/contract_function_simulator/oracle/oracle.ts +391 -150
  208. package/src/contract_function_simulator/oracle/private_execution.ts +5 -83
  209. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +160 -193
  210. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +552 -179
  211. package/src/contract_function_simulator/pick_notes.ts +22 -3
  212. package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
  213. package/src/contract_logging.ts +52 -0
  214. package/src/contract_sync/contract_sync_service.ts +176 -0
  215. package/src/contract_sync/helpers.ts +98 -0
  216. package/src/debug/pxe_debug_utils.ts +63 -19
  217. package/src/entrypoints/client/bundle/index.ts +2 -0
  218. package/src/entrypoints/client/bundle/utils.ts +18 -18
  219. package/src/entrypoints/client/lazy/index.ts +2 -0
  220. package/src/entrypoints/client/lazy/utils.ts +19 -18
  221. package/src/entrypoints/pxe_creation_options.ts +9 -1
  222. package/src/entrypoints/server/index.ts +3 -1
  223. package/src/entrypoints/server/utils.ts +24 -29
  224. package/src/events/event_service.ts +35 -12
  225. package/src/events/private_event_filter_validator.ts +21 -1
  226. package/src/job_coordinator/job_coordinator.ts +4 -3
  227. package/src/logs/log_service.ts +77 -106
  228. package/src/messages/message_context_service.ts +44 -0
  229. package/src/notes/note_service.ts +25 -17
  230. package/src/notes_filter.ts +24 -0
  231. package/src/oracle_version.ts +20 -10
  232. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  233. package/src/private_kernel/hints/index.ts +1 -1
  234. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
  235. package/src/private_kernel/hints/test_utils.ts +325 -0
  236. package/src/private_kernel/private_kernel_execution_prover.ts +24 -19
  237. package/src/private_kernel/private_kernel_oracle.ts +21 -21
  238. package/src/pxe.ts +318 -144
  239. package/src/storage/address_store/address_store.ts +15 -15
  240. package/src/storage/anchor_block_store/anchor_block_store.ts +9 -1
  241. package/src/storage/capsule_store/capsule_service.ts +90 -0
  242. package/src/storage/capsule_store/capsule_store.ts +52 -34
  243. package/src/storage/capsule_store/index.ts +1 -0
  244. package/src/storage/contract_store/contract_store.ts +193 -101
  245. package/src/storage/metadata.ts +1 -1
  246. package/src/storage/note_store/note_store.ts +168 -134
  247. package/src/storage/private_event_store/private_event_store.ts +106 -81
  248. package/src/storage/private_event_store/stored_private_event.ts +3 -3
  249. package/src/storage/tagging_store/recipient_tagging_store.ts +38 -24
  250. package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
  251. package/src/storage/tagging_store/sender_tagging_store.ts +287 -156
  252. package/src/tagging/get_all_logs_by_tags.ts +31 -7
  253. package/src/tagging/index.ts +2 -2
  254. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +14 -27
  255. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  256. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +12 -17
  257. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +25 -12
  258. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  259. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +30 -29
  260. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  261. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
@@ -6,11 +6,18 @@ export class AnchorBlockStore {
6
6
  this.#store = store;
7
7
  this.#synchronizedHeader = this.#store.openSingleton('header');
8
8
  }
9
- async setHeader(header) {
9
+ /**
10
+ * Sets the currently synchronized block
11
+ *
12
+ * Important: this method is only called from BlockSynchronizer, and since we need it to run atomically with other
13
+ * stores in the case of a reorg, it MUST NOT be wrapped in a `transactionAsync` call. Doing so would result in a
14
+ * deadlock when the backend is IndexedDB, because `transactionAsync` is not designed to support reentrancy.
15
+ *
16
+ */ async setHeader(header) {
10
17
  await this.#synchronizedHeader.set(header.toBuffer());
11
18
  }
12
19
  async getBlockHeader() {
13
- const headerBuffer = await this.#synchronizedHeader.getAsync();
20
+ const headerBuffer = await this.#store.transactionAsync(()=>this.#synchronizedHeader.getAsync());
14
21
  if (!headerBuffer) {
15
22
  throw new Error(`Trying to get block header with a not-yet-synchronized PXE - this should never happen`);
16
23
  }
@@ -0,0 +1,21 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ import type { Capsule } from '@aztec/stdlib/tx';
4
+ import type { CapsuleStore } from './capsule_store.js';
5
+ /**
6
+ * Wraps a CapsuleStore with scope-based access control. Each operation asserts that the requested scope is in the
7
+ * allowed scopes list before delegating to the underlying store.
8
+ */
9
+ export declare class CapsuleService {
10
+ private readonly capsuleStore;
11
+ private readonly allowedScopes;
12
+ constructor(capsuleStore: CapsuleStore, allowedScopes: AztecAddress[]);
13
+ setCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[], jobId: string, scope: AztecAddress): void;
14
+ getCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string, scope: AztecAddress, transientCapsules?: Capsule[]): Promise<Fr[] | null>;
15
+ deleteCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string, scope: AztecAddress): void;
16
+ copyCapsule(contractAddress: AztecAddress, srcSlot: Fr, dstSlot: Fr, numEntries: number, jobId: string, scope: AztecAddress): Promise<void>;
17
+ appendToCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string, scope: AztecAddress): Promise<void>;
18
+ readCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, jobId: string, scope: AztecAddress): Promise<Fr[][]>;
19
+ setCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string, scope: AztecAddress): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fwc3VsZV9zZXJ2aWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmFnZS9jYXBzdWxlX3N0b3JlL2NhcHN1bGVfc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQ7OztHQUdHO0FBQ0gscUJBQWEsY0FBYztJQUV2QixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVk7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhO0lBRmhDLFlBQ21CLFlBQVksRUFBRSxZQUFZLEVBQzFCLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFDNUM7SUFFSixVQUFVLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLFFBR3BHO0lBRUssVUFBVSxDQUNkLGVBQWUsRUFBRSxZQUFZLEVBQzdCLElBQUksRUFBRSxFQUFFLEVBQ1IsS0FBSyxFQUFFLE1BQU0sRUFDYixLQUFLLEVBQUUsWUFBWSxFQUNuQixpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUM1QixPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBWXRCO0lBRUQsYUFBYSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLFFBR3hGO0lBRUQsV0FBVyxDQUNULGVBQWUsRUFBRSxZQUFZLEVBQzdCLE9BQU8sRUFBRSxFQUFFLEVBQ1gsT0FBTyxFQUFFLEVBQUUsRUFDWCxVQUFVLEVBQUUsTUFBTSxFQUNsQixLQUFLLEVBQUUsTUFBTSxFQUNiLEtBQUssRUFBRSxZQUFZLEdBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHZjtJQUVELG9CQUFvQixDQUNsQixlQUFlLEVBQUUsWUFBWSxFQUM3QixRQUFRLEVBQUUsRUFBRSxFQUNaLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUNmLEtBQUssRUFBRSxNQUFNLEVBQ2IsS0FBSyxFQUFFLFlBQVksR0FDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUdmO0lBRUQsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUdqSDtJQUVELGVBQWUsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxpQkFHL0c7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capsule_service.d.ts","sourceRoot":"","sources":["../../../src/storage/capsule_store/capsule_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;GAGG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAFhC,YACmB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,YAAY,EAAE,EAC5C;IAEJ,UAAU,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,QAGpG;IAEK,UAAU,CACd,eAAe,EAAE,YAAY,EAC7B,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,EACnB,iBAAiB,CAAC,EAAE,OAAO,EAAE,GAC5B,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAYtB;IAED,aAAa,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,QAGxF;IAED,WAAW,CACT,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;IAED,oBAAoB,CAClB,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,EAAE,EACZ,OAAO,EAAE,EAAE,EAAE,EAAE,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;IAED,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAGjH;IAED,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,iBAG/G;CACF"}
@@ -0,0 +1,50 @@
1
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
2
+ /**
3
+ * Wraps a CapsuleStore with scope-based access control. Each operation asserts that the requested scope is in the
4
+ * allowed scopes list before delegating to the underlying store.
5
+ */ export class CapsuleService {
6
+ capsuleStore;
7
+ allowedScopes;
8
+ constructor(capsuleStore, allowedScopes){
9
+ this.capsuleStore = capsuleStore;
10
+ this.allowedScopes = allowedScopes;
11
+ }
12
+ setCapsule(contractAddress, slot, capsule, jobId, scope) {
13
+ assertAllowedScope(scope, this.allowedScopes);
14
+ this.capsuleStore.setCapsule(contractAddress, slot, capsule, jobId, scope);
15
+ }
16
+ async getCapsule(contractAddress, slot, jobId, scope, transientCapsules) {
17
+ assertAllowedScope(scope, this.allowedScopes);
18
+ // TODO(#12425): On the following line, the pertinent capsule gets overshadowed by the transient one. Tackle this.
19
+ const maybeTransientCapsule = transientCapsules?.find((c)=>c.contractAddress.equals(contractAddress) && c.storageSlot.equals(slot) && (c.scope ?? AztecAddress.ZERO).equals(scope))?.data;
20
+ return maybeTransientCapsule ?? await this.capsuleStore.getCapsule(contractAddress, slot, jobId, scope);
21
+ }
22
+ deleteCapsule(contractAddress, slot, jobId, scope) {
23
+ assertAllowedScope(scope, this.allowedScopes);
24
+ this.capsuleStore.deleteCapsule(contractAddress, slot, jobId, scope);
25
+ }
26
+ copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, jobId, scope) {
27
+ assertAllowedScope(scope, this.allowedScopes);
28
+ return this.capsuleStore.copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, jobId, scope);
29
+ }
30
+ appendToCapsuleArray(contractAddress, baseSlot, content, jobId, scope) {
31
+ assertAllowedScope(scope, this.allowedScopes);
32
+ return this.capsuleStore.appendToCapsuleArray(contractAddress, baseSlot, content, jobId, scope);
33
+ }
34
+ readCapsuleArray(contractAddress, baseSlot, jobId, scope) {
35
+ assertAllowedScope(scope, this.allowedScopes);
36
+ return this.capsuleStore.readCapsuleArray(contractAddress, baseSlot, jobId, scope);
37
+ }
38
+ setCapsuleArray(contractAddress, baseSlot, content, jobId, scope) {
39
+ assertAllowedScope(scope, this.allowedScopes);
40
+ return this.capsuleStore.setCapsuleArray(contractAddress, baseSlot, content, jobId, scope);
41
+ }
42
+ }
43
+ function assertAllowedScope(scope, allowedScopes) {
44
+ if (scope.equals(AztecAddress.ZERO)) {
45
+ return;
46
+ }
47
+ if (!allowedScopes.some((allowed)=>allowed.equals(scope))) {
48
+ throw new Error(`Scope ${scope.toString()} is not in the allowed scopes list: [${allowedScopes.map((s)=>s.toString()).join(', ')}]. See https://docs.aztec.network/errors/10`);
49
+ }
50
+ }
@@ -1,7 +1,7 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { type Logger } from '@aztec/foundation/log';
3
3
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
4
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
5
  import type { StagedStore } from '../../job_coordinator/job_coordinator.js';
6
6
  export declare class CapsuleStore implements StagedStore {
7
7
  #private;
@@ -31,20 +31,20 @@ export declare class CapsuleStore implements StagedStore {
31
31
  * to public contract storage in that it's indexed by the contract address and storage slot but instead of the global
32
32
  * network state it's backed by local PXE db.
33
33
  */
34
- storeCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[], jobId: string): void;
34
+ setCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[], jobId: string, scope: AztecAddress): void;
35
35
  /**
36
36
  * Returns data previously stored via `storeCapsule` in the per-contract non-volatile database.
37
37
  * @param contractAddress - The contract address under which the data is scoped.
38
38
  * @param slot - The slot in the database to read.
39
39
  * @returns The stored data or `null` if no data is stored under the slot.
40
40
  */
41
- loadCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string): Promise<Fr[] | null>;
41
+ getCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string, scope: AztecAddress): Promise<Fr[] | null>;
42
42
  /**
43
43
  * Deletes data in the per-contract non-volatile database. Does nothing if no data was present.
44
44
  * @param contractAddress - The contract address under which the data is scoped.
45
45
  * @param slot - The slot in the database to delete.
46
46
  */
47
- deleteCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string): void;
47
+ deleteCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string, scope: AztecAddress): void;
48
48
  /**
49
49
  * Copies a number of contiguous entries in the per-contract non-volatile database. This allows for efficient data
50
50
  * structures by avoiding repeated calls to `loadCapsule` and `storeCapsule`.
@@ -56,7 +56,7 @@ export declare class CapsuleStore implements StagedStore {
56
56
  * @param dstSlot - The first slot to copy to.
57
57
  * @param numEntries - The number of entries to copy.
58
58
  */
59
- copyCapsule(contractAddress: AztecAddress, srcSlot: Fr, dstSlot: Fr, numEntries: number, jobId: string): Promise<void>;
59
+ copyCapsule(contractAddress: AztecAddress, srcSlot: Fr, dstSlot: Fr, numEntries: number, jobId: string, scope: AztecAddress): Promise<void>;
60
60
  /**
61
61
  * Appends multiple capsules to a capsule array stored at the base slot.
62
62
  * The array length is stored at the base slot, and elements are stored in consecutive slots after it.
@@ -65,8 +65,8 @@ export declare class CapsuleStore implements StagedStore {
65
65
  * @param baseSlot - The slot where the array length is stored
66
66
  * @param content - Array of capsule data to append
67
67
  */
68
- appendToCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string): Promise<void>;
69
- readCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, jobId: string): Promise<Fr[][]>;
70
- setCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string): Promise<void>;
68
+ appendToCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string, scope: AztecAddress): Promise<void>;
69
+ readCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, jobId: string, scope: AztecAddress): Promise<Fr[][]>;
70
+ setCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string, scope: AztecAddress): Promise<void>;
71
71
  }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fwc3VsZV9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JhZ2UvY2Fwc3VsZV9zdG9yZS9jYXBzdWxlX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFNUUscUJBQWEsWUFBYSxZQUFXLFdBQVc7O0lBQzlDLFFBQVEsQ0FBQyxTQUFTLGFBQWE7SUFZL0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUVmLFlBQVksS0FBSyxFQUFFLGlCQUFpQixFQVFuQztJQStERDs7Ozs7O09BTUc7SUFDRyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBZXpDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRzFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILFlBQVksQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLFFBS2pGO0lBRUQ7Ozs7O09BS0c7SUFDRyxXQUFXLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQVc5RjtJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLFFBR25FO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILFdBQVcsQ0FDVCxlQUFlLEVBQUUsWUFBWSxFQUM3QixPQUFPLEVBQUUsRUFBRSxFQUNYLE9BQU8sRUFBRSxFQUFFLEVBQ1gsVUFBVSxFQUFFLE1BQU0sRUFDbEIsS0FBSyxFQUFFLE1BQU0sR0FDWixPQUFPLENBQUMsSUFBSSxDQUFDLENBMkJmO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILG9CQUFvQixDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FxQi9HO0lBRUQsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0EyQjVGO0lBRUQsZUFBZSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkEyQjFGO0NBQ0YifQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fwc3VsZV9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JhZ2UvY2Fwc3VsZV9zdG9yZS9jYXBzdWxlX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRTVFLHFCQUFhLFlBQWEsWUFBVyxXQUFXOztJQUM5QyxRQUFRLENBQUMsU0FBUyxhQUFhO0lBYS9CLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFZixZQUFZLEtBQUssRUFBRSxpQkFBaUIsRUFRbkM7SUErREQ7Ozs7OztPQU1HO0lBQ0csTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWV6QztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUcxQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxVQUFVLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLFFBS3BHO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBRTVHO0lBcUJEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksUUFHeEY7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsV0FBVyxDQUNULGVBQWUsRUFBRSxZQUFZLEVBQzdCLE9BQU8sRUFBRSxFQUFFLEVBQ1gsT0FBTyxFQUFFLEVBQUUsRUFDWCxVQUFVLEVBQUUsTUFBTSxFQUNsQixLQUFLLEVBQUUsTUFBTSxFQUNiLEtBQUssRUFBRSxZQUFZLEdBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0EyQmY7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsb0JBQW9CLENBQ2xCLGVBQWUsRUFBRSxZQUFZLEVBQzdCLFFBQVEsRUFBRSxFQUFFLEVBQ1osT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQ2YsS0FBSyxFQUFFLE1BQU0sRUFDYixLQUFLLEVBQUUsWUFBWSxHQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLENBcUJmO0lBRUQsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQTJCakg7SUFFRCxlQUFlLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksaUJBMkIvRztDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"capsule_store.d.ts","sourceRoot":"","sources":["../../../src/storage/capsule_store/capsule_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAE5E,qBAAa,YAAa,YAAW,WAAW;;IAC9C,QAAQ,CAAC,SAAS,aAAa;IAY/B,MAAM,EAAE,MAAM,CAAC;IAEf,YAAY,KAAK,EAAE,iBAAiB,EAQnC;IA+DD;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAezC;IAED;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1C;IAED;;;;;;;;;;OAUG;IACH,YAAY,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,QAKjF;IAED;;;;;OAKG;IACG,WAAW,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAW9F;IAED;;;;OAIG;IACH,aAAa,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,QAGnE;IAED;;;;;;;;;;OAUG;IACH,WAAW,CACT,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CA2Bf;IAED;;;;;;;OAOG;IACH,oBAAoB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB/G;IAED,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CA2B5F;IAED,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,iBA2B1F;CACF"}
1
+ {"version":3,"file":"capsule_store.d.ts","sourceRoot":"","sources":["../../../src/storage/capsule_store/capsule_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAE5E,qBAAa,YAAa,YAAW,WAAW;;IAC9C,QAAQ,CAAC,SAAS,aAAa;IAa/B,MAAM,EAAE,MAAM,CAAC;IAEf,YAAY,KAAK,EAAE,iBAAiB,EAQnC;IA+DD;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAezC;IAED;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1C;IAED;;;;;;;;;;OAUG;IACH,UAAU,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,QAKpG;IAED;;;;;OAKG;IACH,UAAU,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAE5G;IAqBD;;;;OAIG;IACH,aAAa,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,QAGxF;IAED;;;;;;;;;;OAUG;IACH,WAAW,CACT,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CA2Bf;IAED;;;;;;;OAOG;IACH,oBAAoB,CAClB,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,EAAE,EACZ,OAAO,EAAE,EAAE,EAAE,EAAE,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAqBf;IAED,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CA2BjH;IAED,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,iBA2B/G;CACF"}
@@ -3,10 +3,11 @@ import { createLogger } from '@aztec/foundation/log';
3
3
  export class CapsuleStore {
4
4
  storeName = 'capsule';
5
5
  #store;
6
- // Arbitrary data stored by contracts. Key is computed as `${contractAddress}:${key}`
6
+ // Arbitrary data stored by contracts. Key is computed as `${contractAddress}:${scope}:${key}`, using the zero
7
+ // address for the global scope.
7
8
  #capsules;
8
- // jobId => `${contractAddress}:${key}` => capsule data
9
- // when `#stagedCapsules.get('some-job-id').get('${some-contract-address:some-key') === null`,
9
+ // jobId => `${contractAddress}:${scope}:${key}` => capsule data
10
+ // when `#stagedCapsules.get('some-job-id').get('${some-contract-address}:${some-scope}:${some-key}') === null`,
10
11
  // it signals that the capsule was deleted during the job, so it needs to be deleted on commit
11
12
  #stagedCapsules;
12
13
  logger;
@@ -40,14 +41,12 @@ export class CapsuleStore {
40
41
  * If it is not there, it reads it from the KV store.
41
42
  */ async #getFromStage(jobId, dbSlotKey) {
42
43
  const jobStagedCapsules = this.#getJobStagedCapsules(jobId);
43
- let staged = jobStagedCapsules.get(dbSlotKey);
44
- // Note that if staged === null, we marked it for deletion, so we don't want to
45
- // re-read it from DB
46
- if (staged === undefined) {
47
- // If we don't have a staged version of this dbSlotKey, first we check if there's one in DB
48
- staged = await this.#loadCapsuleFromDb(dbSlotKey);
49
- }
50
- return staged;
44
+ const staged = jobStagedCapsules.get(dbSlotKey);
45
+ // Always issue DB read to keep IndexedDB transaction alive, even if the value is in the job staged data. This
46
+ // keeps IndexedDB transactions alive (they auto-commit when a new micro-task starts and there are no pending read
47
+ // requests). The staged value still takes precedence if it exists (including null for deletions).
48
+ const dbValue = await this.#loadCapsuleFromDb(dbSlotKey);
49
+ return staged !== undefined ? staged : dbValue;
51
50
  }
52
51
  /**
53
52
  * Writes a capsule to the stage of a job.
@@ -103,8 +102,8 @@ export class CapsuleStore {
103
102
  * @remarks A capsule is a "blob" of data that is passed to the contract through an oracle. It works similarly
104
103
  * to public contract storage in that it's indexed by the contract address and storage slot but instead of the global
105
104
  * network state it's backed by local PXE db.
106
- */ storeCapsule(contractAddress, slot, capsule, jobId) {
107
- const dbSlotKey = dbSlotToKey(contractAddress, slot);
105
+ */ setCapsule(contractAddress, slot, capsule, jobId, scope) {
106
+ const dbSlotKey = dbSlotToKey(contractAddress, slot, scope);
108
107
  // A store overrides any pre-existing data on the slot
109
108
  this.#setOnStage(jobId, dbSlotKey, Buffer.concat(capsule.map((value)=>value.toBuffer())));
110
109
  }
@@ -113,8 +112,11 @@ export class CapsuleStore {
113
112
  * @param contractAddress - The contract address under which the data is scoped.
114
113
  * @param slot - The slot in the database to read.
115
114
  * @returns The stored data or `null` if no data is stored under the slot.
116
- */ async loadCapsule(contractAddress, slot, jobId) {
117
- const dataBuffer = await this.#getFromStage(jobId, dbSlotToKey(contractAddress, slot));
115
+ */ getCapsule(contractAddress, slot, jobId, scope) {
116
+ return this.#store.transactionAsync(()=>this.#getCapsuleInternal(contractAddress, slot, jobId, scope));
117
+ }
118
+ /** Same as getCapsule but without its own transaction, for use inside an existing transactionAsync. */ async #getCapsuleInternal(contractAddress, slot, jobId, scope) {
119
+ const dataBuffer = await this.#getFromStage(jobId, dbSlotToKey(contractAddress, slot, scope));
118
120
  if (!dataBuffer) {
119
121
  this.logger.trace(`Data not found for contract ${contractAddress.toString()} and slot ${slot.toString()}`);
120
122
  return null;
@@ -129,9 +131,9 @@ export class CapsuleStore {
129
131
  * Deletes data in the per-contract non-volatile database. Does nothing if no data was present.
130
132
  * @param contractAddress - The contract address under which the data is scoped.
131
133
  * @param slot - The slot in the database to delete.
132
- */ deleteCapsule(contractAddress, slot, jobId) {
134
+ */ deleteCapsule(contractAddress, slot, jobId, scope) {
133
135
  // When we commit this, we will interpret null as a deletion, so we'll propagate the delete to the KV store
134
- this.#deleteOnStage(jobId, dbSlotToKey(contractAddress, slot));
136
+ this.#deleteOnStage(jobId, dbSlotToKey(contractAddress, slot, scope));
135
137
  }
136
138
  /**
137
139
  * Copies a number of contiguous entries in the per-contract non-volatile database. This allows for efficient data
@@ -143,7 +145,7 @@ export class CapsuleStore {
143
145
  * @param srcSlot - The first slot to copy from.
144
146
  * @param dstSlot - The first slot to copy to.
145
147
  * @param numEntries - The number of entries to copy.
146
- */ copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, jobId) {
148
+ */ copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, jobId, scope) {
147
149
  // This transactional context gives us "copy atomicity":
148
150
  // there shouldn't be concurrent writes to what's being copied here.
149
151
  // Equally important: this in practice is expected to perform thousands of DB operations
@@ -158,8 +160,8 @@ export class CapsuleStore {
158
160
  indexes.reverse();
159
161
  }
160
162
  for (const i of indexes){
161
- const currentSrcSlot = dbSlotToKey(contractAddress, srcSlot.add(new Fr(i)));
162
- const currentDstSlot = dbSlotToKey(contractAddress, dstSlot.add(new Fr(i)));
163
+ const currentSrcSlot = dbSlotToKey(contractAddress, srcSlot.add(new Fr(i)), scope);
164
+ const currentDstSlot = dbSlotToKey(contractAddress, dstSlot.add(new Fr(i)), scope);
163
165
  const toCopy = await this.#getFromStage(jobId, currentSrcSlot);
164
166
  if (!toCopy) {
165
167
  throw new Error(`Attempted to copy empty slot ${currentSrcSlot} for contract ${contractAddress.toString()}`);
@@ -175,7 +177,7 @@ export class CapsuleStore {
175
177
  * @param contractAddress - The contract address that owns the capsule array
176
178
  * @param baseSlot - The slot where the array length is stored
177
179
  * @param content - Array of capsule data to append
178
- */ appendToCapsuleArray(contractAddress, baseSlot, content, jobId) {
180
+ */ appendToCapsuleArray(contractAddress, baseSlot, content, jobId, scope) {
179
181
  // We wrap this in a transaction to serialize concurrent calls from Promise.all.
180
182
  // Without this, concurrent appends to the same array could race: both read length=0,
181
183
  // both write at the same slots, one overwrites the other.
@@ -183,21 +185,21 @@ export class CapsuleStore {
183
185
  // and not using a transaction here would heavily impact performance.
184
186
  return this.#store.transactionAsync(async ()=>{
185
187
  // Load current length, defaulting to 0 if not found
186
- const lengthData = await this.loadCapsule(contractAddress, baseSlot, jobId);
188
+ const lengthData = await this.#getCapsuleInternal(contractAddress, baseSlot, jobId, scope);
187
189
  const currentLength = lengthData ? lengthData[0].toNumber() : 0;
188
190
  // Store each capsule at consecutive slots after baseSlot + 1 + currentLength
189
191
  for(let i = 0; i < content.length; i++){
190
192
  const nextSlot = arraySlot(baseSlot, currentLength + i);
191
- this.storeCapsule(contractAddress, nextSlot, content[i], jobId);
193
+ this.setCapsule(contractAddress, nextSlot, content[i], jobId, scope);
192
194
  }
193
195
  // Update length to include all new capsules
194
196
  const newLength = currentLength + content.length;
195
- this.storeCapsule(contractAddress, baseSlot, [
197
+ this.setCapsule(contractAddress, baseSlot, [
196
198
  new Fr(newLength)
197
- ], jobId);
199
+ ], jobId, scope);
198
200
  });
199
201
  }
200
- readCapsuleArray(contractAddress, baseSlot, jobId) {
202
+ readCapsuleArray(contractAddress, baseSlot, jobId, scope) {
201
203
  // I'm leaving this transactional context here though because I'm assuming this
202
204
  // gives us "read array atomicity": there shouldn't be concurrent writes to what's being copied
203
205
  // here.
@@ -205,12 +207,12 @@ export class CapsuleStore {
205
207
  // of jobs: different calls running concurrently on the same contract may cause trouble.
206
208
  return this.#store.transactionAsync(async ()=>{
207
209
  // Load length, defaulting to 0 if not found
208
- const maybeLength = await this.loadCapsule(contractAddress, baseSlot, jobId);
210
+ const maybeLength = await this.#getCapsuleInternal(contractAddress, baseSlot, jobId, scope);
209
211
  const length = maybeLength ? maybeLength[0].toBigInt() : 0n;
210
212
  const values = [];
211
213
  // Read each capsule at consecutive slots after baseSlot
212
214
  for(let i = 0; i < length; i++){
213
- const currentValue = await this.loadCapsule(contractAddress, arraySlot(baseSlot, i), jobId);
215
+ const currentValue = await this.#getCapsuleInternal(contractAddress, arraySlot(baseSlot, i), jobId, scope);
214
216
  if (currentValue == undefined) {
215
217
  throw new Error(`Expected non-empty value at capsule array in base slot ${baseSlot} at index ${i} for contract ${contractAddress}`);
216
218
  }
@@ -219,7 +221,7 @@ export class CapsuleStore {
219
221
  return values;
220
222
  });
221
223
  }
222
- setCapsuleArray(contractAddress, baseSlot, content, jobId) {
224
+ setCapsuleArray(contractAddress, baseSlot, content, jobId, scope) {
223
225
  // This transactional context in theory isn't so critical now because we aren't
224
226
  // writing to DB so if there's exceptions midway and it blows up, no visible impact
225
227
  // to persistent storage will happen.
@@ -230,25 +232,29 @@ export class CapsuleStore {
230
232
  // of jobs: different calls running concurrently on the same contract may cause trouble.
231
233
  return this.#store.transactionAsync(async ()=>{
232
234
  // Load current length, defaulting to 0 if not found
233
- const maybeLength = await this.loadCapsule(contractAddress, baseSlot, jobId);
235
+ const maybeLength = await this.#getCapsuleInternal(contractAddress, baseSlot, jobId, scope);
234
236
  const originalLength = maybeLength ? maybeLength[0].toNumber() : 0;
235
237
  // Set the new length
236
- this.storeCapsule(contractAddress, baseSlot, [
238
+ this.setCapsule(contractAddress, baseSlot, [
237
239
  new Fr(content.length)
238
- ], jobId);
240
+ ], jobId, scope);
239
241
  // Store the new content, possibly overwriting existing values
240
242
  for(let i = 0; i < content.length; i++){
241
- this.storeCapsule(contractAddress, arraySlot(baseSlot, i), content[i], jobId);
243
+ this.setCapsule(contractAddress, arraySlot(baseSlot, i), content[i], jobId, scope);
242
244
  }
243
245
  // Clear any stragglers
244
246
  for(let i = content.length; i < originalLength; i++){
245
- this.deleteCapsule(contractAddress, arraySlot(baseSlot, i), jobId);
247
+ this.deleteCapsule(contractAddress, arraySlot(baseSlot, i), jobId, scope);
246
248
  }
247
249
  });
248
250
  }
249
251
  }
250
- function dbSlotToKey(contractAddress, slot) {
251
- return `${contractAddress.toString()}:${slot.toString()}`;
252
+ function dbSlotToKey(contractAddress, slot, scope) {
253
+ return [
254
+ contractAddress.toString(),
255
+ scope.toString(),
256
+ slot.toString()
257
+ ].join(':');
252
258
  }
253
259
  function arraySlot(baseSlot, index) {
254
260
  return baseSlot.add(new Fr(1)).add(new Fr(index));
@@ -1,2 +1,3 @@
1
+ export { CapsuleService } from './capsule_service.js';
1
2
  export { CapsuleStore } from './capsule_store.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL2NhcHN1bGVfc3RvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDIn0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL2NhcHN1bGVfc3RvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/capsule_store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/capsule_store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1,2 @@
1
+ export { CapsuleService } from './capsule_service.js';
1
2
  export { CapsuleStore } from './capsule_store.js';
@@ -1,10 +1,37 @@
1
1
  import type { FUNCTION_TREE_HEIGHT } from '@aztec/constants';
2
- import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { BufferReader } from '@aztec/foundation/serialize';
3
4
  import type { MembershipWitness } from '@aztec/foundation/trees';
4
5
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
5
6
  import { type ContractArtifact, type FunctionAbi, type FunctionArtifactWithContractName, FunctionCall, type FunctionDebugMetadata, FunctionSelector } from '@aztec/stdlib/abi';
6
7
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
7
- import { type ContractClass, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
8
+ import { type ContractClassIdPreimage, type ContractClassWithId, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
9
+ /**
10
+ * All contract class data except the large packedBytecode.
11
+ * The expensive data from the ContractClass is precomputed and stored in this format to avoid redundant hashing.
12
+ * Since we have to store the artifacts anyway, the final ContractClass is reconstructed by combining this data
13
+ * with the packedBytecode obtained from the former. That way we can have quick class lookups without wasted storage.
14
+ */
15
+ export declare class SerializableContractClassData {
16
+ readonly version: 1;
17
+ readonly id: Fr;
18
+ readonly artifactHash: Fr;
19
+ readonly privateFunctionsRoot: Fr;
20
+ readonly publicBytecodeCommitment: Fr;
21
+ readonly privateFunctions: {
22
+ selector: FunctionSelector;
23
+ vkHash: Fr;
24
+ }[];
25
+ constructor(data: ContractClassIdPreimage & {
26
+ id: Fr;
27
+ privateFunctions: {
28
+ selector: FunctionSelector;
29
+ vkHash: Fr;
30
+ }[];
31
+ });
32
+ toBuffer(): Buffer;
33
+ static fromBuffer(bufferOrReader: Buffer | BufferReader): SerializableContractClassData;
34
+ }
8
35
  /**
9
36
  * ContractStore serves as a data manager and retriever for Aztec.nr contracts.
10
37
  * It provides methods to obtain contract addresses, function ABI, bytecode, and membership witnesses
@@ -15,19 +42,24 @@ import { type ContractClass, type ContractInstanceWithAddress } from '@aztec/std
15
42
  export declare class ContractStore {
16
43
  #private;
17
44
  constructor(store: AztecAsyncKVStore);
18
- addContractArtifact(id: Fr, contract: ContractArtifact): Promise<void>;
45
+ /**
46
+ * Registers a new contract artifact and its corresponding class data.
47
+ * IMPORTANT: This method does not verify that the provided artifact matches the class data or that the class id matches the artifact.
48
+ * It is the caller's responsibility to ensure the consistency and correctness of the provided data.
49
+ * This is done to avoid redundant, expensive contract class computations
50
+ */
51
+ addContractArtifact(contract: ContractArtifact, contractClassWithIdAndPreimage?: ContractClassWithId & ContractClassIdPreimage): Promise<Fr>;
19
52
  addContractInstance(contract: ContractInstanceWithAddress): Promise<void>;
20
53
  getContractsAddresses(): Promise<AztecAddress[]>;
21
- /** Returns a contract instance for a given address. Throws if not found. */
54
+ /** Returns a contract instance for a given address. */
22
55
  getContractInstance(contractAddress: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
56
+ /** Returns the raw contract artifact for a given class id. */
23
57
  getContractArtifact(contractClassId: Fr): Promise<ContractArtifact | undefined>;
24
- /** Returns a contract class for a given class id. Throws if not found. */
25
- getContractClass(contractClassId: Fr): Promise<ContractClass | undefined>;
58
+ /** Returns a contract class for a given class id. */
59
+ getContractClassWithPreimage(contractClassId: Fr): Promise<(ContractClassWithId & ContractClassIdPreimage) | undefined>;
26
60
  getContract(address: AztecAddress): Promise<(ContractInstanceWithAddress & ContractArtifact) | undefined>;
27
61
  /**
28
62
  * Retrieves the artifact of a specified function within a given contract.
29
- * The function is identified by its selector, which is a unique code generated from the function's signature.
30
- * Throws an error if the contract address or function selector are invalid or not found.
31
63
  *
32
64
  * @param contractAddress - The AztecAddress representing the contract containing the function.
33
65
  * @param selector - The function selector.
@@ -39,20 +71,15 @@ export declare class ContractStore {
39
71
  getFunctionAbi(contractAddress: AztecAddress, selector: FunctionSelector): Promise<FunctionAbi | undefined>;
40
72
  /**
41
73
  * Retrieves the debug metadata of a specified function within a given contract.
42
- * The function is identified by its selector, which is a unique code generated from the function's signature.
43
- * Returns undefined if the debug metadata for the given function is not found.
44
- * Throws if the contract has not been added to the database.
45
74
  *
46
75
  * @param contractAddress - The AztecAddress representing the contract containing the function.
47
76
  * @param selector - The function selector.
48
- * @returns The corresponding function's artifact as an object.
77
+ * @returns The corresponding function's debug metadata, or undefined.
49
78
  */
50
79
  getFunctionDebugMetadata(contractAddress: AztecAddress, selector: FunctionSelector): Promise<FunctionDebugMetadata | undefined>;
51
80
  getPublicFunctionDebugMetadata(contractAddress: AztecAddress): Promise<FunctionDebugMetadata | undefined>;
52
81
  /**
53
82
  * Retrieve the function membership witness for the given contract class and function selector.
54
- * The function membership witness represents a proof that the function belongs to the specified contract.
55
- * Throws an error if the contract address or function selector is unknown.
56
83
  *
57
84
  * @param contractClassId - The id of the class.
58
85
  * @param selector - The function selector.
@@ -62,6 +89,5 @@ export declare class ContractStore {
62
89
  getDebugContractName(contractAddress: AztecAddress): Promise<string | undefined>;
63
90
  getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string>;
64
91
  getFunctionCall(functionName: string, args: any[], to: AztecAddress): Promise<FunctionCall>;
65
- syncPrivateState(contractAddress: AztecAddress, functionToInvokeAfterSync: FunctionSelector | null, utilityExecutor: (privateSyncCall: FunctionCall) => Promise<any>): Promise<any>;
66
92
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3Rfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL2NvbnRyYWN0X3N0b3JlL2NvbnRyYWN0X3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RSxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxXQUFXLEVBRWhCLEtBQUssZ0NBQWdDLEVBQ3JDLFlBQVksRUFDWixLQUFLLHFCQUFxQixFQUMxQixnQkFBZ0IsRUFNakIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUNMLEtBQUssYUFBYSxFQUNsQixLQUFLLDJCQUEyQixFQUdqQyxNQUFNLHdCQUF3QixDQUFDO0FBSWhDOzs7Ozs7R0FNRztBQUNILHFCQUFhLGFBQWE7O0lBV3hCLFlBQVksS0FBSyxFQUFFLGlCQUFpQixFQUduQztJQUlZLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FrQmxGO0lBRUssbUJBQW1CLENBQUMsUUFBUSxFQUFFLDJCQUEyQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FPOUU7SUE0Q0sscUJBQXFCLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBR3JEO0lBRUQsNEVBQTRFO0lBQy9ELG1CQUFtQixDQUFDLGVBQWUsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixHQUFHLFNBQVMsQ0FBQyxDQUdoSDtJQUVZLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxDQUkzRjtJQUVELDBFQUEwRTtJQUM3RCxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLENBR3JGO0lBRVksV0FBVyxDQUN0QixPQUFPLEVBQUUsWUFBWSxHQUNwQixPQUFPLENBQUMsQ0FBQywyQkFBMkIsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQVV2RTtJQUVEOzs7Ozs7OztPQVFHO0lBQ1UsbUJBQW1CLENBQzlCLGVBQWUsRUFBRSxZQUFZLEVBQzdCLFFBQVEsRUFBRSxnQkFBZ0IsR0FDekIsT0FBTyxDQUFDLGdDQUFnQyxHQUFHLFNBQVMsQ0FBQyxDQUl2RDtJQUVZLG9DQUFvQyxDQUMvQyxlQUFlLEVBQUUsWUFBWSxFQUM3QixRQUFRLEVBQUUsZ0JBQWdCLEdBQ3pCLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQVUzQztJQUVZLHlCQUF5QixDQUNwQyxlQUFlLEVBQUUsWUFBWSxHQUM1QixPQUFPLENBQUMsZ0NBQWdDLEdBQUcsU0FBUyxDQUFDLENBSXZEO0lBRVksY0FBYyxDQUN6QixlQUFlLEVBQUUsWUFBWSxFQUM3QixRQUFRLEVBQUUsZ0JBQWdCLEdBQ3pCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBR2xDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ1Usd0JBQXdCLENBQ25DLGVBQWUsRUFBRSxZQUFZLEVBQzdCLFFBQVEsRUFBRSxnQkFBZ0IsR0FDekIsT0FBTyxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxDQUk1QztJQUVZLDhCQUE4QixDQUN6QyxlQUFlLEVBQUUsWUFBWSxHQUM1QixPQUFPLENBQUMscUJBQXFCLEdBQUcsU0FBUyxDQUFDLENBSTVDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDVSw0QkFBNEIsQ0FDdkMsZUFBZSxFQUFFLEVBQUUsRUFDbkIsUUFBUSxFQUFFLGdCQUFnQixHQUN6QixPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxvQkFBb0IsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUdyRTtJQUVZLG9CQUFvQixDQUFDLGVBQWUsRUFBRSxZQUFZLCtCQUc5RDtJQUVZLG9CQUFvQixDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixtQkFJMUY7SUE4QlksZUFBZSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQXVCdkc7SUFHWSxnQkFBZ0IsQ0FDM0IsZUFBZSxFQUFFLFlBQVksRUFDN0IseUJBQXlCLEVBQUUsZ0JBQWdCLEdBQUcsSUFBSSxFQUNsRCxlQUFlLEVBQUUsQ0FBQyxlQUFlLEVBQUUsWUFBWSxLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBYWpFO0NBQ0YifQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3Rfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL2NvbnRyYWN0X3N0b3JlL2NvbnRyYWN0X3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQWlDLE1BQU0sNkJBQTZCLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxXQUFXLEVBRWhCLEtBQUssZ0NBQWdDLEVBQ3JDLFlBQVksRUFDWixLQUFLLHFCQUFxQixFQUMxQixnQkFBZ0IsRUFNakIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUNMLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssbUJBQW1CLEVBQ3hCLEtBQUssMkJBQTJCLEVBR2pDLE1BQU0sd0JBQXdCLENBQUM7QUFNaEM7Ozs7O0dBS0c7QUFDSCxxQkFBYSw2QkFBNkI7SUFDeEMsU0FBZ0IsT0FBTyxJQUFXO0lBQ2xDLFNBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkIsU0FBZ0IsWUFBWSxFQUFFLEVBQUUsQ0FBQztJQUNqQyxTQUFnQixvQkFBb0IsRUFBRSxFQUFFLENBQUM7SUFDekMsU0FBZ0Isd0JBQXdCLEVBQUUsRUFBRSxDQUFDO0lBQzdDLFNBQWdCLGdCQUFnQixFQUFFO1FBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDO1FBQUMsTUFBTSxFQUFFLEVBQUUs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
@@ -1 +1 @@
1
- {"version":3,"file":"contract_store.d.ts","sourceRoot":"","sources":["../../../src/storage/contract_store/contract_store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract_store.d.ts","sourceRoot":"","sources":["../../../src/storage/contract_store/contract_store.ts"],"names":[],"mappings":"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"}