@aztec/pxe 5.0.0-rc.1 → 5.0.0
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/block_synchronizer/block_stream_source.d.ts +5 -5
- package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -1
- package/dest/block_synchronizer/block_stream_source.js +4 -29
- package/dest/block_synchronizer/block_synchronizer.d.ts +16 -12
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +49 -15
- package/dest/config/index.d.ts +2 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +1 -0
- package/dest/contract/contract_class_service.d.ts +31 -0
- package/dest/contract/contract_class_service.d.ts.map +1 -0
- package/dest/contract/contract_class_service.js +68 -0
- package/dest/{contract_sync → contract}/contract_sync_service.d.ts +7 -6
- package/dest/contract/contract_sync_service.d.ts.map +1 -0
- package/dest/{contract_sync → contract}/contract_sync_service.js +10 -30
- package/dest/contract/helpers.d.ts +7 -0
- package/dest/contract/helpers.d.ts.map +1 -0
- package/dest/contract/helpers.js +20 -0
- package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
- package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
- package/dest/contract_function_simulator/aztec_node_read_cache.d.ts +39 -0
- package/dest/contract_function_simulator/aztec_node_read_cache.d.ts.map +1 -0
- package/dest/contract_function_simulator/aztec_node_read_cache.js +60 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +19 -18
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +52 -31
- package/dest/contract_function_simulator/execution_note_cache.d.ts +3 -9
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +8 -28
- package/dest/contract_function_simulator/index.d.ts +17 -9
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +4 -7
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +8 -27
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/bounded_vec.js +8 -23
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +11 -12
- 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 +6 -49
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +10 -8
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -60
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +2 -2
- package/dest/contract_function_simulator/noir-structs/option.d.ts +9 -11
- package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/option.js +18 -13
- package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +6 -9
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -14
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +21 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.js +50 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +14 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts +7 -2
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/acir_callback.js +55 -11
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +86 -8
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle_registry.js +168 -18
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +123 -40
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +947 -264
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +21 -8
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +126 -16
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +63 -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 +175 -90
- package/dest/debug/pxe_debug_utils.d.ts +2 -2
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- 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 +3 -2
- 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 +3 -2
- package/dest/entrypoints/pxe_creation_options.d.ts +8 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +5 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +3 -2
- 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 +3 -1
- package/dest/error_enriching.d.ts +5 -3
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +13 -11
- package/dest/hooks/execution_hooks.d.ts +27 -7
- package/dest/hooks/execution_hooks.d.ts.map +1 -1
- package/dest/hooks/execution_hooks.js +3 -3
- package/dest/hooks/index.d.ts +4 -3
- package/dest/hooks/index.d.ts.map +1 -1
- package/dest/hooks/index.js +1 -0
- package/dest/hooks/resolve_custom_request.d.ts +23 -0
- package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
- package/dest/hooks/resolve_custom_request.js +3 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
- package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
- package/dest/logs/log_service.d.ts +7 -6
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +79 -28
- package/dest/messages/tx_resolver_service.d.ts +17 -0
- package/dest/messages/tx_resolver_service.d.ts.map +1 -0
- package/dest/messages/{message_context_service.js → tx_resolver_service.js} +8 -8
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.js +3 -3
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +6 -2
- package/dest/private_kernel/hints/test_utils.js +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +17 -36
- package/dest/private_kernel/private_kernel_oracle.d.ts +4 -2
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +17 -5
- package/dest/pxe.d.ts +109 -47
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +222 -139
- package/dest/storage/allowed_scopes.d.ts +6 -0
- package/dest/storage/allowed_scopes.d.ts.map +1 -0
- package/dest/storage/allowed_scopes.js +7 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +1 -1
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -1
- package/dest/storage/backwards_compatibility_tests/schema_tests.js +114 -37
- package/dest/storage/capsule_store/capsule_service.d.ts +1 -1
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_service.js +6 -9
- package/dest/storage/contract_store/contract_store.d.ts +27 -24
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +64 -75
- package/dest/storage/fact_store/fact_service.d.ts +22 -0
- package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_service.js +45 -0
- package/dest/storage/fact_store/fact_store.d.ts +95 -0
- package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_store.js +408 -0
- package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
- package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_store_keys.js +50 -0
- package/dest/storage/fact_store/index.d.ts +6 -0
- package/dest/storage/fact_store/index.d.ts.map +1 -0
- package/dest/storage/fact_store/index.js +4 -0
- package/dest/storage/fact_store/origin_state.d.ts +57 -0
- package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
- package/dest/storage/fact_store/origin_state.js +53 -0
- package/dest/storage/fact_store/stored_fact.d.ts +32 -0
- package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
- package/dest/storage/fact_store/stored_fact.js +64 -0
- package/dest/storage/index.d.ts +2 -1
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +1 -0
- package/dest/storage/metadata.d.ts +2 -2
- package/dest/storage/metadata.d.ts.map +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/open_pxe_stores.d.ts +5 -3
- package/dest/storage/open_pxe_stores.d.ts.map +1 -1
- package/dest/storage/open_pxe_stores.js +5 -3
- package/dest/storage/tagging_store/index.d.ts +2 -2
- package/dest/storage/tagging_store/index.d.ts.map +1 -1
- package/dest/storage/tagging_store/index.js +1 -1
- package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
- package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
- package/dest/tagging/constants.d.ts +2 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +18 -9
- package/package.json +17 -17
- package/src/block_synchronizer/block_stream_source.ts +6 -45
- package/src/block_synchronizer/block_synchronizer.ts +65 -24
- package/src/config/index.ts +1 -0
- package/src/contract/contract_class_service.ts +83 -0
- package/src/{contract_sync → contract}/contract_sync_service.ts +18 -37
- package/src/contract/helpers.ts +35 -0
- package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
- package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +86 -43
- package/src/contract_function_simulator/execution_note_cache.ts +7 -28
- package/src/contract_function_simulator/index.ts +24 -9
- package/src/contract_function_simulator/noir-structs/bounded_vec.ts +12 -24
- package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
- package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
- package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +20 -46
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +13 -60
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
- package/src/contract_function_simulator/noir-structs/option.ts +17 -11
- package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
- package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
- package/src/contract_function_simulator/noir-structs/provided_secret.ts +4 -15
- package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
- package/src/contract_function_simulator/noir-structs/resolved_tx.ts +53 -0
- package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +15 -0
- package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
- package/src/contract_function_simulator/oracle/acir_callback.ts +58 -12
- package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
- package/src/contract_function_simulator/oracle/oracle_registry.ts +119 -86
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +659 -248
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +155 -24
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +300 -115
- package/src/debug/pxe_debug_utils.ts +1 -1
- package/src/entrypoints/client/bundle/utils.ts +3 -2
- package/src/entrypoints/client/lazy/utils.ts +3 -2
- package/src/entrypoints/pxe_creation_options.ts +7 -1
- package/src/entrypoints/server/index.ts +5 -2
- package/src/entrypoints/server/utils.ts +3 -1
- package/src/error_enriching.ts +27 -11
- package/src/hooks/execution_hooks.ts +28 -8
- package/src/hooks/index.ts +8 -2
- package/src/hooks/resolve_custom_request.ts +24 -0
- package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
- package/src/logs/log_service.ts +91 -37
- package/src/messages/{message_context_service.ts → tx_resolver_service.ts} +16 -9
- package/src/oracle_version.ts +3 -3
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +11 -1
- package/src/private_kernel/hints/test_utils.ts +1 -1
- package/src/private_kernel/private_kernel_execution_prover.ts +22 -52
- package/src/private_kernel/private_kernel_oracle.ts +23 -4
- package/src/pxe.ts +320 -158
- package/src/storage/allowed_scopes.ts +14 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +6 -6
- package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +1 -1
- package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +12 -12
- package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +1 -1
- package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +11 -3
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +12 -4
- package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +21 -5
- package/src/storage/backwards_compatibility_tests/schema_tests.ts +125 -36
- package/src/storage/capsule_store/capsule_service.ts +8 -13
- package/src/storage/contract_store/contract_store.ts +86 -93
- package/src/storage/fact_store/fact_service.ts +69 -0
- package/src/storage/fact_store/fact_store.ts +487 -0
- package/src/storage/fact_store/fact_store_keys.ts +75 -0
- package/src/storage/fact_store/index.ts +14 -0
- package/src/storage/fact_store/origin_state.ts +75 -0
- package/src/storage/fact_store/stored_fact.ts +80 -0
- package/src/storage/index.ts +1 -0
- package/src/storage/metadata.ts +1 -1
- package/src/storage/open_pxe_stores.ts +6 -3
- package/src/storage/tagging_store/index.ts +1 -1
- package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
- package/src/tagging/constants.ts +19 -9
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -51
- package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
- package/dest/contract_sync/helpers.d.ts +0 -27
- package/dest/contract_sync/helpers.d.ts.map +0 -1
- package/dest/contract_sync/helpers.js +0 -53
- package/dest/messages/message_context_service.d.ts +0 -17
- package/dest/messages/message_context_service.d.ts.map +0 -1
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
- package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
- package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -60
- package/src/contract_sync/helpers.ts +0 -86
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +0 -16
- package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
|
@@ -16,7 +16,8 @@ import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
|
16
16
|
import {
|
|
17
17
|
AppTaggingSecret,
|
|
18
18
|
AppTaggingSecretKind,
|
|
19
|
-
|
|
19
|
+
ContractClassLog,
|
|
20
|
+
ContractClassLogFields,
|
|
20
21
|
type TaggingIndexRange,
|
|
21
22
|
} from '@aztec/stdlib/logs';
|
|
22
23
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
@@ -28,6 +29,12 @@ import {
|
|
|
28
29
|
type TxContext,
|
|
29
30
|
} from '@aztec/stdlib/tx';
|
|
30
31
|
|
|
32
|
+
import type { ResolveCustomRequest } from '../../hooks/resolve_custom_request.js';
|
|
33
|
+
import {
|
|
34
|
+
DEFAULT_TAGGING_SECRET_STRATEGY,
|
|
35
|
+
type ResolveTaggingSecretStrategy,
|
|
36
|
+
type TaggingSecretStrategy,
|
|
37
|
+
} from '../../hooks/resolve_tagging_secret_strategy.js';
|
|
31
38
|
import { NoteService } from '../../notes/note_service.js';
|
|
32
39
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
33
40
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
@@ -35,18 +42,20 @@ import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
|
35
42
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
36
43
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
37
44
|
import { BoundedVec } from '../noir-structs/bounded_vec.js';
|
|
45
|
+
import type { ContractClassLogData } from '../noir-structs/contract_class_log_data.js';
|
|
38
46
|
import type { NoteData } from '../noir-structs/note_data.js';
|
|
39
47
|
import { Option } from '../noir-structs/option.js';
|
|
48
|
+
import type { ResolvedTaggingStrategy } from '../noir-structs/resolved_tagging_strategy.js';
|
|
40
49
|
import { pickNotes } from '../pick_notes.js';
|
|
41
50
|
import type { IPrivateExecutionOracle } from './interfaces.js';
|
|
42
51
|
import { executePrivateFunction } from './private_execution.js';
|
|
43
52
|
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
44
53
|
|
|
45
54
|
/** Args for PrivateExecutionOracle constructor. */
|
|
46
|
-
export type PrivateExecutionOracleArgs =
|
|
55
|
+
export type PrivateExecutionOracleArgs = UtilityExecutionOracleArgs & {
|
|
47
56
|
argsHash: Fr;
|
|
48
57
|
txContext: TxContext;
|
|
49
|
-
|
|
58
|
+
txRequestSalt: Fr;
|
|
50
59
|
executionCache: HashedValuesCache;
|
|
51
60
|
noteCache: ExecutionNoteCache;
|
|
52
61
|
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
@@ -77,7 +86,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
77
86
|
|
|
78
87
|
private readonly argsHash: Fr;
|
|
79
88
|
private readonly txContext: TxContext;
|
|
80
|
-
private readonly
|
|
89
|
+
private readonly txRequestSalt: Fr;
|
|
81
90
|
private readonly executionCache: HashedValuesCache;
|
|
82
91
|
private readonly noteCache: ExecutionNoteCache;
|
|
83
92
|
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
@@ -90,12 +99,11 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
90
99
|
constructor(args: PrivateExecutionOracleArgs) {
|
|
91
100
|
super({
|
|
92
101
|
...args,
|
|
93
|
-
contractAddress: args.callContext.contractAddress,
|
|
94
102
|
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
95
103
|
});
|
|
96
104
|
this.argsHash = args.argsHash;
|
|
97
105
|
this.txContext = args.txContext;
|
|
98
|
-
this.
|
|
106
|
+
this.txRequestSalt = args.txRequestSalt;
|
|
99
107
|
this.executionCache = args.executionCache;
|
|
100
108
|
this.noteCache = args.noteCache;
|
|
101
109
|
this.taggingIndexCache = args.taggingIndexCache;
|
|
@@ -111,6 +119,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
111
119
|
this.anchorBlockHeader,
|
|
112
120
|
this.txContext,
|
|
113
121
|
this.initialSideEffectCounter,
|
|
122
|
+
this.txRequestSalt,
|
|
114
123
|
);
|
|
115
124
|
}
|
|
116
125
|
|
|
@@ -181,9 +190,124 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
181
190
|
* Returns the wallet-supplied default sender for tags, or `None` if no default was provided.
|
|
182
191
|
*/
|
|
183
192
|
public getSenderForTags(): Promise<Option<AztecAddress>> {
|
|
184
|
-
return Promise.resolve(
|
|
185
|
-
|
|
186
|
-
|
|
193
|
+
return Promise.resolve(this.defaultSenderForTags ? Option.some(this.defaultSenderForTags) : Option.none());
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Resolves a custom, caller-defined request via the {@link ResolveCustomRequest} hook, which produces the response
|
|
198
|
+
* however it needs to. Throws when no hook is configured, since the request cannot be served.
|
|
199
|
+
*/
|
|
200
|
+
public async resolveCustomRequest(kind: Fr, payload: Fr[]): Promise<Fr[]> {
|
|
201
|
+
const hook: ResolveCustomRequest | undefined = this.hooks?.resolveCustomRequest;
|
|
202
|
+
if (!hook) {
|
|
203
|
+
throw new Error('Cannot serve a request: no resolveCustomRequest hook is configured');
|
|
204
|
+
}
|
|
205
|
+
const contractClassId = await this.#getCurrentContractClassId(this.contractAddress);
|
|
206
|
+
return hook({ contractAddress: this.contractAddress, contractClassId, kind, payload });
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Resolves the tagging strategy for a message via the wallet's {@link ResolveTaggingSecretStrategy} hook. The contract receives a ready-to-use {@link ResolvedTaggingStrategy}.
|
|
211
|
+
* When no hook is configured, applies a default: a non-interactive handshake, except for an unconstrained self-send,
|
|
212
|
+
* which uses an address-derived secret.
|
|
213
|
+
*/
|
|
214
|
+
public async resolveTaggingStrategy(
|
|
215
|
+
sender: AztecAddress,
|
|
216
|
+
recipient: AztecAddress,
|
|
217
|
+
deliveryMode: AppTaggingSecretKind,
|
|
218
|
+
): Promise<ResolvedTaggingStrategy> {
|
|
219
|
+
const [isUnconstrainedSelfSend, chosenStrategy] = await Promise.all([
|
|
220
|
+
this.#isUnconstrainedSelfSend(recipient, deliveryMode),
|
|
221
|
+
this.#chooseTaggingSecretStrategy(sender, recipient, deliveryMode),
|
|
222
|
+
]);
|
|
223
|
+
|
|
224
|
+
// For unconstrained delivery, a self-send uses a local address-derived secret instead of a non-interactive
|
|
225
|
+
// handshake. A self-send is one where the wallet controls the recipient's keys, so both sides' keys are local: no
|
|
226
|
+
// handshake is needed and nothing is revealed onchain. It also avoids a recursion: a handshake self-delivers its
|
|
227
|
+
// note via unconstrained delivery, which would establish yet another handshake. This guard runs regardless of the
|
|
228
|
+
// resolved strategy (hook or default), to protect wallets from invalid configuration.
|
|
229
|
+
const strategy: TaggingSecretStrategy = isUnconstrainedSelfSend ? { type: 'address-derived' } : chosenStrategy;
|
|
230
|
+
|
|
231
|
+
return this.#resolveTaggingSecretStrategy(strategy, sender, recipient);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
async #chooseTaggingSecretStrategy(
|
|
235
|
+
sender: AztecAddress,
|
|
236
|
+
recipient: AztecAddress,
|
|
237
|
+
deliveryMode: AppTaggingSecretKind,
|
|
238
|
+
): Promise<TaggingSecretStrategy> {
|
|
239
|
+
const hook: ResolveTaggingSecretStrategy | undefined = this.hooks?.resolveTaggingSecretStrategy;
|
|
240
|
+
if (!hook) {
|
|
241
|
+
return DEFAULT_TAGGING_SECRET_STRATEGY;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
const contractClassId = await this.#getCurrentContractClassId(this.contractAddress);
|
|
245
|
+
return hook({
|
|
246
|
+
contractAddress: this.contractAddress,
|
|
247
|
+
contractClassId,
|
|
248
|
+
sender,
|
|
249
|
+
recipient,
|
|
250
|
+
deliveryMode,
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Resolves the class id the given contract runs at this simulation's anchor block. The instance no longer carries
|
|
256
|
+
* its class id (it is chain-derived), so it is resolved via the anchored contract data instead.
|
|
257
|
+
*/
|
|
258
|
+
async #getCurrentContractClassId(address: AztecAddress): Promise<Fr> {
|
|
259
|
+
const classId = await this.anchoredContractData.getCurrentClassId(address);
|
|
260
|
+
if (classId === undefined) {
|
|
261
|
+
throw new Error(`Cannot resolve the current contract class for ${address}`);
|
|
262
|
+
}
|
|
263
|
+
return classId;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/** Whether this is an unconstrained delivery to one of the wallet's own accounts (a self-send). */
|
|
267
|
+
#isUnconstrainedSelfSend(recipient: AztecAddress, deliveryMode: AppTaggingSecretKind) {
|
|
268
|
+
return deliveryMode === AppTaggingSecretKind.UNCONSTRAINED
|
|
269
|
+
? this.keyStore.hasAccount(recipient)
|
|
270
|
+
: Promise.resolve(false);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/** Resolves a wallet-provided {@link TaggingSecretStrategy} into the app-siloed secret handed to the contract. */
|
|
274
|
+
async #resolveTaggingSecretStrategy(
|
|
275
|
+
strategy: TaggingSecretStrategy,
|
|
276
|
+
sender: AztecAddress,
|
|
277
|
+
recipient: AztecAddress,
|
|
278
|
+
): Promise<ResolvedTaggingStrategy> {
|
|
279
|
+
// PXE only performs the derivation; it does not reject a strategy that is unsound for the delivery mode (e.g. an
|
|
280
|
+
// address-derived or arbitrary-secret strategy for constrained delivery). That soundness check belongs in the
|
|
281
|
+
// Noir circuit, which constrains the resolved strategy against the delivery mode.
|
|
282
|
+
switch (strategy.type) {
|
|
283
|
+
case 'non-interactive-handshake':
|
|
284
|
+
return { type: 'non-interactive-handshake' };
|
|
285
|
+
case 'interactive-handshake':
|
|
286
|
+
return { type: 'interactive-handshake' };
|
|
287
|
+
case 'address-derived':
|
|
288
|
+
return this.#addressDerivedSecret(sender, recipient);
|
|
289
|
+
case 'arbitrary-secret': {
|
|
290
|
+
// App-silo the raw arbitrary secret point here so wallets never replicate the derivation.
|
|
291
|
+
const appTaggingSecret = await AppTaggingSecret.computeDirectional(
|
|
292
|
+
strategy.secret,
|
|
293
|
+
this.contractAddress,
|
|
294
|
+
recipient,
|
|
295
|
+
);
|
|
296
|
+
return { type: 'unconstrained-secret', secret: appTaggingSecret.secret };
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* The app-siloed, recipient-directional secret derived from the sender's and recipient's address keys via ECDH,
|
|
303
|
+
* ready to hand to the contract. Callers must validate the recipient in-circuit before reaching here, so an invalid one is unexpected.
|
|
304
|
+
*/
|
|
305
|
+
async #addressDerivedSecret(sender: AztecAddress, recipient: AztecAddress): Promise<ResolvedTaggingStrategy> {
|
|
306
|
+
const secret = await this.getAppTaggingSecret(sender, recipient);
|
|
307
|
+
if (!secret.isSome()) {
|
|
308
|
+
throw new Error(`Cannot derive an address-derived tagging secret for invalid recipient ${recipient}`);
|
|
309
|
+
}
|
|
310
|
+
return { type: 'unconstrained-secret', secret: secret.value };
|
|
187
311
|
}
|
|
188
312
|
|
|
189
313
|
/**
|
|
@@ -203,7 +327,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
203
327
|
this.logger.warn(`Computing a tagging secret for invalid recipient ${recipient} - returning no secret`, {
|
|
204
328
|
contractAddress: this.contractAddress,
|
|
205
329
|
});
|
|
206
|
-
return Option.none(
|
|
330
|
+
return Option.none();
|
|
207
331
|
}
|
|
208
332
|
|
|
209
333
|
return Option.some(extendedSecret.secret);
|
|
@@ -233,13 +357,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
233
357
|
async #calculateAppTaggingSecret(contractAddress: AztecAddress, sender: AztecAddress, recipient: AztecAddress) {
|
|
234
358
|
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
235
359
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
236
|
-
return AppTaggingSecret.
|
|
237
|
-
senderCompleteAddress,
|
|
238
|
-
senderIvsk,
|
|
239
|
-
recipient,
|
|
240
|
-
contractAddress,
|
|
241
|
-
recipient,
|
|
242
|
-
);
|
|
360
|
+
return AppTaggingSecret.computeViaEcdh(senderCompleteAddress, senderIvsk, recipient, contractAddress, recipient);
|
|
243
361
|
}
|
|
244
362
|
|
|
245
363
|
async #getIndexToUseForSecret(secret: AppTaggingSecret): Promise<number> {
|
|
@@ -475,10 +593,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
475
593
|
* Emit a contract class log.
|
|
476
594
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
477
595
|
* keep the preimage in ts for later.
|
|
478
|
-
* @param
|
|
596
|
+
* @param logData - The contract class log to be emitted.
|
|
479
597
|
* @param counter - The contract class log's counter.
|
|
480
598
|
*/
|
|
481
|
-
public notifyCreatedContractClassLog(
|
|
599
|
+
public notifyCreatedContractClassLog(logData: ContractClassLogData, counter: number) {
|
|
600
|
+
const log = ContractClassLog.from({
|
|
601
|
+
contractAddress: logData.contractAddress,
|
|
602
|
+
fields: new ContractClassLogFields(logData.fields),
|
|
603
|
+
emittedLength: logData.emittedLength,
|
|
604
|
+
});
|
|
482
605
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
483
606
|
const text = log.toBuffer().toString('hex');
|
|
484
607
|
this.logger.verbose(
|
|
@@ -536,10 +659,16 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
536
659
|
this.scopes,
|
|
537
660
|
);
|
|
538
661
|
|
|
539
|
-
const targetArtifact = await this.
|
|
662
|
+
const targetArtifact = await this.anchoredContractData.getFunctionArtifactWithDebugMetadata(
|
|
540
663
|
targetContractAddress,
|
|
541
664
|
functionSelector,
|
|
542
665
|
);
|
|
666
|
+
if (!targetArtifact) {
|
|
667
|
+
throw new Error(
|
|
668
|
+
`Cannot call ${targetContractAddress}:${functionSelector}: the contract is not registered. ` +
|
|
669
|
+
`Register it via wallet.registerContract(...).`,
|
|
670
|
+
);
|
|
671
|
+
}
|
|
543
672
|
|
|
544
673
|
const derivedTxContext = this.txContext.clone();
|
|
545
674
|
|
|
@@ -548,6 +677,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
548
677
|
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
549
678
|
argsHash,
|
|
550
679
|
txContext: derivedTxContext,
|
|
680
|
+
txRequestSalt: this.txRequestSalt,
|
|
551
681
|
callContext: derivedCallContext,
|
|
552
682
|
anchorBlockHeader: this.anchorBlockHeader,
|
|
553
683
|
utilityExecutor: this.utilityExecutor,
|
|
@@ -556,17 +686,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
556
686
|
executionCache: this.executionCache,
|
|
557
687
|
noteCache: this.noteCache,
|
|
558
688
|
taggingIndexCache: this.taggingIndexCache,
|
|
559
|
-
|
|
689
|
+
anchoredContractData: this.anchoredContractData,
|
|
560
690
|
noteStore: this.noteStore,
|
|
561
691
|
keyStore: this.keyStore,
|
|
562
692
|
addressStore: this.addressStore,
|
|
563
693
|
aztecNode: this.aztecNode,
|
|
564
694
|
senderTaggingStore: this.senderTaggingStore,
|
|
565
695
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
566
|
-
|
|
696
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
567
697
|
capsuleService: this.capsuleService,
|
|
698
|
+
factService: this.factService,
|
|
568
699
|
privateEventStore: this.privateEventStore,
|
|
569
|
-
|
|
700
|
+
txResolver: this.txResolver,
|
|
570
701
|
contractSyncService: this.contractSyncService,
|
|
571
702
|
jobId: this.jobId,
|
|
572
703
|
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
@@ -659,7 +790,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
659
790
|
}
|
|
660
791
|
|
|
661
792
|
public getDebugFunctionName() {
|
|
662
|
-
return this.
|
|
793
|
+
return this.anchoredContractData.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
663
794
|
}
|
|
664
795
|
|
|
665
796
|
protected override get callerContext() {
|