@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
|
@@ -42,7 +42,7 @@ import type { FunctionCall } from '@aztec/stdlib/abi';
|
|
|
42
42
|
import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
43
43
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
44
44
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
45
|
-
import type { BlockParameter } from '@aztec/stdlib/block';
|
|
45
|
+
import type { BlockParameter, L2TipsProvider } from '@aztec/stdlib/block';
|
|
46
46
|
import { Gas } from '@aztec/stdlib/gas';
|
|
47
47
|
import {
|
|
48
48
|
computeNoteHashNonce,
|
|
@@ -76,6 +76,7 @@ import {
|
|
|
76
76
|
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
77
77
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
78
78
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
79
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
79
80
|
import {
|
|
80
81
|
BlockHeader,
|
|
81
82
|
CallContext,
|
|
@@ -89,32 +90,32 @@ import {
|
|
|
89
90
|
getFinalMinRevertibleSideEffectCounter,
|
|
90
91
|
} from '@aztec/stdlib/tx';
|
|
91
92
|
|
|
92
|
-
import type { AccessScopes } from '../access_scopes.js';
|
|
93
93
|
import type { ContractSyncService } from '../contract_sync/contract_sync_service.js';
|
|
94
|
-
import type {
|
|
94
|
+
import type { ExecutionHooks } from '../hooks/index.js';
|
|
95
|
+
import type { TxResolverService } from '../messages/tx_resolver_service.js';
|
|
95
96
|
import type { AddressStore } from '../storage/address_store/address_store.js';
|
|
97
|
+
import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
|
|
96
98
|
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
97
99
|
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
100
|
+
import { FactService } from '../storage/fact_store/index.js';
|
|
101
|
+
import type { FactStore } from '../storage/fact_store/index.js';
|
|
98
102
|
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
99
103
|
import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
100
104
|
import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
|
|
101
|
-
import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
|
|
102
105
|
import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
|
|
106
|
+
import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
|
|
103
107
|
import type { BenchmarkedNode } from './benchmarked_node.js';
|
|
104
108
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
105
109
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
106
110
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
107
|
-
import {
|
|
111
|
+
import { buildACIRCallback } from './oracle/acir_callback.js';
|
|
108
112
|
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
109
113
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
110
114
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
115
|
+
import { TransientArrayService } from './transient_array_service.js';
|
|
111
116
|
|
|
112
117
|
/** Options for ContractFunctionSimulator.run. */
|
|
113
118
|
export type ContractSimulatorRunOpts = {
|
|
114
|
-
/** The address of the contract (should match request.origin). */
|
|
115
|
-
contractAddress: AztecAddress;
|
|
116
|
-
/** The function selector of the entry point. */
|
|
117
|
-
selector: FunctionSelector;
|
|
118
119
|
/** The address calling the function. Can be replaced to simulate a call from another contract or account. */
|
|
119
120
|
msgSender?: AztecAddress;
|
|
120
121
|
/** The block header to use as base state for this run. */
|
|
@@ -122,7 +123,7 @@ export type ContractSimulatorRunOpts = {
|
|
|
122
123
|
/** The address used as a tagging sender when emitting private logs. */
|
|
123
124
|
senderForTags?: AztecAddress;
|
|
124
125
|
/** The accounts whose notes we can access in this call. */
|
|
125
|
-
scopes:
|
|
126
|
+
scopes: AztecAddress[];
|
|
126
127
|
/** The job ID for staged writes. */
|
|
127
128
|
jobId: string;
|
|
128
129
|
};
|
|
@@ -134,14 +135,17 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
134
135
|
keyStore: KeyStore;
|
|
135
136
|
addressStore: AddressStore;
|
|
136
137
|
aztecNode: AztecNode;
|
|
138
|
+
l2TipsStore: L2TipsProvider;
|
|
137
139
|
senderTaggingStore: SenderTaggingStore;
|
|
138
140
|
recipientTaggingStore: RecipientTaggingStore;
|
|
139
|
-
|
|
141
|
+
taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
140
142
|
capsuleStore: CapsuleStore;
|
|
143
|
+
factStore: FactStore;
|
|
141
144
|
privateEventStore: PrivateEventStore;
|
|
142
145
|
simulator: CircuitSimulator;
|
|
143
146
|
contractSyncService: ContractSyncService;
|
|
144
|
-
|
|
147
|
+
txResolver: TxResolverService;
|
|
148
|
+
hooks?: ExecutionHooks;
|
|
145
149
|
};
|
|
146
150
|
|
|
147
151
|
/**
|
|
@@ -154,14 +158,17 @@ export class ContractFunctionSimulator {
|
|
|
154
158
|
private readonly keyStore: KeyStore;
|
|
155
159
|
private readonly addressStore: AddressStore;
|
|
156
160
|
private readonly aztecNode: AztecNode;
|
|
161
|
+
private readonly l2TipsStore: L2TipsProvider;
|
|
157
162
|
private readonly senderTaggingStore: SenderTaggingStore;
|
|
158
163
|
private readonly recipientTaggingStore: RecipientTaggingStore;
|
|
159
|
-
private readonly
|
|
164
|
+
private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
160
165
|
private readonly capsuleStore: CapsuleStore;
|
|
166
|
+
private readonly factStore: FactStore;
|
|
161
167
|
private readonly privateEventStore: PrivateEventStore;
|
|
162
168
|
private readonly simulator: CircuitSimulator;
|
|
163
169
|
private readonly contractSyncService: ContractSyncService;
|
|
164
|
-
private readonly
|
|
170
|
+
private readonly txResolver: TxResolverService;
|
|
171
|
+
private readonly hooks: ExecutionHooks | undefined;
|
|
165
172
|
|
|
166
173
|
constructor(args: ContractFunctionSimulatorArgs) {
|
|
167
174
|
this.contractStore = args.contractStore;
|
|
@@ -169,14 +176,17 @@ export class ContractFunctionSimulator {
|
|
|
169
176
|
this.keyStore = args.keyStore;
|
|
170
177
|
this.addressStore = args.addressStore;
|
|
171
178
|
this.aztecNode = args.aztecNode;
|
|
179
|
+
this.l2TipsStore = args.l2TipsStore;
|
|
172
180
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
173
181
|
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
174
|
-
this.
|
|
182
|
+
this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
|
|
175
183
|
this.capsuleStore = args.capsuleStore;
|
|
184
|
+
this.factStore = args.factStore;
|
|
176
185
|
this.privateEventStore = args.privateEventStore;
|
|
177
186
|
this.simulator = args.simulator;
|
|
178
187
|
this.contractSyncService = args.contractSyncService;
|
|
179
|
-
this.
|
|
188
|
+
this.txResolver = args.txResolver;
|
|
189
|
+
this.hooks = args.hooks;
|
|
180
190
|
this.log = createLogger('simulator');
|
|
181
191
|
}
|
|
182
192
|
|
|
@@ -187,9 +197,7 @@ export class ContractFunctionSimulator {
|
|
|
187
197
|
public async run(
|
|
188
198
|
request: TxExecutionRequest,
|
|
189
199
|
{
|
|
190
|
-
|
|
191
|
-
selector,
|
|
192
|
-
msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
|
|
200
|
+
msgSender = AztecAddress.NULL_MSG_SENDER,
|
|
193
201
|
anchorBlockHeader,
|
|
194
202
|
senderForTags,
|
|
195
203
|
scopes,
|
|
@@ -198,18 +206,17 @@ export class ContractFunctionSimulator {
|
|
|
198
206
|
): Promise<PrivateExecutionResult> {
|
|
199
207
|
const simulatorSetupTimer = new Timer();
|
|
200
208
|
|
|
201
|
-
const
|
|
209
|
+
const contractAddress = request.origin;
|
|
210
|
+
|
|
211
|
+
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
212
|
+
contractAddress,
|
|
213
|
+
request.functionSelector,
|
|
214
|
+
);
|
|
202
215
|
|
|
203
216
|
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
204
217
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
205
218
|
}
|
|
206
219
|
|
|
207
|
-
if (request.origin !== contractAddress) {
|
|
208
|
-
this.log.warn(
|
|
209
|
-
`Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`,
|
|
210
|
-
);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
220
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
214
221
|
const startSideEffectCounter = 2;
|
|
215
222
|
|
|
@@ -224,6 +231,11 @@ export class ContractFunctionSimulator {
|
|
|
224
231
|
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
225
232
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
226
233
|
|
|
234
|
+
// One shared transient store for the whole execution tree rooted at this transaction. Threaded into every child
|
|
235
|
+
// private oracle and inherited by nested utility frames, so that frames of the same contract see each other's
|
|
236
|
+
// transient arrays, then discarded when run() returns.
|
|
237
|
+
const transientArrayService = new TransientArrayService();
|
|
238
|
+
|
|
227
239
|
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
228
240
|
argsHash: request.firstCallArgsHash,
|
|
229
241
|
txContext: request.txContext,
|
|
@@ -244,10 +256,11 @@ export class ContractFunctionSimulator {
|
|
|
244
256
|
aztecNode: this.aztecNode,
|
|
245
257
|
senderTaggingStore: this.senderTaggingStore,
|
|
246
258
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
247
|
-
|
|
248
|
-
|
|
259
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
260
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
261
|
+
factService: new FactService(this.factStore, scopes),
|
|
249
262
|
privateEventStore: this.privateEventStore,
|
|
250
|
-
|
|
263
|
+
txResolver: this.txResolver,
|
|
251
264
|
contractSyncService: this.contractSyncService,
|
|
252
265
|
jobId,
|
|
253
266
|
totalPublicCalldataCount: 0,
|
|
@@ -255,6 +268,9 @@ export class ContractFunctionSimulator {
|
|
|
255
268
|
scopes,
|
|
256
269
|
senderForTags,
|
|
257
270
|
simulator: this.simulator,
|
|
271
|
+
l2TipsStore: this.l2TipsStore,
|
|
272
|
+
hooks: this.hooks,
|
|
273
|
+
transientArrayService,
|
|
258
274
|
});
|
|
259
275
|
|
|
260
276
|
const setupTime = simulatorSetupTimer.ms();
|
|
@@ -284,7 +300,7 @@ export class ContractFunctionSimulator {
|
|
|
284
300
|
);
|
|
285
301
|
const publicFunctionsCalldata = await Promise.all(
|
|
286
302
|
publicCallRequests.map(async r => {
|
|
287
|
-
const calldata = await privateExecutionOracle.
|
|
303
|
+
const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
|
|
288
304
|
return new HashedValues(calldata, r.calldataHash);
|
|
289
305
|
}),
|
|
290
306
|
);
|
|
@@ -305,21 +321,16 @@ export class ContractFunctionSimulator {
|
|
|
305
321
|
}
|
|
306
322
|
}
|
|
307
323
|
|
|
308
|
-
// docs:start:execute_utility_function
|
|
309
324
|
/**
|
|
310
325
|
* Runs a utility function.
|
|
311
326
|
* @param call - The function call to execute.
|
|
312
|
-
* @param authwits - Authentication witnesses required for the function call.
|
|
313
|
-
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
314
|
-
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
315
|
-
* accounts if not specified.
|
|
316
327
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
317
328
|
*/
|
|
318
329
|
public async runUtility(
|
|
319
330
|
call: FunctionCall,
|
|
320
331
|
authwits: AuthWitness[],
|
|
321
332
|
anchorBlockHeader: BlockHeader,
|
|
322
|
-
scopes:
|
|
333
|
+
scopes: AztecAddress[],
|
|
323
334
|
jobId: string,
|
|
324
335
|
): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
|
|
325
336
|
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
@@ -328,8 +339,17 @@ export class ContractFunctionSimulator {
|
|
|
328
339
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
329
340
|
}
|
|
330
341
|
|
|
342
|
+
const utilityExecutor = async (syncCall: FunctionCall, execScopes: AztecAddress[]) => {
|
|
343
|
+
await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
|
|
344
|
+
};
|
|
345
|
+
|
|
331
346
|
const oracle = new UtilityExecutionOracle({
|
|
332
|
-
|
|
347
|
+
callContext: CallContext.from({
|
|
348
|
+
msgSender: AztecAddress.NULL_MSG_SENDER,
|
|
349
|
+
contractAddress: call.to,
|
|
350
|
+
functionSelector: call.selector,
|
|
351
|
+
isStaticCall: true,
|
|
352
|
+
}),
|
|
333
353
|
authWitnesses: authwits,
|
|
334
354
|
capsules: [],
|
|
335
355
|
anchorBlockHeader,
|
|
@@ -339,13 +359,20 @@ export class ContractFunctionSimulator {
|
|
|
339
359
|
addressStore: this.addressStore,
|
|
340
360
|
aztecNode: this.aztecNode,
|
|
341
361
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
342
|
-
|
|
343
|
-
|
|
362
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
363
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
364
|
+
factService: new FactService(this.factStore, scopes),
|
|
344
365
|
privateEventStore: this.privateEventStore,
|
|
345
|
-
|
|
366
|
+
txResolver: this.txResolver,
|
|
346
367
|
contractSyncService: this.contractSyncService,
|
|
368
|
+
l2TipsStore: this.l2TipsStore,
|
|
347
369
|
jobId,
|
|
348
370
|
scopes,
|
|
371
|
+
simulator: this.simulator,
|
|
372
|
+
hooks: this.hooks,
|
|
373
|
+
utilityExecutor,
|
|
374
|
+
// Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
|
|
375
|
+
transientArrayService: new TransientArrayService(),
|
|
349
376
|
});
|
|
350
377
|
|
|
351
378
|
try {
|
|
@@ -356,7 +383,7 @@ export class ContractFunctionSimulator {
|
|
|
356
383
|
|
|
357
384
|
const initialWitness = toACVMWitness(0, call.args);
|
|
358
385
|
const acirExecutionResult = await this.simulator
|
|
359
|
-
.executeUserCircuit(initialWitness, entryPointArtifact,
|
|
386
|
+
.executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle))
|
|
360
387
|
.catch((err: Error) => {
|
|
361
388
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
362
389
|
throw new ExecutionError(
|
|
@@ -379,7 +406,6 @@ export class ContractFunctionSimulator {
|
|
|
379
406
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
380
407
|
}
|
|
381
408
|
}
|
|
382
|
-
// docs:end:execute_utility_function
|
|
383
409
|
|
|
384
410
|
/**
|
|
385
411
|
* Returns the execution statistics collected during the simulator run.
|
|
@@ -748,7 +774,7 @@ function squashTransientSideEffects(
|
|
|
748
774
|
* at the tx's anchor block, mimicking the behavior of the kernels
|
|
749
775
|
*/
|
|
750
776
|
async function verifyReadRequests(
|
|
751
|
-
node: Pick<AztecNode, '
|
|
777
|
+
node: Pick<AztecNode, 'findLeavesIndexes'>,
|
|
752
778
|
anchorBlockHash: BlockParameter,
|
|
753
779
|
noteHashReadRequests: ScopedReadRequest[],
|
|
754
780
|
nullifierReadRequests: ScopedReadRequest[],
|
|
@@ -781,13 +807,25 @@ async function verifyReadRequests(
|
|
|
781
807
|
}
|
|
782
808
|
}
|
|
783
809
|
|
|
784
|
-
const [
|
|
785
|
-
|
|
786
|
-
|
|
810
|
+
const [noteHashResults, nullifierResults] = await Promise.all([
|
|
811
|
+
settledNoteHashReads.length > 0
|
|
812
|
+
? node.findLeavesIndexes(
|
|
813
|
+
anchorBlockHash,
|
|
814
|
+
MerkleTreeId.NOTE_HASH_TREE,
|
|
815
|
+
settledNoteHashReads.map(({ value }) => value),
|
|
816
|
+
)
|
|
817
|
+
: [],
|
|
818
|
+
settledNullifierReads.length > 0
|
|
819
|
+
? node.findLeavesIndexes(
|
|
820
|
+
anchorBlockHash,
|
|
821
|
+
MerkleTreeId.NULLIFIER_TREE,
|
|
822
|
+
settledNullifierReads.map(({ value }) => value),
|
|
823
|
+
)
|
|
824
|
+
: [],
|
|
787
825
|
]);
|
|
788
826
|
|
|
789
827
|
for (let i = 0; i < settledNoteHashReads.length; i++) {
|
|
790
|
-
if (!
|
|
828
|
+
if (!noteHashResults[i]) {
|
|
791
829
|
throw new Error(
|
|
792
830
|
`Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`,
|
|
793
831
|
);
|
|
@@ -795,7 +833,7 @@ async function verifyReadRequests(
|
|
|
795
833
|
}
|
|
796
834
|
|
|
797
835
|
for (let i = 0; i < settledNullifierReads.length; i++) {
|
|
798
|
-
if (!
|
|
836
|
+
if (!nullifierResults[i]) {
|
|
799
837
|
throw new Error(
|
|
800
838
|
`Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`,
|
|
801
839
|
);
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
|
|
3
|
+
/** In-memory store for ephemeral arrays scoped to a single contract call frame. */
|
|
4
|
+
export class EphemeralArrayService {
|
|
5
|
+
/**
|
|
6
|
+
* Maps a slot to the elements of the array stored at that slot. Each element is a serialized representation of
|
|
7
|
+
* the original type.
|
|
8
|
+
*/
|
|
9
|
+
#arrays: Map<string, Fr[][]> = new Map();
|
|
10
|
+
|
|
11
|
+
/** Returns all elements in the array, or an empty array if uninitialized. */
|
|
12
|
+
readArrayAt(slot: Fr): Fr[][] {
|
|
13
|
+
return this.#arrays.get(slot.toString()) ?? [];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
#setArray(slot: Fr, array: Fr[][]): void {
|
|
17
|
+
this.#arrays.set(slot.toString(), array);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Returns the number of elements in the array at the given slot. */
|
|
21
|
+
len(slot: Fr): number {
|
|
22
|
+
return this.readArrayAt(slot).length;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Appends an element to the array and returns the new length. */
|
|
26
|
+
push(slot: Fr, elements: Fr[]): number {
|
|
27
|
+
const array = this.readArrayAt(slot);
|
|
28
|
+
array.push(elements);
|
|
29
|
+
this.#setArray(slot, array);
|
|
30
|
+
return array.length;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Removes and returns the last element. Throws if empty. */
|
|
34
|
+
pop(slot: Fr): Fr[] {
|
|
35
|
+
const array = this.readArrayAt(slot);
|
|
36
|
+
if (array.length === 0) {
|
|
37
|
+
throw new Error(`Ephemeral array at slot ${slot} is empty`);
|
|
38
|
+
}
|
|
39
|
+
const element = array.pop()!;
|
|
40
|
+
this.#setArray(slot, array);
|
|
41
|
+
return element;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Returns the element at the given index. Throws if out of bounds. */
|
|
45
|
+
get(slot: Fr, index: number): Fr[] {
|
|
46
|
+
const array = this.readArrayAt(slot);
|
|
47
|
+
if (index < 0 || index >= array.length) {
|
|
48
|
+
throw new Error(
|
|
49
|
+
`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`,
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
return array[index];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Overwrites the element at the given index. Throws if out of bounds. */
|
|
56
|
+
set(slot: Fr, index: number, value: Fr[]): void {
|
|
57
|
+
const array = this.readArrayAt(slot);
|
|
58
|
+
if (index < 0 || index >= array.length) {
|
|
59
|
+
throw new Error(
|
|
60
|
+
`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`,
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
array[index] = value;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Removes the element at the given index, shifting subsequent elements backward. Throws if out of bounds. */
|
|
67
|
+
remove(slot: Fr, index: number): void {
|
|
68
|
+
const array = this.readArrayAt(slot);
|
|
69
|
+
if (index < 0 || index >= array.length) {
|
|
70
|
+
throw new Error(
|
|
71
|
+
`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`,
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
array.splice(index, 1);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Removes all elements from the array. */
|
|
78
|
+
clear(slot: Fr): void {
|
|
79
|
+
this.#arrays.delete(slot.toString());
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** Allocates a fresh, unused slot for a new ephemeral array. */
|
|
83
|
+
allocateSlot(): Fr {
|
|
84
|
+
let slot: Fr;
|
|
85
|
+
do {
|
|
86
|
+
slot = Fr.random();
|
|
87
|
+
} while (this.#arrays.has(slot.toString()));
|
|
88
|
+
return slot;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** Creates a new ephemeral array pre-populated with the given elements and returns its slot. */
|
|
92
|
+
newArray(elements: Fr[][]): Fr {
|
|
93
|
+
const slot = this.allocateSlot();
|
|
94
|
+
this.#setArray(slot, elements);
|
|
95
|
+
return slot;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/** Copies `count` elements from the source array to the destination array (overwrites destination). */
|
|
99
|
+
copy(srcSlot: Fr, dstSlot: Fr, count: number): void {
|
|
100
|
+
const srcArray = this.readArrayAt(srcSlot);
|
|
101
|
+
if (count > srcArray.length) {
|
|
102
|
+
throw new Error(
|
|
103
|
+
`Cannot copy ${count} elements from ephemeral array of length ${srcArray.length} at slot ${srcSlot}`,
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
// Deep copy the elements to avoid aliasing
|
|
107
|
+
const copied = srcArray.slice(0, count).map(el => [...el]);
|
|
108
|
+
this.#setArray(dstSlot, copied);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -2,7 +2,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
3
|
import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
4
4
|
|
|
5
|
-
import type { NoteData } from './
|
|
5
|
+
import type { NoteData } from './noir-structs/note_data.js';
|
|
6
6
|
|
|
7
7
|
interface PendingNote {
|
|
8
8
|
note: NoteData;
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* A map that stores the tagging index range for a given extended directional app tagging secret.
|
|
5
|
-
* Note: The directional app tagging secret is unique for a (sender, recipient, contract) tuple while the direction
|
|
6
|
-
* of sender -> recipient matters.
|
|
7
|
-
*/
|
|
3
|
+
/** A map that stores the tagging index range for a given app tagging secret. */
|
|
8
4
|
export class ExecutionTaggingIndexCache {
|
|
9
5
|
private taggingIndexMap: Map<string, { lowestIndex: number; highestIndex: number }> = new Map();
|
|
10
6
|
|
|
11
|
-
public getLastUsedIndex(secret:
|
|
7
|
+
public getLastUsedIndex(secret: AppTaggingSecret): number | undefined {
|
|
12
8
|
return this.taggingIndexMap.get(secret.toString())?.highestIndex;
|
|
13
9
|
}
|
|
14
10
|
|
|
15
|
-
public setLastUsedIndex(secret:
|
|
11
|
+
public setLastUsedIndex(secret: AppTaggingSecret, index: number) {
|
|
16
12
|
const currentValue = this.taggingIndexMap.get(secret.toString());
|
|
17
13
|
if (currentValue !== undefined && currentValue.highestIndex !== index - 1) {
|
|
18
14
|
throw new Error(`Invalid tagging index update. Current value: ${currentValue.highestIndex}, new value: ${index}`);
|
|
@@ -29,7 +25,7 @@ export class ExecutionTaggingIndexCache {
|
|
|
29
25
|
*/
|
|
30
26
|
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
31
27
|
return Array.from(this.taggingIndexMap.entries()).map(([secret, { lowestIndex, highestIndex }]) => ({
|
|
32
|
-
extendedSecret:
|
|
28
|
+
extendedSecret: AppTaggingSecret.fromString(secret),
|
|
33
29
|
lowestIndex,
|
|
34
30
|
highestIndex,
|
|
35
31
|
}));
|
|
@@ -1,14 +1,72 @@
|
|
|
1
|
+
export {
|
|
2
|
+
ORACLE_REGISTRY,
|
|
3
|
+
makeEntry,
|
|
4
|
+
type NamedValue,
|
|
5
|
+
type OracleRegistryEntry,
|
|
6
|
+
type ParamTypes,
|
|
7
|
+
} from './oracle/oracle_registry.js';
|
|
8
|
+
export {
|
|
9
|
+
ARRAY,
|
|
10
|
+
AZTEC_ADDRESS,
|
|
11
|
+
BIGINT,
|
|
12
|
+
BLOCK_HASH,
|
|
13
|
+
BLOCK_NUMBER,
|
|
14
|
+
BOOL,
|
|
15
|
+
BOUNDED_VEC,
|
|
16
|
+
BUFFER,
|
|
17
|
+
BYTE,
|
|
18
|
+
CONTRACT_INSTANCE,
|
|
19
|
+
DELIVERY_MODE,
|
|
20
|
+
EPHEMERAL_ARRAY,
|
|
21
|
+
ETH_ADDRESS,
|
|
22
|
+
EVENT_VALIDATION_REQUEST,
|
|
23
|
+
FIELD,
|
|
24
|
+
FUNCTION_SELECTOR,
|
|
25
|
+
LOG_RETRIEVAL_REQUEST,
|
|
26
|
+
LOG_RETRIEVAL_RESPONSE,
|
|
27
|
+
MEMBERSHIP_WITNESS,
|
|
28
|
+
MESSAGE_CONTEXT,
|
|
29
|
+
NOTE_SELECTOR,
|
|
30
|
+
NOTE_VALIDATION_REQUEST,
|
|
31
|
+
OPTION,
|
|
32
|
+
PENDING_TAGGED_LOG,
|
|
33
|
+
POINT,
|
|
34
|
+
PROVIDED_SECRET,
|
|
35
|
+
STR,
|
|
36
|
+
U32,
|
|
37
|
+
type InputSlot,
|
|
38
|
+
type MaybePromise,
|
|
39
|
+
type OutputSlot,
|
|
40
|
+
type SlotShape,
|
|
41
|
+
type TypeMapping,
|
|
42
|
+
} from './oracle/oracle_type_mappings.js';
|
|
1
43
|
export { ExecutionNoteCache } from './execution_note_cache.js';
|
|
2
44
|
export { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
3
45
|
export { HashedValuesCache } from './hashed_values_cache.js';
|
|
4
46
|
export { pickNotes } from './pick_notes.js';
|
|
5
|
-
export type {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
47
|
+
export type { IMiscOracle, IUtilityExecutionOracle, IPrivateExecutionOracle } from './oracle/interfaces.js';
|
|
48
|
+
export type { FactCollection } from './noir-structs/fact_collection.js';
|
|
49
|
+
export type { NoteData } from './noir-structs/note_data.js';
|
|
50
|
+
export type { ResolvedTaggingStrategy } from './noir-structs/resolved_tagging_strategy.js';
|
|
51
|
+
export type { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
|
|
52
|
+
export { TxResolverService } from '../messages/tx_resolver_service.js';
|
|
8
53
|
export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
9
54
|
export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
10
|
-
export {
|
|
55
|
+
export { buildACIRCallback, UnavailableOracleError } from './oracle/acir_callback.js';
|
|
11
56
|
export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
|
|
12
57
|
export { generateSimulatedProvingResult } from './contract_function_simulator.js';
|
|
13
58
|
export { packAsHintedNote } from './oracle/note_packing_utils.js';
|
|
14
|
-
export {
|
|
59
|
+
export { BoundedVec } from './noir-structs/bounded_vec.js';
|
|
60
|
+
export type { ContractClassLogData } from './noir-structs/contract_class_log_data.js';
|
|
61
|
+
export type { EmbeddedCurvePoint } from './noir-structs/embedded_curve_point.js';
|
|
62
|
+
export { EphemeralArray } from './noir-structs/ephemeral_array.js';
|
|
63
|
+
export { Option } from './noir-structs/option.js';
|
|
64
|
+
export type { UtilityContext } from './noir-structs/utility_context.js';
|
|
65
|
+
export { EventValidationRequest } from './noir-structs/event_validation_request.js';
|
|
66
|
+
export type { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
|
|
67
|
+
export type { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
|
|
68
|
+
export { NoteValidationRequest } from './noir-structs/note_validation_request.js';
|
|
69
|
+
export type { TxEffectData } from './noir-structs/tx_effect_data.js';
|
|
70
|
+
export type { ProvidedSecret } from './noir-structs/provided_secret.js';
|
|
71
|
+
export { ResolvedTx } from './noir-structs/resolved_tx.js';
|
|
72
|
+
export { TransientArrayService } from './transient_array_service.js';
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`. */
|
|
2
|
+
export class BoundedVec<T> {
|
|
3
|
+
private constructor(
|
|
4
|
+
public readonly data: T[],
|
|
5
|
+
public readonly maxLength: number,
|
|
6
|
+
public readonly elementSize: number,
|
|
7
|
+
) {}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Construct a BoundedVec with data.
|
|
11
|
+
*
|
|
12
|
+
* @param data - Actual elements. Length must be `<= maxLength`.
|
|
13
|
+
* @param maxLength - Maximum capacity declared at the Noir call site. The storage slot is padded to this many
|
|
14
|
+
* elements.
|
|
15
|
+
* @param elementSize - Number of Fr fields each element contributes when serialized. Only consulted for
|
|
16
|
+
* variable-width elements whose width isn't statically known from their shape (e.g. a packed note spanning
|
|
17
|
+
* `packedHintedNoteLength` fields); fixed-width elements derive it from the shape, so it can be omitted.
|
|
18
|
+
*
|
|
19
|
+
* @example A bounded vec of packed notes, each spanning `packedHintedNoteLength` fields:
|
|
20
|
+
* ```ts
|
|
21
|
+
* BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength })
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
static from<T>({
|
|
25
|
+
data,
|
|
26
|
+
maxLength,
|
|
27
|
+
elementSize = 1,
|
|
28
|
+
}: {
|
|
29
|
+
data: T[];
|
|
30
|
+
maxLength: number;
|
|
31
|
+
elementSize?: number;
|
|
32
|
+
}): BoundedVec<T> {
|
|
33
|
+
return new BoundedVec<T>(data, maxLength, elementSize);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
equals(other: BoundedVec<T>, innerEquals: (a: T, b: T) => boolean): boolean {
|
|
37
|
+
return (
|
|
38
|
+
this.maxLength === other.maxLength &&
|
|
39
|
+
this.data.length === other.data.length &&
|
|
40
|
+
this.data.every((value, i) => innerEquals(value, other.data[i]))
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
|
|
4
|
+
/** Wire form of a contract class log. */
|
|
5
|
+
export type ContractClassLogData = {
|
|
6
|
+
contractAddress: AztecAddress;
|
|
7
|
+
fields: Fr[];
|
|
8
|
+
emittedLength: number;
|
|
9
|
+
};
|