@aztec/pxe 0.0.1-commit.0b941701 → 0.0.1-commit.10bd49492
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/access_scopes.d.ts +9 -0
- package/dest/access_scopes.d.ts.map +1 -0
- package/dest/access_scopes.js +6 -0
- package/dest/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 +11 -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 +57 -30
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +181 -73
- 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 +2 -3
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +5 -4
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
- 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 +1 -3
- package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/message_tx_context.js +57 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +2 -4
- 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 +3 -5
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +50 -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 +52 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +44 -44
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +170 -110
- package/dest/contract_function_simulator/oracle/private_execution.js +3 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +58 -72
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +104 -77
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +82 -52
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +153 -96
- package/dest/contract_logging.d.ts +22 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +23 -0
- package/dest/contract_sync/contract_sync_service.d.ts +43 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +97 -0
- package/dest/contract_sync/helpers.d.ts +29 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/{index.js → helpers.js} +13 -12
- 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 +4 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +3 -0
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +21 -7
- package/dest/entrypoints/client/lazy/index.d.ts +4 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +3 -0
- package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +22 -8
- package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +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 +1 -1
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +28 -9
- package/dest/events/event_service.d.ts +4 -5
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +5 -6
- package/dest/job_coordinator/job_coordinator.d.ts +3 -2
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
- package/dest/job_coordinator/job_coordinator.js +3 -2
- package/dest/logs/log_service.d.ts +7 -5
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +19 -29
- 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 -7
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +9 -9
- package/dest/notes_filter.d.ts +25 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +3 -3
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
- package/dest/private_kernel/hints/index.d.ts +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 +72 -24
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +115 -72
- package/dest/storage/address_store/address_store.d.ts +1 -1
- package/dest/storage/address_store/address_store.d.ts.map +1 -1
- package/dest/storage/address_store/address_store.js +12 -11
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
- package/dest/storage/anchor_block_store/anchor_block_store.js +8 -1
- package/dest/storage/capsule_store/capsule_store.js +6 -8
- 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/access_scopes.ts +9 -0
- package/src/block_synchronizer/block_synchronizer.ts +23 -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 +332 -131
- 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 +8 -5
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
- package/src/contract_function_simulator/noir-structs/message_tx_context.ts +55 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -6
- package/src/contract_function_simulator/oracle/interfaces.ts +61 -62
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +77 -0
- package/src/contract_function_simulator/oracle/oracle.ts +182 -148
- package/src/contract_function_simulator/oracle/private_execution.ts +3 -3
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +131 -172
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +238 -112
- package/src/contract_logging.ts +39 -0
- package/src/contract_sync/contract_sync_service.ts +152 -0
- package/src/contract_sync/{index.ts → helpers.ts} +21 -21
- package/src/debug/pxe_debug_utils.ts +63 -19
- package/src/entrypoints/client/bundle/index.ts +3 -0
- package/src/entrypoints/client/bundle/utils.ts +16 -15
- package/src/entrypoints/client/lazy/index.ts +3 -0
- package/src/entrypoints/client/lazy/utils.ts +17 -15
- package/src/entrypoints/pxe_creation_options.ts +2 -1
- package/src/entrypoints/server/index.ts +3 -1
- package/src/entrypoints/server/utils.ts +22 -26
- package/src/events/event_service.ts +4 -6
- package/src/job_coordinator/job_coordinator.ts +4 -3
- package/src/logs/log_service.ts +31 -38
- package/src/messages/message_context_service.ts +45 -0
- package/src/notes/note_service.ts +9 -10
- package/src/notes_filter.ts +26 -0
- package/src/oracle_version.ts +3 -3
- package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
- package/src/private_kernel/hints/index.ts +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 +209 -124
- package/src/storage/address_store/address_store.ts +15 -15
- package/src/storage/anchor_block_store/anchor_block_store.ts +8 -0
- package/src/storage/capsule_store/capsule_store.ts +8 -8
- 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 +169 -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.loadFromExecutionCache(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;
|
|
@@ -104,7 +104,7 @@ export async function executePrivateFunction(
|
|
|
104
104
|
noteHashNullifierCounterMap,
|
|
105
105
|
rawReturnValues,
|
|
106
106
|
offchainEffects,
|
|
107
|
-
|
|
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,34 +11,23 @@ import {
|
|
|
12
11
|
type NoteSelector,
|
|
13
12
|
countArgumentsSize,
|
|
14
13
|
} from '@aztec/stdlib/abi';
|
|
15
|
-
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
16
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
17
15
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
18
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
19
16
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
20
|
-
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,
|
|
30
25
|
type TxContext,
|
|
31
26
|
} from '@aztec/stdlib/tx';
|
|
32
27
|
|
|
33
|
-
import {
|
|
28
|
+
import type { AccessScopes } from '../../access_scopes.js';
|
|
29
|
+
import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
|
|
34
30
|
import { NoteService } from '../../notes/note_service.js';
|
|
35
|
-
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
36
|
-
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
37
|
-
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
38
|
-
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
39
|
-
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
40
|
-
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
41
|
-
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
42
|
-
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
43
31
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
44
32
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
45
33
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
@@ -48,7 +36,25 @@ import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
|
48
36
|
import { pickNotes } from '../pick_notes.js';
|
|
49
37
|
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
50
38
|
import { executePrivateFunction } from './private_execution.js';
|
|
51
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
39
|
+
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
40
|
+
|
|
41
|
+
/** Args for PrivateExecutionOracle constructor. */
|
|
42
|
+
export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
|
|
43
|
+
argsHash: Fr;
|
|
44
|
+
txContext: TxContext;
|
|
45
|
+
callContext: CallContext;
|
|
46
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
47
|
+
utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
48
|
+
executionCache: HashedValuesCache;
|
|
49
|
+
noteCache: ExecutionNoteCache;
|
|
50
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
51
|
+
senderTaggingStore: SenderTaggingStore;
|
|
52
|
+
contractSyncService: ContractSyncService;
|
|
53
|
+
totalPublicCalldataCount?: number;
|
|
54
|
+
sideEffectCounter?: number;
|
|
55
|
+
senderForTags?: AztecAddress;
|
|
56
|
+
simulator?: CircuitSimulator;
|
|
57
|
+
};
|
|
52
58
|
|
|
53
59
|
/**
|
|
54
60
|
* The execution oracle for the private part of a transaction.
|
|
@@ -70,58 +76,39 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
70
76
|
private offchainEffects: { data: Fr[] }[] = [];
|
|
71
77
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
72
78
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
super(
|
|
107
|
-
callContext.contractAddress,
|
|
108
|
-
authWitnesses,
|
|
109
|
-
capsules,
|
|
110
|
-
anchorBlockHeader,
|
|
111
|
-
contractStore,
|
|
112
|
-
noteStore,
|
|
113
|
-
keyStore,
|
|
114
|
-
addressStore,
|
|
115
|
-
aztecNode,
|
|
116
|
-
anchorBlockStore,
|
|
117
|
-
recipientTaggingStore,
|
|
118
|
-
senderAddressBookStore,
|
|
119
|
-
capsuleStore,
|
|
120
|
-
privateEventStore,
|
|
121
|
-
jobId,
|
|
122
|
-
log,
|
|
123
|
-
scopes,
|
|
124
|
-
);
|
|
79
|
+
private readonly argsHash: Fr;
|
|
80
|
+
private readonly txContext: TxContext;
|
|
81
|
+
private readonly callContext: CallContext;
|
|
82
|
+
private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
83
|
+
private readonly executionCache: HashedValuesCache;
|
|
84
|
+
private readonly noteCache: ExecutionNoteCache;
|
|
85
|
+
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
86
|
+
private readonly senderTaggingStore: SenderTaggingStore;
|
|
87
|
+
private readonly contractSyncService: ContractSyncService;
|
|
88
|
+
private totalPublicCalldataCount: number;
|
|
89
|
+
protected sideEffectCounter: number;
|
|
90
|
+
private senderForTags?: AztecAddress;
|
|
91
|
+
private readonly simulator?: CircuitSimulator;
|
|
92
|
+
|
|
93
|
+
constructor(args: PrivateExecutionOracleArgs) {
|
|
94
|
+
super({
|
|
95
|
+
...args,
|
|
96
|
+
contractAddress: args.callContext.contractAddress,
|
|
97
|
+
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
98
|
+
});
|
|
99
|
+
this.argsHash = args.argsHash;
|
|
100
|
+
this.txContext = args.txContext;
|
|
101
|
+
this.callContext = args.callContext;
|
|
102
|
+
this.utilityExecutor = args.utilityExecutor;
|
|
103
|
+
this.executionCache = args.executionCache;
|
|
104
|
+
this.noteCache = args.noteCache;
|
|
105
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
106
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
107
|
+
this.contractSyncService = args.contractSyncService;
|
|
108
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
109
|
+
this.sideEffectCounter = args.sideEffectCounter ?? 0;
|
|
110
|
+
this.senderForTags = args.senderForTags;
|
|
111
|
+
this.simulator = args.simulator;
|
|
125
112
|
}
|
|
126
113
|
|
|
127
114
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -179,10 +166,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
179
166
|
}
|
|
180
167
|
|
|
181
168
|
/**
|
|
182
|
-
* Returns the
|
|
169
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
183
170
|
*/
|
|
184
|
-
public
|
|
185
|
-
return this.taggingIndexCache.
|
|
171
|
+
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
172
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
186
173
|
}
|
|
187
174
|
|
|
188
175
|
/**
|
|
@@ -202,7 +189,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
202
189
|
* The value persists through nested calls, meaning all calls down the stack will use the same
|
|
203
190
|
* 'senderForTags' value (unless it is replaced).
|
|
204
191
|
*/
|
|
205
|
-
public
|
|
192
|
+
public getSenderForTags(): Promise<AztecAddress | undefined> {
|
|
206
193
|
return Promise.resolve(this.senderForTags);
|
|
207
194
|
}
|
|
208
195
|
|
|
@@ -217,7 +204,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
217
204
|
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
218
205
|
* value (unless it is replaced by another call to this setter).
|
|
219
206
|
*/
|
|
220
|
-
public
|
|
207
|
+
public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
221
208
|
this.senderForTags = senderForTags;
|
|
222
209
|
return Promise.resolve();
|
|
223
210
|
}
|
|
@@ -228,26 +215,30 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
228
215
|
* @param recipient - The address receiving the log
|
|
229
216
|
* @returns An app tag to be used in a log.
|
|
230
217
|
*/
|
|
231
|
-
public async
|
|
232
|
-
const
|
|
218
|
+
public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
|
|
219
|
+
const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
|
|
220
|
+
this.contractAddress,
|
|
221
|
+
sender,
|
|
222
|
+
recipient,
|
|
223
|
+
);
|
|
233
224
|
|
|
234
|
-
const index = await this.#getIndexToUseForSecret(
|
|
235
|
-
this.
|
|
225
|
+
const index = await this.#getIndexToUseForSecret(extendedSecret);
|
|
226
|
+
this.logger.debug(
|
|
236
227
|
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
237
228
|
);
|
|
238
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
229
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
239
230
|
|
|
240
|
-
return Tag.compute({
|
|
231
|
+
return Tag.compute({ extendedSecret, index });
|
|
241
232
|
}
|
|
242
233
|
|
|
243
|
-
async #
|
|
234
|
+
async #calculateExtendedDirectionalAppTaggingSecret(
|
|
244
235
|
contractAddress: AztecAddress,
|
|
245
236
|
sender: AztecAddress,
|
|
246
237
|
recipient: AztecAddress,
|
|
247
238
|
) {
|
|
248
|
-
const senderCompleteAddress = await this.
|
|
239
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
249
240
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
250
|
-
return
|
|
241
|
+
return ExtendedDirectionalAppTaggingSecret.compute(
|
|
251
242
|
senderCompleteAddress,
|
|
252
243
|
senderIvsk,
|
|
253
244
|
recipient,
|
|
@@ -256,7 +247,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
256
247
|
);
|
|
257
248
|
}
|
|
258
249
|
|
|
259
|
-
async #getIndexToUseForSecret(secret:
|
|
250
|
+
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
|
|
260
251
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
261
252
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
262
253
|
|
|
@@ -268,7 +259,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
268
259
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
269
260
|
await syncSenderTaggingIndexes(
|
|
270
261
|
secret,
|
|
271
|
-
this.contractAddress,
|
|
272
262
|
this.aztecNode,
|
|
273
263
|
this.senderTaggingStore,
|
|
274
264
|
await this.anchorBlockHeader.hash(),
|
|
@@ -287,7 +277,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
287
277
|
* @param values - Values to store.
|
|
288
278
|
* @returns The hash of the values.
|
|
289
279
|
*/
|
|
290
|
-
public
|
|
280
|
+
public storeInExecutionCache(values: Fr[], hash: Fr) {
|
|
291
281
|
return this.executionCache.store(values, hash);
|
|
292
282
|
}
|
|
293
283
|
|
|
@@ -296,7 +286,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
296
286
|
* @param hash - Hash of the values.
|
|
297
287
|
* @returns The values.
|
|
298
288
|
*/
|
|
299
|
-
public
|
|
289
|
+
public loadFromExecutionCache(hash: Fr): Promise<Fr[]> {
|
|
300
290
|
const preimage = this.executionCache.getPreimage(hash);
|
|
301
291
|
if (!preimage) {
|
|
302
292
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -304,12 +294,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
304
294
|
return Promise.resolve(preimage);
|
|
305
295
|
}
|
|
306
296
|
|
|
307
|
-
override async
|
|
297
|
+
override async checkNullifierExists(innerNullifier: Fr): Promise<boolean> {
|
|
308
298
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
309
299
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
310
300
|
// in the current transaction.
|
|
311
301
|
|
|
312
|
-
this.
|
|
302
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
313
303
|
contractAddress: this.contractAddress,
|
|
314
304
|
});
|
|
315
305
|
|
|
@@ -317,7 +307,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
317
307
|
|
|
318
308
|
return (
|
|
319
309
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
320
|
-
(await super.
|
|
310
|
+
(await super.checkNullifierExists(innerNullifier))
|
|
321
311
|
);
|
|
322
312
|
}
|
|
323
313
|
|
|
@@ -342,7 +332,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
342
332
|
* @param status - The status of notes to fetch.
|
|
343
333
|
* @returns Array of note data.
|
|
344
334
|
*/
|
|
345
|
-
public override async
|
|
335
|
+
public override async getNotes(
|
|
346
336
|
owner: AztecAddress | undefined,
|
|
347
337
|
storageSlot: Fr,
|
|
348
338
|
numSelects: number,
|
|
@@ -364,7 +354,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
364
354
|
|
|
365
355
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
366
356
|
|
|
367
|
-
const noteService = new NoteService(this.noteStore, this.aztecNode, this.
|
|
357
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
368
358
|
const dbNotes = await noteService.getNotes(
|
|
369
359
|
this.callContext.contractAddress,
|
|
370
360
|
owner,
|
|
@@ -388,7 +378,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
388
378
|
offset,
|
|
389
379
|
});
|
|
390
380
|
|
|
391
|
-
this.
|
|
381
|
+
this.logger.debug(
|
|
392
382
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
393
383
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
394
384
|
.join(', ')}`,
|
|
@@ -408,7 +398,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
408
398
|
* @param noteHash - A hash of the new note.
|
|
409
399
|
* @returns
|
|
410
400
|
*/
|
|
411
|
-
public
|
|
401
|
+
public notifyCreatedNote(
|
|
412
402
|
owner: AztecAddress,
|
|
413
403
|
storageSlot: Fr,
|
|
414
404
|
randomness: Fr,
|
|
@@ -417,7 +407,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
417
407
|
noteHash: Fr,
|
|
418
408
|
counter: number,
|
|
419
409
|
) {
|
|
420
|
-
this.
|
|
410
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
421
411
|
contractAddress: this.callContext.contractAddress,
|
|
422
412
|
storageSlot,
|
|
423
413
|
randomness,
|
|
@@ -449,7 +439,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
449
439
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
450
440
|
* @param noteHash - A hash of the new note.
|
|
451
441
|
*/
|
|
452
|
-
public async
|
|
442
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
453
443
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
454
444
|
this.callContext.contractAddress,
|
|
455
445
|
innerNullifier,
|
|
@@ -466,19 +456,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
466
456
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
467
457
|
* @param noteHash - A hash of the new note.
|
|
468
458
|
*/
|
|
469
|
-
public
|
|
470
|
-
this.
|
|
459
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
460
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
471
461
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
472
462
|
}
|
|
473
463
|
|
|
474
464
|
/**
|
|
475
|
-
* Check if a nullifier has been emitted in the same transaction, i.e. if
|
|
465
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
|
|
476
466
|
* called for this inner nullifier from the contract with the specified address.
|
|
477
467
|
* @param innerNullifier - The inner nullifier to check.
|
|
478
468
|
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
479
469
|
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
480
470
|
*/
|
|
481
|
-
public async
|
|
471
|
+
public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
482
472
|
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
483
473
|
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
484
474
|
return Promise.resolve(isNullifierPending);
|
|
@@ -491,10 +481,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
491
481
|
* @param log - The contract class log to be emitted.
|
|
492
482
|
* @param counter - The contract class log's counter.
|
|
493
483
|
*/
|
|
494
|
-
public
|
|
484
|
+
public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
|
|
495
485
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
496
486
|
const text = log.toBuffer().toString('hex');
|
|
497
|
-
this.
|
|
487
|
+
this.logger.verbose(
|
|
498
488
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
499
489
|
);
|
|
500
490
|
}
|
|
@@ -520,7 +510,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
520
510
|
* @param isStaticCall - Whether the call is a static call.
|
|
521
511
|
* @returns The execution result.
|
|
522
512
|
*/
|
|
523
|
-
async
|
|
513
|
+
async callPrivateFunction(
|
|
524
514
|
targetContractAddress: AztecAddress,
|
|
525
515
|
functionSelector: FunctionSelector,
|
|
526
516
|
argsHash: Fr,
|
|
@@ -534,19 +524,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
534
524
|
}
|
|
535
525
|
|
|
536
526
|
const simulatorSetupTimer = new Timer();
|
|
537
|
-
this.
|
|
527
|
+
this.logger.debug(
|
|
538
528
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
539
529
|
);
|
|
540
530
|
|
|
541
531
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
542
532
|
|
|
543
|
-
await ensureContractSynced(
|
|
533
|
+
await this.contractSyncService.ensureContractSynced(
|
|
544
534
|
targetContractAddress,
|
|
545
535
|
functionSelector,
|
|
546
536
|
this.utilityExecutor,
|
|
547
|
-
this.aztecNode,
|
|
548
|
-
this.contractStore,
|
|
549
537
|
this.anchorBlockHeader,
|
|
538
|
+
this.jobId,
|
|
539
|
+
this.scopes,
|
|
550
540
|
);
|
|
551
541
|
|
|
552
542
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
@@ -558,41 +548,42 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
558
548
|
|
|
559
549
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
560
550
|
|
|
561
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
551
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
562
552
|
argsHash,
|
|
563
|
-
derivedTxContext,
|
|
564
|
-
derivedCallContext,
|
|
565
|
-
this.anchorBlockHeader,
|
|
566
|
-
this.utilityExecutor,
|
|
567
|
-
this.authWitnesses,
|
|
568
|
-
this.capsules,
|
|
569
|
-
this.executionCache,
|
|
570
|
-
this.noteCache,
|
|
571
|
-
this.taggingIndexCache,
|
|
572
|
-
this.contractStore,
|
|
573
|
-
this.noteStore,
|
|
574
|
-
this.keyStore,
|
|
575
|
-
this.addressStore,
|
|
576
|
-
this.aztecNode,
|
|
577
|
-
this.
|
|
578
|
-
this.
|
|
579
|
-
this.
|
|
580
|
-
this.
|
|
581
|
-
this.
|
|
582
|
-
this.
|
|
583
|
-
this.
|
|
584
|
-
this.
|
|
553
|
+
txContext: derivedTxContext,
|
|
554
|
+
callContext: derivedCallContext,
|
|
555
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
556
|
+
utilityExecutor: this.utilityExecutor,
|
|
557
|
+
authWitnesses: this.authWitnesses,
|
|
558
|
+
capsules: this.capsules,
|
|
559
|
+
executionCache: this.executionCache,
|
|
560
|
+
noteCache: this.noteCache,
|
|
561
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
562
|
+
contractStore: this.contractStore,
|
|
563
|
+
noteStore: this.noteStore,
|
|
564
|
+
keyStore: this.keyStore,
|
|
565
|
+
addressStore: this.addressStore,
|
|
566
|
+
aztecNode: this.aztecNode,
|
|
567
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
568
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
569
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
570
|
+
capsuleStore: this.capsuleStore,
|
|
571
|
+
privateEventStore: this.privateEventStore,
|
|
572
|
+
messageContextService: this.messageContextService,
|
|
573
|
+
contractSyncService: this.contractSyncService,
|
|
574
|
+
jobId: this.jobId,
|
|
575
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
585
576
|
sideEffectCounter,
|
|
586
|
-
this.
|
|
587
|
-
this.scopes,
|
|
588
|
-
this.senderForTags,
|
|
589
|
-
this.simulator
|
|
590
|
-
);
|
|
577
|
+
log: this.logger,
|
|
578
|
+
scopes: this.scopes,
|
|
579
|
+
senderForTags: this.senderForTags,
|
|
580
|
+
simulator: this.simulator!,
|
|
581
|
+
});
|
|
591
582
|
|
|
592
583
|
const setupTime = simulatorSetupTimer.ms();
|
|
593
584
|
|
|
594
585
|
const childExecutionResult = await executePrivateFunction(
|
|
595
|
-
this.simulator
|
|
586
|
+
this.simulator!,
|
|
596
587
|
privateExecutionOracle,
|
|
597
588
|
targetArtifact,
|
|
598
589
|
targetContractAddress,
|
|
@@ -618,7 +609,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
618
609
|
};
|
|
619
610
|
}
|
|
620
611
|
|
|
621
|
-
|
|
612
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
613
|
+
public validatePublicCalldata(calldataHash: Fr) {
|
|
622
614
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
623
615
|
if (!calldata) {
|
|
624
616
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -628,47 +620,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
628
620
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
629
621
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
630
622
|
}
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
/**
|
|
634
|
-
* Verify relevant information when a public function is enqueued.
|
|
635
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
636
|
-
* @param calldataHash - The hash of the function selector and arguments.
|
|
637
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
638
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
639
|
-
*/
|
|
640
|
-
public privateNotifyEnqueuedPublicFunctionCall(
|
|
641
|
-
_targetContractAddress: AztecAddress,
|
|
642
|
-
calldataHash: Fr,
|
|
643
|
-
_sideEffectCounter: number,
|
|
644
|
-
_isStaticCall: boolean,
|
|
645
|
-
) {
|
|
646
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
647
|
-
return Promise.resolve();
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
/**
|
|
651
|
-
* Verify relevant information when a public teardown function is set.
|
|
652
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
653
|
-
* @param argsHash - The arguments hash to pass to the function.
|
|
654
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
655
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
656
|
-
*/
|
|
657
|
-
public privateNotifySetPublicTeardownFunctionCall(
|
|
658
|
-
_targetContractAddress: AztecAddress,
|
|
659
|
-
calldataHash: Fr,
|
|
660
|
-
_sideEffectCounter: number,
|
|
661
|
-
_isStaticCall: boolean,
|
|
662
|
-
) {
|
|
663
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
664
623
|
return Promise.resolve();
|
|
665
624
|
}
|
|
666
625
|
|
|
667
|
-
public
|
|
626
|
+
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
668
627
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
669
628
|
}
|
|
670
629
|
|
|
671
|
-
public
|
|
630
|
+
public inRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
672
631
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
673
632
|
}
|
|
674
633
|
|
|
@@ -696,7 +655,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
696
655
|
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
697
656
|
}
|
|
698
657
|
|
|
699
|
-
public
|
|
658
|
+
public emitOffchainEffect(data: Fr[]): Promise<void> {
|
|
700
659
|
this.offchainEffects.push({ data });
|
|
701
660
|
return Promise.resolve();
|
|
702
661
|
}
|