@aztec/pxe 3.0.0-nightly.20260105 → 3.0.0-nightly.20260106
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 +6 -6
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +11 -11
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +22 -22
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +31 -28
- 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 +3 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +17 -13
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +13 -11
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +19 -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 +44 -44
- 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 +6 -6
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +7 -7
- 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/logs/log_service.d.ts +12 -12
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +17 -17
- 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/private_kernel_oracle_impl.d.ts +4 -4
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +7 -7
- 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 +10 -10
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +81 -78
- 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_data_provider/private_event_data_provider.d.ts → private_event_store/private_event_store.d.ts} +4 -4
- 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} +2 -2
- 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/{tagging/recipient_sync/recipient_tagging_data_provider.d.ts → storage/tagging_store/recipient_tagging_store.d.ts} +4 -4
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
- package/dest/{tagging/recipient_sync/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_data_provider/sender_address_book.js → tagging_store/sender_address_book_store.js} +1 -1
- 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/index.d.ts +14 -1
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +22 -0
- 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 +6 -6
- 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 -17
- 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/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 +10 -10
- package/src/contract_function_simulator/contract_function_simulator.ts +49 -48
- package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +48 -47
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +51 -51
- 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 +6 -6
- package/src/events/private_event_filter_validator.ts +5 -5
- package/src/logs/log_service.ts +16 -16
- package/src/notes/note_service.ts +13 -13
- package/src/private_kernel/private_kernel_oracle_impl.ts +6 -6
- package/src/public_storage/public_storage_service.ts +3 -3
- package/src/pxe.ts +100 -101
- 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} +4 -4
- package/src/storage/tagging_store/index.ts +3 -0
- package/src/{tagging/recipient_sync/recipient_tagging_data_provider.ts → storage/tagging_store/recipient_tagging_store.ts} +3 -3
- package/src/storage/{tagging_data_provider/sender_address_book.ts → tagging_store/sender_address_book_store.ts} +1 -1
- package/src/storage/{tagging_data_provider/sender_tagging_data_provider.ts → tagging_store/sender_tagging_store.ts} +3 -3
- package/src/tagging/index.ts +26 -0
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +7 -7
- package/src/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.ts +9 -19
- 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.map +0 -1
- package/dest/storage/tagging_data_provider/index.d.ts +0 -4
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -3
- package/dest/storage/tagging_data_provider/sender_address_book.d.ts +0 -14
- package/dest/storage/tagging_data_provider/sender_address_book.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/sender_tagging_data_provider.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/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/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 -3
- /package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +0 -0
- /package/dest/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.js +0 -0
- /package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +0 -0
- /package/src/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.ts +0 -0
package/src/pxe.ts
CHANGED
|
@@ -59,7 +59,7 @@ 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
63
|
import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
|
|
64
64
|
import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
|
|
65
65
|
import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
|
|
@@ -68,15 +68,15 @@ import {
|
|
|
68
68
|
type PrivateKernelExecutionProverConfig,
|
|
69
69
|
} from './private_kernel/private_kernel_execution_prover.js';
|
|
70
70
|
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 {
|
|
79
|
-
import {
|
|
71
|
+
import { AddressStore } from './storage/address_store/address_store.js';
|
|
72
|
+
import { AnchorBlockStore } from './storage/anchor_block_store/anchor_block_store.js';
|
|
73
|
+
import { CapsuleStore } from './storage/capsule_store/capsule_store.js';
|
|
74
|
+
import { ContractStore } from './storage/contract_store/contract_store.js';
|
|
75
|
+
import { NoteStore } from './storage/note_store/note_store.js';
|
|
76
|
+
import { PrivateEventStore } from './storage/private_event_store/private_event_store.js';
|
|
77
|
+
import { RecipientTaggingStore } from './storage/tagging_store/recipient_tagging_store.js';
|
|
78
|
+
import { SenderAddressBookStore } from './storage/tagging_store/sender_address_book_store.js';
|
|
79
|
+
import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store.js';
|
|
80
80
|
|
|
81
81
|
export type PackedPrivateEvent = InTx & {
|
|
82
82
|
packedEvent: Fr[];
|
|
@@ -92,15 +92,15 @@ export class PXE {
|
|
|
92
92
|
private node: AztecNode,
|
|
93
93
|
private blockStateSynchronizer: BlockSynchronizer,
|
|
94
94
|
private keyStore: KeyStore,
|
|
95
|
-
private
|
|
96
|
-
private
|
|
97
|
-
private
|
|
98
|
-
private
|
|
99
|
-
private
|
|
100
|
-
private
|
|
101
|
-
private
|
|
102
|
-
private
|
|
103
|
-
private
|
|
95
|
+
private contractStore: ContractStore,
|
|
96
|
+
private noteStore: NoteStore,
|
|
97
|
+
private capsuleStore: CapsuleStore,
|
|
98
|
+
private anchorBlockStore: AnchorBlockStore,
|
|
99
|
+
private senderTaggingStore: SenderTaggingStore,
|
|
100
|
+
private senderAddressBookStore: SenderAddressBookStore,
|
|
101
|
+
private recipientTaggingStore: RecipientTaggingStore,
|
|
102
|
+
private addressStore: AddressStore,
|
|
103
|
+
private privateEventStore: PrivateEventStore,
|
|
104
104
|
private simulator: CircuitSimulator,
|
|
105
105
|
private proverEnabled: boolean,
|
|
106
106
|
private proofCreator: PrivateKernelProver,
|
|
@@ -132,27 +132,20 @@ export class PXE {
|
|
|
132
132
|
: loggerOrSuffix;
|
|
133
133
|
|
|
134
134
|
const proverEnabled = !!config.proverEnabled;
|
|
135
|
-
const
|
|
136
|
-
const
|
|
137
|
-
const
|
|
138
|
-
const
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
const
|
|
143
|
-
const
|
|
135
|
+
const addressStore = new AddressStore(store);
|
|
136
|
+
const privateEventStore = new PrivateEventStore(store);
|
|
137
|
+
const contractStore = new ContractStore(store);
|
|
138
|
+
const noteStore = await NoteStore.create(store);
|
|
139
|
+
const anchorBlockStore = new AnchorBlockStore(store);
|
|
140
|
+
const senderTaggingStore = new SenderTaggingStore(store);
|
|
141
|
+
const senderAddressBookStore = new SenderAddressBookStore(store);
|
|
142
|
+
const recipientTaggingStore = new RecipientTaggingStore(store);
|
|
143
|
+
const capsuleStore = new CapsuleStore(store);
|
|
144
144
|
const keyStore = new KeyStore(store);
|
|
145
145
|
const tipsStore = new L2TipsKVStore(store, 'pxe');
|
|
146
|
-
const synchronizer = new BlockSynchronizer(
|
|
147
|
-
node,
|
|
148
|
-
anchorBlockDataProvider,
|
|
149
|
-
noteDataProvider,
|
|
150
|
-
tipsStore,
|
|
151
|
-
config,
|
|
152
|
-
loggerOrSuffix,
|
|
153
|
-
);
|
|
146
|
+
const synchronizer = new BlockSynchronizer(node, anchorBlockStore, noteStore, tipsStore, config, loggerOrSuffix);
|
|
154
147
|
|
|
155
|
-
const debugUtils = new PXEDebugUtils(
|
|
148
|
+
const debugUtils = new PXEDebugUtils(contractStore, noteStore);
|
|
156
149
|
|
|
157
150
|
const jobQueue = new SerialQueue();
|
|
158
151
|
|
|
@@ -160,15 +153,15 @@ export class PXE {
|
|
|
160
153
|
node,
|
|
161
154
|
synchronizer,
|
|
162
155
|
keyStore,
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
156
|
+
contractStore,
|
|
157
|
+
noteStore,
|
|
158
|
+
capsuleStore,
|
|
159
|
+
anchorBlockStore,
|
|
160
|
+
senderTaggingStore,
|
|
161
|
+
senderAddressBookStore,
|
|
162
|
+
recipientTaggingStore,
|
|
163
|
+
addressStore,
|
|
164
|
+
privateEventStore,
|
|
172
165
|
simulator,
|
|
173
166
|
proverEnabled,
|
|
174
167
|
proofCreator,
|
|
@@ -191,23 +184,20 @@ export class PXE {
|
|
|
191
184
|
// Internal methods
|
|
192
185
|
|
|
193
186
|
#getSimulatorForTx(overrides?: { contracts?: ContractOverrides }) {
|
|
194
|
-
const
|
|
195
|
-
this.contractDataProvider,
|
|
196
|
-
overrides?.contracts,
|
|
197
|
-
);
|
|
187
|
+
const proxyContractStore = ProxiedContractStoreFactory.create(this.contractStore, overrides?.contracts);
|
|
198
188
|
|
|
199
189
|
return new ContractFunctionSimulator(
|
|
200
|
-
|
|
201
|
-
this.
|
|
190
|
+
proxyContractStore,
|
|
191
|
+
this.noteStore,
|
|
202
192
|
this.keyStore,
|
|
203
|
-
this.
|
|
193
|
+
this.addressStore,
|
|
204
194
|
this.node,
|
|
205
|
-
this.
|
|
206
|
-
this.
|
|
207
|
-
this.
|
|
208
|
-
this.
|
|
209
|
-
this.
|
|
210
|
-
this.
|
|
195
|
+
this.anchorBlockStore,
|
|
196
|
+
this.senderTaggingStore,
|
|
197
|
+
this.recipientTaggingStore,
|
|
198
|
+
this.senderAddressBookStore,
|
|
199
|
+
this.capsuleStore,
|
|
200
|
+
this.privateEventStore,
|
|
211
201
|
this.simulator,
|
|
212
202
|
);
|
|
213
203
|
}
|
|
@@ -248,8 +238,8 @@ export class PXE {
|
|
|
248
238
|
for (const name of protocolContractNames) {
|
|
249
239
|
const { address, contractClass, instance, artifact } =
|
|
250
240
|
await this.protocolContractsProvider.getProtocolContractArtifact(name);
|
|
251
|
-
await this.
|
|
252
|
-
await this.
|
|
241
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
242
|
+
await this.contractStore.addContractInstance(instance);
|
|
253
243
|
registered[name] = address.toString();
|
|
254
244
|
}
|
|
255
245
|
this.log.verbose(`Registered protocol contracts in pxe`, registered);
|
|
@@ -278,7 +268,7 @@ export class PXE {
|
|
|
278
268
|
const { origin: contractAddress, functionSelector } = txRequest;
|
|
279
269
|
|
|
280
270
|
try {
|
|
281
|
-
const anchorBlockHeader = await this.
|
|
271
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
282
272
|
|
|
283
273
|
const result = await contractFunctionSimulator.run(
|
|
284
274
|
txRequest,
|
|
@@ -295,7 +285,7 @@ export class PXE {
|
|
|
295
285
|
return result;
|
|
296
286
|
} catch (err) {
|
|
297
287
|
if (err instanceof SimulationError) {
|
|
298
|
-
await enrichSimulationError(err, this.
|
|
288
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
299
289
|
}
|
|
300
290
|
throw err;
|
|
301
291
|
}
|
|
@@ -317,11 +307,11 @@ export class PXE {
|
|
|
317
307
|
scopes?: AztecAddress[],
|
|
318
308
|
) {
|
|
319
309
|
try {
|
|
320
|
-
const anchorBlockHeader = await this.
|
|
310
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
321
311
|
return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes);
|
|
322
312
|
} catch (err) {
|
|
323
313
|
if (err instanceof SimulationError) {
|
|
324
|
-
await enrichSimulationError(err, this.
|
|
314
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
325
315
|
}
|
|
326
316
|
throw err;
|
|
327
317
|
}
|
|
@@ -345,7 +335,7 @@ export class PXE {
|
|
|
345
335
|
} catch (err) {
|
|
346
336
|
if (err instanceof SimulationError) {
|
|
347
337
|
try {
|
|
348
|
-
await enrichPublicSimulationError(err, this.
|
|
338
|
+
await enrichPublicSimulationError(err, this.contractStore, this.log);
|
|
349
339
|
} catch (enrichErr) {
|
|
350
340
|
this.log.error(`Failed to enrich public simulation error: ${enrichErr}`);
|
|
351
341
|
}
|
|
@@ -373,7 +363,7 @@ export class PXE {
|
|
|
373
363
|
): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
374
364
|
const simulationAnchorBlock = privateExecutionResult.getSimulationAnchorBlockNumber();
|
|
375
365
|
const kernelOracle = new PrivateKernelOracleImpl(
|
|
376
|
-
this.
|
|
366
|
+
this.contractStore,
|
|
377
367
|
this.keyStore,
|
|
378
368
|
this.node,
|
|
379
369
|
simulationAnchorBlock,
|
|
@@ -386,7 +376,7 @@ export class PXE {
|
|
|
386
376
|
// Public API
|
|
387
377
|
|
|
388
378
|
public getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
|
|
389
|
-
return this.
|
|
379
|
+
return this.contractStore.getContractInstance(address);
|
|
390
380
|
}
|
|
391
381
|
|
|
392
382
|
/**
|
|
@@ -411,7 +401,7 @@ export class PXE {
|
|
|
411
401
|
isContractClassPubliclyRegistered: boolean;
|
|
412
402
|
artifact: ContractArtifact | undefined;
|
|
413
403
|
}> {
|
|
414
|
-
const artifact = await this.
|
|
404
|
+
const artifact = await this.contractStore.getContractArtifact(id);
|
|
415
405
|
if (!artifact) {
|
|
416
406
|
this.log.warn(`No artifact found for contract class ${id.toString()} when looking for its metadata`);
|
|
417
407
|
}
|
|
@@ -441,7 +431,7 @@ export class PXE {
|
|
|
441
431
|
}> {
|
|
442
432
|
let instance;
|
|
443
433
|
try {
|
|
444
|
-
instance = await this.
|
|
434
|
+
instance = await this.contractStore.getContractInstance(address);
|
|
445
435
|
} catch {
|
|
446
436
|
this.log.warn(`No instance found for contract ${address.toString()} when looking for its metadata`);
|
|
447
437
|
}
|
|
@@ -473,8 +463,8 @@ export class PXE {
|
|
|
473
463
|
this.log.debug(`Registered account\n ${accountCompleteAddress.toReadableString()}`);
|
|
474
464
|
}
|
|
475
465
|
|
|
476
|
-
await this.
|
|
477
|
-
await this.
|
|
466
|
+
await this.addressStore.addCompleteAddress(accountCompleteAddress);
|
|
467
|
+
await this.noteStore.addScope(accountCompleteAddress.address);
|
|
478
468
|
return accountCompleteAddress;
|
|
479
469
|
}
|
|
480
470
|
|
|
@@ -495,7 +485,7 @@ export class PXE {
|
|
|
495
485
|
return sender;
|
|
496
486
|
}
|
|
497
487
|
|
|
498
|
-
const wasAdded = await this.
|
|
488
|
+
const wasAdded = await this.senderAddressBookStore.addSender(sender);
|
|
499
489
|
|
|
500
490
|
if (wasAdded) {
|
|
501
491
|
this.log.info(`Added sender:\n ${sender.toString()}`);
|
|
@@ -511,7 +501,7 @@ export class PXE {
|
|
|
511
501
|
* @returns Senders registered in this PXE.
|
|
512
502
|
*/
|
|
513
503
|
public getSenders(): Promise<AztecAddress[]> {
|
|
514
|
-
return this.
|
|
504
|
+
return this.senderAddressBookStore.getSenders();
|
|
515
505
|
}
|
|
516
506
|
|
|
517
507
|
/**
|
|
@@ -519,7 +509,7 @@ export class PXE {
|
|
|
519
509
|
* @param sender - The address of the sender to remove.
|
|
520
510
|
*/
|
|
521
511
|
public async removeSender(sender: AztecAddress): Promise<void> {
|
|
522
|
-
const wasRemoved = await this.
|
|
512
|
+
const wasRemoved = await this.senderAddressBookStore.removeSender(sender);
|
|
523
513
|
|
|
524
514
|
if (wasRemoved) {
|
|
525
515
|
this.log.info(`Removed sender:\n ${sender.toString()}`);
|
|
@@ -534,7 +524,7 @@ export class PXE {
|
|
|
534
524
|
*/
|
|
535
525
|
public async getRegisteredAccounts(): Promise<CompleteAddress[]> {
|
|
536
526
|
// Get complete addresses of both the recipients and the accounts
|
|
537
|
-
const completeAddresses = await this.
|
|
527
|
+
const completeAddresses = await this.addressStore.getCompleteAddresses();
|
|
538
528
|
// Filter out the addresses not corresponding to accounts
|
|
539
529
|
const accounts = await this.keyStore.getAccounts();
|
|
540
530
|
return completeAddresses.filter(completeAddress =>
|
|
@@ -549,7 +539,7 @@ export class PXE {
|
|
|
549
539
|
*/
|
|
550
540
|
public async registerContractClass(artifact: ContractArtifact): Promise<void> {
|
|
551
541
|
const { id: contractClassId } = await getContractClassFromArtifact(artifact);
|
|
552
|
-
await this.
|
|
542
|
+
await this.contractStore.addContractArtifact(contractClassId, artifact);
|
|
553
543
|
this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
|
|
554
544
|
}
|
|
555
545
|
|
|
@@ -578,7 +568,7 @@ export class PXE {
|
|
|
578
568
|
if (!computedAddress.equals(instance.address)) {
|
|
579
569
|
throw new Error('Added a contract in which the address does not match the contract instance.');
|
|
580
570
|
}
|
|
581
|
-
await this.
|
|
571
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
582
572
|
|
|
583
573
|
const publicFunctionSignatures = artifact.functions
|
|
584
574
|
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
@@ -586,7 +576,7 @@ export class PXE {
|
|
|
586
576
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
587
577
|
} else {
|
|
588
578
|
// Otherwise, make sure there is an artifact already registered for that class id
|
|
589
|
-
artifact = await this.
|
|
579
|
+
artifact = await this.contractStore.getContractArtifact(instance.currentContractClassId);
|
|
590
580
|
if (!artifact) {
|
|
591
581
|
throw new Error(
|
|
592
582
|
`Artifact not found when registering an instance. Contract class: ${instance.currentContractClassId}.`,
|
|
@@ -594,7 +584,7 @@ export class PXE {
|
|
|
594
584
|
}
|
|
595
585
|
}
|
|
596
586
|
|
|
597
|
-
await this.
|
|
587
|
+
await this.contractStore.addContractInstance(instance);
|
|
598
588
|
this.log.info(
|
|
599
589
|
`Added contract ${artifact.name} at ${instance.address.toString()} with class ${instance.currentContractClassId}`,
|
|
600
590
|
);
|
|
@@ -613,14 +603,14 @@ export class PXE {
|
|
|
613
603
|
// We disable concurrently updating contracts to avoid concurrently syncing with the node, or changing a contract's
|
|
614
604
|
// class while we're simulating it.
|
|
615
605
|
return this.#putInJobQueue(async () => {
|
|
616
|
-
const currentInstance = await this.
|
|
606
|
+
const currentInstance = await this.contractStore.getContractInstance(contractAddress);
|
|
617
607
|
if (!currentInstance) {
|
|
618
608
|
throw new Error(`Instance not found when updating a contract. Contract address: ${contractAddress}.`);
|
|
619
609
|
}
|
|
620
610
|
const contractClass = await getContractClassFromArtifact(artifact);
|
|
621
611
|
await this.blockStateSynchronizer.sync();
|
|
622
612
|
|
|
623
|
-
const header = await this.
|
|
613
|
+
const header = await this.anchorBlockStore.getBlockHeader();
|
|
624
614
|
|
|
625
615
|
const currentClassId = await readCurrentClassId(
|
|
626
616
|
contractAddress,
|
|
@@ -633,7 +623,7 @@ export class PXE {
|
|
|
633
623
|
throw new Error('Could not update contract to a class different from the current one.');
|
|
634
624
|
}
|
|
635
625
|
|
|
636
|
-
await this.
|
|
626
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
637
627
|
|
|
638
628
|
const publicFunctionSignatures = artifact.functions
|
|
639
629
|
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
@@ -641,7 +631,7 @@ export class PXE {
|
|
|
641
631
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
642
632
|
|
|
643
633
|
currentInstance.currentContractClassId = contractClass.id;
|
|
644
|
-
await this.
|
|
634
|
+
await this.contractStore.addContractInstance(currentInstance);
|
|
645
635
|
this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
|
|
646
636
|
});
|
|
647
637
|
}
|
|
@@ -651,7 +641,7 @@ export class PXE {
|
|
|
651
641
|
* @returns An array of contracts addresses registered on this PXE.
|
|
652
642
|
*/
|
|
653
643
|
public getContracts(): Promise<AztecAddress[]> {
|
|
654
|
-
return this.
|
|
644
|
+
return this.contractStore.getContractsAddresses();
|
|
655
645
|
}
|
|
656
646
|
|
|
657
647
|
/**
|
|
@@ -721,7 +711,7 @@ export class PXE {
|
|
|
721
711
|
// TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
|
|
722
712
|
const txHash = (await txProvingResult.toTx()).txHash;
|
|
723
713
|
|
|
724
|
-
await this.
|
|
714
|
+
await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash);
|
|
725
715
|
this.log.debug(`Stored used pre-tags as sender for the tx`, {
|
|
726
716
|
preTagsUsedInTheTx,
|
|
727
717
|
});
|
|
@@ -891,7 +881,7 @@ export class PXE {
|
|
|
891
881
|
({ publicInputs, executionSteps } = await generateSimulatedProvingResult(
|
|
892
882
|
privateExecutionResult,
|
|
893
883
|
nonceGenerator,
|
|
894
|
-
this.
|
|
884
|
+
this.contractStore,
|
|
895
885
|
));
|
|
896
886
|
} else {
|
|
897
887
|
// Kernel logic, plus proving of all private functions and kernels.
|
|
@@ -1000,6 +990,11 @@ export class PXE {
|
|
|
1000
990
|
const syncTime = syncTimer.ms();
|
|
1001
991
|
const functionTimer = new Timer();
|
|
1002
992
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
993
|
+
|
|
994
|
+
await this.contractStore.syncPrivateState(call.to, call.selector, privateSyncCall =>
|
|
995
|
+
this.#simulateUtility(contractFunctionSimulator, privateSyncCall),
|
|
996
|
+
);
|
|
997
|
+
|
|
1003
998
|
const executionResult = await this.#simulateUtility(contractFunctionSimulator, call, authwits ?? [], scopes);
|
|
1004
999
|
const functionTime = functionTimer.ms();
|
|
1005
1000
|
|
|
@@ -1041,21 +1036,25 @@ export class PXE {
|
|
|
1041
1036
|
* Defaults to the latest known block to PXE + 1.
|
|
1042
1037
|
* @returns - The packed events with block and tx metadata.
|
|
1043
1038
|
*/
|
|
1044
|
-
public
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
);
|
|
1039
|
+
public getPrivateEvents(eventSelector: EventSelector, filter: PrivateEventFilter): Promise<PackedPrivateEvent[]> {
|
|
1040
|
+
return this.#putInJobQueue(async () => {
|
|
1041
|
+
await this.blockStateSynchronizer.sync();
|
|
1042
|
+
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
1043
|
+
|
|
1044
|
+
await this.contractStore.syncPrivateState(
|
|
1045
|
+
filter.contractAddress,
|
|
1046
|
+
null,
|
|
1047
|
+
async privateSyncCall => await this.#simulateUtility(contractFunctionSimulator, privateSyncCall),
|
|
1048
|
+
);
|
|
1049
|
+
|
|
1050
|
+
const sanitizedFilter = await new PrivateEventFilterValidator(this.anchorBlockStore).validate(filter);
|
|
1057
1051
|
|
|
1058
|
-
|
|
1052
|
+
this.log.debug(
|
|
1053
|
+
`Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`,
|
|
1054
|
+
);
|
|
1055
|
+
|
|
1056
|
+
return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
|
|
1057
|
+
});
|
|
1059
1058
|
}
|
|
1060
1059
|
|
|
1061
1060
|
/**
|
|
@@ -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';
|
|
@@ -3,6 +3,7 @@ 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';
|
|
6
7
|
import {
|
|
7
8
|
type ContractArtifact,
|
|
8
9
|
type FunctionAbi,
|
|
@@ -28,13 +29,13 @@ import {
|
|
|
28
29
|
import { PrivateFunctionsTree } from './private_functions_tree.js';
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
|
-
*
|
|
32
|
+
* ContractStore serves as a data manager and retriever for Aztec.nr contracts.
|
|
32
33
|
* It provides methods to obtain contract addresses, function ABI, bytecode, and membership witnesses
|
|
33
34
|
* from a given contract address and function selector. The class maintains a cache of ContractTree instances
|
|
34
35
|
* to efficiently serve the requested data. It interacts with the ContractDatabase and AztecNode to fetch
|
|
35
36
|
* the required information and facilitate cryptographic proof generation.
|
|
36
37
|
*/
|
|
37
|
-
export class
|
|
38
|
+
export class ContractStore {
|
|
38
39
|
/** Map from contract class id to private function tree. */
|
|
39
40
|
// TODO: Update it to be LRU cache so that it doesn't keep all the data all the time.
|
|
40
41
|
#privateFunctionTrees: Map<string, PrivateFunctionsTree> = new Map();
|
|
@@ -316,4 +317,23 @@ export class ContractDataProvider {
|
|
|
316
317
|
returnTypes: functionDao.returnTypes,
|
|
317
318
|
};
|
|
318
319
|
}
|
|
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
|
+
}
|
|
319
339
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ContractStore } from './contract_store.js';
|
package/src/storage/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './
|
|
6
|
-
export * from './
|
|
1
|
+
export * from './address_store/index.js';
|
|
2
|
+
export * from './capsule_store/index.js';
|
|
3
|
+
export * from './contract_store/index.js';
|
|
4
|
+
export * from './note_store/index.js';
|
|
5
|
+
export * from './anchor_block_store/index.js';
|
|
6
|
+
export * from './tagging_store/index.js';
|
|
7
7
|
export * from './metadata.js';
|
|
8
|
-
export * from './
|
|
8
|
+
export * from './private_event_store/private_event_store.js';
|
|
@@ -8,12 +8,12 @@ import { NoteStatus, type NotesFilter } from '@aztec/stdlib/note';
|
|
|
8
8
|
import { NoteDao } from '@aztec/stdlib/note';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* NoteStore manages the storage and retrieval of notes.
|
|
12
12
|
*
|
|
13
13
|
* Notes can be active or nullified. This class processes new notes, nullifications,
|
|
14
14
|
* and performs rollback handling in the case of a reorg.
|
|
15
15
|
**/
|
|
16
|
-
export class
|
|
16
|
+
export class NoteStore {
|
|
17
17
|
#store: AztecAsyncKVStore;
|
|
18
18
|
#notes: AztecAsyncMap<string, Buffer>;
|
|
19
19
|
#nullifiedNotes: AztecAsyncMap<string, Buffer>;
|
|
@@ -49,16 +49,16 @@ export class NoteDataProvider {
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
/**
|
|
52
|
-
* Creates and initializes a new
|
|
52
|
+
* Creates and initializes a new NoteStore instance.
|
|
53
53
|
*
|
|
54
|
-
* This factory method creates a
|
|
54
|
+
* This factory method creates a NoteStore and restores any existing
|
|
55
55
|
* scope-specific indexes from the database.
|
|
56
56
|
*
|
|
57
57
|
* @param store - The key-value store to use for persistence
|
|
58
|
-
* @returns Promise resolving to a fully initialized
|
|
58
|
+
* @returns Promise resolving to a fully initialized NoteStore instance
|
|
59
59
|
*/
|
|
60
|
-
public static async create(store: AztecAsyncKVStore): Promise<
|
|
61
|
-
const pxeDB = new
|
|
60
|
+
public static async create(store: AztecAsyncKVStore): Promise<NoteStore> {
|
|
61
|
+
const pxeDB = new NoteStore(store);
|
|
62
62
|
for await (const scope of pxeDB.#scopes.keysAsync()) {
|
|
63
63
|
pxeDB.#notesByContractAndScope.set(scope, store.openMultiMap(`${scope}:notes_by_contract`));
|
|
64
64
|
pxeDB.#notesByStorageSlotAndScope.set(scope, store.openMultiMap(`${scope}:notes_by_storage_slot`));
|
|
@@ -10,7 +10,7 @@ import { type InTx, TxHash } from '@aztec/stdlib/tx';
|
|
|
10
10
|
|
|
11
11
|
import type { PackedPrivateEvent } from '../../pxe.js';
|
|
12
12
|
|
|
13
|
-
export type
|
|
13
|
+
export type PrivateEventStoreFilter = {
|
|
14
14
|
contractAddress: AztecAddress;
|
|
15
15
|
fromBlock: number;
|
|
16
16
|
toBlock: number;
|
|
@@ -34,7 +34,7 @@ type PrivateEventMetadata = InTx & {
|
|
|
34
34
|
/**
|
|
35
35
|
* Stores decrypted private event logs.
|
|
36
36
|
*/
|
|
37
|
-
export class
|
|
37
|
+
export class PrivateEventStore {
|
|
38
38
|
#store: AztecAsyncKVStore;
|
|
39
39
|
/** Array storing the actual private event log entries containing the log content and block number */
|
|
40
40
|
#eventLogs: AztecAsyncArray<PrivateEventEntry>;
|
|
@@ -43,7 +43,7 @@ export class PrivateEventDataProvider {
|
|
|
43
43
|
/** Map from eventCommitmentIndex to boolean indicating if log has been seen. */
|
|
44
44
|
#seenLogs: AztecAsyncMap<number, boolean>;
|
|
45
45
|
|
|
46
|
-
logger = createLogger('
|
|
46
|
+
logger = createLogger('private_event_store');
|
|
47
47
|
|
|
48
48
|
constructor(store: AztecAsyncKVStore) {
|
|
49
49
|
this.#store = store;
|
|
@@ -117,7 +117,7 @@ export class PrivateEventDataProvider {
|
|
|
117
117
|
*/
|
|
118
118
|
public async getPrivateEvents(
|
|
119
119
|
eventSelector: EventSelector,
|
|
120
|
-
filter:
|
|
120
|
+
filter: PrivateEventStoreFilter,
|
|
121
121
|
): Promise<PackedPrivateEvent[]> {
|
|
122
122
|
const events: Array<{ eventCommitmentIndex: number; event: PackedPrivateEvent }> = [];
|
|
123
123
|
|
|
@@ -3,15 +3,15 @@ import type { DirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Data provider of tagging data used when syncing the logs as a recipient. The sender counterpart of this class
|
|
6
|
-
* is called
|
|
6
|
+
* is called SenderTaggingStore. We have the providers separate for the sender and recipient because
|
|
7
7
|
* the algorithms are completely disjoint and there is not data reuse between the two.
|
|
8
8
|
*
|
|
9
9
|
* @dev Chain reorgs do not need to be handled here because both the finalized and aged indexes refer to finalized
|
|
10
10
|
* blocks, which by definition cannot be affected by reorgs.
|
|
11
11
|
*
|
|
12
|
-
* TODO(benesjan): Relocate to yarn-project/pxe/src/storage/
|
|
12
|
+
* TODO(benesjan): Relocate to yarn-project/pxe/src/storage/tagging_store
|
|
13
13
|
*/
|
|
14
|
-
export class
|
|
14
|
+
export class RecipientTaggingStore {
|
|
15
15
|
#store: AztecAsyncKVStore;
|
|
16
16
|
|
|
17
17
|
#highestAgedIndex: AztecAsyncMap<string, number>;
|