@aztec/pxe 0.0.1-commit.b1c78909e → 0.0.1-commit.b2a5d0dd1

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 (210) hide show
  1. package/dest/bin/check_oracle_version.js +4 -4
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +6 -2
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  4. package/dest/block_synchronizer/block_synchronizer.js +19 -1
  5. package/dest/config/index.d.ts +1 -1
  6. package/dest/config/index.d.ts.map +1 -1
  7. package/dest/config/index.js +7 -14
  8. package/dest/contract_function_simulator/contract_function_simulator.d.ts +13 -5
  9. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  10. package/dest/contract_function_simulator/contract_function_simulator.js +35 -10
  11. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  12. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  13. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  14. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -5
  15. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  16. package/dest/contract_function_simulator/execution_tagging_index_cache.js +17 -9
  17. package/dest/contract_function_simulator/index.d.ts +2 -1
  18. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/index.js +1 -0
  20. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -4
  21. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  22. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +3 -6
  23. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
  24. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
  25. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
  26. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
  27. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -4
  28. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  29. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +3 -6
  30. package/dest/contract_function_simulator/oracle/interfaces.d.ts +32 -19
  31. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  33. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  34. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +47 -0
  35. package/dest/contract_function_simulator/oracle/oracle.d.ts +50 -18
  36. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/oracle/oracle.js +186 -39
  38. package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
  39. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +12 -23
  40. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  41. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +30 -28
  42. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +74 -42
  43. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +252 -87
  45. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  46. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/pick_notes.js +20 -3
  48. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  49. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  50. package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
  51. package/dest/contract_logging.d.ts +9 -4
  52. package/dest/contract_logging.d.ts.map +1 -1
  53. package/dest/contract_logging.js +21 -6
  54. package/dest/contract_sync/contract_sync_service.d.ts +6 -5
  55. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  56. package/dest/contract_sync/contract_sync_service.js +62 -43
  57. package/dest/contract_sync/helpers.d.ts +2 -3
  58. package/dest/contract_sync/helpers.d.ts.map +1 -1
  59. package/dest/contract_sync/helpers.js +7 -2
  60. package/dest/debug/pxe_debug_utils.d.ts +3 -3
  61. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  62. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  63. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  64. package/dest/entrypoints/client/bundle/index.js +0 -1
  65. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  66. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  67. package/dest/entrypoints/client/bundle/utils.js +2 -2
  68. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  69. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  70. package/dest/entrypoints/client/lazy/index.js +0 -1
  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 +2 -2
  74. package/dest/entrypoints/pxe_creation_options.d.ts +3 -1
  75. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  76. package/dest/entrypoints/pxe_creation_options.js +3 -1
  77. package/dest/entrypoints/server/index.d.ts +2 -3
  78. package/dest/entrypoints/server/index.d.ts.map +1 -1
  79. package/dest/entrypoints/server/index.js +1 -2
  80. package/dest/entrypoints/server/utils.d.ts +2 -2
  81. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  82. package/dest/entrypoints/server/utils.js +2 -2
  83. package/dest/events/event_service.d.ts +3 -2
  84. package/dest/events/event_service.d.ts.map +1 -1
  85. package/dest/events/event_service.js +26 -5
  86. package/dest/events/private_event_filter_validator.d.ts +3 -2
  87. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  88. package/dest/events/private_event_filter_validator.js +15 -0
  89. package/dest/logs/log_service.d.ts +7 -8
  90. package/dest/logs/log_service.d.ts.map +1 -1
  91. package/dest/logs/log_service.js +27 -37
  92. package/dest/messages/message_context_service.d.ts +17 -0
  93. package/dest/messages/message_context_service.d.ts.map +1 -0
  94. package/dest/messages/message_context_service.js +36 -0
  95. package/dest/notes/note_service.d.ts +4 -5
  96. package/dest/notes/note_service.d.ts.map +1 -1
  97. package/dest/notes/note_service.js +14 -5
  98. package/dest/notes_filter.d.ts +2 -3
  99. package/dest/notes_filter.d.ts.map +1 -1
  100. package/dest/oracle_version.d.ts +4 -3
  101. package/dest/oracle_version.d.ts.map +1 -1
  102. package/dest/oracle_version.js +20 -10
  103. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  104. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  105. package/dest/private_kernel/private_kernel_execution_prover.js +4 -7
  106. package/dest/private_kernel/private_kernel_oracle.d.ts +5 -5
  107. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  108. package/dest/private_kernel/private_kernel_oracle.js +12 -15
  109. package/dest/pxe.d.ts +10 -7
  110. package/dest/pxe.d.ts.map +1 -1
  111. package/dest/pxe.js +58 -35
  112. package/dest/storage/anchor_block_store/anchor_block_store.js +1 -1
  113. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  114. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  115. package/dest/storage/capsule_store/capsule_service.js +50 -0
  116. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  117. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  118. package/dest/storage/capsule_store/capsule_store.js +36 -28
  119. package/dest/storage/capsule_store/index.d.ts +2 -1
  120. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  121. package/dest/storage/capsule_store/index.js +1 -0
  122. package/dest/storage/contract_store/contract_store.d.ts +1 -1
  123. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  124. package/dest/storage/contract_store/contract_store.js +4 -2
  125. package/dest/storage/metadata.d.ts +1 -1
  126. package/dest/storage/metadata.js +1 -1
  127. package/dest/storage/note_store/note_store.d.ts +1 -1
  128. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  129. package/dest/storage/note_store/note_store.js +2 -2
  130. package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
  131. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  132. package/dest/storage/private_event_store/private_event_store.js +3 -0
  133. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  134. package/dest/storage/tagging_store/sender_tagging_store.d.ts +26 -25
  135. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  136. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  137. package/dest/tagging/index.d.ts +2 -2
  138. package/dest/tagging/index.d.ts.map +1 -1
  139. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +2 -2
  140. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  141. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +2 -16
  142. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +1 -1
  143. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  144. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +10 -1
  145. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  146. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  147. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  148. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +2 -1
  149. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  150. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +24 -11
  151. package/package.json +16 -16
  152. package/src/bin/check_oracle_version.ts +4 -4
  153. package/src/block_synchronizer/block_synchronizer.ts +22 -2
  154. package/src/config/index.ts +2 -8
  155. package/src/contract_function_simulator/contract_function_simulator.ts +49 -14
  156. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  157. package/src/contract_function_simulator/execution_tagging_index_cache.ts +16 -11
  158. package/src/contract_function_simulator/index.ts +1 -0
  159. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -4
  160. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
  161. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -1
  162. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +1 -4
  163. package/src/contract_function_simulator/oracle/interfaces.ts +51 -17
  164. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
  165. package/src/contract_function_simulator/oracle/oracle.ts +258 -34
  166. package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
  167. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +40 -34
  168. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +423 -114
  169. package/src/contract_function_simulator/pick_notes.ts +22 -3
  170. package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
  171. package/src/contract_logging.ts +18 -5
  172. package/src/contract_sync/contract_sync_service.ts +99 -75
  173. package/src/contract_sync/helpers.ts +4 -4
  174. package/src/debug/pxe_debug_utils.ts +3 -3
  175. package/src/entrypoints/client/bundle/index.ts +0 -1
  176. package/src/entrypoints/client/bundle/utils.ts +2 -3
  177. package/src/entrypoints/client/lazy/index.ts +0 -1
  178. package/src/entrypoints/client/lazy/utils.ts +2 -3
  179. package/src/entrypoints/pxe_creation_options.ts +7 -0
  180. package/src/entrypoints/server/index.ts +1 -2
  181. package/src/entrypoints/server/utils.ts +2 -3
  182. package/src/events/event_service.ts +30 -5
  183. package/src/events/private_event_filter_validator.ts +21 -1
  184. package/src/logs/log_service.ts +57 -78
  185. package/src/messages/message_context_service.ts +44 -0
  186. package/src/notes/note_service.ts +18 -8
  187. package/src/notes_filter.ts +1 -3
  188. package/src/oracle_version.ts +20 -10
  189. package/src/private_kernel/private_kernel_execution_prover.ts +4 -9
  190. package/src/private_kernel/private_kernel_oracle.ts +14 -14
  191. package/src/pxe.ts +113 -42
  192. package/src/storage/anchor_block_store/anchor_block_store.ts +1 -1
  193. package/src/storage/capsule_store/capsule_service.ts +90 -0
  194. package/src/storage/capsule_store/capsule_store.ts +44 -26
  195. package/src/storage/capsule_store/index.ts +1 -0
  196. package/src/storage/contract_store/contract_store.ts +8 -6
  197. package/src/storage/metadata.ts +1 -1
  198. package/src/storage/note_store/note_store.ts +2 -5
  199. package/src/storage/private_event_store/private_event_store.ts +4 -0
  200. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  201. package/src/storage/tagging_store/sender_tagging_store.ts +182 -135
  202. package/src/tagging/index.ts +1 -1
  203. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +5 -15
  204. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +19 -1
  205. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  206. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +19 -9
  207. package/dest/access_scopes.d.ts +0 -9
  208. package/dest/access_scopes.d.ts.map +0 -1
  209. package/dest/access_scopes.js +0 -6
  210. package/src/access_scopes.ts +0 -9
