@aztec/pxe 0.0.1-commit.d431d1c → 0.0.1-commit.d939eb5aa
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 +5 -5
- package/dest/block_synchronizer/block_synchronizer.d.ts +9 -5
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +68 -16
- package/dest/config/index.d.ts +4 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +12 -2
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +63 -31
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +206 -78
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
- package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
- package/dest/contract_function_simulator/index.d.ts +2 -1
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -7
- 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 +9 -11
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -4
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -8
- 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 +7 -12
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +65 -46
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +47 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -42
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +319 -112
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -22
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -40
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +59 -77
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +120 -86
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +134 -67
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +337 -151
- package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +9 -2
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
- package/dest/contract_logging.d.ts +27 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +38 -0
- package/dest/contract_sync/contract_sync_service.d.ts +44 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +116 -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 +60 -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 +3 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +2 -0
- package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +23 -9
- package/dest/entrypoints/client/lazy/index.d.ts +3 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +2 -0
- package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +24 -10
- package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/pxe_creation_options.js +3 -1
- package/dest/entrypoints/server/index.d.ts +4 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +3 -1
- package/dest/entrypoints/server/utils.d.ts +2 -2
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +30 -11
- 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 +21 -10
- package/dest/events/private_event_filter_validator.d.ts +3 -2
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +15 -0
- 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 +10 -9
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +50 -64
- package/dest/messages/message_context_service.d.ts +17 -0
- package/dest/messages/message_context_service.d.ts.map +1 -0
- package/dest/messages/message_context_service.js +36 -0
- package/dest/notes/note_service.d.ts +8 -8
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +29 -19
- package/dest/notes_filter.d.ts +24 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +4 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +20 -9
- 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 +1 -1
- package/dest/private_kernel/hints/index.js +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +129 -68
- 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 +20 -15
- package/dest/private_kernel/private_kernel_oracle.d.ts +8 -4
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +7 -3
- package/dest/pxe.d.ts +74 -24
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +142 -80
- 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_service.d.ts +21 -0
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_service.js +50 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_store.js +39 -36
- package/dest/storage/capsule_store/index.d.ts +2 -1
- package/dest/storage/capsule_store/index.d.ts.map +1 -1
- package/dest/storage/capsule_store/index.js +1 -0
- 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 +47 -49
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +278 -252
- 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 +17 -4
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +198 -147
- 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 +6 -6
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/recipient_tagging_store.js +31 -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 +29 -28
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +233 -137
- 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 +2 -1
- 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 +7 -21
- 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 +13 -7
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
- 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 +23 -16
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -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 +42 -27
- package/package.json +25 -16
- package/src/bin/check_oracle_version.ts +5 -4
- package/src/block_synchronizer/block_synchronizer.ts +82 -33
- package/src/config/index.ts +9 -1
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +366 -142
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
- package/src/contract_function_simulator/index.ts +1 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +10 -10
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +5 -11
- package/src/contract_function_simulator/oracle/interfaces.ts +95 -58
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
- package/src/contract_function_simulator/oracle/oracle.ts +404 -150
- package/src/contract_function_simulator/oracle/private_execution.ts +5 -64
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +160 -182
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +564 -182
- package/src/contract_function_simulator/pick_notes.ts +9 -2
- package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
- package/src/contract_logging.ts +52 -0
- package/src/contract_sync/contract_sync_service.ts +176 -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 +2 -0
- package/src/entrypoints/client/bundle/utils.ts +18 -18
- package/src/entrypoints/client/lazy/index.ts +2 -0
- package/src/entrypoints/client/lazy/utils.ts +19 -18
- package/src/entrypoints/pxe_creation_options.ts +9 -1
- package/src/entrypoints/server/index.ts +3 -1
- package/src/entrypoints/server/utils.ts +24 -29
- package/src/events/event_service.ts +22 -11
- package/src/events/private_event_filter_validator.ts +21 -1
- package/src/job_coordinator/job_coordinator.ts +4 -3
- package/src/logs/log_service.ts +93 -105
- package/src/messages/message_context_service.ts +44 -0
- package/src/notes/note_service.ts +38 -26
- package/src/notes_filter.ts +24 -0
- package/src/oracle_version.ts +20 -9
- 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 +1 -1
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
- package/src/private_kernel/hints/test_utils.ts +325 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +24 -19
- package/src/private_kernel/private_kernel_oracle.ts +9 -9
- package/src/pxe.ts +272 -126
- 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_service.ts +90 -0
- package/src/storage/capsule_store/capsule_store.ts +42 -34
- package/src/storage/capsule_store/index.ts +1 -0
- 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 +318 -318
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +250 -190
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +38 -24
- package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
- package/src/storage/tagging_store/sender_tagging_store.ts +287 -156
- package/src/tagging/get_all_logs_by_tags.ts +92 -0
- package/src/tagging/index.ts +3 -2
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +19 -24
- 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 +25 -10
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +29 -26
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +39 -29
- 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/tree_membership/tree_membership_service.d.ts +0 -50
- package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
- package/dest/tree_membership/tree_membership_service.js +0 -75
- package/src/tree_membership/tree_membership_service.ts +0 -97
|
@@ -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,18 +11,14 @@ 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
|
-
import { type ContractClassLog,
|
|
17
|
+
import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type TaggingIndexRange } 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,
|
|
@@ -31,14 +26,6 @@ import {
|
|
|
31
26
|
} from '@aztec/stdlib/tx';
|
|
32
27
|
|
|
33
28
|
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
29
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
43
30
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
44
31
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
@@ -46,8 +33,25 @@ import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js'
|
|
|
46
33
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
47
34
|
import { pickNotes } from '../pick_notes.js';
|
|
48
35
|
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
49
|
-
import { executePrivateFunction
|
|
50
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
36
|
+
import { executePrivateFunction } from './private_execution.js';
|
|
37
|
+
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
38
|
+
|
|
39
|
+
/** Args for PrivateExecutionOracle constructor. */
|
|
40
|
+
export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
|
|
41
|
+
argsHash: Fr;
|
|
42
|
+
txContext: TxContext;
|
|
43
|
+
callContext: CallContext;
|
|
44
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
45
|
+
utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<void>;
|
|
46
|
+
executionCache: HashedValuesCache;
|
|
47
|
+
noteCache: ExecutionNoteCache;
|
|
48
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
49
|
+
senderTaggingStore: SenderTaggingStore;
|
|
50
|
+
totalPublicCalldataCount?: number;
|
|
51
|
+
sideEffectCounter?: number;
|
|
52
|
+
senderForTags?: AztecAddress;
|
|
53
|
+
simulator?: CircuitSimulator;
|
|
54
|
+
};
|
|
51
55
|
|
|
52
56
|
/**
|
|
53
57
|
* The execution oracle for the private part of a transaction.
|
|
@@ -66,61 +70,39 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
66
70
|
private newNotes: NoteAndSlot[] = [];
|
|
67
71
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
68
72
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
69
|
-
private offchainEffects: { data: Fr[] }[] = [];
|
|
70
73
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
71
74
|
|
|
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
|
-
private simulator?: CircuitSimulator,
|
|
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
|
-
);
|
|
75
|
+
private readonly argsHash: Fr;
|
|
76
|
+
private readonly txContext: TxContext;
|
|
77
|
+
private readonly callContext: CallContext;
|
|
78
|
+
private readonly utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<void>;
|
|
79
|
+
private readonly executionCache: HashedValuesCache;
|
|
80
|
+
private readonly noteCache: ExecutionNoteCache;
|
|
81
|
+
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
82
|
+
private readonly senderTaggingStore: SenderTaggingStore;
|
|
83
|
+
private totalPublicCalldataCount: number;
|
|
84
|
+
protected sideEffectCounter: number;
|
|
85
|
+
private senderForTags?: AztecAddress;
|
|
86
|
+
private readonly simulator?: CircuitSimulator;
|
|
87
|
+
|
|
88
|
+
constructor(args: PrivateExecutionOracleArgs) {
|
|
89
|
+
super({
|
|
90
|
+
...args,
|
|
91
|
+
contractAddress: args.callContext.contractAddress,
|
|
92
|
+
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
93
|
+
});
|
|
94
|
+
this.argsHash = args.argsHash;
|
|
95
|
+
this.txContext = args.txContext;
|
|
96
|
+
this.callContext = args.callContext;
|
|
97
|
+
this.utilityExecutor = args.utilityExecutor;
|
|
98
|
+
this.executionCache = args.executionCache;
|
|
99
|
+
this.noteCache = args.noteCache;
|
|
100
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
101
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
102
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
103
|
+
this.sideEffectCounter = args.sideEffectCounter ?? 0;
|
|
104
|
+
this.senderForTags = args.senderForTags;
|
|
105
|
+
this.simulator = args.simulator;
|
|
124
106
|
}
|
|
125
107
|
|
|
126
108
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -171,17 +153,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
171
153
|
}
|
|
172
154
|
|
|
173
155
|
/**
|
|
174
|
-
*
|
|
175
|
-
*/
|
|
176
|
-
public getOffchainEffects() {
|
|
177
|
-
return this.offchainEffects;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
156
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
182
157
|
*/
|
|
183
|
-
public
|
|
184
|
-
return this.taggingIndexCache.
|
|
158
|
+
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
159
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
185
160
|
}
|
|
186
161
|
|
|
187
162
|
/**
|
|
@@ -201,7 +176,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
201
176
|
* The value persists through nested calls, meaning all calls down the stack will use the same
|
|
202
177
|
* 'senderForTags' value (unless it is replaced).
|
|
203
178
|
*/
|
|
204
|
-
public
|
|
179
|
+
public getSenderForTags(): Promise<AztecAddress | undefined> {
|
|
205
180
|
return Promise.resolve(this.senderForTags);
|
|
206
181
|
}
|
|
207
182
|
|
|
@@ -216,7 +191,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
216
191
|
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
217
192
|
* value (unless it is replaced by another call to this setter).
|
|
218
193
|
*/
|
|
219
|
-
public
|
|
194
|
+
public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
220
195
|
this.senderForTags = senderForTags;
|
|
221
196
|
return Promise.resolve();
|
|
222
197
|
}
|
|
@@ -227,26 +202,40 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
227
202
|
* @param recipient - The address receiving the log
|
|
228
203
|
* @returns An app tag to be used in a log.
|
|
229
204
|
*/
|
|
230
|
-
public async
|
|
231
|
-
const
|
|
205
|
+
public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
|
|
206
|
+
const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
|
|
207
|
+
this.contractAddress,
|
|
208
|
+
sender,
|
|
209
|
+
recipient,
|
|
210
|
+
);
|
|
232
211
|
|
|
233
|
-
|
|
234
|
-
|
|
212
|
+
if (!extendedSecret) {
|
|
213
|
+
// We'd only fail to compute an extended secret if the recipient is an invalid address. To prevent
|
|
214
|
+
// king-of-the-hill attacks, instead of failing we use a random tag. By including a correct-looking tag in the
|
|
215
|
+
// log, the transaction shape is preserved and no privacy is leaked, even if the tag is bogus.
|
|
216
|
+
this.logger.warn(`Computing a tag for invalid recipient ${recipient} - returning a random tag instead`, {
|
|
217
|
+
contractAddress: this.contractAddress,
|
|
218
|
+
});
|
|
219
|
+
return Tag.random();
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
const index = await this.#getIndexToUseForSecret(extendedSecret);
|
|
223
|
+
this.logger.debug(
|
|
235
224
|
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
236
225
|
);
|
|
237
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
226
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
238
227
|
|
|
239
|
-
return Tag.compute({
|
|
228
|
+
return Tag.compute({ extendedSecret, index });
|
|
240
229
|
}
|
|
241
230
|
|
|
242
|
-
async #
|
|
231
|
+
async #calculateExtendedDirectionalAppTaggingSecret(
|
|
243
232
|
contractAddress: AztecAddress,
|
|
244
233
|
sender: AztecAddress,
|
|
245
234
|
recipient: AztecAddress,
|
|
246
235
|
) {
|
|
247
|
-
const senderCompleteAddress = await this.
|
|
236
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
248
237
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
249
|
-
return
|
|
238
|
+
return ExtendedDirectionalAppTaggingSecret.compute(
|
|
250
239
|
senderCompleteAddress,
|
|
251
240
|
senderIvsk,
|
|
252
241
|
recipient,
|
|
@@ -255,7 +244,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
255
244
|
);
|
|
256
245
|
}
|
|
257
246
|
|
|
258
|
-
async #getIndexToUseForSecret(secret:
|
|
247
|
+
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
|
|
259
248
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
260
249
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
261
250
|
|
|
@@ -265,7 +254,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
265
254
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
266
255
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
267
256
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
268
|
-
await syncSenderTaggingIndexes(
|
|
257
|
+
await syncSenderTaggingIndexes(
|
|
258
|
+
secret,
|
|
259
|
+
this.aztecNode,
|
|
260
|
+
this.senderTaggingStore,
|
|
261
|
+
await this.anchorBlockHeader.hash(),
|
|
262
|
+
this.jobId,
|
|
263
|
+
);
|
|
269
264
|
|
|
270
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
|
|
@@ -279,7 +274,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
279
274
|
* @param values - Values to store.
|
|
280
275
|
* @returns The hash of the values.
|
|
281
276
|
*/
|
|
282
|
-
public
|
|
277
|
+
public setHashPreimage(values: Fr[], hash: Fr) {
|
|
283
278
|
return this.executionCache.store(values, hash);
|
|
284
279
|
}
|
|
285
280
|
|
|
@@ -288,7 +283,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
288
283
|
* @param hash - Hash of the values.
|
|
289
284
|
* @returns The values.
|
|
290
285
|
*/
|
|
291
|
-
public
|
|
286
|
+
public getHashPreimage(hash: Fr): Promise<Fr[]> {
|
|
292
287
|
const preimage = this.executionCache.getPreimage(hash);
|
|
293
288
|
if (!preimage) {
|
|
294
289
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -296,12 +291,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
296
291
|
return Promise.resolve(preimage);
|
|
297
292
|
}
|
|
298
293
|
|
|
299
|
-
override async
|
|
294
|
+
override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
|
|
300
295
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
301
296
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
302
297
|
// in the current transaction.
|
|
303
298
|
|
|
304
|
-
this.
|
|
299
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
305
300
|
contractAddress: this.contractAddress,
|
|
306
301
|
});
|
|
307
302
|
|
|
@@ -309,7 +304,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
309
304
|
|
|
310
305
|
return (
|
|
311
306
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
312
|
-
(await super.
|
|
307
|
+
(await super.doesNullifierExist(innerNullifier))
|
|
313
308
|
);
|
|
314
309
|
}
|
|
315
310
|
|
|
@@ -334,7 +329,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
334
329
|
* @param status - The status of notes to fetch.
|
|
335
330
|
* @returns Array of note data.
|
|
336
331
|
*/
|
|
337
|
-
public override async
|
|
332
|
+
public override async getNotes(
|
|
338
333
|
owner: AztecAddress | undefined,
|
|
339
334
|
storageSlot: Fr,
|
|
340
335
|
numSelects: number,
|
|
@@ -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,
|
|
@@ -380,7 +375,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
380
375
|
offset,
|
|
381
376
|
});
|
|
382
377
|
|
|
383
|
-
this.
|
|
378
|
+
this.logger.debug(
|
|
384
379
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
385
380
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
386
381
|
.join(', ')}`,
|
|
@@ -400,7 +395,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
400
395
|
* @param noteHash - A hash of the new note.
|
|
401
396
|
* @returns
|
|
402
397
|
*/
|
|
403
|
-
public
|
|
398
|
+
public notifyCreatedNote(
|
|
404
399
|
owner: AztecAddress,
|
|
405
400
|
storageSlot: Fr,
|
|
406
401
|
randomness: Fr,
|
|
@@ -409,7 +404,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
409
404
|
noteHash: Fr,
|
|
410
405
|
counter: number,
|
|
411
406
|
) {
|
|
412
|
-
this.
|
|
407
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
413
408
|
contractAddress: this.callContext.contractAddress,
|
|
414
409
|
storageSlot,
|
|
415
410
|
randomness,
|
|
@@ -441,7 +436,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
441
436
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
442
437
|
* @param noteHash - A hash of the new note.
|
|
443
438
|
*/
|
|
444
|
-
public async
|
|
439
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
445
440
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
446
441
|
this.callContext.contractAddress,
|
|
447
442
|
innerNullifier,
|
|
@@ -458,11 +453,24 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
458
453
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
459
454
|
* @param noteHash - A hash of the new note.
|
|
460
455
|
*/
|
|
461
|
-
public
|
|
462
|
-
this.
|
|
456
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
457
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
463
458
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
464
459
|
}
|
|
465
460
|
|
|
461
|
+
/**
|
|
462
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier 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 isNullifierPending(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
|
+
|
|
466
474
|
/**
|
|
467
475
|
* Emit a contract class log.
|
|
468
476
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -470,10 +478,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
470
478
|
* @param log - The contract class log to be emitted.
|
|
471
479
|
* @param counter - The contract class log's counter.
|
|
472
480
|
*/
|
|
473
|
-
public
|
|
481
|
+
public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
|
|
474
482
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
475
483
|
const text = log.toBuffer().toString('hex');
|
|
476
|
-
this.
|
|
484
|
+
this.logger.verbose(
|
|
477
485
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
478
486
|
);
|
|
479
487
|
}
|
|
@@ -499,7 +507,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
499
507
|
* @param isStaticCall - Whether the call is a static call.
|
|
500
508
|
* @returns The execution result.
|
|
501
509
|
*/
|
|
502
|
-
async
|
|
510
|
+
async callPrivateFunction(
|
|
503
511
|
targetContractAddress: AztecAddress,
|
|
504
512
|
functionSelector: FunctionSelector,
|
|
505
513
|
argsHash: Fr,
|
|
@@ -513,15 +521,20 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
513
521
|
}
|
|
514
522
|
|
|
515
523
|
const simulatorSetupTimer = new Timer();
|
|
516
|
-
this.
|
|
524
|
+
this.logger.debug(
|
|
517
525
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
518
526
|
);
|
|
519
527
|
|
|
520
528
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
521
529
|
|
|
522
|
-
await
|
|
523
|
-
|
|
524
|
-
|
|
530
|
+
await this.contractSyncService.ensureContractSynced(
|
|
531
|
+
targetContractAddress,
|
|
532
|
+
functionSelector,
|
|
533
|
+
this.utilityExecutor,
|
|
534
|
+
this.anchorBlockHeader,
|
|
535
|
+
this.jobId,
|
|
536
|
+
this.scopes,
|
|
537
|
+
);
|
|
525
538
|
|
|
526
539
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
527
540
|
targetContractAddress,
|
|
@@ -532,41 +545,43 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
532
545
|
|
|
533
546
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
534
547
|
|
|
535
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
548
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
536
549
|
argsHash,
|
|
537
|
-
derivedTxContext,
|
|
538
|
-
derivedCallContext,
|
|
539
|
-
this.anchorBlockHeader,
|
|
540
|
-
this.utilityExecutor,
|
|
541
|
-
this.authWitnesses,
|
|
542
|
-
this.capsules,
|
|
543
|
-
this.executionCache,
|
|
544
|
-
this.noteCache,
|
|
545
|
-
this.taggingIndexCache,
|
|
546
|
-
this.contractStore,
|
|
547
|
-
this.noteStore,
|
|
548
|
-
this.keyStore,
|
|
549
|
-
this.addressStore,
|
|
550
|
-
this.aztecNode,
|
|
551
|
-
this.
|
|
552
|
-
this.
|
|
553
|
-
this.
|
|
554
|
-
this.
|
|
555
|
-
this.
|
|
556
|
-
this.
|
|
557
|
-
this.
|
|
558
|
-
this.
|
|
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
|
+
capsuleService: this.capsuleService,
|
|
568
|
+
privateEventStore: this.privateEventStore,
|
|
569
|
+
messageContextService: this.messageContextService,
|
|
570
|
+
contractSyncService: this.contractSyncService,
|
|
571
|
+
jobId: this.jobId,
|
|
572
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
559
573
|
sideEffectCounter,
|
|
560
|
-
this.
|
|
561
|
-
this.scopes,
|
|
562
|
-
this.senderForTags,
|
|
563
|
-
this.simulator
|
|
564
|
-
|
|
574
|
+
log: this.logger,
|
|
575
|
+
scopes: this.scopes,
|
|
576
|
+
senderForTags: this.senderForTags,
|
|
577
|
+
simulator: this.simulator!,
|
|
578
|
+
l2TipsStore: this.l2TipsStore,
|
|
579
|
+
});
|
|
565
580
|
|
|
566
581
|
const setupTime = simulatorSetupTimer.ms();
|
|
567
582
|
|
|
568
583
|
const childExecutionResult = await executePrivateFunction(
|
|
569
|
-
this.simulator
|
|
584
|
+
this.simulator!,
|
|
570
585
|
privateExecutionOracle,
|
|
571
586
|
targetArtifact,
|
|
572
587
|
targetContractAddress,
|
|
@@ -592,7 +607,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
592
607
|
};
|
|
593
608
|
}
|
|
594
609
|
|
|
595
|
-
|
|
610
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
611
|
+
public assertValidPublicCalldata(calldataHash: Fr) {
|
|
596
612
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
597
613
|
if (!calldata) {
|
|
598
614
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -602,47 +618,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
602
618
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
603
619
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
604
620
|
}
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
/**
|
|
608
|
-
* Verify relevant information when a public function is enqueued.
|
|
609
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
610
|
-
* @param calldataHash - The hash of the function selector and arguments.
|
|
611
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
612
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
613
|
-
*/
|
|
614
|
-
public privateNotifyEnqueuedPublicFunctionCall(
|
|
615
|
-
_targetContractAddress: AztecAddress,
|
|
616
|
-
calldataHash: Fr,
|
|
617
|
-
_sideEffectCounter: number,
|
|
618
|
-
_isStaticCall: boolean,
|
|
619
|
-
) {
|
|
620
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
621
621
|
return Promise.resolve();
|
|
622
622
|
}
|
|
623
623
|
|
|
624
|
-
|
|
625
|
-
* Verify relevant information when a public teardown function is set.
|
|
626
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
627
|
-
* @param argsHash - The arguments hash to pass to the function.
|
|
628
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
629
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
630
|
-
*/
|
|
631
|
-
public privateNotifySetPublicTeardownFunctionCall(
|
|
632
|
-
_targetContractAddress: AztecAddress,
|
|
633
|
-
calldataHash: Fr,
|
|
634
|
-
_sideEffectCounter: number,
|
|
635
|
-
_isStaticCall: boolean,
|
|
636
|
-
) {
|
|
637
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
638
|
-
return Promise.resolve();
|
|
639
|
-
}
|
|
640
|
-
|
|
641
|
-
public privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
624
|
+
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
642
625
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
643
626
|
}
|
|
644
627
|
|
|
645
|
-
public
|
|
628
|
+
public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
646
629
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
647
630
|
}
|
|
648
631
|
|
|
@@ -669,9 +652,4 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
669
652
|
public getDebugFunctionName() {
|
|
670
653
|
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
671
654
|
}
|
|
672
|
-
|
|
673
|
-
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|
|
674
|
-
this.offchainEffects.push({ data });
|
|
675
|
-
return Promise.resolve();
|
|
676
|
-
}
|
|
677
655
|
}
|