@aztec/pxe 0.0.1-commit.03f7ef2 → 0.0.1-commit.1142ef1
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.
- package/dest/block_synchronizer/block_synchronizer.d.ts +8 -8
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +15 -20
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +25 -22
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +34 -28
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -2
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +5 -2
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +4 -4
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +4 -5
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +17 -26
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +14 -39
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +20 -19
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +47 -45
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +5 -5
- package/dest/debug/pxe_debug_utils.d.ts +6 -6
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +7 -7
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +10 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +10 -1
- package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.d.ts +1 -1
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +11 -7
- package/dest/error_enriching.d.ts +4 -4
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +6 -6
- package/dest/events/event_service.d.ts +7 -7
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +8 -8
- package/dest/events/private_event_filter_validator.d.ts +6 -6
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +4 -4
- package/dest/job_coordinator/job_coordinator.d.ts +74 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +93 -0
- package/dest/logs/log_service.d.ts +14 -31
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +61 -180
- package/dest/notes/note_service.d.ts +7 -7
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +14 -14
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +2 -2
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -1
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.js +2 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +3 -4
- package/dest/private_kernel/private_kernel_oracle.d.ts +3 -2
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts +5 -5
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +9 -10
- package/dest/public_storage/public_storage_service.d.ts +4 -4
- package/dest/public_storage/public_storage_service.d.ts.map +1 -1
- package/dest/public_storage/public_storage_service.js +4 -4
- package/dest/pxe.d.ts +11 -9
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +113 -87
- package/dest/storage/address_store/address_store.d.ts +11 -0
- package/dest/storage/address_store/address_store.d.ts.map +1 -0
- package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +1 -1
- package/dest/storage/address_store/index.d.ts +2 -0
- package/dest/storage/address_store/index.d.ts.map +1 -0
- package/dest/storage/address_store/index.js +1 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
- package/dest/storage/{anchor_block_data_provider/anchor_block_data_provider.js → anchor_block_store/anchor_block_store.js} +1 -1
- package/dest/storage/anchor_block_store/index.d.ts +2 -0
- package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
- package/dest/storage/anchor_block_store/index.js +1 -0
- package/dest/storage/{capsule_data_provider/capsule_data_provider.d.ts → capsule_store/capsule_store.d.ts} +2 -2
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
- package/dest/storage/{capsule_data_provider/capsule_data_provider.js → capsule_store/capsule_store.js} +1 -1
- package/dest/storage/capsule_store/index.d.ts +2 -0
- package/dest/storage/capsule_store/index.d.ts.map +1 -0
- package/dest/storage/capsule_store/index.js +1 -0
- package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +4 -3
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +14 -2
- package/dest/storage/contract_store/index.d.ts +2 -0
- package/dest/storage/contract_store/index.d.ts.map +1 -0
- package/dest/storage/contract_store/index.js +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
- package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
- package/dest/storage/index.d.ts +8 -8
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +7 -7
- package/dest/storage/note_store/index.d.ts +3 -0
- package/dest/storage/note_store/index.d.ts.map +1 -0
- package/dest/storage/note_store/index.js +2 -0
- package/dest/storage/{note_data_provider/note_data_provider.d.ts → note_store/note_store.d.ts} +7 -7
- package/dest/storage/note_store/note_store.d.ts.map +1 -0
- package/dest/storage/{note_data_provider/note_data_provider.js → note_store/note_store.js} +6 -6
- package/dest/storage/private_event_store/private_event_store.d.ts +56 -0
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
- package/dest/storage/{private_event_data_provider/private_event_data_provider.js → private_event_store/private_event_store.js} +59 -16
- package/dest/storage/tagging_store/index.d.ts +4 -0
- package/dest/storage/tagging_store/index.d.ts.map +1 -0
- package/dest/storage/tagging_store/index.js +3 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +21 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
- package/dest/{tagging/recipient_sync/new_recipient_tagging_data_provider.js → storage/tagging_store/recipient_tagging_store.js} +3 -3
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_address_book_store.js +30 -0
- package/dest/storage/{tagging_data_provider/sender_tagging_data_provider.d.ts → tagging_store/sender_tagging_store.d.ts} +3 -3
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/{tagging_data_provider/sender_tagging_data_provider.js → tagging_store/sender_tagging_store.js} +3 -3
- package/dest/tagging/constants.d.ts +2 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +10 -3
- package/dest/tagging/index.d.ts +14 -3
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +13 -2
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +3 -3
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +7 -7
- package/dest/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.d.ts +3 -4
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.js +8 -23
- package/dest/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.d.ts +1 -1
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
- package/dest/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.js +2 -2
- package/dest/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.js +3 -3
- package/dest/tree_membership/tree_membership_service.d.ts +4 -4
- package/dest/tree_membership/tree_membership_service.d.ts.map +1 -1
- package/dest/tree_membership/tree_membership_service.js +5 -5
- package/package.json +16 -16
- package/src/block_synchronizer/block_synchronizer.ts +14 -19
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +57 -48
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +4 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +4 -6
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +52 -80
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +53 -49
- package/src/contract_function_simulator/proxied_contract_data_source.ts +7 -7
- package/src/debug/pxe_debug_utils.ts +6 -6
- package/src/entrypoints/client/bundle/utils.ts +7 -1
- package/src/entrypoints/client/lazy/utils.ts +7 -2
- package/src/entrypoints/pxe_creation_options.ts +2 -1
- package/src/entrypoints/server/utils.ts +11 -15
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +8 -6
- package/src/events/private_event_filter_validator.ts +5 -5
- package/src/job_coordinator/job_coordinator.ts +149 -0
- package/src/logs/log_service.ts +92 -254
- package/src/notes/note_service.ts +13 -13
- package/src/private_kernel/hints/build_private_kernel_reset_private_inputs.ts +1 -2
- package/src/private_kernel/private_kernel_execution_prover.ts +2 -4
- package/src/private_kernel/private_kernel_oracle.ts +2 -1
- package/src/private_kernel/private_kernel_oracle_impl.ts +8 -14
- package/src/public_storage/public_storage_service.ts +3 -3
- package/src/pxe.ts +154 -106
- package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +1 -1
- package/src/storage/address_store/index.ts +1 -0
- package/src/storage/{anchor_block_data_provider/anchor_block_data_provider.ts → anchor_block_store/anchor_block_store.ts} +1 -1
- package/src/storage/anchor_block_store/index.ts +1 -0
- package/src/storage/{capsule_data_provider/capsule_data_provider.ts → capsule_store/capsule_store.ts} +1 -1
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +22 -2
- package/src/storage/contract_store/index.ts +1 -0
- package/src/storage/index.ts +7 -7
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/{note_data_provider/note_data_provider.ts → note_store/note_store.ts} +7 -7
- package/src/storage/{private_event_data_provider/private_event_data_provider.ts → private_event_store/private_event_store.ts} +72 -18
- package/src/storage/tagging_store/index.ts +3 -0
- package/src/{tagging/recipient_sync/new_recipient_tagging_data_provider.ts → storage/tagging_store/recipient_tagging_store.ts} +3 -3
- package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
- package/src/storage/{tagging_data_provider/sender_tagging_data_provider.ts → tagging_store/sender_tagging_store.ts} +3 -3
- package/src/tagging/constants.ts +10 -3
- package/src/tagging/index.ts +16 -2
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +11 -8
- package/src/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.ts +9 -25
- package/src/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.ts +6 -2
- package/src/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.ts +4 -4
- package/src/tree_membership/tree_membership_service.ts +4 -4
- package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
- package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.d.ts +0 -2
- package/dest/storage/address_data_provider/index.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.js +0 -1
- package/dest/storage/anchor_block_data_provider/anchor_block_data_provider.d.ts +0 -9
- package/dest/storage/anchor_block_data_provider/anchor_block_data_provider.d.ts.map +0 -1
- package/dest/storage/anchor_block_data_provider/index.d.ts +0 -2
- package/dest/storage/anchor_block_data_provider/index.d.ts.map +0 -1
- package/dest/storage/anchor_block_data_provider/index.js +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/index.d.ts +0 -2
- package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.d.ts +0 -2
- package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.d.ts +0 -3
- package/dest/storage/note_data_provider/index.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.js +0 -2
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -51
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.d.ts +0 -3
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -2
- package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.d.ts +0 -31
- package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.js +0 -65
- package/dest/storage/tagging_data_provider/sender_tagging_data_provider.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.d.ts +0 -21
- package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.d.ts.map +0 -1
- package/dest/tagging/sync/sync_sender_tagging_indexes.d.ts.map +0 -1
- package/dest/tagging/sync/utils/get_status_change_of_pending.d.ts.map +0 -1
- package/dest/tagging/sync/utils/load_and_store_new_tagging_indexes.d.ts.map +0 -1
- package/dest/tagging/utils.d.ts +0 -18
- package/dest/tagging/utils.d.ts.map +0 -1
- package/dest/tagging/utils.js +0 -25
- package/src/storage/address_data_provider/index.ts +0 -1
- package/src/storage/anchor_block_data_provider/index.ts +0 -1
- package/src/storage/capsule_data_provider/index.ts +0 -1
- package/src/storage/contract_data_provider/index.ts +0 -1
- package/src/storage/note_data_provider/index.ts +0 -2
- package/src/storage/tagging_data_provider/index.ts +0 -2
- package/src/storage/tagging_data_provider/recipient_tagging_data_provider.ts +0 -86
- package/src/tagging/utils.ts +0 -32
- /package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +0 -0
- /package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +0 -0
package/src/pxe.ts
CHANGED
|
@@ -59,23 +59,26 @@ import {
|
|
|
59
59
|
generateSimulatedProvingResult,
|
|
60
60
|
} from './contract_function_simulator/contract_function_simulator.js';
|
|
61
61
|
import { readCurrentClassId } from './contract_function_simulator/oracle/private_execution.js';
|
|
62
|
-
import {
|
|
62
|
+
import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
|
|
63
|
+
import { ProxiedNodeFactory } from './contract_function_simulator/proxied_node.js';
|
|
63
64
|
import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
|
|
64
65
|
import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
|
|
65
66
|
import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
|
|
67
|
+
import { JobCoordinator } from './job_coordinator/job_coordinator.js';
|
|
66
68
|
import {
|
|
67
69
|
PrivateKernelExecutionProver,
|
|
68
70
|
type PrivateKernelExecutionProverConfig,
|
|
69
71
|
} from './private_kernel/private_kernel_execution_prover.js';
|
|
70
72
|
import { PrivateKernelOracleImpl } from './private_kernel/private_kernel_oracle_impl.js';
|
|
71
|
-
import {
|
|
72
|
-
import {
|
|
73
|
-
import {
|
|
74
|
-
import {
|
|
75
|
-
import {
|
|
76
|
-
import {
|
|
77
|
-
import {
|
|
78
|
-
import {
|
|
73
|
+
import { AddressStore } from './storage/address_store/address_store.js';
|
|
74
|
+
import { AnchorBlockStore } from './storage/anchor_block_store/anchor_block_store.js';
|
|
75
|
+
import { CapsuleStore } from './storage/capsule_store/capsule_store.js';
|
|
76
|
+
import { ContractStore } from './storage/contract_store/contract_store.js';
|
|
77
|
+
import { NoteStore } from './storage/note_store/note_store.js';
|
|
78
|
+
import { PrivateEventStore } from './storage/private_event_store/private_event_store.js';
|
|
79
|
+
import { RecipientTaggingStore } from './storage/tagging_store/recipient_tagging_store.js';
|
|
80
|
+
import { SenderAddressBookStore } from './storage/tagging_store/sender_address_book_store.js';
|
|
81
|
+
import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store.js';
|
|
79
82
|
|
|
80
83
|
export type PackedPrivateEvent = InTx & {
|
|
81
84
|
packedEvent: Fr[];
|
|
@@ -91,20 +94,22 @@ export class PXE {
|
|
|
91
94
|
private node: AztecNode,
|
|
92
95
|
private blockStateSynchronizer: BlockSynchronizer,
|
|
93
96
|
private keyStore: KeyStore,
|
|
94
|
-
private
|
|
95
|
-
private
|
|
96
|
-
private
|
|
97
|
-
private
|
|
98
|
-
private
|
|
99
|
-
private
|
|
100
|
-
private
|
|
101
|
-
private
|
|
97
|
+
private contractStore: ContractStore,
|
|
98
|
+
private noteStore: NoteStore,
|
|
99
|
+
private capsuleStore: CapsuleStore,
|
|
100
|
+
private anchorBlockStore: AnchorBlockStore,
|
|
101
|
+
private senderTaggingStore: SenderTaggingStore,
|
|
102
|
+
private senderAddressBookStore: SenderAddressBookStore,
|
|
103
|
+
private recipientTaggingStore: RecipientTaggingStore,
|
|
104
|
+
private addressStore: AddressStore,
|
|
105
|
+
private privateEventStore: PrivateEventStore,
|
|
102
106
|
private simulator: CircuitSimulator,
|
|
103
107
|
private proverEnabled: boolean,
|
|
104
108
|
private proofCreator: PrivateKernelProver,
|
|
105
109
|
private protocolContractsProvider: ProtocolContractsProvider,
|
|
106
110
|
private log: Logger,
|
|
107
111
|
private jobQueue: SerialQueue,
|
|
112
|
+
private jobCoordinator: JobCoordinator,
|
|
108
113
|
public debug: PXEDebugUtils,
|
|
109
114
|
) {}
|
|
110
115
|
|
|
@@ -130,27 +135,30 @@ export class PXE {
|
|
|
130
135
|
: loggerOrSuffix;
|
|
131
136
|
|
|
132
137
|
const proverEnabled = !!config.proverEnabled;
|
|
133
|
-
const
|
|
134
|
-
const
|
|
135
|
-
const
|
|
136
|
-
const
|
|
137
|
-
const
|
|
138
|
-
const
|
|
139
|
-
const
|
|
140
|
-
const
|
|
138
|
+
const addressStore = new AddressStore(store);
|
|
139
|
+
const privateEventStore = new PrivateEventStore(store);
|
|
140
|
+
const contractStore = new ContractStore(store);
|
|
141
|
+
const noteStore = await NoteStore.create(store);
|
|
142
|
+
const anchorBlockStore = new AnchorBlockStore(store);
|
|
143
|
+
const senderTaggingStore = new SenderTaggingStore(store);
|
|
144
|
+
const senderAddressBookStore = new SenderAddressBookStore(store);
|
|
145
|
+
const recipientTaggingStore = new RecipientTaggingStore(store);
|
|
146
|
+
const capsuleStore = new CapsuleStore(store);
|
|
141
147
|
const keyStore = new KeyStore(store);
|
|
142
148
|
const tipsStore = new L2TipsKVStore(store, 'pxe');
|
|
143
149
|
const synchronizer = new BlockSynchronizer(
|
|
144
150
|
node,
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
151
|
+
anchorBlockStore,
|
|
152
|
+
noteStore,
|
|
153
|
+
privateEventStore,
|
|
148
154
|
tipsStore,
|
|
149
155
|
config,
|
|
150
156
|
loggerOrSuffix,
|
|
151
157
|
);
|
|
152
158
|
|
|
153
|
-
const
|
|
159
|
+
const jobCoordinator = new JobCoordinator(store);
|
|
160
|
+
|
|
161
|
+
const debugUtils = new PXEDebugUtils(contractStore, noteStore);
|
|
154
162
|
|
|
155
163
|
const jobQueue = new SerialQueue();
|
|
156
164
|
|
|
@@ -158,20 +166,22 @@ export class PXE {
|
|
|
158
166
|
node,
|
|
159
167
|
synchronizer,
|
|
160
168
|
keyStore,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
+
contractStore,
|
|
170
|
+
noteStore,
|
|
171
|
+
capsuleStore,
|
|
172
|
+
anchorBlockStore,
|
|
173
|
+
senderTaggingStore,
|
|
174
|
+
senderAddressBookStore,
|
|
175
|
+
recipientTaggingStore,
|
|
176
|
+
addressStore,
|
|
177
|
+
privateEventStore,
|
|
169
178
|
simulator,
|
|
170
179
|
proverEnabled,
|
|
171
180
|
proofCreator,
|
|
172
181
|
protocolContractsProvider,
|
|
173
182
|
log,
|
|
174
183
|
jobQueue,
|
|
184
|
+
jobCoordinator,
|
|
175
185
|
debugUtils,
|
|
176
186
|
);
|
|
177
187
|
|
|
@@ -188,22 +198,20 @@ export class PXE {
|
|
|
188
198
|
// Internal methods
|
|
189
199
|
|
|
190
200
|
#getSimulatorForTx(overrides?: { contracts?: ContractOverrides }) {
|
|
191
|
-
const
|
|
192
|
-
this.contractDataProvider,
|
|
193
|
-
overrides?.contracts,
|
|
194
|
-
);
|
|
201
|
+
const proxyContractStore = ProxiedContractStoreFactory.create(this.contractStore, overrides?.contracts);
|
|
195
202
|
|
|
196
203
|
return new ContractFunctionSimulator(
|
|
197
|
-
|
|
198
|
-
this.
|
|
204
|
+
proxyContractStore,
|
|
205
|
+
this.noteStore,
|
|
199
206
|
this.keyStore,
|
|
200
|
-
this.
|
|
201
|
-
this.node,
|
|
202
|
-
this.
|
|
203
|
-
this.
|
|
204
|
-
this.
|
|
205
|
-
this.
|
|
206
|
-
this.
|
|
207
|
+
this.addressStore,
|
|
208
|
+
ProxiedNodeFactory.create(this.node),
|
|
209
|
+
this.anchorBlockStore,
|
|
210
|
+
this.senderTaggingStore,
|
|
211
|
+
this.recipientTaggingStore,
|
|
212
|
+
this.senderAddressBookStore,
|
|
213
|
+
this.capsuleStore,
|
|
214
|
+
this.privateEventStore,
|
|
207
215
|
this.simulator,
|
|
208
216
|
);
|
|
209
217
|
}
|
|
@@ -228,7 +236,7 @@ export class PXE {
|
|
|
228
236
|
*
|
|
229
237
|
* Useful for tasks that cannot run concurrently, such as contract function simulation.
|
|
230
238
|
*/
|
|
231
|
-
#putInJobQueue<T>(fn: () => Promise<T>): Promise<T> {
|
|
239
|
+
#putInJobQueue<T>(fn: (jobId: string) => Promise<T>): Promise<T> {
|
|
232
240
|
// TODO(#12636): relax the conditions under which we forbid concurrency.
|
|
233
241
|
if (this.jobQueue.length() != 0) {
|
|
234
242
|
this.log.warn(
|
|
@@ -236,7 +244,22 @@ export class PXE {
|
|
|
236
244
|
);
|
|
237
245
|
}
|
|
238
246
|
|
|
239
|
-
return this.jobQueue.put(
|
|
247
|
+
return this.jobQueue.put(async () => {
|
|
248
|
+
const jobId = this.jobCoordinator.beginJob();
|
|
249
|
+
this.log.verbose(`Beginning job ${jobId}`);
|
|
250
|
+
|
|
251
|
+
try {
|
|
252
|
+
const result = await fn(jobId);
|
|
253
|
+
this.log.verbose(`Committing job ${jobId}`);
|
|
254
|
+
|
|
255
|
+
await this.jobCoordinator.commitJob(jobId);
|
|
256
|
+
return result;
|
|
257
|
+
} catch (err) {
|
|
258
|
+
this.log.verbose(`Aborting job ${jobId}`);
|
|
259
|
+
await this.jobCoordinator.abortJob(jobId);
|
|
260
|
+
throw err;
|
|
261
|
+
}
|
|
262
|
+
});
|
|
240
263
|
}
|
|
241
264
|
|
|
242
265
|
async #registerProtocolContracts() {
|
|
@@ -244,8 +267,8 @@ export class PXE {
|
|
|
244
267
|
for (const name of protocolContractNames) {
|
|
245
268
|
const { address, contractClass, instance, artifact } =
|
|
246
269
|
await this.protocolContractsProvider.getProtocolContractArtifact(name);
|
|
247
|
-
await this.
|
|
248
|
-
await this.
|
|
270
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
271
|
+
await this.contractStore.addContractInstance(instance);
|
|
249
272
|
registered[name] = address.toString();
|
|
250
273
|
}
|
|
251
274
|
this.log.verbose(`Registered protocol contracts in pxe`, registered);
|
|
@@ -269,12 +292,13 @@ export class PXE {
|
|
|
269
292
|
async #executePrivate(
|
|
270
293
|
contractFunctionSimulator: ContractFunctionSimulator,
|
|
271
294
|
txRequest: TxExecutionRequest,
|
|
272
|
-
scopes
|
|
295
|
+
scopes: AztecAddress[] | undefined,
|
|
296
|
+
jobId: string,
|
|
273
297
|
): Promise<PrivateExecutionResult> {
|
|
274
298
|
const { origin: contractAddress, functionSelector } = txRequest;
|
|
275
299
|
|
|
276
300
|
try {
|
|
277
|
-
const anchorBlockHeader = await this.
|
|
301
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
278
302
|
|
|
279
303
|
const result = await contractFunctionSimulator.run(
|
|
280
304
|
txRequest,
|
|
@@ -286,12 +310,13 @@ export class PXE {
|
|
|
286
310
|
// contract entrypoint
|
|
287
311
|
undefined, // senderForTags
|
|
288
312
|
scopes,
|
|
313
|
+
jobId,
|
|
289
314
|
);
|
|
290
315
|
this.log.debug(`Private simulation completed for ${contractAddress.toString()}:${functionSelector}`);
|
|
291
316
|
return result;
|
|
292
317
|
} catch (err) {
|
|
293
318
|
if (err instanceof SimulationError) {
|
|
294
|
-
await enrichSimulationError(err, this.
|
|
319
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
295
320
|
}
|
|
296
321
|
throw err;
|
|
297
322
|
}
|
|
@@ -304,20 +329,22 @@ export class PXE {
|
|
|
304
329
|
* @param authWitnesses - Authentication witnesses required for the function call.
|
|
305
330
|
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
306
331
|
* accounts if not specified.
|
|
332
|
+
* @param jobId - The job ID for staged writes.
|
|
307
333
|
* @returns The simulation result containing the outputs of the utility function.
|
|
308
334
|
*/
|
|
309
335
|
async #simulateUtility(
|
|
310
336
|
contractFunctionSimulator: ContractFunctionSimulator,
|
|
311
337
|
call: FunctionCall,
|
|
312
|
-
authWitnesses
|
|
313
|
-
scopes
|
|
338
|
+
authWitnesses: AuthWitness[] | undefined,
|
|
339
|
+
scopes: AztecAddress[] | undefined,
|
|
340
|
+
jobId: string,
|
|
314
341
|
) {
|
|
315
342
|
try {
|
|
316
|
-
const anchorBlockHeader = await this.
|
|
317
|
-
return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes);
|
|
343
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
344
|
+
return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes, jobId);
|
|
318
345
|
} catch (err) {
|
|
319
346
|
if (err instanceof SimulationError) {
|
|
320
|
-
await enrichSimulationError(err, this.
|
|
347
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
321
348
|
}
|
|
322
349
|
throw err;
|
|
323
350
|
}
|
|
@@ -341,7 +368,7 @@ export class PXE {
|
|
|
341
368
|
} catch (err) {
|
|
342
369
|
if (err instanceof SimulationError) {
|
|
343
370
|
try {
|
|
344
|
-
await enrichPublicSimulationError(err, this.
|
|
371
|
+
await enrichPublicSimulationError(err, this.contractStore, this.log);
|
|
345
372
|
} catch (enrichErr) {
|
|
346
373
|
this.log.error(`Failed to enrich public simulation error: ${enrichErr}`);
|
|
347
374
|
}
|
|
@@ -369,7 +396,7 @@ export class PXE {
|
|
|
369
396
|
): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
370
397
|
const simulationAnchorBlock = privateExecutionResult.getSimulationAnchorBlockNumber();
|
|
371
398
|
const kernelOracle = new PrivateKernelOracleImpl(
|
|
372
|
-
this.
|
|
399
|
+
this.contractStore,
|
|
373
400
|
this.keyStore,
|
|
374
401
|
this.node,
|
|
375
402
|
simulationAnchorBlock,
|
|
@@ -382,7 +409,7 @@ export class PXE {
|
|
|
382
409
|
// Public API
|
|
383
410
|
|
|
384
411
|
public getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
|
|
385
|
-
return this.
|
|
412
|
+
return this.contractStore.getContractInstance(address);
|
|
386
413
|
}
|
|
387
414
|
|
|
388
415
|
/**
|
|
@@ -407,7 +434,7 @@ export class PXE {
|
|
|
407
434
|
isContractClassPubliclyRegistered: boolean;
|
|
408
435
|
artifact: ContractArtifact | undefined;
|
|
409
436
|
}> {
|
|
410
|
-
const artifact = await this.
|
|
437
|
+
const artifact = await this.contractStore.getContractArtifact(id);
|
|
411
438
|
if (!artifact) {
|
|
412
439
|
this.log.warn(`No artifact found for contract class ${id.toString()} when looking for its metadata`);
|
|
413
440
|
}
|
|
@@ -437,7 +464,7 @@ export class PXE {
|
|
|
437
464
|
}> {
|
|
438
465
|
let instance;
|
|
439
466
|
try {
|
|
440
|
-
instance = await this.
|
|
467
|
+
instance = await this.contractStore.getContractInstance(address);
|
|
441
468
|
} catch {
|
|
442
469
|
this.log.warn(`No instance found for contract ${address.toString()} when looking for its metadata`);
|
|
443
470
|
}
|
|
@@ -469,8 +496,8 @@ export class PXE {
|
|
|
469
496
|
this.log.debug(`Registered account\n ${accountCompleteAddress.toReadableString()}`);
|
|
470
497
|
}
|
|
471
498
|
|
|
472
|
-
await this.
|
|
473
|
-
await this.
|
|
499
|
+
await this.addressStore.addCompleteAddress(accountCompleteAddress);
|
|
500
|
+
await this.noteStore.addScope(accountCompleteAddress.address);
|
|
474
501
|
return accountCompleteAddress;
|
|
475
502
|
}
|
|
476
503
|
|
|
@@ -491,7 +518,7 @@ export class PXE {
|
|
|
491
518
|
return sender;
|
|
492
519
|
}
|
|
493
520
|
|
|
494
|
-
const wasAdded = await this.
|
|
521
|
+
const wasAdded = await this.senderAddressBookStore.addSender(sender);
|
|
495
522
|
|
|
496
523
|
if (wasAdded) {
|
|
497
524
|
this.log.info(`Added sender:\n ${sender.toString()}`);
|
|
@@ -507,7 +534,7 @@ export class PXE {
|
|
|
507
534
|
* @returns Senders registered in this PXE.
|
|
508
535
|
*/
|
|
509
536
|
public getSenders(): Promise<AztecAddress[]> {
|
|
510
|
-
return this.
|
|
537
|
+
return this.senderAddressBookStore.getSenders();
|
|
511
538
|
}
|
|
512
539
|
|
|
513
540
|
/**
|
|
@@ -515,7 +542,7 @@ export class PXE {
|
|
|
515
542
|
* @param sender - The address of the sender to remove.
|
|
516
543
|
*/
|
|
517
544
|
public async removeSender(sender: AztecAddress): Promise<void> {
|
|
518
|
-
const wasRemoved = await this.
|
|
545
|
+
const wasRemoved = await this.senderAddressBookStore.removeSender(sender);
|
|
519
546
|
|
|
520
547
|
if (wasRemoved) {
|
|
521
548
|
this.log.info(`Removed sender:\n ${sender.toString()}`);
|
|
@@ -530,7 +557,7 @@ export class PXE {
|
|
|
530
557
|
*/
|
|
531
558
|
public async getRegisteredAccounts(): Promise<CompleteAddress[]> {
|
|
532
559
|
// Get complete addresses of both the recipients and the accounts
|
|
533
|
-
const completeAddresses = await this.
|
|
560
|
+
const completeAddresses = await this.addressStore.getCompleteAddresses();
|
|
534
561
|
// Filter out the addresses not corresponding to accounts
|
|
535
562
|
const accounts = await this.keyStore.getAccounts();
|
|
536
563
|
return completeAddresses.filter(completeAddress =>
|
|
@@ -545,7 +572,7 @@ export class PXE {
|
|
|
545
572
|
*/
|
|
546
573
|
public async registerContractClass(artifact: ContractArtifact): Promise<void> {
|
|
547
574
|
const { id: contractClassId } = await getContractClassFromArtifact(artifact);
|
|
548
|
-
await this.
|
|
575
|
+
await this.contractStore.addContractArtifact(contractClassId, artifact);
|
|
549
576
|
this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
|
|
550
577
|
}
|
|
551
578
|
|
|
@@ -574,7 +601,7 @@ export class PXE {
|
|
|
574
601
|
if (!computedAddress.equals(instance.address)) {
|
|
575
602
|
throw new Error('Added a contract in which the address does not match the contract instance.');
|
|
576
603
|
}
|
|
577
|
-
await this.
|
|
604
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
578
605
|
|
|
579
606
|
const publicFunctionSignatures = artifact.functions
|
|
580
607
|
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
@@ -582,7 +609,7 @@ export class PXE {
|
|
|
582
609
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
583
610
|
} else {
|
|
584
611
|
// Otherwise, make sure there is an artifact already registered for that class id
|
|
585
|
-
artifact = await this.
|
|
612
|
+
artifact = await this.contractStore.getContractArtifact(instance.currentContractClassId);
|
|
586
613
|
if (!artifact) {
|
|
587
614
|
throw new Error(
|
|
588
615
|
`Artifact not found when registering an instance. Contract class: ${instance.currentContractClassId}.`,
|
|
@@ -590,7 +617,7 @@ export class PXE {
|
|
|
590
617
|
}
|
|
591
618
|
}
|
|
592
619
|
|
|
593
|
-
await this.
|
|
620
|
+
await this.contractStore.addContractInstance(instance);
|
|
594
621
|
this.log.info(
|
|
595
622
|
`Added contract ${artifact.name} at ${instance.address.toString()} with class ${instance.currentContractClassId}`,
|
|
596
623
|
);
|
|
@@ -609,14 +636,14 @@ export class PXE {
|
|
|
609
636
|
// We disable concurrently updating contracts to avoid concurrently syncing with the node, or changing a contract's
|
|
610
637
|
// class while we're simulating it.
|
|
611
638
|
return this.#putInJobQueue(async () => {
|
|
612
|
-
const currentInstance = await this.
|
|
639
|
+
const currentInstance = await this.contractStore.getContractInstance(contractAddress);
|
|
613
640
|
if (!currentInstance) {
|
|
614
641
|
throw new Error(`Instance not found when updating a contract. Contract address: ${contractAddress}.`);
|
|
615
642
|
}
|
|
616
643
|
const contractClass = await getContractClassFromArtifact(artifact);
|
|
617
644
|
await this.blockStateSynchronizer.sync();
|
|
618
645
|
|
|
619
|
-
const header = await this.
|
|
646
|
+
const header = await this.anchorBlockStore.getBlockHeader();
|
|
620
647
|
|
|
621
648
|
const currentClassId = await readCurrentClassId(
|
|
622
649
|
contractAddress,
|
|
@@ -629,7 +656,7 @@ export class PXE {
|
|
|
629
656
|
throw new Error('Could not update contract to a class different from the current one.');
|
|
630
657
|
}
|
|
631
658
|
|
|
632
|
-
await this.
|
|
659
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
633
660
|
|
|
634
661
|
const publicFunctionSignatures = artifact.functions
|
|
635
662
|
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
@@ -637,7 +664,7 @@ export class PXE {
|
|
|
637
664
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
638
665
|
|
|
639
666
|
currentInstance.currentContractClassId = contractClass.id;
|
|
640
|
-
await this.
|
|
667
|
+
await this.contractStore.addContractInstance(currentInstance);
|
|
641
668
|
this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
|
|
642
669
|
});
|
|
643
670
|
}
|
|
@@ -647,7 +674,7 @@ export class PXE {
|
|
|
647
674
|
* @returns An array of contracts addresses registered on this PXE.
|
|
648
675
|
*/
|
|
649
676
|
public getContracts(): Promise<AztecAddress[]> {
|
|
650
|
-
return this.
|
|
677
|
+
return this.contractStore.getContractsAddresses();
|
|
651
678
|
}
|
|
652
679
|
|
|
653
680
|
/**
|
|
@@ -663,14 +690,14 @@ export class PXE {
|
|
|
663
690
|
let privateExecutionResult: PrivateExecutionResult;
|
|
664
691
|
// We disable proving concurrently mostly out of caution, since it accesses some of our stores. Proving is so
|
|
665
692
|
// computationally demanding that it'd be rare for someone to try to do it concurrently regardless.
|
|
666
|
-
return this.#putInJobQueue(async
|
|
693
|
+
return this.#putInJobQueue(async jobId => {
|
|
667
694
|
const totalTimer = new Timer();
|
|
668
695
|
try {
|
|
669
696
|
const syncTimer = new Timer();
|
|
670
697
|
await this.blockStateSynchronizer.sync();
|
|
671
698
|
const syncTime = syncTimer.ms();
|
|
672
699
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
673
|
-
privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
|
|
700
|
+
privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, undefined, jobId);
|
|
674
701
|
|
|
675
702
|
const {
|
|
676
703
|
publicInputs,
|
|
@@ -717,7 +744,7 @@ export class PXE {
|
|
|
717
744
|
// TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
|
|
718
745
|
const txHash = (await txProvingResult.toTx()).txHash;
|
|
719
746
|
|
|
720
|
-
await this.
|
|
747
|
+
await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash);
|
|
721
748
|
this.log.debug(`Stored used pre-tags as sender for the tx`, {
|
|
722
749
|
preTagsUsedInTheTx,
|
|
723
750
|
});
|
|
@@ -747,7 +774,7 @@ export class PXE {
|
|
|
747
774
|
skipProofGeneration: boolean = true,
|
|
748
775
|
): Promise<TxProfileResult> {
|
|
749
776
|
// We disable concurrent profiles for consistency with simulateTx.
|
|
750
|
-
return this.#putInJobQueue(async
|
|
777
|
+
return this.#putInJobQueue(async jobId => {
|
|
751
778
|
const totalTimer = new Timer();
|
|
752
779
|
try {
|
|
753
780
|
const txInfo = {
|
|
@@ -767,7 +794,12 @@ export class PXE {
|
|
|
767
794
|
const syncTime = syncTimer.ms();
|
|
768
795
|
|
|
769
796
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
770
|
-
const privateExecutionResult = await this.#executePrivate(
|
|
797
|
+
const privateExecutionResult = await this.#executePrivate(
|
|
798
|
+
contractFunctionSimulator,
|
|
799
|
+
txRequest,
|
|
800
|
+
undefined,
|
|
801
|
+
jobId,
|
|
802
|
+
);
|
|
771
803
|
|
|
772
804
|
const { executionSteps, timings: { proving } = {} } = await this.#prove(
|
|
773
805
|
txRequest,
|
|
@@ -847,7 +879,7 @@ export class PXE {
|
|
|
847
879
|
// We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
|
|
848
880
|
// to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
|
|
849
881
|
// delete the same read value, or reading values that another simulation is currently modifying).
|
|
850
|
-
return this.#putInJobQueue(async
|
|
882
|
+
return this.#putInJobQueue(async jobId => {
|
|
851
883
|
try {
|
|
852
884
|
const totalTimer = new Timer();
|
|
853
885
|
const txInfo = {
|
|
@@ -873,7 +905,7 @@ export class PXE {
|
|
|
873
905
|
const skipKernels = overrides?.contracts !== undefined && Object.keys(overrides.contracts ?? {}).length > 0;
|
|
874
906
|
|
|
875
907
|
// Execution of private functions only; no proving, and no kernel logic.
|
|
876
|
-
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes);
|
|
908
|
+
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes, jobId);
|
|
877
909
|
|
|
878
910
|
let publicInputs: PrivateKernelTailCircuitPublicInputs | undefined;
|
|
879
911
|
let executionSteps: PrivateExecutionStep[] = [];
|
|
@@ -887,7 +919,7 @@ export class PXE {
|
|
|
887
919
|
({ publicInputs, executionSteps } = await generateSimulatedProvingResult(
|
|
888
920
|
privateExecutionResult,
|
|
889
921
|
nonceGenerator,
|
|
890
|
-
this.
|
|
922
|
+
this.contractStore,
|
|
891
923
|
));
|
|
892
924
|
} else {
|
|
893
925
|
// Kernel logic, plus proving of all private functions and kernels.
|
|
@@ -988,7 +1020,7 @@ export class PXE {
|
|
|
988
1020
|
// We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
|
|
989
1021
|
// to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
|
|
990
1022
|
// delete the same read value, or reading values that another simulation is currently modifying).
|
|
991
|
-
return this.#putInJobQueue(async
|
|
1023
|
+
return this.#putInJobQueue(async jobId => {
|
|
992
1024
|
try {
|
|
993
1025
|
const totalTimer = new Timer();
|
|
994
1026
|
const syncTimer = new Timer();
|
|
@@ -996,7 +1028,18 @@ export class PXE {
|
|
|
996
1028
|
const syncTime = syncTimer.ms();
|
|
997
1029
|
const functionTimer = new Timer();
|
|
998
1030
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
999
|
-
|
|
1031
|
+
|
|
1032
|
+
await this.contractStore.syncPrivateState(call.to, call.selector, privateSyncCall =>
|
|
1033
|
+
this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
|
|
1034
|
+
);
|
|
1035
|
+
|
|
1036
|
+
const executionResult = await this.#simulateUtility(
|
|
1037
|
+
contractFunctionSimulator,
|
|
1038
|
+
call,
|
|
1039
|
+
authwits ?? [],
|
|
1040
|
+
scopes,
|
|
1041
|
+
jobId,
|
|
1042
|
+
);
|
|
1000
1043
|
const functionTime = functionTimer.ms();
|
|
1001
1044
|
|
|
1002
1045
|
const totalTime = totalTimer.ms();
|
|
@@ -1037,21 +1080,26 @@ export class PXE {
|
|
|
1037
1080
|
* Defaults to the latest known block to PXE + 1.
|
|
1038
1081
|
* @returns - The packed events with block and tx metadata.
|
|
1039
1082
|
*/
|
|
1040
|
-
public
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
// We need to manually trigger private state sync to have a guarantee that all the events are available.
|
|
1045
|
-
const call = await this.contractDataProvider.getFunctionCall('sync_private_state', [], filter.contractAddress);
|
|
1046
|
-
await this.simulateUtility(call);
|
|
1047
|
-
|
|
1048
|
-
const sanitizedFilter = await new PrivateEventFilterValidator(this.anchorBlockDataProvider).validate(filter);
|
|
1049
|
-
|
|
1050
|
-
this.log.debug(
|
|
1051
|
-
`Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`,
|
|
1052
|
-
);
|
|
1083
|
+
public getPrivateEvents(eventSelector: EventSelector, filter: PrivateEventFilter): Promise<PackedPrivateEvent[]> {
|
|
1084
|
+
return this.#putInJobQueue(async jobId => {
|
|
1085
|
+
await this.blockStateSynchronizer.sync();
|
|
1086
|
+
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
1053
1087
|
|
|
1054
|
-
|
|
1088
|
+
await this.contractStore.syncPrivateState(
|
|
1089
|
+
filter.contractAddress,
|
|
1090
|
+
null,
|
|
1091
|
+
async privateSyncCall =>
|
|
1092
|
+
await this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
|
|
1093
|
+
);
|
|
1094
|
+
|
|
1095
|
+
const sanitizedFilter = await new PrivateEventFilterValidator(this.anchorBlockStore).validate(filter);
|
|
1096
|
+
|
|
1097
|
+
this.log.debug(
|
|
1098
|
+
`Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`,
|
|
1099
|
+
);
|
|
1100
|
+
|
|
1101
|
+
return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
|
|
1102
|
+
});
|
|
1055
1103
|
}
|
|
1056
1104
|
|
|
1057
1105
|
/**
|
|
@@ -3,7 +3,7 @@ import type { AztecAsyncArray, AztecAsyncKVStore, AztecAsyncMap } from '@aztec/k
|
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import { CompleteAddress } from '@aztec/stdlib/contract';
|
|
5
5
|
|
|
6
|
-
export class
|
|
6
|
+
export class AddressStore {
|
|
7
7
|
#store: AztecAsyncKVStore;
|
|
8
8
|
#completeAddresses: AztecAsyncArray<Buffer>;
|
|
9
9
|
#completeAddressIndex: AztecAsyncMap<string, number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AddressStore } from './address_store.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AztecAsyncKVStore, AztecAsyncSingleton } from '@aztec/kv-store';
|
|
2
2
|
import { BlockHeader } from '@aztec/stdlib/tx';
|
|
3
3
|
|
|
4
|
-
export class
|
|
4
|
+
export class AnchorBlockStore {
|
|
5
5
|
#store: AztecAsyncKVStore;
|
|
6
6
|
#synchronizedHeader: AztecAsyncSingleton<Buffer>;
|
|
7
7
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AnchorBlockStore } from './anchor_block_store.js';
|
|
@@ -3,7 +3,7 @@ import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
|
3
3
|
import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
|
|
4
4
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
5
|
|
|
6
|
-
export class
|
|
6
|
+
export class CapsuleStore {
|
|
7
7
|
#store: AztecAsyncKVStore;
|
|
8
8
|
|
|
9
9
|
// Arbitrary data stored by contracts. Key is computed as `${contractAddress}:${key}`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CapsuleStore } from './capsule_store.js';
|