@aztec/pxe 0.0.1-commit.7d4e6cd → 0.0.1-commit.858058eac
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/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/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 +53 -33
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +95 -51
- 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 +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +1 -1
- 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 +43 -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 +65 -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 +126 -109
- package/dest/contract_sync/contract_sync_service.d.ts +41 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +82 -0
- package/dest/contract_sync/helpers.d.ts +28 -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 +22 -9
- 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/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/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 +3 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +2 -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 +7 -5
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +23 -20
- package/dest/notes/note_service.d.ts +7 -7
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +31 -36
- 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/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} +12 -6
- 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 +3 -3
- package/dest/private_kernel/private_kernel_oracle.d.ts +23 -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 +70 -57
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +96 -111
- 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 +1 -2
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +27 -30
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +51 -52
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +285 -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 +46 -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 +6 -6
- 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/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/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +143 -99
- 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 +1 -1
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +1 -1
- 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 +116 -104
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +190 -116
- package/src/contract_sync/contract_sync_service.ts +129 -0
- package/src/contract_sync/helpers.ts +93 -0
- package/src/debug/pxe_debug_utils.ts +60 -17
- package/src/entrypoints/client/bundle/utils.ts +16 -15
- package/src/entrypoints/client/lazy/utils.ts +17 -15
- package/src/entrypoints/pxe_creation_options.ts +2 -1
- package/src/entrypoints/server/index.ts +2 -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 +34 -16
- package/src/notes/note_service.ts +38 -43
- package/src/oracle_version.ts +4 -3
- 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} +32 -20
- package/src/private_kernel/private_kernel_execution_prover.ts +7 -4
- package/src/private_kernel/private_kernel_oracle.ts +116 -37
- package/src/pxe.ts +191 -173
- 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 +26 -35
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +321 -318
- 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 +68 -0
- package/src/tagging/index.ts +1 -0
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +16 -5
- 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/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,14 +1,8 @@
|
|
|
1
|
-
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
1
|
import { type ACVMWitness, type CircuitSimulator } from '@aztec/simulator/client';
|
|
4
2
|
import { type FunctionArtifact, type FunctionArtifactWithContractName, type FunctionSelector } from '@aztec/stdlib/abi';
|
|
5
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
6
|
-
import type { ContractInstance } from '@aztec/stdlib/contract';
|
|
7
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
8
4
|
import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
9
|
-
import {
|
|
10
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
11
|
-
import { ContractStore } from '../../storage/contract_store/index.js';
|
|
5
|
+
import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
12
6
|
import type { PrivateExecutionOracle } from './private_execution_oracle.js';
|
|
13
7
|
/**
|
|
14
8
|
* Execute a private function and return the execution result.
|
|
@@ -26,22 +20,4 @@ export declare function executePrivateFunction(simulator: CircuitSimulator, priv
|
|
|
26
20
|
* @returns - The public inputs.
|
|
27
21
|
*/
|
|
28
22
|
export declare function extractPrivateCircuitPublicInputs(artifact: FunctionArtifact, partialWitness: ACVMWitness): PrivateCircuitPublicInputs;
|
|
29
|
-
|
|
30
|
-
* Read the current class id of a contract from the execution data provider or AztecNode. If not found, class id
|
|
31
|
-
* from the instance is used.
|
|
32
|
-
* @param contractAddress - The address of the contract to read the class id for.
|
|
33
|
-
* @param instance - The instance of the contract.
|
|
34
|
-
* @param executionStore - The execution data provider.
|
|
35
|
-
* @param blockNumber - The block number at which to load the DelayedPublicMutable storing the class id.
|
|
36
|
-
* @param timestamp - The timestamp at which to obtain the class id from the DelayedPublicMutable.
|
|
37
|
-
* @returns The current class id.
|
|
38
|
-
*/
|
|
39
|
-
export declare function readCurrentClassId(contractAddress: AztecAddress, instance: ContractInstance, aztecNode: AztecNode, blockNumber: BlockNumber, timestamp: UInt64): Promise<Fr>;
|
|
40
|
-
/**
|
|
41
|
-
* Verify that the current class id of a contract obtained from AztecNode is the same as the one in contract data
|
|
42
|
-
* provider (i.e. PXE's own storage).
|
|
43
|
-
* @param header - The header of the block at which to verify the current class id. If not provided, the anchor block
|
|
44
|
-
* header of the execution data provider is used.
|
|
45
|
-
*/
|
|
46
|
-
export declare function verifyCurrentClassId(contractAddress: AztecAddress, aztecNode: AztecNode, contractStore: ContractStore, header: BlockHeader): Promise<void>;
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leGVjdXRpb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3Ivb3JhY2xlL3ByaXZhdGVfZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEQsT0FBTyxFQUNMLEtBQUssV0FBVyxFQUNoQixLQUFLLGdCQUFnQixFQUt0QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDTCxLQUFLLGdCQUFnQixFQUNyQixLQUFLLGdDQUFnQyxFQUNyQyxLQUFLLGdCQUFnQixFQUV0QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFL0QsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV0RSxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTVFOzs7Ozs7O0dBT0c7QUFDSCx3QkFBc0Isc0JBQXNCLENBQzFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFDM0Isc0JBQXNCLEVBQUUsc0JBQXNCLEVBQzlDLFFBQVEsRUFBRSxnQ0FBZ0MsRUFDMUMsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLEdBQUcseUNBQThDLEdBQ2hELE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQTJFckM7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQixpQ0FBaUMsQ0FDL0MsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixjQUFjLEVBQUUsV0FBVyxHQUMxQiwwQkFBMEIsQ0FhNUI7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCx3QkFBc0Isa0JBQWtCLENBQ3RDLGVBQWUsRUFBRSxZQUFZLEVBQzdCLFFBQVEsRUFBRSxnQkFBZ0IsRUFDMUIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsU0FBUyxFQUFFLE1BQU0sZUFXbEI7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQixvQkFBb0IsQ0FDeEMsZUFBZSxFQUFFLFlBQVksRUFDN0IsU0FBUyxFQUFFLFNBQVMsRUFDcEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsTUFBTSxFQUFFLFdBQVcsaUJBbUJwQiJ9
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leGVjdXRpb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3Ivb3JhY2xlL3ByaXZhdGVfZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFDaEIsS0FBSyxnQkFBZ0IsRUFLdEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxnQ0FBZ0MsRUFDckMsS0FBSyxnQkFBZ0IsRUFFdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTVFOzs7Ozs7O0dBT0c7QUFDSCx3QkFBc0Isc0JBQXNCLENBQzFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFDM0Isc0JBQXNCLEVBQUUsc0JBQXNCLEVBQzlDLFFBQVEsRUFBRSxnQ0FBZ0MsRUFDMUMsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLEdBQUcseUNBQThDLEdBQ2hELE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQTJFckM7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQixpQ0FBaUMsQ0FDL0MsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixjQUFjLEVBQUUsV0FBVyxHQUMxQiwwQkFBMEIsQ0FhNUIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private_execution.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"private_execution.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAKtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,EAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAG9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,gBAAgB,EAC3B,sBAAsB,EAAE,sBAAsB,EAC9C,QAAQ,EAAE,gCAAgC,EAC1C,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,yCAA8C,GAChD,OAAO,CAAC,0BAA0B,CAAC,CA2ErC;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,gBAAgB,EAC1B,cAAc,EAAE,WAAW,GAC1B,0BAA0B,CAa5B"}
|
|
@@ -2,10 +2,8 @@ import { PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, PRIVATE_CONTEXT_INPUTS_LENGTH } f
|
|
|
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 { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
6
5
|
import { ExecutionError, extractCallStack, resolveAssertionMessageFromError, witnessMapToFields } from '@aztec/simulator/client';
|
|
7
6
|
import { countArgumentsSize } from '@aztec/stdlib/abi';
|
|
8
|
-
import { DelayedPublicMutableValues, DelayedPublicMutableValuesWithHash } from '@aztec/stdlib/delayed-public-mutable';
|
|
9
7
|
import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
10
8
|
import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
11
9
|
import { Oracle } from './oracle.js';
|
|
@@ -87,36 +85,3 @@ import { Oracle } from './oracle.js';
|
|
|
87
85
|
}
|
|
88
86
|
return PrivateCircuitPublicInputs.fromFields(returnData);
|
|
89
87
|
}
|
|
90
|
-
/**
|
|
91
|
-
* Read the current class id of a contract from the execution data provider or AztecNode. If not found, class id
|
|
92
|
-
* from the instance is used.
|
|
93
|
-
* @param contractAddress - The address of the contract to read the class id for.
|
|
94
|
-
* @param instance - The instance of the contract.
|
|
95
|
-
* @param executionStore - The execution data provider.
|
|
96
|
-
* @param blockNumber - The block number at which to load the DelayedPublicMutable storing the class id.
|
|
97
|
-
* @param timestamp - The timestamp at which to obtain the class id from the DelayedPublicMutable.
|
|
98
|
-
* @returns The current class id.
|
|
99
|
-
*/ export async function readCurrentClassId(contractAddress, instance, aztecNode, blockNumber, timestamp) {
|
|
100
|
-
const { delayedPublicMutableSlot } = await DelayedPublicMutableValuesWithHash.getContractUpdateSlots(contractAddress);
|
|
101
|
-
const delayedPublicMutableValues = await DelayedPublicMutableValues.readFromTree(delayedPublicMutableSlot, (slot)=>aztecNode.getPublicStorageAt(blockNumber, ProtocolContractAddress.ContractInstanceRegistry, slot));
|
|
102
|
-
let currentClassId = delayedPublicMutableValues.svc.getCurrentAt(timestamp)[0];
|
|
103
|
-
if (currentClassId.isZero()) {
|
|
104
|
-
currentClassId = instance.originalContractClassId;
|
|
105
|
-
}
|
|
106
|
-
return currentClassId;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Verify that the current class id of a contract obtained from AztecNode is the same as the one in contract data
|
|
110
|
-
* provider (i.e. PXE's own storage).
|
|
111
|
-
* @param header - The header of the block at which to verify the current class id. If not provided, the anchor block
|
|
112
|
-
* header of the execution data provider is used.
|
|
113
|
-
*/ export async function verifyCurrentClassId(contractAddress, aztecNode, contractStore, header) {
|
|
114
|
-
const instance = await contractStore.getContractInstance(contractAddress);
|
|
115
|
-
if (!instance) {
|
|
116
|
-
throw new Error(`No contract instance found for address ${contractAddress.toString()}`);
|
|
117
|
-
}
|
|
118
|
-
const currentClassId = await readCurrentClassId(contractAddress, instance, aztecNode, header.globalVariables.blockNumber, header.globalVariables.timestamp);
|
|
119
|
-
if (!instance.currentContractClassId.equals(currentClassId)) {
|
|
120
|
-
throw new Error(`Contract ${contractAddress} is outdated, current class id is ${currentClassId}, local class id is ${instance.currentContractClassId}`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
@@ -1,48 +1,41 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
import type { KeyStore } from '@aztec/key-store';
|
|
3
2
|
import { type CircuitSimulator } from '@aztec/simulator/client';
|
|
4
3
|
import { type FunctionAbi, type FunctionCall, FunctionSelector, type NoteSelector } from '@aztec/stdlib/abi';
|
|
5
|
-
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
6
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
8
5
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
9
6
|
import { type ContractClassLog, type PreTag } from '@aztec/stdlib/logs';
|
|
10
7
|
import { Tag } from '@aztec/stdlib/logs';
|
|
11
8
|
import { type NoteStatus } from '@aztec/stdlib/note';
|
|
12
|
-
import {
|
|
13
|
-
import type {
|
|
14
|
-
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
15
|
-
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
16
|
-
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
17
|
-
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
18
|
-
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
19
|
-
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
20
|
-
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
9
|
+
import { CallContext, CountedContractClassLog, NoteAndSlot, PrivateCallExecutionResult, type TxContext } from '@aztec/stdlib/tx';
|
|
10
|
+
import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
|
|
21
11
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
22
12
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
23
13
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
24
14
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
25
15
|
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
26
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
16
|
+
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
17
|
+
/** Args for PrivateExecutionOracle constructor. */
|
|
18
|
+
export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
|
|
19
|
+
argsHash: Fr;
|
|
20
|
+
txContext: TxContext;
|
|
21
|
+
callContext: CallContext;
|
|
22
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
23
|
+
utilityExecutor: (call: FunctionCall) => Promise<void>;
|
|
24
|
+
executionCache: HashedValuesCache;
|
|
25
|
+
noteCache: ExecutionNoteCache;
|
|
26
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
27
|
+
senderTaggingStore: SenderTaggingStore;
|
|
28
|
+
contractSyncService: ContractSyncService;
|
|
29
|
+
totalPublicCalldataCount?: number;
|
|
30
|
+
sideEffectCounter?: number;
|
|
31
|
+
senderForTags?: AztecAddress;
|
|
32
|
+
simulator?: CircuitSimulator;
|
|
33
|
+
};
|
|
27
34
|
/**
|
|
28
35
|
* The execution oracle for the private part of a transaction.
|
|
29
36
|
*/
|
|
30
37
|
export declare class PrivateExecutionOracle extends UtilityExecutionOracle implements IPrivateExecutionOracle {
|
|
31
38
|
#private;
|
|
32
|
-
private readonly argsHash;
|
|
33
|
-
private readonly txContext;
|
|
34
|
-
private readonly callContext;
|
|
35
|
-
protected readonly anchorBlockHeader: BlockHeader;
|
|
36
|
-
/** Needed to trigger contract synchronization before nested calls */
|
|
37
|
-
private readonly utilityExecutor;
|
|
38
|
-
private readonly executionCache;
|
|
39
|
-
private readonly noteCache;
|
|
40
|
-
private readonly taggingIndexCache;
|
|
41
|
-
private readonly senderTaggingStore;
|
|
42
|
-
private totalPublicCalldataCount;
|
|
43
|
-
protected sideEffectCounter: number;
|
|
44
|
-
private senderForTags?;
|
|
45
|
-
private simulator?;
|
|
46
39
|
isPrivate: true;
|
|
47
40
|
/**
|
|
48
41
|
* New notes created during this execution.
|
|
@@ -57,13 +50,20 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
57
50
|
private contractClassLogs;
|
|
58
51
|
private offchainEffects;
|
|
59
52
|
private nestedExecutionResults;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
53
|
+
private readonly argsHash;
|
|
54
|
+
private readonly txContext;
|
|
55
|
+
private readonly callContext;
|
|
56
|
+
private readonly utilityExecutor;
|
|
57
|
+
private readonly executionCache;
|
|
58
|
+
private readonly noteCache;
|
|
59
|
+
private readonly taggingIndexCache;
|
|
60
|
+
private readonly senderTaggingStore;
|
|
61
|
+
private readonly contractSyncService;
|
|
62
|
+
private totalPublicCalldataCount;
|
|
63
|
+
protected sideEffectCounter: number;
|
|
64
|
+
private senderForTags?;
|
|
65
|
+
private readonly simulator?;
|
|
66
|
+
constructor(args: PrivateExecutionOracleArgs);
|
|
67
67
|
getPrivateContextInputs(): PrivateContextInputs;
|
|
68
68
|
/**
|
|
69
69
|
* Writes the function inputs to the initial witness.
|
|
@@ -185,6 +185,14 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
185
185
|
* @param noteHash - A hash of the new note.
|
|
186
186
|
*/
|
|
187
187
|
privateNotifyCreatedNullifier(innerNullifier: Fr): Promise<void>;
|
|
188
|
+
/**
|
|
189
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
|
|
190
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
191
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
192
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
193
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
194
|
+
*/
|
|
195
|
+
privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean>;
|
|
188
196
|
/**
|
|
189
197
|
* Emit a contract class log.
|
|
190
198
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -228,4 +236,4 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
228
236
|
getDebugFunctionName(): Promise<string>;
|
|
229
237
|
utilityEmitOffchainEffect(data: Fr[]): Promise<void>;
|
|
230
238
|
}
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leGVjdXRpb25fb3JhY2xlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL29yYWNsZS9wcml2YXRlX2V4ZWN1dGlvbl9vcmFjbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFpQixNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFFaEIsS0FBSyxZQUFZLEVBQ2pCLGdCQUFnQixFQUNoQixLQUFLLFlBQVksRUFFbEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQStCLEtBQUssTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pDLE9BQU8sRUFBUSxLQUFLLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFDTCxXQUFXLEVBQ1gsdUJBQXVCLEVBQ3ZCLFdBQVcsRUFDWCwwQkFBMEIsRUFDMUIsS0FBSyxTQUFTLEVBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXhGLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFOUYsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private_execution_oracle.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution_oracle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,
|
|
1
|
+
{"version":3,"file":"private_execution_oracle.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,39 +13,56 @@ import { CallContext, CountedContractClassLog, NoteAndSlot } from '@aztec/stdlib
|
|
|
13
13
|
import { NoteService } from '../../notes/note_service.js';
|
|
14
14
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
15
15
|
import { pickNotes } from '../pick_notes.js';
|
|
16
|
-
import { executePrivateFunction
|
|
16
|
+
import { executePrivateFunction } from './private_execution.js';
|
|
17
17
|
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
18
18
|
/**
|
|
19
19
|
* The execution oracle for the private part of a transaction.
|
|
20
20
|
*/ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
21
|
+
isPrivate = true;
|
|
22
|
+
/**
|
|
23
|
+
* New notes created during this execution.
|
|
24
|
+
* It's possible that a note in this list has been nullified (in the same or other executions) and doesn't exist in
|
|
25
|
+
* the ExecutionNoteCache and the final proof data. But we still include those notes in the execution result because
|
|
26
|
+
* their commitments are still in the public inputs of this execution.
|
|
27
|
+
* This information is only for references (currently used for tests), and is not used for any sort of constrains.
|
|
28
|
+
* Users can also use this to get a clearer idea of what's happened during a simulation.
|
|
29
|
+
*/ newNotes = [];
|
|
30
|
+
noteHashNullifierCounterMap = new Map();
|
|
31
|
+
contractClassLogs = [];
|
|
32
|
+
offchainEffects = [];
|
|
33
|
+
nestedExecutionResults = [];
|
|
21
34
|
argsHash;
|
|
22
35
|
txContext;
|
|
23
36
|
callContext;
|
|
24
|
-
anchorBlockHeader;
|
|
25
37
|
utilityExecutor;
|
|
26
38
|
executionCache;
|
|
27
39
|
noteCache;
|
|
28
40
|
taggingIndexCache;
|
|
29
41
|
senderTaggingStore;
|
|
42
|
+
contractSyncService;
|
|
30
43
|
totalPublicCalldataCount;
|
|
31
44
|
sideEffectCounter;
|
|
32
45
|
senderForTags;
|
|
33
46
|
simulator;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
constructor(args){
|
|
48
|
+
super({
|
|
49
|
+
...args,
|
|
50
|
+
contractAddress: args.callContext.contractAddress,
|
|
51
|
+
log: args.log ?? createLogger('simulator:client_execution_context')
|
|
52
|
+
});
|
|
53
|
+
this.argsHash = args.argsHash;
|
|
54
|
+
this.txContext = args.txContext;
|
|
55
|
+
this.callContext = args.callContext;
|
|
56
|
+
this.utilityExecutor = args.utilityExecutor;
|
|
57
|
+
this.executionCache = args.executionCache;
|
|
58
|
+
this.noteCache = args.noteCache;
|
|
59
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
60
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
61
|
+
this.contractSyncService = args.contractSyncService;
|
|
62
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
63
|
+
this.sideEffectCounter = args.sideEffectCounter ?? 0;
|
|
64
|
+
this.senderForTags = args.senderForTags;
|
|
65
|
+
this.simulator = args.simulator;
|
|
49
66
|
}
|
|
50
67
|
getPrivateContextInputs() {
|
|
51
68
|
return new PrivateContextInputs(this.callContext, this.anchorBlockHeader, this.txContext, this.sideEffectCounter);
|
|
@@ -142,7 +159,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
142
159
|
});
|
|
143
160
|
}
|
|
144
161
|
async #calculateDirectionalAppTaggingSecret(contractAddress, sender, recipient) {
|
|
145
|
-
const senderCompleteAddress = await this.
|
|
162
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
146
163
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
147
164
|
return DirectionalAppTaggingSecret.compute(senderCompleteAddress, senderIvsk, recipient, contractAddress, recipient);
|
|
148
165
|
}
|
|
@@ -155,8 +172,8 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
155
172
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
156
173
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
157
174
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
158
|
-
await syncSenderTaggingIndexes(secret, this.contractAddress, this.aztecNode, this.senderTaggingStore);
|
|
159
|
-
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret);
|
|
175
|
+
await syncSenderTaggingIndexes(secret, this.contractAddress, this.aztecNode, this.senderTaggingStore, await this.anchorBlockHeader.hash(), this.jobId);
|
|
176
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
160
177
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
161
178
|
// Otherwise, the next index to use is one past the last used index
|
|
162
179
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -214,7 +231,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
214
231
|
// Nullified pending notes are already removed from the list.
|
|
215
232
|
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
|
|
216
233
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
217
|
-
const noteService = new NoteService(this.noteStore, this.aztecNode, this.
|
|
234
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
218
235
|
const dbNotes = await noteService.getNotes(this.callContext.contractAddress, owner, storageSlot, status, this.scopes);
|
|
219
236
|
const dbNotesFiltered = dbNotes.filter((n)=>!pendingNullifiers.has(n.siloedNullifier.value));
|
|
220
237
|
const notes = pickNotes([
|
|
@@ -271,7 +288,8 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
271
288
|
noteNonce: Fr.ZERO,
|
|
272
289
|
note,
|
|
273
290
|
siloedNullifier: undefined,
|
|
274
|
-
noteHash
|
|
291
|
+
noteHash,
|
|
292
|
+
isPending: true
|
|
275
293
|
}, counter);
|
|
276
294
|
this.newNotes.push(NoteAndSlot.from({
|
|
277
295
|
note,
|
|
@@ -303,6 +321,17 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
303
321
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
304
322
|
}
|
|
305
323
|
/**
|
|
324
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
|
|
325
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
326
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
327
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
328
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
329
|
+
*/ async privateIsNullifierPending(innerNullifier, contractAddress) {
|
|
330
|
+
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
331
|
+
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
332
|
+
return Promise.resolve(isNullifierPending);
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
306
335
|
* Emit a contract class log.
|
|
307
336
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
308
337
|
* keep the preimage in ts for later.
|
|
@@ -335,12 +364,40 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
335
364
|
const simulatorSetupTimer = new Timer();
|
|
336
365
|
this.log.debug(`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`);
|
|
337
366
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
338
|
-
await
|
|
339
|
-
await this.contractStore.syncPrivateState(targetContractAddress, functionSelector, this.utilityExecutor);
|
|
367
|
+
await this.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, this.utilityExecutor, this.anchorBlockHeader, this.jobId);
|
|
340
368
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(targetContractAddress, functionSelector);
|
|
341
369
|
const derivedTxContext = this.txContext.clone();
|
|
342
370
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
343
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
371
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
372
|
+
argsHash,
|
|
373
|
+
txContext: derivedTxContext,
|
|
374
|
+
callContext: derivedCallContext,
|
|
375
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
376
|
+
utilityExecutor: this.utilityExecutor,
|
|
377
|
+
authWitnesses: this.authWitnesses,
|
|
378
|
+
capsules: this.capsules,
|
|
379
|
+
executionCache: this.executionCache,
|
|
380
|
+
noteCache: this.noteCache,
|
|
381
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
382
|
+
contractStore: this.contractStore,
|
|
383
|
+
noteStore: this.noteStore,
|
|
384
|
+
keyStore: this.keyStore,
|
|
385
|
+
addressStore: this.addressStore,
|
|
386
|
+
aztecNode: this.aztecNode,
|
|
387
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
388
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
389
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
390
|
+
capsuleStore: this.capsuleStore,
|
|
391
|
+
privateEventStore: this.privateEventStore,
|
|
392
|
+
contractSyncService: this.contractSyncService,
|
|
393
|
+
jobId: this.jobId,
|
|
394
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
395
|
+
sideEffectCounter,
|
|
396
|
+
log: this.log,
|
|
397
|
+
scopes: this.scopes,
|
|
398
|
+
senderForTags: this.senderForTags,
|
|
399
|
+
simulator: this.simulator
|
|
400
|
+
});
|
|
344
401
|
const setupTime = simulatorSetupTimer.ms();
|
|
345
402
|
const childExecutionResult = await executePrivateFunction(this.simulator, privateExecutionOracle, targetArtifact, targetContractAddress, functionSelector);
|
|
346
403
|
if (isStaticCall) {
|