@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
|
@@ -21,14 +21,14 @@ import { LogService } from '../../logs/log_service.js';
|
|
|
21
21
|
import { NoteService } from '../../notes/note_service.js';
|
|
22
22
|
import { ORACLE_VERSION } from '../../oracle_version.js';
|
|
23
23
|
import { PublicStorageService } from '../../public_storage/public_storage_service.js';
|
|
24
|
-
import type {
|
|
25
|
-
import type {
|
|
26
|
-
import type {
|
|
27
|
-
import type {
|
|
28
|
-
import type {
|
|
29
|
-
import type {
|
|
30
|
-
import type {
|
|
31
|
-
import type {
|
|
24
|
+
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
25
|
+
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
26
|
+
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
27
|
+
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
28
|
+
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
29
|
+
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
30
|
+
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
31
|
+
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
32
32
|
import { TreeMembershipService } from '../../tree_membership/tree_membership_service.js';
|
|
33
33
|
import { EventValidationRequest } from '../noir-structs/event_validation_request.js';
|
|
34
34
|
import { LogRetrievalRequest } from '../noir-structs/log_retrieval_request.js';
|
|
@@ -54,16 +54,17 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
54
54
|
protected readonly authWitnesses: AuthWitness[],
|
|
55
55
|
protected readonly capsules: Capsule[], // TODO(#12425): Rename to transientCapsules
|
|
56
56
|
protected readonly anchorBlockHeader: BlockHeader,
|
|
57
|
-
protected readonly
|
|
58
|
-
protected readonly
|
|
57
|
+
protected readonly contractStore: ContractStore,
|
|
58
|
+
protected readonly noteStore: NoteStore,
|
|
59
59
|
protected readonly keyStore: KeyStore,
|
|
60
|
-
protected readonly
|
|
60
|
+
protected readonly addressStore: AddressStore,
|
|
61
61
|
protected readonly aztecNode: AztecNode,
|
|
62
|
-
protected readonly
|
|
63
|
-
protected readonly
|
|
64
|
-
protected readonly
|
|
65
|
-
protected readonly
|
|
66
|
-
protected readonly
|
|
62
|
+
protected readonly anchorBlockStore: AnchorBlockStore,
|
|
63
|
+
protected readonly recipientTaggingStore: RecipientTaggingStore,
|
|
64
|
+
protected readonly senderAddressBookStore: SenderAddressBookStore,
|
|
65
|
+
protected readonly capsuleStore: CapsuleStore,
|
|
66
|
+
protected readonly privateEventStore: PrivateEventStore,
|
|
67
|
+
protected readonly jobId: string,
|
|
67
68
|
protected log = createLogger('simulator:client_view_context'),
|
|
68
69
|
protected readonly scopes?: AztecAddress[],
|
|
69
70
|
) {}
|
|
@@ -106,7 +107,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
106
107
|
* @returns The index and sibling path concatenated [index, sibling_path]
|
|
107
108
|
*/
|
|
108
109
|
public utilityGetMembershipWitness(blockNumber: BlockNumber, treeId: MerkleTreeId, leafValue: Fr): Promise<Fr[]> {
|
|
109
|
-
const treeMembershipService = new TreeMembershipService(this.aztecNode, this.
|
|
110
|
+
const treeMembershipService = new TreeMembershipService(this.aztecNode, this.anchorBlockStore);
|
|
110
111
|
return treeMembershipService.getMembershipWitness(blockNumber, treeId, leafValue);
|
|
111
112
|
}
|
|
112
113
|
|
|
@@ -136,7 +137,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
136
137
|
blockNumber: BlockNumber,
|
|
137
138
|
nullifier: Fr,
|
|
138
139
|
): Promise<NullifierMembershipWitness | undefined> {
|
|
139
|
-
const treeMembershipService = new TreeMembershipService(this.aztecNode, this.
|
|
140
|
+
const treeMembershipService = new TreeMembershipService(this.aztecNode, this.anchorBlockStore);
|
|
140
141
|
return await treeMembershipService.getLowNullifierMembershipWitness(blockNumber, nullifier);
|
|
141
142
|
}
|
|
142
143
|
|
|
@@ -150,7 +151,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
150
151
|
blockNumber: BlockNumber,
|
|
151
152
|
leafSlot: Fr,
|
|
152
153
|
): Promise<PublicDataWitness | undefined> {
|
|
153
|
-
const treeMembershipService = new TreeMembershipService(this.aztecNode, this.
|
|
154
|
+
const treeMembershipService = new TreeMembershipService(this.aztecNode, this.anchorBlockStore);
|
|
154
155
|
return await treeMembershipService.getPublicDataWitness(blockNumber, leafSlot);
|
|
155
156
|
}
|
|
156
157
|
|
|
@@ -160,7 +161,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
160
161
|
* @returns Block extracted from a block with block number `blockNumber`.
|
|
161
162
|
*/
|
|
162
163
|
public async utilityGetBlockHeader(blockNumber: BlockNumber): Promise<BlockHeader | undefined> {
|
|
163
|
-
const anchorBlockNumber = (await this.
|
|
164
|
+
const anchorBlockNumber = (await this.anchorBlockStore.getBlockHeader()).getBlockNumber();
|
|
164
165
|
if (blockNumber > anchorBlockNumber) {
|
|
165
166
|
throw new Error(`Block number ${blockNumber} is higher than current block ${anchorBlockNumber}`);
|
|
166
167
|
}
|
|
@@ -180,7 +181,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
180
181
|
}
|
|
181
182
|
|
|
182
183
|
protected async getCompleteAddress(account: AztecAddress): Promise<CompleteAddress> {
|
|
183
|
-
const completeAddress = await this.
|
|
184
|
+
const completeAddress = await this.addressStore.getCompleteAddress(account);
|
|
184
185
|
if (!completeAddress) {
|
|
185
186
|
throw new Error(
|
|
186
187
|
`No public key registered for address ${account}.
|
|
@@ -200,7 +201,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
200
201
|
}
|
|
201
202
|
|
|
202
203
|
protected async getContractInstance(address: AztecAddress): Promise<ContractInstance> {
|
|
203
|
-
const instance = await this.
|
|
204
|
+
const instance = await this.contractStore.getContractInstance(address);
|
|
204
205
|
if (!instance) {
|
|
205
206
|
throw new Error(`No contract instance found for address ${address.toString()}`);
|
|
206
207
|
}
|
|
@@ -256,7 +257,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
256
257
|
offset: number,
|
|
257
258
|
status: NoteStatus,
|
|
258
259
|
): Promise<NoteData[]> {
|
|
259
|
-
const noteService = new NoteService(this.
|
|
260
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
|
|
260
261
|
|
|
261
262
|
const dbNotes = await noteService.getNotes(this.contractAddress, owner, storageSlot, status, this.scopes);
|
|
262
263
|
return pickNotes<NoteData>(dbNotes, {
|
|
@@ -281,13 +282,13 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
281
282
|
*/
|
|
282
283
|
public async utilityCheckNullifierExists(innerNullifier: Fr) {
|
|
283
284
|
const nullifier = await siloNullifier(this.contractAddress, innerNullifier!);
|
|
284
|
-
const treeMembershipService = new TreeMembershipService(this.aztecNode, this.
|
|
285
|
+
const treeMembershipService = new TreeMembershipService(this.aztecNode, this.anchorBlockStore);
|
|
285
286
|
const index = await treeMembershipService.getNullifierIndex(nullifier);
|
|
286
287
|
return index !== undefined;
|
|
287
288
|
}
|
|
288
289
|
|
|
289
290
|
/**
|
|
290
|
-
* Fetches a message from the
|
|
291
|
+
* Fetches a message from the executionStore, given its key.
|
|
291
292
|
* @param contractAddress - Address of a contract by which the message was emitted.
|
|
292
293
|
* @param messageHash - Hash of the message.
|
|
293
294
|
* @param secret - Secret used to compute a nullifier.
|
|
@@ -295,7 +296,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
295
296
|
* @returns The l1 to l2 membership witness (index of message in the tree and sibling path).
|
|
296
297
|
*/
|
|
297
298
|
public async utilityGetL1ToL2MembershipWitness(contractAddress: AztecAddress, messageHash: Fr, secret: Fr) {
|
|
298
|
-
const treeMembershipService = new TreeMembershipService(this.aztecNode, this.
|
|
299
|
+
const treeMembershipService = new TreeMembershipService(this.aztecNode, this.anchorBlockStore);
|
|
299
300
|
const [messageIndex, siblingPath] = await treeMembershipService.getL1ToL2MembershipWitness(
|
|
300
301
|
contractAddress,
|
|
301
302
|
messageHash,
|
|
@@ -320,7 +321,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
320
321
|
numberOfElements: number,
|
|
321
322
|
) {
|
|
322
323
|
const values = [];
|
|
323
|
-
const publicStorageService = new PublicStorageService(this.
|
|
324
|
+
const publicStorageService = new PublicStorageService(this.anchorBlockStore, this.aztecNode);
|
|
324
325
|
|
|
325
326
|
// TODO: why do we serialize these requests? This should probably a single call
|
|
326
327
|
// Privacy considerations?
|
|
@@ -347,16 +348,17 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
347
348
|
public async utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr) {
|
|
348
349
|
const logService = new LogService(
|
|
349
350
|
this.aztecNode,
|
|
350
|
-
this.
|
|
351
|
+
this.anchorBlockStore,
|
|
351
352
|
this.keyStore,
|
|
352
|
-
this.
|
|
353
|
-
this.
|
|
354
|
-
this.
|
|
353
|
+
this.capsuleStore,
|
|
354
|
+
this.recipientTaggingStore,
|
|
355
|
+
this.senderAddressBookStore,
|
|
356
|
+
this.addressStore,
|
|
355
357
|
);
|
|
356
358
|
|
|
357
359
|
await logService.syncTaggedLogs(this.contractAddress, pendingTaggedLogArrayBaseSlot, this.scopes);
|
|
358
360
|
|
|
359
|
-
const noteService = new NoteService(this.
|
|
361
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
|
|
360
362
|
await noteService.syncNoteNullifiers(this.contractAddress);
|
|
361
363
|
}
|
|
362
364
|
|
|
@@ -383,14 +385,14 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
383
385
|
// We read all note and event validation requests and process them all concurrently. This makes the process much
|
|
384
386
|
// faster as we don't need to wait for the network round-trip.
|
|
385
387
|
const noteValidationRequests = (
|
|
386
|
-
await this.
|
|
388
|
+
await this.capsuleStore.readCapsuleArray(contractAddress, noteValidationRequestsArrayBaseSlot)
|
|
387
389
|
).map(NoteValidationRequest.fromFields);
|
|
388
390
|
|
|
389
391
|
const eventValidationRequests = (
|
|
390
|
-
await this.
|
|
392
|
+
await this.capsuleStore.readCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot)
|
|
391
393
|
).map(EventValidationRequest.fromFields);
|
|
392
394
|
|
|
393
|
-
const noteService = new NoteService(this.
|
|
395
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
|
|
394
396
|
const noteDeliveries = noteValidationRequests.map(request =>
|
|
395
397
|
noteService.deliverNote(
|
|
396
398
|
request.contractAddress,
|
|
@@ -406,11 +408,12 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
406
408
|
),
|
|
407
409
|
);
|
|
408
410
|
|
|
409
|
-
const eventService = new EventService(this.
|
|
411
|
+
const eventService = new EventService(this.anchorBlockStore, this.aztecNode, this.privateEventStore);
|
|
410
412
|
const eventDeliveries = eventValidationRequests.map(request =>
|
|
411
413
|
eventService.deliverEvent(
|
|
412
414
|
request.contractAddress,
|
|
413
415
|
request.eventTypeId,
|
|
416
|
+
request.randomness,
|
|
414
417
|
request.serializedEvent,
|
|
415
418
|
request.eventCommitment,
|
|
416
419
|
request.txHash,
|
|
@@ -421,8 +424,8 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
421
424
|
await Promise.all([...noteDeliveries, ...eventDeliveries]);
|
|
422
425
|
|
|
423
426
|
// Requests are cleared once we're done.
|
|
424
|
-
await this.
|
|
425
|
-
await this.
|
|
427
|
+
await this.capsuleStore.setCapsuleArray(contractAddress, noteValidationRequestsArrayBaseSlot, []);
|
|
428
|
+
await this.capsuleStore.setCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot, []);
|
|
426
429
|
}
|
|
427
430
|
|
|
428
431
|
public async utilityBulkRetrieveLogs(
|
|
@@ -438,25 +441,26 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
438
441
|
// We read all log retrieval requests and process them all concurrently. This makes the process much faster as we
|
|
439
442
|
// don't need to wait for the network round-trip.
|
|
440
443
|
const logRetrievalRequests = (
|
|
441
|
-
await this.
|
|
444
|
+
await this.capsuleStore.readCapsuleArray(contractAddress, logRetrievalRequestsArrayBaseSlot)
|
|
442
445
|
).map(LogRetrievalRequest.fromFields);
|
|
443
446
|
|
|
444
447
|
const logService = new LogService(
|
|
445
448
|
this.aztecNode,
|
|
446
|
-
this.
|
|
449
|
+
this.anchorBlockStore,
|
|
447
450
|
this.keyStore,
|
|
448
|
-
this.
|
|
449
|
-
this.
|
|
450
|
-
this.
|
|
451
|
+
this.capsuleStore,
|
|
452
|
+
this.recipientTaggingStore,
|
|
453
|
+
this.senderAddressBookStore,
|
|
454
|
+
this.addressStore,
|
|
451
455
|
);
|
|
452
456
|
|
|
453
457
|
const maybeLogRetrievalResponses = await logService.bulkRetrieveLogs(logRetrievalRequests);
|
|
454
458
|
|
|
455
459
|
// Requests are cleared once we're done.
|
|
456
|
-
await this.
|
|
460
|
+
await this.capsuleStore.setCapsuleArray(contractAddress, logRetrievalRequestsArrayBaseSlot, []);
|
|
457
461
|
|
|
458
462
|
// The responses are stored as Option<LogRetrievalResponse> in a second CapsuleArray.
|
|
459
|
-
await this.
|
|
463
|
+
await this.capsuleStore.setCapsuleArray(
|
|
460
464
|
contractAddress,
|
|
461
465
|
logRetrievalResponsesArrayBaseSlot,
|
|
462
466
|
maybeLogRetrievalResponses.map(LogRetrievalResponse.toSerializedOption),
|
|
@@ -468,7 +472,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
468
472
|
// TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
|
|
469
473
|
throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
|
|
470
474
|
}
|
|
471
|
-
return this.
|
|
475
|
+
return this.capsuleStore.storeCapsule(this.contractAddress, slot, capsule);
|
|
472
476
|
}
|
|
473
477
|
|
|
474
478
|
public async utilityLoadCapsule(contractAddress: AztecAddress, slot: Fr): Promise<Fr[] | null> {
|
|
@@ -479,7 +483,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
479
483
|
return (
|
|
480
484
|
// TODO(#12425): On the following line, the pertinent capsule gets overshadowed by the transient one. Tackle this.
|
|
481
485
|
this.capsules.find(c => c.contractAddress.equals(contractAddress) && c.storageSlot.equals(slot))?.data ??
|
|
482
|
-
(await this.
|
|
486
|
+
(await this.capsuleStore.loadCapsule(this.contractAddress, slot))
|
|
483
487
|
);
|
|
484
488
|
}
|
|
485
489
|
|
|
@@ -488,7 +492,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
488
492
|
// TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
|
|
489
493
|
throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
|
|
490
494
|
}
|
|
491
|
-
return this.
|
|
495
|
+
return this.capsuleStore.deleteCapsule(this.contractAddress, slot);
|
|
492
496
|
}
|
|
493
497
|
|
|
494
498
|
public utilityCopyCapsule(
|
|
@@ -501,7 +505,7 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
|
|
|
501
505
|
// TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
|
|
502
506
|
throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
|
|
503
507
|
}
|
|
504
|
-
return this.
|
|
508
|
+
return this.capsuleStore.copyCapsule(this.contractAddress, srcSlot, dstSlot, numEntries);
|
|
505
509
|
}
|
|
506
510
|
|
|
507
511
|
// TODO(#11849): consider replacing this oracle with a pure Noir implementation of aes decryption.
|
|
@@ -2,21 +2,21 @@ import { FunctionSelector } from '@aztec/stdlib/abi';
|
|
|
2
2
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
3
|
import type { ContractOverrides } from '@aztec/stdlib/tx';
|
|
4
4
|
|
|
5
|
-
import type {
|
|
5
|
+
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
6
6
|
|
|
7
7
|
/*
|
|
8
|
-
* Proxy generator for a
|
|
8
|
+
* Proxy generator for a ContractStore that allows overriding contract instances and artifacts, so
|
|
9
9
|
* the contract function simulator can execute different bytecode on certain addresses. An example use case
|
|
10
10
|
* would be overriding your own account contract so that valid signatures don't have to be provided while simulating.
|
|
11
11
|
*/
|
|
12
|
-
export class
|
|
13
|
-
static create(
|
|
12
|
+
export class ProxiedContractStoreFactory {
|
|
13
|
+
static create(contractStore: ContractStore, overrides?: ContractOverrides) {
|
|
14
14
|
if (!overrides) {
|
|
15
|
-
return
|
|
15
|
+
return contractStore;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
return new Proxy(
|
|
19
|
-
get(target, prop: keyof
|
|
18
|
+
return new Proxy(contractStore, {
|
|
19
|
+
get(target, prop: keyof ContractStore) {
|
|
20
20
|
switch (prop) {
|
|
21
21
|
case 'getContractInstance': {
|
|
22
22
|
return async (address: AztecAddress) => {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { NoteDao, NotesFilter } from '@aztec/stdlib/note';
|
|
2
2
|
|
|
3
3
|
import type { PXE } from '../pxe.js';
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
4
|
+
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
5
|
+
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Methods provided by this class might help debugging but must not be used in production.
|
|
@@ -12,8 +12,8 @@ export class PXEDebugUtils {
|
|
|
12
12
|
#pxe: PXE | undefined = undefined;
|
|
13
13
|
|
|
14
14
|
constructor(
|
|
15
|
-
private
|
|
16
|
-
private
|
|
15
|
+
private contractStore: ContractStore,
|
|
16
|
+
private noteStore: NoteStore,
|
|
17
17
|
) {}
|
|
18
18
|
|
|
19
19
|
/**
|
|
@@ -40,9 +40,9 @@ export class PXEDebugUtils {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
// We need to manually trigger private state sync to have a guarantee that all the notes are available.
|
|
43
|
-
const call = await this.
|
|
43
|
+
const call = await this.contractStore.getFunctionCall('sync_private_state', [], filter.contractAddress);
|
|
44
44
|
await this.#pxe.simulateUtility(call);
|
|
45
45
|
|
|
46
|
-
return this.
|
|
46
|
+
return this.noteStore.getNotes(filter);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
|
|
1
2
|
import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
|
|
2
3
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -49,7 +50,12 @@ export async function createPXE(
|
|
|
49
50
|
? loggers.prover
|
|
50
51
|
: createLogger('pxe:bb:wasm:bundle' + (logSuffix ? `:${logSuffix}` : ''));
|
|
51
52
|
|
|
52
|
-
|
|
53
|
+
let prover;
|
|
54
|
+
if (options.proverOrOptions instanceof BBPrivateKernelProver) {
|
|
55
|
+
prover = options.proverOrOptions;
|
|
56
|
+
} else {
|
|
57
|
+
prover = new BBBundlePrivateKernelProver(simulator, { ...options.proverOrOptions, logger: proverLogger });
|
|
58
|
+
}
|
|
53
59
|
const protocolContractsProvider = new BundledProtocolContractsProvider();
|
|
54
60
|
|
|
55
61
|
const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
|
|
1
2
|
import { BBLazyPrivateKernelProver } from '@aztec/bb-prover/client/lazy';
|
|
2
3
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -48,8 +49,12 @@ export async function createPXE(
|
|
|
48
49
|
? loggers.prover
|
|
49
50
|
: createLogger('pxe:bb:wasm:bundle' + (logSuffix ? `:${logSuffix}` : ''));
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
let prover;
|
|
53
|
+
if (options.proverOrOptions instanceof BBPrivateKernelProver) {
|
|
54
|
+
prover = options.proverOrOptions;
|
|
55
|
+
} else {
|
|
56
|
+
prover = new BBLazyPrivateKernelProver(simulator, { ...options.proverOrOptions, logger: proverLogger });
|
|
57
|
+
}
|
|
53
58
|
const protocolContractsProvider = new LazyProtocolContractsProvider();
|
|
54
59
|
|
|
55
60
|
const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BBPrivateKernelProverOptions } from '@aztec/bb-prover/client';
|
|
1
2
|
import type { Logger } from '@aztec/foundation/log';
|
|
2
3
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
4
|
import type { CircuitSimulator } from '@aztec/simulator/client';
|
|
@@ -6,7 +7,7 @@ import type { PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
|
|
|
6
7
|
export type PXECreationOptions = {
|
|
7
8
|
loggers?: { store?: Logger; pxe?: Logger; prover?: Logger };
|
|
8
9
|
useLogSuffix?: boolean | string;
|
|
9
|
-
|
|
10
|
+
proverOrOptions?: PrivateKernelProver | BBPrivateKernelProverOptions;
|
|
10
11
|
store?: AztecAsyncKVStore;
|
|
11
12
|
simulator?: CircuitSimulator;
|
|
12
13
|
};
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
+
import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
|
|
1
2
|
import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
|
|
2
3
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
3
|
-
import {
|
|
4
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
5
|
+
import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
4
6
|
import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
|
|
5
|
-
import {
|
|
6
|
-
type CircuitSimulator,
|
|
7
|
-
MemoryCircuitRecorder,
|
|
8
|
-
SimulatorRecorderWrapper,
|
|
9
|
-
WASMSimulator,
|
|
10
|
-
} from '@aztec/simulator/client';
|
|
7
|
+
import { MemoryCircuitRecorder, SimulatorRecorderWrapper, WASMSimulator } from '@aztec/simulator/client';
|
|
11
8
|
import { FileCircuitRecorder } from '@aztec/simulator/testing';
|
|
12
9
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
13
10
|
|
|
@@ -46,9 +43,6 @@ export async function createPXE(
|
|
|
46
43
|
};
|
|
47
44
|
|
|
48
45
|
if (!options.store) {
|
|
49
|
-
// TODO once https://github.com/AztecProtocol/aztec-packages/issues/13656 is fixed, we can remove this and always
|
|
50
|
-
// import the lmdb-v2 version
|
|
51
|
-
const { createStore } = await import('@aztec/kv-store/lmdb-v2');
|
|
52
46
|
const storeLogger = loggers.store
|
|
53
47
|
? loggers.store
|
|
54
48
|
: createLogger('pxe:data:lmdb' + (logSuffix ? `:${logSuffix}` : ''));
|
|
@@ -58,7 +52,13 @@ export async function createPXE(
|
|
|
58
52
|
? loggers.prover
|
|
59
53
|
: createLogger('pxe:bb:native' + (logSuffix ? `:${logSuffix}` : ''));
|
|
60
54
|
|
|
61
|
-
|
|
55
|
+
let prover;
|
|
56
|
+
if (options.proverOrOptions instanceof BBPrivateKernelProver) {
|
|
57
|
+
prover = options.proverOrOptions;
|
|
58
|
+
} else {
|
|
59
|
+
prover = new BBBundlePrivateKernelProver(simulator, { ...options.proverOrOptions, logger: proverLogger });
|
|
60
|
+
}
|
|
61
|
+
|
|
62
62
|
const protocolContractsProvider = new BundledProtocolContractsProvider();
|
|
63
63
|
|
|
64
64
|
const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
|
|
@@ -73,7 +73,3 @@ export async function createPXE(
|
|
|
73
73
|
);
|
|
74
74
|
return pxe;
|
|
75
75
|
}
|
|
76
|
-
|
|
77
|
-
function createProver(simulator: CircuitSimulator, logger?: Logger) {
|
|
78
|
-
return new BBBundlePrivateKernelProver(simulator, logger);
|
|
79
|
-
}
|
package/src/error_enriching.ts
CHANGED
|
@@ -4,18 +4,14 @@ import { FunctionSelector } from '@aztec/stdlib/abi';
|
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
5
|
import { type SimulationError, isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
|
|
6
6
|
|
|
7
|
-
import type {
|
|
7
|
+
import type { ContractStore } from './storage/contract_store/contract_store.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Adds contract and function names to a simulation error, if they
|
|
11
11
|
* can be found in the PXE database
|
|
12
12
|
* @param err - The error to enrich.
|
|
13
13
|
*/
|
|
14
|
-
export async function enrichSimulationError(
|
|
15
|
-
err: SimulationError,
|
|
16
|
-
contractDataProvider: ContractDataProvider,
|
|
17
|
-
logger: Logger,
|
|
18
|
-
) {
|
|
14
|
+
export async function enrichSimulationError(err: SimulationError, contractStore: ContractStore, logger: Logger) {
|
|
19
15
|
// Maps contract addresses to the set of function selectors that were in error.
|
|
20
16
|
// Map and Set do reference equality for their keys instead of value equality, so we store the string
|
|
21
17
|
// representation to get e.g. different contract address objects with the same address value to match.
|
|
@@ -34,7 +30,7 @@ export async function enrichSimulationError(
|
|
|
34
30
|
await Promise.all(
|
|
35
31
|
[...mentionedFunctions.entries()].map(async ([contractAddress, fnSelectors]) => {
|
|
36
32
|
const parsedContractAddress = AztecAddress.fromString(contractAddress);
|
|
37
|
-
const contract = await
|
|
33
|
+
const contract = await contractStore.getContract(parsedContractAddress);
|
|
38
34
|
if (contract) {
|
|
39
35
|
err.enrichWithContractName(parsedContractAddress, contract.name);
|
|
40
36
|
// Map from function selector to function name. It uses a stringified key for the same reason as mentionedFunctions.
|
|
@@ -68,11 +64,7 @@ export async function enrichSimulationError(
|
|
|
68
64
|
);
|
|
69
65
|
}
|
|
70
66
|
|
|
71
|
-
export async function enrichPublicSimulationError(
|
|
72
|
-
err: SimulationError,
|
|
73
|
-
contractDataProvider: ContractDataProvider,
|
|
74
|
-
logger: Logger,
|
|
75
|
-
) {
|
|
67
|
+
export async function enrichPublicSimulationError(err: SimulationError, contractStore: ContractStore, logger: Logger) {
|
|
76
68
|
const callStack = err.getCallStack();
|
|
77
69
|
const originalFailingFunction = callStack[callStack.length - 1];
|
|
78
70
|
|
|
@@ -80,7 +72,7 @@ export async function enrichPublicSimulationError(
|
|
|
80
72
|
throw new Error(`Original failing function not found when enriching public simulation, missing callstack`);
|
|
81
73
|
}
|
|
82
74
|
|
|
83
|
-
const artifact = await
|
|
75
|
+
const artifact = await contractStore.getPublicFunctionArtifact(originalFailingFunction.contractAddress);
|
|
84
76
|
if (!artifact) {
|
|
85
77
|
throw new Error(
|
|
86
78
|
`Artifact not found when enriching public simulation error. Contract address: ${originalFailingFunction.contractAddress}.`,
|
|
@@ -92,7 +84,7 @@ export async function enrichPublicSimulationError(
|
|
|
92
84
|
err.setOriginalMessage(err.getOriginalMessage() + `${assertionMessage}`);
|
|
93
85
|
}
|
|
94
86
|
|
|
95
|
-
const debugInfo = await
|
|
87
|
+
const debugInfo = await contractStore.getPublicFunctionDebugMetadata(originalFailingFunction.contractAddress);
|
|
96
88
|
|
|
97
89
|
const noirCallStack = err.getNoirCallStack();
|
|
98
90
|
if (debugInfo) {
|
|
@@ -110,6 +102,6 @@ export async function enrichPublicSimulationError(
|
|
|
110
102
|
);
|
|
111
103
|
}
|
|
112
104
|
}
|
|
113
|
-
await enrichSimulationError(err,
|
|
105
|
+
await enrichSimulationError(err, contractStore, logger);
|
|
114
106
|
}
|
|
115
107
|
}
|
|
@@ -6,19 +6,20 @@ import type { AztecNode } from '@aztec/stdlib/interfaces/server';
|
|
|
6
6
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
7
7
|
import type { TxHash } from '@aztec/stdlib/tx';
|
|
8
8
|
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { AnchorBlockStore } from '../storage/anchor_block_store/anchor_block_store.js';
|
|
10
|
+
import { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
11
11
|
|
|
12
12
|
export class EventService {
|
|
13
13
|
constructor(
|
|
14
|
-
private readonly
|
|
14
|
+
private readonly anchorBlockStore: AnchorBlockStore,
|
|
15
15
|
private readonly aztecNode: AztecNode,
|
|
16
|
-
private readonly
|
|
16
|
+
private readonly privateEventStore: PrivateEventStore,
|
|
17
17
|
) {}
|
|
18
18
|
|
|
19
19
|
public async deliverEvent(
|
|
20
20
|
contractAddress: AztecAddress,
|
|
21
21
|
selector: EventSelector,
|
|
22
|
+
randomness: Fr,
|
|
22
23
|
content: Fr[],
|
|
23
24
|
eventCommitment: Fr,
|
|
24
25
|
txHash: TxHash,
|
|
@@ -29,7 +30,7 @@ export class EventService {
|
|
|
29
30
|
// maintain consistent behavior in the PXE. Additionally, events should never be ahead of the synced block here
|
|
30
31
|
// since `fetchTaggedLogs` only processes logs up to the synced block.
|
|
31
32
|
const [syncedBlockHeader, siloedEventCommitment, txEffect] = await Promise.all([
|
|
32
|
-
this.
|
|
33
|
+
this.anchorBlockStore.getBlockHeader(),
|
|
33
34
|
siloNullifier(contractAddress, eventCommitment),
|
|
34
35
|
this.aztecNode.getTxEffect(txHash),
|
|
35
36
|
]);
|
|
@@ -61,8 +62,9 @@ export class EventService {
|
|
|
61
62
|
);
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
return this.
|
|
65
|
+
return this.privateEventStore.storePrivateEventLog(
|
|
65
66
|
selector,
|
|
67
|
+
randomness,
|
|
66
68
|
content,
|
|
67
69
|
Number(nullifierIndex.data), // Index of the event commitment in the nullifier tree
|
|
68
70
|
{
|
|
@@ -2,13 +2,13 @@ import type { PrivateEventFilter } from '@aztec/aztec.js/wallet';
|
|
|
2
2
|
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
3
3
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import type {
|
|
5
|
+
import { AnchorBlockStore } from '../storage/anchor_block_store/anchor_block_store.js';
|
|
6
|
+
import type { PrivateEventStoreFilter } from '../storage/private_event_store/private_event_store.js';
|
|
7
7
|
|
|
8
8
|
export class PrivateEventFilterValidator {
|
|
9
|
-
constructor(private
|
|
9
|
+
constructor(private anchorBlockStore: AnchorBlockStore) {}
|
|
10
10
|
|
|
11
|
-
async validate(filter: PrivateEventFilter): Promise<
|
|
11
|
+
async validate(filter: PrivateEventFilter): Promise<PrivateEventStoreFilter> {
|
|
12
12
|
let { fromBlock, toBlock } = filter;
|
|
13
13
|
|
|
14
14
|
// Block range filters in Aztec Node are defined as closed-open intervals [fromBlock, toBlock), so
|
|
@@ -16,7 +16,7 @@ export class PrivateEventFilterValidator {
|
|
|
16
16
|
// We then default to [INITIAL_L2_BLOCK_NUM, latestKnownBlock + 1), ie: by default return events from
|
|
17
17
|
// the first block to the latest known block.
|
|
18
18
|
if (!fromBlock || !toBlock) {
|
|
19
|
-
const lastKnownBlock = (await this.
|
|
19
|
+
const lastKnownBlock = (await this.anchorBlockStore.getBlockHeader()).getBlockNumber();
|
|
20
20
|
fromBlock = fromBlock ?? BlockNumber(INITIAL_L2_BLOCK_NUM);
|
|
21
21
|
toBlock = toBlock ?? BlockNumber(lastKnownBlock + 1);
|
|
22
22
|
}
|