@aztec/pxe 0.0.1-commit.29c6b1a3 → 0.0.1-commit.2d9cb6034

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 (237) hide show
  1. package/dest/block_synchronizer/block_synchronizer.d.ts +5 -3
  2. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  3. package/dest/block_synchronizer/block_synchronizer.js +15 -3
  4. package/dest/config/index.d.ts +2 -2
  5. package/dest/config/index.d.ts.map +1 -1
  6. package/dest/config/index.js +1 -1
  7. package/dest/config/package_info.js +1 -1
  8. package/dest/contract_function_simulator/contract_function_simulator.d.ts +60 -31
  9. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  10. package/dest/contract_function_simulator/contract_function_simulator.js +201 -74
  11. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
  12. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  13. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
  14. package/dest/contract_function_simulator/index.d.ts +2 -1
  15. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  16. package/dest/contract_function_simulator/index.js +1 -0
  17. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -5
  18. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -9
  20. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
  21. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  22. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -3
  23. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -6
  24. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +5 -10
  26. package/dest/contract_function_simulator/oracle/interfaces.d.ts +50 -45
  27. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  29. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  30. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +38 -0
  31. package/dest/contract_function_simulator/oracle/oracle.d.ts +64 -44
  32. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/oracle/oracle.js +211 -109
  34. package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
  35. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +53 -79
  36. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +109 -87
  38. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +100 -57
  39. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +243 -128
  41. package/dest/contract_logging.d.ts +27 -0
  42. package/dest/contract_logging.d.ts.map +1 -0
  43. package/dest/contract_logging.js +38 -0
  44. package/dest/contract_sync/contract_sync_service.d.ts +44 -0
  45. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  46. package/dest/contract_sync/contract_sync_service.js +104 -0
  47. package/dest/contract_sync/helpers.d.ts +28 -0
  48. package/dest/contract_sync/helpers.d.ts.map +1 -0
  49. package/dest/contract_sync/{index.js → helpers.js} +19 -13
  50. package/dest/debug/pxe_debug_utils.d.ts +14 -10
  51. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  52. package/dest/debug/pxe_debug_utils.js +16 -15
  53. package/dest/entrypoints/client/bundle/index.d.ts +3 -1
  54. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  55. package/dest/entrypoints/client/bundle/index.js +2 -0
  56. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  57. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  58. package/dest/entrypoints/client/bundle/utils.js +21 -7
  59. package/dest/entrypoints/client/lazy/index.d.ts +3 -1
  60. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  61. package/dest/entrypoints/client/lazy/index.js +2 -0
  62. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  63. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  64. package/dest/entrypoints/client/lazy/utils.js +22 -8
  65. package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
  66. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  67. package/dest/entrypoints/server/index.d.ts +3 -2
  68. package/dest/entrypoints/server/index.d.ts.map +1 -1
  69. package/dest/entrypoints/server/index.js +2 -1
  70. package/dest/entrypoints/server/utils.d.ts +1 -1
  71. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  72. package/dest/entrypoints/server/utils.js +28 -9
  73. package/dest/events/event_service.d.ts +5 -5
  74. package/dest/events/event_service.d.ts.map +1 -1
  75. package/dest/events/event_service.js +20 -9
  76. package/dest/job_coordinator/job_coordinator.d.ts +3 -2
  77. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
  78. package/dest/job_coordinator/job_coordinator.js +3 -2
  79. package/dest/logs/log_service.d.ts +9 -8
  80. package/dest/logs/log_service.d.ts.map +1 -1
  81. package/dest/logs/log_service.js +46 -54
  82. package/dest/messages/message_context_service.d.ts +17 -0
  83. package/dest/messages/message_context_service.d.ts.map +1 -0
  84. package/dest/messages/message_context_service.js +36 -0
  85. package/dest/notes/note_service.d.ts +7 -8
  86. package/dest/notes/note_service.d.ts.map +1 -1
  87. package/dest/notes/note_service.js +23 -14
  88. package/dest/notes_filter.d.ts +24 -0
  89. package/dest/notes_filter.d.ts.map +1 -0
  90. package/dest/notes_filter.js +4 -0
  91. package/dest/oracle_version.d.ts +3 -3
  92. package/dest/oracle_version.d.ts.map +1 -1
  93. package/dest/oracle_version.js +3 -3
  94. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  95. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  96. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  97. package/dest/private_kernel/hints/index.d.ts +1 -1
  98. package/dest/private_kernel/hints/index.js +1 -1
  99. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  100. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  101. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +129 -68
  102. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  103. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  104. package/dest/private_kernel/hints/test_utils.js +203 -0
  105. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  106. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  107. package/dest/private_kernel/private_kernel_execution_prover.js +21 -13
  108. package/dest/private_kernel/private_kernel_oracle.d.ts +6 -2
  109. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  110. package/dest/private_kernel/private_kernel_oracle.js +7 -3
  111. package/dest/pxe.d.ts +73 -24
  112. package/dest/pxe.d.ts.map +1 -1
  113. package/dest/pxe.js +130 -76
  114. package/dest/storage/address_store/address_store.d.ts +1 -1
  115. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  116. package/dest/storage/address_store/address_store.js +12 -11
  117. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
  118. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  119. package/dest/storage/anchor_block_store/anchor_block_store.js +8 -1
  120. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  121. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  122. package/dest/storage/capsule_store/capsule_service.js +50 -0
  123. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  124. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  125. package/dest/storage/capsule_store/capsule_store.js +39 -36
  126. package/dest/storage/capsule_store/index.d.ts +2 -1
  127. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  128. package/dest/storage/capsule_store/index.js +1 -0
  129. package/dest/storage/contract_store/contract_store.d.ts +42 -15
  130. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  131. package/dest/storage/contract_store/contract_store.js +157 -72
  132. package/dest/storage/metadata.d.ts +1 -1
  133. package/dest/storage/metadata.js +1 -1
  134. package/dest/storage/note_store/note_store.d.ts +13 -3
  135. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  136. package/dest/storage/note_store/note_store.js +147 -107
  137. package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
  138. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  139. package/dest/storage/private_event_store/private_event_store.js +84 -61
  140. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  141. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  142. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  143. package/dest/storage/tagging_store/recipient_tagging_store.js +31 -19
  144. package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
  145. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
  146. package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
  147. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  148. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  149. package/dest/storage/tagging_store/sender_tagging_store.js +233 -137
  150. package/dest/tagging/get_all_logs_by_tags.d.ts +1 -1
  151. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  152. package/dest/tagging/get_all_logs_by_tags.js +17 -3
  153. package/dest/tagging/index.d.ts +3 -3
  154. package/dest/tagging/index.d.ts.map +1 -1
  155. package/dest/tagging/index.js +1 -1
  156. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -5
  157. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  158. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +7 -7
  159. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  160. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +6 -7
  161. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  162. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +12 -11
  163. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -8
  164. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  165. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +13 -7
  166. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  167. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  168. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  169. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -7
  170. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  171. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +36 -24
  172. package/package.json +25 -16
  173. package/src/block_synchronizer/block_synchronizer.ts +27 -12
  174. package/src/config/index.ts +1 -1
  175. package/src/config/package_info.ts +1 -1
  176. package/src/contract_function_simulator/contract_function_simulator.ts +360 -133
  177. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
  178. package/src/contract_function_simulator/index.ts +1 -0
  179. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +8 -8
  180. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
  181. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -9
  182. package/src/contract_function_simulator/oracle/interfaces.ts +69 -60
  183. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +98 -0
  184. package/src/contract_function_simulator/oracle/oracle.ts +245 -144
  185. package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
  186. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +135 -184
  187. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +410 -145
  188. package/src/contract_logging.ts +52 -0
  189. package/src/contract_sync/contract_sync_service.ts +170 -0
  190. package/src/contract_sync/{index.ts → helpers.ts} +22 -22
  191. package/src/debug/pxe_debug_utils.ts +48 -18
  192. package/src/entrypoints/client/bundle/index.ts +2 -0
  193. package/src/entrypoints/client/bundle/utils.ts +16 -15
  194. package/src/entrypoints/client/lazy/index.ts +2 -0
  195. package/src/entrypoints/client/lazy/utils.ts +17 -15
  196. package/src/entrypoints/pxe_creation_options.ts +2 -1
  197. package/src/entrypoints/server/index.ts +2 -1
  198. package/src/entrypoints/server/utils.ts +22 -26
  199. package/src/events/event_service.ts +21 -10
  200. package/src/job_coordinator/job_coordinator.ts +4 -3
  201. package/src/logs/log_service.ts +87 -79
  202. package/src/messages/message_context_service.ts +44 -0
  203. package/src/notes/note_service.ts +24 -15
  204. package/src/notes_filter.ts +24 -0
  205. package/src/oracle_version.ts +3 -3
  206. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  207. package/src/private_kernel/hints/index.ts +1 -1
  208. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
  209. package/src/private_kernel/hints/test_utils.ts +325 -0
  210. package/src/private_kernel/private_kernel_execution_prover.ts +25 -15
  211. package/src/private_kernel/private_kernel_oracle.ts +7 -7
  212. package/src/pxe.ts +242 -129
  213. package/src/storage/address_store/address_store.ts +15 -15
  214. package/src/storage/anchor_block_store/anchor_block_store.ts +8 -0
  215. package/src/storage/capsule_store/capsule_service.ts +90 -0
  216. package/src/storage/capsule_store/capsule_store.ts +42 -34
  217. package/src/storage/capsule_store/index.ts +1 -0
  218. package/src/storage/contract_store/contract_store.ts +186 -76
  219. package/src/storage/metadata.ts +1 -1
  220. package/src/storage/note_store/note_store.ts +166 -132
  221. package/src/storage/private_event_store/private_event_store.ts +102 -81
  222. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  223. package/src/storage/tagging_store/recipient_tagging_store.ts +38 -24
  224. package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
  225. package/src/storage/tagging_store/sender_tagging_store.ts +287 -156
  226. package/src/tagging/get_all_logs_by_tags.ts +28 -4
  227. package/src/tagging/index.ts +2 -2
  228. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +7 -10
  229. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  230. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +10 -15
  231. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +23 -10
  232. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  233. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +27 -26
  234. package/dest/contract_sync/index.d.ts +0 -23
  235. package/dest/contract_sync/index.d.ts.map +0 -1
  236. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  237. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
