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

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 (209) hide show
  1. package/dest/block_synchronizer/block_synchronizer.d.ts +10 -4
  2. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  3. package/dest/block_synchronizer/block_synchronizer.js +66 -18
  4. package/dest/config/index.d.ts +3 -1
  5. package/dest/config/index.d.ts.map +1 -1
  6. package/dest/config/index.js +17 -0
  7. package/dest/config/package_info.js +1 -1
  8. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  9. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  10. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  11. package/dest/contract_function_simulator/contract_function_simulator.d.ts +8 -9
  12. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  13. package/dest/contract_function_simulator/contract_function_simulator.js +33 -19
  14. package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
  15. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  16. package/dest/contract_function_simulator/execution_note_cache.js +45 -28
  17. package/dest/contract_function_simulator/index.d.ts +2 -2
  18. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/index.js +1 -1
  20. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -2
  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 +5 -2
  23. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  24. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  26. package/dest/contract_function_simulator/oracle/interfaces.d.ts +14 -10
  27. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
  29. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  30. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +6 -6
  31. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
  33. package/dest/contract_function_simulator/oracle/oracle.d.ts +9 -7
  34. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  35. package/dest/contract_function_simulator/oracle/oracle.js +41 -30
  36. package/dest/contract_function_simulator/oracle/private_execution.d.ts +8 -13
  37. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/oracle/private_execution.js +21 -11
  39. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +16 -18
  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 +25 -38
  42. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +26 -16
  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 +71 -71
  45. package/dest/debug/pxe_debug_utils.d.ts +1 -1
  46. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  47. package/dest/debug/pxe_debug_utils.js +2 -1
  48. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  49. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  50. package/dest/entrypoints/client/bundle/utils.js +10 -1
  51. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  52. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  53. package/dest/entrypoints/client/lazy/utils.js +10 -1
  54. package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
  55. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  56. package/dest/entrypoints/server/index.d.ts +2 -1
  57. package/dest/entrypoints/server/index.d.ts.map +1 -1
  58. package/dest/entrypoints/server/index.js +1 -0
  59. package/dest/entrypoints/server/utils.d.ts +1 -1
  60. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  61. package/dest/entrypoints/server/utils.js +11 -7
  62. package/dest/events/event_service.d.ts +4 -3
  63. package/dest/events/event_service.d.ts.map +1 -1
  64. package/dest/events/event_service.js +17 -19
  65. package/dest/events/private_event_filter_validator.d.ts +5 -5
  66. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  67. package/dest/events/private_event_filter_validator.js +5 -6
  68. package/dest/job_coordinator/job_coordinator.d.ts +74 -0
  69. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  70. package/dest/job_coordinator/job_coordinator.js +93 -0
  71. package/dest/logs/log_service.d.ts +3 -2
  72. package/dest/logs/log_service.d.ts.map +1 -1
  73. package/dest/logs/log_service.js +22 -13
  74. package/dest/notes/note_service.d.ts +5 -4
  75. package/dest/notes/note_service.d.ts.map +1 -1
  76. package/dest/notes/note_service.js +31 -34
  77. package/dest/oracle_version.d.ts +3 -3
  78. package/dest/oracle_version.d.ts.map +1 -1
  79. package/dest/oracle_version.js +4 -3
  80. package/dest/private_kernel/hints/index.d.ts +2 -2
  81. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  82. package/dest/private_kernel/hints/index.js +1 -1
  83. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
  84. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  85. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +13 -7
  86. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  87. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  88. package/dest/private_kernel/private_kernel_execution_prover.js +4 -5
  89. package/dest/private_kernel/private_kernel_oracle.d.ts +24 -28
  90. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  91. package/dest/private_kernel/private_kernel_oracle.js +90 -2
  92. package/dest/pxe.d.ts +8 -36
  93. package/dest/pxe.d.ts.map +1 -1
  94. package/dest/pxe.js +71 -90
  95. package/dest/storage/capsule_store/capsule_store.d.ts +24 -9
  96. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  97. package/dest/storage/capsule_store/capsule_store.js +132 -23
  98. package/dest/storage/contract_store/contract_store.d.ts +2 -1
  99. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  100. package/dest/storage/contract_store/contract_store.js +12 -0
  101. package/dest/storage/note_store/note_store.d.ts +45 -56
  102. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  103. package/dest/storage/note_store/note_store.js +244 -263
  104. package/dest/storage/note_store/stored_note.d.ts +16 -0
  105. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  106. package/dest/storage/note_store/stored_note.js +43 -0
  107. package/dest/storage/private_event_store/private_event_store.d.ts +47 -7
  108. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  109. package/dest/storage/private_event_store/private_event_store.js +203 -68
  110. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  111. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  112. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  113. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +15 -8
  114. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  115. package/dest/storage/tagging_store/recipient_tagging_store.js +69 -12
  116. package/dest/storage/tagging_store/sender_tagging_store.d.ts +19 -9
  117. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  118. package/dest/storage/tagging_store/sender_tagging_store.js +110 -28
  119. package/dest/tagging/constants.d.ts +2 -0
  120. package/dest/tagging/constants.d.ts.map +1 -0
  121. package/dest/tagging/constants.js +10 -0
  122. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  123. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  124. package/dest/tagging/get_all_logs_by_tags.js +46 -0
  125. package/dest/tagging/index.d.ts +3 -2
  126. package/dest/tagging/index.d.ts.map +1 -1
  127. package/dest/tagging/index.js +2 -10
  128. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +3 -2
  129. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  130. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +8 -8
  131. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +3 -2
  132. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  133. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +5 -2
  134. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +3 -2
  135. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  136. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +8 -8
  137. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +1 -1
  138. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  139. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +5 -8
  140. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -2
  141. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  142. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +10 -5
  143. package/package.json +18 -18
  144. package/src/block_synchronizer/block_synchronizer.ts +77 -20
  145. package/src/config/index.ts +14 -0
  146. package/src/config/package_info.ts +1 -1
  147. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  148. package/src/contract_function_simulator/contract_function_simulator.ts +39 -21
  149. package/src/contract_function_simulator/execution_note_cache.ts +44 -25
  150. package/src/contract_function_simulator/index.ts +1 -1
  151. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +4 -0
  152. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  153. package/src/contract_function_simulator/oracle/interfaces.ts +19 -9
  154. package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
  155. package/src/contract_function_simulator/oracle/oracle.ts +54 -39
  156. package/src/contract_function_simulator/oracle/private_execution.ts +30 -20
  157. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +44 -42
  158. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +89 -75
  159. package/src/debug/pxe_debug_utils.ts +2 -1
  160. package/src/entrypoints/client/bundle/utils.ts +7 -1
  161. package/src/entrypoints/client/lazy/utils.ts +7 -2
  162. package/src/entrypoints/pxe_creation_options.ts +2 -1
  163. package/src/entrypoints/server/index.ts +1 -0
  164. package/src/entrypoints/server/utils.ts +11 -15
  165. package/src/events/event_service.ts +17 -21
  166. package/src/events/private_event_filter_validator.ts +3 -5
  167. package/src/job_coordinator/job_coordinator.ts +149 -0
  168. package/src/logs/log_service.ts +28 -9
  169. package/src/notes/note_service.ts +38 -40
  170. package/src/oracle_version.ts +4 -3
  171. package/src/private_kernel/hints/index.ts +1 -1
  172. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +33 -22
  173. package/src/private_kernel/private_kernel_execution_prover.ts +3 -5
  174. package/src/private_kernel/private_kernel_oracle.ts +116 -36
  175. package/src/pxe.ts +125 -119
  176. package/src/storage/capsule_store/capsule_store.ts +159 -23
  177. package/src/storage/contract_store/contract_store.ts +20 -0
  178. package/src/storage/note_store/note_store.ts +286 -317
  179. package/src/storage/note_store/stored_note.ts +48 -0
  180. package/src/storage/private_event_store/private_event_store.ts +277 -76
  181. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  182. package/src/storage/tagging_store/recipient_tagging_store.ts +89 -13
  183. package/src/storage/tagging_store/sender_tagging_store.ts +129 -28
  184. package/src/tagging/constants.ts +10 -0
  185. package/src/tagging/get_all_logs_by_tags.ts +68 -0
  186. package/src/tagging/index.ts +2 -11
  187. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +21 -7
  188. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +7 -1
  189. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +10 -7
  190. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +5 -13
  191. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +16 -4
  192. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  193. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  194. package/dest/contract_function_simulator/proxied_node.js +0 -27
  195. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  196. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  197. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
  198. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  199. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  200. package/dest/public_storage/public_storage_service.d.ts +0 -24
  201. package/dest/public_storage/public_storage_service.d.ts.map +0 -1
  202. package/dest/public_storage/public_storage_service.js +0 -26
  203. package/dest/tree_membership/tree_membership_service.d.ts +0 -52
  204. package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
  205. package/dest/tree_membership/tree_membership_service.js +0 -84
  206. package/src/contract_function_simulator/proxied_node.ts +0 -33
  207. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -133
  208. package/src/public_storage/public_storage_service.ts +0 -33
  209. package/src/tree_membership/tree_membership_service.ts +0 -112
