@aztec/pxe 0.0.1-commit.b9865e97 → 0.0.1-commit.be03c316
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 +8 -23
- package/dest/bin/index.d.ts +2 -2
- package/dest/bin/index.d.ts.map +1 -1
- package/dest/bin/index.js +1 -1
- package/dest/bin/oracle_version_helpers.d.ts +16 -8
- package/dest/bin/oracle_version_helpers.d.ts.map +1 -1
- package/dest/bin/oracle_version_helpers.js +22 -69
- package/dest/block_synchronizer/block_stream_source.d.ts +5 -5
- package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -1
- package/dest/block_synchronizer/block_stream_source.js +4 -29
- package/dest/block_synchronizer/block_synchronizer.d.ts +18 -14
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +54 -18
- package/dest/config/index.d.ts +2 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +1 -0
- package/dest/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_sync → contract}/contract_sync_service.js +26 -45
- package/dest/contract/helpers.d.ts +7 -0
- package/dest/contract/helpers.d.ts.map +1 -0
- package/dest/contract/helpers.js +20 -0
- package/dest/contract/skip_sync_contracts.d.ts +11 -0
- package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
- package/dest/contract/skip_sync_contracts.js +18 -0
- package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
- package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
- package/dest/contract_function_simulator/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 +19 -18
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +63 -32
- package/dest/contract_function_simulator/execution_note_cache.d.ts +3 -9
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +8 -28
- package/dest/contract_function_simulator/index.d.ts +19 -10
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +6 -9
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +8 -27
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/bounded_vec.js +8 -23
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +11 -12
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +6 -49
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +10 -8
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -60
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +2 -2
- package/dest/contract_function_simulator/noir-structs/option.d.ts +9 -11
- package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/option.js +18 -13
- package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +6 -9
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -24
- 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 +2 -3
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +43 -31
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle_registry.js +259 -29
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +180 -45
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1024 -341
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +2 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +21 -8
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +132 -22
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +77 -34
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +247 -106
- package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
- package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
- package/dest/contract_function_simulator/transient_array_service.js +62 -0
- package/dest/debug/pxe_debug_utils.d.ts +2 -2
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.d.ts +2 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +1 -0
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +17 -6
- package/dest/entrypoints/client/lazy/index.d.ts +2 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +1 -0
- package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +17 -6
- package/dest/entrypoints/client/store.d.ts +14 -0
- package/dest/entrypoints/client/store.d.ts.map +1 -0
- package/dest/entrypoints/client/store.js +42 -0
- package/dest/entrypoints/pxe_creation_options.d.ts +9 -3
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +6 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +4 -2
- package/dest/entrypoints/server/store.d.ts +18 -0
- package/dest/entrypoints/server/store.d.ts.map +1 -0
- package/dest/entrypoints/server/store.js +28 -0
- package/dest/entrypoints/server/utils.d.ts +1 -1
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +16 -4
- package/dest/error_enriching.d.ts +5 -3
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +13 -11
- package/dest/hooks/execution_hooks.d.ts +31 -11
- package/dest/hooks/execution_hooks.d.ts.map +1 -1
- package/dest/hooks/execution_hooks.js +3 -3
- package/dest/hooks/index.d.ts +4 -3
- package/dest/hooks/index.d.ts.map +1 -1
- package/dest/hooks/index.js +1 -0
- package/dest/hooks/resolve_custom_request.d.ts +23 -0
- package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
- package/dest/hooks/resolve_custom_request.js +3 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
- package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
- package/dest/logs/log_service.d.ts +8 -6
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +88 -28
- package/dest/messages/tx_resolver_service.d.ts +17 -0
- package/dest/messages/tx_resolver_service.d.ts.map +1 -0
- package/dest/messages/{message_context_service.js → tx_resolver_service.js} +13 -8
- package/dest/notes/note_service.d.ts +1 -1
- package/dest/notes/note_service.js +1 -1
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.js +5 -5
- package/dest/private_kernel/batch_planner.d.ts +1 -1
- package/dest/private_kernel/batch_planner.d.ts.map +1 -1
- package/dest/private_kernel/batch_planner.js +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +6 -2
- package/dest/private_kernel/hints/test_utils.js +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +61 -40
- package/dest/private_kernel/private_kernel_oracle.d.ts +4 -2
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +17 -5
- package/dest/pxe.d.ts +114 -48
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +225 -139
- package/dest/storage/allowed_scopes.d.ts +6 -0
- package/dest/storage/allowed_scopes.d.ts.map +1 -0
- package/dest/storage/allowed_scopes.js +7 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
- package/dest/storage/anchor_block_store/anchor_block_store.js +8 -6
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +1 -1
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -1
- package/dest/storage/backwards_compatibility_tests/schema_tests.js +129 -49
- package/dest/storage/capsule_store/capsule_service.d.ts +1 -1
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_service.js +6 -9
- package/dest/storage/contract_store/contract_store.d.ts +27 -24
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +64 -75
- package/dest/storage/fact_store/fact_service.d.ts +22 -0
- package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_service.js +45 -0
- package/dest/storage/fact_store/fact_store.d.ts +95 -0
- package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_store.js +408 -0
- package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
- package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_store_keys.js +50 -0
- package/dest/storage/fact_store/index.d.ts +6 -0
- package/dest/storage/fact_store/index.d.ts.map +1 -0
- package/dest/storage/fact_store/index.js +4 -0
- package/dest/storage/fact_store/origin_state.d.ts +59 -0
- package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
- package/dest/storage/fact_store/origin_state.js +60 -0
- package/dest/storage/fact_store/stored_fact.d.ts +32 -0
- package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
- package/dest/storage/fact_store/stored_fact.js +64 -0
- package/dest/storage/index.d.ts +3 -2
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +2 -1
- package/dest/storage/metadata.d.ts +2 -2
- package/dest/storage/metadata.d.ts.map +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +42 -33
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +197 -168
- package/dest/storage/note_store/stored_note.d.ts +3 -8
- package/dest/storage/note_store/stored_note.d.ts.map +1 -1
- package/dest/storage/note_store/stored_note.js +4 -20
- package/dest/storage/open_pxe_stores.d.ts +5 -3
- package/dest/storage/open_pxe_stores.d.ts.map +1 -1
- package/dest/storage/open_pxe_stores.js +5 -3
- package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +40 -43
- package/dest/storage/store_identity.d.ts +35 -0
- package/dest/storage/store_identity.d.ts.map +1 -0
- package/dest/storage/store_identity.js +44 -0
- package/dest/storage/tagging_store/index.d.ts +2 -2
- package/dest/storage/tagging_store/index.d.ts.map +1 -1
- package/dest/storage/tagging_store/index.js +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +19 -3
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +48 -11
- 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/index.d.ts +2 -2
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +1 -1
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +26 -8
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +95 -20
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +1 -1
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +1 -1
- 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 +6 -2
- package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
- package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
- package/dest/tagging/testing/tag_query_test_utils.js +10 -0
- package/package.json +17 -17
- package/src/bin/check_oracle_version.ts +8 -24
- package/src/bin/index.ts +1 -1
- package/src/bin/oracle_version_helpers.ts +23 -90
- package/src/block_synchronizer/block_stream_source.ts +6 -45
- package/src/block_synchronizer/block_synchronizer.ts +70 -29
- package/src/config/index.ts +1 -0
- package/src/contract/contract_class_service.ts +83 -0
- package/src/{contract_sync → contract}/contract_sync_service.ts +37 -50
- package/src/contract/helpers.ts +35 -0
- package/src/contract/skip_sync_contracts.ts +23 -0
- package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
- package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +96 -42
- package/src/contract_function_simulator/execution_note_cache.ts +7 -28
- package/src/contract_function_simulator/index.ts +48 -13
- package/src/contract_function_simulator/noir-structs/bounded_vec.ts +12 -24
- package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
- package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
- package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +20 -46
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +13 -60
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
- package/src/contract_function_simulator/noir-structs/option.ts +17 -11
- package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
- package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
- package/src/contract_function_simulator/noir-structs/provided_secret.ts +4 -26
- 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 +1 -2
- package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
- package/src/contract_function_simulator/oracle/oracle_registry.ts +172 -47
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +814 -315
- package/src/contract_function_simulator/oracle/private_execution.ts +2 -3
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +167 -30
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +399 -135
- package/src/contract_function_simulator/transient_array_service.ts +91 -0
- package/src/debug/pxe_debug_utils.ts +1 -1
- package/src/entrypoints/client/bundle/index.ts +1 -0
- package/src/entrypoints/client/bundle/utils.ts +24 -5
- package/src/entrypoints/client/lazy/index.ts +1 -0
- package/src/entrypoints/client/lazy/utils.ts +24 -5
- package/src/entrypoints/client/store.ts +54 -0
- package/src/entrypoints/pxe_creation_options.ts +8 -2
- package/src/entrypoints/server/index.ts +6 -2
- package/src/entrypoints/server/store.ts +47 -0
- package/src/entrypoints/server/utils.ts +31 -9
- package/src/error_enriching.ts +27 -11
- package/src/hooks/execution_hooks.ts +32 -12
- package/src/hooks/index.ts +8 -2
- package/src/hooks/resolve_custom_request.ts +24 -0
- package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
- package/src/logs/log_service.ts +100 -37
- package/src/messages/{message_context_service.ts → tx_resolver_service.ts} +16 -9
- package/src/notes/note_service.ts +1 -1
- package/src/oracle_version.ts +5 -5
- package/src/private_kernel/batch_planner.ts +0 -1
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +11 -1
- package/src/private_kernel/hints/test_utils.ts +1 -1
- package/src/private_kernel/private_kernel_execution_prover.ts +112 -56
- package/src/private_kernel/private_kernel_oracle.ts +23 -4
- package/src/pxe.ts +328 -159
- package/src/storage/allowed_scopes.ts +14 -0
- package/src/storage/anchor_block_store/anchor_block_store.ts +8 -6
- package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +6 -6
- package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +1 -1
- package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +12 -12
- package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +9 -15
- package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +24 -4
- package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +11 -3
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +12 -4
- package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +29 -9
- package/src/storage/backwards_compatibility_tests/schema_tests.ts +141 -50
- package/src/storage/capsule_store/capsule_service.ts +8 -13
- package/src/storage/contract_store/contract_store.ts +86 -93
- package/src/storage/fact_store/fact_service.ts +69 -0
- package/src/storage/fact_store/fact_store.ts +487 -0
- package/src/storage/fact_store/fact_store_keys.ts +75 -0
- package/src/storage/fact_store/index.ts +15 -0
- package/src/storage/fact_store/origin_state.ts +84 -0
- package/src/storage/fact_store/stored_fact.ts +80 -0
- package/src/storage/index.ts +2 -1
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +226 -187
- package/src/storage/note_store/stored_note.ts +5 -27
- package/src/storage/open_pxe_stores.ts +6 -3
- package/src/storage/private_event_store/private_event_store.ts +49 -55
- package/src/storage/store_identity.ts +72 -0
- package/src/storage/tagging_store/index.ts +1 -1
- package/src/storage/tagging_store/sender_tagging_store.ts +62 -15
- package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
- package/src/tagging/constants.ts +30 -10
- package/src/tagging/index.ts +1 -1
- package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +148 -30
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +1 -1
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +6 -2
- package/src/tagging/testing/tag_query_test_utils.ts +11 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -89
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/oracle.js +0 -552
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -51
- package/dest/contract_sync/contract_sync_service.d.ts +0 -42
- package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
- package/dest/contract_sync/helpers.d.ts +0 -27
- package/dest/contract_sync/helpers.d.ts.map +0 -1
- package/dest/contract_sync/helpers.js +0 -53
- package/dest/messages/message_context_service.d.ts +0 -17
- package/dest/messages/message_context_service.d.ts.map +0 -1
- package/dest/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/src/contract_function_simulator/oracle/oracle.ts +0 -711
- package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -60
- package/src/contract_sync/helpers.ts +0 -86
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +0 -16
- package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
import type { BlockHash, BlockParameter } from '@aztec/stdlib/block';
|
|
4
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/server';
|
|
5
|
+
import type { TxHash } from '@aztec/stdlib/tx';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Per-execution cache for immutable Aztec node reads.
|
|
9
|
+
*/
|
|
10
|
+
export class AztecNodeReadCache {
|
|
11
|
+
private readonly cache = new Map<string, Promise<unknown>>();
|
|
12
|
+
|
|
13
|
+
constructor(private readonly aztecNode: AztecNode) {}
|
|
14
|
+
|
|
15
|
+
/** Fetches a block without reissuing the same node request. */
|
|
16
|
+
public getBlock(block: BlockParameter) {
|
|
17
|
+
return this.#cachedRead(`block:${this.#keyPart(block)}`, () => this.aztecNode.getBlock(block));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Fetches a transaction receipt with its effect attached. */
|
|
21
|
+
public getTxReceiptWithEffect(txHash: TxHash) {
|
|
22
|
+
return this.#cachedRead(`tx-receipt-with-effect:${txHash.toString()}`, () =>
|
|
23
|
+
this.aztecNode.getTxReceipt(txHash, { includeTxEffect: true } as const),
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Fetches an archive-tree witness for a block hash. */
|
|
28
|
+
public getBlockHashMembershipWitness(referenceBlock: BlockParameter, blockHash: BlockHash) {
|
|
29
|
+
return this.#cachedRead(
|
|
30
|
+
`block-hash-membership-witness:${this.#keyPart(referenceBlock)}:${blockHash.toString()}`,
|
|
31
|
+
() => this.aztecNode.getBlockHashMembershipWitness(referenceBlock, blockHash),
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Fetches a public-data-tree witness for a leaf slot. */
|
|
36
|
+
public getPublicDataWitness(referenceBlock: BlockParameter, leafSlot: Fr) {
|
|
37
|
+
return this.#cachedRead(`public-data-witness:${this.#keyPart(referenceBlock)}:${leafSlot.toString()}`, () =>
|
|
38
|
+
this.aztecNode.getPublicDataWitness(referenceBlock, leafSlot),
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Fetches public storage for a single slot. */
|
|
43
|
+
public getPublicStorageAt(referenceBlock: BlockParameter, contractAddress: AztecAddress, storageSlot: Fr) {
|
|
44
|
+
return this.#cachedRead(
|
|
45
|
+
`public-storage:${this.#keyPart(referenceBlock)}:${contractAddress.toString()}:${storageSlot.toString()}`,
|
|
46
|
+
() => this.aztecNode.getPublicStorageAt(referenceBlock, contractAddress, storageSlot),
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Fetches a contiguous public storage range, reusing cached reads for overlapping slots. */
|
|
51
|
+
public getPublicStorageRange(
|
|
52
|
+
referenceBlock: BlockParameter,
|
|
53
|
+
contractAddress: AztecAddress,
|
|
54
|
+
startStorageSlot: Fr,
|
|
55
|
+
numberOfElements: number,
|
|
56
|
+
) {
|
|
57
|
+
const slots = Array(numberOfElements)
|
|
58
|
+
.fill(0)
|
|
59
|
+
.map((_, i) => new Fr(startStorageSlot.value + BigInt(i)));
|
|
60
|
+
|
|
61
|
+
return Promise.all(slots.map(storageSlot => this.getPublicStorageAt(referenceBlock, contractAddress, storageSlot)));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
#cachedRead<T>(key: string, fetch: () => Promise<T>): Promise<T> {
|
|
65
|
+
const cached = this.cache.get(key);
|
|
66
|
+
if (cached) {
|
|
67
|
+
return cached as Promise<T>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const promise = fetch();
|
|
71
|
+
promise.catch(() => this.cache.delete(key));
|
|
72
|
+
this.cache.set(key, promise);
|
|
73
|
+
return promise;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
#keyPart(value: unknown): string {
|
|
77
|
+
if (['string', 'number', 'bigint', 'boolean'].includes(typeof value)) {
|
|
78
|
+
return String(value);
|
|
79
|
+
}
|
|
80
|
+
if (value && typeof value === 'object') {
|
|
81
|
+
const toString = (value as { toString?: () => string }).toString;
|
|
82
|
+
if (toString && toString !== Object.prototype.toString) {
|
|
83
|
+
return toString.call(value);
|
|
84
|
+
}
|
|
85
|
+
return JSON.stringify(value, (_key, nested) => (typeof nested === 'bigint' ? nested.toString() : nested));
|
|
86
|
+
}
|
|
87
|
+
return String(value);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CircuitKind } from '@aztec/bb.js';
|
|
1
2
|
import {
|
|
2
3
|
AVM_EMITNOTEHASH_BASE_L2_GAS,
|
|
3
4
|
AVM_EMITNULLIFIER_BASE_L2_GAS,
|
|
@@ -19,6 +20,7 @@ import {
|
|
|
19
20
|
MAX_PRIVATE_LOGS_PER_TX,
|
|
20
21
|
MAX_TX_LIFETIME,
|
|
21
22
|
PRIVATE_TX_L2_GAS_OVERHEAD,
|
|
23
|
+
PUBLIC_DATA_WRITE_LENGTH,
|
|
22
24
|
PUBLIC_TX_L2_GAS_OVERHEAD,
|
|
23
25
|
TX_DA_GAS_OVERHEAD,
|
|
24
26
|
} from '@aztec/constants';
|
|
@@ -80,6 +82,7 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
80
82
|
import {
|
|
81
83
|
BlockHeader,
|
|
82
84
|
CallContext,
|
|
85
|
+
type ContractOverrides,
|
|
83
86
|
HashedValues,
|
|
84
87
|
type OffchainEffect,
|
|
85
88
|
PrivateExecutionResult,
|
|
@@ -90,33 +93,34 @@ import {
|
|
|
90
93
|
getFinalMinRevertibleSideEffectCounter,
|
|
91
94
|
} from '@aztec/stdlib/tx';
|
|
92
95
|
|
|
93
|
-
import type {
|
|
96
|
+
import type { ContractClassService } from '../contract/contract_class_service.js';
|
|
97
|
+
import type { ContractSyncService } from '../contract/contract_sync_service.js';
|
|
94
98
|
import type { ExecutionHooks } from '../hooks/index.js';
|
|
95
|
-
import type {
|
|
99
|
+
import type { TxResolverService } from '../messages/tx_resolver_service.js';
|
|
96
100
|
import type { AddressStore } from '../storage/address_store/address_store.js';
|
|
97
101
|
import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
|
|
98
102
|
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
99
103
|
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
104
|
+
import { FactService } from '../storage/fact_store/index.js';
|
|
105
|
+
import type { FactStore } from '../storage/fact_store/index.js';
|
|
100
106
|
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
101
107
|
import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
102
108
|
import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
|
|
103
|
-
import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
|
|
104
109
|
import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
|
|
110
|
+
import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
|
|
111
|
+
import { AnchoredContractData } from './anchored_contract_data.js';
|
|
105
112
|
import type { BenchmarkedNode } from './benchmarked_node.js';
|
|
106
113
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
107
114
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
108
115
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
109
|
-
import {
|
|
116
|
+
import { buildACIRCallback } from './oracle/acir_callback.js';
|
|
110
117
|
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
111
118
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
112
119
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
120
|
+
import { TransientArrayService } from './transient_array_service.js';
|
|
113
121
|
|
|
114
122
|
/** Options for ContractFunctionSimulator.run. */
|
|
115
123
|
export type ContractSimulatorRunOpts = {
|
|
116
|
-
/** The address of the contract (should match request.origin). */
|
|
117
|
-
contractAddress: AztecAddress;
|
|
118
|
-
/** The function selector of the entry point. */
|
|
119
|
-
selector: FunctionSelector;
|
|
120
124
|
/** The address calling the function. Can be replaced to simulate a call from another contract or account. */
|
|
121
125
|
msgSender?: AztecAddress;
|
|
122
126
|
/** The block header to use as base state for this run. */
|
|
@@ -132,6 +136,9 @@ export type ContractSimulatorRunOpts = {
|
|
|
132
136
|
/** Args for ContractFunctionSimulator constructor. */
|
|
133
137
|
export type ContractFunctionSimulatorArgs = {
|
|
134
138
|
contractStore: ContractStore;
|
|
139
|
+
contractClassService: ContractClassService;
|
|
140
|
+
/** Per-simulation contract overrides. */
|
|
141
|
+
overrides?: ContractOverrides;
|
|
135
142
|
noteStore: NoteStore;
|
|
136
143
|
keyStore: KeyStore;
|
|
137
144
|
addressStore: AddressStore;
|
|
@@ -139,12 +146,13 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
139
146
|
l2TipsStore: L2TipsProvider;
|
|
140
147
|
senderTaggingStore: SenderTaggingStore;
|
|
141
148
|
recipientTaggingStore: RecipientTaggingStore;
|
|
142
|
-
|
|
149
|
+
taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
143
150
|
capsuleStore: CapsuleStore;
|
|
151
|
+
factStore: FactStore;
|
|
144
152
|
privateEventStore: PrivateEventStore;
|
|
145
153
|
simulator: CircuitSimulator;
|
|
146
154
|
contractSyncService: ContractSyncService;
|
|
147
|
-
|
|
155
|
+
txResolver: TxResolverService;
|
|
148
156
|
hooks?: ExecutionHooks;
|
|
149
157
|
};
|
|
150
158
|
|
|
@@ -154,6 +162,8 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
154
162
|
export class ContractFunctionSimulator {
|
|
155
163
|
private readonly log: Logger;
|
|
156
164
|
private readonly contractStore: ContractStore;
|
|
165
|
+
private readonly contractClassService: ContractClassService;
|
|
166
|
+
private readonly overrides: ContractOverrides | undefined;
|
|
157
167
|
private readonly noteStore: NoteStore;
|
|
158
168
|
private readonly keyStore: KeyStore;
|
|
159
169
|
private readonly addressStore: AddressStore;
|
|
@@ -161,16 +171,19 @@ export class ContractFunctionSimulator {
|
|
|
161
171
|
private readonly l2TipsStore: L2TipsProvider;
|
|
162
172
|
private readonly senderTaggingStore: SenderTaggingStore;
|
|
163
173
|
private readonly recipientTaggingStore: RecipientTaggingStore;
|
|
164
|
-
private readonly
|
|
174
|
+
private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
165
175
|
private readonly capsuleStore: CapsuleStore;
|
|
176
|
+
private readonly factStore: FactStore;
|
|
166
177
|
private readonly privateEventStore: PrivateEventStore;
|
|
167
178
|
private readonly simulator: CircuitSimulator;
|
|
168
179
|
private readonly contractSyncService: ContractSyncService;
|
|
169
|
-
private readonly
|
|
180
|
+
private readonly txResolver: TxResolverService;
|
|
170
181
|
private readonly hooks: ExecutionHooks | undefined;
|
|
171
182
|
|
|
172
183
|
constructor(args: ContractFunctionSimulatorArgs) {
|
|
173
184
|
this.contractStore = args.contractStore;
|
|
185
|
+
this.contractClassService = args.contractClassService;
|
|
186
|
+
this.overrides = args.overrides;
|
|
174
187
|
this.noteStore = args.noteStore;
|
|
175
188
|
this.keyStore = args.keyStore;
|
|
176
189
|
this.addressStore = args.addressStore;
|
|
@@ -178,12 +191,13 @@ export class ContractFunctionSimulator {
|
|
|
178
191
|
this.l2TipsStore = args.l2TipsStore;
|
|
179
192
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
180
193
|
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
181
|
-
this.
|
|
194
|
+
this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
|
|
182
195
|
this.capsuleStore = args.capsuleStore;
|
|
196
|
+
this.factStore = args.factStore;
|
|
183
197
|
this.privateEventStore = args.privateEventStore;
|
|
184
198
|
this.simulator = args.simulator;
|
|
185
199
|
this.contractSyncService = args.contractSyncService;
|
|
186
|
-
this.
|
|
200
|
+
this.txResolver = args.txResolver;
|
|
187
201
|
this.hooks = args.hooks;
|
|
188
202
|
this.log = createLogger('simulator');
|
|
189
203
|
}
|
|
@@ -195,9 +209,7 @@ export class ContractFunctionSimulator {
|
|
|
195
209
|
public async run(
|
|
196
210
|
request: TxExecutionRequest,
|
|
197
211
|
{
|
|
198
|
-
|
|
199
|
-
selector,
|
|
200
|
-
msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
|
|
212
|
+
msgSender = AztecAddress.NULL_MSG_SENDER,
|
|
201
213
|
anchorBlockHeader,
|
|
202
214
|
senderForTags,
|
|
203
215
|
scopes,
|
|
@@ -206,18 +218,30 @@ export class ContractFunctionSimulator {
|
|
|
206
218
|
): Promise<PrivateExecutionResult> {
|
|
207
219
|
const simulatorSetupTimer = new Timer();
|
|
208
220
|
|
|
209
|
-
const
|
|
221
|
+
const contractAddress = request.origin;
|
|
210
222
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
223
|
+
const anchoredContractData = new AnchoredContractData(
|
|
224
|
+
this.contractStore,
|
|
225
|
+
this.contractClassService,
|
|
226
|
+
anchorBlockHeader,
|
|
227
|
+
this.overrides,
|
|
228
|
+
);
|
|
214
229
|
|
|
215
|
-
|
|
230
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(
|
|
231
|
+
contractAddress,
|
|
232
|
+
request.functionSelector,
|
|
233
|
+
);
|
|
234
|
+
if (!entryPointArtifact) {
|
|
216
235
|
throw new Error(
|
|
217
|
-
`
|
|
236
|
+
`Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` +
|
|
237
|
+
`Register it via wallet.registerContract(...).`,
|
|
218
238
|
);
|
|
219
239
|
}
|
|
220
240
|
|
|
241
|
+
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
242
|
+
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
243
|
+
}
|
|
244
|
+
|
|
221
245
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
222
246
|
const startSideEffectCounter = 2;
|
|
223
247
|
|
|
@@ -232,9 +256,15 @@ export class ContractFunctionSimulator {
|
|
|
232
256
|
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
233
257
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
234
258
|
|
|
259
|
+
// One shared transient store for the whole execution tree rooted at this transaction. Threaded into every child
|
|
260
|
+
// private oracle and inherited by nested utility frames, so that frames of the same contract see each other's
|
|
261
|
+
// transient arrays, then discarded when run() returns.
|
|
262
|
+
const transientArrayService = new TransientArrayService();
|
|
263
|
+
|
|
235
264
|
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
236
265
|
argsHash: request.firstCallArgsHash,
|
|
237
266
|
txContext: request.txContext,
|
|
267
|
+
txRequestSalt: request.salt,
|
|
238
268
|
callContext,
|
|
239
269
|
anchorBlockHeader,
|
|
240
270
|
utilityExecutor: async (call, execScopes) => {
|
|
@@ -245,17 +275,18 @@ export class ContractFunctionSimulator {
|
|
|
245
275
|
executionCache: HashedValuesCache.create(request.argsOfCalls),
|
|
246
276
|
noteCache,
|
|
247
277
|
taggingIndexCache,
|
|
248
|
-
|
|
278
|
+
anchoredContractData,
|
|
249
279
|
noteStore: this.noteStore,
|
|
250
280
|
keyStore: this.keyStore,
|
|
251
281
|
addressStore: this.addressStore,
|
|
252
282
|
aztecNode: this.aztecNode,
|
|
253
283
|
senderTaggingStore: this.senderTaggingStore,
|
|
254
284
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
255
|
-
|
|
285
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
256
286
|
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
287
|
+
factService: new FactService(this.factStore, scopes),
|
|
257
288
|
privateEventStore: this.privateEventStore,
|
|
258
|
-
|
|
289
|
+
txResolver: this.txResolver,
|
|
259
290
|
contractSyncService: this.contractSyncService,
|
|
260
291
|
jobId,
|
|
261
292
|
totalPublicCalldataCount: 0,
|
|
@@ -265,6 +296,7 @@ export class ContractFunctionSimulator {
|
|
|
265
296
|
simulator: this.simulator,
|
|
266
297
|
l2TipsStore: this.l2TipsStore,
|
|
267
298
|
hooks: this.hooks,
|
|
299
|
+
transientArrayService,
|
|
268
300
|
});
|
|
269
301
|
|
|
270
302
|
const setupTime = simulatorSetupTimer.ms();
|
|
@@ -283,7 +315,6 @@ export class ContractFunctionSimulator {
|
|
|
283
315
|
);
|
|
284
316
|
const simulatorTeardownTimer = new Timer();
|
|
285
317
|
|
|
286
|
-
noteCache.finish();
|
|
287
318
|
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
288
319
|
|
|
289
320
|
const publicCallRequests = collectNested([executionResult], r =>
|
|
@@ -318,10 +349,6 @@ export class ContractFunctionSimulator {
|
|
|
318
349
|
/**
|
|
319
350
|
* Runs a utility function.
|
|
320
351
|
* @param call - The function call to execute.
|
|
321
|
-
* @param authwits - Authentication witnesses required for the function call.
|
|
322
|
-
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
323
|
-
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
324
|
-
* accounts if not specified.
|
|
325
352
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
326
353
|
*/
|
|
327
354
|
public async runUtility(
|
|
@@ -331,7 +358,20 @@ export class ContractFunctionSimulator {
|
|
|
331
358
|
scopes: AztecAddress[],
|
|
332
359
|
jobId: string,
|
|
333
360
|
): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
|
|
334
|
-
const
|
|
361
|
+
const anchoredContractData = new AnchoredContractData(
|
|
362
|
+
this.contractStore,
|
|
363
|
+
this.contractClassService,
|
|
364
|
+
anchorBlockHeader,
|
|
365
|
+
this.overrides,
|
|
366
|
+
);
|
|
367
|
+
|
|
368
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
369
|
+
if (!entryPointArtifact) {
|
|
370
|
+
throw new Error(
|
|
371
|
+
`Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` +
|
|
372
|
+
`Register it via wallet.registerContract(...).`,
|
|
373
|
+
);
|
|
374
|
+
}
|
|
335
375
|
|
|
336
376
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
337
377
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
@@ -342,20 +382,26 @@ export class ContractFunctionSimulator {
|
|
|
342
382
|
};
|
|
343
383
|
|
|
344
384
|
const oracle = new UtilityExecutionOracle({
|
|
345
|
-
|
|
385
|
+
callContext: CallContext.from({
|
|
386
|
+
msgSender: AztecAddress.NULL_MSG_SENDER,
|
|
387
|
+
contractAddress: call.to,
|
|
388
|
+
functionSelector: call.selector,
|
|
389
|
+
isStaticCall: true,
|
|
390
|
+
}),
|
|
346
391
|
authWitnesses: authwits,
|
|
347
392
|
capsules: [],
|
|
348
393
|
anchorBlockHeader,
|
|
349
|
-
|
|
394
|
+
anchoredContractData,
|
|
350
395
|
noteStore: this.noteStore,
|
|
351
396
|
keyStore: this.keyStore,
|
|
352
397
|
addressStore: this.addressStore,
|
|
353
398
|
aztecNode: this.aztecNode,
|
|
354
399
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
355
|
-
|
|
400
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
356
401
|
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
402
|
+
factService: new FactService(this.factStore, scopes),
|
|
357
403
|
privateEventStore: this.privateEventStore,
|
|
358
|
-
|
|
404
|
+
txResolver: this.txResolver,
|
|
359
405
|
contractSyncService: this.contractSyncService,
|
|
360
406
|
l2TipsStore: this.l2TipsStore,
|
|
361
407
|
jobId,
|
|
@@ -363,6 +409,8 @@ export class ContractFunctionSimulator {
|
|
|
363
409
|
simulator: this.simulator,
|
|
364
410
|
hooks: this.hooks,
|
|
365
411
|
utilityExecutor,
|
|
412
|
+
// Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
|
|
413
|
+
transientArrayService: new TransientArrayService(),
|
|
366
414
|
});
|
|
367
415
|
|
|
368
416
|
try {
|
|
@@ -373,7 +421,7 @@ export class ContractFunctionSimulator {
|
|
|
373
421
|
|
|
374
422
|
const initialWitness = toACVMWitness(0, call.args);
|
|
375
423
|
const acirExecutionResult = await this.simulator
|
|
376
|
-
.executeUserCircuit(initialWitness, entryPointArtifact,
|
|
424
|
+
.executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle))
|
|
377
425
|
.catch((err: Error) => {
|
|
378
426
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
379
427
|
throw new ExecutionError(
|
|
@@ -540,6 +588,7 @@ export async function generateSimulatedProvingResult(
|
|
|
540
588
|
execution.publicInputs.callContext.functionSelector,
|
|
541
589
|
),
|
|
542
590
|
timings: execution.profileResult?.timings ?? { witgen: 0, oracles: {} },
|
|
591
|
+
kind: CircuitKind.App,
|
|
543
592
|
bytecode: execution.acir,
|
|
544
593
|
vk: execution.vk,
|
|
545
594
|
witness: execution.partialWitness,
|
|
@@ -608,12 +657,12 @@ export async function generateSimulatedProvingResult(
|
|
|
608
657
|
siloedNullifiers,
|
|
609
658
|
minRevertibleSideEffectCounter,
|
|
610
659
|
);
|
|
660
|
+
// The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
|
|
661
|
+
// init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
|
|
662
|
+
// the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
|
|
663
|
+
// nullifier.
|
|
611
664
|
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
612
|
-
|
|
613
|
-
nonRevertibleNullifiers.push(nonceGenerator);
|
|
614
|
-
} else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
|
|
615
|
-
throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
|
|
616
|
-
}
|
|
665
|
+
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
617
666
|
|
|
618
667
|
if (isPrivateOnlyTx) {
|
|
619
668
|
// We must make the note hashes unique by using the
|
|
@@ -876,6 +925,11 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
|
|
|
876
925
|
);
|
|
877
926
|
meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
|
|
878
927
|
|
|
928
|
+
if (isPrivateOnlyTx) {
|
|
929
|
+
// The public data write that the private tx base rollup always performs to update the fee payer's balance.
|
|
930
|
+
meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
|
|
931
|
+
}
|
|
932
|
+
|
|
879
933
|
const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
|
|
880
934
|
|
|
881
935
|
if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
|
|
@@ -43,12 +43,6 @@ export class ExecutionNoteCache {
|
|
|
43
43
|
|
|
44
44
|
private inRevertiblePhase = false;
|
|
45
45
|
|
|
46
|
-
/**
|
|
47
|
-
* Whether the protocol nullifier was used for nonce generation.
|
|
48
|
-
* We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
|
|
49
|
-
*/
|
|
50
|
-
private usedProtocolNullifierForNonces: boolean | undefined;
|
|
51
|
-
|
|
52
46
|
constructor(private readonly protocolNullifier: Fr) {}
|
|
53
47
|
|
|
54
48
|
/**
|
|
@@ -64,12 +58,9 @@ export class ExecutionNoteCache {
|
|
|
64
58
|
this.inRevertiblePhase = true;
|
|
65
59
|
this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
|
|
66
60
|
|
|
67
|
-
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
// we don't want to use them as the nonce generator.
|
|
71
|
-
this.usedProtocolNullifierForNonces = nullifiers.length === 0;
|
|
72
|
-
const nonceGenerator = this.usedProtocolNullifierForNonces ? this.protocolNullifier : new Fr(nullifiers[0]);
|
|
61
|
+
// The protocol nullifier is always the tx's first nullifier (injected by the kernel init), so it is the
|
|
62
|
+
// nonce generator for every note hash.
|
|
63
|
+
const nonceGenerator = this.protocolNullifier;
|
|
73
64
|
|
|
74
65
|
// The existing pending notes are all non-revertible.
|
|
75
66
|
// They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
|
|
@@ -102,14 +93,6 @@ export class ExecutionNoteCache {
|
|
|
102
93
|
return sideEffectCounter >= this.minRevertibleSideEffectCounter;
|
|
103
94
|
}
|
|
104
95
|
|
|
105
|
-
public finish() {
|
|
106
|
-
// If we never entered the revertible phase, and there are no nullifiers emitted, we need to use the protocol
|
|
107
|
-
// nullifier as the nonce generator.
|
|
108
|
-
if (!this.inRevertiblePhase) {
|
|
109
|
-
this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
96
|
/**
|
|
114
97
|
* Add a new note to cache.
|
|
115
98
|
* @param note - New note created during execution.
|
|
@@ -223,19 +206,15 @@ export class ExecutionNoteCache {
|
|
|
223
206
|
}
|
|
224
207
|
|
|
225
208
|
/**
|
|
226
|
-
* @returns All nullifiers
|
|
227
|
-
*
|
|
209
|
+
* @returns All nullifiers of the transaction: the protocol nullifier (the kernel-injected first nullifier),
|
|
210
|
+
* followed by those emitted by private calls.
|
|
228
211
|
*/
|
|
229
212
|
getAllNullifiers(): Fr[] {
|
|
230
|
-
|
|
231
|
-
throw new Error('usedProtocolNullifierForNonces is not set yet. Call finish() to complete the transaction.');
|
|
232
|
-
}
|
|
233
|
-
const allNullifiers = this.getEmittedNullifiers();
|
|
234
|
-
return [...(this.usedProtocolNullifierForNonces ? [this.protocolNullifier] : []), ...allNullifiers];
|
|
213
|
+
return [this.protocolNullifier, ...this.getEmittedNullifiers()];
|
|
235
214
|
}
|
|
236
215
|
|
|
237
216
|
getNonceGenerator(): Fr {
|
|
238
|
-
return this.
|
|
217
|
+
return this.protocolNullifier;
|
|
239
218
|
}
|
|
240
219
|
|
|
241
220
|
#recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
|
|
@@ -1,41 +1,67 @@
|
|
|
1
1
|
export {
|
|
2
2
|
ORACLE_REGISTRY,
|
|
3
|
-
callHandler,
|
|
4
3
|
makeEntry,
|
|
5
|
-
type HandlersForPrefix,
|
|
6
4
|
type NamedValue,
|
|
7
5
|
type OracleRegistryEntry,
|
|
8
6
|
type ParamTypes,
|
|
9
|
-
type StripOraclePrefix,
|
|
10
7
|
} from './oracle/oracle_registry.js';
|
|
11
8
|
export {
|
|
9
|
+
ALIAS,
|
|
12
10
|
ARRAY,
|
|
13
11
|
AZTEC_ADDRESS,
|
|
14
12
|
BIGINT,
|
|
13
|
+
BLOCK_HASH,
|
|
15
14
|
BLOCK_NUMBER,
|
|
16
15
|
BOOL,
|
|
17
16
|
BOUNDED_VEC,
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
U8,
|
|
18
|
+
CONTRACT_INSTANCE,
|
|
20
19
|
DELIVERY_MODE,
|
|
21
20
|
EPHEMERAL_ARRAY,
|
|
21
|
+
ETH_ADDRESS,
|
|
22
22
|
EVENT_VALIDATION_REQUEST,
|
|
23
23
|
FIELD,
|
|
24
|
+
FIXED_ARRAY,
|
|
24
25
|
FUNCTION_SELECTOR,
|
|
26
|
+
LEAF,
|
|
27
|
+
LEAF_INDEX,
|
|
25
28
|
LOG_RETRIEVAL_REQUEST,
|
|
26
29
|
LOG_RETRIEVAL_RESPONSE,
|
|
27
30
|
MEMBERSHIP_WITNESS,
|
|
28
|
-
|
|
31
|
+
NOTE_SELECTOR,
|
|
29
32
|
NOTE_VALIDATION_REQUEST,
|
|
30
33
|
OPTION,
|
|
31
34
|
PENDING_TAGGED_LOG,
|
|
32
35
|
POINT,
|
|
33
36
|
PROVIDED_SECRET,
|
|
37
|
+
SCALAR,
|
|
38
|
+
SLOT_NUMBER,
|
|
34
39
|
STR,
|
|
40
|
+
STRUCT,
|
|
35
41
|
U32,
|
|
42
|
+
U64,
|
|
43
|
+
U128,
|
|
44
|
+
tryFieldWidth,
|
|
45
|
+
isArrayMapping,
|
|
46
|
+
isBoundedVecMapping,
|
|
47
|
+
isEphemeralArrayMapping,
|
|
48
|
+
isFixedArrayMapping,
|
|
49
|
+
isFixedBoundedVecMapping,
|
|
50
|
+
isOptionMapping,
|
|
51
|
+
isStructMapping,
|
|
52
|
+
type ArrayMapping,
|
|
53
|
+
type BoundedVecMapping,
|
|
54
|
+
type CompositeMapping,
|
|
55
|
+
type EphemeralArrayMapping,
|
|
56
|
+
type FixedArrayMapping,
|
|
57
|
+
type FixedBoundedVecMapping,
|
|
36
58
|
type InputSlot,
|
|
37
59
|
type MaybePromise,
|
|
60
|
+
type OptionMapping,
|
|
38
61
|
type OutputSlot,
|
|
62
|
+
type SlotShape,
|
|
63
|
+
type StructField,
|
|
64
|
+
type StructMapping,
|
|
39
65
|
type TypeMapping,
|
|
40
66
|
} from './oracle/oracle_type_mappings.js';
|
|
41
67
|
export { ExecutionNoteCache } from './execution_note_cache.js';
|
|
@@ -43,21 +69,30 @@ export { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
|
43
69
|
export { HashedValuesCache } from './hashed_values_cache.js';
|
|
44
70
|
export { pickNotes } from './pick_notes.js';
|
|
45
71
|
export type { IMiscOracle, IUtilityExecutionOracle, IPrivateExecutionOracle } from './oracle/interfaces.js';
|
|
72
|
+
export type { FactCollection } from './noir-structs/fact_collection.js';
|
|
46
73
|
export type { NoteData } from './noir-structs/note_data.js';
|
|
47
|
-
export {
|
|
48
|
-
export {
|
|
74
|
+
export type { ResolvedTaggingStrategy } from './noir-structs/resolved_tagging_strategy.js';
|
|
75
|
+
export type { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
|
|
76
|
+
export { TxResolverService } from '../messages/tx_resolver_service.js';
|
|
49
77
|
export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
50
78
|
export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
51
|
-
export {
|
|
79
|
+
export { buildACIRCallback, UnavailableOracleError } from './oracle/acir_callback.js';
|
|
80
|
+
export { LEGACY_ORACLE_REGISTRY } from './oracle/legacy_oracle_registry.js';
|
|
52
81
|
export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
|
|
53
82
|
export { generateSimulatedProvingResult } from './contract_function_simulator.js';
|
|
54
83
|
export { packAsHintedNote } from './oracle/note_packing_utils.js';
|
|
55
84
|
export { BoundedVec } from './noir-structs/bounded_vec.js';
|
|
85
|
+
export type { ContractClassLogData } from './noir-structs/contract_class_log_data.js';
|
|
86
|
+
export type { EmbeddedCurvePoint } from './noir-structs/embedded_curve_point.js';
|
|
56
87
|
export { EphemeralArray } from './noir-structs/ephemeral_array.js';
|
|
57
88
|
export { Option } from './noir-structs/option.js';
|
|
58
|
-
export { UtilityContext } from './noir-structs/utility_context.js';
|
|
89
|
+
export type { UtilityContext } from './noir-structs/utility_context.js';
|
|
59
90
|
export { EventValidationRequest } from './noir-structs/event_validation_request.js';
|
|
60
|
-
export { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
|
|
61
|
-
export { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
|
|
91
|
+
export type { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
|
|
92
|
+
export type { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
|
|
62
93
|
export { NoteValidationRequest } from './noir-structs/note_validation_request.js';
|
|
63
|
-
export {
|
|
94
|
+
export type { PendingTaggedLog } from './noir-structs/pending_tagged_log.js';
|
|
95
|
+
export type { TxEffectData } from './noir-structs/tx_effect_data.js';
|
|
96
|
+
export type { ProvidedSecret } from './noir-structs/provided_secret.js';
|
|
97
|
+
export type { ResolvedTx } from './noir-structs/resolved_tx.js';
|
|
98
|
+
export { TransientArrayService } from './transient_array_service.js';
|