@aztec/pxe 0.0.1-commit.7d4e6cd → 0.0.1-commit.808bf7f90
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/access_scopes.d.ts +9 -0
- package/dest/access_scopes.d.ts.map +1 -0
- package/dest/access_scopes.js +6 -0
- package/dest/bin/check_oracle_version.js +1 -1
- package/dest/block_synchronizer/block_synchronizer.d.ts +11 -5
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +72 -21
- package/dest/config/index.d.ts +3 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +17 -0
- 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 +57 -35
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +198 -84
- 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/index.d.ts +2 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +2 -2
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -3
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +2 -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 +17 -13
- 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 +6 -6
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
- package/dest/contract_function_simulator/oracle/oracle.d.ts +12 -10
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +67 -44
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +0 -35
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +44 -35
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +82 -25
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +66 -33
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +130 -111
- package/dest/contract_logging.d.ts +22 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +23 -0
- package/dest/contract_sync/contract_sync_service.d.ts +43 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +97 -0
- package/dest/contract_sync/helpers.d.ts +29 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/helpers.js +55 -0
- package/dest/debug/pxe_debug_utils.d.ts +24 -10
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +28 -17
- package/dest/entrypoints/client/bundle/index.d.ts +4 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +3 -0
- 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 +21 -7
- package/dest/entrypoints/client/lazy/index.d.ts +4 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +3 -0
- package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +22 -8
- 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 +5 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +4 -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 +28 -9
- package/dest/events/event_service.d.ts +6 -6
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +19 -22
- 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 +3 -2
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
- package/dest/job_coordinator/job_coordinator.js +3 -2
- package/dest/logs/log_service.d.ts +8 -5
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +28 -30
- package/dest/notes/note_service.d.ts +10 -9
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +34 -38
- package/dest/notes_filter.d.ts +25 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +4 -3
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
- package/dest/private_kernel/hints/index.d.ts +3 -3
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +2 -2
- 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} +15 -9
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +9 -9
- package/dest/private_kernel/private_kernel_oracle.d.ts +23 -24
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +94 -2
- package/dest/pxe.d.ts +75 -58
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +124 -132
- package/dest/storage/address_store/address_store.d.ts +1 -1
- package/dest/storage/address_store/address_store.d.ts.map +1 -1
- package/dest/storage/address_store/address_store.js +12 -11
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
- package/dest/storage/anchor_block_store/anchor_block_store.js +8 -1
- 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 +130 -23
- package/dest/storage/contract_store/contract_store.d.ts +42 -16
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +157 -84
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +50 -51
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +284 -263
- package/dest/storage/note_store/stored_note.d.ts +16 -0
- package/dest/storage/note_store/stored_note.d.ts.map +1 -0
- package/dest/storage/note_store/stored_note.js +43 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +43 -8
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +226 -111
- package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
- package/dest/storage/private_event_store/stored_private_event.js +56 -0
- 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 +88 -19
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
- 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 +252 -100
- package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
- package/dest/tagging/get_all_logs_by_tags.js +60 -0
- package/dest/tagging/index.d.ts +2 -1
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +1 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +3 -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 +10 -10
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +3 -2
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +5 -2
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +3 -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 +7 -7
- 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 +5 -8
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -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 +10 -5
- package/package.json +27 -18
- package/src/access_scopes.ts +9 -0
- package/src/bin/check_oracle_version.ts +1 -0
- package/src/block_synchronizer/block_synchronizer.ts +91 -33
- package/src/config/index.ts +14 -0
- 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 +356 -148
- package/src/contract_function_simulator/execution_note_cache.ts +44 -25
- package/src/contract_function_simulator/index.ts +1 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +2 -2
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +22 -12
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
- package/src/contract_function_simulator/oracle/oracle.ts +79 -47
- package/src/contract_function_simulator/oracle/private_execution.ts +1 -67
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +118 -104
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +197 -116
- package/src/contract_logging.ts +39 -0
- package/src/contract_sync/contract_sync_service.ts +152 -0
- package/src/contract_sync/helpers.ts +98 -0
- package/src/debug/pxe_debug_utils.ts +63 -18
- package/src/entrypoints/client/bundle/index.ts +3 -0
- package/src/entrypoints/client/bundle/utils.ts +16 -15
- package/src/entrypoints/client/lazy/index.ts +3 -0
- package/src/entrypoints/client/lazy/utils.ts +17 -15
- package/src/entrypoints/pxe_creation_options.ts +2 -1
- package/src/entrypoints/server/index.ts +4 -0
- package/src/entrypoints/server/utils.ts +22 -26
- package/src/events/event_service.ts +17 -25
- package/src/events/private_event_filter_validator.ts +3 -5
- package/src/job_coordinator/job_coordinator.ts +4 -3
- package/src/logs/log_service.ts +40 -34
- package/src/notes/note_service.ts +41 -45
- package/src/notes_filter.ts +26 -0
- package/src/oracle_version.ts +4 -3
- package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
- package/src/private_kernel/hints/index.ts +2 -2
- package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +38 -26
- package/src/private_kernel/private_kernel_execution_prover.ts +13 -10
- package/src/private_kernel/private_kernel_oracle.ts +116 -37
- package/src/pxe.ts +235 -209
- package/src/storage/address_store/address_store.ts +15 -15
- package/src/storage/anchor_block_store/anchor_block_store.ts +8 -0
- package/src/storage/capsule_store/capsule_store.ts +159 -23
- package/src/storage/contract_store/contract_store.ts +186 -96
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +326 -320
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +292 -124
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +106 -20
- package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
- package/src/storage/tagging_store/sender_tagging_store.ts +293 -108
- package/src/tagging/get_all_logs_by_tags.ts +92 -0
- package/src/tagging/index.ts +1 -0
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +20 -9
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +7 -1
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +9 -6
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +5 -17
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +16 -4
- 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/hints/compute_tx_include_by_timestamp.d.ts +0 -4
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.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 -85
- 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/dest/tree_membership/tree_membership_service.d.ts +0 -52
- package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
- package/dest/tree_membership/tree_membership_service.js +0 -84
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/private_kernel/private_kernel_oracle_impl.ts +0 -127
- package/src/public_storage/public_storage_service.ts +0 -33
- package/src/tree_membership/tree_membership_service.ts +0 -112
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, PRIVATE_CONTEXT_INPUTS_LENGTH } from '@aztec/constants';
|
|
2
|
-
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
6
|
-
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
7
5
|
import {
|
|
8
6
|
type ACVMWitness,
|
|
9
7
|
type CircuitSimulator,
|
|
@@ -19,15 +17,10 @@ import {
|
|
|
19
17
|
countArgumentsSize,
|
|
20
18
|
} from '@aztec/stdlib/abi';
|
|
21
19
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
22
|
-
import type { ContractInstance } from '@aztec/stdlib/contract';
|
|
23
|
-
import { DelayedPublicMutableValues, DelayedPublicMutableValuesWithHash } from '@aztec/stdlib/delayed-public-mutable';
|
|
24
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
25
20
|
import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
26
21
|
import type { CircuitWitnessGenerationStats } from '@aztec/stdlib/stats';
|
|
27
|
-
import {
|
|
28
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
22
|
+
import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
29
23
|
|
|
30
|
-
import { ContractStore } from '../../storage/contract_store/index.js';
|
|
31
24
|
import { Oracle } from './oracle.js';
|
|
32
25
|
import type { PrivateExecutionOracle } from './private_execution_oracle.js';
|
|
33
26
|
|
|
@@ -146,62 +139,3 @@ export function extractPrivateCircuitPublicInputs(
|
|
|
146
139
|
}
|
|
147
140
|
return PrivateCircuitPublicInputs.fromFields(returnData);
|
|
148
141
|
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Read the current class id of a contract from the execution data provider or AztecNode. If not found, class id
|
|
152
|
-
* from the instance is used.
|
|
153
|
-
* @param contractAddress - The address of the contract to read the class id for.
|
|
154
|
-
* @param instance - The instance of the contract.
|
|
155
|
-
* @param executionStore - The execution data provider.
|
|
156
|
-
* @param blockNumber - The block number at which to load the DelayedPublicMutable storing the class id.
|
|
157
|
-
* @param timestamp - The timestamp at which to obtain the class id from the DelayedPublicMutable.
|
|
158
|
-
* @returns The current class id.
|
|
159
|
-
*/
|
|
160
|
-
export async function readCurrentClassId(
|
|
161
|
-
contractAddress: AztecAddress,
|
|
162
|
-
instance: ContractInstance,
|
|
163
|
-
aztecNode: AztecNode,
|
|
164
|
-
blockNumber: BlockNumber,
|
|
165
|
-
timestamp: UInt64,
|
|
166
|
-
) {
|
|
167
|
-
const { delayedPublicMutableSlot } = await DelayedPublicMutableValuesWithHash.getContractUpdateSlots(contractAddress);
|
|
168
|
-
const delayedPublicMutableValues = await DelayedPublicMutableValues.readFromTree(delayedPublicMutableSlot, slot =>
|
|
169
|
-
aztecNode.getPublicStorageAt(blockNumber, ProtocolContractAddress.ContractInstanceRegistry, slot),
|
|
170
|
-
);
|
|
171
|
-
let currentClassId = delayedPublicMutableValues.svc.getCurrentAt(timestamp)[0];
|
|
172
|
-
if (currentClassId.isZero()) {
|
|
173
|
-
currentClassId = instance.originalContractClassId;
|
|
174
|
-
}
|
|
175
|
-
return currentClassId;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Verify that the current class id of a contract obtained from AztecNode is the same as the one in contract data
|
|
180
|
-
* provider (i.e. PXE's own storage).
|
|
181
|
-
* @param header - The header of the block at which to verify the current class id. If not provided, the anchor block
|
|
182
|
-
* header of the execution data provider is used.
|
|
183
|
-
*/
|
|
184
|
-
export async function verifyCurrentClassId(
|
|
185
|
-
contractAddress: AztecAddress,
|
|
186
|
-
aztecNode: AztecNode,
|
|
187
|
-
contractStore: ContractStore,
|
|
188
|
-
header: BlockHeader,
|
|
189
|
-
) {
|
|
190
|
-
const instance = await contractStore.getContractInstance(contractAddress);
|
|
191
|
-
if (!instance) {
|
|
192
|
-
throw new Error(`No contract instance found for address ${contractAddress.toString()}`);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
const currentClassId = await readCurrentClassId(
|
|
196
|
-
contractAddress,
|
|
197
|
-
instance,
|
|
198
|
-
aztecNode,
|
|
199
|
-
header.globalVariables.blockNumber,
|
|
200
|
-
header.globalVariables.timestamp,
|
|
201
|
-
);
|
|
202
|
-
if (!instance.currentContractClassId.equals(currentClassId)) {
|
|
203
|
-
throw new Error(
|
|
204
|
-
`Contract ${contractAddress} is outdated, current class id is ${currentClassId}, local class id is ${instance.currentContractClassId}`,
|
|
205
|
-
);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
@@ -2,7 +2,6 @@ import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS, PRIVATE_CONTEXT_INPUTS_LENGTH }
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
|
-
import type { KeyStore } from '@aztec/key-store';
|
|
6
5
|
import { type CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
|
|
7
6
|
import {
|
|
8
7
|
type FunctionAbi,
|
|
@@ -12,33 +11,23 @@ import {
|
|
|
12
11
|
type NoteSelector,
|
|
13
12
|
countArgumentsSize,
|
|
14
13
|
} from '@aztec/stdlib/abi';
|
|
15
|
-
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
16
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
17
15
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
18
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
19
16
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
20
17
|
import { type ContractClassLog, DirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
|
|
21
18
|
import { Tag } from '@aztec/stdlib/logs';
|
|
22
19
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
23
20
|
import {
|
|
24
|
-
type BlockHeader,
|
|
25
21
|
CallContext,
|
|
26
|
-
Capsule,
|
|
27
22
|
CountedContractClassLog,
|
|
28
23
|
NoteAndSlot,
|
|
29
24
|
PrivateCallExecutionResult,
|
|
30
25
|
type TxContext,
|
|
31
26
|
} from '@aztec/stdlib/tx';
|
|
32
27
|
|
|
28
|
+
import type { AccessScopes } from '../../access_scopes.js';
|
|
29
|
+
import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
|
|
33
30
|
import { NoteService } from '../../notes/note_service.js';
|
|
34
|
-
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
35
|
-
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
36
|
-
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
37
|
-
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
38
|
-
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
39
|
-
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
40
|
-
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
41
|
-
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
42
31
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
43
32
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
44
33
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
@@ -46,8 +35,26 @@ import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js'
|
|
|
46
35
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
47
36
|
import { pickNotes } from '../pick_notes.js';
|
|
48
37
|
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
49
|
-
import { executePrivateFunction
|
|
50
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
38
|
+
import { executePrivateFunction } from './private_execution.js';
|
|
39
|
+
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
40
|
+
|
|
41
|
+
/** Args for PrivateExecutionOracle constructor. */
|
|
42
|
+
export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
|
|
43
|
+
argsHash: Fr;
|
|
44
|
+
txContext: TxContext;
|
|
45
|
+
callContext: CallContext;
|
|
46
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
47
|
+
utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
48
|
+
executionCache: HashedValuesCache;
|
|
49
|
+
noteCache: ExecutionNoteCache;
|
|
50
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
51
|
+
senderTaggingStore: SenderTaggingStore;
|
|
52
|
+
contractSyncService: ContractSyncService;
|
|
53
|
+
totalPublicCalldataCount?: number;
|
|
54
|
+
sideEffectCounter?: number;
|
|
55
|
+
senderForTags?: AztecAddress;
|
|
56
|
+
simulator?: CircuitSimulator;
|
|
57
|
+
};
|
|
51
58
|
|
|
52
59
|
/**
|
|
53
60
|
* The execution oracle for the private part of a transaction.
|
|
@@ -69,58 +76,39 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
69
76
|
private offchainEffects: { data: Fr[] }[] = [];
|
|
70
77
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
71
78
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
super(
|
|
106
|
-
callContext.contractAddress,
|
|
107
|
-
authWitnesses,
|
|
108
|
-
capsules,
|
|
109
|
-
anchorBlockHeader,
|
|
110
|
-
contractStore,
|
|
111
|
-
noteStore,
|
|
112
|
-
keyStore,
|
|
113
|
-
addressStore,
|
|
114
|
-
aztecNode,
|
|
115
|
-
anchorBlockStore,
|
|
116
|
-
recipientTaggingStore,
|
|
117
|
-
senderAddressBookStore,
|
|
118
|
-
capsuleStore,
|
|
119
|
-
privateEventStore,
|
|
120
|
-
jobId,
|
|
121
|
-
log,
|
|
122
|
-
scopes,
|
|
123
|
-
);
|
|
79
|
+
private readonly argsHash: Fr;
|
|
80
|
+
private readonly txContext: TxContext;
|
|
81
|
+
private readonly callContext: CallContext;
|
|
82
|
+
private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
83
|
+
private readonly executionCache: HashedValuesCache;
|
|
84
|
+
private readonly noteCache: ExecutionNoteCache;
|
|
85
|
+
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
86
|
+
private readonly senderTaggingStore: SenderTaggingStore;
|
|
87
|
+
private readonly contractSyncService: ContractSyncService;
|
|
88
|
+
private totalPublicCalldataCount: number;
|
|
89
|
+
protected sideEffectCounter: number;
|
|
90
|
+
private senderForTags?: AztecAddress;
|
|
91
|
+
private readonly simulator?: CircuitSimulator;
|
|
92
|
+
|
|
93
|
+
constructor(args: PrivateExecutionOracleArgs) {
|
|
94
|
+
super({
|
|
95
|
+
...args,
|
|
96
|
+
contractAddress: args.callContext.contractAddress,
|
|
97
|
+
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
98
|
+
});
|
|
99
|
+
this.argsHash = args.argsHash;
|
|
100
|
+
this.txContext = args.txContext;
|
|
101
|
+
this.callContext = args.callContext;
|
|
102
|
+
this.utilityExecutor = args.utilityExecutor;
|
|
103
|
+
this.executionCache = args.executionCache;
|
|
104
|
+
this.noteCache = args.noteCache;
|
|
105
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
106
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
107
|
+
this.contractSyncService = args.contractSyncService;
|
|
108
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
109
|
+
this.sideEffectCounter = args.sideEffectCounter ?? 0;
|
|
110
|
+
this.senderForTags = args.senderForTags;
|
|
111
|
+
this.simulator = args.simulator;
|
|
124
112
|
}
|
|
125
113
|
|
|
126
114
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -244,7 +232,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
244
232
|
sender: AztecAddress,
|
|
245
233
|
recipient: AztecAddress,
|
|
246
234
|
) {
|
|
247
|
-
const senderCompleteAddress = await this.
|
|
235
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
248
236
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
249
237
|
return DirectionalAppTaggingSecret.compute(
|
|
250
238
|
senderCompleteAddress,
|
|
@@ -265,9 +253,16 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
265
253
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
266
254
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
267
255
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
268
|
-
await syncSenderTaggingIndexes(
|
|
269
|
-
|
|
270
|
-
|
|
256
|
+
await syncSenderTaggingIndexes(
|
|
257
|
+
secret,
|
|
258
|
+
this.contractAddress,
|
|
259
|
+
this.aztecNode,
|
|
260
|
+
this.senderTaggingStore,
|
|
261
|
+
await this.anchorBlockHeader.hash(),
|
|
262
|
+
this.jobId,
|
|
263
|
+
);
|
|
264
|
+
|
|
265
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
271
266
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
272
267
|
// Otherwise, the next index to use is one past the last used index
|
|
273
268
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -356,7 +351,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
356
351
|
|
|
357
352
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
358
353
|
|
|
359
|
-
const noteService = new NoteService(this.noteStore, this.aztecNode, this.
|
|
354
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
360
355
|
const dbNotes = await noteService.getNotes(
|
|
361
356
|
this.callContext.contractAddress,
|
|
362
357
|
owner,
|
|
@@ -428,6 +423,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
428
423
|
note,
|
|
429
424
|
siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
|
|
430
425
|
noteHash,
|
|
426
|
+
isPending: true, // This note has just been created and hence is not settled yet.
|
|
431
427
|
},
|
|
432
428
|
counter,
|
|
433
429
|
);
|
|
@@ -462,6 +458,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
462
458
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
463
459
|
}
|
|
464
460
|
|
|
461
|
+
/**
|
|
462
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
|
|
463
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
464
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
465
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
466
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
467
|
+
*/
|
|
468
|
+
public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
469
|
+
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
470
|
+
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
471
|
+
return Promise.resolve(isNullifierPending);
|
|
472
|
+
}
|
|
473
|
+
|
|
465
474
|
/**
|
|
466
475
|
* Emit a contract class log.
|
|
467
476
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -518,9 +527,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
518
527
|
|
|
519
528
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
520
529
|
|
|
521
|
-
await
|
|
522
|
-
|
|
523
|
-
|
|
530
|
+
await this.contractSyncService.ensureContractSynced(
|
|
531
|
+
targetContractAddress,
|
|
532
|
+
functionSelector,
|
|
533
|
+
this.utilityExecutor,
|
|
534
|
+
this.anchorBlockHeader,
|
|
535
|
+
this.jobId,
|
|
536
|
+
this.scopes,
|
|
537
|
+
);
|
|
524
538
|
|
|
525
539
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
526
540
|
targetContractAddress,
|
|
@@ -531,41 +545,41 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
531
545
|
|
|
532
546
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
533
547
|
|
|
534
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
548
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
535
549
|
argsHash,
|
|
536
|
-
derivedTxContext,
|
|
537
|
-
derivedCallContext,
|
|
538
|
-
this.anchorBlockHeader,
|
|
539
|
-
this.utilityExecutor,
|
|
540
|
-
this.authWitnesses,
|
|
541
|
-
this.capsules,
|
|
542
|
-
this.executionCache,
|
|
543
|
-
this.noteCache,
|
|
544
|
-
this.taggingIndexCache,
|
|
545
|
-
this.contractStore,
|
|
546
|
-
this.noteStore,
|
|
547
|
-
this.keyStore,
|
|
548
|
-
this.addressStore,
|
|
549
|
-
this.aztecNode,
|
|
550
|
-
this.
|
|
551
|
-
this.
|
|
552
|
-
this.
|
|
553
|
-
this.
|
|
554
|
-
this.
|
|
555
|
-
this.
|
|
556
|
-
this.jobId,
|
|
557
|
-
this.totalPublicCalldataCount,
|
|
550
|
+
txContext: derivedTxContext,
|
|
551
|
+
callContext: derivedCallContext,
|
|
552
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
553
|
+
utilityExecutor: this.utilityExecutor,
|
|
554
|
+
authWitnesses: this.authWitnesses,
|
|
555
|
+
capsules: this.capsules,
|
|
556
|
+
executionCache: this.executionCache,
|
|
557
|
+
noteCache: this.noteCache,
|
|
558
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
559
|
+
contractStore: this.contractStore,
|
|
560
|
+
noteStore: this.noteStore,
|
|
561
|
+
keyStore: this.keyStore,
|
|
562
|
+
addressStore: this.addressStore,
|
|
563
|
+
aztecNode: this.aztecNode,
|
|
564
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
565
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
566
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
567
|
+
capsuleStore: this.capsuleStore,
|
|
568
|
+
privateEventStore: this.privateEventStore,
|
|
569
|
+
contractSyncService: this.contractSyncService,
|
|
570
|
+
jobId: this.jobId,
|
|
571
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
558
572
|
sideEffectCounter,
|
|
559
|
-
this.log,
|
|
560
|
-
this.scopes,
|
|
561
|
-
this.senderForTags,
|
|
562
|
-
this.simulator
|
|
563
|
-
);
|
|
573
|
+
log: this.log,
|
|
574
|
+
scopes: this.scopes,
|
|
575
|
+
senderForTags: this.senderForTags,
|
|
576
|
+
simulator: this.simulator!,
|
|
577
|
+
});
|
|
564
578
|
|
|
565
579
|
const setupTime = simulatorSetupTimer.ms();
|
|
566
580
|
|
|
567
581
|
const childExecutionResult = await executePrivateFunction(
|
|
568
|
-
this.simulator
|
|
582
|
+
this.simulator!,
|
|
569
583
|
privateExecutionOracle,
|
|
570
584
|
targetArtifact,
|
|
571
585
|
targetContractAddress,
|