@aztec/pxe 0.0.1-commit.f146247c → 0.0.1-commit.f1b29a41e
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 +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 +61 -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 +206 -104
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +54 -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 +99 -86
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +93 -53
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +233 -119
- 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 +46 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +124 -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} +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 +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/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 +32 -43
- 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 +74 -24
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +126 -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 +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 +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 +361 -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 +233 -142
- package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +125 -179
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +399 -136
- package/src/contract_logging.ts +52 -0
- package/src/contract_sync/contract_sync_service.ts +192 -0
- package/src/contract_sync/{index.ts → helpers.ts} +23 -22
- 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/events/event_service.ts +17 -4
- package/src/logs/log_service.ts +63 -65
- 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 +231 -124
- 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 +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 -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,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 {
|
|
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,59 +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
|
-
) {
|
|
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
|
-
);
|
|
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;
|
|
122
107
|
}
|
|
123
108
|
|
|
124
109
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -169,17 +154,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
169
154
|
}
|
|
170
155
|
|
|
171
156
|
/**
|
|
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).
|
|
157
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
180
158
|
*/
|
|
181
|
-
public
|
|
182
|
-
return this.taggingIndexCache.
|
|
159
|
+
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
160
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
183
161
|
}
|
|
184
162
|
|
|
185
163
|
/**
|
|
@@ -199,7 +177,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
199
177
|
* The value persists through nested calls, meaning all calls down the stack will use the same
|
|
200
178
|
* 'senderForTags' value (unless it is replaced).
|
|
201
179
|
*/
|
|
202
|
-
public
|
|
180
|
+
public getSenderForTags(): Promise<AztecAddress | undefined> {
|
|
203
181
|
return Promise.resolve(this.senderForTags);
|
|
204
182
|
}
|
|
205
183
|
|
|
@@ -214,7 +192,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
214
192
|
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
215
193
|
* value (unless it is replaced by another call to this setter).
|
|
216
194
|
*/
|
|
217
|
-
public
|
|
195
|
+
public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
218
196
|
this.senderForTags = senderForTags;
|
|
219
197
|
return Promise.resolve();
|
|
220
198
|
}
|
|
@@ -225,26 +203,30 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
225
203
|
* @param recipient - The address receiving the log
|
|
226
204
|
* @returns An app tag to be used in a log.
|
|
227
205
|
*/
|
|
228
|
-
public async
|
|
229
|
-
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
|
+
);
|
|
230
212
|
|
|
231
|
-
const index = await this.#getIndexToUseForSecret(
|
|
232
|
-
this.
|
|
213
|
+
const index = await this.#getIndexToUseForSecret(extendedSecret);
|
|
214
|
+
this.logger.debug(
|
|
233
215
|
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
234
216
|
);
|
|
235
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
217
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
236
218
|
|
|
237
|
-
return Tag.compute({
|
|
219
|
+
return Tag.compute({ extendedSecret, index });
|
|
238
220
|
}
|
|
239
221
|
|
|
240
|
-
async #
|
|
222
|
+
async #calculateExtendedDirectionalAppTaggingSecret(
|
|
241
223
|
contractAddress: AztecAddress,
|
|
242
224
|
sender: AztecAddress,
|
|
243
225
|
recipient: AztecAddress,
|
|
244
226
|
) {
|
|
245
|
-
const senderCompleteAddress = await this.
|
|
227
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
246
228
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
247
|
-
return
|
|
229
|
+
return ExtendedDirectionalAppTaggingSecret.compute(
|
|
248
230
|
senderCompleteAddress,
|
|
249
231
|
senderIvsk,
|
|
250
232
|
recipient,
|
|
@@ -253,7 +235,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
253
235
|
);
|
|
254
236
|
}
|
|
255
237
|
|
|
256
|
-
async #getIndexToUseForSecret(secret:
|
|
238
|
+
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
|
|
257
239
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
258
240
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
259
241
|
|
|
@@ -265,7 +247,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
265
247
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
266
248
|
await syncSenderTaggingIndexes(
|
|
267
249
|
secret,
|
|
268
|
-
this.contractAddress,
|
|
269
250
|
this.aztecNode,
|
|
270
251
|
this.senderTaggingStore,
|
|
271
252
|
await this.anchorBlockHeader.hash(),
|
|
@@ -284,7 +265,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
284
265
|
* @param values - Values to store.
|
|
285
266
|
* @returns The hash of the values.
|
|
286
267
|
*/
|
|
287
|
-
public
|
|
268
|
+
public setHashPreimage(values: Fr[], hash: Fr) {
|
|
288
269
|
return this.executionCache.store(values, hash);
|
|
289
270
|
}
|
|
290
271
|
|
|
@@ -293,7 +274,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
293
274
|
* @param hash - Hash of the values.
|
|
294
275
|
* @returns The values.
|
|
295
276
|
*/
|
|
296
|
-
public
|
|
277
|
+
public getHashPreimage(hash: Fr): Promise<Fr[]> {
|
|
297
278
|
const preimage = this.executionCache.getPreimage(hash);
|
|
298
279
|
if (!preimage) {
|
|
299
280
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -301,12 +282,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
301
282
|
return Promise.resolve(preimage);
|
|
302
283
|
}
|
|
303
284
|
|
|
304
|
-
override async
|
|
285
|
+
override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
|
|
305
286
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
306
287
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
307
288
|
// in the current transaction.
|
|
308
289
|
|
|
309
|
-
this.
|
|
290
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
310
291
|
contractAddress: this.contractAddress,
|
|
311
292
|
});
|
|
312
293
|
|
|
@@ -314,7 +295,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
314
295
|
|
|
315
296
|
return (
|
|
316
297
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
317
|
-
(await super.
|
|
298
|
+
(await super.doesNullifierExist(innerNullifier))
|
|
318
299
|
);
|
|
319
300
|
}
|
|
320
301
|
|
|
@@ -339,7 +320,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
339
320
|
* @param status - The status of notes to fetch.
|
|
340
321
|
* @returns Array of note data.
|
|
341
322
|
*/
|
|
342
|
-
public override async
|
|
323
|
+
public override async getNotes(
|
|
343
324
|
owner: AztecAddress | undefined,
|
|
344
325
|
storageSlot: Fr,
|
|
345
326
|
numSelects: number,
|
|
@@ -385,7 +366,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
385
366
|
offset,
|
|
386
367
|
});
|
|
387
368
|
|
|
388
|
-
this.
|
|
369
|
+
this.logger.debug(
|
|
389
370
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
390
371
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
391
372
|
.join(', ')}`,
|
|
@@ -405,7 +386,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
405
386
|
* @param noteHash - A hash of the new note.
|
|
406
387
|
* @returns
|
|
407
388
|
*/
|
|
408
|
-
public
|
|
389
|
+
public notifyCreatedNote(
|
|
409
390
|
owner: AztecAddress,
|
|
410
391
|
storageSlot: Fr,
|
|
411
392
|
randomness: Fr,
|
|
@@ -414,7 +395,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
414
395
|
noteHash: Fr,
|
|
415
396
|
counter: number,
|
|
416
397
|
) {
|
|
417
|
-
this.
|
|
398
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
418
399
|
contractAddress: this.callContext.contractAddress,
|
|
419
400
|
storageSlot,
|
|
420
401
|
randomness,
|
|
@@ -446,7 +427,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
446
427
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
447
428
|
* @param noteHash - A hash of the new note.
|
|
448
429
|
*/
|
|
449
|
-
public async
|
|
430
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
450
431
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
451
432
|
this.callContext.contractAddress,
|
|
452
433
|
innerNullifier,
|
|
@@ -463,19 +444,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
463
444
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
464
445
|
* @param noteHash - A hash of the new note.
|
|
465
446
|
*/
|
|
466
|
-
public
|
|
467
|
-
this.
|
|
447
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
448
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
468
449
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
469
450
|
}
|
|
470
451
|
|
|
471
452
|
/**
|
|
472
|
-
* 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
|
|
473
454
|
* called for this inner nullifier from the contract with the specified address.
|
|
474
455
|
* @param innerNullifier - The inner nullifier to check.
|
|
475
456
|
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
476
457
|
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
477
458
|
*/
|
|
478
|
-
public async
|
|
459
|
+
public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
479
460
|
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
480
461
|
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
481
462
|
return Promise.resolve(isNullifierPending);
|
|
@@ -488,10 +469,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
488
469
|
* @param log - The contract class log to be emitted.
|
|
489
470
|
* @param counter - The contract class log's counter.
|
|
490
471
|
*/
|
|
491
|
-
public
|
|
472
|
+
public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
|
|
492
473
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
493
474
|
const text = log.toBuffer().toString('hex');
|
|
494
|
-
this.
|
|
475
|
+
this.logger.verbose(
|
|
495
476
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
496
477
|
);
|
|
497
478
|
}
|
|
@@ -517,7 +498,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
517
498
|
* @param isStaticCall - Whether the call is a static call.
|
|
518
499
|
* @returns The execution result.
|
|
519
500
|
*/
|
|
520
|
-
async
|
|
501
|
+
async callPrivateFunction(
|
|
521
502
|
targetContractAddress: AztecAddress,
|
|
522
503
|
functionSelector: FunctionSelector,
|
|
523
504
|
argsHash: Fr,
|
|
@@ -531,19 +512,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
531
512
|
}
|
|
532
513
|
|
|
533
514
|
const simulatorSetupTimer = new Timer();
|
|
534
|
-
this.
|
|
515
|
+
this.logger.debug(
|
|
535
516
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
536
517
|
);
|
|
537
518
|
|
|
538
519
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
539
520
|
|
|
540
|
-
await ensureContractSynced(
|
|
521
|
+
await this.contractSyncService.ensureContractSynced(
|
|
541
522
|
targetContractAddress,
|
|
542
523
|
functionSelector,
|
|
543
524
|
this.utilityExecutor,
|
|
544
|
-
this.aztecNode,
|
|
545
|
-
this.contractStore,
|
|
546
525
|
this.anchorBlockHeader,
|
|
526
|
+
this.jobId,
|
|
527
|
+
this.scopes,
|
|
547
528
|
);
|
|
548
529
|
|
|
549
530
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
@@ -555,40 +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.
|
|
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,
|
|
581
564
|
sideEffectCounter,
|
|
582
|
-
this.
|
|
583
|
-
this.scopes,
|
|
584
|
-
this.senderForTags,
|
|
585
|
-
this.simulator
|
|
586
|
-
);
|
|
565
|
+
log: this.logger,
|
|
566
|
+
scopes: this.scopes,
|
|
567
|
+
senderForTags: this.senderForTags,
|
|
568
|
+
simulator: this.simulator!,
|
|
569
|
+
});
|
|
587
570
|
|
|
588
571
|
const setupTime = simulatorSetupTimer.ms();
|
|
589
572
|
|
|
590
573
|
const childExecutionResult = await executePrivateFunction(
|
|
591
|
-
this.simulator
|
|
574
|
+
this.simulator!,
|
|
592
575
|
privateExecutionOracle,
|
|
593
576
|
targetArtifact,
|
|
594
577
|
targetContractAddress,
|
|
@@ -614,7 +597,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
614
597
|
};
|
|
615
598
|
}
|
|
616
599
|
|
|
617
|
-
|
|
600
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
601
|
+
public assertValidPublicCalldata(calldataHash: Fr) {
|
|
618
602
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
619
603
|
if (!calldata) {
|
|
620
604
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -624,47 +608,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
624
608
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
625
609
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
626
610
|
}
|
|
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
611
|
return Promise.resolve();
|
|
644
612
|
}
|
|
645
613
|
|
|
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
|
-
return Promise.resolve();
|
|
661
|
-
}
|
|
662
|
-
|
|
663
|
-
public privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
614
|
+
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
664
615
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
665
616
|
}
|
|
666
617
|
|
|
667
|
-
public
|
|
618
|
+
public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
668
619
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
669
620
|
}
|
|
670
621
|
|
|
@@ -691,9 +642,4 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
691
642
|
public getDebugFunctionName() {
|
|
692
643
|
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
693
644
|
}
|
|
694
|
-
|
|
695
|
-
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|
|
696
|
-
this.offchainEffects.push({ data });
|
|
697
|
-
return Promise.resolve();
|
|
698
|
-
}
|
|
699
645
|
}
|