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