@aztec/pxe 0.0.1-commit.c7c42ec → 0.0.1-commit.f295ac2
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 -2
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +21 -13
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/benchmarked_node.js +77 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +8 -9
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +33 -16
- package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +45 -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/noir-structs/utility_context.d.ts +4 -10
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +9 -8
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +4 -4
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +5 -5
- package/dest/contract_function_simulator/oracle/oracle.d.ts +6 -6
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +20 -19
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +5 -9
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +11 -10
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +8 -18
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +10 -35
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +14 -12
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +54 -52
- 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/index.d.ts +2 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +1 -0
- 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/events/event_service.d.ts +4 -3
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +17 -19
- package/dest/events/private_event_filter_validator.d.ts +5 -5
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +5 -6
- 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 +3 -2
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +5 -3
- package/dest/notes/note_service.d.ts +3 -3
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +23 -28
- package/dest/oracle_version.d.ts +2 -2
- package/dest/oracle_version.js +2 -2
- package/dest/private_kernel/hints/index.d.ts +2 -2
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
- package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +13 -7
- 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 +4 -5
- package/dest/private_kernel/private_kernel_oracle.d.ts +24 -28
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +90 -2
- package/dest/pxe.d.ts +8 -36
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +65 -87
- package/dest/storage/capsule_store/capsule_store.d.ts +24 -9
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_store.js +132 -23
- package/dest/storage/contract_store/contract_store.d.ts +2 -1
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +12 -0
- package/dest/storage/note_store/note_store.d.ts +6 -5
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +89 -94
- package/dest/storage/private_event_store/private_event_store.d.ts +33 -6
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +139 -32
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +15 -8
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/recipient_tagging_store.js +69 -12
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +19 -9
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +110 -28
- package/dest/tagging/constants.d.ts +2 -0
- package/dest/tagging/constants.d.ts.map +1 -0
- package/dest/tagging/constants.js +10 -0
- package/dest/tagging/index.d.ts +2 -2
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +1 -10
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +2 -2
- 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/sender_sync/sync_sender_tagging_indexes.d.ts +2 -2
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +8 -8
- package/dest/tagging/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 -1
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +2 -2
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -2
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +4 -2
- package/dest/tree_membership/tree_membership_service.d.ts +9 -11
- package/dest/tree_membership/tree_membership_service.d.ts.map +1 -1
- package/dest/tree_membership/tree_membership_service.js +25 -34
- package/package.json +18 -18
- package/src/block_synchronizer/block_synchronizer.ts +30 -12
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +42 -16
- package/src/contract_function_simulator/execution_note_cache.ts +44 -25
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +4 -0
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +8 -7
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +6 -6
- package/src/contract_function_simulator/oracle/oracle.ts +24 -22
- package/src/contract_function_simulator/oracle/private_execution.ts +10 -19
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +13 -38
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +56 -50
- 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/index.ts +1 -0
- package/src/entrypoints/server/utils.ts +11 -15
- package/src/events/event_service.ts +17 -21
- package/src/events/private_event_filter_validator.ts +3 -5
- package/src/job_coordinator/job_coordinator.ts +149 -0
- package/src/logs/log_service.ts +3 -1
- package/src/notes/note_service.ts +23 -29
- package/src/oracle_version.ts +2 -2
- package/src/private_kernel/hints/index.ts +1 -1
- package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +33 -22
- package/src/private_kernel/private_kernel_execution_prover.ts +3 -5
- package/src/private_kernel/private_kernel_oracle.ts +116 -36
- package/src/pxe.ts +98 -116
- package/src/storage/capsule_store/capsule_store.ts +159 -23
- package/src/storage/contract_store/contract_store.ts +20 -0
- package/src/storage/note_store/note_store.ts +98 -95
- package/src/storage/private_event_store/private_event_store.ts +199 -37
- package/src/storage/tagging_store/recipient_tagging_store.ts +89 -13
- package/src/storage/tagging_store/sender_tagging_store.ts +129 -28
- package/src/tagging/constants.ts +10 -0
- package/src/tagging/index.ts +1 -11
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +10 -6
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +8 -7
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +6 -2
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +4 -1
- package/src/tree_membership/tree_membership_service.ts +27 -42
- package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
- package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_node.js +0 -27
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
- package/dest/public_storage/public_storage_service.d.ts +0 -24
- package/dest/public_storage/public_storage_service.d.ts.map +0 -1
- package/dest/public_storage/public_storage_service.js +0 -26
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/private_kernel/private_kernel_oracle_impl.ts +0 -133
- package/src/public_storage/public_storage_service.ts +0 -33
|
@@ -8,7 +8,6 @@ import { EventService } from '../../events/event_service.js';
|
|
|
8
8
|
import { LogService } from '../../logs/log_service.js';
|
|
9
9
|
import { NoteService } from '../../notes/note_service.js';
|
|
10
10
|
import { ORACLE_VERSION } from '../../oracle_version.js';
|
|
11
|
-
import { PublicStorageService } from '../../public_storage/public_storage_service.js';
|
|
12
11
|
import { TreeMembershipService } from '../../tree_membership/tree_membership_service.js';
|
|
13
12
|
import { EventValidationRequest } from '../noir-structs/event_validation_request.js';
|
|
14
13
|
import { LogRetrievalRequest } from '../noir-structs/log_retrieval_request.js';
|
|
@@ -34,12 +33,13 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
34
33
|
senderAddressBookStore;
|
|
35
34
|
capsuleStore;
|
|
36
35
|
privateEventStore;
|
|
36
|
+
jobId;
|
|
37
37
|
log;
|
|
38
38
|
scopes;
|
|
39
39
|
isMisc;
|
|
40
40
|
isUtility;
|
|
41
41
|
aztecNrDebugLog;
|
|
42
|
-
constructor(contractAddress, /** List of transient auth witnesses to be used during this simulation */ authWitnesses, capsules, anchorBlockHeader, contractStore, noteStore, keyStore, addressStore, aztecNode, anchorBlockStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, log = createLogger('simulator:client_view_context'), scopes){
|
|
42
|
+
constructor(contractAddress, /** List of transient auth witnesses to be used during this simulation */ authWitnesses, capsules, anchorBlockHeader, contractStore, noteStore, keyStore, addressStore, aztecNode, anchorBlockStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, jobId, log = createLogger('simulator:client_view_context'), scopes){
|
|
43
43
|
this.contractAddress = contractAddress;
|
|
44
44
|
this.authWitnesses = authWitnesses;
|
|
45
45
|
this.capsules = capsules;
|
|
@@ -54,6 +54,7 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
54
54
|
this.senderAddressBookStore = senderAddressBookStore;
|
|
55
55
|
this.capsuleStore = capsuleStore;
|
|
56
56
|
this.privateEventStore = privateEventStore;
|
|
57
|
+
this.jobId = jobId;
|
|
57
58
|
this.log = log;
|
|
58
59
|
this.scopes = scopes;
|
|
59
60
|
this.isMisc = true;
|
|
@@ -69,13 +70,7 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
69
70
|
return Fr.random();
|
|
70
71
|
}
|
|
71
72
|
utilityGetUtilityContext() {
|
|
72
|
-
return UtilityContext.
|
|
73
|
-
blockNumber: this.anchorBlockHeader.globalVariables.blockNumber,
|
|
74
|
-
timestamp: this.anchorBlockHeader.globalVariables.timestamp,
|
|
75
|
-
contractAddress: this.contractAddress,
|
|
76
|
-
version: this.anchorBlockHeader.globalVariables.version,
|
|
77
|
-
chainId: this.anchorBlockHeader.globalVariables.chainId
|
|
78
|
-
});
|
|
73
|
+
return new UtilityContext(this.anchorBlockHeader, this.contractAddress);
|
|
79
74
|
}
|
|
80
75
|
/**
|
|
81
76
|
* Retrieve keys associated with a specific master public key and app address.
|
|
@@ -87,42 +82,42 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
87
82
|
}
|
|
88
83
|
/**
|
|
89
84
|
* Fetches the index and sibling path of a leaf at a given block from a given tree.
|
|
90
|
-
* @param
|
|
85
|
+
* @param blockHash - The block hash at which to get the membership witness.
|
|
91
86
|
* @param treeId - Id of the tree to get the sibling path from.
|
|
92
87
|
* @param leafValue - The leaf value
|
|
93
88
|
* @returns The index and sibling path concatenated [index, sibling_path]
|
|
94
|
-
*/ utilityGetMembershipWitness(
|
|
95
|
-
const treeMembershipService = new TreeMembershipService(this.aztecNode
|
|
96
|
-
return treeMembershipService.getMembershipWitness(
|
|
89
|
+
*/ utilityGetMembershipWitness(blockHash, treeId, leafValue) {
|
|
90
|
+
const treeMembershipService = new TreeMembershipService(this.aztecNode);
|
|
91
|
+
return treeMembershipService.getMembershipWitness(blockHash, treeId, leafValue);
|
|
97
92
|
}
|
|
98
93
|
/**
|
|
99
94
|
* Returns a nullifier membership witness for a given nullifier at a given block.
|
|
100
|
-
* @param
|
|
95
|
+
* @param blockHash - The block hash at which to get the index.
|
|
101
96
|
* @param nullifier - Nullifier we try to find witness for.
|
|
102
97
|
* @returns The nullifier membership witness (if found).
|
|
103
|
-
*/ async utilityGetNullifierMembershipWitness(
|
|
104
|
-
return await this.aztecNode.getNullifierMembershipWitness(
|
|
98
|
+
*/ async utilityGetNullifierMembershipWitness(blockHash, nullifier) {
|
|
99
|
+
return await this.aztecNode.getNullifierMembershipWitness(blockHash, nullifier);
|
|
105
100
|
}
|
|
106
101
|
/**
|
|
107
102
|
* Returns a low nullifier membership witness for a given nullifier at a given block.
|
|
108
|
-
* @param
|
|
103
|
+
* @param blockHash - The block hash at which to get the index.
|
|
109
104
|
* @param nullifier - Nullifier we try to find the low nullifier witness for.
|
|
110
105
|
* @returns The low nullifier membership witness (if found).
|
|
111
106
|
* @remarks Low nullifier witness can be used to perform a nullifier non-inclusion proof by leveraging the "linked
|
|
112
107
|
* list structure" of leaves and proving that a lower nullifier is pointing to a bigger next value than the nullifier
|
|
113
108
|
* we are trying to prove non-inclusion for.
|
|
114
|
-
*/ async utilityGetLowNullifierMembershipWitness(
|
|
115
|
-
const treeMembershipService = new TreeMembershipService(this.aztecNode
|
|
116
|
-
return await treeMembershipService.getLowNullifierMembershipWitness(
|
|
109
|
+
*/ async utilityGetLowNullifierMembershipWitness(blockHash, nullifier) {
|
|
110
|
+
const treeMembershipService = new TreeMembershipService(this.aztecNode);
|
|
111
|
+
return await treeMembershipService.getLowNullifierMembershipWitness(blockHash, nullifier);
|
|
117
112
|
}
|
|
118
113
|
/**
|
|
119
114
|
* Returns a public data tree witness for a given leaf slot at a given block.
|
|
120
|
-
* @param
|
|
115
|
+
* @param blockHash - The block hash at which to get the index.
|
|
121
116
|
* @param leafSlot - The slot of the public data tree to get the witness for.
|
|
122
117
|
* @returns - The witness
|
|
123
|
-
*/ async utilityGetPublicDataWitness(
|
|
124
|
-
const treeMembershipService = new TreeMembershipService(this.aztecNode
|
|
125
|
-
return await treeMembershipService.getPublicDataWitness(
|
|
118
|
+
*/ async utilityGetPublicDataWitness(blockHash, leafSlot) {
|
|
119
|
+
const treeMembershipService = new TreeMembershipService(this.aztecNode);
|
|
120
|
+
return await treeMembershipService.getPublicDataWitness(blockHash, leafSlot);
|
|
126
121
|
}
|
|
127
122
|
/**
|
|
128
123
|
* Fetches a block header of a given block.
|
|
@@ -134,7 +129,7 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
134
129
|
throw new Error(`Block number ${blockNumber} is higher than current block ${anchorBlockNumber}`);
|
|
135
130
|
}
|
|
136
131
|
const block = await this.aztecNode.getBlock(blockNumber);
|
|
137
|
-
return block?.
|
|
132
|
+
return block?.header;
|
|
138
133
|
}
|
|
139
134
|
/**
|
|
140
135
|
* Retrieve the complete address associated to a given address.
|
|
@@ -226,7 +221,7 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
226
221
|
* @returns A boolean indicating whether the nullifier exists in the tree or not.
|
|
227
222
|
*/ async utilityCheckNullifierExists(innerNullifier) {
|
|
228
223
|
const nullifier = await siloNullifier(this.contractAddress, innerNullifier);
|
|
229
|
-
const treeMembershipService = new TreeMembershipService(this.aztecNode
|
|
224
|
+
const treeMembershipService = new TreeMembershipService(this.aztecNode);
|
|
230
225
|
const index = await treeMembershipService.getNullifierIndex(nullifier);
|
|
231
226
|
return index !== undefined;
|
|
232
227
|
}
|
|
@@ -238,25 +233,24 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
238
233
|
* @dev Contract address and secret are only used to compute the nullifier to get non-nullified messages
|
|
239
234
|
* @returns The l1 to l2 membership witness (index of message in the tree and sibling path).
|
|
240
235
|
*/ async utilityGetL1ToL2MembershipWitness(contractAddress, messageHash, secret) {
|
|
241
|
-
const treeMembershipService = new TreeMembershipService(this.aztecNode
|
|
236
|
+
const treeMembershipService = new TreeMembershipService(this.aztecNode);
|
|
242
237
|
const [messageIndex, siblingPath] = await treeMembershipService.getL1ToL2MembershipWitness(contractAddress, messageHash, secret);
|
|
243
238
|
// Assuming messageIndex is what you intended to use for the index in MessageLoadOracleInputs
|
|
244
239
|
return new MessageLoadOracleInputs(messageIndex, siblingPath);
|
|
245
240
|
}
|
|
246
241
|
/**
|
|
247
242
|
* Read the public storage data.
|
|
243
|
+
* @param blockHash - The block hash to read storage at.
|
|
248
244
|
* @param contractAddress - The address to read storage from.
|
|
249
245
|
* @param startStorageSlot - The starting storage slot.
|
|
250
|
-
* @param blockNumber - The block number to read storage at.
|
|
251
246
|
* @param numberOfElements - Number of elements to read from the starting storage slot.
|
|
252
|
-
*/ async utilityStorageRead(contractAddress, startStorageSlot,
|
|
247
|
+
*/ async utilityStorageRead(blockHash, contractAddress, startStorageSlot, numberOfElements) {
|
|
253
248
|
const values = [];
|
|
254
|
-
const publicStorageService = new PublicStorageService(this.anchorBlockStore, this.aztecNode);
|
|
255
249
|
// TODO: why do we serialize these requests? This should probably a single call
|
|
256
250
|
// Privacy considerations?
|
|
257
251
|
for(let i = 0n; i < numberOfElements; i++){
|
|
258
252
|
const storageSlot = new Fr(startStorageSlot.value + i);
|
|
259
|
-
const value = await
|
|
253
|
+
const value = await this.aztecNode.getPublicStorageAt(blockHash, contractAddress, storageSlot);
|
|
260
254
|
this.log.debug(`Oracle storage read: slot=${storageSlot.toString()} address-${contractAddress.toString()} value=${value}`);
|
|
261
255
|
values.push(value);
|
|
262
256
|
}
|
|
@@ -270,10 +264,16 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
270
264
|
this.aztecNrDebugLog[levelName](`${applyStringFormatting(message, fields)}`);
|
|
271
265
|
}
|
|
272
266
|
async utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot) {
|
|
273
|
-
const logService = new LogService(this.aztecNode, this.anchorBlockStore, this.keyStore, this.capsuleStore, this.recipientTaggingStore, this.senderAddressBookStore, this.addressStore);
|
|
274
|
-
await logService.syncTaggedLogs(this.contractAddress, pendingTaggedLogArrayBaseSlot, this.scopes);
|
|
267
|
+
const logService = new LogService(this.aztecNode, this.anchorBlockStore, this.keyStore, this.capsuleStore, this.recipientTaggingStore, this.senderAddressBookStore, this.addressStore, this.jobId);
|
|
275
268
|
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
|
|
276
|
-
|
|
269
|
+
// It is acceptable to run the following operations in parallel for several reasons:
|
|
270
|
+
// 1. syncTaggedLogs does not write to the note store — it only stores the pending tagged logs in a capsule array,
|
|
271
|
+
// which is then processed in Noir after this handler returns.
|
|
272
|
+
// 2. Even if syncTaggedLogs did write to the note store, it would not cause inconsistent state.
|
|
273
|
+
await Promise.all([
|
|
274
|
+
logService.syncTaggedLogs(this.contractAddress, pendingTaggedLogArrayBaseSlot, this.scopes),
|
|
275
|
+
noteService.syncNoteNullifiers(this.contractAddress)
|
|
276
|
+
]);
|
|
277
277
|
}
|
|
278
278
|
/**
|
|
279
279
|
* Validates all note and event validation requests enqueued via `enqueue_note_for_validation` and
|
|
@@ -285,25 +285,25 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
285
285
|
* @param noteValidationRequestsArrayBaseSlot - The base slot of capsule array containing note validation requests.
|
|
286
286
|
* @param eventValidationRequestsArrayBaseSlot - The base slot of capsule array containing event validation requests.
|
|
287
287
|
*/ async utilityValidateEnqueuedNotesAndEvents(contractAddress, noteValidationRequestsArrayBaseSlot, eventValidationRequestsArrayBaseSlot) {
|
|
288
|
-
// TODO(#10727): allow other contracts to
|
|
288
|
+
// TODO(#10727): allow other contracts to store notes
|
|
289
289
|
if (!this.contractAddress.equals(contractAddress)) {
|
|
290
290
|
throw new Error(`Got a note validation request from ${contractAddress}, expected ${this.contractAddress}`);
|
|
291
291
|
}
|
|
292
292
|
// We read all note and event validation requests and process them all concurrently. This makes the process much
|
|
293
293
|
// faster as we don't need to wait for the network round-trip.
|
|
294
|
-
const noteValidationRequests = (await this.capsuleStore.readCapsuleArray(contractAddress, noteValidationRequestsArrayBaseSlot)).map(NoteValidationRequest.fromFields);
|
|
295
|
-
const eventValidationRequests = (await this.capsuleStore.readCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot)).map(EventValidationRequest.fromFields);
|
|
294
|
+
const noteValidationRequests = (await this.capsuleStore.readCapsuleArray(contractAddress, noteValidationRequestsArrayBaseSlot, this.jobId)).map(NoteValidationRequest.fromFields);
|
|
295
|
+
const eventValidationRequests = (await this.capsuleStore.readCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot, this.jobId)).map(EventValidationRequest.fromFields);
|
|
296
296
|
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
|
|
297
|
-
const
|
|
298
|
-
const eventService = new EventService(this.anchorBlockStore, this.aztecNode, this.privateEventStore);
|
|
299
|
-
const
|
|
297
|
+
const noteStorePromises = noteValidationRequests.map((request)=>noteService.storeNote(request.contractAddress, request.owner, request.storageSlot, request.randomness, request.noteNonce, request.content, request.noteHash, request.nullifier, request.txHash, request.recipient));
|
|
298
|
+
const eventService = new EventService(this.anchorBlockStore, this.aztecNode, this.privateEventStore, this.jobId);
|
|
299
|
+
const eventStorePromises = eventValidationRequests.map((request)=>eventService.storeEvent(request.contractAddress, request.eventTypeId, request.randomness, request.serializedEvent, request.eventCommitment, request.txHash, request.recipient));
|
|
300
300
|
await Promise.all([
|
|
301
|
-
...
|
|
302
|
-
...
|
|
301
|
+
...noteStorePromises,
|
|
302
|
+
...eventStorePromises
|
|
303
303
|
]);
|
|
304
304
|
// Requests are cleared once we're done.
|
|
305
|
-
await this.capsuleStore.setCapsuleArray(contractAddress, noteValidationRequestsArrayBaseSlot, []);
|
|
306
|
-
await this.capsuleStore.setCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot, []);
|
|
305
|
+
await this.capsuleStore.setCapsuleArray(contractAddress, noteValidationRequestsArrayBaseSlot, [], this.jobId);
|
|
306
|
+
await this.capsuleStore.setCapsuleArray(contractAddress, eventValidationRequestsArrayBaseSlot, [], this.jobId);
|
|
307
307
|
}
|
|
308
308
|
async utilityBulkRetrieveLogs(contractAddress, logRetrievalRequestsArrayBaseSlot, logRetrievalResponsesArrayBaseSlot) {
|
|
309
309
|
// TODO(#10727): allow other contracts to process partial notes
|
|
@@ -312,20 +312,21 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
312
312
|
}
|
|
313
313
|
// We read all log retrieval requests and process them all concurrently. This makes the process much faster as we
|
|
314
314
|
// don't need to wait for the network round-trip.
|
|
315
|
-
const logRetrievalRequests = (await this.capsuleStore.readCapsuleArray(contractAddress, logRetrievalRequestsArrayBaseSlot)).map(LogRetrievalRequest.fromFields);
|
|
316
|
-
const logService = new LogService(this.aztecNode, this.anchorBlockStore, this.keyStore, this.capsuleStore, this.recipientTaggingStore, this.senderAddressBookStore, this.addressStore);
|
|
315
|
+
const logRetrievalRequests = (await this.capsuleStore.readCapsuleArray(contractAddress, logRetrievalRequestsArrayBaseSlot, this.jobId)).map(LogRetrievalRequest.fromFields);
|
|
316
|
+
const logService = new LogService(this.aztecNode, this.anchorBlockStore, this.keyStore, this.capsuleStore, this.recipientTaggingStore, this.senderAddressBookStore, this.addressStore, this.jobId);
|
|
317
317
|
const maybeLogRetrievalResponses = await logService.bulkRetrieveLogs(logRetrievalRequests);
|
|
318
318
|
// Requests are cleared once we're done.
|
|
319
|
-
await this.capsuleStore.setCapsuleArray(contractAddress, logRetrievalRequestsArrayBaseSlot, []);
|
|
319
|
+
await this.capsuleStore.setCapsuleArray(contractAddress, logRetrievalRequestsArrayBaseSlot, [], this.jobId);
|
|
320
320
|
// The responses are stored as Option<LogRetrievalResponse> in a second CapsuleArray.
|
|
321
|
-
await this.capsuleStore.setCapsuleArray(contractAddress, logRetrievalResponsesArrayBaseSlot, maybeLogRetrievalResponses.map(LogRetrievalResponse.toSerializedOption));
|
|
321
|
+
await this.capsuleStore.setCapsuleArray(contractAddress, logRetrievalResponsesArrayBaseSlot, maybeLogRetrievalResponses.map(LogRetrievalResponse.toSerializedOption), this.jobId);
|
|
322
322
|
}
|
|
323
323
|
utilityStoreCapsule(contractAddress, slot, capsule) {
|
|
324
324
|
if (!contractAddress.equals(this.contractAddress)) {
|
|
325
325
|
// TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
|
|
326
326
|
throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
|
|
327
327
|
}
|
|
328
|
-
|
|
328
|
+
this.capsuleStore.storeCapsule(this.contractAddress, slot, capsule, this.jobId);
|
|
329
|
+
return Promise.resolve();
|
|
329
330
|
}
|
|
330
331
|
async utilityLoadCapsule(contractAddress, slot) {
|
|
331
332
|
if (!contractAddress.equals(this.contractAddress)) {
|
|
@@ -333,21 +334,22 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
333
334
|
throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
|
|
334
335
|
}
|
|
335
336
|
return(// TODO(#12425): On the following line, the pertinent capsule gets overshadowed by the transient one. Tackle this.
|
|
336
|
-
this.capsules.find((c)=>c.contractAddress.equals(contractAddress) && c.storageSlot.equals(slot))?.data ?? await this.capsuleStore.loadCapsule(this.contractAddress, slot));
|
|
337
|
+
this.capsules.find((c)=>c.contractAddress.equals(contractAddress) && c.storageSlot.equals(slot))?.data ?? await this.capsuleStore.loadCapsule(this.contractAddress, slot, this.jobId));
|
|
337
338
|
}
|
|
338
339
|
utilityDeleteCapsule(contractAddress, slot) {
|
|
339
340
|
if (!contractAddress.equals(this.contractAddress)) {
|
|
340
341
|
// TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
|
|
341
342
|
throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
|
|
342
343
|
}
|
|
343
|
-
|
|
344
|
+
this.capsuleStore.deleteCapsule(this.contractAddress, slot, this.jobId);
|
|
345
|
+
return Promise.resolve();
|
|
344
346
|
}
|
|
345
347
|
utilityCopyCapsule(contractAddress, srcSlot, dstSlot, numEntries) {
|
|
346
348
|
if (!contractAddress.equals(this.contractAddress)) {
|
|
347
349
|
// TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
|
|
348
350
|
throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
|
|
349
351
|
}
|
|
350
|
-
return this.capsuleStore.copyCapsule(this.contractAddress, srcSlot, dstSlot, numEntries);
|
|
352
|
+
return this.capsuleStore.copyCapsule(this.contractAddress, srcSlot, dstSlot, numEntries, this.jobId);
|
|
351
353
|
}
|
|
352
354
|
// TODO(#11849): consider replacing this oracle with a pure Noir implementation of aes decryption.
|
|
353
355
|
utilityAes128Decrypt(ciphertext, iv, symKey) {
|
|
@@ -13,4 +13,4 @@ import type { PXECreationOptions } from '../../pxe_creation_options.js';
|
|
|
13
13
|
* @returns A Promise that resolves to the started PXE instance.
|
|
14
14
|
*/
|
|
15
15
|
export declare function createPXE(aztecNode: AztecNode, config: PXEConfig, options?: PXECreationOptions): Promise<PXE>;
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9jbGllbnQvYnVuZGxlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXhFOzs7Ozs7Ozs7R0FTRztBQUNILHdCQUFzQixTQUFTLENBQzdCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxTQUFTLEVBQ2pCLE9BQU8sR0FBRSxrQkFBb0MsZ0JBcUM5QyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/client/bundle/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/client/bundle/utils.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,kBAAoC,gBAqC9C"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
|
|
1
2
|
import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
|
|
2
3
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -28,7 +29,15 @@ import { PXE } from '../../../pxe.js';
|
|
|
28
29
|
const store = options.store ?? await createStore('pxe_data', configWithContracts, storeLogger);
|
|
29
30
|
const simulator = options.simulator ?? new WASMSimulator();
|
|
30
31
|
const proverLogger = loggers.prover ? loggers.prover : createLogger('pxe:bb:wasm:bundle' + (logSuffix ? `:${logSuffix}` : ''));
|
|
31
|
-
|
|
32
|
+
let prover;
|
|
33
|
+
if (options.proverOrOptions instanceof BBPrivateKernelProver) {
|
|
34
|
+
prover = options.proverOrOptions;
|
|
35
|
+
} else {
|
|
36
|
+
prover = new BBBundlePrivateKernelProver(simulator, {
|
|
37
|
+
...options.proverOrOptions,
|
|
38
|
+
logger: proverLogger
|
|
39
|
+
});
|
|
40
|
+
}
|
|
32
41
|
const protocolContractsProvider = new BundledProtocolContractsProvider();
|
|
33
42
|
const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
|
|
34
43
|
const pxe = await PXE.create(aztecNode, store, prover, simulator, protocolContractsProvider, config, pxeLogger);
|
|
@@ -12,4 +12,4 @@ import type { PXECreationOptions } from '../../pxe_creation_options.js';
|
|
|
12
12
|
* @returns A Promise that resolves to the started PXE instance.
|
|
13
13
|
*/
|
|
14
14
|
export declare function createPXE(aztecNode: AztecNode, config: PXEConfig, options?: PXECreationOptions): Promise<PXE>;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9jbGllbnQvbGF6eS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RTs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixTQUFTLENBQzdCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxTQUFTLEVBQ2pCLE9BQU8sR0FBRSxrQkFBb0MsZ0JBcUM5QyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/client/lazy/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/client/lazy/utils.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,kBAAoC,gBAqC9C"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
|
|
1
2
|
import { BBLazyPrivateKernelProver } from '@aztec/bb-prover/client/lazy';
|
|
2
3
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -27,7 +28,15 @@ import { PXE } from '../../../pxe.js';
|
|
|
27
28
|
const store = options.store ?? await createStore('pxe_data', configWithContracts, storeLogger);
|
|
28
29
|
const simulator = options.simulator ?? new WASMSimulator();
|
|
29
30
|
const proverLogger = loggers.prover ? loggers.prover : createLogger('pxe:bb:wasm:bundle' + (logSuffix ? `:${logSuffix}` : ''));
|
|
30
|
-
|
|
31
|
+
let prover;
|
|
32
|
+
if (options.proverOrOptions instanceof BBPrivateKernelProver) {
|
|
33
|
+
prover = options.proverOrOptions;
|
|
34
|
+
} else {
|
|
35
|
+
prover = new BBLazyPrivateKernelProver(simulator, {
|
|
36
|
+
...options.proverOrOptions,
|
|
37
|
+
logger: proverLogger
|
|
38
|
+
});
|
|
39
|
+
}
|
|
31
40
|
const protocolContractsProvider = new LazyProtocolContractsProvider();
|
|
32
41
|
const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
|
|
33
42
|
const pxe = await PXE.create(aztecNode, store, prover, simulator, protocolContractsProvider, config, pxeLogger);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BBPrivateKernelProverOptions } from '@aztec/bb-prover/client';
|
|
1
2
|
import type { Logger } from '@aztec/foundation/log';
|
|
2
3
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
4
|
import type { CircuitSimulator } from '@aztec/simulator/client';
|
|
@@ -9,8 +10,8 @@ export type PXECreationOptions = {
|
|
|
9
10
|
prover?: Logger;
|
|
10
11
|
};
|
|
11
12
|
useLogSuffix?: boolean | string;
|
|
12
|
-
|
|
13
|
+
proverOrOptions?: PrivateKernelProver | BBPrivateKernelProverOptions;
|
|
13
14
|
store?: AztecAsyncKVStore;
|
|
14
15
|
simulator?: CircuitSimulator;
|
|
15
16
|
};
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX2NyZWF0aW9uX29wdGlvbnMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRyeXBvaW50cy9weGVfY3JlYXRpb25fb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTNFLE1BQU0sTUFBTSxrQkFBa0IsR0FBRztJQUMvQixPQUFPLENBQUMsRUFBRTtRQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLENBQUM7SUFDNUQsWUFBWSxDQUFDLEVBQUUsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUNoQyxlQUFlLENBQUMsRUFBRSxtQkFBbUIsR0FBRyw0QkFBNEIsQ0FBQztJQUNyRSxLQUFLLENBQUMsRUFBRSxpQkFBaUIsQ0FBQztJQUMxQixTQUFTLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztDQUM5QixDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pxe_creation_options.d.ts","sourceRoot":"","sources":["../../src/entrypoints/pxe_creation_options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,
|
|
1
|
+
{"version":3,"file":"pxe_creation_options.d.ts","sourceRoot":"","sources":["../../src/entrypoints/pxe_creation_options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,mBAAmB,GAAG,4BAA4B,CAAC;IACrE,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B,CAAC"}
|
|
@@ -6,4 +6,5 @@ export * from './utils.js';
|
|
|
6
6
|
export { NoteService } from '../../notes/note_service.js';
|
|
7
7
|
export { ORACLE_VERSION } from '../../oracle_version.js';
|
|
8
8
|
export { type PXECreationOptions } from '../pxe_creation_options.js';
|
|
9
|
-
|
|
9
|
+
export { JobCoordinator } from '../../job_coordinator/job_coordinator.js';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9zZXJ2ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxZQUFZLENBQUM7QUFDM0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC"}
|
|
@@ -5,4 +5,4 @@ import type { PXECreationOptions } from '../pxe_creation_options.js';
|
|
|
5
5
|
type PXEConfigWithoutDefaults = Omit<PXEConfig, 'l1Contracts' | 'l1ChainId' | 'l2BlockBatchSize' | 'rollupVersion'>;
|
|
6
6
|
export declare function createPXE(aztecNode: AztecNode, config: PXEConfigWithoutDefaults, options?: PXECreationOptions): Promise<PXE>;
|
|
7
7
|
export {};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnRyeXBvaW50cy9zZXJ2ZXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuQyxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJFLEtBQUssd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEdBQUcsV0FBVyxHQUFHLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxDQUFDO0FBRXBILHdCQUFzQixTQUFTLENBQzdCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSx3QkFBd0IsRUFDaEMsT0FBTyxHQUFFLGtCQUFvQyxnQkFzRDlDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/server/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/server/utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,KAAK,wBAAwB,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,WAAW,GAAG,kBAAkB,GAAG,eAAe,CAAC,CAAC;AAEpH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,wBAAwB,EAChC,OAAO,GAAE,kBAAoC,gBAsD9C"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
|
|
1
2
|
import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
|
|
2
3
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
|
+
import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
4
6
|
import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
|
|
5
7
|
import { MemoryCircuitRecorder, SimulatorRecorderWrapper, WASMSimulator } from '@aztec/simulator/client';
|
|
6
8
|
import { FileCircuitRecorder } from '@aztec/simulator/testing';
|
|
@@ -22,19 +24,21 @@ export async function createPXE(aztecNode, config, options = {
|
|
|
22
24
|
l2BlockBatchSize: 50
|
|
23
25
|
};
|
|
24
26
|
if (!options.store) {
|
|
25
|
-
// TODO once https://github.com/AztecProtocol/aztec-packages/issues/13656 is fixed, we can remove this and always
|
|
26
|
-
// import the lmdb-v2 version
|
|
27
|
-
const { createStore } = await import('@aztec/kv-store/lmdb-v2');
|
|
28
27
|
const storeLogger = loggers.store ? loggers.store : createLogger('pxe:data:lmdb' + (logSuffix ? `:${logSuffix}` : ''));
|
|
29
28
|
options.store = await createStore('pxe_data', PXE_DATA_SCHEMA_VERSION, configWithContracts, storeLogger);
|
|
30
29
|
}
|
|
31
30
|
const proverLogger = loggers.prover ? loggers.prover : createLogger('pxe:bb:native' + (logSuffix ? `:${logSuffix}` : ''));
|
|
32
|
-
|
|
31
|
+
let prover;
|
|
32
|
+
if (options.proverOrOptions instanceof BBPrivateKernelProver) {
|
|
33
|
+
prover = options.proverOrOptions;
|
|
34
|
+
} else {
|
|
35
|
+
prover = new BBBundlePrivateKernelProver(simulator, {
|
|
36
|
+
...options.proverOrOptions,
|
|
37
|
+
logger: proverLogger
|
|
38
|
+
});
|
|
39
|
+
}
|
|
33
40
|
const protocolContractsProvider = new BundledProtocolContractsProvider();
|
|
34
41
|
const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
|
|
35
42
|
const pxe = await PXE.create(aztecNode, options.store, prover, simulator, protocolContractsProvider, configWithContracts, pxeLogger);
|
|
36
43
|
return pxe;
|
|
37
44
|
}
|
|
38
|
-
function createProver(simulator, logger) {
|
|
39
|
-
return new BBBundlePrivateKernelProver(simulator, logger);
|
|
40
|
-
}
|
|
@@ -9,7 +9,8 @@ export declare class EventService {
|
|
|
9
9
|
private readonly anchorBlockStore;
|
|
10
10
|
private readonly aztecNode;
|
|
11
11
|
private readonly privateEventStore;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
private readonly jobId;
|
|
13
|
+
constructor(anchorBlockStore: AnchorBlockStore, aztecNode: AztecNode, privateEventStore: PrivateEventStore, jobId: string);
|
|
14
|
+
storeEvent(contractAddress: AztecAddress, selector: EventSelector, randomness: Fr, content: Fr[], eventCommitment: Fr, txHash: TxHash, scope: AztecAddress): Promise<void>;
|
|
14
15
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V2ZW50cy9ldmVudF9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRTFGLHFCQUFhLFlBQVk7SUFFckIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0I7SUFDakMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBQ2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztJQUp4QixZQUNtQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsU0FBUyxFQUFFLFNBQVMsRUFDcEIsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQ3BDLEtBQUssRUFBRSxNQUFNLEVBQzVCO0lBRVMsVUFBVSxDQUNyQixlQUFlLEVBQUUsWUFBWSxFQUM3QixRQUFRLEVBQUUsYUFBYSxFQUN2QixVQUFVLEVBQUUsRUFBRSxFQUNkLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFDYixlQUFlLEVBQUUsRUFBRSxFQUNuQixNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxZQUFZLEdBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0E2Q2Y7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event_service.d.ts","sourceRoot":"","sources":["../../src/events/event_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"event_service.d.ts","sourceRoot":"","sources":["../../src/events/event_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAE1F,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,YACmB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,MAAM,EAC5B;IAES,UAAU,CACrB,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,EAAE,EACd,OAAO,EAAE,EAAE,EAAE,EACb,eAAe,EAAE,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CA6Cf;CACF"}
|
|
@@ -1,47 +1,45 @@
|
|
|
1
1
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
2
|
-
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
3
2
|
export class EventService {
|
|
4
3
|
anchorBlockStore;
|
|
5
4
|
aztecNode;
|
|
6
5
|
privateEventStore;
|
|
7
|
-
|
|
6
|
+
jobId;
|
|
7
|
+
constructor(anchorBlockStore, aztecNode, privateEventStore, jobId){
|
|
8
8
|
this.anchorBlockStore = anchorBlockStore;
|
|
9
9
|
this.aztecNode = aztecNode;
|
|
10
10
|
this.privateEventStore = privateEventStore;
|
|
11
|
+
this.jobId = jobId;
|
|
11
12
|
}
|
|
12
|
-
async
|
|
13
|
+
async storeEvent(contractAddress, selector, randomness, content, eventCommitment, txHash, scope) {
|
|
13
14
|
// While using 'latest' block number would be fine for private events since they cannot be accessed from Aztec.nr
|
|
14
15
|
// (and thus we're less concerned about being ahead of the synced block), we use the synced block number to
|
|
15
16
|
// maintain consistent behavior in the PXE. Additionally, events should never be ahead of the synced block here
|
|
16
17
|
// since `fetchTaggedLogs` only processes logs up to the synced block.
|
|
17
|
-
const [
|
|
18
|
+
const [anchorBlockHeader, siloedEventCommitment, txEffect] = await Promise.all([
|
|
18
19
|
this.anchorBlockStore.getBlockHeader(),
|
|
19
20
|
siloNullifier(contractAddress, eventCommitment),
|
|
20
21
|
this.aztecNode.getTxEffect(txHash)
|
|
21
22
|
]);
|
|
22
|
-
const
|
|
23
|
+
const anchorBlockNumber = anchorBlockHeader.getBlockNumber();
|
|
23
24
|
if (!txEffect) {
|
|
24
25
|
throw new Error(`Could not find tx effect for tx hash ${txHash}`);
|
|
25
26
|
}
|
|
26
|
-
if (txEffect.l2BlockNumber >
|
|
27
|
-
throw new Error(`Could not find tx effect for tx hash ${txHash} as of block number ${
|
|
27
|
+
if (txEffect.l2BlockNumber > anchorBlockNumber) {
|
|
28
|
+
throw new Error(`Could not find tx effect for tx hash ${txHash} as of block number ${anchorBlockNumber}`);
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
// Find the index of the event commitment in the nullifiers array to determine event ordering within the tx
|
|
31
|
+
const eventIndexInTx = txEffect.data.nullifiers.findIndex((n)=>n.equals(siloedEventCommitment));
|
|
32
|
+
if (eventIndexInTx === -1) {
|
|
31
33
|
throw new Error(`Event commitment ${eventCommitment} (siloed as ${siloedEventCommitment}) is not present in tx ${txHash}`);
|
|
32
34
|
}
|
|
33
|
-
|
|
34
|
-
siloedEventCommitment
|
|
35
|
-
]);
|
|
36
|
-
if (nullifierIndex === undefined) {
|
|
37
|
-
throw new Error(`Event commitment ${eventCommitment} (siloed as ${siloedEventCommitment}) is not present on the nullifier tree at block ${syncedBlockNumber} (from tx ${txHash})`);
|
|
38
|
-
}
|
|
39
|
-
return this.privateEventStore.storePrivateEventLog(selector, content, Number(nullifierIndex.data), {
|
|
35
|
+
return this.privateEventStore.storePrivateEventLog(selector, randomness, content, siloedEventCommitment, {
|
|
40
36
|
contractAddress,
|
|
41
37
|
scope,
|
|
42
38
|
txHash,
|
|
43
|
-
l2BlockNumber:
|
|
44
|
-
l2BlockHash:
|
|
45
|
-
|
|
39
|
+
l2BlockNumber: txEffect.l2BlockNumber,
|
|
40
|
+
l2BlockHash: txEffect.l2BlockHash,
|
|
41
|
+
txIndexInBlock: txEffect.txIndexInBlock,
|
|
42
|
+
eventIndexInTx
|
|
43
|
+
}, this.jobId);
|
|
46
44
|
}
|
|
47
45
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { PrivateEventFilter } from '@aztec/aztec.js/wallet';
|
|
2
|
-
import {
|
|
2
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import type { PrivateEventStoreFilter } from '../storage/private_event_store/private_event_store.js';
|
|
4
4
|
export declare class PrivateEventFilterValidator {
|
|
5
|
-
private
|
|
6
|
-
constructor(
|
|
7
|
-
validate(filter: PrivateEventFilter):
|
|
5
|
+
private lastBlock;
|
|
6
|
+
constructor(lastBlock: BlockNumber);
|
|
7
|
+
validate(filter: PrivateEventFilter): PrivateEventStoreFilter;
|
|
8
8
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9ldmVudF9maWx0ZXJfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL3ByaXZhdGVfZXZlbnRfZmlsdGVyX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRXJHLHFCQUFhLDJCQUEyQjtJQUMxQixPQUFPLENBQUMsU0FBUztJQUE3QixZQUFvQixTQUFTLEVBQUUsV0FBVyxFQUFJO0lBRTlDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEdBQUcsdUJBQXVCLENBbUM1RDtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private_event_filter_validator.d.ts","sourceRoot":"","sources":["../../src/events/private_event_filter_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"private_event_filter_validator.d.ts","sourceRoot":"","sources":["../../src/events/private_event_filter_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAErG,qBAAa,2BAA2B;IAC1B,OAAO,CAAC,SAAS;IAA7B,YAAoB,SAAS,EAAE,WAAW,EAAI;IAE9C,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,uBAAuB,CAmC5D;CACF"}
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
2
2
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
export class PrivateEventFilterValidator {
|
|
4
|
-
|
|
5
|
-
constructor(
|
|
6
|
-
this.
|
|
4
|
+
lastBlock;
|
|
5
|
+
constructor(lastBlock){
|
|
6
|
+
this.lastBlock = lastBlock;
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
validate(filter) {
|
|
9
9
|
let { fromBlock, toBlock } = filter;
|
|
10
10
|
// Block range filters in Aztec Node are defined as closed-open intervals [fromBlock, toBlock), so
|
|
11
11
|
// we respect that convention here for consistency.
|
|
12
12
|
// We then default to [INITIAL_L2_BLOCK_NUM, latestKnownBlock + 1), ie: by default return events from
|
|
13
13
|
// the first block to the latest known block.
|
|
14
14
|
if (!fromBlock || !toBlock) {
|
|
15
|
-
const lastKnownBlock = (await this.anchorBlockStore.getBlockHeader()).getBlockNumber();
|
|
16
15
|
fromBlock = fromBlock ?? BlockNumber(INITIAL_L2_BLOCK_NUM);
|
|
17
|
-
toBlock = toBlock ?? BlockNumber(
|
|
16
|
+
toBlock = toBlock ?? BlockNumber(this.lastBlock + 1);
|
|
18
17
|
}
|
|
19
18
|
if (filter.scopes.length === 0) {
|
|
20
19
|
throw new Error('At least one scope is required to get private events');
|