@aztec/pxe 0.0.1-commit.993d240 → 0.0.1-commit.9a89641
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.d.ts +2 -12
- package/dest/bin/check_oracle_version.d.ts.map +1 -1
- package/dest/bin/check_oracle_version.js +9 -122
- 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 +20 -0
- package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
- package/dest/bin/oracle_version_helpers.js +25 -0
- 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 +17 -15
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +41 -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/config/package_info.js +1 -1
- package/dest/contract/contract_class_service.d.ts +24 -0
- package/dest/contract/contract_class_service.d.ts.map +1 -0
- package/dest/contract/contract_class_service.js +36 -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/contract_function_simulator.d.ts +19 -25
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +63 -49
- package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +8 -28
- package/dest/contract_function_simulator/index.d.ts +24 -6
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +9 -4
- 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/ephemeral_array.d.ts +37 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -2
- 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 +2 -2
- 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_data.d.ts +27 -0
- package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -2
- 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 +3 -3
- 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 +8 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
- package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
- package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/index.js +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -114
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +92 -100
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle_registry.js +296 -479
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +274 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1253 -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 +2 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +32 -21
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +152 -49
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +97 -37
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +376 -138
- 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/events/event_service.d.ts +13 -6
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +13 -13
- 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 +18 -8
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +93 -45
- package/dest/messages/tx_resolver_service.d.ts +28 -0
- package/dest/messages/tx_resolver_service.d.ts.map +1 -0
- package/dest/messages/tx_resolver_service.js +61 -0
- package/dest/node/benchmarked_node.d.ts +20 -0
- package/dest/node/benchmarked_node.d.ts.map +1 -0
- package/dest/node/benchmarked_node.js +94 -0
- package/dest/node/caching_aztec_node.d.ts +24 -0
- package/dest/node/caching_aztec_node.d.ts.map +1 -0
- package/dest/node/caching_aztec_node.js +267 -0
- package/dest/notes/note_service.d.ts +13 -7
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +10 -10
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.js +8 -8
- 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 +251 -148
- 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 +66 -77
- 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 +41 -10
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +81 -29
- 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 +11 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +38 -10
- package/dest/tagging/get_all_logs_by_tags.d.ts +29 -8
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +29 -10
- package/dest/tagging/index.d.ts +3 -3
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +2 -2
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +27 -9
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +104 -33
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +6 -3
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +23 -36
- package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts +22 -0
- package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/classify_pending_txs.js +61 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +15 -5
- 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 +36 -35
- package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts +29 -0
- package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/resolve_pending_txs.js +41 -0
- package/dest/tagging/sender_sync/utils/test_utils.d.ts +16 -0
- package/dest/tagging/sender_sync/utils/test_utils.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/test_utils.js +24 -0
- 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 -151
- package/src/bin/index.ts +1 -1
- package/src/bin/oracle_version_helpers.ts +30 -0
- package/src/block_synchronizer/block_stream_source.ts +6 -45
- package/src/block_synchronizer/block_synchronizer.ts +54 -30
- package/src/config/index.ts +1 -0
- package/src/config/package_info.ts +1 -1
- package/src/contract/contract_class_service.ts +45 -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/contract_function_simulator.ts +96 -59
- package/src/contract_function_simulator/execution_note_cache.ts +8 -29
- package/src/contract_function_simulator/index.ts +87 -5
- 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/ephemeral_array.ts +66 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +3 -3
- 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_data.ts +27 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -4
- 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 +5 -0
- package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
- package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
- package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
- package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
- package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
- package/src/contract_function_simulator/oracle/index.ts +1 -15
- package/src/contract_function_simulator/oracle/interfaces.ts +11 -189
- 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 +289 -483
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1067 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +2 -3
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +190 -61
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +556 -174
- 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/events/event_service.ts +24 -14
- 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 +122 -61
- package/src/messages/tx_resolver_service.ts +80 -0
- package/src/node/benchmarked_node.ts +140 -0
- package/src/node/caching_aztec_node.ts +406 -0
- package/src/notes/note_service.ts +20 -14
- package/src/oracle_version.ts +8 -8
- 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 +357 -172
- 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 +88 -94
- 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 +113 -41
- package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
- package/src/tagging/constants.ts +42 -10
- package/src/tagging/get_all_logs_by_tags.ts +47 -11
- package/src/tagging/index.ts +7 -2
- package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +161 -46
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +27 -57
- package/src/tagging/sender_sync/utils/classify_pending_txs.ts +91 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +46 -40
- package/src/tagging/sender_sync/utils/resolve_pending_txs.ts +64 -0
- package/src/tagging/sender_sync/utils/test_utils.ts +46 -0
- package/src/tagging/testing/tag_query_test_utils.ts +11 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts +0 -9
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +0 -1
- package/dest/contract_function_simulator/benchmarked_node.js +0 -77
- 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/messages/message_context_service.js +0 -38
- 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/sender_sync/utils/get_status_change_of_pending.d.ts +0 -17
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +0 -1
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +0 -60
- package/src/contract_function_simulator/benchmarked_node.ts +0 -103
- 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/messages/message_context_service.ts +0 -45
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +0 -16
- package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +0 -66
|
@@ -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,33 @@ 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';
|
|
105
|
-
import type {
|
|
110
|
+
import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
|
|
111
|
+
import { AnchoredContractData } from './anchored_contract_data.js';
|
|
106
112
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
107
113
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
108
114
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
109
|
-
import {
|
|
115
|
+
import { buildACIRCallback } from './oracle/acir_callback.js';
|
|
110
116
|
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
111
117
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
112
118
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
119
|
+
import { TransientArrayService } from './transient_array_service.js';
|
|
113
120
|
|
|
114
121
|
/** Options for ContractFunctionSimulator.run. */
|
|
115
122
|
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
123
|
/** The address calling the function. Can be replaced to simulate a call from another contract or account. */
|
|
121
124
|
msgSender?: AztecAddress;
|
|
122
125
|
/** The block header to use as base state for this run. */
|
|
@@ -132,6 +135,9 @@ export type ContractSimulatorRunOpts = {
|
|
|
132
135
|
/** Args for ContractFunctionSimulator constructor. */
|
|
133
136
|
export type ContractFunctionSimulatorArgs = {
|
|
134
137
|
contractStore: ContractStore;
|
|
138
|
+
contractClassService: ContractClassService;
|
|
139
|
+
/** Per-simulation contract overrides. */
|
|
140
|
+
overrides?: ContractOverrides;
|
|
135
141
|
noteStore: NoteStore;
|
|
136
142
|
keyStore: KeyStore;
|
|
137
143
|
addressStore: AddressStore;
|
|
@@ -139,12 +145,13 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
139
145
|
l2TipsStore: L2TipsProvider;
|
|
140
146
|
senderTaggingStore: SenderTaggingStore;
|
|
141
147
|
recipientTaggingStore: RecipientTaggingStore;
|
|
142
|
-
|
|
148
|
+
taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
143
149
|
capsuleStore: CapsuleStore;
|
|
150
|
+
factStore: FactStore;
|
|
144
151
|
privateEventStore: PrivateEventStore;
|
|
145
152
|
simulator: CircuitSimulator;
|
|
146
153
|
contractSyncService: ContractSyncService;
|
|
147
|
-
|
|
154
|
+
txResolver: TxResolverService;
|
|
148
155
|
hooks?: ExecutionHooks;
|
|
149
156
|
};
|
|
150
157
|
|
|
@@ -154,6 +161,8 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
154
161
|
export class ContractFunctionSimulator {
|
|
155
162
|
private readonly log: Logger;
|
|
156
163
|
private readonly contractStore: ContractStore;
|
|
164
|
+
private readonly contractClassService: ContractClassService;
|
|
165
|
+
private readonly overrides: ContractOverrides | undefined;
|
|
157
166
|
private readonly noteStore: NoteStore;
|
|
158
167
|
private readonly keyStore: KeyStore;
|
|
159
168
|
private readonly addressStore: AddressStore;
|
|
@@ -161,16 +170,19 @@ export class ContractFunctionSimulator {
|
|
|
161
170
|
private readonly l2TipsStore: L2TipsProvider;
|
|
162
171
|
private readonly senderTaggingStore: SenderTaggingStore;
|
|
163
172
|
private readonly recipientTaggingStore: RecipientTaggingStore;
|
|
164
|
-
private readonly
|
|
173
|
+
private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
165
174
|
private readonly capsuleStore: CapsuleStore;
|
|
175
|
+
private readonly factStore: FactStore;
|
|
166
176
|
private readonly privateEventStore: PrivateEventStore;
|
|
167
177
|
private readonly simulator: CircuitSimulator;
|
|
168
178
|
private readonly contractSyncService: ContractSyncService;
|
|
169
|
-
private readonly
|
|
179
|
+
private readonly txResolver: TxResolverService;
|
|
170
180
|
private readonly hooks: ExecutionHooks | undefined;
|
|
171
181
|
|
|
172
182
|
constructor(args: ContractFunctionSimulatorArgs) {
|
|
173
183
|
this.contractStore = args.contractStore;
|
|
184
|
+
this.contractClassService = args.contractClassService;
|
|
185
|
+
this.overrides = args.overrides;
|
|
174
186
|
this.noteStore = args.noteStore;
|
|
175
187
|
this.keyStore = args.keyStore;
|
|
176
188
|
this.addressStore = args.addressStore;
|
|
@@ -178,12 +190,13 @@ export class ContractFunctionSimulator {
|
|
|
178
190
|
this.l2TipsStore = args.l2TipsStore;
|
|
179
191
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
180
192
|
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
181
|
-
this.
|
|
193
|
+
this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
|
|
182
194
|
this.capsuleStore = args.capsuleStore;
|
|
195
|
+
this.factStore = args.factStore;
|
|
183
196
|
this.privateEventStore = args.privateEventStore;
|
|
184
197
|
this.simulator = args.simulator;
|
|
185
198
|
this.contractSyncService = args.contractSyncService;
|
|
186
|
-
this.
|
|
199
|
+
this.txResolver = args.txResolver;
|
|
187
200
|
this.hooks = args.hooks;
|
|
188
201
|
this.log = createLogger('simulator');
|
|
189
202
|
}
|
|
@@ -195,9 +208,7 @@ export class ContractFunctionSimulator {
|
|
|
195
208
|
public async run(
|
|
196
209
|
request: TxExecutionRequest,
|
|
197
210
|
{
|
|
198
|
-
|
|
199
|
-
selector,
|
|
200
|
-
msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
|
|
211
|
+
msgSender = AztecAddress.NULL_MSG_SENDER,
|
|
201
212
|
anchorBlockHeader,
|
|
202
213
|
senderForTags,
|
|
203
214
|
scopes,
|
|
@@ -206,18 +217,30 @@ export class ContractFunctionSimulator {
|
|
|
206
217
|
): Promise<PrivateExecutionResult> {
|
|
207
218
|
const simulatorSetupTimer = new Timer();
|
|
208
219
|
|
|
209
|
-
const
|
|
220
|
+
const contractAddress = request.origin;
|
|
210
221
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
222
|
+
const anchoredContractData = new AnchoredContractData(
|
|
223
|
+
this.contractStore,
|
|
224
|
+
this.contractClassService,
|
|
225
|
+
anchorBlockHeader,
|
|
226
|
+
this.overrides,
|
|
227
|
+
);
|
|
214
228
|
|
|
215
|
-
|
|
229
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(
|
|
230
|
+
contractAddress,
|
|
231
|
+
request.functionSelector,
|
|
232
|
+
);
|
|
233
|
+
if (!entryPointArtifact) {
|
|
216
234
|
throw new Error(
|
|
217
|
-
`
|
|
235
|
+
`Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` +
|
|
236
|
+
`Register it via wallet.registerContract(...).`,
|
|
218
237
|
);
|
|
219
238
|
}
|
|
220
239
|
|
|
240
|
+
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
241
|
+
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
242
|
+
}
|
|
243
|
+
|
|
221
244
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
222
245
|
const startSideEffectCounter = 2;
|
|
223
246
|
|
|
@@ -232,9 +255,15 @@ export class ContractFunctionSimulator {
|
|
|
232
255
|
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
233
256
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
234
257
|
|
|
258
|
+
// One shared transient store for the whole execution tree rooted at this transaction. Threaded into every child
|
|
259
|
+
// private oracle and inherited by nested utility frames, so that frames of the same contract see each other's
|
|
260
|
+
// transient arrays, then discarded when run() returns.
|
|
261
|
+
const transientArrayService = new TransientArrayService();
|
|
262
|
+
|
|
235
263
|
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
236
264
|
argsHash: request.firstCallArgsHash,
|
|
237
265
|
txContext: request.txContext,
|
|
266
|
+
txRequestSalt: request.salt,
|
|
238
267
|
callContext,
|
|
239
268
|
anchorBlockHeader,
|
|
240
269
|
utilityExecutor: async (call, execScopes) => {
|
|
@@ -245,17 +274,18 @@ export class ContractFunctionSimulator {
|
|
|
245
274
|
executionCache: HashedValuesCache.create(request.argsOfCalls),
|
|
246
275
|
noteCache,
|
|
247
276
|
taggingIndexCache,
|
|
248
|
-
|
|
277
|
+
anchoredContractData,
|
|
249
278
|
noteStore: this.noteStore,
|
|
250
279
|
keyStore: this.keyStore,
|
|
251
280
|
addressStore: this.addressStore,
|
|
252
281
|
aztecNode: this.aztecNode,
|
|
253
282
|
senderTaggingStore: this.senderTaggingStore,
|
|
254
283
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
255
|
-
|
|
284
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
256
285
|
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
286
|
+
factService: new FactService(this.factStore, scopes),
|
|
257
287
|
privateEventStore: this.privateEventStore,
|
|
258
|
-
|
|
288
|
+
txResolver: this.txResolver,
|
|
259
289
|
contractSyncService: this.contractSyncService,
|
|
260
290
|
jobId,
|
|
261
291
|
totalPublicCalldataCount: 0,
|
|
@@ -265,6 +295,7 @@ export class ContractFunctionSimulator {
|
|
|
265
295
|
simulator: this.simulator,
|
|
266
296
|
l2TipsStore: this.l2TipsStore,
|
|
267
297
|
hooks: this.hooks,
|
|
298
|
+
transientArrayService,
|
|
268
299
|
});
|
|
269
300
|
|
|
270
301
|
const setupTime = simulatorSetupTimer.ms();
|
|
@@ -283,7 +314,6 @@ export class ContractFunctionSimulator {
|
|
|
283
314
|
);
|
|
284
315
|
const simulatorTeardownTimer = new Timer();
|
|
285
316
|
|
|
286
|
-
noteCache.finish();
|
|
287
317
|
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
288
318
|
|
|
289
319
|
const publicCallRequests = collectNested([executionResult], r =>
|
|
@@ -318,10 +348,6 @@ export class ContractFunctionSimulator {
|
|
|
318
348
|
/**
|
|
319
349
|
* Runs a utility function.
|
|
320
350
|
* @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
351
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
326
352
|
*/
|
|
327
353
|
public async runUtility(
|
|
@@ -331,7 +357,20 @@ export class ContractFunctionSimulator {
|
|
|
331
357
|
scopes: AztecAddress[],
|
|
332
358
|
jobId: string,
|
|
333
359
|
): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
|
|
334
|
-
const
|
|
360
|
+
const anchoredContractData = new AnchoredContractData(
|
|
361
|
+
this.contractStore,
|
|
362
|
+
this.contractClassService,
|
|
363
|
+
anchorBlockHeader,
|
|
364
|
+
this.overrides,
|
|
365
|
+
);
|
|
366
|
+
|
|
367
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
368
|
+
if (!entryPointArtifact) {
|
|
369
|
+
throw new Error(
|
|
370
|
+
`Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` +
|
|
371
|
+
`Register it via wallet.registerContract(...).`,
|
|
372
|
+
);
|
|
373
|
+
}
|
|
335
374
|
|
|
336
375
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
337
376
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
@@ -342,20 +381,26 @@ export class ContractFunctionSimulator {
|
|
|
342
381
|
};
|
|
343
382
|
|
|
344
383
|
const oracle = new UtilityExecutionOracle({
|
|
345
|
-
|
|
384
|
+
callContext: CallContext.from({
|
|
385
|
+
msgSender: AztecAddress.NULL_MSG_SENDER,
|
|
386
|
+
contractAddress: call.to,
|
|
387
|
+
functionSelector: call.selector,
|
|
388
|
+
isStaticCall: true,
|
|
389
|
+
}),
|
|
346
390
|
authWitnesses: authwits,
|
|
347
391
|
capsules: [],
|
|
348
392
|
anchorBlockHeader,
|
|
349
|
-
|
|
393
|
+
anchoredContractData,
|
|
350
394
|
noteStore: this.noteStore,
|
|
351
395
|
keyStore: this.keyStore,
|
|
352
396
|
addressStore: this.addressStore,
|
|
353
397
|
aztecNode: this.aztecNode,
|
|
354
398
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
355
|
-
|
|
399
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
356
400
|
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
401
|
+
factService: new FactService(this.factStore, scopes),
|
|
357
402
|
privateEventStore: this.privateEventStore,
|
|
358
|
-
|
|
403
|
+
txResolver: this.txResolver,
|
|
359
404
|
contractSyncService: this.contractSyncService,
|
|
360
405
|
l2TipsStore: this.l2TipsStore,
|
|
361
406
|
jobId,
|
|
@@ -363,6 +408,8 @@ export class ContractFunctionSimulator {
|
|
|
363
408
|
simulator: this.simulator,
|
|
364
409
|
hooks: this.hooks,
|
|
365
410
|
utilityExecutor,
|
|
411
|
+
// Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
|
|
412
|
+
transientArrayService: new TransientArrayService(),
|
|
366
413
|
});
|
|
367
414
|
|
|
368
415
|
try {
|
|
@@ -373,7 +420,7 @@ export class ContractFunctionSimulator {
|
|
|
373
420
|
|
|
374
421
|
const initialWitness = toACVMWitness(0, call.args);
|
|
375
422
|
const acirExecutionResult = await this.simulator
|
|
376
|
-
.executeUserCircuit(initialWitness, entryPointArtifact,
|
|
423
|
+
.executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle))
|
|
377
424
|
.catch((err: Error) => {
|
|
378
425
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
379
426
|
throw new ExecutionError(
|
|
@@ -396,22 +443,6 @@ export class ContractFunctionSimulator {
|
|
|
396
443
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
397
444
|
}
|
|
398
445
|
}
|
|
399
|
-
|
|
400
|
-
/**
|
|
401
|
-
* Returns the execution statistics collected during the simulator run.
|
|
402
|
-
* @returns The execution statistics.
|
|
403
|
-
*/
|
|
404
|
-
getStats() {
|
|
405
|
-
const nodeRPCCalls =
|
|
406
|
-
typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
|
|
407
|
-
? (this.aztecNode as BenchmarkedNode).getStats()
|
|
408
|
-
: {
|
|
409
|
-
perMethod: {},
|
|
410
|
-
roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
|
|
411
|
-
};
|
|
412
|
-
|
|
413
|
-
return { nodeRPCCalls };
|
|
414
|
-
}
|
|
415
446
|
}
|
|
416
447
|
|
|
417
448
|
class OrderedSideEffect<T> {
|
|
@@ -540,6 +571,7 @@ export async function generateSimulatedProvingResult(
|
|
|
540
571
|
execution.publicInputs.callContext.functionSelector,
|
|
541
572
|
),
|
|
542
573
|
timings: execution.profileResult?.timings ?? { witgen: 0, oracles: {} },
|
|
574
|
+
kind: CircuitKind.App,
|
|
543
575
|
bytecode: execution.acir,
|
|
544
576
|
vk: execution.vk,
|
|
545
577
|
witness: execution.partialWitness,
|
|
@@ -608,12 +640,12 @@ export async function generateSimulatedProvingResult(
|
|
|
608
640
|
siloedNullifiers,
|
|
609
641
|
minRevertibleSideEffectCounter,
|
|
610
642
|
);
|
|
643
|
+
// The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
|
|
644
|
+
// init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
|
|
645
|
+
// the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
|
|
646
|
+
// nullifier.
|
|
611
647
|
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
|
-
}
|
|
648
|
+
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
617
649
|
|
|
618
650
|
if (isPrivateOnlyTx) {
|
|
619
651
|
// We must make the note hashes unique by using the
|
|
@@ -876,6 +908,11 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
|
|
|
876
908
|
);
|
|
877
909
|
meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
|
|
878
910
|
|
|
911
|
+
if (isPrivateOnlyTx) {
|
|
912
|
+
// The public data write that the private tx base rollup always performs to update the fee payer's balance.
|
|
913
|
+
meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
|
|
914
|
+
}
|
|
915
|
+
|
|
879
916
|
const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
|
|
880
917
|
|
|
881
918
|
if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
|
|
@@ -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;
|
|
@@ -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,16 +1,98 @@
|
|
|
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
|
+
ALIAS,
|
|
10
|
+
ARRAY,
|
|
11
|
+
AZTEC_ADDRESS,
|
|
12
|
+
BIGINT,
|
|
13
|
+
BLOCK_HASH,
|
|
14
|
+
BLOCK_NUMBER,
|
|
15
|
+
BOOL,
|
|
16
|
+
BOUNDED_VEC,
|
|
17
|
+
U8,
|
|
18
|
+
CONTRACT_INSTANCE,
|
|
19
|
+
DELIVERY_MODE,
|
|
20
|
+
EPHEMERAL_ARRAY,
|
|
21
|
+
ETH_ADDRESS,
|
|
22
|
+
EVENT_VALIDATION_REQUEST,
|
|
23
|
+
FIELD,
|
|
24
|
+
FIXED_ARRAY,
|
|
25
|
+
FUNCTION_SELECTOR,
|
|
26
|
+
LEAF,
|
|
27
|
+
LEAF_INDEX,
|
|
28
|
+
LOG_RETRIEVAL_REQUEST,
|
|
29
|
+
LOG_RETRIEVAL_RESPONSE,
|
|
30
|
+
MEMBERSHIP_WITNESS,
|
|
31
|
+
NOTE_SELECTOR,
|
|
32
|
+
NOTE_VALIDATION_REQUEST,
|
|
33
|
+
OPTION,
|
|
34
|
+
PENDING_TAGGED_LOG,
|
|
35
|
+
POINT,
|
|
36
|
+
PROVIDED_SECRET,
|
|
37
|
+
SCALAR,
|
|
38
|
+
SLOT_NUMBER,
|
|
39
|
+
STR,
|
|
40
|
+
STRUCT,
|
|
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,
|
|
58
|
+
type InputSlot,
|
|
59
|
+
type MaybePromise,
|
|
60
|
+
type OptionMapping,
|
|
61
|
+
type OutputSlot,
|
|
62
|
+
type SlotShape,
|
|
63
|
+
type StructField,
|
|
64
|
+
type StructMapping,
|
|
65
|
+
type TypeMapping,
|
|
66
|
+
} from './oracle/oracle_type_mappings.js';
|
|
1
67
|
export { ExecutionNoteCache } from './execution_note_cache.js';
|
|
2
68
|
export { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
3
69
|
export { HashedValuesCache } from './hashed_values_cache.js';
|
|
4
70
|
export { pickNotes } from './pick_notes.js';
|
|
5
|
-
export type {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
71
|
+
export type { IMiscOracle, IUtilityExecutionOracle, IPrivateExecutionOracle } from './oracle/interfaces.js';
|
|
72
|
+
export type { FactCollection } from './noir-structs/fact_collection.js';
|
|
73
|
+
export type { NoteData } from './noir-structs/note_data.js';
|
|
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';
|
|
8
77
|
export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
9
78
|
export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
10
|
-
export {
|
|
79
|
+
export { buildACIRCallback, UnavailableOracleError } from './oracle/acir_callback.js';
|
|
80
|
+
export { LEGACY_ORACLE_REGISTRY } from './oracle/legacy_oracle_registry.js';
|
|
11
81
|
export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
|
|
12
82
|
export { generateSimulatedProvingResult } from './contract_function_simulator.js';
|
|
13
83
|
export { packAsHintedNote } from './oracle/note_packing_utils.js';
|
|
14
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';
|
|
87
|
+
export { EphemeralArray } from './noir-structs/ephemeral_array.js';
|
|
15
88
|
export { Option } from './noir-structs/option.js';
|
|
16
|
-
export { UtilityContext } from './noir-structs/utility_context.js';
|
|
89
|
+
export type { UtilityContext } from './noir-structs/utility_context.js';
|
|
90
|
+
export { EventValidationRequest } from './noir-structs/event_validation_request.js';
|
|
91
|
+
export type { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
|
|
92
|
+
export type { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
|
|
93
|
+
export { NoteValidationRequest } from './noir-structs/note_validation_request.js';
|
|
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';
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`.
|
|
3
|
-
*
|
|
4
|
-
* Carries the actual `data` plus wire-format metadata (`maxLength`, `elementSize`) so the ACVM
|
|
5
|
-
* serializer can pad the storage slot to exactly `maxLength * elementSize` fields.
|
|
6
|
-
*/
|
|
1
|
+
/** TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`. */
|
|
7
2
|
export class BoundedVec<T> {
|
|
8
3
|
private constructor(
|
|
9
4
|
public readonly data: T[],
|
|
@@ -15,16 +10,11 @@ export class BoundedVec<T> {
|
|
|
15
10
|
* Construct a BoundedVec with data.
|
|
16
11
|
*
|
|
17
12
|
* @param data - Actual elements. Length must be `<= maxLength`.
|
|
18
|
-
* @param maxLength - Maximum capacity declared at the Noir call site.
|
|
19
|
-
*
|
|
20
|
-
* @param elementSize - Number of Fr fields each element contributes when serialized.
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* @example A bounded vec of bytes (elementSize defaults to 1):
|
|
25
|
-
* ```ts
|
|
26
|
-
* BoundedVec.from({ data: plaintext, maxLength: ciphertext.maxLength })
|
|
27
|
-
* ```
|
|
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.
|
|
28
18
|
*
|
|
29
19
|
* @example A bounded vec of packed notes, each spanning `packedHintedNoteLength` fields:
|
|
30
20
|
* ```ts
|
|
@@ -43,13 +33,11 @@ export class BoundedVec<T> {
|
|
|
43
33
|
return new BoundedVec<T>(data, maxLength, elementSize);
|
|
44
34
|
}
|
|
45
35
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
static empty<T>({ maxLength, elementSize = 1 }: { maxLength: number; elementSize?: number }): BoundedVec<T> {
|
|
53
|
-
return new BoundedVec<T>([], maxLength, elementSize);
|
|
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
|
+
);
|
|
54
42
|
}
|
|
55
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
|
+
};
|