@aztec/pxe 0.0.1-commit.2448fdb → 0.0.1-commit.2606882
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 +40 -96
- package/dest/bin/index.d.ts +2 -0
- package/dest/bin/index.d.ts.map +1 -0
- package/dest/bin/index.js +1 -0
- package/dest/bin/oracle_version_helpers.d.ts +26 -0
- package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
- package/dest/bin/oracle_version_helpers.js +93 -0
- package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
- package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
- package/dest/block_synchronizer/block_stream_source.js +62 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts +5 -3
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +21 -11
- package/dest/config/index.d.ts +8 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +13 -15
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +4 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +20 -12
- package/dest/contract_function_simulator/execution_note_cache.d.ts +2 -2
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -9
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
- package/dest/contract_function_simulator/index.d.ts +13 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +10 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +48 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.js +45 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -2
- 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 +3 -2
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +12 -2
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +34 -3
- package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
- package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -2
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +3 -2
- package/dest/contract_function_simulator/noir-structs/option.d.ts +61 -0
- package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/option.js +62 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +11 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.js +24 -0
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +16 -114
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
- package/dest/contract_function_simulator/oracle/oracle.d.ts +55 -57
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +343 -344
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +127 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.js +786 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +139 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +560 -0
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +27 -29
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +55 -47
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +59 -39
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +244 -149
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +35 -67
- package/dest/contract_sync/contract_sync_service.d.ts +4 -6
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
- package/dest/contract_sync/contract_sync_service.js +43 -24
- package/dest/contract_sync/helpers.d.ts +2 -3
- package/dest/contract_sync/helpers.d.ts.map +1 -1
- package/dest/contract_sync/helpers.js +12 -19
- package/dest/debug/pxe_debug_utils.d.ts +1 -6
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +0 -6
- 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 +11 -3
- 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 +11 -3
- package/dest/entrypoints/pxe_creation_options.d.ts +7 -1
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +2 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +1 -0
- package/dest/entrypoints/server/utils.d.ts +3 -2
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +11 -3
- package/dest/events/event_service.d.ts +13 -5
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +30 -9
- package/dest/hooks/authorize_utility_call.d.ts +41 -0
- package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
- package/dest/hooks/authorize_utility_call.js +4 -0
- package/dest/hooks/execution_hooks.d.ts +42 -0
- package/dest/hooks/execution_hooks.d.ts.map +1 -0
- package/dest/hooks/execution_hooks.js +9 -0
- package/dest/hooks/index.d.ts +4 -0
- package/dest/hooks/index.d.ts.map +1 -0
- package/dest/hooks/index.js +1 -0
- package/dest/logs/log_service.d.ts +6 -5
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +112 -48
- package/dest/messages/message_context_service.d.ts +1 -1
- package/dest/messages/message_context_service.d.ts.map +1 -1
- package/dest/messages/message_context_service.js +28 -9
- package/dest/notes/note_service.d.ts +25 -3
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +80 -65
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.js +4 -4
- package/dest/private_kernel/batch_planner.d.ts +47 -0
- package/dest/private_kernel/batch_planner.d.ts.map +1 -0
- package/dest/private_kernel/batch_planner.js +104 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +1 -1
- package/dest/private_kernel/hints/test_utils.d.ts +1 -1
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
- package/dest/private_kernel/hints/test_utils.js +2 -3
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +148 -52
- package/dest/private_kernel/private_kernel_oracle.d.ts +6 -6
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +12 -7
- package/dest/pxe.d.ts +54 -7
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +126 -84
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.js +591 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
- package/dest/storage/contract_store/contract_store.d.ts +1 -1
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +5 -24
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/open_pxe_stores.d.ts +33 -0
- package/dest/storage/open_pxe_stores.d.ts.map +1 -0
- package/dest/storage/open_pxe_stores.js +27 -0
- package/dest/storage/private_event_store/stored_private_event.js +1 -1
- 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 +5 -5
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +3 -3
- package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +36 -37
- package/dest/tagging/index.d.ts +5 -4
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +4 -3
- package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
- package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
- package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +56 -0
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +163 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
- package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
- package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
- package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -5
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +26 -14
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -6
- 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 +21 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
- 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 +2 -2
- package/package.json +20 -17
- package/src/bin/check_oracle_version.ts +46 -119
- package/src/bin/index.ts +1 -0
- package/src/bin/oracle_version_helpers.ts +121 -0
- package/src/block_synchronizer/block_stream_source.ts +81 -0
- package/src/block_synchronizer/block_synchronizer.ts +22 -12
- package/src/config/index.ts +15 -9
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +34 -11
- package/src/contract_function_simulator/execution_note_cache.ts +1 -1
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
- package/src/contract_function_simulator/index.ts +50 -1
- package/src/contract_function_simulator/noir-structs/bounded_vec.ts +55 -0
- package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +3 -2
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +35 -2
- package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -2
- package/src/contract_function_simulator/noir-structs/option.ts +69 -0
- package/src/contract_function_simulator/noir-structs/provided_secret.ts +27 -0
- package/src/contract_function_simulator/oracle/interfaces.ts +12 -204
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
- package/src/contract_function_simulator/oracle/oracle.ts +406 -556
- package/src/contract_function_simulator/oracle/oracle_registry.ts +585 -0
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +553 -0
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +74 -67
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +350 -304
- package/src/contract_function_simulator/proxied_contract_data_source.ts +40 -70
- package/src/contract_sync/contract_sync_service.ts +56 -43
- package/src/contract_sync/helpers.ts +11 -23
- package/src/debug/pxe_debug_utils.ts +0 -8
- package/src/entrypoints/client/bundle/utils.ts +8 -2
- package/src/entrypoints/client/lazy/utils.ts +8 -2
- package/src/entrypoints/pxe_creation_options.ts +7 -0
- package/src/entrypoints/server/index.ts +1 -0
- package/src/entrypoints/server/utils.ts +13 -3
- package/src/events/event_service.ts +54 -19
- package/src/hooks/authorize_utility_call.ts +44 -0
- package/src/hooks/execution_hooks.ts +48 -0
- package/src/hooks/index.ts +7 -0
- package/src/logs/log_service.ts +137 -92
- package/src/messages/message_context_service.ts +42 -24
- package/src/notes/note_service.ts +115 -91
- package/src/oracle_version.ts +4 -4
- package/src/private_kernel/batch_planner.ts +169 -0
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +1 -1
- package/src/private_kernel/hints/test_utils.ts +2 -9
- package/src/private_kernel/private_kernel_execution_prover.ts +236 -73
- package/src/private_kernel/private_kernel_oracle.ts +21 -11
- package/src/pxe.ts +208 -85
- package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +46 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +36 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +16 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +97 -0
- package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
- package/src/storage/backwards_compatibility_tests/schema_tests.ts +712 -0
- package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
- package/src/storage/contract_store/contract_store.ts +6 -29
- package/src/storage/metadata.ts +1 -1
- package/src/storage/open_pxe_stores.ts +49 -0
- package/src/storage/private_event_store/stored_private_event.ts +1 -1
- package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
- package/src/storage/tagging_store/sender_tagging_store.ts +6 -6
- package/src/tagging/get_all_logs_by_tags.ts +78 -50
- package/src/tagging/index.ts +4 -3
- package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
- package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +240 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +41 -19
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +23 -8
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +4 -5
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -47
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -85
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -104
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -130
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
|
@@ -2,11 +2,10 @@ 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 {
|
|
5
|
+
import { toACVMWitness } from '@aztec/simulator/client';
|
|
6
6
|
import {
|
|
7
7
|
type FunctionAbi,
|
|
8
8
|
type FunctionArtifact,
|
|
9
|
-
type FunctionCall,
|
|
10
9
|
FunctionSelector,
|
|
11
10
|
type NoteSelector,
|
|
12
11
|
countArgumentsSize,
|
|
@@ -14,8 +13,12 @@ import {
|
|
|
14
13
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
14
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
16
15
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
17
|
-
import {
|
|
18
|
-
|
|
16
|
+
import {
|
|
17
|
+
AppTaggingSecret,
|
|
18
|
+
AppTaggingSecretKind,
|
|
19
|
+
type ContractClassLog,
|
|
20
|
+
type TaggingIndexRange,
|
|
21
|
+
} from '@aztec/stdlib/logs';
|
|
19
22
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
20
23
|
import {
|
|
21
24
|
CallContext,
|
|
@@ -31,8 +34,11 @@ import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
|
31
34
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
32
35
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
33
36
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
37
|
+
import { BoundedVec } from '../noir-structs/bounded_vec.js';
|
|
38
|
+
import type { NoteData } from '../noir-structs/note_data.js';
|
|
39
|
+
import { Option } from '../noir-structs/option.js';
|
|
34
40
|
import { pickNotes } from '../pick_notes.js';
|
|
35
|
-
import type { IPrivateExecutionOracle
|
|
41
|
+
import type { IPrivateExecutionOracle } from './interfaces.js';
|
|
36
42
|
import { executePrivateFunction } from './private_execution.js';
|
|
37
43
|
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
38
44
|
|
|
@@ -41,8 +47,6 @@ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contr
|
|
|
41
47
|
argsHash: Fr;
|
|
42
48
|
txContext: TxContext;
|
|
43
49
|
callContext: CallContext;
|
|
44
|
-
/** Needed to trigger contract synchronization before nested calls */
|
|
45
|
-
utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<void>;
|
|
46
50
|
executionCache: HashedValuesCache;
|
|
47
51
|
noteCache: ExecutionNoteCache;
|
|
48
52
|
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
@@ -50,7 +54,6 @@ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contr
|
|
|
50
54
|
totalPublicCalldataCount?: number;
|
|
51
55
|
sideEffectCounter?: number;
|
|
52
56
|
senderForTags?: AztecAddress;
|
|
53
|
-
simulator?: CircuitSimulator;
|
|
54
57
|
};
|
|
55
58
|
|
|
56
59
|
/**
|
|
@@ -75,15 +78,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
75
78
|
private readonly argsHash: Fr;
|
|
76
79
|
private readonly txContext: TxContext;
|
|
77
80
|
private readonly callContext: CallContext;
|
|
78
|
-
private readonly utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<void>;
|
|
79
81
|
private readonly executionCache: HashedValuesCache;
|
|
80
82
|
private readonly noteCache: ExecutionNoteCache;
|
|
81
83
|
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
82
84
|
private readonly senderTaggingStore: SenderTaggingStore;
|
|
83
85
|
private totalPublicCalldataCount: number;
|
|
84
86
|
private readonly initialSideEffectCounter: number;
|
|
85
|
-
|
|
86
|
-
private readonly
|
|
87
|
+
/** Sender for tags passed in at oracle construction time. Returned by `getSenderForTags`. */
|
|
88
|
+
private readonly defaultSenderForTags: AztecAddress | undefined;
|
|
87
89
|
|
|
88
90
|
constructor(args: PrivateExecutionOracleArgs) {
|
|
89
91
|
super({
|
|
@@ -94,15 +96,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
94
96
|
this.argsHash = args.argsHash;
|
|
95
97
|
this.txContext = args.txContext;
|
|
96
98
|
this.callContext = args.callContext;
|
|
97
|
-
this.utilityExecutor = args.utilityExecutor;
|
|
98
99
|
this.executionCache = args.executionCache;
|
|
99
100
|
this.noteCache = args.noteCache;
|
|
100
101
|
this.taggingIndexCache = args.taggingIndexCache;
|
|
101
102
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
102
103
|
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
103
104
|
this.initialSideEffectCounter = args.sideEffectCounter ?? 0;
|
|
104
|
-
this.
|
|
105
|
-
this.simulator = args.simulator;
|
|
105
|
+
this.defaultSenderForTags = args.senderForTags;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -178,69 +178,62 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
178
178
|
* for a tag in order to emit a log. Constrained tagging should not use this as there is no
|
|
179
179
|
* guarantee that the recipient knows about the sender, and hence about the shared secret.
|
|
180
180
|
*
|
|
181
|
-
*
|
|
182
|
-
* 'senderForTags' value (unless it is replaced).
|
|
181
|
+
* Returns the wallet-supplied default sender for tags, or `None` if no default was provided.
|
|
183
182
|
*/
|
|
184
|
-
public getSenderForTags(): Promise<AztecAddress
|
|
185
|
-
return Promise.resolve(
|
|
183
|
+
public getSenderForTags(): Promise<Option<AztecAddress>> {
|
|
184
|
+
return Promise.resolve(
|
|
185
|
+
this.defaultSenderForTags ? Option.some(this.defaultSenderForTags) : Option.none(AztecAddress.ZERO),
|
|
186
|
+
);
|
|
186
187
|
}
|
|
187
188
|
|
|
188
189
|
/**
|
|
189
|
-
*
|
|
190
|
+
* Returns the sender-side app tagging secret for a `(sender, recipient)` pair.
|
|
190
191
|
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
* guarantee that the recipient knows about the sender, and hence about the shared secret.
|
|
192
|
+
* The caller obtains an index via {@link getNextTaggingIndex} and computes the final tag itself.
|
|
193
|
+
* The only expected `None` case is an invalid recipient address; missing sender data fails while deriving.
|
|
194
194
|
*
|
|
195
|
-
* Account contracts typically set this value before calling other contracts. The value persists
|
|
196
|
-
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
197
|
-
* value (unless it is replaced by another call to this setter).
|
|
198
|
-
*/
|
|
199
|
-
public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
200
|
-
this.senderForTags = senderForTags;
|
|
201
|
-
return Promise.resolve();
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Returns the next app tag for a given sender and recipient pair.
|
|
206
195
|
* @param sender - The address sending the log
|
|
207
196
|
* @param recipient - The address receiving the log
|
|
208
|
-
* @returns
|
|
197
|
+
* @returns The app tagging secret, or `None` if the recipient is invalid.
|
|
209
198
|
*/
|
|
210
|
-
public async
|
|
211
|
-
const extendedSecret = await this.#
|
|
212
|
-
this.contractAddress,
|
|
213
|
-
sender,
|
|
214
|
-
recipient,
|
|
215
|
-
);
|
|
199
|
+
public async getAppTaggingSecret(sender: AztecAddress, recipient: AztecAddress): Promise<Option<Fr>> {
|
|
200
|
+
const extendedSecret = await this.#calculateAppTaggingSecret(this.contractAddress, sender, recipient);
|
|
216
201
|
|
|
217
202
|
if (!extendedSecret) {
|
|
218
|
-
|
|
219
|
-
// king-of-the-hill attacks, instead of failing we use a random tag. By including a correct-looking tag in the
|
|
220
|
-
// log, the transaction shape is preserved and no privacy is leaked, even if the tag is bogus.
|
|
221
|
-
this.logger.warn(`Computing a tag for invalid recipient ${recipient} - returning a random tag instead`, {
|
|
203
|
+
this.logger.warn(`Computing a tagging secret for invalid recipient ${recipient} - returning no secret`, {
|
|
222
204
|
contractAddress: this.contractAddress,
|
|
223
205
|
});
|
|
224
|
-
return
|
|
206
|
+
return Option.none(Fr.ZERO);
|
|
225
207
|
}
|
|
226
208
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
230
|
-
);
|
|
231
|
-
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
209
|
+
return Option.some(extendedSecret.secret);
|
|
210
|
+
}
|
|
232
211
|
|
|
233
|
-
|
|
212
|
+
/**
|
|
213
|
+
* Returns the next sender-side tagging index for a given secret and delivery mode.
|
|
214
|
+
*
|
|
215
|
+
* @param secret - The tagging secret to allocate an index for.
|
|
216
|
+
* @param kind - The sender-side index namespace.
|
|
217
|
+
* @returns The next index to use for this secret.
|
|
218
|
+
*/
|
|
219
|
+
public async getNextTaggingIndex(secret: Fr, kind: AppTaggingSecretKind): Promise<number> {
|
|
220
|
+
const appTaggingSecret = new AppTaggingSecret(secret, this.contractAddress, kind);
|
|
221
|
+
const index = await this.#reserveNextIndexForSecret(appTaggingSecret);
|
|
222
|
+
this.logger.debug(`Incrementing ${kind} tagging index for secret in contract ${this.contractAddress} to ${index}`);
|
|
223
|
+
return index;
|
|
234
224
|
}
|
|
235
225
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
226
|
+
/** Resolves the next index for a given tagging secret, syncing from chain if it is missing from the in-tx cache. */
|
|
227
|
+
async #reserveNextIndexForSecret(secret: AppTaggingSecret): Promise<number> {
|
|
228
|
+
const index = await this.#getIndexToUseForSecret(secret);
|
|
229
|
+
this.taggingIndexCache.setLastUsedIndex(secret, index);
|
|
230
|
+
return index;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
async #calculateAppTaggingSecret(contractAddress: AztecAddress, sender: AztecAddress, recipient: AztecAddress) {
|
|
241
234
|
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
242
235
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
243
|
-
return
|
|
236
|
+
return AppTaggingSecret.computeUnconstrained(
|
|
244
237
|
senderCompleteAddress,
|
|
245
238
|
senderIvsk,
|
|
246
239
|
recipient,
|
|
@@ -249,7 +242,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
249
242
|
);
|
|
250
243
|
}
|
|
251
244
|
|
|
252
|
-
async #getIndexToUseForSecret(secret:
|
|
245
|
+
async #getIndexToUseForSecret(secret: AppTaggingSecret): Promise<number> {
|
|
253
246
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
254
247
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
255
248
|
|
|
@@ -335,7 +328,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
335
328
|
* @returns Array of note data.
|
|
336
329
|
*/
|
|
337
330
|
public override async getNotes(
|
|
338
|
-
owner: AztecAddress
|
|
331
|
+
owner: Option<AztecAddress>,
|
|
339
332
|
storageSlot: Fr,
|
|
340
333
|
numSelects: number,
|
|
341
334
|
selectByIndexes: number[],
|
|
@@ -350,16 +343,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
350
343
|
limit: number,
|
|
351
344
|
offset: number,
|
|
352
345
|
status: NoteStatus,
|
|
353
|
-
|
|
346
|
+
maxNotes: number,
|
|
347
|
+
packedHintedNoteLength: number,
|
|
348
|
+
): Promise<BoundedVec<NoteData>> {
|
|
354
349
|
// Nullified pending notes are already removed from the list.
|
|
355
|
-
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
|
|
350
|
+
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner.value, storageSlot);
|
|
356
351
|
|
|
357
352
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
358
353
|
|
|
359
354
|
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
360
355
|
const dbNotes = await noteService.getNotes(
|
|
361
356
|
this.callContext.contractAddress,
|
|
362
|
-
owner,
|
|
357
|
+
owner.value,
|
|
363
358
|
storageSlot,
|
|
364
359
|
status,
|
|
365
360
|
this.scopes,
|
|
@@ -386,7 +381,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
386
381
|
.join(', ')}`,
|
|
387
382
|
);
|
|
388
383
|
|
|
389
|
-
return notes;
|
|
384
|
+
return BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength });
|
|
390
385
|
}
|
|
391
386
|
|
|
392
387
|
/**
|
|
@@ -576,23 +571,27 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
576
571
|
jobId: this.jobId,
|
|
577
572
|
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
578
573
|
sideEffectCounter,
|
|
579
|
-
scopes: this.scopes,
|
|
580
574
|
log: this.logger,
|
|
581
|
-
|
|
582
|
-
|
|
575
|
+
scopes: this.scopes,
|
|
576
|
+
senderForTags: this.defaultSenderForTags,
|
|
577
|
+
simulator: this.simulator,
|
|
578
|
+
hooks: this.hooks,
|
|
583
579
|
l2TipsStore: this.l2TipsStore,
|
|
584
580
|
});
|
|
585
581
|
|
|
586
582
|
const setupTime = simulatorSetupTimer.ms();
|
|
587
583
|
|
|
588
584
|
const childExecutionResult = await executePrivateFunction(
|
|
589
|
-
this.simulator
|
|
585
|
+
this.simulator,
|
|
590
586
|
privateExecutionOracle,
|
|
591
587
|
targetArtifact,
|
|
592
588
|
targetContractAddress,
|
|
593
589
|
functionSelector,
|
|
594
590
|
);
|
|
595
591
|
|
|
592
|
+
// Propagate the nested call's calldata count so the parent sees its increments on subsequent enqueues.
|
|
593
|
+
this.totalPublicCalldataCount = privateExecutionOracle.getTotalPublicCalldataCount();
|
|
594
|
+
|
|
596
595
|
if (isStaticCall) {
|
|
597
596
|
this.#checkValidStaticCall(childExecutionResult);
|
|
598
597
|
}
|
|
@@ -626,6 +625,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
626
625
|
return Promise.resolve();
|
|
627
626
|
}
|
|
628
627
|
|
|
628
|
+
public getTotalPublicCalldataCount(): number {
|
|
629
|
+
return this.totalPublicCalldataCount;
|
|
630
|
+
}
|
|
631
|
+
|
|
629
632
|
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
630
633
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
631
634
|
}
|
|
@@ -657,4 +660,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
657
660
|
public getDebugFunctionName() {
|
|
658
661
|
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
659
662
|
}
|
|
663
|
+
|
|
664
|
+
protected override get callerContext() {
|
|
665
|
+
return this.callContext.isStaticCall ? 'private view' : 'private';
|
|
666
|
+
}
|
|
660
667
|
}
|