@aztec/pxe 0.0.1-commit.993d240 → 0.0.1-commit.9a89641
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.d.ts +2 -12
- package/dest/bin/check_oracle_version.d.ts.map +1 -1
- package/dest/bin/check_oracle_version.js +9 -122
- package/dest/bin/index.d.ts +2 -2
- package/dest/bin/index.d.ts.map +1 -1
- package/dest/bin/index.js +1 -1
- package/dest/bin/oracle_version_helpers.d.ts +20 -0
- package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
- package/dest/bin/oracle_version_helpers.js +25 -0
- 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 +17 -15
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +41 -18
- 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/config/package_info.js +1 -1
- package/dest/contract/contract_class_service.d.ts +24 -0
- package/dest/contract/contract_class_service.d.ts.map +1 -0
- package/dest/contract/contract_class_service.js +36 -0
- package/dest/contract/contract_sync_service.d.ts +48 -0
- package/dest/contract/contract_sync_service.d.ts.map +1 -0
- package/dest/{contract_sync → contract}/contract_sync_service.js +26 -45
- 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/skip_sync_contracts.d.ts +11 -0
- package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
- package/dest/contract/skip_sync_contracts.js +18 -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/contract_function_simulator.d.ts +19 -25
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +63 -49
- package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
- 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 +24 -6
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +9 -4
- 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/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 +2 -2
- 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_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 -3
- 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 +8 -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 +1 -0
- 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 +19 -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 +9 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -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 +21 -0
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
- package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
- package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/index.js +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -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/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 +92 -100
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle_registry.js +296 -479
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +274 -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 +1253 -0
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +2 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +32 -21
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +152 -49
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +97 -37
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +376 -138
- package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
- package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
- package/dest/contract_function_simulator/transient_array_service.js +62 -0
- 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/index.d.ts +2 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +1 -0
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +17 -6
- package/dest/entrypoints/client/lazy/index.d.ts +2 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +1 -0
- package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +17 -6
- package/dest/entrypoints/client/store.d.ts +14 -0
- package/dest/entrypoints/client/store.d.ts.map +1 -0
- package/dest/entrypoints/client/store.js +42 -0
- package/dest/entrypoints/pxe_creation_options.d.ts +9 -3
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +6 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +4 -2
- package/dest/entrypoints/server/store.d.ts +18 -0
- package/dest/entrypoints/server/store.d.ts.map +1 -0
- package/dest/entrypoints/server/store.js +28 -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 +16 -4
- 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/events/event_service.d.ts +13 -6
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +13 -13
- package/dest/hooks/execution_hooks.d.ts +31 -11
- 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 +18 -8
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +93 -45
- package/dest/messages/tx_resolver_service.d.ts +28 -0
- package/dest/messages/tx_resolver_service.d.ts.map +1 -0
- package/dest/messages/tx_resolver_service.js +61 -0
- package/dest/node/benchmarked_node.d.ts +20 -0
- package/dest/node/benchmarked_node.d.ts.map +1 -0
- package/dest/node/benchmarked_node.js +94 -0
- package/dest/node/caching_aztec_node.d.ts +24 -0
- package/dest/node/caching_aztec_node.d.ts.map +1 -0
- package/dest/node/caching_aztec_node.js +267 -0
- package/dest/notes/note_service.d.ts +13 -7
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +10 -10
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.js +8 -8
- package/dest/private_kernel/batch_planner.d.ts +1 -1
- package/dest/private_kernel/batch_planner.d.ts.map +1 -1
- package/dest/private_kernel/batch_planner.js +1 -1
- 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 +61 -40
- 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 +114 -48
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +251 -148
- 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/anchor_block_store/anchor_block_store.d.ts +9 -6
- 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 -6
- 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 +129 -49
- 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 +66 -77
- 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 +59 -0
- package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
- package/dest/storage/fact_store/origin_state.js +60 -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 +3 -2
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +2 -1
- 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/note_store/note_store.d.ts +42 -33
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +197 -168
- package/dest/storage/note_store/stored_note.d.ts +3 -8
- package/dest/storage/note_store/stored_note.d.ts.map +1 -1
- package/dest/storage/note_store/stored_note.js +4 -20
- 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/private_event_store/private_event_store.d.ts +13 -16
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +40 -43
- package/dest/storage/store_identity.d.ts +35 -0
- package/dest/storage/store_identity.d.ts.map +1 -0
- package/dest/storage/store_identity.js +44 -0
- 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/sender_tagging_store.d.ts +41 -10
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +81 -29
- 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 +11 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +38 -10
- package/dest/tagging/get_all_logs_by_tags.d.ts +29 -8
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +29 -10
- package/dest/tagging/index.d.ts +3 -3
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +2 -2
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +27 -9
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +104 -33
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +6 -3
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +23 -36
- package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts +22 -0
- package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/classify_pending_txs.js +61 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +15 -5
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +36 -35
- package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts +29 -0
- package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/resolve_pending_txs.js +41 -0
- package/dest/tagging/sender_sync/utils/test_utils.d.ts +16 -0
- package/dest/tagging/sender_sync/utils/test_utils.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/test_utils.js +24 -0
- package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
- package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
- package/dest/tagging/testing/tag_query_test_utils.js +10 -0
- package/package.json +17 -17
- package/src/bin/check_oracle_version.ts +8 -151
- package/src/bin/index.ts +1 -1
- package/src/bin/oracle_version_helpers.ts +30 -0
- package/src/block_synchronizer/block_stream_source.ts +6 -45
- package/src/block_synchronizer/block_synchronizer.ts +54 -30
- package/src/config/index.ts +1 -0
- package/src/config/package_info.ts +1 -1
- package/src/contract/contract_class_service.ts +45 -0
- package/src/{contract_sync → contract}/contract_sync_service.ts +37 -50
- package/src/contract/helpers.ts +35 -0
- package/src/contract/skip_sync_contracts.ts +23 -0
- package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +96 -59
- package/src/contract_function_simulator/execution_note_cache.ts +8 -29
- package/src/contract_function_simulator/index.ts +87 -5
- 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/ephemeral_array.ts +66 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +3 -3
- 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_data.ts +27 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -4
- 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 +5 -0
- package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
- package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
- package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
- package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
- package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
- package/src/contract_function_simulator/oracle/index.ts +1 -15
- package/src/contract_function_simulator/oracle/interfaces.ts +11 -189
- 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 +289 -483
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1067 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +2 -3
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +190 -61
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +556 -174
- package/src/contract_function_simulator/transient_array_service.ts +91 -0
- package/src/debug/pxe_debug_utils.ts +1 -1
- package/src/entrypoints/client/bundle/index.ts +1 -0
- package/src/entrypoints/client/bundle/utils.ts +24 -5
- package/src/entrypoints/client/lazy/index.ts +1 -0
- package/src/entrypoints/client/lazy/utils.ts +24 -5
- package/src/entrypoints/client/store.ts +54 -0
- package/src/entrypoints/pxe_creation_options.ts +8 -2
- package/src/entrypoints/server/index.ts +6 -2
- package/src/entrypoints/server/store.ts +47 -0
- package/src/entrypoints/server/utils.ts +31 -9
- package/src/error_enriching.ts +27 -11
- package/src/events/event_service.ts +24 -14
- package/src/hooks/execution_hooks.ts +32 -12
- 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 +122 -61
- package/src/messages/tx_resolver_service.ts +80 -0
- package/src/node/benchmarked_node.ts +140 -0
- package/src/node/caching_aztec_node.ts +406 -0
- package/src/notes/note_service.ts +20 -14
- package/src/oracle_version.ts +8 -8
- package/src/private_kernel/batch_planner.ts +0 -1
- 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 +112 -56
- package/src/private_kernel/private_kernel_oracle.ts +23 -4
- package/src/pxe.ts +357 -172
- package/src/storage/allowed_scopes.ts +14 -0
- package/src/storage/anchor_block_store/anchor_block_store.ts +8 -6
- 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 +9 -15
- package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +24 -4
- 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 +29 -9
- package/src/storage/backwards_compatibility_tests/schema_tests.ts +141 -50
- package/src/storage/capsule_store/capsule_service.ts +8 -13
- package/src/storage/contract_store/contract_store.ts +88 -94
- 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 +15 -0
- package/src/storage/fact_store/origin_state.ts +84 -0
- package/src/storage/fact_store/stored_fact.ts +80 -0
- package/src/storage/index.ts +2 -1
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +226 -187
- package/src/storage/note_store/stored_note.ts +5 -27
- package/src/storage/open_pxe_stores.ts +6 -3
- package/src/storage/private_event_store/private_event_store.ts +49 -55
- package/src/storage/store_identity.ts +72 -0
- package/src/storage/tagging_store/index.ts +1 -1
- package/src/storage/tagging_store/sender_tagging_store.ts +113 -41
- package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
- package/src/tagging/constants.ts +42 -10
- package/src/tagging/get_all_logs_by_tags.ts +47 -11
- package/src/tagging/index.ts +7 -2
- package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +161 -46
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +27 -57
- package/src/tagging/sender_sync/utils/classify_pending_txs.ts +91 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +46 -40
- package/src/tagging/sender_sync/utils/resolve_pending_txs.ts +64 -0
- package/src/tagging/sender_sync/utils/test_utils.ts +46 -0
- package/src/tagging/testing/tag_query_test_utils.ts +11 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts +0 -9
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +0 -1
- package/dest/contract_function_simulator/benchmarked_node.js +0 -77
- package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -89
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/oracle.js +0 -552
- 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 +0 -42
- 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/messages/message_context_service.js +0 -38
- 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/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +0 -17
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +0 -1
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +0 -60
- package/src/contract_function_simulator/benchmarked_node.ts +0 -103
- package/src/contract_function_simulator/oracle/oracle.ts +0 -711
- package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -60
- package/src/contract_sync/helpers.ts +0 -86
- package/src/messages/message_context_service.ts +0 -45
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +0 -16
- package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +0 -66
|
@@ -21,7 +21,7 @@ import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
|
21
21
|
import type { CircuitWitnessGenerationStats } from '@aztec/stdlib/stats';
|
|
22
22
|
import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
23
23
|
|
|
24
|
-
import {
|
|
24
|
+
import { buildACIRCallback } from './acir_callback.js';
|
|
25
25
|
import type { PrivateExecutionOracle } from './private_execution_oracle.js';
|
|
26
26
|
|
|
27
27
|
/**
|
|
@@ -43,10 +43,9 @@ export async function executePrivateFunction(
|
|
|
43
43
|
const functionName = await privateExecutionOracle.getDebugFunctionName();
|
|
44
44
|
log.verbose(`Executing private function ${functionName}`, { contract: contractAddress });
|
|
45
45
|
const initialWitness = privateExecutionOracle.getInitialWitness(artifact);
|
|
46
|
-
const acvmCallback = new Oracle(privateExecutionOracle);
|
|
47
46
|
const timer = new Timer();
|
|
48
47
|
const acirExecutionResult = await simulator
|
|
49
|
-
.executeUserCircuit(initialWitness, artifact,
|
|
48
|
+
.executeUserCircuit(initialWitness, artifact, buildACIRCallback(privateExecutionOracle))
|
|
50
49
|
.catch((err: Error) => {
|
|
51
50
|
err.message = resolveAssertionMessageFromError(err, artifact);
|
|
52
51
|
throw new ExecutionError(
|
|
@@ -16,8 +16,8 @@ import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
|
16
16
|
import {
|
|
17
17
|
AppTaggingSecret,
|
|
18
18
|
AppTaggingSecretKind,
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
ContractClassLog,
|
|
20
|
+
ContractClassLogFields,
|
|
21
21
|
type TaggingIndexRange,
|
|
22
22
|
} from '@aztec/stdlib/logs';
|
|
23
23
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
@@ -29,24 +29,34 @@ import {
|
|
|
29
29
|
type TxContext,
|
|
30
30
|
} from '@aztec/stdlib/tx';
|
|
31
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';
|
|
32
38
|
import { NoteService } from '../../notes/note_service.js';
|
|
39
|
+
import { assertAllowedScope } from '../../storage/allowed_scopes.js';
|
|
33
40
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
34
|
-
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
41
|
+
import { logQueryAnchorOf, syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
35
42
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
36
43
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
37
44
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
38
45
|
import { BoundedVec } from '../noir-structs/bounded_vec.js';
|
|
46
|
+
import type { ContractClassLogData } from '../noir-structs/contract_class_log_data.js';
|
|
47
|
+
import type { NoteData } from '../noir-structs/note_data.js';
|
|
39
48
|
import { Option } from '../noir-structs/option.js';
|
|
49
|
+
import type { ResolvedTaggingStrategy } from '../noir-structs/resolved_tagging_strategy.js';
|
|
40
50
|
import { pickNotes } from '../pick_notes.js';
|
|
41
|
-
import type { IPrivateExecutionOracle
|
|
51
|
+
import type { IPrivateExecutionOracle } from './interfaces.js';
|
|
42
52
|
import { executePrivateFunction } from './private_execution.js';
|
|
43
53
|
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
44
54
|
|
|
45
55
|
/** Args for PrivateExecutionOracle constructor. */
|
|
46
|
-
export type PrivateExecutionOracleArgs =
|
|
56
|
+
export type PrivateExecutionOracleArgs = UtilityExecutionOracleArgs & {
|
|
47
57
|
argsHash: Fr;
|
|
48
58
|
txContext: TxContext;
|
|
49
|
-
|
|
59
|
+
txRequestSalt: Fr;
|
|
50
60
|
executionCache: HashedValuesCache;
|
|
51
61
|
noteCache: ExecutionNoteCache;
|
|
52
62
|
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
@@ -77,7 +87,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
77
87
|
|
|
78
88
|
private readonly argsHash: Fr;
|
|
79
89
|
private readonly txContext: TxContext;
|
|
80
|
-
private readonly
|
|
90
|
+
private readonly txRequestSalt: Fr;
|
|
81
91
|
private readonly executionCache: HashedValuesCache;
|
|
82
92
|
private readonly noteCache: ExecutionNoteCache;
|
|
83
93
|
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
@@ -90,12 +100,11 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
90
100
|
constructor(args: PrivateExecutionOracleArgs) {
|
|
91
101
|
super({
|
|
92
102
|
...args,
|
|
93
|
-
contractAddress: args.callContext.contractAddress,
|
|
94
103
|
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
95
104
|
});
|
|
96
105
|
this.argsHash = args.argsHash;
|
|
97
106
|
this.txContext = args.txContext;
|
|
98
|
-
this.
|
|
107
|
+
this.txRequestSalt = args.txRequestSalt;
|
|
99
108
|
this.executionCache = args.executionCache;
|
|
100
109
|
this.noteCache = args.noteCache;
|
|
101
110
|
this.taggingIndexCache = args.taggingIndexCache;
|
|
@@ -111,6 +120,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
111
120
|
this.anchorBlockHeader,
|
|
112
121
|
this.txContext,
|
|
113
122
|
this.initialSideEffectCounter,
|
|
123
|
+
this.txRequestSalt,
|
|
114
124
|
);
|
|
115
125
|
}
|
|
116
126
|
|
|
@@ -181,58 +191,170 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
181
191
|
* Returns the wallet-supplied default sender for tags, or `None` if no default was provided.
|
|
182
192
|
*/
|
|
183
193
|
public getSenderForTags(): Promise<Option<AztecAddress>> {
|
|
184
|
-
return Promise.resolve(
|
|
185
|
-
|
|
186
|
-
|
|
194
|
+
return Promise.resolve(this.defaultSenderForTags ? Option.some(this.defaultSenderForTags) : Option.none());
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Resolves a custom, caller-defined request via the {@link ResolveCustomRequest} hook, which produces the response
|
|
199
|
+
* however it needs to. Throws when no hook is configured, since the request cannot be served.
|
|
200
|
+
*/
|
|
201
|
+
public async resolveCustomRequest(kind: Fr, payload: Fr[]): Promise<Fr[]> {
|
|
202
|
+
const hook: ResolveCustomRequest | undefined = this.hooks?.resolveCustomRequest;
|
|
203
|
+
if (!hook) {
|
|
204
|
+
throw new Error('Cannot serve a request: no resolveCustomRequest hook is configured');
|
|
205
|
+
}
|
|
206
|
+
const contractClassId = await this.#getCurrentContractClassId(this.contractAddress);
|
|
207
|
+
return hook({ contractAddress: this.contractAddress, contractClassId, kind, payload });
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Resolves the tagging strategy for a message via the wallet's {@link ResolveTaggingSecretStrategy} hook. The contract receives a ready-to-use {@link ResolvedTaggingStrategy}.
|
|
212
|
+
* When no hook is configured, applies a default: a non-interactive handshake, except for an unconstrained self-send,
|
|
213
|
+
* which uses an address-derived secret.
|
|
214
|
+
*/
|
|
215
|
+
public async resolveTaggingStrategy(
|
|
216
|
+
sender: AztecAddress,
|
|
217
|
+
recipient: AztecAddress,
|
|
218
|
+
deliveryMode: AppTaggingSecretKind,
|
|
219
|
+
): Promise<ResolvedTaggingStrategy> {
|
|
220
|
+
const [isUnconstrainedSelfSend, chosenStrategy] = await Promise.all([
|
|
221
|
+
this.#isUnconstrainedSelfSend(recipient, deliveryMode),
|
|
222
|
+
this.#chooseTaggingSecretStrategy(sender, recipient, deliveryMode),
|
|
223
|
+
]);
|
|
224
|
+
|
|
225
|
+
// For unconstrained delivery, a self-send uses a local address-derived secret instead of a non-interactive
|
|
226
|
+
// handshake. A self-send is one where the wallet controls the recipient's keys, so both sides' keys are local: no
|
|
227
|
+
// handshake is needed and nothing is revealed onchain. It also avoids a recursion: a handshake self-delivers its
|
|
228
|
+
// note via unconstrained delivery, which would establish yet another handshake. This guard runs regardless of the
|
|
229
|
+
// resolved strategy (hook or default), to protect wallets from invalid configuration.
|
|
230
|
+
const strategy: TaggingSecretStrategy = isUnconstrainedSelfSend ? { type: 'address-derived' } : chosenStrategy;
|
|
231
|
+
|
|
232
|
+
return this.#resolveTaggingSecretStrategy(strategy, sender, recipient);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
async #chooseTaggingSecretStrategy(
|
|
236
|
+
sender: AztecAddress,
|
|
237
|
+
recipient: AztecAddress,
|
|
238
|
+
deliveryMode: AppTaggingSecretKind,
|
|
239
|
+
): Promise<TaggingSecretStrategy> {
|
|
240
|
+
const hook: ResolveTaggingSecretStrategy | undefined = this.hooks?.resolveTaggingSecretStrategy;
|
|
241
|
+
if (!hook) {
|
|
242
|
+
return DEFAULT_TAGGING_SECRET_STRATEGY;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
const contractClassId = await this.#getCurrentContractClassId(this.contractAddress);
|
|
246
|
+
return hook({
|
|
247
|
+
contractAddress: this.contractAddress,
|
|
248
|
+
contractClassId,
|
|
249
|
+
sender,
|
|
250
|
+
recipient,
|
|
251
|
+
deliveryMode,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Resolves the class id the given contract runs at this simulation's anchor block. The instance no longer carries
|
|
257
|
+
* its class id (it is chain-derived), so it is resolved via the anchored contract data instead.
|
|
258
|
+
*/
|
|
259
|
+
async #getCurrentContractClassId(address: AztecAddress): Promise<Fr> {
|
|
260
|
+
const classId = await this.anchoredContractData.getCurrentClassId(address);
|
|
261
|
+
if (classId === undefined) {
|
|
262
|
+
throw new Error(`Cannot resolve the current contract class for ${address}`);
|
|
263
|
+
}
|
|
264
|
+
return classId;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/** Whether this is an unconstrained delivery to one of the wallet's own accounts (a self-send). */
|
|
268
|
+
#isUnconstrainedSelfSend(recipient: AztecAddress, deliveryMode: AppTaggingSecretKind) {
|
|
269
|
+
return deliveryMode === AppTaggingSecretKind.UNCONSTRAINED
|
|
270
|
+
? this.keyStore.hasAccount(recipient)
|
|
271
|
+
: Promise.resolve(false);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/** Resolves a wallet-provided {@link TaggingSecretStrategy} into the app-siloed secret handed to the contract. */
|
|
275
|
+
async #resolveTaggingSecretStrategy(
|
|
276
|
+
strategy: TaggingSecretStrategy,
|
|
277
|
+
sender: AztecAddress,
|
|
278
|
+
recipient: AztecAddress,
|
|
279
|
+
): Promise<ResolvedTaggingStrategy> {
|
|
280
|
+
// PXE only performs the derivation; it does not reject a strategy that is unsound for the delivery mode (e.g. an
|
|
281
|
+
// address-derived or arbitrary-secret strategy for constrained delivery). That soundness check belongs in the
|
|
282
|
+
// Noir circuit, which constrains the resolved strategy against the delivery mode.
|
|
283
|
+
switch (strategy.type) {
|
|
284
|
+
case 'non-interactive-handshake':
|
|
285
|
+
return { type: 'non-interactive-handshake' };
|
|
286
|
+
case 'interactive-handshake':
|
|
287
|
+
return { type: 'interactive-handshake' };
|
|
288
|
+
case 'address-derived':
|
|
289
|
+
return this.#addressDerivedSecret(sender, recipient);
|
|
290
|
+
case 'arbitrary-secret': {
|
|
291
|
+
// App-silo the raw arbitrary secret point here so wallets never replicate the derivation.
|
|
292
|
+
const appTaggingSecret = await AppTaggingSecret.computeDirectional(
|
|
293
|
+
strategy.secret,
|
|
294
|
+
this.contractAddress,
|
|
295
|
+
recipient,
|
|
296
|
+
);
|
|
297
|
+
return { type: 'unconstrained-secret', secret: appTaggingSecret.secret };
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* The app-siloed, recipient-directional secret derived from the sender's and recipient's address keys via ECDH,
|
|
304
|
+
* ready to hand to the contract. Callers must validate the recipient in-circuit before reaching here, so an invalid one is unexpected.
|
|
305
|
+
*/
|
|
306
|
+
async #addressDerivedSecret(sender: AztecAddress, recipient: AztecAddress): Promise<ResolvedTaggingStrategy> {
|
|
307
|
+
const secret = await this.getAppTaggingSecret(sender, recipient);
|
|
308
|
+
if (!secret.isSome()) {
|
|
309
|
+
throw new Error(`Cannot derive an address-derived tagging secret for invalid recipient ${recipient}`);
|
|
310
|
+
}
|
|
311
|
+
return { type: 'unconstrained-secret', secret: secret.value };
|
|
187
312
|
}
|
|
188
313
|
|
|
189
314
|
/**
|
|
190
|
-
* Returns the
|
|
315
|
+
* Returns the sender-side app tagging secret for a `(sender, recipient)` pair.
|
|
191
316
|
*
|
|
192
|
-
* The
|
|
193
|
-
*
|
|
317
|
+
* The caller obtains an index via {@link getNextTaggingIndex} and computes the final tag itself.
|
|
318
|
+
* The only expected `None` case is an invalid recipient address; missing sender data fails while deriving.
|
|
194
319
|
*
|
|
195
320
|
* @param sender - The address sending the log
|
|
196
321
|
* @param recipient - The address receiving the log
|
|
197
|
-
* @returns
|
|
322
|
+
* @returns The app tagging secret, or `None` if the recipient is invalid.
|
|
198
323
|
*/
|
|
199
|
-
public async
|
|
200
|
-
|
|
324
|
+
public async getAppTaggingSecret(sender: AztecAddress, recipient: AztecAddress): Promise<Option<Fr>> {
|
|
325
|
+
assertAllowedScope(sender, this.scopes);
|
|
326
|
+
|
|
327
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
328
|
+
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
329
|
+
const extendedSecret = await AppTaggingSecret.computeViaEcdh(
|
|
330
|
+
senderCompleteAddress,
|
|
331
|
+
senderIvsk,
|
|
332
|
+
recipient,
|
|
333
|
+
this.contractAddress,
|
|
334
|
+
recipient,
|
|
335
|
+
);
|
|
201
336
|
|
|
202
337
|
if (!extendedSecret) {
|
|
203
|
-
|
|
204
|
-
// king-of-the-hill attacks, instead of failing we use a random tag. By including a correct-looking tag in the
|
|
205
|
-
// log, the transaction shape is preserved and no privacy is leaked, even if the tag is bogus.
|
|
206
|
-
this.logger.warn(`Computing a tag for invalid recipient ${recipient} - returning a random tag instead`, {
|
|
338
|
+
this.logger.warn(`Computing a tagging secret for invalid recipient ${recipient} - returning no secret`, {
|
|
207
339
|
contractAddress: this.contractAddress,
|
|
208
340
|
});
|
|
209
|
-
return
|
|
341
|
+
return Option.none();
|
|
210
342
|
}
|
|
211
343
|
|
|
212
|
-
|
|
213
|
-
this.logger.debug(
|
|
214
|
-
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
215
|
-
);
|
|
216
|
-
|
|
217
|
-
return Tag.compute({ extendedSecret, index });
|
|
344
|
+
return Option.some(extendedSecret.secret);
|
|
218
345
|
}
|
|
219
346
|
|
|
220
347
|
/**
|
|
221
|
-
* Returns the next sender-side index for a
|
|
222
|
-
*
|
|
223
|
-
* Unlike the unconstrained variant, the simulator does not compute the secret: it was supplied by the calling contract
|
|
224
|
-
* (which retrieved it from an onchain handshake registry). The simulator only acts as a per-secret index counter.
|
|
225
|
-
* The caller computes the onchain tag itself.
|
|
348
|
+
* Returns the next sender-side tagging index for a given secret and delivery mode.
|
|
226
349
|
*
|
|
227
|
-
* @param
|
|
350
|
+
* @param secret - The tagging secret to allocate an index for.
|
|
351
|
+
* @param kind - The sender-side index namespace.
|
|
228
352
|
* @returns The next index to use for this secret.
|
|
229
353
|
*/
|
|
230
|
-
public async
|
|
231
|
-
const
|
|
232
|
-
const index = await this.#reserveNextIndexForSecret(
|
|
233
|
-
this.logger.debug(
|
|
234
|
-
`Incrementing tagging index for constrained-delivery secret in contract ${this.contractAddress} to ${index}`,
|
|
235
|
-
);
|
|
354
|
+
public async getNextTaggingIndex(secret: Fr, kind: AppTaggingSecretKind): Promise<number> {
|
|
355
|
+
const appTaggingSecret = new AppTaggingSecret(secret, this.contractAddress, kind);
|
|
356
|
+
const index = await this.#reserveNextIndexForSecret(appTaggingSecret);
|
|
357
|
+
this.logger.debug(`Incrementing ${kind} tagging index for secret in contract ${this.contractAddress} to ${index}`);
|
|
236
358
|
return index;
|
|
237
359
|
}
|
|
238
360
|
|
|
@@ -243,18 +365,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
243
365
|
return index;
|
|
244
366
|
}
|
|
245
367
|
|
|
246
|
-
async #calculateAppTaggingSecret(contractAddress: AztecAddress, sender: AztecAddress, recipient: AztecAddress) {
|
|
247
|
-
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
248
|
-
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
249
|
-
return AppTaggingSecret.computeUnconstrained(
|
|
250
|
-
senderCompleteAddress,
|
|
251
|
-
senderIvsk,
|
|
252
|
-
recipient,
|
|
253
|
-
contractAddress,
|
|
254
|
-
recipient,
|
|
255
|
-
);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
368
|
async #getIndexToUseForSecret(secret: AppTaggingSecret): Promise<number> {
|
|
259
369
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
260
370
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
@@ -265,11 +375,16 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
265
375
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
266
376
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
267
377
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
378
|
+
const [{ finalized }, anchor] = await Promise.all([
|
|
379
|
+
this.l2TipsStore.getL2Tips(),
|
|
380
|
+
logQueryAnchorOf(this.anchorBlockHeader),
|
|
381
|
+
]);
|
|
268
382
|
await syncSenderTaggingIndexes(
|
|
269
383
|
secret,
|
|
270
384
|
this.aztecNode,
|
|
271
385
|
this.senderTaggingStore,
|
|
272
|
-
|
|
386
|
+
finalized.block.number,
|
|
387
|
+
anchor,
|
|
273
388
|
this.jobId,
|
|
274
389
|
);
|
|
275
390
|
|
|
@@ -488,10 +603,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
488
603
|
* Emit a contract class log.
|
|
489
604
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
490
605
|
* keep the preimage in ts for later.
|
|
491
|
-
* @param
|
|
606
|
+
* @param logData - The contract class log to be emitted.
|
|
492
607
|
* @param counter - The contract class log's counter.
|
|
493
608
|
*/
|
|
494
|
-
public notifyCreatedContractClassLog(
|
|
609
|
+
public notifyCreatedContractClassLog(logData: ContractClassLogData, counter: number) {
|
|
610
|
+
const log = ContractClassLog.from({
|
|
611
|
+
contractAddress: logData.contractAddress,
|
|
612
|
+
fields: new ContractClassLogFields(logData.fields),
|
|
613
|
+
emittedLength: logData.emittedLength,
|
|
614
|
+
});
|
|
495
615
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
496
616
|
const text = log.toBuffer().toString('hex');
|
|
497
617
|
this.logger.verbose(
|
|
@@ -549,10 +669,16 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
549
669
|
this.scopes,
|
|
550
670
|
);
|
|
551
671
|
|
|
552
|
-
const targetArtifact = await this.
|
|
672
|
+
const targetArtifact = await this.anchoredContractData.getFunctionArtifactWithDebugMetadata(
|
|
553
673
|
targetContractAddress,
|
|
554
674
|
functionSelector,
|
|
555
675
|
);
|
|
676
|
+
if (!targetArtifact) {
|
|
677
|
+
throw new Error(
|
|
678
|
+
`Cannot call ${targetContractAddress}:${functionSelector}: the contract is not registered. ` +
|
|
679
|
+
`Register it via wallet.registerContract(...).`,
|
|
680
|
+
);
|
|
681
|
+
}
|
|
556
682
|
|
|
557
683
|
const derivedTxContext = this.txContext.clone();
|
|
558
684
|
|
|
@@ -561,6 +687,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
561
687
|
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
562
688
|
argsHash,
|
|
563
689
|
txContext: derivedTxContext,
|
|
690
|
+
txRequestSalt: this.txRequestSalt,
|
|
564
691
|
callContext: derivedCallContext,
|
|
565
692
|
anchorBlockHeader: this.anchorBlockHeader,
|
|
566
693
|
utilityExecutor: this.utilityExecutor,
|
|
@@ -569,17 +696,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
569
696
|
executionCache: this.executionCache,
|
|
570
697
|
noteCache: this.noteCache,
|
|
571
698
|
taggingIndexCache: this.taggingIndexCache,
|
|
572
|
-
|
|
699
|
+
anchoredContractData: this.anchoredContractData,
|
|
573
700
|
noteStore: this.noteStore,
|
|
574
701
|
keyStore: this.keyStore,
|
|
575
702
|
addressStore: this.addressStore,
|
|
576
703
|
aztecNode: this.aztecNode,
|
|
577
704
|
senderTaggingStore: this.senderTaggingStore,
|
|
578
705
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
579
|
-
|
|
706
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
580
707
|
capsuleService: this.capsuleService,
|
|
708
|
+
factService: this.factService,
|
|
581
709
|
privateEventStore: this.privateEventStore,
|
|
582
|
-
|
|
710
|
+
txResolver: this.txResolver,
|
|
583
711
|
contractSyncService: this.contractSyncService,
|
|
584
712
|
jobId: this.jobId,
|
|
585
713
|
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
@@ -590,6 +718,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
590
718
|
simulator: this.simulator,
|
|
591
719
|
hooks: this.hooks,
|
|
592
720
|
l2TipsStore: this.l2TipsStore,
|
|
721
|
+
transientArrayService: this.transientArrayService,
|
|
593
722
|
});
|
|
594
723
|
|
|
595
724
|
const setupTime = simulatorSetupTimer.ms();
|
|
@@ -671,7 +800,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
671
800
|
}
|
|
672
801
|
|
|
673
802
|
public getDebugFunctionName() {
|
|
674
|
-
return this.
|
|
803
|
+
return this.anchoredContractData.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
675
804
|
}
|
|
676
805
|
|
|
677
806
|
protected override get callerContext() {
|