@aztec/pxe 0.0.1-commit.f2ce05ee → 0.0.1-commit.f5d02921e
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 +1 -1
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +6 -0
- 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 -30
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +199 -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 +187 -97
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +54 -80
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +98 -85
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +90 -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 +213 -116
- 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 +10 -5
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
- package/dest/contract_sync/contract_sync_service.js +72 -30
- package/dest/contract_sync/helpers.d.ts +3 -2
- package/dest/contract_sync/helpers.d.ts.map +1 -1
- package/dest/contract_sync/helpers.js +9 -4
- package/dest/debug/pxe_debug_utils.d.ts +5 -4
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +4 -4
- 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 +9 -1
- 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 +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 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +2 -0
- 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 +31 -40
- 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 +5 -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 +25 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +2 -2
- 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 +63 -24
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +105 -74
- package/dest/storage/capsule_store/capsule_service.d.ts +22 -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 +140 -64
- 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 +3 -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 +16 -16
- package/src/access_scopes.ts +9 -0
- package/src/block_synchronizer/block_synchronizer.ts +6 -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 +358 -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 +63 -54
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +98 -0
- package/src/contract_function_simulator/oracle/oracle.ts +223 -139
- package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +122 -177
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +375 -131
- package/src/contract_logging.ts +52 -0
- package/src/contract_sync/contract_sync_service.ts +108 -45
- package/src/contract_sync/helpers.ts +9 -3
- package/src/debug/pxe_debug_utils.ts +11 -9
- package/src/entrypoints/client/bundle/index.ts +3 -0
- package/src/entrypoints/client/bundle/utils.ts +9 -1
- package/src/entrypoints/client/lazy/index.ts +3 -0
- package/src/entrypoints/client/lazy/utils.ts +9 -1
- package/src/entrypoints/server/index.ts +2 -0
- package/src/entrypoints/server/utils.ts +7 -7
- package/src/events/event_service.ts +17 -4
- package/src/logs/log_service.ts +61 -63
- package/src/messages/message_context_service.ts +44 -0
- package/src/notes/note_service.ts +20 -8
- 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 +19 -12
- package/src/private_kernel/private_kernel_oracle.ts +7 -7
- package/src/pxe.ts +190 -117
- package/src/storage/capsule_store/capsule_service.ts +91 -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 +170 -71
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +8 -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/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,22 @@ 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 type {
|
|
28
|
+
import type { AccessScopes } from '../../access_scopes.js';
|
|
34
29
|
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
30
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
43
31
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
44
32
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
@@ -47,7 +35,24 @@ import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
|
47
35
|
import { pickNotes } from '../pick_notes.js';
|
|
48
36
|
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
49
37
|
import { executePrivateFunction } from './private_execution.js';
|
|
50
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
38
|
+
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
39
|
+
|
|
40
|
+
/** Args for PrivateExecutionOracle constructor. */
|
|
41
|
+
export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
|
|
42
|
+
argsHash: Fr;
|
|
43
|
+
txContext: TxContext;
|
|
44
|
+
callContext: CallContext;
|
|
45
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
46
|
+
utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
47
|
+
executionCache: HashedValuesCache;
|
|
48
|
+
noteCache: ExecutionNoteCache;
|
|
49
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
50
|
+
senderTaggingStore: SenderTaggingStore;
|
|
51
|
+
totalPublicCalldataCount?: number;
|
|
52
|
+
sideEffectCounter?: number;
|
|
53
|
+
senderForTags?: AztecAddress;
|
|
54
|
+
simulator?: CircuitSimulator;
|
|
55
|
+
};
|
|
51
56
|
|
|
52
57
|
/**
|
|
53
58
|
* The execution oracle for the private part of a transaction.
|
|
@@ -66,60 +71,39 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
66
71
|
private newNotes: NoteAndSlot[] = [];
|
|
67
72
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
68
73
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
69
|
-
private offchainEffects: { data: Fr[] }[] = [];
|
|
70
74
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
71
75
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
private simulator?: CircuitSimulator,
|
|
104
|
-
) {
|
|
105
|
-
super(
|
|
106
|
-
callContext.contractAddress,
|
|
107
|
-
authWitnesses,
|
|
108
|
-
capsules,
|
|
109
|
-
anchorBlockHeader,
|
|
110
|
-
contractStore,
|
|
111
|
-
noteStore,
|
|
112
|
-
keyStore,
|
|
113
|
-
addressStore,
|
|
114
|
-
aztecNode,
|
|
115
|
-
recipientTaggingStore,
|
|
116
|
-
senderAddressBookStore,
|
|
117
|
-
capsuleStore,
|
|
118
|
-
privateEventStore,
|
|
119
|
-
jobId,
|
|
120
|
-
log,
|
|
121
|
-
scopes,
|
|
122
|
-
);
|
|
76
|
+
private readonly argsHash: Fr;
|
|
77
|
+
private readonly txContext: TxContext;
|
|
78
|
+
private readonly callContext: CallContext;
|
|
79
|
+
private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
80
|
+
private readonly executionCache: HashedValuesCache;
|
|
81
|
+
private readonly noteCache: ExecutionNoteCache;
|
|
82
|
+
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
83
|
+
private readonly senderTaggingStore: SenderTaggingStore;
|
|
84
|
+
private totalPublicCalldataCount: number;
|
|
85
|
+
protected sideEffectCounter: number;
|
|
86
|
+
private senderForTags?: AztecAddress;
|
|
87
|
+
private readonly simulator?: CircuitSimulator;
|
|
88
|
+
|
|
89
|
+
constructor(args: PrivateExecutionOracleArgs) {
|
|
90
|
+
super({
|
|
91
|
+
...args,
|
|
92
|
+
contractAddress: args.callContext.contractAddress,
|
|
93
|
+
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
94
|
+
});
|
|
95
|
+
this.argsHash = args.argsHash;
|
|
96
|
+
this.txContext = args.txContext;
|
|
97
|
+
this.callContext = args.callContext;
|
|
98
|
+
this.utilityExecutor = args.utilityExecutor;
|
|
99
|
+
this.executionCache = args.executionCache;
|
|
100
|
+
this.noteCache = args.noteCache;
|
|
101
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
102
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
103
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
104
|
+
this.sideEffectCounter = args.sideEffectCounter ?? 0;
|
|
105
|
+
this.senderForTags = args.senderForTags;
|
|
106
|
+
this.simulator = args.simulator;
|
|
123
107
|
}
|
|
124
108
|
|
|
125
109
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -170,17 +154,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
170
154
|
}
|
|
171
155
|
|
|
172
156
|
/**
|
|
173
|
-
*
|
|
174
|
-
*/
|
|
175
|
-
public getOffchainEffects() {
|
|
176
|
-
return this.offchainEffects;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
157
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
181
158
|
*/
|
|
182
|
-
public
|
|
183
|
-
return this.taggingIndexCache.
|
|
159
|
+
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
160
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
184
161
|
}
|
|
185
162
|
|
|
186
163
|
/**
|
|
@@ -200,7 +177,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
200
177
|
* The value persists through nested calls, meaning all calls down the stack will use the same
|
|
201
178
|
* 'senderForTags' value (unless it is replaced).
|
|
202
179
|
*/
|
|
203
|
-
public
|
|
180
|
+
public getSenderForTags(): Promise<AztecAddress | undefined> {
|
|
204
181
|
return Promise.resolve(this.senderForTags);
|
|
205
182
|
}
|
|
206
183
|
|
|
@@ -215,7 +192,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
215
192
|
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
216
193
|
* value (unless it is replaced by another call to this setter).
|
|
217
194
|
*/
|
|
218
|
-
public
|
|
195
|
+
public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
219
196
|
this.senderForTags = senderForTags;
|
|
220
197
|
return Promise.resolve();
|
|
221
198
|
}
|
|
@@ -226,26 +203,30 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
226
203
|
* @param recipient - The address receiving the log
|
|
227
204
|
* @returns An app tag to be used in a log.
|
|
228
205
|
*/
|
|
229
|
-
public async
|
|
230
|
-
const
|
|
206
|
+
public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
|
|
207
|
+
const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
|
|
208
|
+
this.contractAddress,
|
|
209
|
+
sender,
|
|
210
|
+
recipient,
|
|
211
|
+
);
|
|
231
212
|
|
|
232
|
-
const index = await this.#getIndexToUseForSecret(
|
|
233
|
-
this.
|
|
213
|
+
const index = await this.#getIndexToUseForSecret(extendedSecret);
|
|
214
|
+
this.logger.debug(
|
|
234
215
|
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
235
216
|
);
|
|
236
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
217
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
237
218
|
|
|
238
|
-
return Tag.compute({
|
|
219
|
+
return Tag.compute({ extendedSecret, index });
|
|
239
220
|
}
|
|
240
221
|
|
|
241
|
-
async #
|
|
222
|
+
async #calculateExtendedDirectionalAppTaggingSecret(
|
|
242
223
|
contractAddress: AztecAddress,
|
|
243
224
|
sender: AztecAddress,
|
|
244
225
|
recipient: AztecAddress,
|
|
245
226
|
) {
|
|
246
227
|
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
247
228
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
248
|
-
return
|
|
229
|
+
return ExtendedDirectionalAppTaggingSecret.compute(
|
|
249
230
|
senderCompleteAddress,
|
|
250
231
|
senderIvsk,
|
|
251
232
|
recipient,
|
|
@@ -254,7 +235,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
254
235
|
);
|
|
255
236
|
}
|
|
256
237
|
|
|
257
|
-
async #getIndexToUseForSecret(secret:
|
|
238
|
+
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
|
|
258
239
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
259
240
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
260
241
|
|
|
@@ -266,7 +247,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
266
247
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
267
248
|
await syncSenderTaggingIndexes(
|
|
268
249
|
secret,
|
|
269
|
-
this.contractAddress,
|
|
270
250
|
this.aztecNode,
|
|
271
251
|
this.senderTaggingStore,
|
|
272
252
|
await this.anchorBlockHeader.hash(),
|
|
@@ -285,7 +265,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
285
265
|
* @param values - Values to store.
|
|
286
266
|
* @returns The hash of the values.
|
|
287
267
|
*/
|
|
288
|
-
public
|
|
268
|
+
public setHashPreimage(values: Fr[], hash: Fr) {
|
|
289
269
|
return this.executionCache.store(values, hash);
|
|
290
270
|
}
|
|
291
271
|
|
|
@@ -294,7 +274,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
294
274
|
* @param hash - Hash of the values.
|
|
295
275
|
* @returns The values.
|
|
296
276
|
*/
|
|
297
|
-
public
|
|
277
|
+
public getHashPreimage(hash: Fr): Promise<Fr[]> {
|
|
298
278
|
const preimage = this.executionCache.getPreimage(hash);
|
|
299
279
|
if (!preimage) {
|
|
300
280
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -302,12 +282,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
302
282
|
return Promise.resolve(preimage);
|
|
303
283
|
}
|
|
304
284
|
|
|
305
|
-
override async
|
|
285
|
+
override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
|
|
306
286
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
307
287
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
308
288
|
// in the current transaction.
|
|
309
289
|
|
|
310
|
-
this.
|
|
290
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
311
291
|
contractAddress: this.contractAddress,
|
|
312
292
|
});
|
|
313
293
|
|
|
@@ -315,7 +295,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
315
295
|
|
|
316
296
|
return (
|
|
317
297
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
318
|
-
(await super.
|
|
298
|
+
(await super.doesNullifierExist(innerNullifier))
|
|
319
299
|
);
|
|
320
300
|
}
|
|
321
301
|
|
|
@@ -340,7 +320,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
340
320
|
* @param status - The status of notes to fetch.
|
|
341
321
|
* @returns Array of note data.
|
|
342
322
|
*/
|
|
343
|
-
public override async
|
|
323
|
+
public override async getNotes(
|
|
344
324
|
owner: AztecAddress | undefined,
|
|
345
325
|
storageSlot: Fr,
|
|
346
326
|
numSelects: number,
|
|
@@ -386,7 +366,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
386
366
|
offset,
|
|
387
367
|
});
|
|
388
368
|
|
|
389
|
-
this.
|
|
369
|
+
this.logger.debug(
|
|
390
370
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
391
371
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
392
372
|
.join(', ')}`,
|
|
@@ -406,7 +386,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
406
386
|
* @param noteHash - A hash of the new note.
|
|
407
387
|
* @returns
|
|
408
388
|
*/
|
|
409
|
-
public
|
|
389
|
+
public notifyCreatedNote(
|
|
410
390
|
owner: AztecAddress,
|
|
411
391
|
storageSlot: Fr,
|
|
412
392
|
randomness: Fr,
|
|
@@ -415,7 +395,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
415
395
|
noteHash: Fr,
|
|
416
396
|
counter: number,
|
|
417
397
|
) {
|
|
418
|
-
this.
|
|
398
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
419
399
|
contractAddress: this.callContext.contractAddress,
|
|
420
400
|
storageSlot,
|
|
421
401
|
randomness,
|
|
@@ -447,7 +427,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
447
427
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
448
428
|
* @param noteHash - A hash of the new note.
|
|
449
429
|
*/
|
|
450
|
-
public async
|
|
430
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
451
431
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
452
432
|
this.callContext.contractAddress,
|
|
453
433
|
innerNullifier,
|
|
@@ -464,19 +444,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
464
444
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
465
445
|
* @param noteHash - A hash of the new note.
|
|
466
446
|
*/
|
|
467
|
-
public
|
|
468
|
-
this.
|
|
447
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
448
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
469
449
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
470
450
|
}
|
|
471
451
|
|
|
472
452
|
/**
|
|
473
|
-
* Check if a nullifier has been emitted in the same transaction, i.e. if
|
|
453
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
|
|
474
454
|
* called for this inner nullifier from the contract with the specified address.
|
|
475
455
|
* @param innerNullifier - The inner nullifier to check.
|
|
476
456
|
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
477
457
|
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
478
458
|
*/
|
|
479
|
-
public async
|
|
459
|
+
public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
480
460
|
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
481
461
|
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
482
462
|
return Promise.resolve(isNullifierPending);
|
|
@@ -489,10 +469,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
489
469
|
* @param log - The contract class log to be emitted.
|
|
490
470
|
* @param counter - The contract class log's counter.
|
|
491
471
|
*/
|
|
492
|
-
public
|
|
472
|
+
public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
|
|
493
473
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
494
474
|
const text = log.toBuffer().toString('hex');
|
|
495
|
-
this.
|
|
475
|
+
this.logger.verbose(
|
|
496
476
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
497
477
|
);
|
|
498
478
|
}
|
|
@@ -518,7 +498,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
518
498
|
* @param isStaticCall - Whether the call is a static call.
|
|
519
499
|
* @returns The execution result.
|
|
520
500
|
*/
|
|
521
|
-
async
|
|
501
|
+
async callPrivateFunction(
|
|
522
502
|
targetContractAddress: AztecAddress,
|
|
523
503
|
functionSelector: FunctionSelector,
|
|
524
504
|
argsHash: Fr,
|
|
@@ -532,7 +512,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
532
512
|
}
|
|
533
513
|
|
|
534
514
|
const simulatorSetupTimer = new Timer();
|
|
535
|
-
this.
|
|
515
|
+
this.logger.debug(
|
|
536
516
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
537
517
|
);
|
|
538
518
|
|
|
@@ -544,6 +524,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
544
524
|
this.utilityExecutor,
|
|
545
525
|
this.anchorBlockHeader,
|
|
546
526
|
this.jobId,
|
|
527
|
+
this.scopes,
|
|
547
528
|
);
|
|
548
529
|
|
|
549
530
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
@@ -555,41 +536,42 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
555
536
|
|
|
556
537
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
557
538
|
|
|
558
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
539
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
559
540
|
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.
|
|
581
|
-
this.
|
|
541
|
+
txContext: derivedTxContext,
|
|
542
|
+
callContext: derivedCallContext,
|
|
543
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
544
|
+
utilityExecutor: this.utilityExecutor,
|
|
545
|
+
authWitnesses: this.authWitnesses,
|
|
546
|
+
capsules: this.capsules,
|
|
547
|
+
executionCache: this.executionCache,
|
|
548
|
+
noteCache: this.noteCache,
|
|
549
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
550
|
+
contractStore: this.contractStore,
|
|
551
|
+
noteStore: this.noteStore,
|
|
552
|
+
keyStore: this.keyStore,
|
|
553
|
+
addressStore: this.addressStore,
|
|
554
|
+
aztecNode: this.aztecNode,
|
|
555
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
556
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
557
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
558
|
+
capsuleService: this.capsuleService,
|
|
559
|
+
privateEventStore: this.privateEventStore,
|
|
560
|
+
messageContextService: this.messageContextService,
|
|
561
|
+
contractSyncService: this.contractSyncService,
|
|
562
|
+
jobId: this.jobId,
|
|
563
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
582
564
|
sideEffectCounter,
|
|
583
|
-
this.
|
|
584
|
-
this.scopes,
|
|
585
|
-
this.senderForTags,
|
|
586
|
-
this.simulator
|
|
587
|
-
);
|
|
565
|
+
log: this.logger,
|
|
566
|
+
scopes: this.scopes,
|
|
567
|
+
senderForTags: this.senderForTags,
|
|
568
|
+
simulator: this.simulator!,
|
|
569
|
+
});
|
|
588
570
|
|
|
589
571
|
const setupTime = simulatorSetupTimer.ms();
|
|
590
572
|
|
|
591
573
|
const childExecutionResult = await executePrivateFunction(
|
|
592
|
-
this.simulator
|
|
574
|
+
this.simulator!,
|
|
593
575
|
privateExecutionOracle,
|
|
594
576
|
targetArtifact,
|
|
595
577
|
targetContractAddress,
|
|
@@ -615,7 +597,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
615
597
|
};
|
|
616
598
|
}
|
|
617
599
|
|
|
618
|
-
|
|
600
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
601
|
+
public assertValidPublicCalldata(calldataHash: Fr) {
|
|
619
602
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
620
603
|
if (!calldata) {
|
|
621
604
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -625,47 +608,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
625
608
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
626
609
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
627
610
|
}
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
/**
|
|
631
|
-
* Verify relevant information when a public function is enqueued.
|
|
632
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
633
|
-
* @param calldataHash - The hash of the function selector and arguments.
|
|
634
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
635
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
636
|
-
*/
|
|
637
|
-
public privateNotifyEnqueuedPublicFunctionCall(
|
|
638
|
-
_targetContractAddress: AztecAddress,
|
|
639
|
-
calldataHash: Fr,
|
|
640
|
-
_sideEffectCounter: number,
|
|
641
|
-
_isStaticCall: boolean,
|
|
642
|
-
) {
|
|
643
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
644
611
|
return Promise.resolve();
|
|
645
612
|
}
|
|
646
613
|
|
|
647
|
-
|
|
648
|
-
* Verify relevant information when a public teardown function is set.
|
|
649
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
650
|
-
* @param argsHash - The arguments hash to pass to the function.
|
|
651
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
652
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
653
|
-
*/
|
|
654
|
-
public privateNotifySetPublicTeardownFunctionCall(
|
|
655
|
-
_targetContractAddress: AztecAddress,
|
|
656
|
-
calldataHash: Fr,
|
|
657
|
-
_sideEffectCounter: number,
|
|
658
|
-
_isStaticCall: boolean,
|
|
659
|
-
) {
|
|
660
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
661
|
-
return Promise.resolve();
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
public privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
614
|
+
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
665
615
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
666
616
|
}
|
|
667
617
|
|
|
668
|
-
public
|
|
618
|
+
public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
669
619
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
670
620
|
}
|
|
671
621
|
|
|
@@ -692,9 +642,4 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
692
642
|
public getDebugFunctionName() {
|
|
693
643
|
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
694
644
|
}
|
|
695
|
-
|
|
696
|
-
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|
|
697
|
-
this.offchainEffects.push({ data });
|
|
698
|
-
return Promise.resolve();
|
|
699
|
-
}
|
|
700
645
|
}
|