@@ -9,8 +9,9 @@ import { ORACLE_INTERFACE_HASH } from '../oracle_version.js';
9
9
  *
10
10
  * The Oracle interface needs to be versioned to ensure compatibility between Aztec.nr and PXE. This function computes
11
11
  * a hash of the Oracle interface and compares it against a known hash. If they don't match, it means the interface has
12
- * changed and the ORACLE_VERSION constant needs to be incremented and the ORACLE_INTERFACE_HASH constant needs to be
13
- * updated.
12
+ * changed and the oracle version needs to be bumped:
13
+ * - If the change is backward-breaking (e.g. removing/renaming an oracle), bump ORACLE_VERSION_MAJOR.
14
+ * - If the change is an oracle addition (non-breaking), bump ORACLE_VERSION_MINOR.
14
15
  *
15
16
  * TODO(#16581): The following only takes into consideration changes to the oracles defined in Oracle.ts and omits TXE
16
17
  * oracles. Ensure this checks TXE oracles as well. This hasn't been implemented yet since we don't have a clean TXE
@@ -20,8 +21,7 @@ import { ORACLE_INTERFACE_HASH } from '../oracle_version.js';
20
21
  // We use keccak256 here just because we already have it in the dependencies.
21
22
  const oracleInterfaceHash = keccak256String(oracleInterfaceSignature);
22
23
  if (oracleInterfaceHash !== ORACLE_INTERFACE_HASH) {
23
- // This check exists only to notify you when you need to update the ORACLE_VERSION constant.
24
- throw new Error(`The Oracle interface has changed, which implies a breaking change in the aztec.nr/PXE oracle interface. Update ORACLE_INTERFACE_HASH to ${oracleInterfaceHash} and bump ORACLE_VERSION in pxe/src/oracle_version.ts.`);
24
+ throw new Error(`The Oracle interface has changed. Update ORACLE_INTERFACE_HASH to ${oracleInterfaceHash} in pxe/src/oracle_version.ts and bump the oracle version (ORACLE_VERSION_MAJOR for breaking changes, ORACLE_VERSION_MINOR for oracle additions).`);
25
25
  }
26
26
  }
27
27
  /**
@@ -24,11 +24,13 @@ export declare class BlockSynchronizer implements L2BlockStreamEventHandler {
24
24
  private config;
25
25
  private log;
26
26
  private isSyncing;
27
+ private readonly eventQueue;
27
28
  protected readonly blockStream: L2BlockStream;
28
29
  constructor(node: AztecNode, store: AztecAsyncKVStore, anchorBlockStore: AnchorBlockStore, noteStore: NoteStore, privateEventStore: PrivateEventStore, l2TipsStore: L2TipsKVStore, contractSyncService: ContractSyncService, config?: Partial<BlockSynchronizerConfig>, bindings?: LoggerBindings);
29
30
  protected createBlockStream(config: Partial<BlockSynchronizerConfig>): L2BlockStream;
30
- /** Handle events emitted by the block stream. */
31
+ /** Handle events emitted by the block stream. Serialized to prevent concurrent mutations to anchor state. */
31
32
  handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void>;
33
+ private doHandleBlockStreamEvent;
32
34
  private updateAnchorBlockHeader;
33
35
  /**
34
36
  * Syncs PXE and the node by downloading the metadata of the latest blocks, allowing simulations to use
@@ -40,6 +42,8 @@ export declare class BlockSynchronizer implements L2BlockStreamEventHandler {
40
42
  * We do this so PXE can ensure data consistency.
41
43
  */
42
44
  sync(): Promise<void>;
45
+ /** Stops the block synchronizer, waiting for any in-progress sync and queued events to complete. */
46
+ stop(): Promise<void>;
43
47
  private doSync;
