@aztec/pxe 0.0.1-commit.d431d1c → 0.0.1-commit.d58ff9d0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bin/check_oracle_version.js +40 -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 +34 -0
- package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
- package/dest/bin/oracle_version_helpers.js +46 -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 +26 -14
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +128 -26
- package/dest/config/index.d.ts +11 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +18 -2
- 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/skip_sync_contracts.d.ts +11 -0
- package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
- package/dest/contract/skip_sync_contracts.js +18 -0
- package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
- package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
- package/dest/contract_function_simulator/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 -98
- 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 +11 -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 +4 -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 +10 -11
- 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 +4 -6
- 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 +9 -13
- 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 +19 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
- package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
- package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/index.js +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -95
- 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 +139 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.js +1016 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +274 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -22
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +7 -43
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +88 -95
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +268 -116
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +215 -86
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +625 -204
- 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 -17
- package/dest/entrypoints/client/bundle/index.d.ts +4 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +3 -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 +45 -12
- package/dest/entrypoints/client/lazy/index.d.ts +4 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +3 -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 +46 -13
- package/dest/entrypoints/client/store.d.ts +14 -0
- package/dest/entrypoints/client/store.d.ts.map +1 -0
- package/dest/entrypoints/client/store.js +42 -0
- package/dest/entrypoints/pxe_creation_options.d.ts +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 +8 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +6 -1
- package/dest/entrypoints/server/store.d.ts +18 -0
- package/dest/entrypoints/server/store.d.ts.map +1 -0
- package/dest/entrypoints/server/store.js +28 -0
- package/dest/entrypoints/server/utils.d.ts +4 -3
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +54 -15
- 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 +17 -13
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +201 -91
- 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 +60 -0
- package/dest/notes/note_service.d.ts +31 -9
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +95 -70
- 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 -9
- 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 +209 -87
- 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 +418 -231
- 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 -34
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +191 -146
- package/dest/storage/fact_store/fact_service.d.ts +22 -0
- package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_service.js +45 -0
- package/dest/storage/fact_store/fact_store.d.ts +95 -0
- package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_store.js +408 -0
- package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
- package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_store_keys.js +50 -0
- package/dest/storage/fact_store/index.d.ts +6 -0
- package/dest/storage/fact_store/index.d.ts.map +1 -0
- package/dest/storage/fact_store/index.js +4 -0
- package/dest/storage/fact_store/origin_state.d.ts +59 -0
- package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
- package/dest/storage/fact_store/origin_state.js +60 -0
- package/dest/storage/fact_store/stored_fact.d.ts +32 -0
- package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
- package/dest/storage/fact_store/stored_fact.js +64 -0
- package/dest/storage/index.d.ts +3 -2
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +2 -1
- package/dest/storage/metadata.d.ts +2 -2
- package/dest/storage/metadata.d.ts.map +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +63 -56
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +321 -266
- package/dest/storage/note_store/stored_note.d.ts +11 -0
- package/dest/storage/note_store/stored_note.d.ts.map +1 -0
- package/dest/storage/note_store/stored_note.js +27 -0
- 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 +26 -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 +214 -163
- package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
- package/dest/storage/private_event_store/stored_private_event.js +56 -0
- package/dest/storage/store_identity.d.ts +35 -0
- package/dest/storage/store_identity.d.ts.map +1 -0
- package/dest/storage/store_identity.js +44 -0
- package/dest/storage/tagging_store/index.d.ts +2 -2
- package/dest/storage/tagging_store/index.d.ts.map +1 -1
- package/dest/storage/tagging_store/index.js +1 -1
- package/dest/storage/tagging_store/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 +45 -28
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +270 -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 +3 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +28 -10
- package/dest/tagging/get_all_logs_by_tags.d.ts +48 -0
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
- package/dest/tagging/get_all_logs_by_tags.js +59 -0
- package/dest/tagging/index.d.ts +8 -6
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +6 -4
- 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 +74 -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 +238 -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 -9
- 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 +44 -16
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -7
- 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 +46 -27
- package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
- package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
- package/dest/tagging/testing/tag_query_test_utils.js +10 -0
- package/package.json +29 -17
- package/src/bin/check_oracle_version.ts +46 -134
- package/src/bin/index.ts +1 -0
- package/src/bin/oracle_version_helpers.ts +54 -0
- package/src/block_synchronizer/block_stream_source.ts +42 -0
- package/src/block_synchronizer/block_synchronizer.ts +154 -48
- package/src/config/index.ts +22 -1
- 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/skip_sync_contracts.ts +23 -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 +463 -162
- 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 +89 -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 +11 -10
- 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 +7 -12
- 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 +19 -0
- package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
- package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
- package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
- package/src/contract_function_simulator/oracle/index.ts +1 -15
- package/src/contract_function_simulator/oracle/interfaces.ts +11 -167
- 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 +710 -0
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1052 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +7 -67
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +340 -213
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +966 -275
- 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 -18
- package/src/entrypoints/client/bundle/index.ts +3 -0
- package/src/entrypoints/client/bundle/utils.ts +46 -21
- package/src/entrypoints/client/lazy/index.ts +3 -0
- package/src/entrypoints/client/lazy/utils.ts +48 -22
- package/src/entrypoints/client/store.ts +54 -0
- package/src/entrypoints/pxe_creation_options.ts +23 -2
- package/src/entrypoints/server/index.ts +8 -1
- package/src/entrypoints/server/store.ts +47 -0
- package/src/entrypoints/server/utils.ts +61 -34
- 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 +248 -152
- package/src/messages/tx_resolver_service.ts +69 -0
- package/src/notes/note_service.ts +137 -101
- package/src/notes_filter.ts +24 -0
- package/src/oracle_version.ts +20 -9
- package/src/private_kernel/batch_planner.ts +168 -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 +347 -123
- package/src/private_kernel/private_kernel_oracle.ts +65 -36
- package/src/pxe.ts +732 -297
- 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 +247 -185
- package/src/storage/fact_store/fact_service.ts +69 -0
- package/src/storage/fact_store/fact_store.ts +487 -0
- package/src/storage/fact_store/fact_store_keys.ts +75 -0
- package/src/storage/fact_store/index.ts +15 -0
- package/src/storage/fact_store/origin_state.ts +84 -0
- package/src/storage/fact_store/stored_fact.ts +80 -0
- package/src/storage/index.ts +2 -1
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +363 -324
- package/src/storage/note_store/stored_note.ts +26 -0
- package/src/storage/open_pxe_stores.ts +52 -0
- package/src/storage/private_event_store/private_event_store.ts +268 -210
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/store_identity.ts +72 -0
- 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 +333 -155
- package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
- package/src/tagging/constants.ts +30 -10
- package/src/tagging/get_all_logs_by_tags.ts +120 -0
- package/src/tagging/index.ts +7 -5
- package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
- package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +358 -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 -17
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +47 -29
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +42 -29
- package/src/tagging/testing/tag_query_test_utils.ts +11 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -58
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/oracle.js +0 -346
- 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/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 -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 -29
- package/dest/tree_membership/tree_membership_service.d.ts +0 -50
- package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
- package/dest/tree_membership/tree_membership_service.js +0 -75
- package/src/contract_function_simulator/oracle/oracle.ts +0 -607
- package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
- 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 -133
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -43
- package/src/tree_membership/tree_membership_service.ts +0 -97
|
@@ -2,52 +2,69 @@ 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
|
|
|
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';
|
|
33
38
|
import { NoteService } from '../../notes/note_service.js';
|
|
34
|
-
import
|
|
35
|
-
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
36
|
-
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
37
|
-
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
38
|
-
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
39
|
-
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
40
|
-
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
41
|
-
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
39
|
+
import { assertAllowedScope } from '../../storage/allowed_scopes.js';
|
|
42
40
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
43
41
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
44
42
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
45
43
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
46
44
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
45
|
+
import { BoundedVec } from '../noir-structs/bounded_vec.js';
|
|
46
|
+
import type { ContractClassLogData } from '../noir-structs/contract_class_log_data.js';
|
|
47
|
+
import type { NoteData } from '../noir-structs/note_data.js';
|
|
48
|
+
import { Option } from '../noir-structs/option.js';
|
|
49
|
+
import type { ResolvedTaggingStrategy } from '../noir-structs/resolved_tagging_strategy.js';
|
|
47
50
|
import { pickNotes } from '../pick_notes.js';
|
|
48
|
-
import type { IPrivateExecutionOracle
|
|
49
|
-
import { executePrivateFunction
|
|
50
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
51
|
+
import type { IPrivateExecutionOracle } from './interfaces.js';
|
|
52
|
+
import { executePrivateFunction } from './private_execution.js';
|
|
53
|
+
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
54
|
+
|
|
55
|
+
/** Args for PrivateExecutionOracle constructor. */
|
|
56
|
+
export type PrivateExecutionOracleArgs = UtilityExecutionOracleArgs & {
|
|
57
|
+
argsHash: Fr;
|
|
58
|
+
txContext: TxContext;
|
|
59
|
+
txRequestSalt: Fr;
|
|
60
|
+
executionCache: HashedValuesCache;
|
|
61
|
+
noteCache: ExecutionNoteCache;
|
|
62
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
63
|
+
senderTaggingStore: SenderTaggingStore;
|
|
64
|
+
totalPublicCalldataCount?: number;
|
|
65
|
+
sideEffectCounter?: number;
|
|
66
|
+
senderForTags?: AztecAddress;
|
|
67
|
+
};
|
|
51
68
|
|
|
52
69
|
/**
|
|
53
70
|
* The execution oracle for the private part of a transaction.
|
|
@@ -66,65 +83,45 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
66
83
|
private newNotes: NoteAndSlot[] = [];
|
|
67
84
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
68
85
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
69
|
-
private offchainEffects: { data: Fr[] }[] = [];
|
|
70
86
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
71
87
|
|
|
72
|
-
|
|
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
|
-
protected sideEffectCounter: number = 0,
|
|
100
|
-
log = createLogger('simulator:client_execution_context'),
|
|
101
|
-
scopes?: AztecAddress[],
|
|
102
|
-
private senderForTags?: AztecAddress,
|
|
103
|
-
private simulator?: CircuitSimulator,
|
|
104
|
-
) {
|
|
105
|
-
super(
|
|
106
|
-
callContext.contractAddress,
|
|
107
|
-
authWitnesses,
|
|
108
|
-
capsules,
|
|
109
|
-
anchorBlockHeader,
|
|
110
|
-
contractStore,
|
|
111
|
-
noteStore,
|
|
112
|
-
keyStore,
|
|
113
|
-
addressStore,
|
|
114
|
-
aztecNode,
|
|
115
|
-
anchorBlockStore,
|
|
116
|
-
recipientTaggingStore,
|
|
117
|
-
senderAddressBookStore,
|
|
118
|
-
capsuleStore,
|
|
119
|
-
privateEventStore,
|
|
120
|
-
jobId,
|
|
121
|
-
log,
|
|
122
|
-
scopes,
|
|
123
|
-
);
|
|
88
|
+
private readonly argsHash: Fr;
|
|
89
|
+
private readonly txContext: TxContext;
|
|
90
|
+
private readonly txRequestSalt: Fr;
|
|
91
|
+
private readonly executionCache: HashedValuesCache;
|
|
92
|
+
private readonly noteCache: ExecutionNoteCache;
|
|
93
|
+
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
94
|
+
private readonly senderTaggingStore: SenderTaggingStore;
|
|
95
|
+
private totalPublicCalldataCount: number;
|
|
96
|
+
private readonly initialSideEffectCounter: number;
|
|
97
|
+
/** Sender for tags passed in at oracle construction time. Returned by `getSenderForTags`. */
|
|
98
|
+
private readonly defaultSenderForTags: AztecAddress | undefined;
|
|
99
|
+
|
|
100
|
+
constructor(args: PrivateExecutionOracleArgs) {
|
|
101
|
+
super({
|
|
102
|
+
...args,
|
|
103
|
+
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
104
|
+
});
|
|
105
|
+
this.argsHash = args.argsHash;
|
|
106
|
+
this.txContext = args.txContext;
|
|
107
|
+
this.txRequestSalt = args.txRequestSalt;
|
|
108
|
+
this.executionCache = args.executionCache;
|
|
109
|
+
this.noteCache = args.noteCache;
|
|
110
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
111
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
112
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
113
|
+
this.initialSideEffectCounter = args.sideEffectCounter ?? 0;
|
|
114
|
+
this.defaultSenderForTags = args.senderForTags;
|
|
124
115
|
}
|
|
125
116
|
|
|
126
117
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
127
|
-
return new PrivateContextInputs(
|
|
118
|
+
return new PrivateContextInputs(
|
|
119
|
+
this.callContext,
|
|
120
|
+
this.anchorBlockHeader,
|
|
121
|
+
this.txContext,
|
|
122
|
+
this.initialSideEffectCounter,
|
|
123
|
+
this.txRequestSalt,
|
|
124
|
+
);
|
|
128
125
|
}
|
|
129
126
|
|
|
130
127
|
// We still need this function until we can get user-defined ordering of structs for fn arguments
|
|
@@ -171,17 +168,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
171
168
|
}
|
|
172
169
|
|
|
173
170
|
/**
|
|
174
|
-
*
|
|
171
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
175
172
|
*/
|
|
176
|
-
public
|
|
177
|
-
return this.
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
182
|
-
*/
|
|
183
|
-
public getUsedPreTags(): PreTag[] {
|
|
184
|
-
return this.taggingIndexCache.getUsedPreTags();
|
|
173
|
+
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
174
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
185
175
|
}
|
|
186
176
|
|
|
187
177
|
/**
|
|
@@ -198,64 +188,184 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
198
188
|
* for a tag in order to emit a log. Constrained tagging should not use this as there is no
|
|
199
189
|
* guarantee that the recipient knows about the sender, and hence about the shared secret.
|
|
200
190
|
*
|
|
201
|
-
*
|
|
202
|
-
* 'senderForTags' value (unless it is replaced).
|
|
191
|
+
* Returns the wallet-supplied default sender for tags, or `None` if no default was provided.
|
|
203
192
|
*/
|
|
204
|
-
public
|
|
205
|
-
return Promise.resolve(this.
|
|
193
|
+
public getSenderForTags(): Promise<Option<AztecAddress>> {
|
|
194
|
+
return Promise.resolve(this.defaultSenderForTags ? Option.some(this.defaultSenderForTags) : Option.none());
|
|
206
195
|
}
|
|
207
196
|
|
|
208
197
|
/**
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
* This unconstrained value is used as the sender when computing an unconstrained shared secret
|
|
212
|
-
* for a tag in order to emit a log. Constrained tagging should not use this as there is no
|
|
213
|
-
* guarantee that the recipient knows about the sender, and hence about the shared secret.
|
|
214
|
-
*
|
|
215
|
-
* Account contracts typically set this value before calling other contracts. The value persists
|
|
216
|
-
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
217
|
-
* value (unless it is replaced by another call to this setter).
|
|
198
|
+
* Resolves a custom, caller-defined request via the {@link ResolveCustomRequest} hook, which produces the response
|
|
199
|
+
* however it needs to. Throws when no hook is configured, since the request cannot be served.
|
|
218
200
|
*/
|
|
219
|
-
public
|
|
220
|
-
|
|
221
|
-
|
|
201
|
+
public async resolveCustomRequest(kind: Fr, payload: Fr[]): Promise<Fr[]> {
|
|
202
|
+
const hook: ResolveCustomRequest | undefined = this.hooks?.resolveCustomRequest;
|
|
203
|
+
if (!hook) {
|
|
204
|
+
throw new Error('Cannot serve a request: no resolveCustomRequest hook is configured');
|
|
205
|
+
}
|
|
206
|
+
const contractClassId = await this.#getCurrentContractClassId(this.contractAddress);
|
|
207
|
+
return hook({ contractAddress: this.contractAddress, contractClassId, kind, payload });
|
|
222
208
|
}
|
|
223
209
|
|
|
224
210
|
/**
|
|
225
|
-
*
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
* @returns An app tag to be used in a log.
|
|
211
|
+
* Resolves the tagging strategy for a message via the wallet's {@link ResolveTaggingSecretStrategy} hook. The contract receives a ready-to-use {@link ResolvedTaggingStrategy}.
|
|
212
|
+
* When no hook is configured, applies a default: a non-interactive handshake, except for an unconstrained self-send,
|
|
213
|
+
* which uses an address-derived secret.
|
|
229
214
|
*/
|
|
230
|
-
public async
|
|
231
|
-
|
|
215
|
+
public async resolveTaggingStrategy(
|
|
216
|
+
sender: AztecAddress,
|
|
217
|
+
recipient: AztecAddress,
|
|
218
|
+
deliveryMode: AppTaggingSecretKind,
|
|
219
|
+
): Promise<ResolvedTaggingStrategy> {
|
|
220
|
+
const [isUnconstrainedSelfSend, chosenStrategy] = await Promise.all([
|
|
221
|
+
this.#isUnconstrainedSelfSend(recipient, deliveryMode),
|
|
222
|
+
this.#chooseTaggingSecretStrategy(sender, recipient, deliveryMode),
|
|
223
|
+
]);
|
|
232
224
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
225
|
+
// For unconstrained delivery, a self-send uses a local address-derived secret instead of a non-interactive
|
|
226
|
+
// handshake. A self-send is one where the wallet controls the recipient's keys, so both sides' keys are local: no
|
|
227
|
+
// handshake is needed and nothing is revealed onchain. It also avoids a recursion: a handshake self-delivers its
|
|
228
|
+
// note via unconstrained delivery, which would establish yet another handshake. This guard runs regardless of the
|
|
229
|
+
// resolved strategy (hook or default), to protect wallets from invalid configuration.
|
|
230
|
+
const strategy: TaggingSecretStrategy = isUnconstrainedSelfSend ? { type: 'address-derived' } : chosenStrategy;
|
|
238
231
|
|
|
239
|
-
return
|
|
232
|
+
return this.#resolveTaggingSecretStrategy(strategy, sender, recipient);
|
|
240
233
|
}
|
|
241
234
|
|
|
242
|
-
async #
|
|
243
|
-
contractAddress: AztecAddress,
|
|
235
|
+
async #chooseTaggingSecretStrategy(
|
|
244
236
|
sender: AztecAddress,
|
|
245
237
|
recipient: AztecAddress,
|
|
246
|
-
|
|
247
|
-
|
|
238
|
+
deliveryMode: AppTaggingSecretKind,
|
|
239
|
+
): Promise<TaggingSecretStrategy> {
|
|
240
|
+
const hook: ResolveTaggingSecretStrategy | undefined = this.hooks?.resolveTaggingSecretStrategy;
|
|
241
|
+
if (!hook) {
|
|
242
|
+
return DEFAULT_TAGGING_SECRET_STRATEGY;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
const contractClassId = await this.#getCurrentContractClassId(this.contractAddress);
|
|
246
|
+
return hook({
|
|
247
|
+
contractAddress: this.contractAddress,
|
|
248
|
+
contractClassId,
|
|
249
|
+
sender,
|
|
250
|
+
recipient,
|
|
251
|
+
deliveryMode,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Resolves the class id the given contract runs at this simulation's anchor block. The instance no longer carries
|
|
257
|
+
* its class id (it is chain-derived), so it is resolved via the anchored contract data instead.
|
|
258
|
+
*/
|
|
259
|
+
async #getCurrentContractClassId(address: AztecAddress): Promise<Fr> {
|
|
260
|
+
const classId = await this.anchoredContractData.getCurrentClassId(address);
|
|
261
|
+
if (classId === undefined) {
|
|
262
|
+
throw new Error(`Cannot resolve the current contract class for ${address}`);
|
|
263
|
+
}
|
|
264
|
+
return classId;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/** Whether this is an unconstrained delivery to one of the wallet's own accounts (a self-send). */
|
|
268
|
+
#isUnconstrainedSelfSend(recipient: AztecAddress, deliveryMode: AppTaggingSecretKind) {
|
|
269
|
+
return deliveryMode === AppTaggingSecretKind.UNCONSTRAINED
|
|
270
|
+
? this.keyStore.hasAccount(recipient)
|
|
271
|
+
: Promise.resolve(false);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/** Resolves a wallet-provided {@link TaggingSecretStrategy} into the app-siloed secret handed to the contract. */
|
|
275
|
+
async #resolveTaggingSecretStrategy(
|
|
276
|
+
strategy: TaggingSecretStrategy,
|
|
277
|
+
sender: AztecAddress,
|
|
278
|
+
recipient: AztecAddress,
|
|
279
|
+
): Promise<ResolvedTaggingStrategy> {
|
|
280
|
+
// PXE only performs the derivation; it does not reject a strategy that is unsound for the delivery mode (e.g. an
|
|
281
|
+
// address-derived or arbitrary-secret strategy for constrained delivery). That soundness check belongs in the
|
|
282
|
+
// Noir circuit, which constrains the resolved strategy against the delivery mode.
|
|
283
|
+
switch (strategy.type) {
|
|
284
|
+
case 'non-interactive-handshake':
|
|
285
|
+
return { type: 'non-interactive-handshake' };
|
|
286
|
+
case 'interactive-handshake':
|
|
287
|
+
return { type: 'interactive-handshake' };
|
|
288
|
+
case 'address-derived':
|
|
289
|
+
return this.#addressDerivedSecret(sender, recipient);
|
|
290
|
+
case 'arbitrary-secret': {
|
|
291
|
+
// App-silo the raw arbitrary secret point here so wallets never replicate the derivation.
|
|
292
|
+
const appTaggingSecret = await AppTaggingSecret.computeDirectional(
|
|
293
|
+
strategy.secret,
|
|
294
|
+
this.contractAddress,
|
|
295
|
+
recipient,
|
|
296
|
+
);
|
|
297
|
+
return { type: 'unconstrained-secret', secret: appTaggingSecret.secret };
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* The app-siloed, recipient-directional secret derived from the sender's and recipient's address keys via ECDH,
|
|
304
|
+
* ready to hand to the contract. Callers must validate the recipient in-circuit before reaching here, so an invalid one is unexpected.
|
|
305
|
+
*/
|
|
306
|
+
async #addressDerivedSecret(sender: AztecAddress, recipient: AztecAddress): Promise<ResolvedTaggingStrategy> {
|
|
307
|
+
const secret = await this.getAppTaggingSecret(sender, recipient);
|
|
308
|
+
if (!secret.isSome()) {
|
|
309
|
+
throw new Error(`Cannot derive an address-derived tagging secret for invalid recipient ${recipient}`);
|
|
310
|
+
}
|
|
311
|
+
return { type: 'unconstrained-secret', secret: secret.value };
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Returns the sender-side app tagging secret for a `(sender, recipient)` pair.
|
|
316
|
+
*
|
|
317
|
+
* The caller obtains an index via {@link getNextTaggingIndex} and computes the final tag itself.
|
|
318
|
+
* The only expected `None` case is an invalid recipient address; missing sender data fails while deriving.
|
|
319
|
+
*
|
|
320
|
+
* @param sender - The address sending the log
|
|
321
|
+
* @param recipient - The address receiving the log
|
|
322
|
+
* @returns The app tagging secret, or `None` if the recipient is invalid.
|
|
323
|
+
*/
|
|
324
|
+
public async getAppTaggingSecret(sender: AztecAddress, recipient: AztecAddress): Promise<Option<Fr>> {
|
|
325
|
+
assertAllowedScope(sender, this.scopes);
|
|
326
|
+
|
|
327
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
248
328
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
249
|
-
|
|
329
|
+
const extendedSecret = await AppTaggingSecret.computeViaEcdh(
|
|
250
330
|
senderCompleteAddress,
|
|
251
331
|
senderIvsk,
|
|
252
332
|
recipient,
|
|
253
|
-
contractAddress,
|
|
333
|
+
this.contractAddress,
|
|
254
334
|
recipient,
|
|
255
335
|
);
|
|
336
|
+
|
|
337
|
+
if (!extendedSecret) {
|
|
338
|
+
this.logger.warn(`Computing a tagging secret for invalid recipient ${recipient} - returning no secret`, {
|
|
339
|
+
contractAddress: this.contractAddress,
|
|
340
|
+
});
|
|
341
|
+
return Option.none();
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
return Option.some(extendedSecret.secret);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Returns the next sender-side tagging index for a given secret and delivery mode.
|
|
349
|
+
*
|
|
350
|
+
* @param secret - The tagging secret to allocate an index for.
|
|
351
|
+
* @param kind - The sender-side index namespace.
|
|
352
|
+
* @returns The next index to use for this secret.
|
|
353
|
+
*/
|
|
354
|
+
public async getNextTaggingIndex(secret: Fr, kind: AppTaggingSecretKind): Promise<number> {
|
|
355
|
+
const appTaggingSecret = new AppTaggingSecret(secret, this.contractAddress, kind);
|
|
356
|
+
const index = await this.#reserveNextIndexForSecret(appTaggingSecret);
|
|
357
|
+
this.logger.debug(`Incrementing ${kind} tagging index for secret in contract ${this.contractAddress} to ${index}`);
|
|
358
|
+
return index;
|
|
256
359
|
}
|
|
257
360
|
|
|
258
|
-
|
|
361
|
+
/** Resolves the next index for a given tagging secret, syncing from chain if it is missing from the in-tx cache. */
|
|
362
|
+
async #reserveNextIndexForSecret(secret: AppTaggingSecret): Promise<number> {
|
|
363
|
+
const index = await this.#getIndexToUseForSecret(secret);
|
|
364
|
+
this.taggingIndexCache.setLastUsedIndex(secret, index);
|
|
365
|
+
return index;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
async #getIndexToUseForSecret(secret: AppTaggingSecret): Promise<number> {
|
|
259
369
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
260
370
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
261
371
|
|
|
@@ -265,7 +375,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
265
375
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
266
376
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
267
377
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
268
|
-
await syncSenderTaggingIndexes(
|
|
378
|
+
await syncSenderTaggingIndexes(
|
|
379
|
+
secret,
|
|
380
|
+
this.aztecNode,
|
|
381
|
+
this.senderTaggingStore,
|
|
382
|
+
await this.anchorBlockHeader.hash(),
|
|
383
|
+
this.jobId,
|
|
384
|
+
);
|
|
269
385
|
|
|
270
386
|
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
271
387
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
@@ -279,7 +395,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
279
395
|
* @param values - Values to store.
|
|
280
396
|
* @returns The hash of the values.
|
|
281
397
|
*/
|
|
282
|
-
public
|
|
398
|
+
public setHashPreimage(values: Fr[], hash: Fr) {
|
|
283
399
|
return this.executionCache.store(values, hash);
|
|
284
400
|
}
|
|
285
401
|
|
|
@@ -288,7 +404,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
288
404
|
* @param hash - Hash of the values.
|
|
289
405
|
* @returns The values.
|
|
290
406
|
*/
|
|
291
|
-
public
|
|
407
|
+
public getHashPreimage(hash: Fr): Promise<Fr[]> {
|
|
292
408
|
const preimage = this.executionCache.getPreimage(hash);
|
|
293
409
|
if (!preimage) {
|
|
294
410
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -296,12 +412,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
296
412
|
return Promise.resolve(preimage);
|
|
297
413
|
}
|
|
298
414
|
|
|
299
|
-
override async
|
|
415
|
+
override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
|
|
300
416
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
301
417
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
302
418
|
// in the current transaction.
|
|
303
419
|
|
|
304
|
-
this.
|
|
420
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
305
421
|
contractAddress: this.contractAddress,
|
|
306
422
|
});
|
|
307
423
|
|
|
@@ -309,7 +425,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
309
425
|
|
|
310
426
|
return (
|
|
311
427
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
312
|
-
(await super.
|
|
428
|
+
(await super.doesNullifierExist(innerNullifier))
|
|
313
429
|
);
|
|
314
430
|
}
|
|
315
431
|
|
|
@@ -334,8 +450,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
334
450
|
* @param status - The status of notes to fetch.
|
|
335
451
|
* @returns Array of note data.
|
|
336
452
|
*/
|
|
337
|
-
public override async
|
|
338
|
-
owner: AztecAddress
|
|
453
|
+
public override async getNotes(
|
|
454
|
+
owner: Option<AztecAddress>,
|
|
339
455
|
storageSlot: Fr,
|
|
340
456
|
numSelects: number,
|
|
341
457
|
selectByIndexes: number[],
|
|
@@ -350,16 +466,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
350
466
|
limit: number,
|
|
351
467
|
offset: number,
|
|
352
468
|
status: NoteStatus,
|
|
353
|
-
|
|
469
|
+
maxNotes: number,
|
|
470
|
+
packedHintedNoteLength: number,
|
|
471
|
+
): Promise<BoundedVec<NoteData>> {
|
|
354
472
|
// Nullified pending notes are already removed from the list.
|
|
355
|
-
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
|
|
473
|
+
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner.value, storageSlot);
|
|
356
474
|
|
|
357
475
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
358
476
|
|
|
359
|
-
const noteService = new NoteService(this.noteStore, this.aztecNode, this.
|
|
477
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
360
478
|
const dbNotes = await noteService.getNotes(
|
|
361
479
|
this.callContext.contractAddress,
|
|
362
|
-
owner,
|
|
480
|
+
owner.value,
|
|
363
481
|
storageSlot,
|
|
364
482
|
status,
|
|
365
483
|
this.scopes,
|
|
@@ -380,13 +498,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
380
498
|
offset,
|
|
381
499
|
});
|
|
382
500
|
|
|
383
|
-
this.
|
|
501
|
+
this.logger.debug(
|
|
384
502
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
385
503
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
386
504
|
.join(', ')}`,
|
|
387
505
|
);
|
|
388
506
|
|
|
389
|
-
return notes;
|
|
507
|
+
return BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength });
|
|
390
508
|
}
|
|
391
509
|
|
|
392
510
|
/**
|
|
@@ -400,7 +518,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
400
518
|
* @param noteHash - A hash of the new note.
|
|
401
519
|
* @returns
|
|
402
520
|
*/
|
|
403
|
-
public
|
|
521
|
+
public notifyCreatedNote(
|
|
404
522
|
owner: AztecAddress,
|
|
405
523
|
storageSlot: Fr,
|
|
406
524
|
randomness: Fr,
|
|
@@ -409,7 +527,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
409
527
|
noteHash: Fr,
|
|
410
528
|
counter: number,
|
|
411
529
|
) {
|
|
412
|
-
this.
|
|
530
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
413
531
|
contractAddress: this.callContext.contractAddress,
|
|
414
532
|
storageSlot,
|
|
415
533
|
randomness,
|
|
@@ -441,7 +559,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
441
559
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
442
560
|
* @param noteHash - A hash of the new note.
|
|
443
561
|
*/
|
|
444
|
-
public async
|
|
562
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
445
563
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
446
564
|
this.callContext.contractAddress,
|
|
447
565
|
innerNullifier,
|
|
@@ -458,22 +576,40 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
458
576
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
459
577
|
* @param noteHash - A hash of the new note.
|
|
460
578
|
*/
|
|
461
|
-
public
|
|
462
|
-
this.
|
|
579
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
580
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
463
581
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
464
582
|
}
|
|
465
583
|
|
|
584
|
+
/**
|
|
585
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
|
|
586
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
587
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
588
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
589
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
590
|
+
*/
|
|
591
|
+
public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
592
|
+
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
593
|
+
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
594
|
+
return Promise.resolve(isNullifierPending);
|
|
595
|
+
}
|
|
596
|
+
|
|
466
597
|
/**
|
|
467
598
|
* Emit a contract class log.
|
|
468
599
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
469
600
|
* keep the preimage in ts for later.
|
|
470
|
-
* @param
|
|
601
|
+
* @param logData - The contract class log to be emitted.
|
|
471
602
|
* @param counter - The contract class log's counter.
|
|
472
603
|
*/
|
|
473
|
-
public
|
|
604
|
+
public notifyCreatedContractClassLog(logData: ContractClassLogData, counter: number) {
|
|
605
|
+
const log = ContractClassLog.from({
|
|
606
|
+
contractAddress: logData.contractAddress,
|
|
607
|
+
fields: new ContractClassLogFields(logData.fields),
|
|
608
|
+
emittedLength: logData.emittedLength,
|
|
609
|
+
});
|
|
474
610
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
475
611
|
const text = log.toBuffer().toString('hex');
|
|
476
|
-
this.
|
|
612
|
+
this.logger.verbose(
|
|
477
613
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
478
614
|
);
|
|
479
615
|
}
|
|
@@ -499,7 +635,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
499
635
|
* @param isStaticCall - Whether the call is a static call.
|
|
500
636
|
* @returns The execution result.
|
|
501
637
|
*/
|
|
502
|
-
async
|
|
638
|
+
async callPrivateFunction(
|
|
503
639
|
targetContractAddress: AztecAddress,
|
|
504
640
|
functionSelector: FunctionSelector,
|
|
505
641
|
argsHash: Fr,
|
|
@@ -513,55 +649,72 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
513
649
|
}
|
|
514
650
|
|
|
515
651
|
const simulatorSetupTimer = new Timer();
|
|
516
|
-
this.
|
|
652
|
+
this.logger.debug(
|
|
517
653
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
518
654
|
);
|
|
519
655
|
|
|
520
656
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
521
657
|
|
|
522
|
-
await
|
|
523
|
-
|
|
524
|
-
|
|
658
|
+
await this.contractSyncService.ensureContractSynced(
|
|
659
|
+
targetContractAddress,
|
|
660
|
+
functionSelector,
|
|
661
|
+
this.utilityExecutor,
|
|
662
|
+
this.anchorBlockHeader,
|
|
663
|
+
this.jobId,
|
|
664
|
+
this.scopes,
|
|
665
|
+
);
|
|
525
666
|
|
|
526
|
-
const targetArtifact = await this.
|
|
667
|
+
const targetArtifact = await this.anchoredContractData.getFunctionArtifactWithDebugMetadata(
|
|
527
668
|
targetContractAddress,
|
|
528
669
|
functionSelector,
|
|
529
670
|
);
|
|
671
|
+
if (!targetArtifact) {
|
|
672
|
+
throw new Error(
|
|
673
|
+
`Cannot call ${targetContractAddress}:${functionSelector}: the contract is not registered. ` +
|
|
674
|
+
`Register it via wallet.registerContract(...).`,
|
|
675
|
+
);
|
|
676
|
+
}
|
|
530
677
|
|
|
531
678
|
const derivedTxContext = this.txContext.clone();
|
|
532
679
|
|
|
533
680
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
534
681
|
|
|
535
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
682
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
536
683
|
argsHash,
|
|
537
|
-
derivedTxContext,
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
this.
|
|
541
|
-
this.
|
|
542
|
-
this.
|
|
543
|
-
this.
|
|
544
|
-
this.
|
|
545
|
-
this.
|
|
546
|
-
this.
|
|
547
|
-
this.
|
|
548
|
-
this.
|
|
549
|
-
this.
|
|
550
|
-
this.
|
|
551
|
-
this.
|
|
552
|
-
this.senderTaggingStore,
|
|
553
|
-
this.recipientTaggingStore,
|
|
554
|
-
this.
|
|
555
|
-
this.
|
|
556
|
-
this.
|
|
557
|
-
this.
|
|
558
|
-
this.
|
|
684
|
+
txContext: derivedTxContext,
|
|
685
|
+
txRequestSalt: this.txRequestSalt,
|
|
686
|
+
callContext: derivedCallContext,
|
|
687
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
688
|
+
utilityExecutor: this.utilityExecutor,
|
|
689
|
+
authWitnesses: this.authWitnesses,
|
|
690
|
+
capsules: this.capsules,
|
|
691
|
+
executionCache: this.executionCache,
|
|
692
|
+
noteCache: this.noteCache,
|
|
693
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
694
|
+
anchoredContractData: this.anchoredContractData,
|
|
695
|
+
noteStore: this.noteStore,
|
|
696
|
+
keyStore: this.keyStore,
|
|
697
|
+
addressStore: this.addressStore,
|
|
698
|
+
aztecNode: this.aztecNode,
|
|
699
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
700
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
701
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
702
|
+
capsuleService: this.capsuleService,
|
|
703
|
+
factService: this.factService,
|
|
704
|
+
privateEventStore: this.privateEventStore,
|
|
705
|
+
txResolver: this.txResolver,
|
|
706
|
+
contractSyncService: this.contractSyncService,
|
|
707
|
+
jobId: this.jobId,
|
|
708
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
559
709
|
sideEffectCounter,
|
|
560
|
-
this.
|
|
561
|
-
this.scopes,
|
|
562
|
-
this.
|
|
563
|
-
this.simulator,
|
|
564
|
-
|
|
710
|
+
log: this.logger,
|
|
711
|
+
scopes: this.scopes,
|
|
712
|
+
senderForTags: this.defaultSenderForTags,
|
|
713
|
+
simulator: this.simulator,
|
|
714
|
+
hooks: this.hooks,
|
|
715
|
+
l2TipsStore: this.l2TipsStore,
|
|
716
|
+
transientArrayService: this.transientArrayService,
|
|
717
|
+
});
|
|
565
718
|
|
|
566
719
|
const setupTime = simulatorSetupTimer.ms();
|
|
567
720
|
|
|
@@ -573,6 +726,9 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
573
726
|
functionSelector,
|
|
574
727
|
);
|
|
575
728
|
|
|
729
|
+
// Propagate the nested call's calldata count so the parent sees its increments on subsequent enqueues.
|
|
730
|
+
this.totalPublicCalldataCount = privateExecutionOracle.getTotalPublicCalldataCount();
|
|
731
|
+
|
|
576
732
|
if (isStaticCall) {
|
|
577
733
|
this.#checkValidStaticCall(childExecutionResult);
|
|
578
734
|
}
|
|
@@ -592,7 +748,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
592
748
|
};
|
|
593
749
|
}
|
|
594
750
|
|
|
595
|
-
|
|
751
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
752
|
+
public assertValidPublicCalldata(calldataHash: Fr) {
|
|
596
753
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
597
754
|
if (!calldata) {
|
|
598
755
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -602,47 +759,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
602
759
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
603
760
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
604
761
|
}
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
/**
|
|
608
|
-
* Verify relevant information when a public function is enqueued.
|
|
609
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
610
|
-
* @param calldataHash - The hash of the function selector and arguments.
|
|
611
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
612
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
613
|
-
*/
|
|
614
|
-
public privateNotifyEnqueuedPublicFunctionCall(
|
|
615
|
-
_targetContractAddress: AztecAddress,
|
|
616
|
-
calldataHash: Fr,
|
|
617
|
-
_sideEffectCounter: number,
|
|
618
|
-
_isStaticCall: boolean,
|
|
619
|
-
) {
|
|
620
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
621
762
|
return Promise.resolve();
|
|
622
763
|
}
|
|
623
764
|
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
627
|
-
* @param argsHash - The arguments hash to pass to the function.
|
|
628
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
629
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
630
|
-
*/
|
|
631
|
-
public privateNotifySetPublicTeardownFunctionCall(
|
|
632
|
-
_targetContractAddress: AztecAddress,
|
|
633
|
-
calldataHash: Fr,
|
|
634
|
-
_sideEffectCounter: number,
|
|
635
|
-
_isStaticCall: boolean,
|
|
636
|
-
) {
|
|
637
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
638
|
-
return Promise.resolve();
|
|
765
|
+
public getTotalPublicCalldataCount(): number {
|
|
766
|
+
return this.totalPublicCalldataCount;
|
|
639
767
|
}
|
|
640
768
|
|
|
641
|
-
public
|
|
769
|
+
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
642
770
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
643
771
|
}
|
|
644
772
|
|
|
645
|
-
public
|
|
773
|
+
public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
646
774
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
647
775
|
}
|
|
648
776
|
|
|
@@ -667,11 +795,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
667
795
|
}
|
|
668
796
|
|
|
669
797
|
public getDebugFunctionName() {
|
|
670
|
-
return this.
|
|
798
|
+
return this.anchoredContractData.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
671
799
|
}
|
|
672
800
|
|
|
673
|
-
|
|
674
|
-
this.
|
|
675
|
-
return Promise.resolve();
|
|
801
|
+
protected override get callerContext() {
|
|
802
|
+
return this.callContext.isStaticCall ? 'private view' : 'private';
|
|
676
803
|
}
|
|
677
804
|
}
|