@aztec/pxe 0.0.1-commit.3469e52 → 0.0.1-commit.54489865

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 (150) hide show
  1. package/dest/bin/check_oracle_version.js +1 -1
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +7 -5
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  4. package/dest/block_synchronizer/block_synchronizer.js +56 -16
  5. package/dest/config/index.d.ts +3 -1
  6. package/dest/config/index.d.ts.map +1 -1
  7. package/dest/config/index.js +17 -0
  8. package/dest/contract_function_simulator/contract_function_simulator.d.ts +1 -1
  9. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  10. package/dest/contract_function_simulator/contract_function_simulator.js +5 -8
  11. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +1 -1
  12. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
  13. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +1 -1
  14. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +1 -1
  15. package/dest/contract_function_simulator/oracle/interfaces.d.ts +13 -10
  16. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  17. package/dest/contract_function_simulator/oracle/oracle.d.ts +5 -3
  18. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/oracle/oracle.js +27 -17
  20. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -22
  21. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  22. package/dest/contract_function_simulator/oracle/private_execution.js +0 -37
  23. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +9 -1
  24. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +16 -5
  26. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +20 -12
  27. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +36 -38
  29. package/dest/contract_sync/index.d.ts +23 -0
  30. package/dest/contract_sync/index.d.ts.map +1 -0
  31. package/dest/contract_sync/index.js +54 -0
  32. package/dest/debug/pxe_debug_utils.d.ts +16 -6
  33. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  34. package/dest/debug/pxe_debug_utils.js +20 -10
  35. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  36. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  37. package/dest/entrypoints/client/bundle/utils.js +10 -5
  38. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  39. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  40. package/dest/entrypoints/client/lazy/utils.js +11 -6
  41. package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
  42. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  43. package/dest/entrypoints/server/index.d.ts +2 -1
  44. package/dest/entrypoints/server/index.d.ts.map +1 -1
  45. package/dest/entrypoints/server/index.js +1 -0
  46. package/dest/entrypoints/server/utils.d.ts +1 -1
  47. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  48. package/dest/entrypoints/server/utils.js +19 -8
  49. package/dest/events/event_service.d.ts +2 -2
  50. package/dest/events/event_service.d.ts.map +1 -1
  51. package/dest/events/event_service.js +1 -1
  52. package/dest/job_coordinator/job_coordinator.d.ts +3 -2
  53. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
  54. package/dest/job_coordinator/job_coordinator.js +3 -2
  55. package/dest/logs/log_service.d.ts +3 -2
  56. package/dest/logs/log_service.d.ts.map +1 -1
  57. package/dest/logs/log_service.js +19 -13
  58. package/dest/notes/note_service.d.ts +4 -3
  59. package/dest/notes/note_service.d.ts.map +1 -1
  60. package/dest/notes/note_service.js +11 -10
  61. package/dest/oracle_version.d.ts +3 -3
  62. package/dest/oracle_version.d.ts.map +1 -1
  63. package/dest/oracle_version.js +4 -3
  64. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  65. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  66. package/dest/private_kernel/private_kernel_execution_prover.js +2 -2
  67. package/dest/private_kernel/private_kernel_oracle.d.ts +3 -3
  68. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  69. package/dest/pxe.d.ts +1 -1
  70. package/dest/pxe.d.ts.map +1 -1
  71. package/dest/pxe.js +18 -14
  72. package/dest/storage/contract_store/contract_store.d.ts +1 -2
  73. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  74. package/dest/storage/contract_store/contract_store.js +0 -12
  75. package/dest/storage/note_store/note_store.d.ts +43 -55
  76. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  77. package/dest/storage/note_store/note_store.js +235 -251
  78. package/dest/storage/note_store/stored_note.d.ts +16 -0
  79. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  80. package/dest/storage/note_store/stored_note.js +43 -0
  81. package/dest/storage/private_event_store/private_event_store.d.ts +17 -4
  82. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  83. package/dest/storage/private_event_store/private_event_store.js +158 -132
  84. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  85. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  86. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  87. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  88. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  89. package/dest/tagging/get_all_logs_by_tags.js +46 -0
  90. package/dest/tagging/index.d.ts +2 -1
  91. package/dest/tagging/index.d.ts.map +1 -1
  92. package/dest/tagging/index.js +1 -0
  93. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +3 -2
  94. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  95. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +2 -2
  96. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +3 -2
  97. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  98. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +5 -2
  99. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +3 -2
  100. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  101. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +2 -2
  102. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +1 -1
  103. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  104. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +5 -8
  105. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +3 -2
  106. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  107. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +7 -4
  108. package/package.json +16 -16
  109. package/src/bin/check_oracle_version.ts +1 -0
  110. package/src/block_synchronizer/block_synchronizer.ts +70 -33
  111. package/src/config/index.ts +14 -0
  112. package/src/contract_function_simulator/contract_function_simulator.ts +7 -11
  113. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
  114. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +1 -1
  115. package/src/contract_function_simulator/oracle/interfaces.ts +18 -9
  116. package/src/contract_function_simulator/oracle/oracle.ts +34 -21
  117. package/src/contract_function_simulator/oracle/private_execution.ts +1 -60
  118. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +32 -6
  119. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +55 -45
  120. package/src/contract_sync/index.ts +98 -0
  121. package/src/debug/pxe_debug_utils.ts +26 -11
  122. package/src/entrypoints/client/bundle/utils.ts +4 -13
  123. package/src/entrypoints/client/lazy/utils.ts +5 -13
  124. package/src/entrypoints/pxe_creation_options.ts +2 -1
  125. package/src/entrypoints/server/index.ts +1 -0
  126. package/src/entrypoints/server/utils.ts +15 -19
  127. package/src/events/event_service.ts +1 -1
  128. package/src/job_coordinator/job_coordinator.ts +4 -3
  129. package/src/logs/log_service.ts +30 -11
  130. package/src/notes/note_service.ts +18 -15
  131. package/src/oracle_version.ts +4 -3
  132. package/src/private_kernel/private_kernel_execution_prover.ts +6 -3
  133. package/src/private_kernel/private_kernel_oracle.ts +2 -2
  134. package/src/pxe.ts +48 -16
  135. package/src/storage/contract_store/contract_store.ts +0 -20
  136. package/src/storage/note_store/note_store.ts +273 -312
  137. package/src/storage/note_store/stored_note.ts +48 -0
  138. package/src/storage/private_event_store/private_event_store.ts +204 -167
  139. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  140. package/src/tagging/get_all_logs_by_tags.ts +68 -0
  141. package/src/tagging/index.ts +1 -0
  142. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +11 -1
  143. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +7 -1
  144. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +3 -1
  145. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +5 -17
  146. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +12 -3
  147. package/dest/tree_membership/tree_membership_service.d.ts +0 -50
  148. package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
  149. package/dest/tree_membership/tree_membership_service.js +0 -75
  150. package/src/tree_membership/tree_membership_service.ts +0 -97
