@aztec/pxe 0.0.1-commit.2ed92850 → 0.0.1-commit.3100065
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 +45 -111
- 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 +51 -0
- package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
- package/dest/bin/oracle_version_helpers.js +254 -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 +37 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts +24 -14
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +92 -30
- package/dest/config/index.d.ts +9 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +14 -15
- package/dest/config/package_info.js +1 -1
- 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/contract_sync_service.d.ts +48 -0
- package/dest/contract/contract_sync_service.d.ts.map +1 -0
- package/dest/contract/contract_sync_service.js +116 -0
- 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 +72 -36
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +265 -97
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
- package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
- 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/execution_tagging_index_cache.d.ts +7 -11
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -15
- package/dest/contract_function_simulator/index.d.ts +26 -5
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +12 -3
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -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 +30 -0
- 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 -4
- 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 +9 -10
- 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 +19 -10
- 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 +12 -24
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +11 -9
- 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 +2 -63
- 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 -5
- 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 +8 -12
- package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
- package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/option.js +67 -0
- 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 +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 +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 -98
- 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/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_registry.d.ts +138 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.js +1007 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +222 -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 +1243 -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 +7 -6
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +82 -97
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +257 -115
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +206 -88
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +592 -194
- package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +20 -3
- 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/contract_logging.d.ts +27 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +38 -0
- package/dest/debug/pxe_debug_utils.d.ts +19 -10
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +22 -18
- package/dest/entrypoints/client/bundle/index.d.ts +3 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +2 -0
- package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +39 -12
- package/dest/entrypoints/client/lazy/index.d.ts +3 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +2 -0
- package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +40 -13
- package/dest/entrypoints/pxe_creation_options.d.ts +18 -3
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/pxe_creation_options.js +3 -1
- package/dest/entrypoints/server/index.d.ts +7 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +5 -2
- package/dest/entrypoints/server/utils.d.ts +4 -3
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +47 -14
- 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 +16 -8
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +46 -14
- package/dest/events/private_event_filter_validator.d.ts +3 -2
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +15 -0
- 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 +62 -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 +5 -0
- package/dest/hooks/index.d.ts.map +1 -0
- package/dest/hooks/index.js +2 -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/job_coordinator/job_coordinator.d.ts +3 -2
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
- package/dest/job_coordinator/job_coordinator.js +3 -2
- package/dest/logs/log_service.d.ts +16 -13
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +192 -97
- package/dest/messages/tx_resolver_service.d.ts +17 -0
- package/dest/messages/tx_resolver_service.d.ts.map +1 -0
- package/dest/messages/tx_resolver_service.js +55 -0
- package/dest/notes/note_service.d.ts +29 -8
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +89 -65
- package/dest/notes_filter.d.ts +24 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +4 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +20 -10
- 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/compute_tx_expiration_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
- package/dest/private_kernel/hints/index.d.ts +1 -1
- package/dest/private_kernel/hints/index.js +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
- 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 +135 -70
- package/dest/private_kernel/hints/test_utils.d.ts +122 -0
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
- package/dest/private_kernel/hints/test_utils.js +202 -0
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +7 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +165 -83
- package/dest/private_kernel/private_kernel_oracle.d.ts +17 -11
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +47 -29
- package/dest/pxe.d.ts +228 -66
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +411 -229
- package/dest/storage/address_store/address_store.d.ts +1 -1
- package/dest/storage/address_store/address_store.d.ts.map +1 -1
- package/dest/storage/address_store/address_store.js +12 -11
- package/dest/storage/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 +12 -1
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
- package/dest/storage/anchor_block_store/anchor_block_store.js +12 -3
- 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 +671 -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/capsule_store/capsule_service.d.ts +21 -0
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_service.js +47 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_store.js +42 -36
- package/dest/storage/capsule_store/index.d.ts +2 -1
- package/dest/storage/capsule_store/index.d.ts.map +1 -1
- package/dest/storage/capsule_store/index.js +1 -0
- package/dest/storage/contract_store/contract_store.d.ts +63 -33
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +192 -135
- 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 +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 +48 -29
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +261 -192
- 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 +35 -0
- package/dest/storage/open_pxe_stores.d.ts.map +1 -0
- package/dest/storage/open_pxe_stores.js +29 -0
- 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 +102 -79
- package/dest/storage/private_event_store/stored_private_event.d.ts +4 -4
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -1
- package/dest/storage/private_event_store/stored_private_event.js +2 -2
- 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/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/recipient_tagging_store.js +31 -19
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +233 -137
- 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/dest/tagging/get_all_logs_by_tags.d.ts +35 -11
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +45 -32
- package/dest/tagging/index.d.ts +6 -5
- 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 +69 -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 +203 -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/recipient_sync/utils/find_highest_indexes.js +2 -2
- 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 +5 -10
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +32 -14
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +13 -7
- 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 +41 -10
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -8
- 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 +37 -25
- package/package.json +29 -17
- package/src/bin/check_oracle_version.ts +51 -133
- package/src/bin/index.ts +5 -0
- package/src/bin/oracle_version_helpers.ts +311 -0
- package/src/block_synchronizer/block_stream_source.ts +42 -0
- package/src/block_synchronizer/block_synchronizer.ts +117 -50
- package/src/config/index.ts +16 -9
- package/src/config/package_info.ts +1 -1
- package/src/contract/contract_class_service.ts +83 -0
- package/src/contract/contract_sync_service.ts +176 -0
- 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 +466 -159
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- package/src/contract_function_simulator/execution_note_cache.ts +8 -29
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
- package/src/contract_function_simulator/index.ts +69 -4
- package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
- 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 +10 -9
- 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 +27 -20
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +14 -64
- package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -11
- package/src/contract_function_simulator/noir-structs/option.ts +75 -0
- 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 +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 +154 -0
- package/src/contract_function_simulator/oracle/index.ts +1 -15
- package/src/contract_function_simulator/oracle/interfaces.ts +11 -176
- 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/note_packing_utils.ts +3 -3
- package/src/contract_function_simulator/oracle/oracle_registry.ts +706 -0
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +964 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +6 -7
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +315 -219
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +921 -276
- package/src/contract_function_simulator/pick_notes.ts +22 -3
- package/src/contract_function_simulator/transient_array_service.ts +91 -0
- package/src/contract_logging.ts +52 -0
- package/src/debug/pxe_debug_utils.ts +55 -19
- package/src/entrypoints/client/bundle/index.ts +2 -0
- package/src/entrypoints/client/bundle/utils.ts +34 -21
- package/src/entrypoints/client/lazy/index.ts +2 -0
- package/src/entrypoints/client/lazy/utils.ts +36 -22
- package/src/entrypoints/pxe_creation_options.ts +23 -2
- package/src/entrypoints/server/index.ts +7 -2
- package/src/entrypoints/server/utils.ts +46 -33
- package/src/error_enriching.ts +27 -11
- package/src/events/event_service.ts +70 -24
- package/src/events/private_event_filter_validator.ts +21 -1
- package/src/hooks/authorize_utility_call.ts +44 -0
- package/src/hooks/execution_hooks.ts +68 -0
- package/src/hooks/index.ts +13 -0
- package/src/hooks/resolve_custom_request.ts +24 -0
- package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
- package/src/job_coordinator/job_coordinator.ts +4 -3
- package/src/logs/log_service.ts +236 -165
- package/src/messages/tx_resolver_service.ts +69 -0
- package/src/notes/note_service.ts +124 -91
- package/src/notes_filter.ts +24 -0
- package/src/oracle_version.ts +20 -10
- package/src/private_kernel/batch_planner.ts +169 -0
- package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
- package/src/private_kernel/hints/index.ts +1 -1
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +176 -119
- package/src/private_kernel/hints/test_utils.ts +318 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +257 -119
- package/src/private_kernel/private_kernel_oracle.ts +65 -36
- package/src/pxe.ts +712 -303
- package/src/storage/address_store/address_store.ts +15 -15
- package/src/storage/allowed_scopes.ts +14 -0
- package/src/storage/anchor_block_store/anchor_block_store.ts +12 -2
- 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__/FactStore.json +40 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +26 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +30 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
- package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
- package/src/storage/backwards_compatibility_tests/schema_tests.ts +803 -0
- package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
- package/src/storage/capsule_store/capsule_service.ts +85 -0
- package/src/storage/capsule_store/capsule_store.ts +52 -34
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/contract_store/contract_store.ts +249 -167
- 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 +2 -1
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +297 -224
- package/src/storage/note_store/stored_note.ts +5 -27
- package/src/storage/open_pxe_stores.ts +52 -0
- package/src/storage/private_event_store/private_event_store.ts +127 -108
- package/src/storage/private_event_store/stored_private_event.ts +3 -3
- package/src/storage/tagging_store/index.ts +1 -1
- package/src/storage/tagging_store/recipient_tagging_store.ts +34 -24
- package/src/storage/tagging_store/sender_tagging_store.ts +287 -156
- package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
- package/src/tagging/constants.ts +19 -9
- package/src/tagging/get_all_logs_by_tags.ts +90 -38
- package/src/tagging/index.ts +5 -4
- package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
- package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +301 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +4 -4
- package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +54 -19
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +44 -14
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +30 -30
- package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -60
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/oracle.js +0 -356
- 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 -80
- package/dest/contract_sync/index.d.ts +0 -23
- package/dest/contract_sync/index.d.ts.map +0 -1
- package/dest/contract_sync/index.js +0 -54
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.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 -30
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -15
- 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 -99
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -15
- 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 -32
- package/src/contract_function_simulator/oracle/oracle.ts +0 -620
- package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
- package/src/contract_sync/index.ts +0 -98
- package/src/storage/tagging_store/sender_address_book_store.ts +0 -42
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -143
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -49
|
@@ -2,53 +2,68 @@ 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
|
|
6
|
-
import { type CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
|
|
5
|
+
import { toACVMWitness } from '@aztec/simulator/client';
|
|
7
6
|
import {
|
|
8
7
|
type FunctionAbi,
|
|
9
8
|
type FunctionArtifact,
|
|
10
|
-
type FunctionCall,
|
|
11
9
|
FunctionSelector,
|
|
12
10
|
type NoteSelector,
|
|
13
11
|
countArgumentsSize,
|
|
14
12
|
} from '@aztec/stdlib/abi';
|
|
15
|
-
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
16
13
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
17
14
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
18
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
19
15
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
20
|
-
import {
|
|
21
|
-
|
|
16
|
+
import {
|
|
17
|
+
AppTaggingSecret,
|
|
18
|
+
AppTaggingSecretKind,
|
|
19
|
+
ContractClassLog,
|
|
20
|
+
ContractClassLogFields,
|
|
21
|
+
type TaggingIndexRange,
|
|
22
|
+
} from '@aztec/stdlib/logs';
|
|
22
23
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
23
24
|
import {
|
|
24
|
-
type BlockHeader,
|
|
25
25
|
CallContext,
|
|
26
|
-
Capsule,
|
|
27
26
|
CountedContractClassLog,
|
|
28
27
|
NoteAndSlot,
|
|
29
28
|
PrivateCallExecutionResult,
|
|
30
29
|
type TxContext,
|
|
31
30
|
} from '@aztec/stdlib/tx';
|
|
32
31
|
|
|
33
|
-
import {
|
|
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';
|
|
34
38
|
import { NoteService } from '../../notes/note_service.js';
|
|
35
|
-
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
36
|
-
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
37
|
-
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
38
|
-
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
39
|
-
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
40
|
-
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
41
|
-
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
42
|
-
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
43
39
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
44
40
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
45
41
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
46
42
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
47
43
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
44
|
+
import { BoundedVec } from '../noir-structs/bounded_vec.js';
|
|
45
|
+
import type { ContractClassLogData } from '../noir-structs/contract_class_log_data.js';
|
|
46
|
+
import type { NoteData } from '../noir-structs/note_data.js';
|
|
47
|
+
import { Option } from '../noir-structs/option.js';
|
|
48
|
+
import type { ResolvedTaggingStrategy } from '../noir-structs/resolved_tagging_strategy.js';
|
|
48
49
|
import { pickNotes } from '../pick_notes.js';
|
|
49
|
-
import type { IPrivateExecutionOracle
|
|
50
|
+
import type { IPrivateExecutionOracle } from './interfaces.js';
|
|
50
51
|
import { executePrivateFunction } from './private_execution.js';
|
|
51
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
52
|
+
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
53
|
+
|
|
54
|
+
/** Args for PrivateExecutionOracle constructor. */
|
|
55
|
+
export type PrivateExecutionOracleArgs = UtilityExecutionOracleArgs & {
|
|
56
|
+
argsHash: Fr;
|
|
57
|
+
txContext: TxContext;
|
|
58
|
+
txRequestSalt: Fr;
|
|
59
|
+
executionCache: HashedValuesCache;
|
|
60
|
+
noteCache: ExecutionNoteCache;
|
|
61
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
62
|
+
senderTaggingStore: SenderTaggingStore;
|
|
63
|
+
totalPublicCalldataCount?: number;
|
|
64
|
+
sideEffectCounter?: number;
|
|
65
|
+
senderForTags?: AztecAddress;
|
|
66
|
+
};
|
|
52
67
|
|
|
53
68
|
/**
|
|
54
69
|
* The execution oracle for the private part of a transaction.
|
|
@@ -67,65 +82,45 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
67
82
|
private newNotes: NoteAndSlot[] = [];
|
|
68
83
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
69
84
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
70
|
-
private offchainEffects: { data: Fr[] }[] = [];
|
|
71
85
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
72
86
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
protected sideEffectCounter: number = 0,
|
|
101
|
-
log = createLogger('simulator:client_execution_context'),
|
|
102
|
-
scopes?: AztecAddress[],
|
|
103
|
-
private senderForTags?: AztecAddress,
|
|
104
|
-
private simulator?: CircuitSimulator,
|
|
105
|
-
) {
|
|
106
|
-
super(
|
|
107
|
-
callContext.contractAddress,
|
|
108
|
-
authWitnesses,
|
|
109
|
-
capsules,
|
|
110
|
-
anchorBlockHeader,
|
|
111
|
-
contractStore,
|
|
112
|
-
noteStore,
|
|
113
|
-
keyStore,
|
|
114
|
-
addressStore,
|
|
115
|
-
aztecNode,
|
|
116
|
-
anchorBlockStore,
|
|
117
|
-
recipientTaggingStore,
|
|
118
|
-
senderAddressBookStore,
|
|
119
|
-
capsuleStore,
|
|
120
|
-
privateEventStore,
|
|
121
|
-
jobId,
|
|
122
|
-
log,
|
|
123
|
-
scopes,
|
|
124
|
-
);
|
|
87
|
+
private readonly argsHash: Fr;
|
|
88
|
+
private readonly txContext: TxContext;
|
|
89
|
+
private readonly txRequestSalt: Fr;
|
|
90
|
+
private readonly executionCache: HashedValuesCache;
|
|
91
|
+
private readonly noteCache: ExecutionNoteCache;
|
|
92
|
+
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
93
|
+
private readonly senderTaggingStore: SenderTaggingStore;
|
|
94
|
+
private totalPublicCalldataCount: number;
|
|
95
|
+
private readonly initialSideEffectCounter: number;
|
|
96
|
+
/** Sender for tags passed in at oracle construction time. Returned by `getSenderForTags`. */
|
|
97
|
+
private readonly defaultSenderForTags: AztecAddress | undefined;
|
|
98
|
+
|
|
99
|
+
constructor(args: PrivateExecutionOracleArgs) {
|
|
100
|
+
super({
|
|
101
|
+
...args,
|
|
102
|
+
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
103
|
+
});
|
|
104
|
+
this.argsHash = args.argsHash;
|
|
105
|
+
this.txContext = args.txContext;
|
|
106
|
+
this.txRequestSalt = args.txRequestSalt;
|
|
107
|
+
this.executionCache = args.executionCache;
|
|
108
|
+
this.noteCache = args.noteCache;
|
|
109
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
110
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
111
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
112
|
+
this.initialSideEffectCounter = args.sideEffectCounter ?? 0;
|
|
113
|
+
this.defaultSenderForTags = args.senderForTags;
|
|
125
114
|
}
|
|
126
115
|
|
|
127
116
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
128
|
-
return new PrivateContextInputs(
|
|
117
|
+
return new PrivateContextInputs(
|
|
118
|
+
this.callContext,
|
|
119
|
+
this.anchorBlockHeader,
|
|
120
|
+
this.txContext,
|
|
121
|
+
this.initialSideEffectCounter,
|
|
122
|
+
this.txRequestSalt,
|
|
123
|
+
);
|
|
129
124
|
}
|
|
130
125
|
|
|
131
126
|
// We still need this function until we can get user-defined ordering of structs for fn arguments
|
|
@@ -172,17 +167,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
172
167
|
}
|
|
173
168
|
|
|
174
169
|
/**
|
|
175
|
-
*
|
|
170
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
176
171
|
*/
|
|
177
|
-
public
|
|
178
|
-
return this.
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
183
|
-
*/
|
|
184
|
-
public getUsedPreTags(): PreTag[] {
|
|
185
|
-
return this.taggingIndexCache.getUsedPreTags();
|
|
172
|
+
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
173
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
186
174
|
}
|
|
187
175
|
|
|
188
176
|
/**
|
|
@@ -199,64 +187,180 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
199
187
|
* for a tag in order to emit a log. Constrained tagging should not use this as there is no
|
|
200
188
|
* guarantee that the recipient knows about the sender, and hence about the shared secret.
|
|
201
189
|
*
|
|
202
|
-
*
|
|
203
|
-
* 'senderForTags' value (unless it is replaced).
|
|
190
|
+
* Returns the wallet-supplied default sender for tags, or `None` if no default was provided.
|
|
204
191
|
*/
|
|
205
|
-
public
|
|
206
|
-
return Promise.resolve(this.
|
|
192
|
+
public getSenderForTags(): Promise<Option<AztecAddress>> {
|
|
193
|
+
return Promise.resolve(this.defaultSenderForTags ? Option.some(this.defaultSenderForTags) : Option.none());
|
|
207
194
|
}
|
|
208
195
|
|
|
209
196
|
/**
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
* This unconstrained value is used as the sender when computing an unconstrained shared secret
|
|
213
|
-
* for a tag in order to emit a log. Constrained tagging should not use this as there is no
|
|
214
|
-
* guarantee that the recipient knows about the sender, and hence about the shared secret.
|
|
215
|
-
*
|
|
216
|
-
* Account contracts typically set this value before calling other contracts. The value persists
|
|
217
|
-
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
218
|
-
* value (unless it is replaced by another call to this setter).
|
|
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.
|
|
219
199
|
*/
|
|
220
|
-
public
|
|
221
|
-
|
|
222
|
-
|
|
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 };
|
|
223
311
|
}
|
|
224
312
|
|
|
225
313
|
/**
|
|
226
|
-
* Returns the
|
|
314
|
+
* Returns the sender-side app tagging secret for a `(sender, recipient)` pair.
|
|
315
|
+
*
|
|
316
|
+
* The caller obtains an index via {@link getNextTaggingIndex} and computes the final tag itself.
|
|
317
|
+
* The only expected `None` case is an invalid recipient address; missing sender data fails while deriving.
|
|
318
|
+
*
|
|
227
319
|
* @param sender - The address sending the log
|
|
228
320
|
* @param recipient - The address receiving the log
|
|
229
|
-
* @returns
|
|
321
|
+
* @returns The app tagging secret, or `None` if the recipient is invalid.
|
|
230
322
|
*/
|
|
231
|
-
public async
|
|
232
|
-
const
|
|
323
|
+
public async getAppTaggingSecret(sender: AztecAddress, recipient: AztecAddress): Promise<Option<Fr>> {
|
|
324
|
+
const extendedSecret = await this.#calculateAppTaggingSecret(this.contractAddress, sender, recipient);
|
|
325
|
+
|
|
326
|
+
if (!extendedSecret) {
|
|
327
|
+
this.logger.warn(`Computing a tagging secret for invalid recipient ${recipient} - returning no secret`, {
|
|
328
|
+
contractAddress: this.contractAddress,
|
|
329
|
+
});
|
|
330
|
+
return Option.none();
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
return Option.some(extendedSecret.secret);
|
|
334
|
+
}
|
|
233
335
|
|
|
336
|
+
/**
|
|
337
|
+
* Returns the next sender-side tagging index for a given secret and delivery mode.
|
|
338
|
+
*
|
|
339
|
+
* @param secret - The tagging secret to allocate an index for.
|
|
340
|
+
* @param kind - The sender-side index namespace.
|
|
341
|
+
* @returns The next index to use for this secret.
|
|
342
|
+
*/
|
|
343
|
+
public async getNextTaggingIndex(secret: Fr, kind: AppTaggingSecretKind): Promise<number> {
|
|
344
|
+
const appTaggingSecret = new AppTaggingSecret(secret, this.contractAddress, kind);
|
|
345
|
+
const index = await this.#reserveNextIndexForSecret(appTaggingSecret);
|
|
346
|
+
this.logger.debug(`Incrementing ${kind} tagging index for secret in contract ${this.contractAddress} to ${index}`);
|
|
347
|
+
return index;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/** Resolves the next index for a given tagging secret, syncing from chain if it is missing from the in-tx cache. */
|
|
351
|
+
async #reserveNextIndexForSecret(secret: AppTaggingSecret): Promise<number> {
|
|
234
352
|
const index = await this.#getIndexToUseForSecret(secret);
|
|
235
|
-
this.log.debug(
|
|
236
|
-
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
237
|
-
);
|
|
238
353
|
this.taggingIndexCache.setLastUsedIndex(secret, index);
|
|
239
|
-
|
|
240
|
-
return Tag.compute({ secret, index });
|
|
354
|
+
return index;
|
|
241
355
|
}
|
|
242
356
|
|
|
243
|
-
async #
|
|
244
|
-
|
|
245
|
-
sender: AztecAddress,
|
|
246
|
-
recipient: AztecAddress,
|
|
247
|
-
) {
|
|
248
|
-
const senderCompleteAddress = await this.getCompleteAddress(sender);
|
|
357
|
+
async #calculateAppTaggingSecret(contractAddress: AztecAddress, sender: AztecAddress, recipient: AztecAddress) {
|
|
358
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
249
359
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
250
|
-
return
|
|
251
|
-
senderCompleteAddress,
|
|
252
|
-
senderIvsk,
|
|
253
|
-
recipient,
|
|
254
|
-
contractAddress,
|
|
255
|
-
recipient,
|
|
256
|
-
);
|
|
360
|
+
return AppTaggingSecret.computeViaEcdh(senderCompleteAddress, senderIvsk, recipient, contractAddress, recipient);
|
|
257
361
|
}
|
|
258
362
|
|
|
259
|
-
async #getIndexToUseForSecret(secret:
|
|
363
|
+
async #getIndexToUseForSecret(secret: AppTaggingSecret): Promise<number> {
|
|
260
364
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
261
365
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
262
366
|
|
|
@@ -268,7 +372,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
268
372
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
269
373
|
await syncSenderTaggingIndexes(
|
|
270
374
|
secret,
|
|
271
|
-
this.contractAddress,
|
|
272
375
|
this.aztecNode,
|
|
273
376
|
this.senderTaggingStore,
|
|
274
377
|
await this.anchorBlockHeader.hash(),
|
|
@@ -287,7 +390,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
287
390
|
* @param values - Values to store.
|
|
288
391
|
* @returns The hash of the values.
|
|
289
392
|
*/
|
|
290
|
-
public
|
|
393
|
+
public setHashPreimage(values: Fr[], hash: Fr) {
|
|
291
394
|
return this.executionCache.store(values, hash);
|
|
292
395
|
}
|
|
293
396
|
|
|
@@ -296,7 +399,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
296
399
|
* @param hash - Hash of the values.
|
|
297
400
|
* @returns The values.
|
|
298
401
|
*/
|
|
299
|
-
public
|
|
402
|
+
public getHashPreimage(hash: Fr): Promise<Fr[]> {
|
|
300
403
|
const preimage = this.executionCache.getPreimage(hash);
|
|
301
404
|
if (!preimage) {
|
|
302
405
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -304,12 +407,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
304
407
|
return Promise.resolve(preimage);
|
|
305
408
|
}
|
|
306
409
|
|
|
307
|
-
override async
|
|
410
|
+
override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
|
|
308
411
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
309
412
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
310
413
|
// in the current transaction.
|
|
311
414
|
|
|
312
|
-
this.
|
|
415
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
313
416
|
contractAddress: this.contractAddress,
|
|
314
417
|
});
|
|
315
418
|
|
|
@@ -317,7 +420,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
317
420
|
|
|
318
421
|
return (
|
|
319
422
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
320
|
-
(await super.
|
|
423
|
+
(await super.doesNullifierExist(innerNullifier))
|
|
321
424
|
);
|
|
322
425
|
}
|
|
323
426
|
|
|
@@ -342,8 +445,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
342
445
|
* @param status - The status of notes to fetch.
|
|
343
446
|
* @returns Array of note data.
|
|
344
447
|
*/
|
|
345
|
-
public override async
|
|
346
|
-
owner: AztecAddress
|
|
448
|
+
public override async getNotes(
|
|
449
|
+
owner: Option<AztecAddress>,
|
|
347
450
|
storageSlot: Fr,
|
|
348
451
|
numSelects: number,
|
|
349
452
|
selectByIndexes: number[],
|
|
@@ -358,16 +461,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
358
461
|
limit: number,
|
|
359
462
|
offset: number,
|
|
360
463
|
status: NoteStatus,
|
|
361
|
-
|
|
464
|
+
maxNotes: number,
|
|
465
|
+
packedHintedNoteLength: number,
|
|
466
|
+
): Promise<BoundedVec<NoteData>> {
|
|
362
467
|
// Nullified pending notes are already removed from the list.
|
|
363
|
-
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
|
|
468
|
+
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner.value, storageSlot);
|
|
364
469
|
|
|
365
470
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
366
471
|
|
|
367
|
-
const noteService = new NoteService(this.noteStore, this.aztecNode, this.
|
|
472
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
368
473
|
const dbNotes = await noteService.getNotes(
|
|
369
474
|
this.callContext.contractAddress,
|
|
370
|
-
owner,
|
|
475
|
+
owner.value,
|
|
371
476
|
storageSlot,
|
|
372
477
|
status,
|
|
373
478
|
this.scopes,
|
|
@@ -388,13 +493,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
388
493
|
offset,
|
|
389
494
|
});
|
|
390
495
|
|
|
391
|
-
this.
|
|
496
|
+
this.logger.debug(
|
|
392
497
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
393
498
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
394
499
|
.join(', ')}`,
|
|
395
500
|
);
|
|
396
501
|
|
|
397
|
-
return notes;
|
|
502
|
+
return BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength });
|
|
398
503
|
}
|
|
399
504
|
|
|
400
505
|
/**
|
|
@@ -408,7 +513,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
408
513
|
* @param noteHash - A hash of the new note.
|
|
409
514
|
* @returns
|
|
410
515
|
*/
|
|
411
|
-
public
|
|
516
|
+
public notifyCreatedNote(
|
|
412
517
|
owner: AztecAddress,
|
|
413
518
|
storageSlot: Fr,
|
|
414
519
|
randomness: Fr,
|
|
@@ -417,7 +522,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
417
522
|
noteHash: Fr,
|
|
418
523
|
counter: number,
|
|
419
524
|
) {
|
|
420
|
-
this.
|
|
525
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
421
526
|
contractAddress: this.callContext.contractAddress,
|
|
422
527
|
storageSlot,
|
|
423
528
|
randomness,
|
|
@@ -449,7 +554,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
449
554
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
450
555
|
* @param noteHash - A hash of the new note.
|
|
451
556
|
*/
|
|
452
|
-
public async
|
|
557
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
453
558
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
454
559
|
this.callContext.contractAddress,
|
|
455
560
|
innerNullifier,
|
|
@@ -466,19 +571,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
466
571
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
467
572
|
* @param noteHash - A hash of the new note.
|
|
468
573
|
*/
|
|
469
|
-
public
|
|
470
|
-
this.
|
|
574
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
575
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
471
576
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
472
577
|
}
|
|
473
578
|
|
|
474
579
|
/**
|
|
475
|
-
* Check if a nullifier has been emitted in the same transaction, i.e. if
|
|
580
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
|
|
476
581
|
* called for this inner nullifier from the contract with the specified address.
|
|
477
582
|
* @param innerNullifier - The inner nullifier to check.
|
|
478
583
|
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
479
584
|
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
480
585
|
*/
|
|
481
|
-
public async
|
|
586
|
+
public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
482
587
|
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
483
588
|
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
484
589
|
return Promise.resolve(isNullifierPending);
|
|
@@ -488,13 +593,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
488
593
|
* Emit a contract class log.
|
|
489
594
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
490
595
|
* keep the preimage in ts for later.
|
|
491
|
-
* @param
|
|
596
|
+
* @param logData - The contract class log to be emitted.
|
|
492
597
|
* @param counter - The contract class log's counter.
|
|
493
598
|
*/
|
|
494
|
-
public
|
|
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
|
+
});
|
|
495
605
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
496
606
|
const text = log.toBuffer().toString('hex');
|
|
497
|
-
this.
|
|
607
|
+
this.logger.verbose(
|
|
498
608
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
499
609
|
);
|
|
500
610
|
}
|
|
@@ -520,7 +630,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
520
630
|
* @param isStaticCall - Whether the call is a static call.
|
|
521
631
|
* @returns The execution result.
|
|
522
632
|
*/
|
|
523
|
-
async
|
|
633
|
+
async callPrivateFunction(
|
|
524
634
|
targetContractAddress: AztecAddress,
|
|
525
635
|
functionSelector: FunctionSelector,
|
|
526
636
|
argsHash: Fr,
|
|
@@ -534,60 +644,72 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
534
644
|
}
|
|
535
645
|
|
|
536
646
|
const simulatorSetupTimer = new Timer();
|
|
537
|
-
this.
|
|
647
|
+
this.logger.debug(
|
|
538
648
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
539
649
|
);
|
|
540
650
|
|
|
541
651
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
542
652
|
|
|
543
|
-
await ensureContractSynced(
|
|
653
|
+
await this.contractSyncService.ensureContractSynced(
|
|
544
654
|
targetContractAddress,
|
|
545
655
|
functionSelector,
|
|
546
656
|
this.utilityExecutor,
|
|
547
|
-
this.aztecNode,
|
|
548
|
-
this.contractStore,
|
|
549
657
|
this.anchorBlockHeader,
|
|
658
|
+
this.jobId,
|
|
659
|
+
this.scopes,
|
|
550
660
|
);
|
|
551
661
|
|
|
552
|
-
const targetArtifact = await this.
|
|
662
|
+
const targetArtifact = await this.anchoredContractData.getFunctionArtifactWithDebugMetadata(
|
|
553
663
|
targetContractAddress,
|
|
554
664
|
functionSelector,
|
|
555
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
|
+
}
|
|
556
672
|
|
|
557
673
|
const derivedTxContext = this.txContext.clone();
|
|
558
674
|
|
|
559
675
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
560
676
|
|
|
561
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
677
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
562
678
|
argsHash,
|
|
563
|
-
derivedTxContext,
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
this.
|
|
567
|
-
this.
|
|
568
|
-
this.
|
|
569
|
-
this.
|
|
570
|
-
this.
|
|
571
|
-
this.
|
|
572
|
-
this.
|
|
573
|
-
this.
|
|
574
|
-
this.
|
|
575
|
-
this.
|
|
576
|
-
this.
|
|
577
|
-
this.
|
|
578
|
-
this.senderTaggingStore,
|
|
579
|
-
this.recipientTaggingStore,
|
|
580
|
-
this.
|
|
581
|
-
this.
|
|
582
|
-
this.
|
|
583
|
-
this.
|
|
584
|
-
this.
|
|
679
|
+
txContext: derivedTxContext,
|
|
680
|
+
txRequestSalt: this.txRequestSalt,
|
|
681
|
+
callContext: derivedCallContext,
|
|
682
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
683
|
+
utilityExecutor: this.utilityExecutor,
|
|
684
|
+
authWitnesses: this.authWitnesses,
|
|
685
|
+
capsules: this.capsules,
|
|
686
|
+
executionCache: this.executionCache,
|
|
687
|
+
noteCache: this.noteCache,
|
|
688
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
689
|
+
anchoredContractData: this.anchoredContractData,
|
|
690
|
+
noteStore: this.noteStore,
|
|
691
|
+
keyStore: this.keyStore,
|
|
692
|
+
addressStore: this.addressStore,
|
|
693
|
+
aztecNode: this.aztecNode,
|
|
694
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
695
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
696
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
697
|
+
capsuleService: this.capsuleService,
|
|
698
|
+
factService: this.factService,
|
|
699
|
+
privateEventStore: this.privateEventStore,
|
|
700
|
+
txResolver: this.txResolver,
|
|
701
|
+
contractSyncService: this.contractSyncService,
|
|
702
|
+
jobId: this.jobId,
|
|
703
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
585
704
|
sideEffectCounter,
|
|
586
|
-
this.
|
|
587
|
-
this.scopes,
|
|
588
|
-
this.
|
|
589
|
-
this.simulator,
|
|
590
|
-
|
|
705
|
+
log: this.logger,
|
|
706
|
+
scopes: this.scopes,
|
|
707
|
+
senderForTags: this.defaultSenderForTags,
|
|
708
|
+
simulator: this.simulator,
|
|
709
|
+
hooks: this.hooks,
|
|
710
|
+
l2TipsStore: this.l2TipsStore,
|
|
711
|
+
transientArrayService: this.transientArrayService,
|
|
712
|
+
});
|
|
591
713
|
|
|
592
714
|
const setupTime = simulatorSetupTimer.ms();
|
|
593
715
|
|
|
@@ -599,6 +721,9 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
599
721
|
functionSelector,
|
|
600
722
|
);
|
|
601
723
|
|
|
724
|
+
// Propagate the nested call's calldata count so the parent sees its increments on subsequent enqueues.
|
|
725
|
+
this.totalPublicCalldataCount = privateExecutionOracle.getTotalPublicCalldataCount();
|
|
726
|
+
|
|
602
727
|
if (isStaticCall) {
|
|
603
728
|
this.#checkValidStaticCall(childExecutionResult);
|
|
604
729
|
}
|
|
@@ -618,7 +743,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
618
743
|
};
|
|
619
744
|
}
|
|
620
745
|
|
|
621
|
-
|
|
746
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
747
|
+
public assertValidPublicCalldata(calldataHash: Fr) {
|
|
622
748
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
623
749
|
if (!calldata) {
|
|
624
750
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -628,47 +754,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
628
754
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
629
755
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
630
756
|
}
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
/**
|
|
634
|
-
* Verify relevant information when a public function is enqueued.
|
|
635
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
636
|
-
* @param calldataHash - The hash of the function selector and arguments.
|
|
637
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
638
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
639
|
-
*/
|
|
640
|
-
public privateNotifyEnqueuedPublicFunctionCall(
|
|
641
|
-
_targetContractAddress: AztecAddress,
|
|
642
|
-
calldataHash: Fr,
|
|
643
|
-
_sideEffectCounter: number,
|
|
644
|
-
_isStaticCall: boolean,
|
|
645
|
-
) {
|
|
646
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
647
757
|
return Promise.resolve();
|
|
648
758
|
}
|
|
649
759
|
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
653
|
-
* @param argsHash - The arguments hash to pass to the function.
|
|
654
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
655
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
656
|
-
*/
|
|
657
|
-
public privateNotifySetPublicTeardownFunctionCall(
|
|
658
|
-
_targetContractAddress: AztecAddress,
|
|
659
|
-
calldataHash: Fr,
|
|
660
|
-
_sideEffectCounter: number,
|
|
661
|
-
_isStaticCall: boolean,
|
|
662
|
-
) {
|
|
663
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
664
|
-
return Promise.resolve();
|
|
760
|
+
public getTotalPublicCalldataCount(): number {
|
|
761
|
+
return this.totalPublicCalldataCount;
|
|
665
762
|
}
|
|
666
763
|
|
|
667
|
-
public
|
|
764
|
+
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
668
765
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
669
766
|
}
|
|
670
767
|
|
|
671
|
-
public
|
|
768
|
+
public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
672
769
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
673
770
|
}
|
|
674
771
|
|
|
@@ -693,11 +790,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
693
790
|
}
|
|
694
791
|
|
|
695
792
|
public getDebugFunctionName() {
|
|
696
|
-
return this.
|
|
793
|
+
return this.anchoredContractData.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
697
794
|
}
|
|
698
795
|
|
|
699
|
-
|
|
700
|
-
this.
|
|
701
|
-
return Promise.resolve();
|
|
796
|
+
protected override get callerContext() {
|
|
797
|
+
return this.callContext.isStaticCall ? 'private view' : 'private';
|
|
702
798
|
}
|
|
703
799
|
}
|