@aztec/pxe 0.0.1-commit.c7c42ec → 0.0.1-commit.c949de6bc
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 +13 -5
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +74 -20
- 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 -34
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +199 -81
- 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/execution_tagging_index_cache.d.ts +5 -5
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -3
- 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 +4 -3
- 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 +7 -4
- 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 +1 -37
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +45 -47
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +91 -60
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +67 -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 +131 -110
- 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 +31 -8
- 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 +32 -9
- package/dest/entrypoints/pxe_creation_options.d.ts +5 -3
- 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 +39 -16
- 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 +75 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +94 -0
- 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 +31 -33
- 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 +29 -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} +141 -74
- package/dest/private_kernel/hints/test_utils.d.ts +122 -0
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
- package/dest/private_kernel/hints/test_utils.js +203 -0
- 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 +24 -17
- package/dest/private_kernel/private_kernel_oracle.d.ts +24 -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 +76 -58
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +151 -136
- 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 -15
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +157 -72
- 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 +47 -7
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +231 -73
- 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 +16 -9
- 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 +20 -10
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +254 -102
- 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/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 +4 -3
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +3 -11
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +5 -5
- 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 +13 -13
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +7 -7
- 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 +16 -12
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -8
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +9 -12
- 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 +7 -7
- 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 +23 -19
- 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 +93 -32
- 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 +353 -140
- package/src/contract_function_simulator/execution_note_cache.ts +44 -25
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -5
- package/src/contract_function_simulator/index.ts +1 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +6 -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 -69
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +131 -140
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +198 -115
- 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 +23 -16
- package/src/entrypoints/client/lazy/index.ts +3 -0
- package/src/entrypoints/client/lazy/utils.ts +24 -17
- package/src/entrypoints/pxe_creation_options.ts +4 -2
- package/src/entrypoints/server/index.ts +4 -0
- package/src/entrypoints/server/utils.ts +33 -41
- package/src/events/event_service.ts +19 -25
- package/src/events/private_event_filter_validator.ts +3 -5
- package/src/job_coordinator/job_coordinator.ts +150 -0
- package/src/logs/log_service.ts +51 -40
- 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} +196 -138
- package/src/private_kernel/hints/test_utils.ts +325 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +27 -19
- package/src/private_kernel/private_kernel_oracle.ts +116 -36
- package/src/pxe.ts +283 -202
- 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 -76
- 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 +301 -79
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +111 -21
- package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
- package/src/storage/tagging_store/sender_tagging_store.ts +297 -112
- package/src/tagging/constants.ts +10 -0
- package/src/tagging/get_all_logs_by_tags.ts +92 -0
- package/src/tagging/index.ts +3 -12
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +27 -16
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +17 -16
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +13 -15
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +5 -13
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +26 -23
- 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 -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/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 -133
- package/src/public_storage/public_storage_service.ts +0 -33
- package/src/tree_membership/tree_membership_service.ts +0 -112
|
@@ -2,42 +2,32 @@ 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,
|
|
9
8
|
type FunctionArtifact,
|
|
9
|
+
type FunctionCall,
|
|
10
10
|
FunctionSelector,
|
|
11
11
|
type NoteSelector,
|
|
12
12
|
countArgumentsSize,
|
|
13
13
|
} from '@aztec/stdlib/abi';
|
|
14
|
-
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
15
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
16
|
-
import {
|
|
17
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
15
|
+
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
18
16
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
19
|
-
import { type ContractClassLog,
|
|
17
|
+
import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
|
|
20
18
|
import { Tag } from '@aztec/stdlib/logs';
|
|
21
19
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
22
20
|
import {
|
|
23
|
-
type BlockHeader,
|
|
24
21
|
CallContext,
|
|
25
|
-
Capsule,
|
|
26
22
|
CountedContractClassLog,
|
|
27
23
|
NoteAndSlot,
|
|
28
24
|
PrivateCallExecutionResult,
|
|
29
25
|
type TxContext,
|
|
30
26
|
} from '@aztec/stdlib/tx';
|
|
31
27
|
|
|
28
|
+
import type { AccessScopes } from '../../access_scopes.js';
|
|
29
|
+
import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
|
|
32
30
|
import { NoteService } from '../../notes/note_service.js';
|
|
33
|
-
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
34
|
-
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
35
|
-
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
36
|
-
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
37
|
-
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
38
|
-
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
39
|
-
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
40
|
-
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
41
31
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
42
32
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
43
33
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
@@ -45,8 +35,26 @@ import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js'
|
|
|
45
35
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
46
36
|
import { pickNotes } from '../pick_notes.js';
|
|
47
37
|
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
48
|
-
import { executePrivateFunction
|
|
49
|
-
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
|
+
};
|
|
50
58
|
|
|
51
59
|
/**
|
|
52
60
|
* The execution oracle for the private part of a transaction.
|
|
@@ -63,69 +71,44 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
63
71
|
* Users can also use this to get a clearer idea of what's happened during a simulation.
|
|
64
72
|
*/
|
|
65
73
|
private newNotes: NoteAndSlot[] = [];
|
|
66
|
-
/**
|
|
67
|
-
* Notes from previous transactions that are returned to the oracle call `getNotes` during this execution.
|
|
68
|
-
* The mapping maps from the unique siloed note hash to the index for notes created in private executions.
|
|
69
|
-
* It maps from siloed note hash to the index for notes created by public functions.
|
|
70
|
-
*
|
|
71
|
-
* They are not part of the ExecutionNoteCache and being forwarded to nested contexts via `extend()`
|
|
72
|
-
* because these notes are meant to be maintained on a per-call basis
|
|
73
|
-
* They should act as references for the read requests output by an app circuit via public inputs.
|
|
74
|
-
*/
|
|
75
|
-
private noteHashLeafIndexMap: Map<bigint, bigint> = new Map();
|
|
76
74
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
77
75
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
78
76
|
private offchainEffects: { data: Fr[] }[] = [];
|
|
79
77
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
80
78
|
|
|
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
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
capsules,
|
|
115
|
-
anchorBlockHeader,
|
|
116
|
-
contractStore,
|
|
117
|
-
noteStore,
|
|
118
|
-
keyStore,
|
|
119
|
-
addressStore,
|
|
120
|
-
aztecNode,
|
|
121
|
-
anchorBlockStore,
|
|
122
|
-
recipientTaggingStore,
|
|
123
|
-
senderAddressBookStore,
|
|
124
|
-
capsuleStore,
|
|
125
|
-
privateEventStore,
|
|
126
|
-
log,
|
|
127
|
-
scopes,
|
|
128
|
-
);
|
|
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;
|
|
129
112
|
}
|
|
130
113
|
|
|
131
114
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -157,14 +140,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
157
140
|
return toACVMWitness(0, fields);
|
|
158
141
|
}
|
|
159
142
|
|
|
160
|
-
/**
|
|
161
|
-
* The KernelProver will use this to fully populate witnesses and provide hints to the kernel circuit
|
|
162
|
-
* regarding which note hash each settled read request corresponds to.
|
|
163
|
-
*/
|
|
164
|
-
public getNoteHashLeafIndexMap() {
|
|
165
|
-
return this.noteHashLeafIndexMap;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
143
|
/**
|
|
169
144
|
* Get the data for the newly created notes.
|
|
170
145
|
*/
|
|
@@ -241,25 +216,29 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
241
216
|
* @returns An app tag to be used in a log.
|
|
242
217
|
*/
|
|
243
218
|
public async privateGetNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
|
|
244
|
-
const
|
|
219
|
+
const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
|
|
220
|
+
this.contractAddress,
|
|
221
|
+
sender,
|
|
222
|
+
recipient,
|
|
223
|
+
);
|
|
245
224
|
|
|
246
|
-
const index = await this.#getIndexToUseForSecret(
|
|
225
|
+
const index = await this.#getIndexToUseForSecret(extendedSecret);
|
|
247
226
|
this.log.debug(
|
|
248
227
|
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
249
228
|
);
|
|
250
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
229
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
251
230
|
|
|
252
|
-
return Tag.compute({
|
|
231
|
+
return Tag.compute({ extendedSecret, index });
|
|
253
232
|
}
|
|
254
233
|
|
|
255
|
-
async #
|
|
234
|
+
async #calculateExtendedDirectionalAppTaggingSecret(
|
|
256
235
|
contractAddress: AztecAddress,
|
|
257
236
|
sender: AztecAddress,
|
|
258
237
|
recipient: AztecAddress,
|
|
259
238
|
) {
|
|
260
|
-
const senderCompleteAddress = await this.
|
|
239
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
261
240
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
262
|
-
return
|
|
241
|
+
return ExtendedDirectionalAppTaggingSecret.compute(
|
|
263
242
|
senderCompleteAddress,
|
|
264
243
|
senderIvsk,
|
|
265
244
|
recipient,
|
|
@@ -268,7 +247,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
268
247
|
);
|
|
269
248
|
}
|
|
270
249
|
|
|
271
|
-
async #getIndexToUseForSecret(secret:
|
|
250
|
+
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
|
|
272
251
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
273
252
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
274
253
|
|
|
@@ -278,9 +257,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
278
257
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
279
258
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
280
259
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
281
|
-
await syncSenderTaggingIndexes(
|
|
282
|
-
|
|
283
|
-
|
|
260
|
+
await syncSenderTaggingIndexes(
|
|
261
|
+
secret,
|
|
262
|
+
this.aztecNode,
|
|
263
|
+
this.senderTaggingStore,
|
|
264
|
+
await this.anchorBlockHeader.hash(),
|
|
265
|
+
this.jobId,
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
284
269
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
285
270
|
// Otherwise, the next index to use is one past the last used index
|
|
286
271
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -369,7 +354,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
369
354
|
|
|
370
355
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
371
356
|
|
|
372
|
-
const noteService = new NoteService(this.noteStore, this.aztecNode, this.
|
|
357
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
373
358
|
const dbNotes = await noteService.getNotes(
|
|
374
359
|
this.callContext.contractAddress,
|
|
375
360
|
owner,
|
|
@@ -399,23 +384,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
399
384
|
.join(', ')}`,
|
|
400
385
|
);
|
|
401
386
|
|
|
402
|
-
const noteHashesAndIndexes = await Promise.all(
|
|
403
|
-
notes.map(async n => {
|
|
404
|
-
if (n.index !== undefined) {
|
|
405
|
-
const siloedNoteHash = await siloNoteHash(n.contractAddress, n.noteHash);
|
|
406
|
-
const uniqueNoteHash = await computeUniqueNoteHash(n.noteNonce, siloedNoteHash);
|
|
407
|
-
|
|
408
|
-
return { hash: uniqueNoteHash, index: n.index };
|
|
409
|
-
}
|
|
410
|
-
}),
|
|
411
|
-
);
|
|
412
|
-
|
|
413
|
-
noteHashesAndIndexes
|
|
414
|
-
.filter(n => n !== undefined)
|
|
415
|
-
.forEach(n => {
|
|
416
|
-
this.noteHashLeafIndexMap.set(n!.hash.toBigInt(), n!.index);
|
|
417
|
-
});
|
|
418
|
-
|
|
419
387
|
return notes;
|
|
420
388
|
}
|
|
421
389
|
|
|
@@ -458,6 +426,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
458
426
|
note,
|
|
459
427
|
siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
|
|
460
428
|
noteHash,
|
|
429
|
+
isPending: true, // This note has just been created and hence is not settled yet.
|
|
461
430
|
},
|
|
462
431
|
counter,
|
|
463
432
|
);
|
|
@@ -492,6 +461,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
492
461
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
493
462
|
}
|
|
494
463
|
|
|
464
|
+
/**
|
|
465
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
|
|
466
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
467
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
468
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
469
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
470
|
+
*/
|
|
471
|
+
public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
472
|
+
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
473
|
+
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
474
|
+
return Promise.resolve(isNullifierPending);
|
|
475
|
+
}
|
|
476
|
+
|
|
495
477
|
/**
|
|
496
478
|
* Emit a contract class log.
|
|
497
479
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -548,7 +530,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
548
530
|
|
|
549
531
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
550
532
|
|
|
551
|
-
await
|
|
533
|
+
await this.contractSyncService.ensureContractSynced(
|
|
534
|
+
targetContractAddress,
|
|
535
|
+
functionSelector,
|
|
536
|
+
this.utilityExecutor,
|
|
537
|
+
this.anchorBlockHeader,
|
|
538
|
+
this.jobId,
|
|
539
|
+
this.scopes,
|
|
540
|
+
);
|
|
552
541
|
|
|
553
542
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
554
543
|
targetContractAddress,
|
|
@@ -559,39 +548,41 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
559
548
|
|
|
560
549
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
561
550
|
|
|
562
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
551
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
563
552
|
argsHash,
|
|
564
|
-
derivedTxContext,
|
|
565
|
-
derivedCallContext,
|
|
566
|
-
this.anchorBlockHeader,
|
|
567
|
-
this.
|
|
568
|
-
this.
|
|
569
|
-
this.
|
|
570
|
-
this.
|
|
571
|
-
this.
|
|
572
|
-
this.
|
|
573
|
-
this.
|
|
574
|
-
this.
|
|
575
|
-
this.
|
|
576
|
-
this.
|
|
577
|
-
this.
|
|
578
|
-
this.senderTaggingStore,
|
|
579
|
-
this.recipientTaggingStore,
|
|
580
|
-
this.senderAddressBookStore,
|
|
581
|
-
this.capsuleStore,
|
|
582
|
-
this.privateEventStore,
|
|
583
|
-
this.
|
|
553
|
+
txContext: derivedTxContext,
|
|
554
|
+
callContext: derivedCallContext,
|
|
555
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
556
|
+
utilityExecutor: this.utilityExecutor,
|
|
557
|
+
authWitnesses: this.authWitnesses,
|
|
558
|
+
capsules: this.capsules,
|
|
559
|
+
executionCache: this.executionCache,
|
|
560
|
+
noteCache: this.noteCache,
|
|
561
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
562
|
+
contractStore: this.contractStore,
|
|
563
|
+
noteStore: this.noteStore,
|
|
564
|
+
keyStore: this.keyStore,
|
|
565
|
+
addressStore: this.addressStore,
|
|
566
|
+
aztecNode: this.aztecNode,
|
|
567
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
568
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
569
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
570
|
+
capsuleStore: this.capsuleStore,
|
|
571
|
+
privateEventStore: this.privateEventStore,
|
|
572
|
+
contractSyncService: this.contractSyncService,
|
|
573
|
+
jobId: this.jobId,
|
|
574
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
584
575
|
sideEffectCounter,
|
|
585
|
-
this.log,
|
|
586
|
-
this.scopes,
|
|
587
|
-
this.senderForTags,
|
|
588
|
-
this.simulator
|
|
589
|
-
);
|
|
576
|
+
log: this.log,
|
|
577
|
+
scopes: this.scopes,
|
|
578
|
+
senderForTags: this.senderForTags,
|
|
579
|
+
simulator: this.simulator!,
|
|
580
|
+
});
|
|
590
581
|
|
|
591
582
|
const setupTime = simulatorSetupTimer.ms();
|
|
592
583
|
|
|
593
584
|
const childExecutionResult = await executePrivateFunction(
|
|
594
|
-
this.simulator
|
|
585
|
+
this.simulator!,
|
|
595
586
|
privateExecutionOracle,
|
|
596
587
|
targetArtifact,
|
|
597
588
|
targetContractAddress,
|