@@ -4,12 +4,12 @@ import { LogLevels, applyStringFormatting, createLogger } from '@aztec/foundatio
4
4
  import { siloNullifier } from '@aztec/stdlib/hash';
5
5
  import { computeAddressSecret } from '@aztec/stdlib/keys';
6
6
  import { deriveEcdhSharedSecret } from '@aztec/stdlib/logs';
7
+ import { getNonNullifiedL1ToL2MessageWitness } from '@aztec/stdlib/messaging';
8
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
7
9
  import { EventService } from '../../events/event_service.js';
8
10
  import { LogService } from '../../logs/log_service.js';
9
11
  import { NoteService } from '../../notes/note_service.js';
10
12
  import { ORACLE_VERSION } from '../../oracle_version.js';
11
- import { PublicStorageService } from '../../public_storage/public_storage_service.js';
12
- import { TreeMembershipService } from '../../tree_membership/tree_membership_service.js';
13
13
  import { EventValidationRequest } from '../noir-structs/event_validation_request.js';
14
14
  import { LogRetrievalRequest } from '../noir-structs/log_retrieval_request.js';
15
15
  import { LogRetrievalResponse } from '../noir-structs/log_retrieval_response.js';
@@ -34,12 +34,13 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
34
34
  senderAddressBookStore;
35
35
  capsuleStore;
36
36
  privateEventStore;
37
+ jobId;
37
38
  log;
38
39
  scopes;
39
40
  isMisc;
40
41
  isUtility;
41
42
  aztecNrDebugLog;
