@aztec/pxe 0.0.1-commit.6230efd → 0.0.1-commit.64b6bbb
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 +13 -5
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +74 -20
- 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/config/package_info.js +1 -1
- 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 +54 -33
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +96 -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 +4 -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 +6 -3
- 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 +1 -37
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +43 -50
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +83 -54
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +66 -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 +127 -108
- 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 +31 -8
- 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 +32 -9
- package/dest/entrypoints/pxe_creation_options.d.ts +5 -3
- 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 +39 -16
- 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 +75 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +94 -0
- 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} +13 -7
- 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 +6 -7
- package/dest/private_kernel/private_kernel_oracle.d.ts +24 -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 +71 -57
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +123 -119
- 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 +47 -7
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +231 -73
- 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 +253 -101
- package/dest/tagging/constants.d.ts +2 -0
- package/dest/tagging/constants.d.ts.map +1 -0
- package/dest/tagging/constants.js +10 -0
- 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 +3 -2
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +2 -10
- 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 +8 -8
- 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 +8 -8
- 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 +93 -32
- package/src/config/index.ts +14 -0
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +148 -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 +5 -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 -69
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +117 -137
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +191 -115
- 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 +23 -16
- package/src/entrypoints/client/lazy/utils.ts +24 -17
- package/src/entrypoints/pxe_creation_options.ts +4 -2
- package/src/entrypoints/server/index.ts +2 -0
- package/src/entrypoints/server/utils.ts +33 -41
- package/src/events/event_service.ts +19 -25
- package/src/events/private_event_filter_validator.ts +3 -5
- package/src/job_coordinator/job_coordinator.ts +150 -0
- 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} +33 -22
- package/src/private_kernel/private_kernel_execution_prover.ts +9 -8
- package/src/private_kernel/private_kernel_oracle.ts +116 -36
- package/src/pxe.ts +246 -184
- 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 +301 -79
- 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 +294 -109
- package/src/tagging/constants.ts +10 -0
- package/src/tagging/get_all_logs_by_tags.ts +68 -0
- package/src/tagging/index.ts +2 -11
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +21 -7
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +7 -1
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +10 -7
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +5 -13
- 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 -86
- 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 -133
- 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
|
-
import {
|
|
18
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
15
|
+
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
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.
|
|
@@ -64,71 +70,44 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
64
70
|
* Users can also use this to get a clearer idea of what's happened during a simulation.
|
|
65
71
|
*/
|
|
66
72
|
private newNotes: NoteAndSlot[] = [];
|
|
67
|
-
/**
|
|
68
|
-
* Notes from previous transactions that are returned to the oracle call `getNotes` during this execution.
|
|
69
|
-
* The mapping maps from the unique siloed note hash to the index for notes created in private executions.
|
|
70
|
-
* It maps from siloed note hash to the index for notes created by public functions.
|
|
71
|
-
*
|
|
72
|
-
* They are not part of the ExecutionNoteCache and being forwarded to nested contexts via `extend()`
|
|
73
|
-
* because these notes are meant to be maintained on a per-call basis
|
|
74
|
-
* They should act as references for the read requests output by an app circuit via public inputs.
|
|
75
|
-
*/
|
|
76
|
-
private noteHashLeafIndexMap: Map<bigint, bigint> = new Map();
|
|
77
73
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
78
74
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
79
75
|
private offchainEffects: { data: Fr[] }[] = [];
|
|
80
76
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
81
77
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
callContext.contractAddress,
|
|
116
|
-
authWitnesses,
|
|
117
|
-
capsules,
|
|
118
|
-
anchorBlockHeader,
|
|
119
|
-
contractStore,
|
|
120
|
-
noteStore,
|
|
121
|
-
keyStore,
|
|
122
|
-
addressStore,
|
|
123
|
-
aztecNode,
|
|
124
|
-
anchorBlockStore,
|
|
125
|
-
recipientTaggingStore,
|
|
126
|
-
senderAddressBookStore,
|
|
127
|
-
capsuleStore,
|
|
128
|
-
privateEventStore,
|
|
129
|
-
log,
|
|
130
|
-
scopes,
|
|
131
|
-
);
|
|
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;
|
|
132
111
|
}
|
|
133
112
|
|
|
134
113
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -160,14 +139,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
160
139
|
return toACVMWitness(0, fields);
|
|
161
140
|
}
|
|
162
141
|
|
|
163
|
-
/**
|
|
164
|
-
* The KernelProver will use this to fully populate witnesses and provide hints to the kernel circuit
|
|
165
|
-
* regarding which note hash each settled read request corresponds to.
|
|
166
|
-
*/
|
|
167
|
-
public getNoteHashLeafIndexMap() {
|
|
168
|
-
return this.noteHashLeafIndexMap;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
142
|
/**
|
|
172
143
|
* Get the data for the newly created notes.
|
|
173
144
|
*/
|
|
@@ -260,7 +231,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
260
231
|
sender: AztecAddress,
|
|
261
232
|
recipient: AztecAddress,
|
|
262
233
|
) {
|
|
263
|
-
const senderCompleteAddress = await this.
|
|
234
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
264
235
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
265
236
|
return DirectionalAppTaggingSecret.compute(
|
|
266
237
|
senderCompleteAddress,
|
|
@@ -281,9 +252,16 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
281
252
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
282
253
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
283
254
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
284
|
-
await syncSenderTaggingIndexes(
|
|
285
|
-
|
|
286
|
-
|
|
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);
|
|
287
265
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
288
266
|
// Otherwise, the next index to use is one past the last used index
|
|
289
267
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -372,7 +350,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
372
350
|
|
|
373
351
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
374
352
|
|
|
375
|
-
const noteService = new NoteService(this.noteStore, this.aztecNode, this.
|
|
353
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
376
354
|
const dbNotes = await noteService.getNotes(
|
|
377
355
|
this.callContext.contractAddress,
|
|
378
356
|
owner,
|
|
@@ -402,23 +380,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
402
380
|
.join(', ')}`,
|
|
403
381
|
);
|
|
404
382
|
|
|
405
|
-
const noteHashesAndIndexes = await Promise.all(
|
|
406
|
-
notes.map(async n => {
|
|
407
|
-
if (n.index !== undefined) {
|
|
408
|
-
const siloedNoteHash = await siloNoteHash(n.contractAddress, n.noteHash);
|
|
409
|
-
const uniqueNoteHash = await computeUniqueNoteHash(n.noteNonce, siloedNoteHash);
|
|
410
|
-
|
|
411
|
-
return { hash: uniqueNoteHash, index: n.index };
|
|
412
|
-
}
|
|
413
|
-
}),
|
|
414
|
-
);
|
|
415
|
-
|
|
416
|
-
noteHashesAndIndexes
|
|
417
|
-
.filter(n => n !== undefined)
|
|
418
|
-
.forEach(n => {
|
|
419
|
-
this.noteHashLeafIndexMap.set(n!.hash.toBigInt(), n!.index);
|
|
420
|
-
});
|
|
421
|
-
|
|
422
383
|
return notes;
|
|
423
384
|
}
|
|
424
385
|
|
|
@@ -461,6 +422,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
461
422
|
note,
|
|
462
423
|
siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
|
|
463
424
|
noteHash,
|
|
425
|
+
isPending: true, // This note has just been created and hence is not settled yet.
|
|
464
426
|
},
|
|
465
427
|
counter,
|
|
466
428
|
);
|
|
@@ -495,6 +457,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
495
457
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
496
458
|
}
|
|
497
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
|
+
|
|
498
473
|
/**
|
|
499
474
|
* Emit a contract class log.
|
|
500
475
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -551,9 +526,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
551
526
|
|
|
552
527
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
553
528
|
|
|
554
|
-
await
|
|
555
|
-
|
|
556
|
-
|
|
529
|
+
await this.contractSyncService.ensureContractSynced(
|
|
530
|
+
targetContractAddress,
|
|
531
|
+
functionSelector,
|
|
532
|
+
this.utilityExecutor,
|
|
533
|
+
this.anchorBlockHeader,
|
|
534
|
+
this.jobId,
|
|
535
|
+
);
|
|
557
536
|
|
|
558
537
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
559
538
|
targetContractAddress,
|
|
@@ -564,40 +543,41 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
564
543
|
|
|
565
544
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
566
545
|
|
|
567
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
546
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
568
547
|
argsHash,
|
|
569
|
-
derivedTxContext,
|
|
570
|
-
derivedCallContext,
|
|
571
|
-
this.anchorBlockHeader,
|
|
572
|
-
this.utilityExecutor,
|
|
573
|
-
this.authWitnesses,
|
|
574
|
-
this.capsules,
|
|
575
|
-
this.executionCache,
|
|
576
|
-
this.noteCache,
|
|
577
|
-
this.taggingIndexCache,
|
|
578
|
-
this.contractStore,
|
|
579
|
-
this.noteStore,
|
|
580
|
-
this.keyStore,
|
|
581
|
-
this.addressStore,
|
|
582
|
-
this.aztecNode,
|
|
583
|
-
this.
|
|
584
|
-
this.
|
|
585
|
-
this.
|
|
586
|
-
this.
|
|
587
|
-
this.
|
|
588
|
-
this.
|
|
589
|
-
this.
|
|
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,
|
|
590
570
|
sideEffectCounter,
|
|
591
|
-
this.log,
|
|
592
|
-
this.scopes,
|
|
593
|
-
this.senderForTags,
|
|
594
|
-
this.simulator
|
|
595
|
-
);
|
|
571
|
+
log: this.log,
|
|
572
|
+
scopes: this.scopes,
|
|
573
|
+
senderForTags: this.senderForTags,
|
|
574
|
+
simulator: this.simulator!,
|
|
575
|
+
});
|
|
596
576
|
|
|
597
577
|
const setupTime = simulatorSetupTimer.ms();
|
|
598
578
|
|
|
599
579
|
const childExecutionResult = await executePrivateFunction(
|
|
600
|
-
this.simulator
|
|
580
|
+
this.simulator!,
|
|
601
581
|
privateExecutionOracle,
|
|
602
582
|
targetArtifact,
|
|
603
583
|
targetContractAddress,
|