@aztec/pxe 0.0.1-commit.e3c1de76 → 0.0.1-commit.e588bc7e5
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/block_synchronizer/block_synchronizer.d.ts +4 -2
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +13 -1
- 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 -29
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +201 -72
- 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 +3 -5
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -9
- 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/note_validation_request.d.ts +3 -6
- 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 +5 -10
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +50 -45
- 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 +38 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +64 -44
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +211 -109
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +53 -78
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +108 -86
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +100 -55
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +238 -121
- 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} +19 -13
- package/dest/debug/pxe_debug_utils.d.ts +14 -10
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +16 -15
- 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 +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +9 -1
- 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 +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +9 -1
- package/dest/entrypoints/server/index.d.ts +3 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +2 -1
- package/dest/entrypoints/server/utils.js +9 -1
- package/dest/events/event_service.d.ts +3 -2
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +16 -4
- package/dest/logs/log_service.d.ts +6 -6
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +39 -44
- 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 +4 -4
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +17 -7
- 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 +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 +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +19 -11
- package/dest/private_kernel/private_kernel_oracle.d.ts +6 -2
- 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 +126 -74
- 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 +33 -28
- 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 +145 -69
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +3 -3
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +6 -4
- 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/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 +141 -115
- package/dest/tagging/get_all_logs_by_tags.d.ts +1 -1
- 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 +4 -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 -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 +6 -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 +12 -11
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -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 +20 -10
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -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 +36 -24
- package/package.json +25 -16
- package/src/block_synchronizer/block_synchronizer.ts +12 -0
- 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/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 -8
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -9
- package/src/contract_function_simulator/oracle/interfaces.ts +69 -60
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +98 -0
- package/src/contract_function_simulator/oracle/oracle.ts +245 -144
- package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +134 -179
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +403 -138
- 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} +22 -22
- package/src/debug/pxe_debug_utils.ts +48 -18
- package/src/entrypoints/client/bundle/index.ts +2 -0
- package/src/entrypoints/client/bundle/utils.ts +9 -1
- package/src/entrypoints/client/lazy/index.ts +2 -0
- package/src/entrypoints/client/lazy/utils.ts +9 -1
- package/src/entrypoints/server/index.ts +2 -1
- package/src/entrypoints/server/utils.ts +7 -7
- package/src/events/event_service.ts +17 -4
- package/src/logs/log_service.ts +74 -66
- package/src/messages/message_context_service.ts +44 -0
- package/src/notes/note_service.ts +19 -8
- package/src/notes_filter.ts +24 -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 +19 -12
- package/src/private_kernel/private_kernel_oracle.ts +7 -7
- package/src/pxe.ts +229 -124
- package/src/storage/capsule_store/capsule_service.ts +90 -0
- package/src/storage/capsule_store/capsule_store.ts +34 -26
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/contract_store/contract_store.ts +174 -75
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +9 -5
- package/src/storage/tagging_store/recipient_tagging_store.ts +9 -5
- package/src/storage/tagging_store/sender_tagging_store.ts +185 -138
- package/src/tagging/get_all_logs_by_tags.ts +28 -4
- package/src/tagging/index.ts +2 -2
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +7 -10
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +10 -15
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +23 -10
- 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 +27 -26
- 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,33 +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
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 { ensureContractSynced } from '../../contract_sync/index.js';
|
|
34
28
|
import { NoteService } from '../../notes/note_service.js';
|
|
35
|
-
import type { AddressStore } from '../../storage/address_store/address_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';
|
|
@@ -47,7 +34,24 @@ 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
36
|
import { executePrivateFunction } from './private_execution.js';
|
|
50
|
-
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
|
+
};
|
|
51
55
|
|
|
52
56
|
/**
|
|
53
57
|
* The execution oracle for the private part of a transaction.
|
|
@@ -66,59 +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
|
-
) {
|
|
104
|
-
super(
|
|
105
|
-
callContext.contractAddress,
|
|
106
|
-
authWitnesses,
|
|
107
|
-
capsules,
|
|
108
|
-
anchorBlockHeader,
|
|
109
|
-
contractStore,
|
|
110
|
-
noteStore,
|
|
111
|
-
keyStore,
|
|
112
|
-
addressStore,
|
|
113
|
-
aztecNode,
|
|
114
|
-
recipientTaggingStore,
|
|
115
|
-
senderAddressBookStore,
|
|
116
|
-
capsuleStore,
|
|
117
|
-
privateEventStore,
|
|
118
|
-
jobId,
|
|
119
|
-
log,
|
|
120
|
-
scopes,
|
|
121
|
-
);
|
|
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;
|
|
122
106
|
}
|
|
123
107
|
|
|
124
108
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -169,17 +153,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
169
153
|
}
|
|
170
154
|
|
|
171
155
|
/**
|
|
172
|
-
*
|
|
156
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
173
157
|
*/
|
|
174
|
-
public
|
|
175
|
-
return this.
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
180
|
-
*/
|
|
181
|
-
public getUsedPreTags(): PreTag[] {
|
|
182
|
-
return this.taggingIndexCache.getUsedPreTags();
|
|
158
|
+
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
159
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
183
160
|
}
|
|
184
161
|
|
|
185
162
|
/**
|
|
@@ -199,7 +176,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
199
176
|
* The value persists through nested calls, meaning all calls down the stack will use the same
|
|
200
177
|
* 'senderForTags' value (unless it is replaced).
|
|
201
178
|
*/
|
|
202
|
-
public
|
|
179
|
+
public getSenderForTags(): Promise<AztecAddress | undefined> {
|
|
203
180
|
return Promise.resolve(this.senderForTags);
|
|
204
181
|
}
|
|
205
182
|
|
|
@@ -214,7 +191,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
214
191
|
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
215
192
|
* value (unless it is replaced by another call to this setter).
|
|
216
193
|
*/
|
|
217
|
-
public
|
|
194
|
+
public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
218
195
|
this.senderForTags = senderForTags;
|
|
219
196
|
return Promise.resolve();
|
|
220
197
|
}
|
|
@@ -225,26 +202,40 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
225
202
|
* @param recipient - The address receiving the log
|
|
226
203
|
* @returns An app tag to be used in a log.
|
|
227
204
|
*/
|
|
228
|
-
public async
|
|
229
|
-
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
|
+
);
|
|
230
211
|
|
|
231
|
-
|
|
232
|
-
|
|
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(
|
|
233
224
|
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
234
225
|
);
|
|
235
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
226
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
236
227
|
|
|
237
|
-
return Tag.compute({
|
|
228
|
+
return Tag.compute({ extendedSecret, index });
|
|
238
229
|
}
|
|
239
230
|
|
|
240
|
-
async #
|
|
231
|
+
async #calculateExtendedDirectionalAppTaggingSecret(
|
|
241
232
|
contractAddress: AztecAddress,
|
|
242
233
|
sender: AztecAddress,
|
|
243
234
|
recipient: AztecAddress,
|
|
244
235
|
) {
|
|
245
|
-
const senderCompleteAddress = await this.
|
|
236
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
246
237
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
247
|
-
return
|
|
238
|
+
return ExtendedDirectionalAppTaggingSecret.compute(
|
|
248
239
|
senderCompleteAddress,
|
|
249
240
|
senderIvsk,
|
|
250
241
|
recipient,
|
|
@@ -253,7 +244,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
253
244
|
);
|
|
254
245
|
}
|
|
255
246
|
|
|
256
|
-
async #getIndexToUseForSecret(secret:
|
|
247
|
+
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
|
|
257
248
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
258
249
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
259
250
|
|
|
@@ -265,7 +256,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
265
256
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
266
257
|
await syncSenderTaggingIndexes(
|
|
267
258
|
secret,
|
|
268
|
-
this.contractAddress,
|
|
269
259
|
this.aztecNode,
|
|
270
260
|
this.senderTaggingStore,
|
|
271
261
|
await this.anchorBlockHeader.hash(),
|
|
@@ -284,7 +274,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
284
274
|
* @param values - Values to store.
|
|
285
275
|
* @returns The hash of the values.
|
|
286
276
|
*/
|
|
287
|
-
public
|
|
277
|
+
public setHashPreimage(values: Fr[], hash: Fr) {
|
|
288
278
|
return this.executionCache.store(values, hash);
|
|
289
279
|
}
|
|
290
280
|
|
|
@@ -293,7 +283,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
293
283
|
* @param hash - Hash of the values.
|
|
294
284
|
* @returns The values.
|
|
295
285
|
*/
|
|
296
|
-
public
|
|
286
|
+
public getHashPreimage(hash: Fr): Promise<Fr[]> {
|
|
297
287
|
const preimage = this.executionCache.getPreimage(hash);
|
|
298
288
|
if (!preimage) {
|
|
299
289
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -301,12 +291,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
301
291
|
return Promise.resolve(preimage);
|
|
302
292
|
}
|
|
303
293
|
|
|
304
|
-
override async
|
|
294
|
+
override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
|
|
305
295
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
306
296
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
307
297
|
// in the current transaction.
|
|
308
298
|
|
|
309
|
-
this.
|
|
299
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
310
300
|
contractAddress: this.contractAddress,
|
|
311
301
|
});
|
|
312
302
|
|
|
@@ -314,7 +304,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
314
304
|
|
|
315
305
|
return (
|
|
316
306
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
317
|
-
(await super.
|
|
307
|
+
(await super.doesNullifierExist(innerNullifier))
|
|
318
308
|
);
|
|
319
309
|
}
|
|
320
310
|
|
|
@@ -339,7 +329,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
339
329
|
* @param status - The status of notes to fetch.
|
|
340
330
|
* @returns Array of note data.
|
|
341
331
|
*/
|
|
342
|
-
public override async
|
|
332
|
+
public override async getNotes(
|
|
343
333
|
owner: AztecAddress | undefined,
|
|
344
334
|
storageSlot: Fr,
|
|
345
335
|
numSelects: number,
|
|
@@ -385,7 +375,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
385
375
|
offset,
|
|
386
376
|
});
|
|
387
377
|
|
|
388
|
-
this.
|
|
378
|
+
this.logger.debug(
|
|
389
379
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
390
380
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
391
381
|
.join(', ')}`,
|
|
@@ -405,7 +395,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
405
395
|
* @param noteHash - A hash of the new note.
|
|
406
396
|
* @returns
|
|
407
397
|
*/
|
|
408
|
-
public
|
|
398
|
+
public notifyCreatedNote(
|
|
409
399
|
owner: AztecAddress,
|
|
410
400
|
storageSlot: Fr,
|
|
411
401
|
randomness: Fr,
|
|
@@ -414,7 +404,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
414
404
|
noteHash: Fr,
|
|
415
405
|
counter: number,
|
|
416
406
|
) {
|
|
417
|
-
this.
|
|
407
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
418
408
|
contractAddress: this.callContext.contractAddress,
|
|
419
409
|
storageSlot,
|
|
420
410
|
randomness,
|
|
@@ -446,7 +436,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
446
436
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
447
437
|
* @param noteHash - A hash of the new note.
|
|
448
438
|
*/
|
|
449
|
-
public async
|
|
439
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
450
440
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
451
441
|
this.callContext.contractAddress,
|
|
452
442
|
innerNullifier,
|
|
@@ -463,19 +453,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
463
453
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
464
454
|
* @param noteHash - A hash of the new note.
|
|
465
455
|
*/
|
|
466
|
-
public
|
|
467
|
-
this.
|
|
456
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
457
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
468
458
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
469
459
|
}
|
|
470
460
|
|
|
471
461
|
/**
|
|
472
|
-
* 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
|
|
473
463
|
* called for this inner nullifier from the contract with the specified address.
|
|
474
464
|
* @param innerNullifier - The inner nullifier to check.
|
|
475
465
|
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
476
466
|
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
477
467
|
*/
|
|
478
|
-
public async
|
|
468
|
+
public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
479
469
|
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
480
470
|
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
481
471
|
return Promise.resolve(isNullifierPending);
|
|
@@ -488,10 +478,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
488
478
|
* @param log - The contract class log to be emitted.
|
|
489
479
|
* @param counter - The contract class log's counter.
|
|
490
480
|
*/
|
|
491
|
-
public
|
|
481
|
+
public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
|
|
492
482
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
493
483
|
const text = log.toBuffer().toString('hex');
|
|
494
|
-
this.
|
|
484
|
+
this.logger.verbose(
|
|
495
485
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
496
486
|
);
|
|
497
487
|
}
|
|
@@ -517,7 +507,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
517
507
|
* @param isStaticCall - Whether the call is a static call.
|
|
518
508
|
* @returns The execution result.
|
|
519
509
|
*/
|
|
520
|
-
async
|
|
510
|
+
async callPrivateFunction(
|
|
521
511
|
targetContractAddress: AztecAddress,
|
|
522
512
|
functionSelector: FunctionSelector,
|
|
523
513
|
argsHash: Fr,
|
|
@@ -531,19 +521,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
531
521
|
}
|
|
532
522
|
|
|
533
523
|
const simulatorSetupTimer = new Timer();
|
|
534
|
-
this.
|
|
524
|
+
this.logger.debug(
|
|
535
525
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
536
526
|
);
|
|
537
527
|
|
|
538
528
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
539
529
|
|
|
540
|
-
await ensureContractSynced(
|
|
530
|
+
await this.contractSyncService.ensureContractSynced(
|
|
541
531
|
targetContractAddress,
|
|
542
532
|
functionSelector,
|
|
543
533
|
this.utilityExecutor,
|
|
544
|
-
this.aztecNode,
|
|
545
|
-
this.contractStore,
|
|
546
534
|
this.anchorBlockHeader,
|
|
535
|
+
this.jobId,
|
|
536
|
+
this.scopes,
|
|
547
537
|
);
|
|
548
538
|
|
|
549
539
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
@@ -555,40 +545,42 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
555
545
|
|
|
556
546
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
557
547
|
|
|
558
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
548
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
559
549
|
argsHash,
|
|
560
|
-
derivedTxContext,
|
|
561
|
-
derivedCallContext,
|
|
562
|
-
this.anchorBlockHeader,
|
|
563
|
-
this.utilityExecutor,
|
|
564
|
-
this.authWitnesses,
|
|
565
|
-
this.capsules,
|
|
566
|
-
this.executionCache,
|
|
567
|
-
this.noteCache,
|
|
568
|
-
this.taggingIndexCache,
|
|
569
|
-
this.contractStore,
|
|
570
|
-
this.noteStore,
|
|
571
|
-
this.keyStore,
|
|
572
|
-
this.addressStore,
|
|
573
|
-
this.aztecNode,
|
|
574
|
-
this.senderTaggingStore,
|
|
575
|
-
this.recipientTaggingStore,
|
|
576
|
-
this.senderAddressBookStore,
|
|
577
|
-
this.
|
|
578
|
-
this.privateEventStore,
|
|
579
|
-
this.
|
|
580
|
-
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,
|
|
581
573
|
sideEffectCounter,
|
|
582
|
-
this.
|
|
583
|
-
this.scopes,
|
|
584
|
-
this.senderForTags,
|
|
585
|
-
this.simulator
|
|
586
|
-
);
|
|
574
|
+
log: this.logger,
|
|
575
|
+
scopes: this.scopes,
|
|
576
|
+
senderForTags: this.senderForTags,
|
|
577
|
+
simulator: this.simulator!,
|
|
578
|
+
});
|
|
587
579
|
|
|
588
580
|
const setupTime = simulatorSetupTimer.ms();
|
|
589
581
|
|
|
590
582
|
const childExecutionResult = await executePrivateFunction(
|
|
591
|
-
this.simulator
|
|
583
|
+
this.simulator!,
|
|
592
584
|
privateExecutionOracle,
|
|
593
585
|
targetArtifact,
|
|
594
586
|
targetContractAddress,
|
|
@@ -614,7 +606,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
614
606
|
};
|
|
615
607
|
}
|
|
616
608
|
|
|
617
|
-
|
|
609
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
610
|
+
public assertValidPublicCalldata(calldataHash: Fr) {
|
|
618
611
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
619
612
|
if (!calldata) {
|
|
620
613
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -624,47 +617,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
624
617
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
625
618
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
626
619
|
}
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
/**
|
|
630
|
-
* Verify relevant information when a public function is enqueued.
|
|
631
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
632
|
-
* @param calldataHash - The hash of the function selector and arguments.
|
|
633
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
634
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
635
|
-
*/
|
|
636
|
-
public privateNotifyEnqueuedPublicFunctionCall(
|
|
637
|
-
_targetContractAddress: AztecAddress,
|
|
638
|
-
calldataHash: Fr,
|
|
639
|
-
_sideEffectCounter: number,
|
|
640
|
-
_isStaticCall: boolean,
|
|
641
|
-
) {
|
|
642
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
643
|
-
return Promise.resolve();
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
/**
|
|
647
|
-
* Verify relevant information when a public teardown function is set.
|
|
648
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
649
|
-
* @param argsHash - The arguments hash to pass to the function.
|
|
650
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
651
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
652
|
-
*/
|
|
653
|
-
public privateNotifySetPublicTeardownFunctionCall(
|
|
654
|
-
_targetContractAddress: AztecAddress,
|
|
655
|
-
calldataHash: Fr,
|
|
656
|
-
_sideEffectCounter: number,
|
|
657
|
-
_isStaticCall: boolean,
|
|
658
|
-
) {
|
|
659
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
660
620
|
return Promise.resolve();
|
|
661
621
|
}
|
|
662
622
|
|
|
663
|
-
public
|
|
623
|
+
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
664
624
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
665
625
|
}
|
|
666
626
|
|
|
667
|
-
public
|
|
627
|
+
public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
668
628
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
669
629
|
}
|
|
670
630
|
|
|
@@ -691,9 +651,4 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
691
651
|
public getDebugFunctionName() {
|
|
692
652
|
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
693
653
|
}
|
|
694
|
-
|
|
695
|
-
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|
|
696
|
-
this.offchainEffects.push({ data });
|
|
697
|
-
return Promise.resolve();
|
|
698
|
-
}
|
|
699
654
|
}
|