@aztec/pxe 0.0.1-commit.7d4e6cd → 0.0.1-commit.858058eac
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/bin/check_oracle_version.js +1 -1
- package/dest/block_synchronizer/block_synchronizer.d.ts +11 -5
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +72 -21
- package/dest/config/index.d.ts +3 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +17 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/benchmarked_node.js +77 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +53 -33
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +95 -51
- package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +45 -28
- package/dest/contract_function_simulator/index.d.ts +2 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +17 -13
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +6 -6
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
- package/dest/contract_function_simulator/oracle/oracle.d.ts +12 -10
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +67 -44
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +0 -35
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +43 -35
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +82 -25
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +65 -33
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +126 -109
- package/dest/contract_sync/contract_sync_service.d.ts +41 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +82 -0
- package/dest/contract_sync/helpers.d.ts +28 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/helpers.js +55 -0
- package/dest/debug/pxe_debug_utils.d.ts +22 -9
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +28 -17
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +21 -7
- package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +22 -8
- package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +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.d.ts +1 -1
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +28 -9
- package/dest/events/event_service.d.ts +6 -6
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +19 -22
- package/dest/events/private_event_filter_validator.d.ts +5 -5
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +5 -6
- package/dest/job_coordinator/job_coordinator.d.ts +3 -2
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
- package/dest/job_coordinator/job_coordinator.js +3 -2
- package/dest/logs/log_service.d.ts +7 -5
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +23 -20
- package/dest/notes/note_service.d.ts +7 -7
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +31 -36
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +4 -3
- package/dest/private_kernel/hints/index.d.ts +2 -2
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
- package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +12 -6
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +3 -3
- package/dest/private_kernel/private_kernel_oracle.d.ts +23 -28
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +90 -2
- package/dest/pxe.d.ts +70 -57
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +96 -111
- package/dest/storage/address_store/address_store.d.ts +1 -1
- package/dest/storage/address_store/address_store.d.ts.map +1 -1
- package/dest/storage/address_store/address_store.js +12 -11
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
- package/dest/storage/anchor_block_store/anchor_block_store.js +8 -1
- package/dest/storage/capsule_store/capsule_store.d.ts +24 -9
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_store.js +130 -23
- package/dest/storage/contract_store/contract_store.d.ts +1 -2
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +27 -30
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +51 -52
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +285 -263
- package/dest/storage/note_store/stored_note.d.ts +16 -0
- package/dest/storage/note_store/stored_note.d.ts.map +1 -0
- package/dest/storage/note_store/stored_note.js +43 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +43 -8
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +226 -111
- package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
- package/dest/storage/private_event_store/stored_private_event.js +56 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +15 -8
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/recipient_tagging_store.js +88 -19
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +19 -9
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +252 -100
- package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
- package/dest/tagging/get_all_logs_by_tags.js +46 -0
- package/dest/tagging/index.d.ts +2 -1
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +1 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +3 -2
- 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 +6 -6
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +3 -2
- 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 +5 -2
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +3 -2
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +7 -7
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +1 -1
- 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 +5 -8
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -2
- 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 +10 -5
- package/package.json +27 -18
- package/src/bin/check_oracle_version.ts +1 -0
- package/src/block_synchronizer/block_synchronizer.ts +91 -33
- package/src/config/index.ts +14 -0
- package/src/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +143 -99
- package/src/contract_function_simulator/execution_note_cache.ts +44 -25
- package/src/contract_function_simulator/index.ts +1 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +22 -12
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
- package/src/contract_function_simulator/oracle/oracle.ts +79 -47
- package/src/contract_function_simulator/oracle/private_execution.ts +1 -67
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +116 -104
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +190 -116
- package/src/contract_sync/contract_sync_service.ts +129 -0
- package/src/contract_sync/helpers.ts +93 -0
- package/src/debug/pxe_debug_utils.ts +60 -17
- package/src/entrypoints/client/bundle/utils.ts +16 -15
- package/src/entrypoints/client/lazy/utils.ts +17 -15
- package/src/entrypoints/pxe_creation_options.ts +2 -1
- package/src/entrypoints/server/index.ts +2 -0
- package/src/entrypoints/server/utils.ts +22 -26
- package/src/events/event_service.ts +17 -25
- package/src/events/private_event_filter_validator.ts +3 -5
- package/src/job_coordinator/job_coordinator.ts +4 -3
- package/src/logs/log_service.ts +34 -16
- package/src/notes/note_service.ts +38 -43
- package/src/oracle_version.ts +4 -3
- package/src/private_kernel/hints/index.ts +1 -1
- package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +32 -20
- package/src/private_kernel/private_kernel_execution_prover.ts +7 -4
- package/src/private_kernel/private_kernel_oracle.ts +116 -37
- package/src/pxe.ts +191 -173
- package/src/storage/address_store/address_store.ts +15 -15
- package/src/storage/anchor_block_store/anchor_block_store.ts +8 -0
- package/src/storage/capsule_store/capsule_store.ts +159 -23
- package/src/storage/contract_store/contract_store.ts +26 -35
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +321 -318
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +292 -124
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +106 -20
- package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
- package/src/storage/tagging_store/sender_tagging_store.ts +293 -108
- package/src/tagging/get_all_logs_by_tags.ts +68 -0
- package/src/tagging/index.ts +1 -0
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +16 -5
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +7 -1
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +9 -6
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +5 -17
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +16 -4
- package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
- package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_node.js +0 -27
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +0 -85
- package/dest/public_storage/public_storage_service.d.ts +0 -24
- package/dest/public_storage/public_storage_service.d.ts.map +0 -1
- package/dest/public_storage/public_storage_service.js +0 -26
- package/dest/tree_membership/tree_membership_service.d.ts +0 -52
- package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
- package/dest/tree_membership/tree_membership_service.js +0 -84
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/private_kernel/private_kernel_oracle_impl.ts +0 -127
- package/src/public_storage/public_storage_service.ts +0 -33
- package/src/tree_membership/tree_membership_service.ts +0 -112
|
@@ -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
17
|
import { type ContractClassLog, DirectionalAppTaggingSecret, type PreTag } 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
|
|
|
28
|
+
import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
|
|
33
29
|
import { NoteService } from '../../notes/note_service.js';
|
|
34
|
-
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
35
|
-
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_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';
|
|
@@ -46,8 +34,26 @@ import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js'
|
|
|
46
34
|
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
|
-
import { executePrivateFunction
|
|
50
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
37
|
+
import { executePrivateFunction } from './private_execution.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) => Promise<void>;
|
|
47
|
+
executionCache: HashedValuesCache;
|
|
48
|
+
noteCache: ExecutionNoteCache;
|
|
49
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
50
|
+
senderTaggingStore: SenderTaggingStore;
|
|
51
|
+
contractSyncService: ContractSyncService;
|
|
52
|
+
totalPublicCalldataCount?: number;
|
|
53
|
+
sideEffectCounter?: number;
|
|
54
|
+
senderForTags?: AztecAddress;
|
|
55
|
+
simulator?: CircuitSimulator;
|
|
56
|
+
};
|
|
51
57
|
|
|
52
58
|
/**
|
|
53
59
|
* The execution oracle for the private part of a transaction.
|
|
@@ -69,58 +75,39 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
69
75
|
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
|
-
super(
|
|
106
|
-
callContext.contractAddress,
|
|
107
|
-
authWitnesses,
|
|
108
|
-
capsules,
|
|
109
|
-
anchorBlockHeader,
|
|
110
|
-
contractStore,
|
|
111
|
-
noteStore,
|
|
112
|
-
keyStore,
|
|
113
|
-
addressStore,
|
|
114
|
-
aztecNode,
|
|
115
|
-
anchorBlockStore,
|
|
116
|
-
recipientTaggingStore,
|
|
117
|
-
senderAddressBookStore,
|
|
118
|
-
capsuleStore,
|
|
119
|
-
privateEventStore,
|
|
120
|
-
jobId,
|
|
121
|
-
log,
|
|
122
|
-
scopes,
|
|
123
|
-
);
|
|
78
|
+
private readonly argsHash: Fr;
|
|
79
|
+
private readonly txContext: TxContext;
|
|
80
|
+
private readonly callContext: CallContext;
|
|
81
|
+
private readonly utilityExecutor: (call: FunctionCall) => 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;
|
|
124
111
|
}
|
|
125
112
|
|
|
126
113
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -244,7 +231,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
244
231
|
sender: AztecAddress,
|
|
245
232
|
recipient: AztecAddress,
|
|
246
233
|
) {
|
|
247
|
-
const senderCompleteAddress = await this.
|
|
234
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
248
235
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
249
236
|
return DirectionalAppTaggingSecret.compute(
|
|
250
237
|
senderCompleteAddress,
|
|
@@ -265,9 +252,16 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
265
252
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
266
253
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
267
254
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
268
|
-
await syncSenderTaggingIndexes(
|
|
269
|
-
|
|
270
|
-
|
|
255
|
+
await syncSenderTaggingIndexes(
|
|
256
|
+
secret,
|
|
257
|
+
this.contractAddress,
|
|
258
|
+
this.aztecNode,
|
|
259
|
+
this.senderTaggingStore,
|
|
260
|
+
await this.anchorBlockHeader.hash(),
|
|
261
|
+
this.jobId,
|
|
262
|
+
);
|
|
263
|
+
|
|
264
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
271
265
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
272
266
|
// Otherwise, the next index to use is one past the last used index
|
|
273
267
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -356,7 +350,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
356
350
|
|
|
357
351
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
358
352
|
|
|
359
|
-
const noteService = new NoteService(this.noteStore, this.aztecNode, this.
|
|
353
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
360
354
|
const dbNotes = await noteService.getNotes(
|
|
361
355
|
this.callContext.contractAddress,
|
|
362
356
|
owner,
|
|
@@ -428,6 +422,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
428
422
|
note,
|
|
429
423
|
siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
|
|
430
424
|
noteHash,
|
|
425
|
+
isPending: true, // This note has just been created and hence is not settled yet.
|
|
431
426
|
},
|
|
432
427
|
counter,
|
|
433
428
|
);
|
|
@@ -462,6 +457,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
462
457
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
463
458
|
}
|
|
464
459
|
|
|
460
|
+
/**
|
|
461
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
|
|
462
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
463
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
464
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
465
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
466
|
+
*/
|
|
467
|
+
public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
468
|
+
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
469
|
+
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
470
|
+
return Promise.resolve(isNullifierPending);
|
|
471
|
+
}
|
|
472
|
+
|
|
465
473
|
/**
|
|
466
474
|
* Emit a contract class log.
|
|
467
475
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -518,9 +526,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
518
526
|
|
|
519
527
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
520
528
|
|
|
521
|
-
await
|
|
522
|
-
|
|
523
|
-
|
|
529
|
+
await this.contractSyncService.ensureContractSynced(
|
|
530
|
+
targetContractAddress,
|
|
531
|
+
functionSelector,
|
|
532
|
+
this.utilityExecutor,
|
|
533
|
+
this.anchorBlockHeader,
|
|
534
|
+
this.jobId,
|
|
535
|
+
);
|
|
524
536
|
|
|
525
537
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
526
538
|
targetContractAddress,
|
|
@@ -531,41 +543,41 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
531
543
|
|
|
532
544
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
533
545
|
|
|
534
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
546
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
535
547
|
argsHash,
|
|
536
|
-
derivedTxContext,
|
|
537
|
-
derivedCallContext,
|
|
538
|
-
this.anchorBlockHeader,
|
|
539
|
-
this.utilityExecutor,
|
|
540
|
-
this.authWitnesses,
|
|
541
|
-
this.capsules,
|
|
542
|
-
this.executionCache,
|
|
543
|
-
this.noteCache,
|
|
544
|
-
this.taggingIndexCache,
|
|
545
|
-
this.contractStore,
|
|
546
|
-
this.noteStore,
|
|
547
|
-
this.keyStore,
|
|
548
|
-
this.addressStore,
|
|
549
|
-
this.aztecNode,
|
|
550
|
-
this.
|
|
551
|
-
this.
|
|
552
|
-
this.
|
|
553
|
-
this.
|
|
554
|
-
this.
|
|
555
|
-
this.
|
|
556
|
-
this.jobId,
|
|
557
|
-
this.totalPublicCalldataCount,
|
|
548
|
+
txContext: derivedTxContext,
|
|
549
|
+
callContext: derivedCallContext,
|
|
550
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
551
|
+
utilityExecutor: this.utilityExecutor,
|
|
552
|
+
authWitnesses: this.authWitnesses,
|
|
553
|
+
capsules: this.capsules,
|
|
554
|
+
executionCache: this.executionCache,
|
|
555
|
+
noteCache: this.noteCache,
|
|
556
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
557
|
+
contractStore: this.contractStore,
|
|
558
|
+
noteStore: this.noteStore,
|
|
559
|
+
keyStore: this.keyStore,
|
|
560
|
+
addressStore: this.addressStore,
|
|
561
|
+
aztecNode: this.aztecNode,
|
|
562
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
563
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
564
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
565
|
+
capsuleStore: this.capsuleStore,
|
|
566
|
+
privateEventStore: this.privateEventStore,
|
|
567
|
+
contractSyncService: this.contractSyncService,
|
|
568
|
+
jobId: this.jobId,
|
|
569
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
558
570
|
sideEffectCounter,
|
|
559
|
-
this.log,
|
|
560
|
-
this.scopes,
|
|
561
|
-
this.senderForTags,
|
|
562
|
-
this.simulator
|
|
563
|
-
);
|
|
571
|
+
log: this.log,
|
|
572
|
+
scopes: this.scopes,
|
|
573
|
+
senderForTags: this.senderForTags,
|
|
574
|
+
simulator: this.simulator!,
|
|
575
|
+
});
|
|
564
576
|
|
|
565
577
|
const setupTime = simulatorSetupTimer.ms();
|
|
566
578
|
|
|
567
579
|
const childExecutionResult = await executePrivateFunction(
|
|
568
|
-
this.simulator
|
|
580
|
+
this.simulator!,
|
|
569
581
|
privateExecutionOracle,
|
|
570
582
|
targetArtifact,
|
|
571
583
|
targetContractAddress,
|