44
48
  }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfc3luY2hyb25pemVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2tfc3luY2hyb25pemVyL2Jsb2NrX3N5bmNocm9uaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDdkYsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQWEsYUFBYSxFQUFFLEtBQUssa0JBQWtCLEVBQUUsS0FBSyx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hILE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR2pFLE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzVGLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFFL0Y7Ozs7R0FJRztBQUNILHFCQUFhLGlCQUFrQixZQUFXLHlCQUF5QjtJQU0vRCxPQUFPLENBQUMsSUFBSTtJQUNaLE9BQU8sQ0FBQyxLQUFLO0lBQ2IsT0FBTyxDQUFDLGdCQUFnQjtJQUN4QixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsaUJBQWlCO0lBQ3pCLE9BQU8sQ0FBQyxXQUFXO0lBQ25CLE9BQU8sQ0FBQyxtQkFBbUI7SUFDM0IsT0FBTyxDQUFDLE1BQU07SUFaaEIsT0FBTyxDQUFDLEdBQUcsQ0FBUztJQUNwQixPQUFPLENBQUMsU0FBUyxDQUE0QjtJQUM3QyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUM7SUFFOUMsWUFDVSxJQUFJLEVBQUUsU0FBUyxFQUNmLEtBQUssRUFBRSxpQkFBaUIsRUFDeEIsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLGlCQUFpQixFQUFFLGlCQUFpQixFQUNwQyxXQUFXLEVBQUUsYUFBYSxFQUMxQixtQkFBbUIsRUFBRSxtQkFBbUIsRUFDeEMsTUFBTSxHQUFFLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBTSxFQUNyRCxRQUFRLENBQUMsRUFBRSxjQUFjLEVBSTFCO0lBRUQsU0FBUyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUMsR0FBRyxhQUFhLENBYW5GO0lBRUQsaURBQWlEO0lBQ3BDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBc0U1RTtZQUdhLHVCQUF1QjtJQVNyQzs7Ozs7Ozs7T0FRRztJQUNVLElBQUksa0JBZWhCO1lBRWEsTUFBTTtDQWNyQiJ9
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfc3luY2hyb25pemVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2tfc3luY2hyb25pemVyL2Jsb2NrX3N5bmNocm9uaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFdkYsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQWEsYUFBYSxFQUFFLEtBQUssa0JBQWtCLEVBQUUsS0FBSyx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hILE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR2pFLE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzVGLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFFL0Y7Ozs7R0FJRztBQUNILHFCQUFhLGlCQUFrQixZQUFXLHlCQUF5QjtJQU8vRCxPQUFPLENBQUMsSUFBSTtJQUNaLE9BQU8sQ0FBQyxLQUFLO0lBQ2IsT0FBTyxDQUFDLGdCQUFnQjtJQUN4QixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsaUJBQWlCO0lBQ3pCLE9BQU8sQ0FBQyxXQUFXO0lBQ25CLE9BQU8sQ0FBQyxtQkFBbUI7SUFDM0IsT0FBTyxDQUFDLE1BQU07SUFiaEIsT0FBTyxDQUFDLEdBQUcsQ0FBUztJQUNwQixPQUFPLENBQUMsU0FBUyxDQUE0QjtJQUM3QyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBcUI7SUFDaEQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDO0lBRTlDLFlBQ1UsSUFBSSxFQUFFLFNBQVMsRUFDZixLQUFLLEVBQUUsaUJBQWlCLEVBQ3hCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxTQUFTLEVBQUUsU0FBUyxFQUNwQixpQkFBaUIsRUFBRSxpQkFBaUIsRUFDcEMsV0FBVyxFQUFFLGFBQWEsRUFDMUIsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQ3hDLE1BQU0sR0FBRSxPQUFPLENBQUMsdUJBQXVCLENBQU0sRUFDckQsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUsxQjtJQUVELFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsYUFBYSxDQWFuRjtJQUVELDZHQUE2RztJQUN0RyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUV0RTtZQUVhLHdCQUF3QjtZQTZFeEIsdUJBQXVCO0lBU3JDOzs7Ozs7OztPQVFHO0lBQ1UsSUFBSSxrQkFpQmhCO0lBRUQsb0dBQW9HO0lBQ3ZGLElBQUksa0JBSWhCO1lBRWEsTUFBTTtDQWNyQiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"block_synchronizer.d.ts","sourceRoot":"","sources":["../../src/block_synchronizer/block_synchronizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAa,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACxH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAGjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAE/F;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,yBAAyB;IAM/D,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,MAAM;IAZhB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IAE9C,YACU,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,iBAAiB,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,aAAa,EAC1B,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,GAAE,OAAO,CAAC,uBAAuB,CAAM,EACrD,QAAQ,CAAC,EAAE,cAAc,EAI1B;IAED,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,aAAa,CAanF;IAED,iDAAiD;IACpC,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsE5E;YAGa,uBAAuB;IASrC;;;;;;;;OAQG;IACU,IAAI,kBAehB;YAEa,MAAM;CAcrB"}
1
+ {"version":3,"file":"block_synchronizer.d.ts","sourceRoot":"","sources":["../../src/block_synchronizer/block_synchronizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAa,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACxH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAGjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAE/F;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,yBAAyB;IAO/D,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,MAAM;IAbhB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IAE9C,YACU,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,iBAAiB,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,aAAa,EAC1B,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,GAAE,OAAO,CAAC,uBAAuB,CAAM,EACrD,QAAQ,CAAC,EAAE,cAAc,EAK1B;IAED,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,aAAa,CAanF;IAED,6GAA6G;IACtG,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;YAEa,wBAAwB;YA6ExB,uBAAuB;IASrC;;;;;;;;OAQG;IACU,IAAI,kBAiBhB;IAED,oGAAoG;IACvF,IAAI,kBAIhB;YAEa,MAAM;CAcrB"}
@@ -1,5 +1,6 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
+ import { SerialQueue } from '@aztec/foundation/queue';
3
4
  import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
4
5
  /**
5
6
  * The BlockSynchronizer class orchestrates synchronization between PXE and Aztec node, maintaining an up-to-date
@@ -16,6 +17,7 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
16
17
  config;
17
18
  log;
18
19
  isSyncing;
20
+ eventQueue;
19
21
  blockStream;
20
22
  constructor(node, store, anchorBlockStore, noteStore, privateEventStore, l2TipsStore, contractSyncService, config = {}, bindings){
21
23
  this.node = node;
@@ -26,8 +28,10 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
26
28
  this.l2TipsStore = l2TipsStore;
27
29
  this.contractSyncService = contractSyncService;
28
30
  this.config = config;
31
+ this.eventQueue = new SerialQueue();
29
32
  this.log = createLogger('pxe:block_synchronizer', bindings);
30
33
  this.blockStream = this.createBlockStream(config);
34
+ this.eventQueue.start();
31
35
  }
32
36
  createBlockStream(config) {
33
37
  return new L2BlockStream(this.node, this.l2TipsStore, this, createLogger('pxe:block_stream', this.log.getBindings()), {
@@ -37,7 +41,10 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
37
41
  skipFinalized: true
38
42
  });
39
43
  }
40
- /** Handle events emitted by the block stream. */ async handleBlockStreamEvent(event) {
44
+ /** Handle events emitted by the block stream. Serialized to prevent concurrent mutations to anchor state. */ handleBlockStreamEvent(event) {
45
+ return this.eventQueue.put(()=>this.doHandleBlockStreamEvent(event));
46
+ }
47
+ async doHandleBlockStreamEvent(event) {
41
48
  await this.l2TipsStore.handleBlockStreamEvent(event);
42
49
  switch(event.type){
43
50
  case 'blocks-added':
@@ -63,6 +70,8 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
63
70
  const blockHeader = await this.node.getBlockHeader(BlockNumber(event.block.number));
64
71
  if (blockHeader) {
65
72
  await this.updateAnchorBlockHeader(blockHeader);
73
+ } else {
74
+ this.log.warn(`Block header not found for proven block ${event.block.number}, skipping anchor update`);
66
75
  }
67
76
  }
68
77
  break;
@@ -73,6 +82,8 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
73
82
  const blockHeader = await this.node.getBlockHeader(BlockNumber(event.block.number));
74
83
  if (blockHeader) {
75
84
  await this.updateAnchorBlockHeader(blockHeader);
85
+ } else {
86
+ this.log.warn(`Block header not found for finalized block ${event.block.number}, skipping anchor update`);
76
87
  }
77
88
  }
78
89
  break;
@@ -129,6 +140,8 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
129
140
  return;
130
141
  }
131
142
  this.log.debug(`Syncing PXE with the node`);
143
+ // Capture the promise locally so we always await the exact promise we created, even if this.isSyncing is modified
144
+ // between assignment and await (e.g. due to future refactors introducing a yield point).
132
145
  const isSyncing = this.doSync();
133
146
  this.isSyncing = isSyncing;
134
147
  try {
@@ -137,6 +150,11 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
137
150
  this.isSyncing = undefined;
138
151
  }
139
152
  }