42
- constructor(contractAddress, /** List of transient auth witnesses to be used during this simulation */ authWitnesses, capsules, anchorBlockHeader, contractStore, noteStore, keyStore, addressStore, aztecNode, anchorBlockStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, log = createLogger('simulator:client_view_context'), scopes){
43
+ constructor(contractAddress, /** List of transient auth witnesses to be used during this simulation */ authWitnesses, capsules, anchorBlockHeader, contractStore, noteStore, keyStore, addressStore, aztecNode, anchorBlockStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, jobId, log = createLogger('simulator:client_view_context'), scopes){
43
44
  this.contractAddress = contractAddress;
44
45
  this.authWitnesses = authWitnesses;
45
46
  this.capsules = capsules;
@@ -54,6 +55,7 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
54
55
  this.senderAddressBookStore = senderAddressBookStore;
55
56
  this.capsuleStore = capsuleStore;
56
57
  this.privateEventStore = privateEventStore;
58
+ this.jobId = jobId;
57
59
  this.log = log;
58
60
  this.scopes = scopes;
59
61
  this.isMisc = true;
@@ -69,13 +71,7 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
69
71
  return Fr.random();
70
72
  }
71
73
  utilityGetUtilityContext() {
72
- return UtilityContext.from({
73
- blockNumber: this.anchorBlockHeader.globalVariables.blockNumber,
74
- timestamp: this.anchorBlockHeader.globalVariables.timestamp,
75
- contractAddress: this.contractAddress,
76
- version: this.anchorBlockHeader.globalVariables.version,
77
- chainId: this.anchorBlockHeader.globalVariables.chainId
78
- });
74
+ return new UtilityContext(this.anchorBlockHeader, this.contractAddress);
79
75
  }
80
76
  /**
81
77
  * Retrieve keys associated with a specific master public key and app address.
@@ -86,43 +82,47 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
86
82
  return this.keyStore.getKeyValidationRequest(pkMHash, this.contractAddress);
87
83
  }
88
84
  /**
89
- * Fetches the index and sibling path of a leaf at a given block from a given tree.
90
- * @param blockNumber - The block number at which to get the membership witness.
91
- * @param treeId - Id of the tree to get the sibling path from.
85
+ * Fetches the index and sibling path of a leaf at a given block from the note hash tree.
86
+ * @param blockHash - The block hash at which to get the membership witness.
87
+ * @param leafValue - The leaf value
88
+ * @returns The membership witness containing the leaf index and sibling path
89
+ */ utilityGetNoteHashMembershipWitness(blockHash, leafValue) {
90
+ return this.aztecNode.getNoteHashMembershipWitness(blockHash, leafValue);
91
+ }
92
+ /**
93
+ * Fetches the index and sibling path of a leaf at a given block from the archive tree.
94
+ * @param blockHash - The block hash at which to get the membership witness.
92
95
  * @param leafValue - The leaf value
93
- * @returns The index and sibling path concatenated [index, sibling_path]
94
- */ utilityGetMembershipWitness(blockNumber, treeId, leafValue) {
95
- const treeMembershipService = new TreeMembershipService(this.aztecNode, this.anchorBlockStore);
96
- return treeMembershipService.getMembershipWitness(blockNumber, treeId, leafValue);
96
+ * @returns The membership witness containing the leaf index and sibling path
97
+ */ utilityGetArchiveMembershipWitness(blockHash, leafValue) {
98
+ return this.aztecNode.getArchiveMembershipWitness(blockHash, leafValue);
97
99
  }
98
100
  /**
99
101
  * Returns a nullifier membership witness for a given nullifier at a given block.
100
- * @param blockNumber - The block number at which to get the index.
102
+ * @param blockHash - The block hash at which to get the index.
101
103
  * @param nullifier - Nullifier we try to find witness for.
102
104
  * @returns The nullifier membership witness (if found).
103
- */ async utilityGetNullifierMembershipWitness(blockNumber, nullifier) {
104
- return await this.aztecNode.getNullifierMembershipWitness(blockNumber, nullifier);
105
+ */ utilityGetNullifierMembershipWitness(blockHash, nullifier) {
106
+ return this.aztecNode.getNullifierMembershipWitness(blockHash, nullifier);
105
107
  }
106
108
  /**
107
109
  * Returns a low nullifier membership witness for a given nullifier at a given block.
108
- * @param blockNumber - The block number at which to get the index.
110
+ * @param blockHash - The block hash at which to get the index.
109
111
  * @param nullifier - Nullifier we try to find the low nullifier witness for.
110
112
  * @returns The low nullifier membership witness (if found).
111
113
  * @remarks Low nullifier witness can be used to perform a nullifier non-inclusion proof by leveraging the "linked
112
114
  * list structure" of leaves and proving that a lower nullifier is pointing to a bigger next value than the nullifier
113
115
  * we are trying to prove non-inclusion for.
114
- */ async utilityGetLowNullifierMembershipWitness(blockNumber, nullifier) {
115
- const treeMembershipService = new TreeMembershipService(this.aztecNode, this.anchorBlockStore);
116
- return await treeMembershipService.getLowNullifierMembershipWitness(blockNumber, nullifier);
116
+ */ utilityGetLowNullifierMembershipWitness(blockHash, nullifier) {
117
+ return this.aztecNode.getLowNullifierMembershipWitness(blockHash, nullifier);
117
118
  }
118
119
  /**
119
120
  * Returns a public data tree witness for a given leaf slot at a given block.
120
- * @param blockNumber - The block number at which to get the index.
121
+ * @param blockHash - The block hash at which to get the index.
121
122
  * @param leafSlot - The slot of the public data tree to get the witness for.
122
123
  * @returns - The witness
123
- */ async utilityGetPublicDataWitness(blockNumber, leafSlot) {
124
- const treeMembershipService = new TreeMembershipService(this.aztecNode, this.anchorBlockStore);
125
- return await treeMembershipService.getPublicDataWitness(blockNumber, leafSlot);
124
+ */ utilityGetPublicDataWitness(blockHash, leafSlot) {
125
+ return this.aztecNode.getPublicDataWitness(blockHash, leafSlot);
126
126
  }
127
127
  /**
128
128
  * Fetches a block header of a given block.
@@ -134,7 +134,7 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
134
134
  throw new Error(`Block number ${blockNumber} is higher than current block ${anchorBlockNumber}`);
135
135
  }
136
136
  const block = await this.aztecNode.getBlock(blockNumber);
137
- return block?.getBlockHeader() || undefined;
137
+ return block?.header;
138
138
  }
139
139
  /**
140
140
  * Retrieve the complete address associated to a given address.
@@ -196,7 +196,7 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
196
196
  * @param status - The status of notes to fetch.
197
197
  * @returns Array of note data.
198
198
  */ async utilityGetNotes(owner, storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status) {
199
- const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
199
+ const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore, this.jobId);
200
200
  const dbNotes = await noteService.getNotes(this.contractAddress, owner, storageSlot, status, this.scopes);
201
201
  return pickNotes(dbNotes, {
202
202
  selects: selectByIndexes.slice(0, numSelects).map((index, i)=>({
@@ -226,9 +226,10 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
226
226
  * @returns A boolean indicating whether the nullifier exists in the tree or not.
227
227
  */ async utilityCheckNullifierExists(innerNullifier) {
228
228
  const nullifier = await siloNullifier(this.contractAddress, innerNullifier);
229
- const treeMembershipService = new TreeMembershipService(this.aztecNode, this.anchorBlockStore);
230
- const index = await treeMembershipService.getNullifierIndex(nullifier);
231
- return index !== undefined;
229
+ const [leafIndex] = await this.aztecNode.findLeavesIndexes('latest', MerkleTreeId.NULLIFIER_TREE, [
230
+ nullifier
231
+ ]);
232
+ return leafIndex?.data !== undefined;
232
233
  }
233
234
  /**
234
235
  * Fetches a message from the executionStore, given its key.
@@ -238,28 +239,19 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
238
239
  * @dev Contract address and secret are only used to compute the nullifier to get non-nullified messages
239
240
  * @returns The l1 to l2 membership witness (index of message in the tree and sibling path).
240
241
  */ async utilityGetL1ToL2MembershipWitness(contractAddress, messageHash, secret) {
241
- const treeMembershipService = new TreeMembershipService(this.aztecNode, this.anchorBlockStore);
242
- const [messageIndex, siblingPath] = await treeMembershipService.getL1ToL2MembershipWitness(contractAddress, messageHash, secret);
243
- // Assuming messageIndex is what you intended to use for the index in MessageLoadOracleInputs
242
+ const [messageIndex, siblingPath] = await getNonNullifiedL1ToL2MessageWitness(this.aztecNode, contractAddress, messageHash, secret);
244
243
  return new MessageLoadOracleInputs(messageIndex, siblingPath);
245
244
  }
246
245
  /**
247
246
  * Read the public storage data.
247
+ * @param blockHash - The block hash to read storage at.
248
248
  * @param contractAddress - The address to read storage from.
249
249
  * @param startStorageSlot - The starting storage slot.
250
- * @param blockNumber - The block number to read storage at.
251
250
  * @param numberOfElements - Number of elements to read from the starting storage slot.
252
- */ async utilityStorageRead(contractAddress, startStorageSlot, blockNumber, numberOfElements) {
253
- const values = [];
254
- const publicStorageService = new PublicStorageService(this.anchorBlockStore, this.aztecNode);
255
- // TODO: why do we serialize these requests? This should probably a single call
256
- // Privacy considerations?
257
- for(let i = 0n; i < numberOfElements; i++){
258
- const storageSlot = new Fr(startStorageSlot.value + i);
259
- const value = await publicStorageService.getPublicStorageAt(blockNumber, contractAddress, storageSlot);
260
- this.log.debug(`Oracle storage read: slot=${storageSlot.toString()} address-${contractAddress.toString()} value=${value}`);
261
- values.push(value);
262
- }
251
+ */ async utilityStorageRead(blockHash, contractAddress, startStorageSlot, numberOfElements) {
252
+ const slots = Array(numberOfElements).fill(0).map((_, i)=>new Fr(startStorageSlot.value + BigInt(i)));
253
+ const values = await Promise.all(slots.map((storageSlot)=>this.aztecNode.getPublicStorageAt(blockHash, contractAddress, storageSlot)));
254
+ this.log.debug(`Oracle storage read: slots=[${slots.map((slot)=>slot.toString()).join(', ')}] address=${contractAddress.toString()} values=[${values.join(', ')}]`);
263
255
  return values;
264
256
  }
265
257
  utilityDebugLog(level, message, fields) {
@@ -270,10 +262,16 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
270
262
  this.aztecNrDebugLog[levelName](`${applyStringFormatting(message, fields)}`);
271
263
  }
272
264
  async utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot) {
273
- const logService = new LogService(this.aztecNode, this.anchorBlockStore, this.keyStore, this.capsuleStore, this.recipientTaggingStore, this.senderAddressBookStore, this.addressStore);
274
- await logService.syncTaggedLogs(this.contractAddress, pendingTaggedLogArrayBaseSlot, this.scopes);
275
- const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
276
- await noteService.syncNoteNullifiers(this.contractAddress);
265
+ const logService = new LogService(this.aztecNode, this.anchorBlockStore, this.keyStore, this.capsuleStore, this.recipientTaggingStore, this.senderAddressBookStore, this.addressStore, this.jobId);
266
+ const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore, this.jobId);
267
+ // It is acceptable to run the following operations in parallel for several reasons:
268
+ // 1. syncTaggedLogs does not write to the note store — it only stores the pending tagged logs in a capsule array,
269
+ // which is then processed in Noir after this handler returns.
270
+ // 2. Even if syncTaggedLogs did write to the note store, it would not cause inconsistent state.
271
+ await Promise.all([
272
+ logService.syncTaggedLogs(this.contractAddress, pendingTaggedLogArrayBaseSlot, this.scopes),
273
+ noteService.syncNoteNullifiers(this.contractAddress)
274
+ ]);
277
275
  }
278
276
  /**
279
277
  * Validates all note and event validation requests enqueued via `enqueue_note_for_validation` and
@@ -285,25 +283,25 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
285
283
  * @param noteValidationRequestsArrayBaseSlot - The base slot of capsule array containing note validation requests.
286
284
  * @param eventValidationRequestsArrayBaseSlot - The base slot of capsule array containing event validation requests.
287
285
  */ async utilityValidateEnqueuedNotesAndEvents(contractAddress, noteValidationRequestsArrayBaseSlot, eventValidationRequestsArrayBaseSlot) {
288
- // TODO(#10727): allow other contracts to deliver notes
286
+ // TODO(#10727): allow other contracts to store notes
289
287
  if (!this.contractAddress.equals(contractAddress)) {
290
288
  throw new Error(`Got a note validation request from ${contractAddress}, expected ${this.contractAddress}`);
291
289
  }
292
290
  // We read all note and event validation requests and process them all concurrently. This makes the process much
293
291
  // faster as we don't need to wait for the network round-trip.
294
- const noteValidationRequests = (await this.capsuleStore.readCapsuleArray(contractAddress, noteValidationRequestsArrayBaseSlot)).map(NoteValidationRequest.fromFields);
295
- const eventValidationRequests = (await this.capsuleStore.readCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot)).map(EventValidationRequest.fromFields);
296
- const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
297
- const noteDeliveries = noteValidationRequests.map((request)=>noteService.deliverNote(request.contractAddress, request.owner, request.storageSlot, request.randomness, request.noteNonce, request.content, request.noteHash, request.nullifier, request.txHash, request.recipient));
298
- const eventService = new EventService(this.anchorBlockStore, this.aztecNode, this.privateEventStore);
299
- const eventDeliveries = eventValidationRequests.map((request)=>eventService.deliverEvent(request.contractAddress, request.eventTypeId, request.serializedEvent, request.eventCommitment, request.txHash, request.recipient));
292
+ const noteValidationRequests = (await this.capsuleStore.readCapsuleArray(contractAddress, noteValidationRequestsArrayBaseSlot, this.jobId)).map(NoteValidationRequest.fromFields);
293
+ const eventValidationRequests = (await this.capsuleStore.readCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot, this.jobId)).map(EventValidationRequest.fromFields);
294
+ const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore, this.jobId);
295
+ const noteStorePromises = noteValidationRequests.map((request)=>noteService.storeNote(request.contractAddress, request.owner, request.storageSlot, request.randomness, request.noteNonce, request.content, request.noteHash, request.nullifier, request.txHash, request.recipient));
296
+ const eventService = new EventService(this.anchorBlockStore, this.aztecNode, this.privateEventStore, this.jobId);
297
+ const eventStorePromises = eventValidationRequests.map((request)=>eventService.storeEvent(request.contractAddress, request.eventTypeId, request.randomness, request.serializedEvent, request.eventCommitment, request.txHash, request.recipient));
300
298
  await Promise.all([
301
- ...noteDeliveries,
302
- ...eventDeliveries
299
+ ...noteStorePromises,
300
+ ...eventStorePromises
303
301
  ]);
304
302
  // Requests are cleared once we're done.
305
- await this.capsuleStore.setCapsuleArray(contractAddress, noteValidationRequestsArrayBaseSlot, []);
306
- await this.capsuleStore.setCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot, []);
303
+ await this.capsuleStore.setCapsuleArray(contractAddress, noteValidationRequestsArrayBaseSlot, [], this.jobId);
304
+ await this.capsuleStore.setCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot, [], this.jobId);
307
305
  }
308
306
  async utilityBulkRetrieveLogs(contractAddress, logRetrievalRequestsArrayBaseSlot, logRetrievalResponsesArrayBaseSlot) {
309
307
  // TODO(#10727): allow other contracts to process partial notes
@@ -312,20 +310,21 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
312
310
  }
313
311
  // We read all log retrieval requests and process them all concurrently. This makes the process much faster as we
314
312
  // don't need to wait for the network round-trip.
315
- const logRetrievalRequests = (await this.capsuleStore.readCapsuleArray(contractAddress, logRetrievalRequestsArrayBaseSlot)).map(LogRetrievalRequest.fromFields);
316
- const logService = new LogService(this.aztecNode, this.anchorBlockStore, this.keyStore, this.capsuleStore, this.recipientTaggingStore, this.senderAddressBookStore, this.addressStore);
313
+ const logRetrievalRequests = (await this.capsuleStore.readCapsuleArray(contractAddress, logRetrievalRequestsArrayBaseSlot, this.jobId)).map(LogRetrievalRequest.fromFields);
314
+ const logService = new LogService(this.aztecNode, this.anchorBlockStore, this.keyStore, this.capsuleStore, this.recipientTaggingStore, this.senderAddressBookStore, this.addressStore, this.jobId);
317
315
  const maybeLogRetrievalResponses = await logService.bulkRetrieveLogs(logRetrievalRequests);
318
316
  // Requests are cleared once we're done.
319
- await this.capsuleStore.setCapsuleArray(contractAddress, logRetrievalRequestsArrayBaseSlot, []);
317
+ await this.capsuleStore.setCapsuleArray(contractAddress, logRetrievalRequestsArrayBaseSlot, [], this.jobId);
320
318
  // The responses are stored as Option<LogRetrievalResponse> in a second CapsuleArray.
321
- await this.capsuleStore.setCapsuleArray(contractAddress, logRetrievalResponsesArrayBaseSlot, maybeLogRetrievalResponses.map(LogRetrievalResponse.toSerializedOption));
319
+ await this.capsuleStore.setCapsuleArray(contractAddress, logRetrievalResponsesArrayBaseSlot, maybeLogRetrievalResponses.map(LogRetrievalResponse.toSerializedOption), this.jobId);
322
320
  }
323
321
  utilityStoreCapsule(contractAddress, slot, capsule) {
324
322
  if (!contractAddress.equals(this.contractAddress)) {
325
323
  // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
326
324
  throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
327
325
  }
328
- return this.capsuleStore.storeCapsule(this.contractAddress, slot, capsule);
326
+ this.capsuleStore.storeCapsule(this.contractAddress, slot, capsule, this.jobId);
327
+ return Promise.resolve();
329
328
  }
330
329
  async utilityLoadCapsule(contractAddress, slot) {
331
330
  if (!contractAddress.equals(this.contractAddress)) {
@@ -333,21 +332,22 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
333
332
  throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
334
333
  }
335
334
  return(// TODO(#12425): On the following line, the pertinent capsule gets overshadowed by the transient one. Tackle this.
336
- this.capsules.find((c)=>c.contractAddress.equals(contractAddress) && c.storageSlot.equals(slot))?.data ?? await this.capsuleStore.loadCapsule(this.contractAddress, slot));
335
+ this.capsules.find((c)=>c.contractAddress.equals(contractAddress) && c.storageSlot.equals(slot))?.data ?? await this.capsuleStore.loadCapsule(this.contractAddress, slot, this.jobId));
337
336
  }
338
337
  utilityDeleteCapsule(contractAddress, slot) {
339
338
  if (!contractAddress.equals(this.contractAddress)) {
340
339
  // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
341
340
  throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
342
341
  }
343
- return this.capsuleStore.deleteCapsule(this.contractAddress, slot);
342
+ this.capsuleStore.deleteCapsule(this.contractAddress, slot, this.jobId);
343
+ return Promise.resolve();
344
344
  }
345
345
  utilityCopyCapsule(contractAddress, srcSlot, dstSlot, numEntries) {
346
346
  if (!contractAddress.equals(this.contractAddress)) {
347
347
  // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
348
348
  throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
349
349
  }
350
- return this.capsuleStore.copyCapsule(this.contractAddress, srcSlot, dstSlot, numEntries);
350
+ return this.capsuleStore.copyCapsule(this.contractAddress, srcSlot, dstSlot, numEntries, this.jobId);
351
351
  }
352
352
  // TODO(#11849): consider replacing this oracle with a pure Noir implementation of aes decryption.
353
353
  utilityAes128Decrypt(ciphertext, iv, symKey) {
@@ -28,4 +28,4 @@ export declare class PXEDebugUtils {
28
28
  */
29
29
  getNotes(filter: NotesFilter): Promise<NoteDao[]>;
30
30
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX2RlYnVnX3V0aWxzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVidWcvcHhlX2RlYnVnX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvRCxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFckU7OztHQUdHO0FBQ0gscUJBQWEsYUFBYTs7SUFJdEIsT0FBTyxDQUFDLGFBQWE7SUFDckIsT0FBTyxDQUFDLFNBQVM7SUFGbkIsWUFDVSxhQUFhLEVBQUUsYUFBYSxFQUM1QixTQUFTLEVBQUUsU0FBUyxFQUMxQjtJQUVKOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLFFBRXJCO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNVLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQVU3RDtDQUNGIn0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX2RlYnVnX3V0aWxzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVidWcvcHhlX2RlYnVnX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvRCxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFckU7OztHQUdHO0FBQ0gscUJBQWEsYUFBYTs7SUFJdEIsT0FBTyxDQUFDLGFBQWE7SUFDckIsT0FBTyxDQUFDLFNBQVM7SUFGbkIsWUFDVSxhQUFhLEVBQUUsYUFBYSxFQUM1QixTQUFTLEVBQUUsU0FBUyxFQUMxQjtJQUVKOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLFFBRXJCO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNVLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQVU3RDtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"pxe_debug_utils.d.ts","sourceRoot":"","sources":["../../src/debug/pxe_debug_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAErE;;;GAGG;AACH,qBAAa,aAAa;;IAItB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IAFnB,YACU,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EAC1B;IAEJ;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,GAAG,QAErB;IAED;;;;;;;;;;OAUG;IACU,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAU7D;CACF"}
1
+ {"version":3,"file":"pxe_debug_utils.d.ts","sourceRoot":"","sources":["../../src/debug/pxe_debug_utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAErE;;;GAGG;AACH,qBAAa,aAAa;;IAItB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IAFnB,YACU,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EAC1B;IAEJ;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,GAAG,QAErB;IAED;;;;;;;;;;OAUG;IACU,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAU7D;CACF"}
@@ -1,3 +1,4 @@
1
+ import { randomBytes } from '@aztec/foundation/crypto/random';
1
2
  /**
2
3
  * Methods provided by this class might help debugging but must not be used in production.
3
4
  * No backwards compatibility or API stability should be expected. Use at your own risk.
@@ -32,6 +33,6 @@
32
33
  // We need to manually trigger private state sync to have a guarantee that all the notes are available.
33
34
  const call = await this.contractStore.getFunctionCall('sync_private_state', [], filter.contractAddress);
34
35
  await this.#pxe.simulateUtility(call);
35
- return this.noteStore.getNotes(filter);
36
+ return this.noteStore.getNotes(filter, randomBytes(8).toString('hex'));
36
37
  }
37
38
  }
@@ -13,4 +13,4 @@ import type { PXECreationOptions } from '../../pxe_creation_options.js';
13
13
  * @returns A Promise that resolves to the started PXE instance.
14
14
  */
15
15
  export declare function createPXE(aztecNode: AztecNode, config: PXEConfig, options?: PXECreationOptions): Promise<PXE>;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9jbGllbnQvYnVuZGxlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXhFOzs7Ozs7Ozs7R0FTRztBQUNILHdCQUFzQixTQUFTLENBQzdCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxTQUFTLEVBQ2pCLE9BQU8sR0FBRSxrQkFBb0MsZ0JBZ0M5QyJ9
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9jbGllbnQvYnVuZGxlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXhFOzs7Ozs7Ozs7R0FTRztBQUNILHdCQUFzQixTQUFTLENBQzdCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxTQUFTLEVBQ2pCLE9BQU8sR0FBRSxrQkFBb0MsZ0JBcUM5QyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/client/bundle/utils.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,kBAAoC,gBAgC9C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/client/bundle/utils.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,kBAAoC,gBAqC9C"}
@@ -1,3 +1,4 @@
1
+ import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
1
2
  import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
2
3
  import { randomBytes } from '@aztec/foundation/crypto/random';
3
4
  import { createLogger } from '@aztec/foundation/log';
@@ -28,7 +29,15 @@ import { PXE } from '../../../pxe.js';
28
29
  const store = options.store ?? await createStore('pxe_data', configWithContracts, storeLogger);
29
30
  const simulator = options.simulator ?? new WASMSimulator();
30
31
  const proverLogger = loggers.prover ? loggers.prover : createLogger('pxe:bb:wasm:bundle' + (logSuffix ? `:${logSuffix}` : ''));
31
- const prover = options.prover ?? new BBBundlePrivateKernelProver(simulator, proverLogger);
32
+ let prover;
33
+ if (options.proverOrOptions instanceof BBPrivateKernelProver) {
34
+ prover = options.proverOrOptions;
35
+ } else {
36
+ prover = new BBBundlePrivateKernelProver(simulator, {
37
+ ...options.proverOrOptions,
38
+ logger: proverLogger
39
+ });
40
+ }
32
41
  const protocolContractsProvider = new BundledProtocolContractsProvider();
33
42
  const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
34
43
  const pxe = await PXE.create(aztecNode, store, prover, simulator, protocolContractsProvider, config, pxeLogger);
@@ -12,4 +12,4 @@ import type { PXECreationOptions } from '../../pxe_creation_options.js';
12
12
  * @returns A Promise that resolves to the started PXE instance.
13
13
  */
14
14
  export declare function createPXE(aztecNode: AztecNode, config: PXEConfig, options?: PXECreationOptions): Promise<PXE>;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9jbGllbnQvbGF6eS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RTs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixTQUFTLENBQzdCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxTQUFTLEVBQ2pCLE9BQU8sR0FBRSxrQkFBb0MsZ0JBaUM5QyJ9
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9jbGllbnQvbGF6eS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RTs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixTQUFTLENBQzdCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxTQUFTLEVBQ2pCLE9BQU8sR0FBRSxrQkFBb0MsZ0JBcUM5QyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/client/lazy/utils.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,kBAAoC,gBAiC9C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/client/lazy/utils.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,kBAAoC,gBAqC9C"}
@@ -1,3 +1,4 @@
1
+ import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
1
2
  import { BBLazyPrivateKernelProver } from '@aztec/bb-prover/client/lazy';
2
3
  import { randomBytes } from '@aztec/foundation/crypto/random';
3
4
  import { createLogger } from '@aztec/foundation/log';
@@ -27,7 +28,15 @@ import { PXE } from '../../../pxe.js';
27
28
  const store = options.store ?? await createStore('pxe_data', configWithContracts, storeLogger);
28
29
  const simulator = options.simulator ?? new WASMSimulator();
29
30
  const proverLogger = loggers.prover ? loggers.prover : createLogger('pxe:bb:wasm:bundle' + (logSuffix ? `:${logSuffix}` : ''));
30
- const prover = options.prover ?? new BBLazyPrivateKernelProver(simulator, proverLogger);
31
+ let prover;
32
+ if (options.proverOrOptions instanceof BBPrivateKernelProver) {
33
+ prover = options.proverOrOptions;
34
+ } else {
35
+ prover = new BBLazyPrivateKernelProver(simulator, {
36
+ ...options.proverOrOptions,
37
+ logger: proverLogger
38
+ });
39
+ }
31
40
  const protocolContractsProvider = new LazyProtocolContractsProvider();
32
41
  const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
33
42
  const pxe = await PXE.create(aztecNode, store, prover, simulator, protocolContractsProvider, config, pxeLogger);
@@ -1,3 +1,4 @@
1
+ import type { BBPrivateKernelProverOptions } from '@aztec/bb-prover/client';
1
2
  import type { Logger } from '@aztec/foundation/log';
2
3
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
4
  import type { CircuitSimulator } from '@aztec/simulator/client';
@@ -9,8 +10,8 @@ export type PXECreationOptions = {
9
10
  prover?: Logger;
10
11
  };
11
12
  useLogSuffix?: boolean | string;
12
- prover?: PrivateKernelProver;
13
+ proverOrOptions?: PrivateKernelProver | BBPrivateKernelProverOptions;
13
14
  store?: AztecAsyncKVStore;
14
15
  simulator?: CircuitSimulator;
15
16
  };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX2NyZWF0aW9uX29wdGlvbnMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRyeXBvaW50cy9weGVfY3JlYXRpb25fb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUzRSxNQUFNLE1BQU0sa0JBQWtCLEdBQUc7SUFDL0IsT0FBTyxDQUFDLEVBQUU7UUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7UUFBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUM7UUFBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxDQUFDO0lBQzVELFlBQVksQ0FBQyxFQUFFLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDaEMsTUFBTSxDQUFDLEVBQUUsbUJBQW1CLENBQUM7SUFDN0IsS0FBSyxDQUFDLEVBQUUsaUJBQWlCLENBQUM7SUFDMUIsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7Q0FDOUIsQ0FBQyJ9
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX2NyZWF0aW9uX29wdGlvbnMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRyeXBvaW50cy9weGVfY3JlYXRpb25fb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTNFLE1BQU0sTUFBTSxrQkFBa0IsR0FBRztJQUMvQixPQUFPLENBQUMsRUFBRTtRQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLENBQUM7SUFDNUQsWUFBWSxDQUFDLEVBQUUsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUNoQyxlQUFlLENBQUMsRUFBRSxtQkFBbUIsR0FBRyw0QkFBNEIsQ0FBQztJQUNyRSxLQUFLLENBQUMsRUFBRSxpQkFBaUIsQ0FBQztJQUMxQixTQUFTLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztDQUM5QixDQUFDIn0=
@@ -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,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,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,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,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"}
@@ -6,4 +6,5 @@ export * from './utils.js';
6
6
  export { NoteService } from '../../notes/note_service.js';
7
7
  export { ORACLE_VERSION } from '../../oracle_version.js';
8
8
  export { type PXECreationOptions } from '../pxe_creation_options.js';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9zZXJ2ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxZQUFZLENBQUM7QUFDM0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDIn0=
9
+ export { JobCoordinator } from '../../job_coordinator/job_coordinator.js';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9zZXJ2ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxZQUFZLENBQUM7QUFDM0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQyJ9
@@ -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"}
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"}
@@ -5,3 +5,4 @@ export * from '../../storage/index.js';
5
5
  export * from './utils.js';
6
6
  export { NoteService } from '../../notes/note_service.js';
7
7
  export { ORACLE_VERSION } from '../../oracle_version.js';
8
+ export { JobCoordinator } from '../../job_coordinator/job_coordinator.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9zZXJ2ZXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuQyxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJFLEtBQUssd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEdBQUcsV0FBVyxHQUFHLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxDQUFDO0FBRXBILHdCQUFzQixTQUFTLENBQzdCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSx3QkFBd0IsRUFDaEMsT0FBTyxHQUFFLGtCQUFvQyxnQkFtRDlDIn0=
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9zZXJ2ZXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuQyxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJFLEtBQUssd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEdBQUcsV0FBVyxHQUFHLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxDQUFDO0FBRXBILHdCQUFzQixTQUFTLENBQzdCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSx3QkFBd0IsRUFDaEMsT0FBTyxHQUFFLGtCQUFvQyxnQkFzRDlDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/server/utils.ts"],"names":[],"mappings":"AAWA,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
+ {"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,6 +1,8 @@
1
+ import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
1
2
  import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
2
3
  import { randomBytes } from '@aztec/foundation/crypto/random';
3
4
  import { createLogger } from '@aztec/foundation/log';
5
+ import { createStore } from '@aztec/kv-store/lmdb-v2';
4
6
  import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
5
7
  import { MemoryCircuitRecorder, SimulatorRecorderWrapper, WASMSimulator } from '@aztec/simulator/client';
6
8
  import { FileCircuitRecorder } from '@aztec/simulator/testing';
@@ -22,19 +24,21 @@ export async function createPXE(aztecNode, config, options = {
22
24
  l2BlockBatchSize: 50
23
25
  };
24
26
  if (!options.store) {
25
- // TODO once https://github.com/AztecProtocol/aztec-packages/issues/13656 is fixed, we can remove this and always
26
- // import the lmdb-v2 version
27
- const { createStore } = await import('@aztec/kv-store/lmdb-v2');
28
27
  const storeLogger = loggers.store ? loggers.store : createLogger('pxe:data:lmdb' + (logSuffix ? `:${logSuffix}` : ''));
29
28
  options.store = await createStore('pxe_data', PXE_DATA_SCHEMA_VERSION, configWithContracts, storeLogger);
30
29
  }
31
30
  const proverLogger = loggers.prover ? loggers.prover : createLogger('pxe:bb:native' + (logSuffix ? `:${logSuffix}` : ''));
32
- const prover = options.prover ?? createProver(simulator, proverLogger);
31
+ let prover;
32
+ if (options.proverOrOptions instanceof BBPrivateKernelProver) {
33
+ prover = options.proverOrOptions;
34
+ } else {
35
+ prover = new BBBundlePrivateKernelProver(simulator, {
36
+ ...options.proverOrOptions,
37
+ logger: proverLogger
38
+ });
39
+ }
33
40
  const protocolContractsProvider = new BundledProtocolContractsProvider();
34
41
  const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
35
42
  const pxe = await PXE.create(aztecNode, options.store, prover, simulator, protocolContractsProvider, configWithContracts, pxeLogger);
36
43
  return pxe;
37
44
  }
38
- function createProver(simulator, logger) {
39
- return new BBBundlePrivateKernelProver(simulator, logger);
40
- }
@@ -9,7 +9,8 @@ export declare class EventService {
9
9
  private readonly anchorBlockStore;
10
10
  private readonly aztecNode;
11
11
  private readonly privateEventStore;
12
- constructor(anchorBlockStore: AnchorBlockStore, aztecNode: AztecNode, privateEventStore: PrivateEventStore);
13
- deliverEvent(contractAddress: AztecAddress, selector: EventSelector, content: Fr[], eventCommitment: Fr, txHash: TxHash, scope: AztecAddress): Promise<void>;
12
+ private readonly jobId;
13
+ constructor(anchorBlockStore: AnchorBlockStore, aztecNode: AztecNode, privateEventStore: PrivateEventStore, jobId: string);
14
+ storeEvent(contractAddress: AztecAddress, selector: EventSelector, randomness: Fr, content: Fr[], eventCommitment: Fr, txHash: TxHash, scope: AztecAddress): Promise<void>;
14
15
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V2ZW50cy9ldmVudF9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRTFGLHFCQUFhLFlBQVk7SUFFckIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0I7SUFDakMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBSHBDLFlBQ21CLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxTQUFTLEVBQUUsU0FBUyxFQUNwQixpQkFBaUIsRUFBRSxpQkFBaUIsRUFDbkQ7SUFFUyxZQUFZLENBQ3ZCLGVBQWUsRUFBRSxZQUFZLEVBQzdCLFFBQVEsRUFBRSxhQUFhLEVBQ3ZCLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFDYixlQUFlLEVBQUUsRUFBRSxFQUNuQixNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxZQUFZLEdBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FrRGY7Q0FDRiJ9
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V2ZW50cy9ldmVudF9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRTFGLHFCQUFhLFlBQVk7SUFFckIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0I7SUFDakMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBQ2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztJQUp4QixZQUNtQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsU0FBUyxFQUFFLFNBQVMsRUFDcEIsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQ3BDLEtBQUssRUFBRSxNQUFNLEVBQzVCO0lBRVMsVUFBVSxDQUNyQixlQUFlLEVBQUUsWUFBWSxFQUM3QixRQUFRLEVBQUUsYUFBYSxFQUN2QixVQUFVLEVBQUUsRUFBRSxFQUNkLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFDYixlQUFlLEVBQUUsRUFBRSxFQUNuQixNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxZQUFZLEdBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0E2Q2Y7Q0FDRiJ9
@@ -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;AAEjE,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;IAHpC,YACmB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACnD;IAES,YAAY,CACvB,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,EAAE,EAAE,EACb,eAAe,EAAE,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAkDf;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;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,UAAU,CACrB,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,47 +1,45 @@
1
1
  import { siloNullifier } from '@aztec/stdlib/hash';
2
- import { MerkleTreeId } from '@aztec/stdlib/trees';
3
2
  export class EventService {
4
3
  anchorBlockStore;
5
4
  aztecNode;
6
5
  privateEventStore;
7
- constructor(anchorBlockStore, aztecNode, privateEventStore){
6
+ jobId;
7
+ constructor(anchorBlockStore, aztecNode, privateEventStore, jobId){
8
8
  this.anchorBlockStore = anchorBlockStore;
9
9
  this.aztecNode = aztecNode;
10
10
  this.privateEventStore = privateEventStore;
11
+ this.jobId = jobId;
11
12
  }
12
- async deliverEvent(contractAddress, selector, content, eventCommitment, txHash, scope) {
13
+ async storeEvent(contractAddress, selector, randomness, content, eventCommitment, txHash, scope) {
13
14
  // While using 'latest' block number would be fine for private events since they cannot be accessed from Aztec.nr
14
15
  // (and thus we're less concerned about being ahead of the synced block), we use the synced block number to
15
16
  // maintain consistent behavior in the PXE. Additionally, events should never be ahead of the synced block here
16
17
  // since `fetchTaggedLogs` only processes logs up to the synced block.
17
- const [syncedBlockHeader, siloedEventCommitment, txEffect] = await Promise.all([
18
+ const [anchorBlockHeader, siloedEventCommitment, txEffect] = await Promise.all([
18
19
  this.anchorBlockStore.getBlockHeader(),
19
20
  siloNullifier(contractAddress, eventCommitment),
20
21
  this.aztecNode.getTxEffect(txHash)
21
22
  ]);
22
- const syncedBlockNumber = syncedBlockHeader.getBlockNumber();
23
+ const anchorBlockNumber = anchorBlockHeader.getBlockNumber();
23
24
  if (!txEffect) {
24
25
  throw new Error(`Could not find tx effect for tx hash ${txHash}`);
25
26
  }
26
- if (txEffect.l2BlockNumber > syncedBlockNumber) {
27
- throw new Error(`Could not find tx effect for tx hash ${txHash} as of block number ${syncedBlockNumber}`);
27
+ if (txEffect.l2BlockNumber > anchorBlockNumber) {
28
+ throw new Error(`Could not find tx effect for tx hash ${txHash} as of block number ${anchorBlockNumber}`);
28
29
  }
29
- const eventInTx = txEffect.data.nullifiers.some((n)=>n.equals(siloedEventCommitment));
30
- if (!eventInTx) {
30
+ // Find the index of the event commitment in the nullifiers array to determine event ordering within the tx
31
+ const eventIndexInTx = txEffect.data.nullifiers.findIndex((n)=>n.equals(siloedEventCommitment));
32
+ if (eventIndexInTx === -1) {
31
33
  throw new Error(`Event commitment ${eventCommitment} (siloed as ${siloedEventCommitment}) is not present in tx ${txHash}`);
32
34
  }
33
- const [nullifierIndex] = await this.aztecNode.findLeavesIndexes(syncedBlockNumber, MerkleTreeId.NULLIFIER_TREE, [
34
- siloedEventCommitment
35
- ]);
36
- if (nullifierIndex === undefined) {
37
- throw new Error(`Event commitment ${eventCommitment} (siloed as ${siloedEventCommitment}) is not present on the nullifier tree at block ${syncedBlockNumber} (from tx ${txHash})`);
38
- }
39
- return this.privateEventStore.storePrivateEventLog(selector, content, Number(nullifierIndex.data), {
35
+ return this.privateEventStore.storePrivateEventLog(selector, randomness, content, siloedEventCommitment, {
40
36
  contractAddress,
41
37
  scope,
42
38
  txHash,
43
- l2BlockNumber: nullifierIndex.l2BlockNumber,
44
- l2BlockHash: nullifierIndex.l2BlockHash
45
- });
39
+ l2BlockNumber: txEffect.l2BlockNumber,
40
+ l2BlockHash: txEffect.l2BlockHash,
41
+ txIndexInBlock: txEffect.txIndexInBlock,
42
+ eventIndexInTx
43
+ }, this.jobId);
46
44
  }
47
45
  }