@@ -1,33 +1,37 @@
1
1
  import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
2
2
  import { BBLazyPrivateKernelProver } from '@aztec/bb-prover/client/lazy';
3
- import { randomBytes } from '@aztec/foundation/crypto/random';
4
3
  import { createLogger } from '@aztec/foundation/log';
5
4
  import { createStore } from '@aztec/kv-store/indexeddb';
6
5
  import { LazyProtocolContractsProvider } from '@aztec/protocol-contracts/providers/lazy';
7
6
  import { WASMSimulator } from '@aztec/simulator/client';
8
7
  import { PXE } from '../../../pxe.js';
8
+ import { PXE_DATA_SCHEMA_VERSION } from '../../../storage/metadata.js';
9
9
  /**
10
10
  * Create and start an PXE instance with the given AztecNode.
11
11
  * Returns a Promise that resolves to the started PXE instance.
12
12
  *
13
13
  * @param aztecNode - The AztecNode instance to be used by the server.
14
14
  * @param config - The PXE Config to use
15
- * @param
15
+ * @param options - (Optional) Optional information for creating an PXE.
16
16
  * @returns A Promise that resolves to the started PXE instance.
17
17
  */ export async function createPXE(aztecNode, config, options = {
18
18
  loggers: {}
19
19
  }) {
20
- const logSuffix = typeof options.useLogSuffix === 'boolean' ? options.useLogSuffix ? randomBytes(3).toString('hex') : undefined : options.useLogSuffix;
20
+ const actor = options.loggerActorLabel;
21
21
  const l1Contracts = await aztecNode.getL1ContractAddresses();
22
22
  const configWithContracts = {
23
23
  ...config,
24
24
  l1Contracts
25
25
  };
26
26
  const loggers = options.loggers ?? {};
27
- const storeLogger = loggers.store ? loggers.store : createLogger('pxe:data:idb' + (logSuffix ? `:${logSuffix}` : ''));
28
- const store = options.store ?? await createStore('pxe_data', configWithContracts, storeLogger);
27
+ const storeLogger = loggers.store ?? createLogger('pxe:data:idb', {
28
+ actor
29
+ });
30
+ const store = options.store ?? await createStore('pxe_data', configWithContracts, PXE_DATA_SCHEMA_VERSION, storeLogger);
29
31
  const simulator = options.simulator ?? new WASMSimulator();
30
- const proverLogger = loggers.prover ? loggers.prover : createLogger('pxe:bb:wasm:bundle' + (logSuffix ? `:${logSuffix}` : ''));
32
+ const proverLogger = loggers.prover ?? createLogger('pxe:bb:wasm:bundle', {
33
+ actor
34
+ });
31
35
  let prover;
32
36
  if (options.proverOrOptions instanceof BBPrivateKernelProver) {
33
37
  prover = options.proverOrOptions;
@@ -38,7 +42,17 @@ import { PXE } from '../../../pxe.js';
38
42
  });
39
43
  }
40
44
  const protocolContractsProvider = new LazyProtocolContractsProvider();
41
- const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
42
- const pxe = await PXE.create(aztecNode, store, prover, simulator, protocolContractsProvider, config, pxeLogger);
45
+ const pxeLogger = loggers.pxe ?? createLogger('pxe:service', {
46
+ actor
47
+ });
48
+ const pxe = await PXE.create({
49
+ node: aztecNode,
50
+ store,
51
+ proofCreator: prover,
52
+ simulator,
53
+ protocolContractsProvider,
54
+ config,
55
+ loggerOrSuffix: pxeLogger
56
+ });
43
57
  return pxe;
44
58
  }
@@ -9,9 +9,10 @@ export type PXECreationOptions = {
9
9
  pxe?: Logger;
10
10
  prover?: Logger;
11
11
  };