153
+ /** Stops the block synchronizer, waiting for any in-progress sync and queued events to complete. */ async stop() {
154
+ await this.isSyncing;
155
+ await this.blockStream.stop();
156
+ await this.eventQueue.end();
157
+ }
140
158
  async doSync() {
141
159
  let currentHeader;
142
160
  try {
@@ -34,4 +34,4 @@ export declare const allPxeConfigMappings: ConfigMappingsType<CliPXEOptions & PX
34
34
  * Creates an instance of CliPxeOptions out of environment variables
35
35
  */
36
36
  export declare function getCliPXEOptions(): CliPXEOptions & PXEConfig;
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBS3hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx3QkFBd0IsQ0FBQztBQUVsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsa0JBQWtCO0lBQ2pDLDhDQUE4QztJQUM5QyxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDekI7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyx1QkFBdUI7SUFDdEMseUZBQXlGO0lBQ3pGLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztJQUN6Qiw2RUFBNkU7SUFDN0UsWUFBWSxDQUFDLEVBQUUsVUFBVSxHQUFHLGNBQWMsR0FBRyxRQUFRLEdBQUcsV0FBVyxDQUFDO0NBQ3JFO0FBRUQsTUFBTSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsR0FBRyxlQUFlLEdBQUcsV0FBVyxHQUFHLHVCQUF1QixDQUFDO0FBRXJHLE1BQU0sTUFBTSxhQUFhLEdBQUc7SUFDMUIsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNsQixDQUFDO0FBRUYsZUFBTyxNQUFNLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0FnQzNELENBQUM7QUFFRjs7R0FFRztBQUNILHdCQUFnQixZQUFZLElBQUksU0FBUyxDQUV4QztBQUVELGVBQU8sTUFBTSxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQyxhQUFhLENBS2xFLENBQUM7QUFFRixlQUFPLE1BQU0sb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FXOUUsQ0FBQztBQUVGOztHQUVHO0FBQ0gsd0JBQWdCLGdCQUFnQixJQUFJLGFBQWEsR0FBRyxTQUFTLENBUTVEIn0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBTXhCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx3QkFBd0IsQ0FBQztBQUVsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsa0JBQWtCO0lBQ2pDLDhDQUE4QztJQUM5QyxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDekI7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyx1QkFBdUI7SUFDdEMseUZBQXlGO0lBQ3pGLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztJQUN6Qiw2RUFBNkU7SUFDN0UsWUFBWSxDQUFDLEVBQUUsVUFBVSxHQUFHLGNBQWMsR0FBRyxRQUFRLEdBQUcsV0FBVyxDQUFDO0NBQ3JFO0FBRUQsTUFBTSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsR0FBRyxlQUFlLEdBQUcsV0FBVyxHQUFHLHVCQUF1QixDQUFDO0FBRXJHLE1BQU0sTUFBTSxhQUFhLEdBQUc7SUFDMUIsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNsQixDQUFDO0FBRUYsZUFBTyxNQUFNLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0F5QjNELENBQUM7QUFFRjs7R0FFRztBQUNILHdCQUFnQixZQUFZLElBQUksU0FBUyxDQUV4QztBQUVELGVBQU8sTUFBTSxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQyxhQUFhLENBS2xFLENBQUM7QUFFRixlQUFPLE1BQU0sb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FXOUUsQ0FBQztBQUVGOztHQUVHO0FBQ0gsd0JBQWdCLGdCQUFnQixJQUFJLGFBQWEsR0FBRyxTQUFTLENBUTVEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yFAAyF;IACzF,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAC;CACrE;AAED,MAAM,MAAM,SAAS,GAAG,kBAAkB,GAAG,eAAe,GAAG,WAAW,GAAG,uBAAuB,CAAC;AAErG,MAAM,MAAM,aAAa,GAAG;IAC1B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,CAgC3D,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,CAKlE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,GAAG,SAAS,CAW9E,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,SAAS,CAQ5D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAMxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yFAAyF;IACzF,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAC;CACrE;AAED,MAAM,MAAM,SAAS,GAAG,kBAAkB,GAAG,eAAe,GAAG,WAAW,GAAG,uBAAuB,CAAC;AAErG,MAAM,MAAM,aAAa,GAAG;IAC1B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,CAyB3D,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,CAKlE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,GAAG,SAAS,CAW9E,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,SAAS,CAQ5D"}
@@ -1,4 +1,4 @@
1
- import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, parseBooleanEnv } from '@aztec/foundation/config';
1
+ import { booleanConfigHelper, enumConfigHelper, getConfigFromMappings, numberConfigHelper, parseBooleanEnv } from '@aztec/foundation/config';
2
2
  import { chainConfigMappings } from '@aztec/stdlib/config';
3
3
  import { dataConfigMappings } from '@aztec/stdlib/kv-store';
4
4
  export { getPackageInfo } from './package_info.js';
@@ -25,19 +25,12 @@ export const pxeConfigMappings = {
25
25
  syncChainTip: {
26
26
  env: 'PXE_SYNC_CHAIN_TIP',
27
27
  description: 'Which chain tip to sync to (proposed, checkpointed, proven, finalized)',
28
- defaultValue: 'proposed',
29
- parseEnv: (val)=>{
30
- const allowedValues = [
31
- 'proposed',
32
- 'checkpointed',
33
- 'proven',
34
- 'finalized'
35
- ];
36
- if (allowedValues.includes(val)) {
37
- return val;
38
- }
39
- throw new Error(`Invalid value for PXE_SYNC_CHAIN_TIP: ${val}. Allowed values are: ${allowedValues.join(', ')}`);
40
- }
28
+ ...enumConfigHelper([
29
+ 'proposed',
30
+ 'checkpointed',
31
+ 'proven',
32
+ 'finalized'
33
+ ], 'proposed')
41
34
  }
42
35
  };
43
36
  /**
@@ -5,11 +5,12 @@ import type { FunctionCall } from '@aztec/stdlib/abi';
5
5
  import { FunctionSelector } from '@aztec/stdlib/abi';
6
6
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
7
7
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
8
+ import type { L2TipsProvider } from '@aztec/stdlib/block';
8
9
  import type { AztecNode } from '@aztec/stdlib/interfaces/server';
9
10
  import { type PrivateKernelExecutionProofOutput, PrivateKernelTailCircuitPublicInputs } from '@aztec/stdlib/kernel';
10
- import { BlockHeader, PrivateExecutionResult, TxExecutionRequest } from '@aztec/stdlib/tx';
11
- import type { AccessScopes } from '../access_scopes.js';
11
+ import { BlockHeader, type OffchainEffect, PrivateExecutionResult, TxExecutionRequest } from '@aztec/stdlib/tx';
12
12
  import type { ContractSyncService } from '../contract_sync/contract_sync_service.js';
13
+ import type { MessageContextService } from '../messages/message_context_service.js';
13
14
  import type { AddressStore } from '../storage/address_store/address_store.js';
14
15
  import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
15
16
  import type { ContractStore } from '../storage/contract_store/contract_store.js';
@@ -31,7 +32,7 @@ export type ContractSimulatorRunOpts = {
31
32
  /** The address used as a tagging sender when emitting private logs. */
32
33
  senderForTags?: AztecAddress;
33
34
  /** The accounts whose notes we can access in this call. */
34
- scopes: AccessScopes;
35
+ scopes: AztecAddress[];
35
36
  /** The job ID for staged writes. */
36
37
  jobId: string;
37
38
  };
