@aztec/pxe 0.0.1-commit.e6bd8901 → 0.0.1-commit.ec7ac5448
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 +4 -4
- package/dest/block_synchronizer/block_synchronizer.d.ts +5 -3
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +17 -5
- package/dest/config/index.d.ts +2 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +60 -31
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +201 -74
- 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 +4 -6
- 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 +8 -10
- 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 +4 -7
- 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 +6 -11
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +62 -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 -44
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +310 -113
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +53 -79
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +109 -89
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +124 -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 +326 -140
- 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 +104 -0
- package/dest/contract_sync/helpers.d.ts +28 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/{index.js → helpers.js} +20 -16
- 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 -18
- 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 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +3 -2
- 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 +5 -5
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +20 -9
- package/dest/job_coordinator/job_coordinator.d.ts +3 -2
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
- package/dest/job_coordinator/job_coordinator.js +3 -2
- package/dest/logs/log_service.d.ts +8 -9
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +38 -62
- 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 +7 -8
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +23 -15
- 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 -10
- 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 +21 -13
- 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 +73 -24
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +131 -78
- 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 -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 +13 -3
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +147 -107
- package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +84 -61
- package/dest/storage/private_event_store/stored_private_event.d.ts +4 -4
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -1
- package/dest/storage/private_event_store/stored_private_event.js +2 -2
- 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 +4 -4
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +17 -3
- package/dest/tagging/index.d.ts +3 -3
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +1 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +5 -6
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +7 -7
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +7 -8
- 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 +12 -11
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -9
- 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 +20 -10
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -8
- 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 +36 -24
- package/package.json +25 -16
- package/src/bin/check_oracle_version.ts +4 -4
- package/src/block_synchronizer/block_synchronizer.ts +29 -19
- package/src/config/index.ts +1 -1
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +360 -133
- 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 +9 -9
- 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 +4 -10
- package/src/contract_function_simulator/oracle/interfaces.ts +90 -62
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
- package/src/contract_function_simulator/oracle/oracle.ts +391 -150
- package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +136 -187
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +544 -174
- 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 +170 -0
- package/src/contract_sync/{index.ts → helpers.ts} +23 -25
- package/src/debug/pxe_debug_utils.ts +63 -19
- 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 -2
- package/src/entrypoints/server/utils.ts +24 -29
- package/src/events/event_service.ts +21 -10
- package/src/job_coordinator/job_coordinator.ts +4 -3
- package/src/logs/log_service.ts +72 -106
- package/src/messages/message_context_service.ts +44 -0
- package/src/notes/note_service.ts +24 -16
- package/src/notes_filter.ts +24 -0
- package/src/oracle_version.ts +20 -10
- 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 +25 -15
- package/src/private_kernel/private_kernel_oracle.ts +9 -9
- package/src/pxe.ts +243 -131
- 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 -76
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +166 -132
- package/src/storage/private_event_store/private_event_store.ts +102 -81
- package/src/storage/private_event_store/stored_private_event.ts +3 -3
- 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 +31 -7
- package/src/tagging/index.ts +2 -2
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +9 -12
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +12 -17
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +25 -12
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +30 -29
- package/dest/contract_sync/index.d.ts +0 -23
- package/dest/contract_sync/index.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
|
@@ -76,12 +76,12 @@ export async function executePrivateFunction(
|
|
|
76
76
|
|
|
77
77
|
const contractClassLogs = privateExecutionOracle.getContractClassLogs();
|
|
78
78
|
|
|
79
|
-
const rawReturnValues = await privateExecutionOracle.
|
|
79
|
+
const rawReturnValues = await privateExecutionOracle.getHashPreimage(publicInputs.returnsHash);
|
|
80
80
|
|
|
81
81
|
const newNotes = privateExecutionOracle.getNewNotes();
|
|
82
82
|
const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
|
|
83
83
|
const offchainEffects = privateExecutionOracle.getOffchainEffects();
|
|
84
|
-
const
|
|
84
|
+
const taggingIndexRanges = privateExecutionOracle.getUsedTaggingIndexRanges();
|
|
85
85
|
const nestedExecutionResults = privateExecutionOracle.getNestedExecutionResults();
|
|
86
86
|
|
|
87
87
|
let timerSubtractionList = nestedExecutionResults;
|
|
@@ -103,8 +103,8 @@ export async function executePrivateFunction(
|
|
|
103
103
|
newNotes,
|
|
104
104
|
noteHashNullifierCounterMap,
|
|
105
105
|
rawReturnValues,
|
|
106
|
-
offchainEffects,
|
|
107
|
-
|
|
106
|
+
offchainEffects.map(e => ({ data: e.data })),
|
|
107
|
+
taggingIndexRanges,
|
|
108
108
|
nestedExecutionResults,
|
|
109
109
|
contractClassLogs,
|
|
110
110
|
{
|
|
@@ -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,35 +11,21 @@ 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
|
-
import { L2BlockHash } from '@aztec/stdlib/block';
|
|
18
15
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
19
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
20
16
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
21
|
-
import { type ContractClassLog,
|
|
17
|
+
import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
|
|
22
18
|
import { Tag } from '@aztec/stdlib/logs';
|
|
23
19
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
24
20
|
import {
|
|
25
|
-
type BlockHeader,
|
|
26
21
|
CallContext,
|
|
27
|
-
Capsule,
|
|
28
22
|
CountedContractClassLog,
|
|
29
23
|
NoteAndSlot,
|
|
30
24
|
PrivateCallExecutionResult,
|
|
31
25
|
type TxContext,
|
|
32
26
|
} from '@aztec/stdlib/tx';
|
|
33
27
|
|
|
34
|
-
import { ensureContractSynced } from '../../contract_sync/index.js';
|
|
35
28
|
import { NoteService } from '../../notes/note_service.js';
|
|
36
|
-
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
37
|
-
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
38
|
-
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
39
|
-
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
40
|
-
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
41
|
-
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
42
|
-
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
43
|
-
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
44
29
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
45
30
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
46
31
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
@@ -49,7 +34,24 @@ import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
|
49
34
|
import { pickNotes } from '../pick_notes.js';
|
|
50
35
|
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
51
36
|
import { executePrivateFunction } from './private_execution.js';
|
|
52
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.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
|
+
};
|
|
53
55
|
|
|
54
56
|
/**
|
|
55
57
|
* The execution oracle for the private part of a transaction.
|
|
@@ -68,61 +70,39 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
68
70
|
private newNotes: NoteAndSlot[] = [];
|
|
69
71
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
70
72
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
71
|
-
private offchainEffects: { data: Fr[] }[] = [];
|
|
72
73
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
73
74
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
private simulator?: CircuitSimulator,
|
|
106
|
-
) {
|
|
107
|
-
super(
|
|
108
|
-
callContext.contractAddress,
|
|
109
|
-
authWitnesses,
|
|
110
|
-
capsules,
|
|
111
|
-
anchorBlockHeader,
|
|
112
|
-
contractStore,
|
|
113
|
-
noteStore,
|
|
114
|
-
keyStore,
|
|
115
|
-
addressStore,
|
|
116
|
-
aztecNode,
|
|
117
|
-
anchorBlockStore,
|
|
118
|
-
recipientTaggingStore,
|
|
119
|
-
senderAddressBookStore,
|
|
120
|
-
capsuleStore,
|
|
121
|
-
privateEventStore,
|
|
122
|
-
jobId,
|
|
123
|
-
log,
|
|
124
|
-
scopes,
|
|
125
|
-
);
|
|
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;
|
|
126
106
|
}
|
|
127
107
|
|
|
128
108
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -173,17 +153,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
173
153
|
}
|
|
174
154
|
|
|
175
155
|
/**
|
|
176
|
-
*
|
|
156
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
177
157
|
*/
|
|
178
|
-
public
|
|
179
|
-
return this.
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
184
|
-
*/
|
|
185
|
-
public getUsedPreTags(): PreTag[] {
|
|
186
|
-
return this.taggingIndexCache.getUsedPreTags();
|
|
158
|
+
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
159
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
187
160
|
}
|
|
188
161
|
|
|
189
162
|
/**
|
|
@@ -203,7 +176,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
203
176
|
* The value persists through nested calls, meaning all calls down the stack will use the same
|
|
204
177
|
* 'senderForTags' value (unless it is replaced).
|
|
205
178
|
*/
|
|
206
|
-
public
|
|
179
|
+
public getSenderForTags(): Promise<AztecAddress | undefined> {
|
|
207
180
|
return Promise.resolve(this.senderForTags);
|
|
208
181
|
}
|
|
209
182
|
|
|
@@ -218,7 +191,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
218
191
|
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
219
192
|
* value (unless it is replaced by another call to this setter).
|
|
220
193
|
*/
|
|
221
|
-
public
|
|
194
|
+
public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
222
195
|
this.senderForTags = senderForTags;
|
|
223
196
|
return Promise.resolve();
|
|
224
197
|
}
|
|
@@ -229,26 +202,40 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
229
202
|
* @param recipient - The address receiving the log
|
|
230
203
|
* @returns An app tag to be used in a log.
|
|
231
204
|
*/
|
|
232
|
-
public async
|
|
233
|
-
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
|
+
);
|
|
234
211
|
|
|
235
|
-
|
|
236
|
-
|
|
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 new Tag(Fr.random());
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
const index = await this.#getIndexToUseForSecret(extendedSecret);
|
|
223
|
+
this.logger.debug(
|
|
237
224
|
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
238
225
|
);
|
|
239
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
226
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
240
227
|
|
|
241
|
-
return Tag.compute({
|
|
228
|
+
return Tag.compute({ extendedSecret, index });
|
|
242
229
|
}
|
|
243
230
|
|
|
244
|
-
async #
|
|
231
|
+
async #calculateExtendedDirectionalAppTaggingSecret(
|
|
245
232
|
contractAddress: AztecAddress,
|
|
246
233
|
sender: AztecAddress,
|
|
247
234
|
recipient: AztecAddress,
|
|
248
235
|
) {
|
|
249
|
-
const senderCompleteAddress = await this.
|
|
236
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
250
237
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
251
|
-
return
|
|
238
|
+
return ExtendedDirectionalAppTaggingSecret.compute(
|
|
252
239
|
senderCompleteAddress,
|
|
253
240
|
senderIvsk,
|
|
254
241
|
recipient,
|
|
@@ -257,7 +244,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
257
244
|
);
|
|
258
245
|
}
|
|
259
246
|
|
|
260
|
-
async #getIndexToUseForSecret(secret:
|
|
247
|
+
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
|
|
261
248
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
262
249
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
263
250
|
|
|
@@ -267,13 +254,11 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
267
254
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
268
255
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
269
256
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
270
|
-
const anchorBlockHash = L2BlockHash.fromField(await this.anchorBlockHeader.hash());
|
|
271
257
|
await syncSenderTaggingIndexes(
|
|
272
258
|
secret,
|
|
273
|
-
this.contractAddress,
|
|
274
259
|
this.aztecNode,
|
|
275
260
|
this.senderTaggingStore,
|
|
276
|
-
|
|
261
|
+
await this.anchorBlockHeader.hash(),
|
|
277
262
|
this.jobId,
|
|
278
263
|
);
|
|
279
264
|
|
|
@@ -289,7 +274,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
289
274
|
* @param values - Values to store.
|
|
290
275
|
* @returns The hash of the values.
|
|
291
276
|
*/
|
|
292
|
-
public
|
|
277
|
+
public setHashPreimage(values: Fr[], hash: Fr) {
|
|
293
278
|
return this.executionCache.store(values, hash);
|
|
294
279
|
}
|
|
295
280
|
|
|
@@ -298,7 +283,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
298
283
|
* @param hash - Hash of the values.
|
|
299
284
|
* @returns The values.
|
|
300
285
|
*/
|
|
301
|
-
public
|
|
286
|
+
public getHashPreimage(hash: Fr): Promise<Fr[]> {
|
|
302
287
|
const preimage = this.executionCache.getPreimage(hash);
|
|
303
288
|
if (!preimage) {
|
|
304
289
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -306,12 +291,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
306
291
|
return Promise.resolve(preimage);
|
|
307
292
|
}
|
|
308
293
|
|
|
309
|
-
override async
|
|
294
|
+
override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
|
|
310
295
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
311
296
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
312
297
|
// in the current transaction.
|
|
313
298
|
|
|
314
|
-
this.
|
|
299
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
315
300
|
contractAddress: this.contractAddress,
|
|
316
301
|
});
|
|
317
302
|
|
|
@@ -319,7 +304,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
319
304
|
|
|
320
305
|
return (
|
|
321
306
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
322
|
-
(await super.
|
|
307
|
+
(await super.doesNullifierExist(innerNullifier))
|
|
323
308
|
);
|
|
324
309
|
}
|
|
325
310
|
|
|
@@ -344,7 +329,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
344
329
|
* @param status - The status of notes to fetch.
|
|
345
330
|
* @returns Array of note data.
|
|
346
331
|
*/
|
|
347
|
-
public override async
|
|
332
|
+
public override async getNotes(
|
|
348
333
|
owner: AztecAddress | undefined,
|
|
349
334
|
storageSlot: Fr,
|
|
350
335
|
numSelects: number,
|
|
@@ -366,7 +351,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
366
351
|
|
|
367
352
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
368
353
|
|
|
369
|
-
const noteService = new NoteService(this.noteStore, this.aztecNode, this.
|
|
354
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
370
355
|
const dbNotes = await noteService.getNotes(
|
|
371
356
|
this.callContext.contractAddress,
|
|
372
357
|
owner,
|
|
@@ -390,7 +375,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
390
375
|
offset,
|
|
391
376
|
});
|
|
392
377
|
|
|
393
|
-
this.
|
|
378
|
+
this.logger.debug(
|
|
394
379
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
395
380
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
396
381
|
.join(', ')}`,
|
|
@@ -410,7 +395,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
410
395
|
* @param noteHash - A hash of the new note.
|
|
411
396
|
* @returns
|
|
412
397
|
*/
|
|
413
|
-
public
|
|
398
|
+
public notifyCreatedNote(
|
|
414
399
|
owner: AztecAddress,
|
|
415
400
|
storageSlot: Fr,
|
|
416
401
|
randomness: Fr,
|
|
@@ -419,7 +404,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
419
404
|
noteHash: Fr,
|
|
420
405
|
counter: number,
|
|
421
406
|
) {
|
|
422
|
-
this.
|
|
407
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
423
408
|
contractAddress: this.callContext.contractAddress,
|
|
424
409
|
storageSlot,
|
|
425
410
|
randomness,
|
|
@@ -451,7 +436,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
451
436
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
452
437
|
* @param noteHash - A hash of the new note.
|
|
453
438
|
*/
|
|
454
|
-
public async
|
|
439
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
455
440
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
456
441
|
this.callContext.contractAddress,
|
|
457
442
|
innerNullifier,
|
|
@@ -468,19 +453,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
468
453
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
469
454
|
* @param noteHash - A hash of the new note.
|
|
470
455
|
*/
|
|
471
|
-
public
|
|
472
|
-
this.
|
|
456
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
457
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
473
458
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
474
459
|
}
|
|
475
460
|
|
|
476
461
|
/**
|
|
477
|
-
* Check if a nullifier has been emitted in the same transaction, i.e. if
|
|
462
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
|
|
478
463
|
* called for this inner nullifier from the contract with the specified address.
|
|
479
464
|
* @param innerNullifier - The inner nullifier to check.
|
|
480
465
|
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
481
466
|
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
482
467
|
*/
|
|
483
|
-
public async
|
|
468
|
+
public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
484
469
|
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
485
470
|
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
486
471
|
return Promise.resolve(isNullifierPending);
|
|
@@ -493,10 +478,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
493
478
|
* @param log - The contract class log to be emitted.
|
|
494
479
|
* @param counter - The contract class log's counter.
|
|
495
480
|
*/
|
|
496
|
-
public
|
|
481
|
+
public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
|
|
497
482
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
498
483
|
const text = log.toBuffer().toString('hex');
|
|
499
|
-
this.
|
|
484
|
+
this.logger.verbose(
|
|
500
485
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
501
486
|
);
|
|
502
487
|
}
|
|
@@ -522,7 +507,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
522
507
|
* @param isStaticCall - Whether the call is a static call.
|
|
523
508
|
* @returns The execution result.
|
|
524
509
|
*/
|
|
525
|
-
async
|
|
510
|
+
async callPrivateFunction(
|
|
526
511
|
targetContractAddress: AztecAddress,
|
|
527
512
|
functionSelector: FunctionSelector,
|
|
528
513
|
argsHash: Fr,
|
|
@@ -536,19 +521,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
536
521
|
}
|
|
537
522
|
|
|
538
523
|
const simulatorSetupTimer = new Timer();
|
|
539
|
-
this.
|
|
524
|
+
this.logger.debug(
|
|
540
525
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
541
526
|
);
|
|
542
527
|
|
|
543
528
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
544
529
|
|
|
545
|
-
await ensureContractSynced(
|
|
530
|
+
await this.contractSyncService.ensureContractSynced(
|
|
546
531
|
targetContractAddress,
|
|
547
532
|
functionSelector,
|
|
548
533
|
this.utilityExecutor,
|
|
549
|
-
this.aztecNode,
|
|
550
|
-
this.contractStore,
|
|
551
534
|
this.anchorBlockHeader,
|
|
535
|
+
this.jobId,
|
|
536
|
+
this.scopes,
|
|
552
537
|
);
|
|
553
538
|
|
|
554
539
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
@@ -560,41 +545,42 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
560
545
|
|
|
561
546
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
562
547
|
|
|
563
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
548
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
564
549
|
argsHash,
|
|
565
|
-
derivedTxContext,
|
|
566
|
-
derivedCallContext,
|
|
567
|
-
this.anchorBlockHeader,
|
|
568
|
-
this.utilityExecutor,
|
|
569
|
-
this.authWitnesses,
|
|
570
|
-
this.capsules,
|
|
571
|
-
this.executionCache,
|
|
572
|
-
this.noteCache,
|
|
573
|
-
this.taggingIndexCache,
|
|
574
|
-
this.contractStore,
|
|
575
|
-
this.noteStore,
|
|
576
|
-
this.keyStore,
|
|
577
|
-
this.addressStore,
|
|
578
|
-
this.aztecNode,
|
|
579
|
-
this.
|
|
580
|
-
this.
|
|
581
|
-
this.
|
|
582
|
-
this.
|
|
583
|
-
this.
|
|
584
|
-
this.
|
|
585
|
-
this.
|
|
586
|
-
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,
|
|
587
573
|
sideEffectCounter,
|
|
588
|
-
this.
|
|
589
|
-
this.scopes,
|
|
590
|
-
this.senderForTags,
|
|
591
|
-
this.simulator
|
|
592
|
-
);
|
|
574
|
+
log: this.logger,
|
|
575
|
+
scopes: this.scopes,
|
|
576
|
+
senderForTags: this.senderForTags,
|
|
577
|
+
simulator: this.simulator!,
|
|
578
|
+
});
|
|
593
579
|
|
|
594
580
|
const setupTime = simulatorSetupTimer.ms();
|
|
595
581
|
|
|
596
582
|
const childExecutionResult = await executePrivateFunction(
|
|
597
|
-
this.simulator
|
|
583
|
+
this.simulator!,
|
|
598
584
|
privateExecutionOracle,
|
|
599
585
|
targetArtifact,
|
|
600
586
|
targetContractAddress,
|
|
@@ -620,7 +606,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
620
606
|
};
|
|
621
607
|
}
|
|
622
608
|
|
|
623
|
-
|
|
609
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
610
|
+
public assertValidPublicCalldata(calldataHash: Fr) {
|
|
624
611
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
625
612
|
if (!calldata) {
|
|
626
613
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -630,47 +617,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
630
617
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
631
618
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
632
619
|
}
|
|
633
|
-
}
|
|
634
|
-
|
|
635
|
-
/**
|
|
636
|
-
* Verify relevant information when a public function is enqueued.
|
|
637
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
638
|
-
* @param calldataHash - The hash of the function selector and arguments.
|
|
639
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
640
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
641
|
-
*/
|
|
642
|
-
public privateNotifyEnqueuedPublicFunctionCall(
|
|
643
|
-
_targetContractAddress: AztecAddress,
|
|
644
|
-
calldataHash: Fr,
|
|
645
|
-
_sideEffectCounter: number,
|
|
646
|
-
_isStaticCall: boolean,
|
|
647
|
-
) {
|
|
648
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
649
|
-
return Promise.resolve();
|
|
650
|
-
}
|
|
651
|
-
|
|
652
|
-
/**
|
|
653
|
-
* Verify relevant information when a public teardown function is set.
|
|
654
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
655
|
-
* @param argsHash - The arguments hash to pass to the function.
|
|
656
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
657
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
658
|
-
*/
|
|
659
|
-
public privateNotifySetPublicTeardownFunctionCall(
|
|
660
|
-
_targetContractAddress: AztecAddress,
|
|
661
|
-
calldataHash: Fr,
|
|
662
|
-
_sideEffectCounter: number,
|
|
663
|
-
_isStaticCall: boolean,
|
|
664
|
-
) {
|
|
665
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
666
620
|
return Promise.resolve();
|
|
667
621
|
}
|
|
668
622
|
|
|
669
|
-
public
|
|
623
|
+
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
670
624
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
671
625
|
}
|
|
672
626
|
|
|
673
|
-
public
|
|
627
|
+
public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
674
628
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
675
629
|
}
|
|
676
630
|
|
|
@@ -697,9 +651,4 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
697
651
|
public getDebugFunctionName() {
|
|
698
652
|
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
699
653
|
}
|
|
700
|
-
|
|
701
|
-
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|
|
702
|
-
this.offchainEffects.push({ data });
|
|
703
|
-
return Promise.resolve();
|
|
704
|
-
}
|
|
705
654
|
}
|