12
- useLogSuffix?: boolean | string;
12
+ /** Actor label to include in log output (e.g., 'pxe-0', 'pxe-test'). */
13
+ loggerActorLabel?: string;
13
14
  proverOrOptions?: PrivateKernelProver | BBPrivateKernelProverOptions;
14
15
  store?: AztecAsyncKVStore;
15
16
  simulator?: CircuitSimulator;
16
17
  };
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX2NyZWF0aW9uX29wdGlvbnMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRyeXBvaW50cy9weGVfY3JlYXRpb25fb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTNFLE1BQU0sTUFBTSxrQkFBa0IsR0FBRztJQUMvQixPQUFPLENBQUMsRUFBRTtRQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLENBQUM7SUFDNUQsWUFBWSxDQUFDLEVBQUUsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUNoQyxlQUFlLENBQUMsRUFBRSxtQkFBbUIsR0FBRyw0QkFBNEIsQ0FBQztJQUNyRSxLQUFLLENBQUMsRUFBRSxpQkFBaUIsQ0FBQztJQUMxQixTQUFTLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztDQUM5QixDQUFDIn0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX2NyZWF0aW9uX29wdGlvbnMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRyeXBvaW50cy9weGVfY3JlYXRpb25fb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTNFLE1BQU0sTUFBTSxrQkFBa0IsR0FBRztJQUMvQixPQUFPLENBQUMsRUFBRTtRQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLENBQUM7SUFDNUQsd0VBQXdFO0lBQ3hFLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzFCLGVBQWUsQ0FBQyxFQUFFLG1CQUFtQixHQUFHLDRCQUE0QixDQUFDO0lBQ3JFLEtBQUssQ0FBQyxFQUFFLGlCQUFpQixDQUFDO0lBQzFCLFNBQVMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0NBQzlCLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"pxe_creation_options.d.ts","sourceRoot":"","sources":["../../src/entrypoints/pxe_creation_options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,mBAAmB,GAAG,4BAA4B,CAAC;IACrE,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B,CAAC"}
1
+ {"version":3,"file":"pxe_creation_options.d.ts","sourceRoot":"","sources":["../../src/entrypoints/pxe_creation_options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,mBAAmB,GAAG,4BAA4B,CAAC;IACrE,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B,CAAC"}
@@ -1,3 +1,4 @@
1
+ export * from '../../notes_filter.js';
1
2
  export * from '../../pxe.js';
2
3
  export * from '../../config/index.js';
3
4
  export * from '../../error_enriching.js';
@@ -7,5 +8,5 @@ export { NoteService } from '../../notes/note_service.js';
7
8
  export { ORACLE_VERSION } from '../../oracle_version.js';
8
9
  export { type PXECreationOptions } from '../pxe_creation_options.js';
9
10
  export { JobCoordinator } from '../../job_coordinator/job_coordinator.js';
10
- export { syncState } from '../../contract_sync/index.js';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9zZXJ2ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxZQUFZLENBQUM7QUFDM0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUMifQ==
11
+ export { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9zZXJ2ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLFlBQVksQ0FBQztBQUMzQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC"}
@@ -1,3 +1,4 @@
1
+ export * from '../../notes_filter.js';
1
2
  export * from '../../pxe.js';
2
3
  export * from '../../config/index.js';
3
4
  export * from '../../error_enriching.js';
@@ -6,4 +7,4 @@ export * from './utils.js';
6
7
  export { NoteService } from '../../notes/note_service.js';
7
8
  export { ORACLE_VERSION } from '../../oracle_version.js';
8
9
  export { JobCoordinator } from '../../job_coordinator/job_coordinator.js';
9
- export { syncState } from '../../contract_sync/index.js';
10
+ export { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
@@ -5,4 +5,4 @@ import type { PXECreationOptions } from '../pxe_creation_options.js';
5
5
  type PXEConfigWithoutDefaults = Omit<PXEConfig, 'l1Contracts' | 'l1ChainId' | 'l2BlockBatchSize' | 'rollupVersion'>;
6
6
  export declare function createPXE(aztecNode: AztecNode, config: PXEConfigWithoutDefaults, options?: PXECreationOptions): Promise<PXE>;
7
7
  export {};
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9zZXJ2ZXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuQyxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJFLEtBQUssd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEdBQUcsV0FBVyxHQUFHLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxDQUFDO0FBRXBILHdCQUFzQixTQUFTLENBQzdCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSx3QkFBd0IsRUFDaEMsT0FBTyxHQUFFLGtCQUFvQyxnQkFzRDlDIn0=
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9zZXJ2ZXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuQyxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJFLEtBQUssd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEdBQUcsV0FBVyxHQUFHLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxDQUFDO0FBRXBILHdCQUFzQixTQUFTLENBQzdCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSx3QkFBd0IsRUFDaEMsT0FBTyxHQUFFLGtCQUFvQyxnQkFtRDlDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/server/utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,KAAK,wBAAwB,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,WAAW,GAAG,kBAAkB,GAAG,eAAe,CAAC,CAAC;AAEpH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,wBAAwB,EAChC,OAAO,GAAE,kBAAoC,gBAsD9C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/server/utils.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,KAAK,wBAAwB,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,WAAW,GAAG,kBAAkB,GAAG,eAAe,CAAC,CAAC;AAEpH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,wBAAwB,EAChC,OAAO,GAAE,kBAAoC,gBAmD9C"}
@@ -1,6 +1,5 @@
1
1
  import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
2
2
  import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
3
- import { randomBytes } from '@aztec/foundation/crypto/random';
4
3
  import { createLogger } from '@aztec/foundation/log';
5
4
  import { createStore } from '@aztec/kv-store/lmdb-v2';
6
5
  import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
@@ -11,9 +10,15 @@ import { PXE_DATA_SCHEMA_VERSION } from '../../storage/index.js';
11
10
  export async function createPXE(aztecNode, config, options = {
12
11
  loggers: {}
13
12
  }) {
14
- const recorder = process.env.CIRCUIT_RECORD_DIR ? new FileCircuitRecorder(process.env.CIRCUIT_RECORD_DIR) : new MemoryCircuitRecorder();
15
- const simulator = new SimulatorRecorderWrapper(new WASMSimulator(), recorder);
16
- const logSuffix = typeof options.useLogSuffix === 'boolean' ? options.useLogSuffix ? randomBytes(3).toString('hex') : undefined : options.useLogSuffix;
13
+ const actor = options.loggerActorLabel;
14
+ const recorderLogger = createLogger('simulator:acvm:recording', {
15
+ actor
16
+ });
17
+ const recorder = process.env.CIRCUIT_RECORD_DIR ? new FileCircuitRecorder(process.env.CIRCUIT_RECORD_DIR, recorderLogger) : new MemoryCircuitRecorder(recorderLogger);
18
+ const simulatorLogger = createLogger('wasm-simulator', {
19
+ actor
20
+ });
21
+ const simulator = new SimulatorRecorderWrapper(new WASMSimulator(simulatorLogger), recorder);
17
22
  const loggers = options.loggers ?? {};
18
23
  const { l1ChainId, l1ContractAddresses: l1Contracts, rollupVersion } = await aztecNode.getNodeInfo();
19
24
  const configWithContracts = {
@@ -24,10 +29,14 @@ export async function createPXE(aztecNode, config, options = {
24
29
  l2BlockBatchSize: 50
25
30
  };
26
31
  if (!options.store) {
27
- const storeLogger = loggers.store ? loggers.store : createLogger('pxe:data:lmdb' + (logSuffix ? `:${logSuffix}` : ''));
28
- options.store = await createStore('pxe_data', PXE_DATA_SCHEMA_VERSION, configWithContracts, storeLogger);
32
+ const storeLogger = loggers.store ?? createLogger('pxe:data:lmdb', {
33
+ actor
34
+ });
35
+ options.store = await createStore('pxe_data', PXE_DATA_SCHEMA_VERSION, configWithContracts, storeLogger.getBindings());
29
36
  }
30
- const proverLogger = loggers.prover ? loggers.prover : createLogger('pxe:bb:native' + (logSuffix ? `:${logSuffix}` : ''));
37
+ const proverLogger = loggers.prover ?? createLogger('pxe:bb:native', {
38
+ actor
39
+ });
31
40
  let prover;
32
41
  if (options.proverOrOptions instanceof BBPrivateKernelProver) {
33
42
  prover = options.proverOrOptions;
@@ -38,7 +47,17 @@ export async function createPXE(aztecNode, config, options = {
38
47
  });
39
48
  }
40
49
  const protocolContractsProvider = new BundledProtocolContractsProvider();
41
- const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
42
- const pxe = await PXE.create(aztecNode, options.store, prover, simulator, protocolContractsProvider, configWithContracts, pxeLogger);
50
+ const pxeLogger = loggers.pxe ?? createLogger('pxe:service', {
51
+ actor
52
+ });
53
+ const pxe = await PXE.create({
54
+ node: aztecNode,
55
+ store: options.store,
56
+ proofCreator: prover,
57
+ simulator,
58
+ protocolContractsProvider,
59
+ config: configWithContracts,
60
+ loggerOrSuffix: pxeLogger
61
+ });
43
62
  return pxe;
44
63
  }
@@ -2,15 +2,15 @@ import type { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { EventSelector } from '@aztec/stdlib/abi';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import type { AztecNode } from '@aztec/stdlib/interfaces/server';
5
- import type { TxHash } from '@aztec/stdlib/tx';
6
- import { AnchorBlockStore } from '../storage/anchor_block_store/anchor_block_store.js';
5
+ import type { BlockHeader, TxHash } from '@aztec/stdlib/tx';
7
6
  import { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
8
7
  export declare class EventService {
9
- private readonly anchorBlockStore;
8
+ private readonly anchorBlockHeader;
10
9
  private readonly aztecNode;
11
10
  private readonly privateEventStore;
12
11
  private readonly jobId;
13
- constructor(anchorBlockStore: AnchorBlockStore, aztecNode: AztecNode, privateEventStore: PrivateEventStore, jobId: string);
12
+ private readonly log;
13
+ constructor(anchorBlockHeader: BlockHeader, aztecNode: AztecNode, privateEventStore: PrivateEventStore, jobId: string, log?: import("@aztec/foundation/log").Logger);
14
14
  validateAndStoreEvent(contractAddress: AztecAddress, selector: EventSelector, randomness: Fr, content: Fr[], eventCommitment: Fr, txHash: TxHash, scope: AztecAddress): Promise<void>;
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V2ZW50cy9ldmVudF9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRTFGLHFCQUFhLFlBQVk7SUFFckIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0I7SUFDakMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBQ2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztJQUp4QixZQUNtQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsU0FBUyxFQUFFLFNBQVMsRUFDcEIsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQ3BDLEtBQUssRUFBRSxNQUFNLEVBQzVCO0lBRVMscUJBQXFCLENBQ2hDLGVBQWUsRUFBRSxZQUFZLEVBQzdCLFFBQVEsRUFBRSxhQUFhLEVBQ3ZCLFVBQVUsRUFBRSxFQUFFLEVBQ2QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUNiLGVBQWUsRUFBRSxFQUFFLEVBQ25CLE1BQU0sRUFBRSxNQUFNLEVBQ2QsS0FBSyxFQUFFLFlBQVksR0FDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQTZDZjtDQUNGIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V2ZW50cy9ldmVudF9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUUxRixxQkFBYSxZQUFZO0lBRXJCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBQ2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQjtJQUNsQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7SUFDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0lBTHRCLFlBQ21CLGlCQUFpQixFQUFFLFdBQVcsRUFDOUIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQ3BDLEtBQUssRUFBRSxNQUFNLEVBQ2IsR0FBRyx5Q0FBb0MsRUFDdEQ7SUFFUyxxQkFBcUIsQ0FDaEMsZUFBZSxFQUFFLFlBQVksRUFDN0IsUUFBUSxFQUFFLGFBQWEsRUFDdkIsVUFBVSxFQUFFLEVBQUUsRUFDZCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQ2IsZUFBZSxFQUFFLEVBQUUsRUFDbkIsTUFBTSxFQUFFLE1BQU0sRUFDZCxLQUFLLEVBQUUsWUFBWSxHQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLENBdURmO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"event_service.d.ts","sourceRoot":"","sources":["../../src/events/event_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAE1F,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,YACmB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,MAAM,EAC5B;IAES,qBAAqB,CAChC,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,EAAE,EACd,OAAO,EAAE,EAAE,EAAE,EACb,eAAe,EAAE,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CA6Cf;CACF"}
1
+ {"version":3,"file":"event_service.d.ts","sourceRoot":"","sources":["../../src/events/event_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAE1F,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,YACmB,iBAAiB,EAAE,WAAW,EAC9B,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,MAAM,EACb,GAAG,yCAAoC,EACtD;IAES,qBAAqB,CAChC,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,EAAE,EACd,OAAO,EAAE,EAAE,EAAE,EACb,eAAe,EAAE,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAuDf;CACF"}
@@ -1,36 +1,47 @@
1
+ import { createLogger } from '@aztec/foundation/log';
1
2
  import { siloNullifier } from '@aztec/stdlib/hash';
2
3
  export class EventService {
3
- anchorBlockStore;
4
+ anchorBlockHeader;
4
5
  aztecNode;
5
6
  privateEventStore;
6
7
  jobId;
7
- constructor(anchorBlockStore, aztecNode, privateEventStore, jobId){
8
- this.anchorBlockStore = anchorBlockStore;
8
+ log;
9
+ constructor(anchorBlockHeader, aztecNode, privateEventStore, jobId, log = createLogger('pxe:event_service')){
10
+ this.anchorBlockHeader = anchorBlockHeader;
9
11
  this.aztecNode = aztecNode;
10
12
  this.privateEventStore = privateEventStore;
11
13
  this.jobId = jobId;
14
+ this.log = log;
12
15
  }
13
16
  async validateAndStoreEvent(contractAddress, selector, randomness, content, eventCommitment, txHash, scope) {
14
17
  // While using 'latest' block number would be fine for private events since they cannot be accessed from Aztec.nr
15
18
  // (and thus we're less concerned about being ahead of the synced block), we use the synced block number to
16
19
  // maintain consistent behavior in the PXE. Additionally, events should never be ahead of the synced block here
17
20
  // since `fetchTaggedLogs` only processes logs up to the synced block.
18
- const [anchorBlockHeader, siloedEventCommitment, txEffect] = await Promise.all([
19
- this.anchorBlockStore.getBlockHeader(),
21
+ const [siloedEventCommitment, txEffect] = await Promise.all([
20
22
  siloNullifier(contractAddress, eventCommitment),
21
23
  this.aztecNode.getTxEffect(txHash)
22
24
  ]);
23
- const anchorBlockNumber = anchorBlockHeader.getBlockNumber();
25
+ const anchorBlockNumber = this.anchorBlockHeader.getBlockNumber();
24
26
  if (!txEffect) {
25
- throw new Error(`Could not find tx effect for tx hash ${txHash}`);
27
+ // We error out instead of just logging a warning and skipping the event because this would indicate a bug. This
28
+ // is because the node has already served info about this tx either when obtaining the log (TxScopedL2Log contain
29
+ // tx info) or when getting metadata for the offchain message (before the message got passed to `process_log`).
30
+ throw new Error(`Could not find tx effect for tx hash ${txHash} when processing an event.`);
26
31
  }
27
32
  if (txEffect.l2BlockNumber > anchorBlockNumber) {
28
- throw new Error(`Could not find tx effect for tx hash ${txHash} as of block number ${anchorBlockNumber}`);
33
+ // We should never process a message from a tx past the anchor block. If we got here, a preprocessing step made
34
+ // a mistake.
35
+ throw new Error(`Obtained a newer tx effect for ${txHash} for an event validation request than the anchor block ${anchorBlockNumber}. This is a bug as smart contracts should not issue event validation requests for events from blocks newer than the anchor block.`);
29
36
  }
30
37
  // Find the index of the event commitment in the nullifiers array to determine event ordering within the tx
31
38
  const eventIndexInTx = txEffect.data.nullifiers.findIndex((n)=>n.equals(siloedEventCommitment));
32
39
  if (eventIndexInTx === -1) {
33
- throw new Error(`Event commitment ${eventCommitment} (siloed as ${siloedEventCommitment}) is not present in tx ${txHash}`);
40
+ // Unlike in NoteService, this might not be a bug since the commitment hasn't been verified yet in the message
41
+ // processing pipeline. A malformed or malicious message could trigger this condition. Because of this we don't
42
+ // error out and we just show a warning.
43
+ this.log.warn(`Skipping event whose commitment is not present in its tx. siloedEventCommitment=${siloedEventCommitment}, contract=${contractAddress}, selector=${selector}, eventCommitment=${eventCommitment}, txHash=${txHash}`);
44
+ return;
34
45
  }
35
46
  return this.privateEventStore.storePrivateEventLog(selector, randomness, content, siloedEventCommitment, {
36
47
  contractAddress,
@@ -1,3 +1,4 @@
1
+ import { type LoggerBindings } from '@aztec/foundation/log';
1
2
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
2
3
  /**
3
4
  * Interface that stores must implement to support staged writes.
@@ -38,7 +39,7 @@ export declare class JobCoordinator {
38
39
  private readonly log;
39
40
  /** The underlying KV store */
40
41
  kvStore: AztecAsyncKVStore;
41
- constructor(kvStore: AztecAsyncKVStore);
42
+ constructor(kvStore: AztecAsyncKVStore, bindings?: LoggerBindings);
42
43
  /**
43
44
  * Registers a staged store.
44
45
  * Must be called during initialization for all stores that need staging support.
@@ -71,4 +72,4 @@ export declare class JobCoordinator {
71
72
  */
72
73
  hasJobInProgress(): boolean;
73
74
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iX2Nvb3JkaW5hdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvam9iX2Nvb3JkaW5hdG9yL2pvYl9jb29yZGluYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpEOztHQUVHO0FBQ0gsTUFBTSxXQUFXLFdBQVc7SUFDMUIsK0ZBQStGO0lBQy9GLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBRTNCOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXJDOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQzdDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gscUJBQWEsY0FBYzs7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQXVDO0lBRTNELDhCQUE4QjtJQUM5QixPQUFPLEVBQUUsaUJBQWlCLENBQUM7SUFLM0IsWUFBWSxPQUFPLEVBQUUsaUJBQWlCLEVBRXJDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLEtBQUssRUFBRSxXQUFXLEdBQUcsSUFBSSxDQU10QztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBSTFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsSUFBSSxNQUFNLENBYWpCO0lBRUQ7Ozs7T0FJRztJQUNHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FtQjVDO0lBRUQ7Ozs7T0FJRztJQUNHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FjM0M7SUFFRDs7T0FFRztJQUNILGdCQUFnQixJQUFJLE9BQU8sQ0FFMUI7Q0FDRiJ9
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iX2Nvb3JkaW5hdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvam9iX2Nvb3JkaW5hdG9yL2pvYl9jb29yZGluYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDdkYsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RDs7R0FFRztBQUNILE1BQU0sV0FBVyxXQUFXO0lBQzFCLCtGQUErRjtJQUMvRixRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUUzQjs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVyQzs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUM3QztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILHFCQUFhLGNBQWM7O0lBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFTO0lBRTdCLDhCQUE4QjtJQUM5QixPQUFPLEVBQUUsaUJBQWlCLENBQUM7SUFLM0IsWUFBWSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUdoRTtJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNdEM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUkxQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLElBQUksTUFBTSxDQWFqQjtJQUVEOzs7O09BSUc7SUFDRyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBbUI1QztJQUVEOzs7O09BSUc7SUFDRyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBYzNDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsSUFBSSxPQUFPLENBRTFCO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"job_coordinator.d.ts","sourceRoot":"","sources":["../../src/job_coordinator/job_coordinator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAc;;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuC;IAE3D,8BAA8B;IAC9B,OAAO,EAAE,iBAAiB,CAAC;IAK3B,YAAY,OAAO,EAAE,iBAAiB,EAErC;IAED;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAMtC;IAED;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAI1C;IAED;;;;OAIG;IACH,QAAQ,IAAI,MAAM,CAajB;IAED;;;;OAIG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB5C;IAED;;;;OAIG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc3C;IAED;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAE1B;CACF"}
1
+ {"version":3,"file":"job_coordinator.d.ts","sourceRoot":"","sources":["../../src/job_coordinator/job_coordinator.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAc;;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,8BAA8B;IAC9B,OAAO,EAAE,iBAAiB,CAAC;IAK3B,YAAY,OAAO,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,cAAc,EAGhE;IAED;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAMtC;IAED;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAI1C;IAED;;;;OAIG;IACH,QAAQ,IAAI,MAAM,CAajB;IAED;;;;OAIG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB5C;IAED;;;;OAIG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc3C;IAED;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAE1B;CACF"}
@@ -13,12 +13,13 @@ import { createLogger } from '@aztec/foundation/log';
13
13
  * orchestrate concurrent jobs. Right now it doesn't make a difference because we're
14
14
  * using a job queue with concurrency=1.
15
15
  */ export class JobCoordinator {
16
- log = createLogger('pxe:job_coordinator');
16
+ log;
17
17
  /** The underlying KV store */ kvStore;
18
18
  #currentJobId;
19
19
  #stores = new Map();
20
- constructor(kvStore){
20
+ constructor(kvStore, bindings){
21
21
  this.kvStore = kvStore;
22
+ this.log = createLogger('pxe:job_coordinator', bindings);
22
23
  }
23
24
  /**
24
25
  * Registers a staged store.
@@ -1,27 +1,28 @@
1
1
  import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { type LoggerBindings } from '@aztec/foundation/log';
2
3
  import type { KeyStore } from '@aztec/key-store';
3
4
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
5
  import type { AztecNode } from '@aztec/stdlib/interfaces/server';
6
+ import type { BlockHeader } from '@aztec/stdlib/tx';
5
7
  import type { LogRetrievalRequest } from '../contract_function_simulator/noir-structs/log_retrieval_request.js';
6
8
  import { LogRetrievalResponse } from '../contract_function_simulator/noir-structs/log_retrieval_response.js';
7
9
  import { AddressStore } from '../storage/address_store/address_store.js';
8
- import { AnchorBlockStore } from '../storage/anchor_block_store/anchor_block_store.js';
9
- import { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
10
+ import type { CapsuleService } from '../storage/capsule_store/capsule_service.js';
10
11
  import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
11
12
  import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
12
13
  export declare class LogService {
13
14
  #private;
14
15
  private readonly aztecNode;
15
- private readonly anchorBlockStore;
16
+ private readonly anchorBlockHeader;
16
17
  private readonly keyStore;
17
- private readonly capsuleStore;
18
+ private readonly capsuleService;
18
19
  private readonly recipientTaggingStore;
19
20
  private readonly senderAddressBookStore;
20
21
  private readonly addressStore;
21
22
  private readonly jobId;
22
23
  private log;
23
- constructor(aztecNode: AztecNode, anchorBlockStore: AnchorBlockStore, keyStore: KeyStore, capsuleStore: CapsuleStore, recipientTaggingStore: RecipientTaggingStore, senderAddressBookStore: SenderAddressBookStore, addressStore: AddressStore, jobId: string);
24
- bulkRetrieveLogs(logRetrievalRequests: LogRetrievalRequest[]): Promise<(LogRetrievalResponse | null)[]>;
25
- syncTaggedLogs(contractAddress: AztecAddress, pendingTaggedLogArrayBaseSlot: Fr, scopes?: AztecAddress[]): Promise<void>;
24
+ constructor(aztecNode: AztecNode, anchorBlockHeader: BlockHeader, keyStore: KeyStore, capsuleService: CapsuleService, recipientTaggingStore: RecipientTaggingStore, senderAddressBookStore: SenderAddressBookStore, addressStore: AddressStore, jobId: string, bindings?: LoggerBindings);
25
+ fetchLogsByTag(contractAddress: AztecAddress, logRetrievalRequests: LogRetrievalRequest[]): Promise<(LogRetrievalResponse | null)[]>;
26
+ fetchTaggedLogs(contractAddress: AztecAddress, pendingTaggedLogArrayBaseSlot: Fr, recipient: AztecAddress): Promise<void>;
26
27
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nX3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dzL2xvZ19zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdqRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDekUsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNqRyxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBT3BHLHFCQUFhLFVBQVU7O0lBSW5CLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtJQUNqQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZO0lBQzdCLE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCO0lBQ3RDLE9BQU8sQ0FBQyxRQUFRLENBQUMsc0JBQXNCO0lBQ3ZDLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWTtJQUM3QixPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7SUFWeEIsT0FBTyxDQUFDLEdBQUcsQ0FBK0I7SUFFMUMsWUFDbUIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLFlBQVksRUFBRSxZQUFZLEVBQzFCLHFCQUFxQixFQUFFLHFCQUFxQixFQUM1QyxzQkFBc0IsRUFBRSxzQkFBc0IsRUFDOUMsWUFBWSxFQUFFLFlBQVksRUFDMUIsS0FBSyxFQUFFLE1BQU0sRUFDNUI7SUFFUyxnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FpQm5IO0lBeURZLGNBQWMsQ0FDekIsZUFBZSxFQUFFLFlBQVksRUFDN0IsNkJBQTZCLEVBQUUsRUFBRSxFQUNqQyxNQUFNLENBQUMsRUFBRSxZQUFZLEVBQUUsaUJBMkN4QjtDQWdFRiJ9
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nX3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dzL2xvZ19zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFRakUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDekUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbEYsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNqRyxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBT3BHLHFCQUFhLFVBQVU7O0lBSW5CLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQjtJQUNsQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjO0lBQy9CLE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCO0lBQ3RDLE9BQU8sQ0FBQyxRQUFRLENBQUMsc0JBQXNCO0lBQ3ZDLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWTtJQUM3QixPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7SUFWeEIsT0FBTyxDQUFDLEdBQUcsQ0FBUztJQUVwQixZQUNtQixTQUFTLEVBQUUsU0FBUyxFQUNwQixpQkFBaUIsRUFBRSxXQUFXLEVBQzlCLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLGNBQWMsRUFBRSxjQUFjLEVBQzlCLHFCQUFxQixFQUFFLHFCQUFxQixFQUM1QyxzQkFBc0IsRUFBRSxzQkFBc0IsRUFDOUMsWUFBWSxFQUFFLFlBQVksRUFDMUIsS0FBSyxFQUFFLE1BQU0sRUFDOUIsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUcxQjtJQUVZLGNBQWMsQ0FDekIsZUFBZSxFQUFFLFlBQVksRUFDN0Isb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsR0FDMUMsT0FBTyxDQUFDLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQXVCMUM7SUFxRFksZUFBZSxDQUMxQixlQUFlLEVBQUUsWUFBWSxFQUM3Qiw2QkFBNkIsRUFBRSxFQUFFLEVBQ2pDLFNBQVMsRUFBRSxZQUFZLGlCQStCeEI7Q0F1RUYifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"log_service.d.ts","sourceRoot":"","sources":["../../src/logs/log_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAGjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sEAAsE,CAAC;AAChH,OAAO,EAAE,oBAAoB,EAAE,MAAM,uEAAuE,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAOpG,qBAAa,UAAU;;IAInB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAVxB,OAAO,CAAC,GAAG,CAA+B;IAE1C,YACmB,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,qBAAqB,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EAC5B;IAES,gBAAgB,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,CAiBnH;IAyDY,cAAc,CACzB,eAAe,EAAE,YAAY,EAC7B,6BAA6B,EAAE,EAAE,EACjC,MAAM,CAAC,EAAE,YAAY,EAAE,iBA2CxB;CAgEF"}
1
+ {"version":3,"file":"log_service.d.ts","sourceRoot":"","sources":["../../src/logs/log_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAQjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sEAAsE,CAAC;AAChH,OAAO,EAAE,oBAAoB,EAAE,MAAM,uEAAuE,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAOpG,qBAAa,UAAU;;IAInB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAVxB,OAAO,CAAC,GAAG,CAAS;IAEpB,YACmB,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,WAAW,EAC9B,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EAC9B,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAEY,cAAc,CACzB,eAAe,EAAE,YAAY,EAC7B,oBAAoB,EAAE,mBAAmB,EAAE,GAC1C,OAAO,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,CAuB1C;IAqDY,eAAe,CAC1B,eAAe,EAAE,YAAY,EAC7B,6BAA6B,EAAE,EAAE,EACjC,SAAS,EAAE,YAAY,iBA+BxB;CAuEF"}
@@ -1,44 +1,48 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
2
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- import { DirectionalAppTaggingSecret, PendingTaggedLog, SiloedTag } from '@aztec/stdlib/logs';
3
+ import { ExtendedDirectionalAppTaggingSecret, PendingTaggedLog, SiloedTag } from '@aztec/stdlib/logs';
4
4
  import { LogRetrievalResponse } from '../contract_function_simulator/noir-structs/log_retrieval_response.js';
5
5
  import { getAllPrivateLogsByTags, getAllPublicLogsByTagsFromContract, loadPrivateLogsForSenderRecipientPair } from '../tagging/index.js';
6
6
  export class LogService {
7
7
  aztecNode;
8
- anchorBlockStore;
8
+ anchorBlockHeader;
9
9
  keyStore;
10
- capsuleStore;
10
+ capsuleService;
11
11
  recipientTaggingStore;
12
12
  senderAddressBookStore;
13
13
  addressStore;
14
14
  jobId;
15
15
  log;
16
- constructor(aztecNode, anchorBlockStore, keyStore, capsuleStore, recipientTaggingStore, senderAddressBookStore, addressStore, jobId){
16
+ constructor(aztecNode, anchorBlockHeader, keyStore, capsuleService, recipientTaggingStore, senderAddressBookStore, addressStore, jobId, bindings){
17
17
  this.aztecNode = aztecNode;
18
- this.anchorBlockStore = anchorBlockStore;
18
+ this.anchorBlockHeader = anchorBlockHeader;
19
19
  this.keyStore = keyStore;
20
- this.capsuleStore = capsuleStore;
20
+ this.capsuleService = capsuleService;
21
21
  this.recipientTaggingStore = recipientTaggingStore;
22
22
  this.senderAddressBookStore = senderAddressBookStore;
23
23
  this.addressStore = addressStore;
24
24
  this.jobId = jobId;
25
- this.log = createLogger('log_service');
25
+ this.log = createLogger('pxe:log_service', bindings);
26
26
  }
27
- async bulkRetrieveLogs(logRetrievalRequests) {
27
+ async fetchLogsByTag(contractAddress, logRetrievalRequests) {
28
+ for (const request of logRetrievalRequests){
29
+ if (!contractAddress.equals(request.contractAddress)) {
30
+ throw new Error(`Got a log retrieval request from ${request.contractAddress}, expected ${contractAddress}`);
31
+ }
32
+ }
28
33
  return await Promise.all(logRetrievalRequests.map(async (request)=>{
29
34
  const [publicLog, privateLog] = await Promise.all([
30
35
  this.#getPublicLogByTag(request.tag, request.contractAddress),
31
- this.#getPrivateLogByTag(await SiloedTag.compute(request.tag, request.contractAddress))
36
+ this.#getPrivateLogByTag(await SiloedTag.computeFromTagAndApp(request.tag, request.contractAddress))
32
37
  ]);
33
38
  if (publicLog !== null && privateLog !== null) {
34
- throw new Error(`Found both a public and private log when searching for tag ${request.tag} from contract ${request.contractAddress}`);
39
+ this.log.warn(`Found both a public and private log for tag ${request.tag} from contract ${request.contractAddress}. This may indicate a contract bug. Returning the public log.`);
35
40
  }
36
41
  return publicLog ?? privateLog;
37
42
  }));
38
43
  }
39
44
  async #getPublicLogByTag(tag, contractAddress) {
40
- const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
41
- const anchorBlockHash = await anchorBlockHeader.hash();
45
+ const anchorBlockHash = await this.anchorBlockHeader.hash();
42
46
  const allLogsPerTag = await getAllPublicLogsByTagsFromContract(this.aztecNode, contractAddress, [
43
47
  tag
44
48
  ], anchorBlockHash);
@@ -46,15 +50,13 @@ export class LogService {
46
50
  if (logsForTag.length === 0) {
47
51
  return null;
48
52
  } else if (logsForTag.length > 1) {
49
- // TODO(#11627): handle this case
50
- throw new Error(`Got ${logsForTag.length} logs for tag ${tag} and contract ${contractAddress.toString()}. getPublicLogByTag currently only supports a single log per tag`);
53
+ this.log.warn(`Expected at most 1 public log for tag ${tag} and contract ${contractAddress.toString()}, got ${logsForTag.length}. This may indicate a contract bug. Returning the first log.`);
51
54
  }
52
55
  const scopedLog = logsForTag[0];
53
56
  return new LogRetrievalResponse(scopedLog.logData.slice(1), scopedLog.txHash, scopedLog.noteHashes, scopedLog.firstNullifier);
54
57
  }
55
58
  async #getPrivateLogByTag(siloedTag) {
56
- const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
57
- const anchorBlockHash = await anchorBlockHeader.hash();
59
+ const anchorBlockHash = await this.anchorBlockHeader.hash();
58
60
  const allLogsPerTag = await getAllPrivateLogsByTags(this.aztecNode, [
59
61
  siloedTag
60
62
  ], anchorBlockHash);
@@ -62,39 +64,31 @@ export class LogService {
62
64
  if (logsForTag.length === 0) {
63
65
  return null;
64
66
  } else if (logsForTag.length > 1) {
65
- // TODO(#11627): handle this case
66
- throw new Error(`Got ${logsForTag.length} logs for tag ${siloedTag}. getPrivateLogByTag currently only supports a single log per tag`);
67
+ this.log.warn(`Expected at most 1 private log for tag ${siloedTag}, got ${logsForTag.length}. This may indicate a contract bug. Returning the first log.`);
67
68
  }
68
69
  const scopedLog = logsForTag[0];
69
70
  return new LogRetrievalResponse(scopedLog.logData.slice(1), scopedLog.txHash, scopedLog.noteHashes, scopedLog.firstNullifier);
70
71
  }
71
- async syncTaggedLogs(contractAddress, pendingTaggedLogArrayBaseSlot, scopes) {
72
- this.log.verbose('Searching for tagged logs', {
73
- contract: contractAddress
74
- });
72
+ async fetchTaggedLogs(contractAddress, pendingTaggedLogArrayBaseSlot, recipient) {
73
+ this.log.verbose(`Fetching tagged logs for ${contractAddress.toString()}`);
75
74
  // We only load logs from block up to and including the anchor block number
76
- const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
77
- const anchorBlockNumber = anchorBlockHeader.getBlockNumber();
78
- const anchorBlockHash = await anchorBlockHeader.hash();
79
- // Determine recipients: use scopes if provided, otherwise get all accounts
80
- const recipients = scopes && scopes.length > 0 ? scopes : await this.keyStore.getAccounts();
81
- // For each recipient, fetch secrets, load logs, and store them.
82
- // We run these per-recipient tasks in parallel so that logs are loaded for all recipients concurrently.
83
- await Promise.all(recipients.map(async (recipient)=>{
84
- // Get all secrets for this recipient (one per sender)
85
- const secrets = await this.#getSecretsForSenders(contractAddress, recipient);
86
- // Load logs for all sender-recipient pairs in parallel
87
- const logArrays = await Promise.all(secrets.map((secret)=>loadPrivateLogsForSenderRecipientPair(secret, contractAddress, this.aztecNode, this.recipientTaggingStore, anchorBlockNumber, anchorBlockHash, this.jobId)));
88
- // Flatten all logs from all secrets
89
- const allLogs = logArrays.flat();
90
- // Store the logs for this recipient
91
- if (allLogs.length > 0) {
92
- await this.#storePendingTaggedLogs(contractAddress, pendingTaggedLogArrayBaseSlot, recipient, allLogs);
93
- }
94
- }));
75
+ const anchorBlockNumber = this.anchorBlockHeader.getBlockNumber();
76
+ const anchorBlockHash = await this.anchorBlockHeader.hash();
77
+ // Get all secrets for this recipient (one per sender)
78
+ const secrets = await this.#getSecretsForSenders(contractAddress, recipient);
79
+ // Load logs for all sender-recipient pairs in parallel
80
+ const logArrays = await Promise.all(secrets.map((secret)=>loadPrivateLogsForSenderRecipientPair(secret, this.aztecNode, this.recipientTaggingStore, anchorBlockNumber, anchorBlockHash, this.jobId)));
81
+ // Flatten all logs from all secrets
82
+ const allLogs = logArrays.flat();
83
+ if (allLogs.length > 0) {
84
+ await this.#storePendingTaggedLogs(contractAddress, pendingTaggedLogArrayBaseSlot, recipient, allLogs);
85
+ }
95
86
  }
96
87
  async #getSecretsForSenders(contractAddress, recipient) {
97
- const recipientCompleteAddress = await this.#getCompleteAddress(recipient);
88
+ const recipientCompleteAddress = await this.addressStore.getCompleteAddress(recipient);
89
+ if (!recipientCompleteAddress) {
90
+ return [];
91
+ }
98
92
  const recipientIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(recipient);
99
93
  // We implicitly add all PXE accounts as senders, this helps us decrypt tags on notes that we send to ourselves
100
94
  // (recipient = us, sender = us)
@@ -104,25 +98,23 @@ export class LogService {
104
98
  ];
105
99
  // We deduplicate the senders by adding them to a set and then converting the set back to an array
106
100
  const deduplicatedSenders = Array.from(new Set(allSenders.map((sender)=>sender.toString()))).map((sender)=>AztecAddress.fromString(sender));
107
- return Promise.all(deduplicatedSenders.map((sender)=>{
108
- return DirectionalAppTaggingSecret.compute(recipientCompleteAddress, recipientIvsk, sender, contractAddress, recipient);
101
+ return Promise.all(deduplicatedSenders.map(async (sender)=>{
102
+ const secret = await ExtendedDirectionalAppTaggingSecret.compute(recipientCompleteAddress, recipientIvsk, sender, contractAddress, recipient);
103
+ if (!secret) {
104
+ // Note that all senders originate from either the SenderAddressBookStore or the KeyStore.
105
+ // TODO(F-512): make sure we actually prevent registering invalid senders.
106
+ throw new Error(`Failed to compute a tagging secret for sender ${sender} - this implies this is an invalid address, which should not happen as they have been previously registered in PXE.`);
107
+ }
108
+ return secret;
109
109
  }));
110
110
  }
111
111
  #storePendingTaggedLogs(contractAddress, capsuleArrayBaseSlot, recipient, privateLogs) {
112
112
  // Build all pending tagged logs from the scoped logs
113
113
  const pendingTaggedLogs = privateLogs.map((scopedLog)=>{
114
- const pendingTaggedLog = new PendingTaggedLog(scopedLog.logData, scopedLog.txHash, scopedLog.noteHashes, scopedLog.firstNullifier, recipient);
114
+ const pendingTaggedLog = new PendingTaggedLog(scopedLog.logData, scopedLog.txHash, scopedLog.noteHashes, scopedLog.firstNullifier);
115
115
  return pendingTaggedLog.toFields();
116
116
  });
117
117
  // TODO: This looks like it could belong more at the oracle interface level
118
- return this.capsuleStore.appendToCapsuleArray(contractAddress, capsuleArrayBaseSlot, pendingTaggedLogs, this.jobId);
119
- }
120
- async #getCompleteAddress(account) {
121
- const completeAddress = await this.addressStore.getCompleteAddress(account);
122
- if (!completeAddress) {
123
- throw new Error(`No public key registered for address ${account}.
124
- Register it by calling pxe.addAccount(...).\nSee docs for context: https://docs.aztec.network/developers/resources/debugging/aztecnr-errors#simulation-error-no-public-key-registered-for-address-0x0-register-it-by-calling-pxeregisterrecipient-or-pxeregisteraccount`);
125
- }
126
- return completeAddress;
118
+ return this.capsuleService.appendToCapsuleArray(contractAddress, capsuleArrayBaseSlot, pendingTaggedLogs, this.jobId, recipient);
127
119
  }
128
120
  }
@@ -0,0 +1,17 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AztecNode } from '@aztec/stdlib/interfaces/server';
3
+ import { MessageContext } from '@aztec/stdlib/logs';
4
+ /** Resolves transaction hashes into the context needed to process messages. */
5
+ export declare class MessageContextService {
6
+ private readonly aztecNode;
7
+ constructor(aztecNode: AztecNode);
8
+ /**
9
+ * Resolves a list of tx hashes into their message contexts.
10
+ *
11
+ * For each tx hash, looks up the corresponding tx effect and extracts the note hashes and first nullifier needed to
12
+ * process messages that originated from that transaction. Returns `null` for tx hashes that are zero, not yet
13
+ * available, or in blocks beyond the anchor block.
14
+ */
15
+ getMessageContextsByTxHash(txHashes: Fr[], anchorBlockNumber: number): Promise<(MessageContext | null)[]>;
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZV9jb250ZXh0X3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXNzYWdlcy9tZXNzYWdlX2NvbnRleHRfc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3BELCtFQUErRTtBQUMvRSxxQkFBYSxxQkFBcUI7SUFDcEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQXRDLFlBQTZCLFNBQVMsRUFBRSxTQUFTLEVBQUk7SUFFckQ7Ozs7OztPQU1HO0lBQ0gsMEJBQTBCLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQTBCeEc7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message_context_service.d.ts","sourceRoot":"","sources":["../../src/messages/message_context_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,+EAA+E;AAC/E,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,SAAS,EAAI;IAErD;;;;;;OAMG;IACH,0BAA0B,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,CA0BxG;CACF"}