@@ -42,6 +43,7 @@ export type ContractFunctionSimulatorArgs = {
42
43
  keyStore: KeyStore;
43
44
  addressStore: AddressStore;
44
45
  aztecNode: AztecNode;
46
+ l2TipsStore: L2TipsProvider;
45
47
  senderTaggingStore: SenderTaggingStore;
46
48
  recipientTaggingStore: RecipientTaggingStore;
47
49
  senderAddressBookStore: SenderAddressBookStore;
@@ -49,6 +51,7 @@ export type ContractFunctionSimulatorArgs = {
49
51
  privateEventStore: PrivateEventStore;
50
52
  simulator: CircuitSimulator;
51
53
  contractSyncService: ContractSyncService;
54
+ messageContextService: MessageContextService;
52
55
  };
53
56
  /**
54
57
  * The contract function simulator.
@@ -60,6 +63,7 @@ export declare class ContractFunctionSimulator {
60
63
  private readonly keyStore;
61
64
  private readonly addressStore;
62
65
  private readonly aztecNode;
66
+ private readonly l2TipsStore;
63
67
  private readonly senderTaggingStore;
64
68
  private readonly recipientTaggingStore;
65
69
  private readonly senderAddressBookStore;
@@ -67,6 +71,7 @@ export declare class ContractFunctionSimulator {
67
71
  private readonly privateEventStore;
68
72
  private readonly simulator;
69
73
  private readonly contractSyncService;
74
+ private readonly messageContextService;
70
75
  constructor(args: ContractFunctionSimulatorArgs);
71
76
  /**
72
77
  * Runs a private function.
@@ -82,7 +87,10 @@ export declare class ContractFunctionSimulator {
82
87
  * accounts if not specified.
83
88
  * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
84
89
  */
85
- runUtility(call: FunctionCall, authwits: AuthWitness[], anchorBlockHeader: BlockHeader, scopes: AccessScopes, jobId: string): Promise<Fr[]>;
90
+ runUtility(call: FunctionCall, authwits: AuthWitness[], anchorBlockHeader: BlockHeader, scopes: AztecAddress[], jobId: string): Promise<{
91
+ result: Fr[];
92
+ offchainEffects: OffchainEffect[];
93
+ }>;
86
94
  /**
87
95
  * Returns the execution statistics collected during the simulator run.
88
96
  * @returns The execution statistics.
@@ -105,4 +113,4 @@ export declare class ContractFunctionSimulator {
105
113
  * @returns The simulated proving result.
106
114
  */
107
115
  export declare function generateSimulatedProvingResult(privateExecutionResult: PrivateExecutionResult, debugFunctionNameGetter: (contractAddress: AztecAddress, functionSelector: FunctionSelector) => Promise<string>, node: AztecNode, minRevertibleSideEffectCounterOverride?: number): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>>;
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL2NvbnRyYWN0X2Z1bmN0aW9uX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3QkEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE9BQU8sRUFDTCxLQUFLLGdCQUFnQixFQU90QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFXM0QsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUtMLEtBQUssaUNBQWlDLEVBQ3RDLG9DQUFvQyxFQWFyQyxNQUFNLHNCQUFzQixDQUFDO0FBSTlCLE9BQU8sRUFDTCxXQUFXLEVBR1gsc0JBQXNCLEVBRXRCLGtCQUFrQixFQUluQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDckYsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDOUUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDOUUsT0FBTyxLQUFLLEVBQUUs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
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL2NvbnRyYWN0X2Z1bmN0aW9uX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5QkEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE9BQU8sRUFDTCxLQUFLLGdCQUFnQixFQU90QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQWtCLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVTFFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFLTCxLQUFLLGlDQUFpQyxFQUN0QyxvQ0FBb0MsRUFhckMsTUFBTSxzQkFBc0IsQ0FBQztBQUk5QixPQUFPLEVBQ0wsV0FBVyxFQUdYLEtBQUssY0FBYyxFQUNuQixzQkFBc0IsRUFFdEIsa0JBQWtCLEVBSW5CLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BGLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FB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
@@ -1 +1 @@
1
- {"version":3,"file":"contract_function_simulator.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/contract_function_simulator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract_function_simulator.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/contract_function_simulator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { AVM_EMITNOTEHASH_BASE_L2_GAS, AVM_EMITNULLIFIER_BASE_L2_GAS, AVM_SENDL2TOL1MSG_BASE_L2_GAS, DA_GAS_PER_FIELD, FIXED_AVM_STARTUP_L2_GAS, L2_GAS_PER_CONTRACT_CLASS_LOG, L2_GAS_PER_L2_TO_L1_MSG, L2_GAS_PER_NOTE_HASH, L2_GAS_PER_NULLIFIER, L2_GAS_PER_PRIVATE_LOG, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, PRIVATE_TX_L2_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
1
+ import { AVM_EMITNOTEHASH_BASE_L2_GAS, AVM_EMITNULLIFIER_BASE_L2_GAS, AVM_SENDL2TOL1MSG_BASE_L2_GAS, DA_GAS_PER_FIELD, FIXED_AVM_STARTUP_L2_GAS, L2_GAS_PER_CONTRACT_CLASS_LOG, L2_GAS_PER_L2_TO_L1_MSG, L2_GAS_PER_NOTE_HASH, L2_GAS_PER_NULLIFIER, L2_GAS_PER_PRIVATE_LOG, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, MAX_TX_LIFETIME, PRIVATE_TX_L2_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
2
2
  import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { createLogger } from '@aztec/foundation/log';
@@ -15,6 +15,7 @@ import { PrivateLog } from '@aztec/stdlib/logs';
15
15
  import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
16
16
  import { ChonkProof } from '@aztec/stdlib/proofs';
17
17
  import { CallContext, HashedValues, PrivateExecutionResult, TxConstantData, collectNested, collectNoteHashNullifierCounterMap, getFinalMinRevertibleSideEffectCounter } from '@aztec/stdlib/tx';
18
+ import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
18
19
  import { ExecutionNoteCache } from './execution_note_cache.js';
19
20
  import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
20
21
  import { HashedValuesCache } from './hashed_values_cache.js';
@@ -31,6 +32,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
31
32
  keyStore;
32
33
  addressStore;
33
34
  aztecNode;
35
+ l2TipsStore;
34
36
  senderTaggingStore;
35
37
  recipientTaggingStore;
36
38
  senderAddressBookStore;
@@ -38,12 +40,14 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
38
40
  privateEventStore;
39
41
  simulator;
40
42
  contractSyncService;
43
+ messageContextService;
41
44
  constructor(args){
42
45
  this.contractStore = args.contractStore;
43
46
  this.noteStore = args.noteStore;
44
47
  this.keyStore = args.keyStore;
45
48
  this.addressStore = args.addressStore;
46
49
  this.aztecNode = args.aztecNode;
50
+ this.l2TipsStore = args.l2TipsStore;
47
51
  this.senderTaggingStore = args.senderTaggingStore;
48
52
  this.recipientTaggingStore = args.recipientTaggingStore;
49
53
  this.senderAddressBookStore = args.senderAddressBookStore;
@@ -51,6 +55,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
51
55
  this.privateEventStore = args.privateEventStore;
52
56
  this.simulator = args.simulator;
53
57
  this.contractSyncService = args.contractSyncService;
58
+ this.messageContextService = args.messageContextService;
54
59
  this.log = createLogger('simulator');
55
60
  }
56
61
  /**
@@ -63,7 +68,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
63
68
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
64
69
  }
65
70
  if (request.origin !== contractAddress) {
66
- this.log.warn(`Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`);
71
+ throw new Error(`Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`);
67
72
  }
68
73
  // reserve the first side effect for the tx hash (inserted by the private kernel)
69
74
  const startSideEffectCounter = 2;
@@ -92,15 +97,17 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
92
97
  senderTaggingStore: this.senderTaggingStore,
93
98
  recipientTaggingStore: this.recipientTaggingStore,
94
99
  senderAddressBookStore: this.senderAddressBookStore,
95
- capsuleStore: this.capsuleStore,
100
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
96
101
  privateEventStore: this.privateEventStore,
102
+ messageContextService: this.messageContextService,
97
103
  contractSyncService: this.contractSyncService,
98
104
  jobId,
99
105
  totalPublicCalldataCount: 0,
100
106
  sideEffectCounter: startSideEffectCounter,
101
107
  scopes,
102
108
  senderForTags,
103
- simulator: this.simulator
109
+ simulator: this.simulator,
110
+ l2TipsStore: this.l2TipsStore
104
111
  });
105
112
  const setupTime = simulatorSetupTimer.ms();
106
113
  try {
@@ -118,7 +125,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
118
125
  r.publicInputs.publicTeardownCallRequest
119
126
  ]));
120
127
  const publicFunctionsCalldata = await Promise.all(publicCallRequests.map(async (r)=>{
121
- const calldata = await privateExecutionOracle.loadFromExecutionCache(r.calldataHash);
128
+ const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
122
129
  return new HashedValues(calldata, r.calldataHash);
123
130
  }));
124
131
  const teardownTime = simulatorTeardownTimer.ms();
@@ -134,7 +141,6 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
134
141
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
135
142
  }
136
143
  }
137
- // docs:start:execute_utility_function
138
144
  /**
139
145
  * Runs a utility function.
140
146
  * @param call - The function call to execute.
@@ -160,8 +166,11 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
160
166
  aztecNode: this.aztecNode,
161
167
  recipientTaggingStore: this.recipientTaggingStore,
162
168
  senderAddressBookStore: this.senderAddressBookStore,
163
- capsuleStore: this.capsuleStore,
169
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
164
170
  privateEventStore: this.privateEventStore,
171
+ messageContextService: this.messageContextService,
172
+ contractSyncService: this.contractSyncService,
173
+ l2TipsStore: this.l2TipsStore,
165
174
  jobId,
166
175
  scopes
167
176
  });
@@ -181,12 +190,14 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
181
190
  });
182
191
  });
183
192
  this.log.verbose(`Utility execution for ${call.to}.${call.selector} completed`);
184
- return witnessMapToFields(acirExecutionResult.returnWitness);
193
+ return {
194
+ result: witnessMapToFields(acirExecutionResult.returnWitness),
195
+ offchainEffects: oracle.getOffchainEffects()
196
+ };
185
197
  } catch (err) {
186
198
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
187
199
  }
188
200
  }
189
- // docs:end:execute_utility_function
190
201
  /**
191
202
  * Returns the execution statistics collected during the simulator run.
192
203
  * @returns The execution statistics.
@@ -239,13 +250,27 @@ class OrderedSideEffect {
239
250
  const noteHashReadRequests = [];
240
251
  const nullifierReadRequests = [];
241
252
  let publicTeardownCallRequest;
253
+ // We set expiration timestamp to anchor_block_timestamp + MAX_TX_LIFETIME (24h) just like kernels do
254
+ let expirationTimestamp = privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.globalVariables.timestamp + BigInt(MAX_TX_LIFETIME);
255
+ let feePayer = AztecAddress.zero();
242
256
  const executions = [
243
257
  privateExecutionResult.entrypoint
244
258
  ];
245
259
  while(executions.length !== 0){
246
260
  const execution = executions.shift();
247
261
  executions.unshift(...execution.nestedExecutionResults);
262
+ // Just like kernels we overwrite the default value if the call sets it.
263
+ const callExpirationTimestamp = execution.publicInputs.expirationTimestamp;
264
+ if (callExpirationTimestamp !== 0n && callExpirationTimestamp < expirationTimestamp) {
265
+ expirationTimestamp = callExpirationTimestamp;
266
+ }
248
267
  const { contractAddress } = execution.publicInputs.callContext;
268
+ if (execution.publicInputs.isFeePayer) {
269
+ if (!feePayer.isZero()) {
270
+ throw new Error('Multiple fee payers found in private execution result');
271
+ }
272
+ feePayer = contractAddress;
273
+ }
249
274
  scopedNoteHashes.push(...execution.publicInputs.noteHashes.getActiveItems().filter((nh)=>!nh.isEmpty()).map((nh)=>nh.scope(contractAddress)));
250
275
  scopedNullifiers.push(...execution.publicInputs.nullifiers.getActiveItems().map((n)=>n.scope(contractAddress)));
251
276
  taggedPrivateLogs.push(...await Promise.all(execution.publicInputs.privateLogs.getActiveItems().map(async (metadata)=>{
@@ -328,7 +353,7 @@ class OrderedSideEffect {
328
353
  const publicInputs = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ gasUsed.add(Gas.from({
329
354
  l2Gas: isPrivateOnlyTx ? PRIVATE_TX_L2_GAS_OVERHEAD : PUBLIC_TX_L2_GAS_OVERHEAD,
330
355
  daGas: TX_DA_GAS_OVERHEAD
331
- })), /*feePayer=*/ AztecAddress.zero(), /*expirationTimestamp=*/ 0n, hasPublicCalls ? inputsForPublic : undefined, !hasPublicCalls ? inputsForRollup : undefined);
356
+ })), /*feePayer=*/ feePayer, /*expirationTimestamp=*/ expirationTimestamp, hasPublicCalls ? inputsForPublic : undefined, !hasPublicCalls ? inputsForRollup : undefined);
332
357
  return {
333
358
  publicInputs,
334
359
  chonkProof: ChonkProof.empty(),
@@ -0,0 +1,28 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ /** In-memory store for ephemeral arrays scoped to a single contract call frame. */
3
+ export declare class EphemeralArrayService {
4
+ #private;
5
+ /** Returns all elements in the array, or an empty array if uninitialized. */
6
+ readArrayAt(slot: Fr): Fr[][];
7
+ /** Returns the number of elements in the array at the given slot. */
8
+ len(slot: Fr): number;
9
+ /** Appends an element to the array and returns the new length. */
10
+ push(slot: Fr, elements: Fr[]): number;
11
+ /** Removes and returns the last element. Throws if empty. */
12
+ pop(slot: Fr): Fr[];
13
+ /** Returns the element at the given index. Throws if out of bounds. */
14
+ get(slot: Fr, index: number): Fr[];
15
+ /** Overwrites the element at the given index. Throws if out of bounds. */
16
+ set(slot: Fr, index: number, value: Fr[]): void;
17
+ /** Removes the element at the given index, shifting subsequent elements backward. Throws if out of bounds. */
18
+ remove(slot: Fr, index: number): void;
19
+ /** Removes all elements from the array. */
20
+ clear(slot: Fr): void;
21
+ /** Allocates a fresh, unused slot for a new ephemeral array. */
22
+ allocateSlot(): Fr;
23
+ /** Creates a new ephemeral array pre-populated with the given elements and returns its slot. */
24
+ newArray(elements: Fr[][]): Fr;
25
+ /** Copies `count` elements from the source array to the destination array (overwrites destination). */
26
+ copy(srcSlot: Fr, dstSlot: Fr, count: number): void;
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBoZW1lcmFsX2FycmF5X3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXBoZW1lcmFsX2FycmF5X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELG1GQUFtRjtBQUNuRixxQkFBYSxxQkFBcUI7O0lBT2hDLDZFQUE2RTtJQUM3RSxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUU1QjtJQU1ELHFFQUFxRTtJQUNyRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBRXBCO0lBRUQsa0VBQWtFO0lBQ2xFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBS3JDO0lBRUQsNkRBQTZEO0lBQzdELEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQVFsQjtJQUVELHVFQUF1RTtJQUN2RSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQVFqQztJQUVELDBFQUEwRTtJQUMxRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBUTlDO0lBRUQsOEdBQThHO0lBQzlHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQVFwQztJQUVELDJDQUEyQztJQUMzQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBRXBCO0lBRUQsZ0VBQWdFO0lBQ2hFLFlBQVksSUFBSSxFQUFFLENBTWpCO0lBRUQsZ0dBQWdHO0lBQ2hHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBSTdCO0lBRUQsdUdBQXVHO0lBQ3ZHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBVWxEO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ephemeral_array_service.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/ephemeral_array_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,mFAAmF;AACnF,qBAAa,qBAAqB;;IAOhC,6EAA6E;IAC7E,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAE5B;IAMD,qEAAqE;IACrE,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAEpB;IAED,kEAAkE;IAClE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,MAAM,CAKrC;IAED,6DAA6D;IAC7D,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAQlB;IAED,uEAAuE;IACvE,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,CAQjC;IAED,0EAA0E;IAC1E,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAQ9C;IAED,8GAA8G;IAC9G,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQpC;IAED,2CAA2C;IAC3C,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAEpB;IAED,gEAAgE;IAChE,YAAY,IAAI,EAAE,CAMjB;IAED,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAI7B;IAED,uGAAuG;IACvG,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAUlD;CACF"}
@@ -0,0 +1,78 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ /** In-memory store for ephemeral arrays scoped to a single contract call frame. */ export class EphemeralArrayService {
3
+ /**
4
+ * Maps a slot to the elements of the array stored at that slot. Each element is a serialized representation of
5
+ * the original type.
6
+ */ #arrays = new Map();
7
+ /** Returns all elements in the array, or an empty array if uninitialized. */ readArrayAt(slot) {
8
+ return this.#arrays.get(slot.toString()) ?? [];
9
+ }
10
+ #setArray(slot, array) {
11
+ this.#arrays.set(slot.toString(), array);
12
+ }
13
+ /** Returns the number of elements in the array at the given slot. */ len(slot) {
14
+ return this.readArrayAt(slot).length;
15
+ }
16
+ /** Appends an element to the array and returns the new length. */ push(slot, elements) {
17
+ const array = this.readArrayAt(slot);
18
+ array.push(elements);
19
+ this.#setArray(slot, array);
20
+ return array.length;
21
+ }
22
+ /** Removes and returns the last element. Throws if empty. */ pop(slot) {
23
+ const array = this.readArrayAt(slot);
24
+ if (array.length === 0) {
25
+ throw new Error(`Ephemeral array at slot ${slot} is empty`);
26
+ }
27
+ const element = array.pop();
28
+ this.#setArray(slot, array);
29
+ return element;
30
+ }
31
+ /** Returns the element at the given index. Throws if out of bounds. */ get(slot, index) {
32
+ const array = this.readArrayAt(slot);
33
+ if (index < 0 || index >= array.length) {
34
+ throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
35
+ }
36
+ return array[index];
37
+ }
38
+ /** Overwrites the element at the given index. Throws if out of bounds. */ set(slot, index, value) {
39
+ const array = this.readArrayAt(slot);
40
+ if (index < 0 || index >= array.length) {
41
+ throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
42
+ }
43
+ array[index] = value;
44
+ }
45
+ /** Removes the element at the given index, shifting subsequent elements backward. Throws if out of bounds. */ remove(slot, index) {
46
+ const array = this.readArrayAt(slot);
47
+ if (index < 0 || index >= array.length) {
48
+ throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
49
+ }
50
+ array.splice(index, 1);
51
+ }
52
+ /** Removes all elements from the array. */ clear(slot) {
53
+ this.#arrays.delete(slot.toString());
54
+ }
55
+ /** Allocates a fresh, unused slot for a new ephemeral array. */ allocateSlot() {
56
+ let slot;
57
+ do {
58
+ slot = Fr.random();
59
+ }while (this.#arrays.has(slot.toString()))
60
+ return slot;
61
+ }
62
+ /** Creates a new ephemeral array pre-populated with the given elements and returns its slot. */ newArray(elements) {
63
+ const slot = this.allocateSlot();
64
+ this.#setArray(slot, elements);
65
+ return slot;
66
+ }
67
+ /** Copies `count` elements from the source array to the destination array (overwrites destination). */ copy(srcSlot, dstSlot, count) {
68
+ const srcArray = this.readArrayAt(srcSlot);
69
+ if (count > srcArray.length) {
70
+ throw new Error(`Cannot copy ${count} elements from ephemeral array of length ${srcArray.length} at slot ${srcSlot}`);
71
+ }
72
+ // Deep copy the elements to avoid aliasing
73
+ const copied = srcArray.slice(0, count).map((el)=>[
74
+ ...el
75
+ ]);
76
+ this.#setArray(dstSlot, copied);
77
+ }
78
+ }
@@ -1,6 +1,6 @@
1
- import { ExtendedDirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
1
+ import { ExtendedDirectionalAppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
2
2
  /**
3
- * A map that stores the tagging index for a given extended directional app tagging secret.
3
+ * A map that stores the tagging index range for a given extended directional app tagging secret.
4
4
  * Note: The directional app tagging secret is unique for a (sender, recipient, contract) tuple while the direction
5
5
  * of sender -> recipient matters.
6
6
  */
@@ -9,8 +9,8 @@ export declare class ExecutionTaggingIndexCache {
9
9
  getLastUsedIndex(secret: ExtendedDirectionalAppTaggingSecret): number | undefined;
10
10
  setLastUsedIndex(secret: ExtendedDirectionalAppTaggingSecret, index: number): void;
11
11
  /**
12
- * Returns the pre-tags that were used in this execution (and that need to be stored in the db).
12
+ * Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
13
13
  */
14
- getUsedPreTags(): PreTag[];
14
+ getUsedTaggingIndexRanges(): TaggingIndexRange[];
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEY7Ozs7R0FJRztBQUNILHFCQUFhLDBCQUEwQjtJQUNyQyxPQUFPLENBQUMsZUFBZSxDQUFrQztJQUVsRCxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsbUNBQW1DLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FFdkY7SUFFTSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsbUNBQW1DLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFNakY7SUFFRDs7T0FFRztJQUNJLGNBQWMsSUFBSSxNQUFNLEVBQUUsQ0FLaEM7Q0FDRiJ9
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLEtBQUssaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRzs7OztHQUlHO0FBQ0gscUJBQWEsMEJBQTBCO0lBQ3JDLE9BQU8sQ0FBQyxlQUFlLENBQXlFO0lBRXpGLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxtQ0FBbUMsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUV2RjtJQUVNLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxtQ0FBbUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxRQVVqRjtJQUVEOztPQUVHO0lBQ0kseUJBQXlCLElBQUksaUJBQWlCLEVBQUUsQ0FNdEQ7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"execution_tagging_index_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_tagging_index_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEtF;;;;GAIG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,eAAe,CAAkC;IAElD,gBAAgB,CAAC,MAAM,EAAE,mCAAmC,GAAG,MAAM,GAAG,SAAS,CAEvF;IAEM,gBAAgB,CAAC,MAAM,EAAE,mCAAmC,EAAE,KAAK,EAAE,MAAM,QAMjF;IAED;;OAEG;IACI,cAAc,IAAI,MAAM,EAAE,CAKhC;CACF"}
1
+ {"version":3,"file":"execution_tagging_index_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_tagging_index_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEjG;;;;GAIG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,eAAe,CAAyE;IAEzF,gBAAgB,CAAC,MAAM,EAAE,mCAAmC,GAAG,MAAM,GAAG,SAAS,CAEvF;IAEM,gBAAgB,CAAC,MAAM,EAAE,mCAAmC,EAAE,KAAK,EAAE,MAAM,QAUjF;IAED;;OAEG;IACI,yBAAyB,IAAI,iBAAiB,EAAE,CAMtD;CACF"}