@aztec/pxe 5.0.0-private.20260319 → 5.0.0-rc.2
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 +20 -14
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +78 -28
- package/dest/config/index.d.ts +8 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +13 -14
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +19 -19
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +57 -32
- 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 +2 -2
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -9
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
- package/dest/contract_function_simulator/index.d.ts +24 -6
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +11 -4
- 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 +5 -5
- 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 +7 -9
- 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 +29 -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 +5 -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 -61
- 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 +5 -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 -10
- 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/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 +21 -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 +33 -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 +16 -0
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/acir_callback.js +71 -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 -103
- 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/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 +135 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.js +976 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +183 -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 +1222 -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 +3 -4
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +44 -42
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +147 -59
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +143 -71
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +485 -187
- 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/proxied_contract_data_source.d.ts +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +35 -64
- 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 +9 -4
- package/dest/contract_logging.d.ts.map +1 -1
- package/dest/contract_logging.js +21 -6
- package/dest/contract_sync/contract_sync_service.d.ts +11 -9
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
- package/dest/contract_sync/contract_sync_service.js +73 -51
- package/dest/contract_sync/helpers.d.ts +8 -9
- package/dest/contract_sync/helpers.d.ts.map +1 -1
- package/dest/contract_sync/helpers.js +23 -30
- package/dest/debug/pxe_debug_utils.d.ts +3 -8
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +0 -6
- package/dest/entrypoints/client/bundle/index.d.ts +1 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +0 -1
- 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 +18 -5
- package/dest/entrypoints/client/lazy/index.d.ts +1 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +0 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +18 -5
- package/dest/entrypoints/pxe_creation_options.d.ts +16 -2
- 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 +2 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +1 -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 +20 -6
- package/dest/error_enriching.js +1 -1
- package/dest/events/event_service.d.ts +15 -6
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +44 -11
- 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 +51 -0
- package/dest/hooks/execution_hooks.d.ts.map +1 -0
- package/dest/hooks/execution_hooks.js +9 -0
- package/dest/hooks/index.d.ts +4 -0
- package/dest/hooks/index.d.ts.map +1 -0
- package/dest/hooks/index.js +1 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts +41 -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 +12 -12
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +169 -81
- 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 +27 -6
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +80 -56
- package/dest/notes_filter.d.ts +2 -3
- package/dest/notes_filter.d.ts.map +1 -1
- 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/private_kernel_reset_private_inputs_builder.js +1 -1
- package/dest/private_kernel/hints/test_utils.d.ts +1 -1
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
- package/dest/private_kernel/hints/test_utils.js +3 -4
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +152 -59
- package/dest/private_kernel/private_kernel_oracle.d.ts +10 -10
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +24 -22
- package/dest/pxe.d.ts +104 -27
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +229 -130
- 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 +9 -7
- 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 +647 -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 +36 -28
- 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 +1 -1
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +11 -28
- package/dest/storage/fact_store/fact_service.d.ts +20 -0
- package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_service.js +30 -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 +5 -0
- package/dest/storage/fact_store/index.d.ts.map +1 -0
- package/dest/storage/fact_store/index.js +3 -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 +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 +199 -170
- 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 +43 -43
- package/dest/storage/private_event_store/stored_private_event.js +1 -1
- 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/sender_tagging_store.d.ts +5 -5
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +3 -3
- package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +40 -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 +92 -0
- package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +36 -37
- package/dest/tagging/index.d.ts +5 -4
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +4 -3
- package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
- package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
- package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +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/reconcile_tagging_index_ranges.d.ts +36 -0
- package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
- package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -5
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +26 -14
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -6
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +21 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +2 -2
- package/package.json +20 -17
- package/src/bin/check_oracle_version.ts +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 +93 -38
- package/src/config/index.ts +15 -8
- package/src/contract_function_simulator/contract_function_simulator.ts +86 -48
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- package/src/contract_function_simulator/execution_note_cache.ts +1 -1
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
- package/src/contract_function_simulator/index.ts +63 -5
- 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 +5 -7
- package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
- package/src/contract_function_simulator/noir-structs/fact_collection.ts +59 -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 +8 -61
- package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -8
- 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/provided_secret.ts +5 -0
- package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +45 -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 +108 -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/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 +681 -0
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +947 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +3 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +182 -79
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +743 -295
- package/src/contract_function_simulator/pick_notes.ts +22 -3
- package/src/contract_function_simulator/proxied_contract_data_source.ts +41 -64
- package/src/contract_function_simulator/transient_array_service.ts +91 -0
- package/src/contract_logging.ts +18 -5
- package/src/contract_sync/contract_sync_service.ts +101 -87
- package/src/contract_sync/helpers.ts +24 -43
- package/src/debug/pxe_debug_utils.ts +3 -11
- package/src/entrypoints/client/bundle/index.ts +0 -1
- package/src/entrypoints/client/bundle/utils.ts +17 -5
- package/src/entrypoints/client/lazy/index.ts +0 -1
- package/src/entrypoints/client/lazy/utils.ts +17 -5
- package/src/entrypoints/pxe_creation_options.ts +21 -1
- package/src/entrypoints/server/index.ts +1 -2
- package/src/entrypoints/server/utils.ts +24 -7
- package/src/error_enriching.ts +1 -1
- package/src/events/event_service.ts +69 -21
- 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 +57 -0
- package/src/hooks/index.ts +11 -0
- package/src/hooks/resolve_tagging_secret_strategy.ts +46 -0
- package/src/logs/log_service.ts +204 -146
- package/src/messages/tx_resolver_service.ts +69 -0
- package/src/notes/note_service.ts +119 -85
- package/src/notes_filter.ts +1 -3
- package/src/oracle_version.ts +20 -10
- package/src/private_kernel/batch_planner.ts +169 -0
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +1 -1
- package/src/private_kernel/hints/test_utils.ts +3 -10
- package/src/private_kernel/private_kernel_execution_prover.ts +240 -82
- package/src/private_kernel/private_kernel_oracle.ts +35 -25
- package/src/pxe.ts +369 -138
- package/src/storage/allowed_scopes.ts +14 -0
- package/src/storage/anchor_block_store/anchor_block_store.ts +9 -7
- 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 +18 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -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 +769 -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 +44 -26
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/contract_store/contract_store.ts +16 -37
- package/src/storage/fact_store/fact_service.ts +45 -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 +4 -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 +228 -192
- 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 +52 -54
- package/src/storage/private_event_store/stored_private_event.ts +1 -1
- package/src/storage/tagging_store/index.ts +1 -1
- package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
- package/src/storage/tagging_store/sender_tagging_store.ts +6 -6
- package/src/storage/tagging_store/tagging_secret_sources_store.ts +117 -0
- package/src/tagging/get_all_logs_by_tags.ts +78 -50
- package/src/tagging/index.ts +4 -3
- package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
- package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +301 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +41 -19
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +23 -8
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +4 -5
- package/dest/access_scopes.d.ts +0 -9
- package/dest/access_scopes.d.ts.map +0 -1
- package/dest/access_scopes.js +0 -6
- package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +0 -16
- package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +0 -1
- package/dest/contract_function_simulator/noir-structs/message_tx_context.js +0 -57
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -42
- package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -61
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/oracle.js +0 -437
- 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 -36
- 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/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
- package/src/access_scopes.ts +0 -9
- package/src/contract_function_simulator/noir-structs/message_tx_context.ts +0 -55
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -135
- package/src/contract_function_simulator/oracle/oracle.ts +0 -675
- package/src/messages/message_context_service.ts +0 -45
- package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -140
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
|
@@ -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(
|
|
@@ -76,7 +75,7 @@ export async function executePrivateFunction(
|
|
|
76
75
|
|
|
77
76
|
const contractClassLogs = privateExecutionOracle.getContractClassLogs();
|
|
78
77
|
|
|
79
|
-
const rawReturnValues = await privateExecutionOracle.
|
|
78
|
+
const rawReturnValues = await privateExecutionOracle.getHashPreimage(publicInputs.returnsHash);
|
|
80
79
|
|
|
81
80
|
const newNotes = privateExecutionOracle.getNewNotes();
|
|
82
81
|
const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
|
|
@@ -2,11 +2,10 @@ import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS, PRIVATE_CONTEXT_INPUTS_LENGTH }
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
|
-
import {
|
|
5
|
+
import { toACVMWitness } from '@aztec/simulator/client';
|
|
6
6
|
import {
|
|
7
7
|
type FunctionAbi,
|
|
8
8
|
type FunctionArtifact,
|
|
9
|
-
type FunctionCall,
|
|
10
9
|
FunctionSelector,
|
|
11
10
|
type NoteSelector,
|
|
12
11
|
countArgumentsSize,
|
|
@@ -14,8 +13,13 @@ import {
|
|
|
14
13
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
14
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
16
15
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
17
|
-
import {
|
|
18
|
-
|
|
16
|
+
import {
|
|
17
|
+
AppTaggingSecret,
|
|
18
|
+
AppTaggingSecretKind,
|
|
19
|
+
ContractClassLog,
|
|
20
|
+
ContractClassLogFields,
|
|
21
|
+
type TaggingIndexRange,
|
|
22
|
+
} from '@aztec/stdlib/logs';
|
|
19
23
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
20
24
|
import {
|
|
21
25
|
CallContext,
|
|
@@ -25,25 +29,30 @@ import {
|
|
|
25
29
|
type TxContext,
|
|
26
30
|
} from '@aztec/stdlib/tx';
|
|
27
31
|
|
|
28
|
-
import type {
|
|
32
|
+
import type {
|
|
33
|
+
ResolveTaggingSecretStrategy,
|
|
34
|
+
TaggingSecretStrategy,
|
|
35
|
+
} from '../../hooks/resolve_tagging_secret_strategy.js';
|
|
29
36
|
import { NoteService } from '../../notes/note_service.js';
|
|
30
37
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
31
38
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
32
39
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
33
40
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
34
41
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
42
|
+
import { BoundedVec } from '../noir-structs/bounded_vec.js';
|
|
43
|
+
import type { ContractClassLogData } from '../noir-structs/contract_class_log_data.js';
|
|
44
|
+
import type { NoteData } from '../noir-structs/note_data.js';
|
|
45
|
+
import { Option } from '../noir-structs/option.js';
|
|
46
|
+
import type { ResolvedTaggingStrategy } from '../noir-structs/resolved_tagging_strategy.js';
|
|
35
47
|
import { pickNotes } from '../pick_notes.js';
|
|
36
|
-
import type { IPrivateExecutionOracle
|
|
48
|
+
import type { IPrivateExecutionOracle } from './interfaces.js';
|
|
37
49
|
import { executePrivateFunction } from './private_execution.js';
|
|
38
50
|
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
39
51
|
|
|
40
52
|
/** Args for PrivateExecutionOracle constructor. */
|
|
41
|
-
export type PrivateExecutionOracleArgs =
|
|
53
|
+
export type PrivateExecutionOracleArgs = UtilityExecutionOracleArgs & {
|
|
42
54
|
argsHash: Fr;
|
|
43
55
|
txContext: TxContext;
|
|
44
|
-
callContext: CallContext;
|
|
45
|
-
/** Needed to trigger contract synchronization before nested calls */
|
|
46
|
-
utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
47
56
|
executionCache: HashedValuesCache;
|
|
48
57
|
noteCache: ExecutionNoteCache;
|
|
49
58
|
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
@@ -51,7 +60,6 @@ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contr
|
|
|
51
60
|
totalPublicCalldataCount?: number;
|
|
52
61
|
sideEffectCounter?: number;
|
|
53
62
|
senderForTags?: AztecAddress;
|
|
54
|
-
simulator?: CircuitSimulator;
|
|
55
63
|
};
|
|
56
64
|
|
|
57
65
|
/**
|
|
@@ -75,39 +83,38 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
75
83
|
|
|
76
84
|
private readonly argsHash: Fr;
|
|
77
85
|
private readonly txContext: TxContext;
|
|
78
|
-
private readonly callContext: CallContext;
|
|
79
|
-
private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
80
86
|
private readonly executionCache: HashedValuesCache;
|
|
81
87
|
private readonly noteCache: ExecutionNoteCache;
|
|
82
88
|
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
83
89
|
private readonly senderTaggingStore: SenderTaggingStore;
|
|
84
90
|
private totalPublicCalldataCount: number;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
private readonly
|
|
91
|
+
private readonly initialSideEffectCounter: number;
|
|
92
|
+
/** Sender for tags passed in at oracle construction time. Returned by `getSenderForTags`. */
|
|
93
|
+
private readonly defaultSenderForTags: AztecAddress | undefined;
|
|
88
94
|
|
|
89
95
|
constructor(args: PrivateExecutionOracleArgs) {
|
|
90
96
|
super({
|
|
91
97
|
...args,
|
|
92
|
-
contractAddress: args.callContext.contractAddress,
|
|
93
98
|
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
94
99
|
});
|
|
95
100
|
this.argsHash = args.argsHash;
|
|
96
101
|
this.txContext = args.txContext;
|
|
97
|
-
this.callContext = args.callContext;
|
|
98
|
-
this.utilityExecutor = args.utilityExecutor;
|
|
99
102
|
this.executionCache = args.executionCache;
|
|
100
103
|
this.noteCache = args.noteCache;
|
|
101
104
|
this.taggingIndexCache = args.taggingIndexCache;
|
|
102
105
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
103
106
|
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
104
|
-
this.
|
|
105
|
-
this.
|
|
106
|
-
this.simulator = args.simulator;
|
|
107
|
+
this.initialSideEffectCounter = args.sideEffectCounter ?? 0;
|
|
108
|
+
this.defaultSenderForTags = args.senderForTags;
|
|
107
109
|
}
|
|
108
110
|
|
|
109
111
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
110
|
-
return new PrivateContextInputs(
|
|
112
|
+
return new PrivateContextInputs(
|
|
113
|
+
this.callContext,
|
|
114
|
+
this.anchorBlockHeader,
|
|
115
|
+
this.txContext,
|
|
116
|
+
this.initialSideEffectCounter,
|
|
117
|
+
);
|
|
111
118
|
}
|
|
112
119
|
|
|
113
120
|
// We still need this function until we can get user-defined ordering of structs for fn arguments
|
|
@@ -174,59 +181,133 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
174
181
|
* for a tag in order to emit a log. Constrained tagging should not use this as there is no
|
|
175
182
|
* guarantee that the recipient knows about the sender, and hence about the shared secret.
|
|
176
183
|
*
|
|
177
|
-
*
|
|
178
|
-
* 'senderForTags' value (unless it is replaced).
|
|
184
|
+
* Returns the wallet-supplied default sender for tags, or `None` if no default was provided.
|
|
179
185
|
*/
|
|
180
|
-
public getSenderForTags(): Promise<AztecAddress
|
|
181
|
-
return Promise.resolve(this.
|
|
186
|
+
public getSenderForTags(): Promise<Option<AztecAddress>> {
|
|
187
|
+
return Promise.resolve(this.defaultSenderForTags ? Option.some(this.defaultSenderForTags) : Option.none());
|
|
182
188
|
}
|
|
183
189
|
|
|
184
190
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
* This unconstrained value is used as the sender when computing an unconstrained shared secret
|
|
188
|
-
* for a tag in order to emit a log. Constrained tagging should not use this as there is no
|
|
189
|
-
* guarantee that the recipient knows about the sender, and hence about the shared secret.
|
|
190
|
-
*
|
|
191
|
-
* Account contracts typically set this value before calling other contracts. The value persists
|
|
192
|
-
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
193
|
-
* value (unless it is replaced by another call to this setter).
|
|
191
|
+
* Resolves the tagging strategy for a message via the wallet's {@link ResolveTaggingSecretStrategy} hook. The contract receives a ready-to-use {@link ResolvedTaggingStrategy}.
|
|
192
|
+
* When no hook is configured, applies a privacy-safe default.
|
|
194
193
|
*/
|
|
195
|
-
public
|
|
196
|
-
|
|
197
|
-
|
|
194
|
+
public async resolveTaggingStrategy(
|
|
195
|
+
sender: AztecAddress,
|
|
196
|
+
recipient: AztecAddress,
|
|
197
|
+
deliveryMode: AppTaggingSecretKind,
|
|
198
|
+
): Promise<ResolvedTaggingStrategy> {
|
|
199
|
+
const hook: ResolveTaggingSecretStrategy | undefined = this.hooks?.resolveTaggingSecretStrategy;
|
|
200
|
+
let strategy: TaggingSecretStrategy;
|
|
201
|
+
if (hook) {
|
|
202
|
+
const { currentContractClassId } = await this.getContractInstance(this.contractAddress);
|
|
203
|
+
strategy = await hook({
|
|
204
|
+
contractAddress: this.contractAddress,
|
|
205
|
+
contractClassId: currentContractClassId,
|
|
206
|
+
sender,
|
|
207
|
+
recipient,
|
|
208
|
+
deliveryMode,
|
|
209
|
+
});
|
|
210
|
+
} else {
|
|
211
|
+
strategy = this.#defaultTaggingSecretStrategy(deliveryMode, recipient);
|
|
212
|
+
}
|
|
213
|
+
return this.#resolveTaggingSecretStrategy(strategy, sender, recipient);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/** Resolves a wallet-provided {@link TaggingSecretStrategy} into the app-siloed secret handed to the contract. */
|
|
217
|
+
async #resolveTaggingSecretStrategy(
|
|
218
|
+
strategy: TaggingSecretStrategy,
|
|
219
|
+
sender: AztecAddress,
|
|
220
|
+
recipient: AztecAddress,
|
|
221
|
+
): Promise<ResolvedTaggingStrategy> {
|
|
222
|
+
// PXE only performs the derivation; it does not reject a strategy that is unsound for the delivery mode (e.g. an
|
|
223
|
+
// address-derived or arbitrary-secret strategy for constrained delivery). That soundness check belongs in the
|
|
224
|
+
// Noir circuit, which constrains the resolved strategy against the delivery mode.
|
|
225
|
+
switch (strategy.type) {
|
|
226
|
+
case 'non-interactive-handshake':
|
|
227
|
+
return { type: 'non-interactive-handshake' };
|
|
228
|
+
case 'address-derived':
|
|
229
|
+
return this.#addressDerivedSecret(sender, recipient);
|
|
230
|
+
case 'arbitrary-secret': {
|
|
231
|
+
// App-silo the raw arbitrary secret point here so wallets never replicate the derivation.
|
|
232
|
+
const appTaggingSecret = await AppTaggingSecret.compute(strategy.secret, this.contractAddress, recipient);
|
|
233
|
+
return { type: 'unconstrained-secret', secret: appTaggingSecret.secret };
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/** The privacy-safe tagging secret strategy used when no {@link ResolveTaggingSecretStrategy} hook is configured. */
|
|
239
|
+
#defaultTaggingSecretStrategy(deliveryMode: AppTaggingSecretKind, recipient: AztecAddress): TaggingSecretStrategy {
|
|
240
|
+
if (deliveryMode === AppTaggingSecretKind.CONSTRAINED) {
|
|
241
|
+
// Constrained delivery has no "safe" default: a non-interactive handshake would reveal the recipient onchain,
|
|
242
|
+
// and an interactive handshake always needs a wallet interaction (i.e. a configured hook). With no hook there is
|
|
243
|
+
// nothing safe to fall back to, so we always fail.
|
|
244
|
+
throw new Error(`Constrained delivery to ${recipient} requires a configured resolveTaggingSecretStrategy hook.`);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Unconstrained default: an address-derived (Diffie-Hellman) shared secret, which leaves no onchain trace.
|
|
248
|
+
return { type: 'address-derived' };
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* The app-siloed, recipient-directional secret derived from the sender's and recipient's address keys via ECDH,
|
|
253
|
+
* ready to hand to the contract. Callers must validate the recipient in-circuit before reaching here, so an invalid one is unexpected.
|
|
254
|
+
*/
|
|
255
|
+
async #addressDerivedSecret(sender: AztecAddress, recipient: AztecAddress): Promise<ResolvedTaggingStrategy> {
|
|
256
|
+
const secret = await this.getAppTaggingSecret(sender, recipient);
|
|
257
|
+
if (!secret.isSome()) {
|
|
258
|
+
throw new Error(`Cannot derive an address-derived tagging secret for invalid recipient ${recipient}`);
|
|
259
|
+
}
|
|
260
|
+
return { type: 'unconstrained-secret', secret: secret.value };
|
|
198
261
|
}
|
|
199
262
|
|
|
200
263
|
/**
|
|
201
|
-
* Returns the
|
|
264
|
+
* Returns the sender-side app tagging secret for a `(sender, recipient)` pair.
|
|
265
|
+
*
|
|
266
|
+
* The caller obtains an index via {@link getNextTaggingIndex} and computes the final tag itself.
|
|
267
|
+
* The only expected `None` case is an invalid recipient address; missing sender data fails while deriving.
|
|
268
|
+
*
|
|
202
269
|
* @param sender - The address sending the log
|
|
203
270
|
* @param recipient - The address receiving the log
|
|
204
|
-
* @returns
|
|
271
|
+
* @returns The app tagging secret, or `None` if the recipient is invalid.
|
|
205
272
|
*/
|
|
206
|
-
public async
|
|
207
|
-
const extendedSecret = await this.#
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
recipient
|
|
211
|
-
|
|
273
|
+
public async getAppTaggingSecret(sender: AztecAddress, recipient: AztecAddress): Promise<Option<Fr>> {
|
|
274
|
+
const extendedSecret = await this.#calculateAppTaggingSecret(this.contractAddress, sender, recipient);
|
|
275
|
+
|
|
276
|
+
if (!extendedSecret) {
|
|
277
|
+
this.logger.warn(`Computing a tagging secret for invalid recipient ${recipient} - returning no secret`, {
|
|
278
|
+
contractAddress: this.contractAddress,
|
|
279
|
+
});
|
|
280
|
+
return Option.none();
|
|
281
|
+
}
|
|
212
282
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
216
|
-
);
|
|
217
|
-
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
283
|
+
return Option.some(extendedSecret.secret);
|
|
284
|
+
}
|
|
218
285
|
|
|
219
|
-
|
|
286
|
+
/**
|
|
287
|
+
* Returns the next sender-side tagging index for a given secret and delivery mode.
|
|
288
|
+
*
|
|
289
|
+
* @param secret - The tagging secret to allocate an index for.
|
|
290
|
+
* @param kind - The sender-side index namespace.
|
|
291
|
+
* @returns The next index to use for this secret.
|
|
292
|
+
*/
|
|
293
|
+
public async getNextTaggingIndex(secret: Fr, kind: AppTaggingSecretKind): Promise<number> {
|
|
294
|
+
const appTaggingSecret = new AppTaggingSecret(secret, this.contractAddress, kind);
|
|
295
|
+
const index = await this.#reserveNextIndexForSecret(appTaggingSecret);
|
|
296
|
+
this.logger.debug(`Incrementing ${kind} tagging index for secret in contract ${this.contractAddress} to ${index}`);
|
|
297
|
+
return index;
|
|
220
298
|
}
|
|
221
299
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
300
|
+
/** Resolves the next index for a given tagging secret, syncing from chain if it is missing from the in-tx cache. */
|
|
301
|
+
async #reserveNextIndexForSecret(secret: AppTaggingSecret): Promise<number> {
|
|
302
|
+
const index = await this.#getIndexToUseForSecret(secret);
|
|
303
|
+
this.taggingIndexCache.setLastUsedIndex(secret, index);
|
|
304
|
+
return index;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
async #calculateAppTaggingSecret(contractAddress: AztecAddress, sender: AztecAddress, recipient: AztecAddress) {
|
|
227
308
|
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
228
309
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
229
|
-
return
|
|
310
|
+
return AppTaggingSecret.computeUnconstrained(
|
|
230
311
|
senderCompleteAddress,
|
|
231
312
|
senderIvsk,
|
|
232
313
|
recipient,
|
|
@@ -235,7 +316,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
235
316
|
);
|
|
236
317
|
}
|
|
237
318
|
|
|
238
|
-
async #getIndexToUseForSecret(secret:
|
|
319
|
+
async #getIndexToUseForSecret(secret: AppTaggingSecret): Promise<number> {
|
|
239
320
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
240
321
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
241
322
|
|
|
@@ -265,7 +346,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
265
346
|
* @param values - Values to store.
|
|
266
347
|
* @returns The hash of the values.
|
|
267
348
|
*/
|
|
268
|
-
public
|
|
349
|
+
public setHashPreimage(values: Fr[], hash: Fr) {
|
|
269
350
|
return this.executionCache.store(values, hash);
|
|
270
351
|
}
|
|
271
352
|
|
|
@@ -274,7 +355,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
274
355
|
* @param hash - Hash of the values.
|
|
275
356
|
* @returns The values.
|
|
276
357
|
*/
|
|
277
|
-
public
|
|
358
|
+
public getHashPreimage(hash: Fr): Promise<Fr[]> {
|
|
278
359
|
const preimage = this.executionCache.getPreimage(hash);
|
|
279
360
|
if (!preimage) {
|
|
280
361
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -282,7 +363,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
282
363
|
return Promise.resolve(preimage);
|
|
283
364
|
}
|
|
284
365
|
|
|
285
|
-
override async
|
|
366
|
+
override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
|
|
286
367
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
287
368
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
288
369
|
// in the current transaction.
|
|
@@ -295,7 +376,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
295
376
|
|
|
296
377
|
return (
|
|
297
378
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
298
|
-
(await super.
|
|
379
|
+
(await super.doesNullifierExist(innerNullifier))
|
|
299
380
|
);
|
|
300
381
|
}
|
|
301
382
|
|
|
@@ -321,7 +402,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
321
402
|
* @returns Array of note data.
|
|
322
403
|
*/
|
|
323
404
|
public override async getNotes(
|
|
324
|
-
owner: AztecAddress
|
|
405
|
+
owner: Option<AztecAddress>,
|
|
325
406
|
storageSlot: Fr,
|
|
326
407
|
numSelects: number,
|
|
327
408
|
selectByIndexes: number[],
|
|
@@ -336,16 +417,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
336
417
|
limit: number,
|
|
337
418
|
offset: number,
|
|
338
419
|
status: NoteStatus,
|
|
339
|
-
|
|
420
|
+
maxNotes: number,
|
|
421
|
+
packedHintedNoteLength: number,
|
|
422
|
+
): Promise<BoundedVec<NoteData>> {
|
|
340
423
|
// Nullified pending notes are already removed from the list.
|
|
341
|
-
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
|
|
424
|
+
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner.value, storageSlot);
|
|
342
425
|
|
|
343
426
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
344
427
|
|
|
345
428
|
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
346
429
|
const dbNotes = await noteService.getNotes(
|
|
347
430
|
this.callContext.contractAddress,
|
|
348
|
-
owner,
|
|
431
|
+
owner.value,
|
|
349
432
|
storageSlot,
|
|
350
433
|
status,
|
|
351
434
|
this.scopes,
|
|
@@ -372,7 +455,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
372
455
|
.join(', ')}`,
|
|
373
456
|
);
|
|
374
457
|
|
|
375
|
-
return notes;
|
|
458
|
+
return BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength });
|
|
376
459
|
}
|
|
377
460
|
|
|
378
461
|
/**
|
|
@@ -466,10 +549,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
466
549
|
* Emit a contract class log.
|
|
467
550
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
468
551
|
* keep the preimage in ts for later.
|
|
469
|
-
* @param
|
|
552
|
+
* @param logData - The contract class log to be emitted.
|
|
470
553
|
* @param counter - The contract class log's counter.
|
|
471
554
|
*/
|
|
472
|
-
public notifyCreatedContractClassLog(
|
|
555
|
+
public notifyCreatedContractClassLog(logData: ContractClassLogData, counter: number) {
|
|
556
|
+
const log = ContractClassLog.from({
|
|
557
|
+
contractAddress: logData.contractAddress,
|
|
558
|
+
fields: new ContractClassLogFields(logData.fields),
|
|
559
|
+
emittedLength: logData.emittedLength,
|
|
560
|
+
});
|
|
473
561
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
474
562
|
const text = log.toBuffer().toString('hex');
|
|
475
563
|
this.logger.verbose(
|
|
@@ -554,30 +642,37 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
554
642
|
aztecNode: this.aztecNode,
|
|
555
643
|
senderTaggingStore: this.senderTaggingStore,
|
|
556
644
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
557
|
-
|
|
558
|
-
|
|
645
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
646
|
+
capsuleService: this.capsuleService,
|
|
647
|
+
factService: this.factService,
|
|
559
648
|
privateEventStore: this.privateEventStore,
|
|
560
|
-
|
|
649
|
+
txResolver: this.txResolver,
|
|
561
650
|
contractSyncService: this.contractSyncService,
|
|
562
651
|
jobId: this.jobId,
|
|
563
652
|
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
564
653
|
sideEffectCounter,
|
|
565
654
|
log: this.logger,
|
|
566
655
|
scopes: this.scopes,
|
|
567
|
-
senderForTags: this.
|
|
568
|
-
simulator: this.simulator
|
|
656
|
+
senderForTags: this.defaultSenderForTags,
|
|
657
|
+
simulator: this.simulator,
|
|
658
|
+
hooks: this.hooks,
|
|
659
|
+
l2TipsStore: this.l2TipsStore,
|
|
660
|
+
transientArrayService: this.transientArrayService,
|
|
569
661
|
});
|
|
570
662
|
|
|
571
663
|
const setupTime = simulatorSetupTimer.ms();
|
|
572
664
|
|
|
573
665
|
const childExecutionResult = await executePrivateFunction(
|
|
574
|
-
this.simulator
|
|
666
|
+
this.simulator,
|
|
575
667
|
privateExecutionOracle,
|
|
576
668
|
targetArtifact,
|
|
577
669
|
targetContractAddress,
|
|
578
670
|
functionSelector,
|
|
579
671
|
);
|
|
580
672
|
|
|
673
|
+
// Propagate the nested call's calldata count so the parent sees its increments on subsequent enqueues.
|
|
674
|
+
this.totalPublicCalldataCount = privateExecutionOracle.getTotalPublicCalldataCount();
|
|
675
|
+
|
|
581
676
|
if (isStaticCall) {
|
|
582
677
|
this.#checkValidStaticCall(childExecutionResult);
|
|
583
678
|
}
|
|
@@ -598,7 +693,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
598
693
|
}
|
|
599
694
|
|
|
600
695
|
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
601
|
-
public
|
|
696
|
+
public assertValidPublicCalldata(calldataHash: Fr) {
|
|
602
697
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
603
698
|
if (!calldata) {
|
|
604
699
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -611,11 +706,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
611
706
|
return Promise.resolve();
|
|
612
707
|
}
|
|
613
708
|
|
|
709
|
+
public getTotalPublicCalldataCount(): number {
|
|
710
|
+
return this.totalPublicCalldataCount;
|
|
711
|
+
}
|
|
712
|
+
|
|
614
713
|
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
615
714
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
616
715
|
}
|
|
617
716
|
|
|
618
|
-
public
|
|
717
|
+
public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
619
718
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
620
719
|
}
|
|
621
720
|
|
|
@@ -642,4 +741,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
642
741
|
public getDebugFunctionName() {
|
|
643
742
|
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
644
743
|
}
|
|
744
|
+
|
|
745
|
+
protected override get callerContext() {
|
|
746
|
+
return this.callContext.isStaticCall ? 'private view' : 'private';
|
|
747
|
+
}
|
|
645
748
|
}
|