package/src/pxe.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { PrivateEventFilter } from '@aztec/aztec.js/wallet';
2
2
  import { BlockNumber } from '@aztec/foundation/branded-types';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
- import { type Logger, createLogger } from '@aztec/foundation/log';
4
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
5
5
  import { SerialQueue } from '@aztec/foundation/queue';
6
6
  import { Timer } from '@aztec/foundation/timer';
7
7
  import { KeyStore } from '@aztec/key-store';
@@ -18,7 +18,6 @@ import {
18
18
  } from '@aztec/stdlib/abi';
19
19
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
20
20
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
21
- import { L2BlockHash } from '@aztec/stdlib/block';
22
21
  import {
23
22
  CompleteAddress,
24
23
  type ContractInstanceWithAddress,
@@ -59,8 +58,8 @@ import {
59
58
  ContractFunctionSimulator,
60
59
  generateSimulatedProvingResult,
61
60
  } from './contract_function_simulator/contract_function_simulator.js';
62
- import { readCurrentClassId } from './contract_function_simulator/oracle/private_execution.js';
63
61
  import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
62
+ import { ensureContractSynced, readCurrentClassId } from './contract_sync/index.js';
64
63
  import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
65
64
  import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
66
65
  import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
@@ -129,6 +128,10 @@ export class PXE {
129
128
  config: PXEConfig,
130
129
  loggerOrSuffix?: string | Logger,
131
130
  ) {
131
+ // Extract bindings from the logger, or use empty bindings if a string suffix is provided.
132
+ const bindings: LoggerBindings | undefined =
133
+ loggerOrSuffix && typeof loggerOrSuffix !== 'string' ? loggerOrSuffix.getBindings() : undefined;
134
+
132
135
  const log =
133
136
  !loggerOrSuffix || typeof loggerOrSuffix === 'string'
134
137
  ? createLogger(loggerOrSuffix ? `pxe:service:${loggerOrSuffix}` : `pxe:service`)
@@ -138,7 +141,7 @@ export class PXE {
138
141
  const addressStore = new AddressStore(store);
139
142
  const privateEventStore = new PrivateEventStore(store);
140
143
  const contractStore = new ContractStore(store);
141
- const noteStore = await NoteStore.create(store);
144
+ const noteStore = new NoteStore(store);
142
145
  const anchorBlockStore = new AnchorBlockStore(store);
143
146
  const senderTaggingStore = new SenderTaggingStore(store);
144
147
  const senderAddressBookStore = new SenderAddressBookStore(store);
@@ -154,13 +157,19 @@ export class PXE {
154
157
  privateEventStore,
155
158
  tipsStore,
156
159
  config,
157
- loggerOrSuffix,
160
+ bindings,
158
161
  );
159
162
 
160
- const jobCoordinator = new JobCoordinator(store);
161
- jobCoordinator.registerStores([capsuleStore, senderTaggingStore, recipientTaggingStore, privateEventStore]);
163
+ const jobCoordinator = new JobCoordinator(store, bindings);
164
+ jobCoordinator.registerStores([
165
+ capsuleStore,
166
+ senderTaggingStore,
167
+ recipientTaggingStore,
168
+ privateEventStore,
169
+ noteStore,
170
+ ]);
162
171
 
163
- const debugUtils = new PXEDebugUtils(contractStore, noteStore);
172
+ const debugUtils = new PXEDebugUtils(contractStore, noteStore, synchronizer, anchorBlockStore);
164
173
 
165
174
  const jobQueue = new SerialQueue();
166
175
 
@@ -187,7 +196,7 @@ export class PXE {
187
196
  debugUtils,
188
197
  );
189
198
 
190
- debugUtils.setPXE(pxe);
199
+ debugUtils.setPXE(pxe, pxe.#putInJobQueue.bind(pxe));
191
200
 
192
201
  pxe.jobQueue.start();
193
202
 
@@ -289,6 +298,15 @@ export class PXE {
289
298
  try {
290
299
  const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
291
300
 
301
+ await ensureContractSynced(
302
+ contractAddress,
303
+ functionSelector,
304
+ privateSyncCall => this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
305
+ this.node,
306
+ this.contractStore,
307
+ anchorBlockHeader,
308
+ );
309
+
292
310
  const result = await contractFunctionSimulator.run(
293
311
  txRequest,
294
312
  contractAddress,
@@ -384,9 +402,14 @@ export class PXE {
384
402
  config: PrivateKernelExecutionProverConfig,
385
403
  ): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
386
404
  const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
387
- const anchorBlockHash = L2BlockHash.fromField(await anchorBlockHeader.hash());
405
+ const anchorBlockHash = await anchorBlockHeader.hash();
388
406
  const kernelOracle = new PrivateKernelOracle(this.contractStore, this.keyStore, this.node, anchorBlockHash);
389
- const kernelTraceProver = new PrivateKernelExecutionProver(kernelOracle, proofCreator, !this.proverEnabled);
407
+ const kernelTraceProver = new PrivateKernelExecutionProver(
408
+ kernelOracle,
409
+ proofCreator,
410
+ !this.proverEnabled,
411
+ this.log.getBindings(),
412
+ );
390
413
  this.log.debug(`Executing kernel trace prover (${JSON.stringify(config)})...`);
391
414
  return await kernelTraceProver.proveWithKernels(txExecutionRequest.toTxRequest(), privateExecutionResult, config);
392
415
  }
@@ -428,7 +451,6 @@ export class PXE {
428
451
  }
429
452
 
430
453
  await this.addressStore.addCompleteAddress(accountCompleteAddress);
431
- await this.noteStore.addScope(accountCompleteAddress.address);
432
454
  return accountCompleteAddress;
433
455
  }
434
456
 
@@ -948,8 +970,14 @@ export class PXE {
948
970
  const functionTimer = new Timer();
949
971
  const contractFunctionSimulator = this.#getSimulatorForTx();
950
972
 
951
- await this.contractStore.syncPrivateState(call.to, call.selector, privateSyncCall =>
952
- this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
973
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
974
+ await ensureContractSynced(
975
+ call.to,
976
+ call.selector,
977
+ privateSyncCall => this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
978
+ this.node,
979
+ this.contractStore,
980
+ anchorBlockHeader,
953
981
  );
954
982
 
955
983
  const executionResult = await this.#simulateUtility(
@@ -1008,15 +1036,19 @@ export class PXE {
1008
1036
  await this.#putInJobQueue(async jobId => {
1009
1037
  await this.blockStateSynchronizer.sync();
1010
1038
 
1011
- anchorBlockNumber = (await this.anchorBlockStore.getBlockHeader()).getBlockNumber();
1039
+ const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
1040
+ anchorBlockNumber = anchorBlockHeader.getBlockNumber();
1012
1041
 
1013
1042
  const contractFunctionSimulator = this.#getSimulatorForTx();
1014
1043
 
1015
- await this.contractStore.syncPrivateState(
1044
+ await ensureContractSynced(
1016
1045
  filter.contractAddress,
1017
1046
  null,
1018
1047
  async privateSyncCall =>
1019
1048
  await this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
1049
+ this.node,
1050
+ this.contractStore,
1051
+ anchorBlockHeader,
1020
1052
  );
1021
1053
  });
1022
1054
 
@@ -3,7 +3,6 @@ import type { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { toArray } from '@aztec/foundation/iterable';
4
4
  import type { MembershipWitness } from '@aztec/foundation/trees';
5
5
  import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
6
- import { isProtocolContract } from '@aztec/protocol-contracts';
7
6
  import {
8
7
  type ContractArtifact,
9
8
  type FunctionAbi,
@@ -317,23 +316,4 @@ export class ContractStore {
317
316
  returnTypes: functionDao.returnTypes,
318
317
  };
319
318
  }
320
-
321
- // Synchronize target contract data
322
- public async syncPrivateState(
323
- contractAddress: AztecAddress,
324
- functionToInvokeAfterSync: FunctionSelector | null,
325
- utilityExecutor: (privateSyncCall: FunctionCall) => Promise<any>,
326
- ) {
327
- // Protocol contracts don't have private state to sync
328
- if (!isProtocolContract(contractAddress)) {
329
- const syncPrivateStateFunctionCall = await this.getFunctionCall('sync_private_state', [], contractAddress);
330
- if (functionToInvokeAfterSync && functionToInvokeAfterSync.equals(syncPrivateStateFunctionCall.selector)) {
331
- throw new Error(
332
- 'Forbidden `sync_private_state` invocation. `sync_private_state` can only be invoked by PXE, manual execution can lead to inconsistencies.',
333
- );
334
- }
335
-
336
- return utilityExecutor(syncPrivateStateFunctionCall);
337
- }
338
- }
339
319
  }