@aztec/pxe 0.0.1-commit.f504929 → 0.0.1-commit.f5a9928
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 +41 -112
- package/dest/bin/index.d.ts +2 -0
- package/dest/bin/index.d.ts.map +1 -0
- package/dest/bin/index.js +1 -0
- package/dest/bin/oracle_version_helpers.d.ts +34 -0
- package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
- package/dest/bin/oracle_version_helpers.js +46 -0
- package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
- package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
- package/dest/block_synchronizer/block_stream_source.js +37 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts +22 -16
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +71 -28
- package/dest/config/index.d.ts +9 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +14 -15
- 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/contract_sync_service.js +119 -0
- package/dest/contract/helpers.d.ts +7 -0
- package/dest/contract/helpers.d.ts.map +1 -0
- package/dest/contract/helpers.js +20 -0
- package/dest/contract/skip_sync_contracts.d.ts +11 -0
- package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
- package/dest/contract/skip_sync_contracts.js +18 -0
- package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
- package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +30 -25
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +114 -66
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
- package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
- package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +10 -29
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -11
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -15
- package/dest/contract_function_simulator/index.d.ts +26 -5
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +11 -3
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -4
- 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 +9 -10
- package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +19 -10
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +12 -24
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +11 -9
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -63
- package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
- package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -5
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +8 -12
- package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
- package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/option.js +67 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
- package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
- package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/index.js +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -98
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +139 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.js +1016 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +274 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +7 -6
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +56 -71
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +200 -99
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +183 -76
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +662 -156
- package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +20 -3
- package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
- package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
- package/dest/contract_function_simulator/transient_array_service.js +62 -0
- package/dest/contract_logging.d.ts +9 -4
- package/dest/contract_logging.d.ts.map +1 -1
- package/dest/contract_logging.js +21 -6
- package/dest/debug/pxe_debug_utils.d.ts +4 -9
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +0 -6
- package/dest/entrypoints/client/bundle/index.d.ts +2 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +21 -8
- package/dest/entrypoints/client/lazy/index.d.ts +2 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +21 -8
- 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 +16 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/pxe_creation_options.js +3 -1
- package/dest/entrypoints/server/index.d.ts +7 -4
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +5 -3
- package/dest/entrypoints/server/store.d.ts +18 -0
- package/dest/entrypoints/server/store.d.ts.map +1 -0
- package/dest/entrypoints/server/store.js +28 -0
- package/dest/entrypoints/server/utils.d.ts +4 -3
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +22 -8
- package/dest/error_enriching.d.ts +5 -3
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +15 -12
- package/dest/events/event_service.d.ts +21 -5
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +51 -17
- package/dest/events/private_event_filter_validator.d.ts +3 -2
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +15 -0
- package/dest/hooks/authorize_utility_call.d.ts +41 -0
- package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
- package/dest/hooks/authorize_utility_call.js +4 -0
- package/dest/hooks/execution_hooks.d.ts +62 -0
- package/dest/hooks/execution_hooks.d.ts.map +1 -0
- package/dest/hooks/execution_hooks.js +9 -0
- package/dest/hooks/index.d.ts +5 -0
- package/dest/hooks/index.d.ts.map +1 -0
- package/dest/hooks/index.js +2 -0
- package/dest/hooks/resolve_custom_request.d.ts +23 -0
- package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
- package/dest/hooks/resolve_custom_request.js +3 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
- package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
- package/dest/logs/log_service.d.ts +21 -11
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +181 -82
- 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 +62 -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 +268 -0
- package/dest/notes/note_service.d.ts +34 -7
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +82 -57
- package/dest/notes_filter.d.ts +2 -3
- package/dest/notes_filter.d.ts.map +1 -1
- package/dest/oracle_version.d.ts +4 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +20 -10
- package/dest/private_kernel/batch_planner.d.ts +47 -0
- package/dest/private_kernel/batch_planner.d.ts.map +1 -0
- package/dest/private_kernel/batch_planner.js +104 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.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 +10 -5
- package/dest/private_kernel/hints/test_utils.d.ts +1 -1
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
- package/dest/private_kernel/hints/test_utils.js +3 -4
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +160 -85
- package/dest/private_kernel/private_kernel_oracle.d.ts +12 -10
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +40 -26
- package/dest/pxe.d.ts +169 -54
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +378 -213
- package/dest/storage/address_store/address_store.d.ts +1 -1
- package/dest/storage/address_store/address_store.d.ts.map +1 -1
- package/dest/storage/address_store/address_store.js +2 -1
- package/dest/storage/allowed_scopes.d.ts +6 -0
- package/dest/storage/allowed_scopes.d.ts.map +1 -0
- package/dest/storage/allowed_scopes.js +7 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
- package/dest/storage/anchor_block_store/anchor_block_store.js +9 -7
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.js +671 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
- package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_service.js +47 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_store.js +37 -29
- package/dest/storage/capsule_store/index.d.ts +2 -1
- package/dest/storage/capsule_store/index.d.ts.map +1 -1
- package/dest/storage/capsule_store/index.js +1 -0
- package/dest/storage/contract_store/contract_store.d.ts +27 -24
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +72 -99
- package/dest/storage/contract_store/private_functions_tree.d.ts +1 -1
- package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -1
- package/dest/storage/contract_store/private_functions_tree.js +2 -1
- 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 +411 -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 +202 -172
- package/dest/storage/note_store/stored_note.d.ts +3 -8
- package/dest/storage/note_store/stored_note.d.ts.map +1 -1
- package/dest/storage/note_store/stored_note.js +4 -20
- package/dest/storage/open_pxe_stores.d.ts +35 -0
- package/dest/storage/open_pxe_stores.d.ts.map +1 -0
- package/dest/storage/open_pxe_stores.js +29 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +48 -45
- package/dest/storage/private_event_store/stored_private_event.js +1 -1
- package/dest/storage/store_identity.d.ts +35 -0
- package/dest/storage/store_identity.d.ts.map +1 -0
- package/dest/storage/store_identity.js +44 -0
- package/dest/storage/tagging_store/index.d.ts +2 -2
- package/dest/storage/tagging_store/index.d.ts.map +1 -1
- package/dest/storage/tagging_store/index.js +1 -1
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +63 -31
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +210 -129
- 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 +55 -10
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +55 -36
- package/dest/tagging/index.d.ts +8 -7
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +6 -5
- package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
- package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
- package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +74 -0
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +235 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
- package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
- package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
- package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +8 -6
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +25 -19
- 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 +62 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +17 -6
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +46 -31
- 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 +42 -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 +20 -17
- package/src/bin/check_oracle_version.ts +46 -135
- package/src/bin/index.ts +1 -0
- package/src/bin/oracle_version_helpers.ts +54 -0
- package/src/block_synchronizer/block_stream_source.ts +42 -0
- package/src/block_synchronizer/block_synchronizer.ts +86 -40
- package/src/config/index.ts +16 -9
- package/src/config/package_info.ts +1 -1
- package/src/contract/contract_class_service.ts +45 -0
- package/src/contract/contract_sync_service.ts +179 -0
- package/src/contract/helpers.ts +35 -0
- package/src/contract/skip_sync_contracts.ts +23 -0
- package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +178 -82
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- package/src/contract_function_simulator/execution_note_cache.ts +10 -30
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
- package/src/contract_function_simulator/index.ts +89 -4
- package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
- package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
- package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
- package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +10 -9
- package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
- package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -20
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +14 -64
- package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -11
- package/src/contract_function_simulator/noir-structs/option.ts +75 -0
- package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
- package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
- package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
- package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
- package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
- package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
- package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
- package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
- package/src/contract_function_simulator/oracle/index.ts +1 -15
- package/src/contract_function_simulator/oracle/interfaces.ts +11 -176
- package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
- package/src/contract_function_simulator/oracle/oracle_registry.ts +710 -0
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1052 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +6 -7
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +249 -132
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +978 -249
- package/src/contract_function_simulator/pick_notes.ts +22 -3
- package/src/contract_function_simulator/transient_array_service.ts +91 -0
- package/src/contract_logging.ts +18 -5
- package/src/debug/pxe_debug_utils.ts +4 -12
- package/src/entrypoints/client/bundle/index.ts +1 -1
- package/src/entrypoints/client/bundle/utils.ts +26 -8
- package/src/entrypoints/client/lazy/index.ts +1 -1
- package/src/entrypoints/client/lazy/utils.ts +26 -8
- package/src/entrypoints/client/store.ts +54 -0
- package/src/entrypoints/pxe_creation_options.ts +21 -1
- package/src/entrypoints/server/index.ts +7 -3
- package/src/entrypoints/server/store.ts +47 -0
- package/src/entrypoints/server/utils.ts +39 -14
- package/src/error_enriching.ts +30 -13
- package/src/events/event_service.ts +85 -26
- package/src/events/private_event_filter_validator.ts +21 -1
- package/src/hooks/authorize_utility_call.ts +44 -0
- package/src/hooks/execution_hooks.ts +68 -0
- package/src/hooks/index.ts +13 -0
- package/src/hooks/resolve_custom_request.ts +24 -0
- package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
- package/src/logs/log_service.ts +228 -147
- package/src/messages/tx_resolver_service.ts +81 -0
- package/src/node/benchmarked_node.ts +140 -0
- package/src/node/caching_aztec_node.ts +407 -0
- package/src/notes/note_service.ts +127 -86
- package/src/notes_filter.ts +1 -3
- package/src/oracle_version.ts +20 -10
- package/src/private_kernel/batch_planner.ts +169 -0
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +15 -4
- package/src/private_kernel/hints/test_utils.ts +3 -10
- package/src/private_kernel/private_kernel_execution_prover.ts +246 -117
- package/src/private_kernel/private_kernel_oracle.ts +58 -29
- package/src/pxe.ts +595 -245
- package/src/storage/address_store/address_store.ts +2 -1
- package/src/storage/allowed_scopes.ts +14 -0
- package/src/storage/anchor_block_store/anchor_block_store.ts +9 -7
- package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +26 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +30 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
- package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
- package/src/storage/backwards_compatibility_tests/schema_tests.ts +803 -0
- package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
- package/src/storage/capsule_store/capsule_service.ts +85 -0
- package/src/storage/capsule_store/capsule_store.ts +45 -27
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/contract_store/contract_store.ts +98 -125
- package/src/storage/contract_store/private_functions_tree.ts +2 -1
- package/src/storage/fact_store/fact_service.ts +69 -0
- package/src/storage/fact_store/fact_store.ts +488 -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 +233 -194
- package/src/storage/note_store/stored_note.ts +5 -27
- package/src/storage/open_pxe_stores.ts +52 -0
- package/src/storage/private_event_store/private_event_store.ts +55 -56
- package/src/storage/private_event_store/stored_private_event.ts +1 -1
- package/src/storage/store_identity.ts +72 -0
- package/src/storage/tagging_store/index.ts +1 -1
- package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
- package/src/storage/tagging_store/sender_tagging_store.ts +278 -158
- 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 +115 -50
- package/src/tagging/index.ts +12 -6
- package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
- package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +356 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +32 -22
- package/src/tagging/sender_sync/utils/classify_pending_txs.ts +92 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +55 -39
- package/src/tagging/sender_sync/utils/resolve_pending_txs.ts +65 -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/access_scopes.d.ts +0 -9
- package/dest/access_scopes.d.ts.map +0 -1
- package/dest/access_scopes.js +0 -6
- package/dest/contract_function_simulator/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 -60
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/oracle.js +0 -411
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -80
- package/dest/contract_sync/contract_sync_service.d.ts +0 -43
- package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
- package/dest/contract_sync/contract_sync_service.js +0 -97
- package/dest/contract_sync/helpers.d.ts +0 -29
- package/dest/contract_sync/helpers.d.ts.map +0 -1
- package/dest/contract_sync/helpers.js +0 -55
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
- package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +0 -11
- 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 -29
- package/src/access_scopes.ts +0 -9
- package/src/contract_function_simulator/benchmarked_node.ts +0 -103
- package/src/contract_function_simulator/oracle/oracle.ts +0 -665
- package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
- package/src/contract_sync/contract_sync_service.ts +0 -152
- package/src/contract_sync/helpers.ts +0 -98
- package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -140
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +0 -36
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { FunctionArtifactWithContractName, FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
+
import type { ContractInstancePreimageWithAddress } from '@aztec/stdlib/contract';
|
|
5
|
+
import type { BlockHeader, ContractOverrides } from '@aztec/stdlib/tx';
|
|
6
|
+
|
|
7
|
+
import type { ContractClassService } from '../contract/contract_class_service.js';
|
|
8
|
+
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Per-run view of contract data for a single simulation, bound to its anchor block.
|
|
12
|
+
*
|
|
13
|
+
* The {@link ContractStore} is pure class-id-keyed storage and has no notion of which class an address runs. This
|
|
14
|
+
* class bridges that gap: it resolves an address to its current class id (via the {@link ContractClassService}
|
|
15
|
+
* at the run's anchor block) and then serves artifacts from the store. It is also the single place contract
|
|
16
|
+
* overrides are applied — when an address is overridden, both its instance and its class id come from the override
|
|
17
|
+
* rather than the chain, so a simulation can execute different bytecode at that address. Overrides are only set for
|
|
18
|
+
* `simulateTx` (which skips the kernels), so the override path never reaches proving.
|
|
19
|
+
*/
|
|
20
|
+
export class AnchoredContractData {
|
|
21
|
+
constructor(
|
|
22
|
+
private readonly store: ContractStore,
|
|
23
|
+
private readonly contractClassService: ContractClassService,
|
|
24
|
+
private readonly anchorBlockHeader: BlockHeader,
|
|
25
|
+
private readonly overrides?: ContractOverrides,
|
|
26
|
+
) {}
|
|
27
|
+
|
|
28
|
+
/** Returns the address preimage of the instance at `address`, from the override if any, else from storage. */
|
|
29
|
+
getContractInstance(address: AztecAddress): Promise<ContractInstancePreimageWithAddress | undefined> {
|
|
30
|
+
const override = this.overrides?.[address.toString()];
|
|
31
|
+
if (override) {
|
|
32
|
+
return Promise.resolve(override.instance);
|
|
33
|
+
}
|
|
34
|
+
return this.store.getContractInstance(address);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Resolves the class id `address` runs in this simulation: the override's class if overridden, else resolved against
|
|
39
|
+
* the chain at the anchor block.
|
|
40
|
+
*/
|
|
41
|
+
getCurrentClassId(address: AztecAddress): Promise<Fr | undefined> {
|
|
42
|
+
const override = this.overrides?.[address.toString()];
|
|
43
|
+
if (override) {
|
|
44
|
+
return Promise.resolve(override.instance.currentContractClassId);
|
|
45
|
+
}
|
|
46
|
+
return this.contractClassService.getCurrentClassId(address, this.anchorBlockHeader);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async getFunctionArtifact(
|
|
50
|
+
address: AztecAddress,
|
|
51
|
+
selector: FunctionSelector,
|
|
52
|
+
): Promise<FunctionArtifactWithContractName | undefined> {
|
|
53
|
+
const classId = await this.getCurrentClassId(address);
|
|
54
|
+
return classId ? this.store.getFunctionArtifact(classId, selector) : undefined;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async getFunctionArtifactWithDebugMetadata(
|
|
58
|
+
address: AztecAddress,
|
|
59
|
+
selector: FunctionSelector,
|
|
60
|
+
): Promise<FunctionArtifactWithContractName | undefined> {
|
|
61
|
+
const classId = await this.getCurrentClassId(address);
|
|
62
|
+
return classId ? this.store.getFunctionArtifactWithDebugMetadata(classId, selector) : undefined;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async getDebugContractName(address: AztecAddress): Promise<string | undefined> {
|
|
66
|
+
const classId = await this.getCurrentClassId(address);
|
|
67
|
+
return classId ? this.store.getDebugContractName(classId) : undefined;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string> {
|
|
71
|
+
const classId = await this.getCurrentClassId(address);
|
|
72
|
+
return classId ? this.store.getDebugFunctionName(classId, selector) : `${address}:${selector}`;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -17,13 +17,16 @@ import {
|
|
|
17
17
|
MAX_NULLIFIERS_PER_TX,
|
|
18
18
|
MAX_NULLIFIER_READ_REQUESTS_PER_TX,
|
|
19
19
|
MAX_PRIVATE_LOGS_PER_TX,
|
|
20
|
+
MAX_TX_LIFETIME,
|
|
20
21
|
PRIVATE_TX_L2_GAS_OVERHEAD,
|
|
22
|
+
PUBLIC_DATA_WRITE_LENGTH,
|
|
21
23
|
PUBLIC_TX_L2_GAS_OVERHEAD,
|
|
22
24
|
TX_DA_GAS_OVERHEAD,
|
|
23
25
|
} from '@aztec/constants';
|
|
24
26
|
import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
|
|
25
27
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
26
28
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
29
|
+
import { allToCompletion } from '@aztec/foundation/promise';
|
|
27
30
|
import { Timer } from '@aztec/foundation/timer';
|
|
28
31
|
import type { KeyStore } from '@aztec/key-store';
|
|
29
32
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
@@ -41,7 +44,7 @@ import type { FunctionCall } from '@aztec/stdlib/abi';
|
|
|
41
44
|
import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
42
45
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
43
46
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
44
|
-
import type { BlockParameter } from '@aztec/stdlib/block';
|
|
47
|
+
import type { BlockParameter, L2TipsProvider } from '@aztec/stdlib/block';
|
|
45
48
|
import { Gas } from '@aztec/stdlib/gas';
|
|
46
49
|
import {
|
|
47
50
|
computeNoteHashNonce,
|
|
@@ -75,10 +78,13 @@ import {
|
|
|
75
78
|
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
76
79
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
77
80
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
81
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
78
82
|
import {
|
|
79
83
|
BlockHeader,
|
|
80
84
|
CallContext,
|
|
85
|
+
type ContractOverrides,
|
|
81
86
|
HashedValues,
|
|
87
|
+
type OffchainEffect,
|
|
82
88
|
PrivateExecutionResult,
|
|
83
89
|
TxConstantData,
|
|
84
90
|
TxExecutionRequest,
|
|
@@ -87,31 +93,33 @@ import {
|
|
|
87
93
|
getFinalMinRevertibleSideEffectCounter,
|
|
88
94
|
} from '@aztec/stdlib/tx';
|
|
89
95
|
|
|
90
|
-
import type {
|
|
91
|
-
import type { ContractSyncService } from '../
|
|
96
|
+
import type { ContractClassService } from '../contract/contract_class_service.js';
|
|
97
|
+
import type { ContractSyncService } from '../contract/contract_sync_service.js';
|
|
98
|
+
import type { ExecutionHooks } from '../hooks/index.js';
|
|
99
|
+
import type { TxResolverService } from '../messages/tx_resolver_service.js';
|
|
92
100
|
import type { AddressStore } from '../storage/address_store/address_store.js';
|
|
101
|
+
import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
|
|
93
102
|
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
94
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';
|
|
95
106
|
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
96
107
|
import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
97
108
|
import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
|
|
98
|
-
import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
|
|
99
109
|
import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
|
|
100
|
-
import type {
|
|
110
|
+
import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
|
|
111
|
+
import { AnchoredContractData } from './anchored_contract_data.js';
|
|
101
112
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
102
113
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
103
114
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
104
|
-
import {
|
|
115
|
+
import { buildACIRCallback } from './oracle/acir_callback.js';
|
|
105
116
|
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
106
117
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
107
118
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
119
|
+
import { TransientArrayService } from './transient_array_service.js';
|
|
108
120
|
|
|
109
121
|
/** Options for ContractFunctionSimulator.run. */
|
|
110
122
|
export type ContractSimulatorRunOpts = {
|
|
111
|
-
/** The address of the contract (should match request.origin). */
|
|
112
|
-
contractAddress: AztecAddress;
|
|
113
|
-
/** The function selector of the entry point. */
|
|
114
|
-
selector: FunctionSelector;
|
|
115
123
|
/** The address calling the function. Can be replaced to simulate a call from another contract or account. */
|
|
116
124
|
msgSender?: AztecAddress;
|
|
117
125
|
/** The block header to use as base state for this run. */
|
|
@@ -119,7 +127,7 @@ export type ContractSimulatorRunOpts = {
|
|
|
119
127
|
/** The address used as a tagging sender when emitting private logs. */
|
|
120
128
|
senderForTags?: AztecAddress;
|
|
121
129
|
/** The accounts whose notes we can access in this call. */
|
|
122
|
-
scopes:
|
|
130
|
+
scopes: AztecAddress[];
|
|
123
131
|
/** The job ID for staged writes. */
|
|
124
132
|
jobId: string;
|
|
125
133
|
};
|
|
@@ -127,17 +135,24 @@ export type ContractSimulatorRunOpts = {
|
|
|
127
135
|
/** Args for ContractFunctionSimulator constructor. */
|
|
128
136
|
export type ContractFunctionSimulatorArgs = {
|
|
129
137
|
contractStore: ContractStore;
|
|
138
|
+
contractClassService: ContractClassService;
|
|
139
|
+
/** Per-simulation contract overrides. */
|
|
140
|
+
overrides?: ContractOverrides;
|
|
130
141
|
noteStore: NoteStore;
|
|
131
142
|
keyStore: KeyStore;
|
|
132
143
|
addressStore: AddressStore;
|
|
133
144
|
aztecNode: AztecNode;
|
|
145
|
+
l2TipsStore: L2TipsProvider;
|
|
134
146
|
senderTaggingStore: SenderTaggingStore;
|
|
135
147
|
recipientTaggingStore: RecipientTaggingStore;
|
|
136
|
-
|
|
148
|
+
taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
137
149
|
capsuleStore: CapsuleStore;
|
|
150
|
+
factStore: FactStore;
|
|
138
151
|
privateEventStore: PrivateEventStore;
|
|
139
152
|
simulator: CircuitSimulator;
|
|
140
153
|
contractSyncService: ContractSyncService;
|
|
154
|
+
txResolver: TxResolverService;
|
|
155
|
+
hooks?: ExecutionHooks;
|
|
141
156
|
};
|
|
142
157
|
|
|
143
158
|
/**
|
|
@@ -146,31 +161,43 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
146
161
|
export class ContractFunctionSimulator {
|
|
147
162
|
private readonly log: Logger;
|
|
148
163
|
private readonly contractStore: ContractStore;
|
|
164
|
+
private readonly contractClassService: ContractClassService;
|
|
165
|
+
private readonly overrides: ContractOverrides | undefined;
|
|
149
166
|
private readonly noteStore: NoteStore;
|
|
150
167
|
private readonly keyStore: KeyStore;
|
|
151
168
|
private readonly addressStore: AddressStore;
|
|
152
169
|
private readonly aztecNode: AztecNode;
|
|
170
|
+
private readonly l2TipsStore: L2TipsProvider;
|
|
153
171
|
private readonly senderTaggingStore: SenderTaggingStore;
|
|
154
172
|
private readonly recipientTaggingStore: RecipientTaggingStore;
|
|
155
|
-
private readonly
|
|
173
|
+
private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
156
174
|
private readonly capsuleStore: CapsuleStore;
|
|
175
|
+
private readonly factStore: FactStore;
|
|
157
176
|
private readonly privateEventStore: PrivateEventStore;
|
|
158
177
|
private readonly simulator: CircuitSimulator;
|
|
159
178
|
private readonly contractSyncService: ContractSyncService;
|
|
179
|
+
private readonly txResolver: TxResolverService;
|
|
180
|
+
private readonly hooks: ExecutionHooks | undefined;
|
|
160
181
|
|
|
161
182
|
constructor(args: ContractFunctionSimulatorArgs) {
|
|
162
183
|
this.contractStore = args.contractStore;
|
|
184
|
+
this.contractClassService = args.contractClassService;
|
|
185
|
+
this.overrides = args.overrides;
|
|
163
186
|
this.noteStore = args.noteStore;
|
|
164
187
|
this.keyStore = args.keyStore;
|
|
165
188
|
this.addressStore = args.addressStore;
|
|
166
189
|
this.aztecNode = args.aztecNode;
|
|
190
|
+
this.l2TipsStore = args.l2TipsStore;
|
|
167
191
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
168
192
|
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
169
|
-
this.
|
|
193
|
+
this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
|
|
170
194
|
this.capsuleStore = args.capsuleStore;
|
|
195
|
+
this.factStore = args.factStore;
|
|
171
196
|
this.privateEventStore = args.privateEventStore;
|
|
172
197
|
this.simulator = args.simulator;
|
|
173
198
|
this.contractSyncService = args.contractSyncService;
|
|
199
|
+
this.txResolver = args.txResolver;
|
|
200
|
+
this.hooks = args.hooks;
|
|
174
201
|
this.log = createLogger('simulator');
|
|
175
202
|
}
|
|
176
203
|
|
|
@@ -181,9 +208,7 @@ export class ContractFunctionSimulator {
|
|
|
181
208
|
public async run(
|
|
182
209
|
request: TxExecutionRequest,
|
|
183
210
|
{
|
|
184
|
-
|
|
185
|
-
selector,
|
|
186
|
-
msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
|
|
211
|
+
msgSender = AztecAddress.NULL_MSG_SENDER,
|
|
187
212
|
anchorBlockHeader,
|
|
188
213
|
senderForTags,
|
|
189
214
|
scopes,
|
|
@@ -192,18 +217,30 @@ export class ContractFunctionSimulator {
|
|
|
192
217
|
): Promise<PrivateExecutionResult> {
|
|
193
218
|
const simulatorSetupTimer = new Timer();
|
|
194
219
|
|
|
195
|
-
const
|
|
220
|
+
const contractAddress = request.origin;
|
|
196
221
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
222
|
+
const anchoredContractData = new AnchoredContractData(
|
|
223
|
+
this.contractStore,
|
|
224
|
+
this.contractClassService,
|
|
225
|
+
anchorBlockHeader,
|
|
226
|
+
this.overrides,
|
|
227
|
+
);
|
|
200
228
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
229
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(
|
|
230
|
+
contractAddress,
|
|
231
|
+
request.functionSelector,
|
|
232
|
+
);
|
|
233
|
+
if (!entryPointArtifact) {
|
|
234
|
+
throw new Error(
|
|
235
|
+
`Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` +
|
|
236
|
+
`Register it via wallet.registerContract(...).`,
|
|
204
237
|
);
|
|
205
238
|
}
|
|
206
239
|
|
|
240
|
+
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
241
|
+
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
242
|
+
}
|
|
243
|
+
|
|
207
244
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
208
245
|
const startSideEffectCounter = 2;
|
|
209
246
|
|
|
@@ -218,9 +255,15 @@ export class ContractFunctionSimulator {
|
|
|
218
255
|
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
219
256
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
220
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
|
+
|
|
221
263
|
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
222
264
|
argsHash: request.firstCallArgsHash,
|
|
223
265
|
txContext: request.txContext,
|
|
266
|
+
txRequestSalt: request.salt,
|
|
224
267
|
callContext,
|
|
225
268
|
anchorBlockHeader,
|
|
226
269
|
utilityExecutor: async (call, execScopes) => {
|
|
@@ -231,16 +274,18 @@ export class ContractFunctionSimulator {
|
|
|
231
274
|
executionCache: HashedValuesCache.create(request.argsOfCalls),
|
|
232
275
|
noteCache,
|
|
233
276
|
taggingIndexCache,
|
|
234
|
-
|
|
277
|
+
anchoredContractData,
|
|
235
278
|
noteStore: this.noteStore,
|
|
236
279
|
keyStore: this.keyStore,
|
|
237
280
|
addressStore: this.addressStore,
|
|
238
281
|
aztecNode: this.aztecNode,
|
|
239
282
|
senderTaggingStore: this.senderTaggingStore,
|
|
240
283
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
241
|
-
|
|
242
|
-
|
|
284
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
285
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
286
|
+
factService: new FactService(this.factStore, scopes),
|
|
243
287
|
privateEventStore: this.privateEventStore,
|
|
288
|
+
txResolver: this.txResolver,
|
|
244
289
|
contractSyncService: this.contractSyncService,
|
|
245
290
|
jobId,
|
|
246
291
|
totalPublicCalldataCount: 0,
|
|
@@ -248,6 +293,9 @@ export class ContractFunctionSimulator {
|
|
|
248
293
|
scopes,
|
|
249
294
|
senderForTags,
|
|
250
295
|
simulator: this.simulator,
|
|
296
|
+
l2TipsStore: this.l2TipsStore,
|
|
297
|
+
hooks: this.hooks,
|
|
298
|
+
transientArrayService,
|
|
251
299
|
});
|
|
252
300
|
|
|
253
301
|
const setupTime = simulatorSetupTimer.ms();
|
|
@@ -266,8 +314,7 @@ export class ContractFunctionSimulator {
|
|
|
266
314
|
);
|
|
267
315
|
const simulatorTeardownTimer = new Timer();
|
|
268
316
|
|
|
269
|
-
noteCache.
|
|
270
|
-
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
317
|
+
const firstNullifier = noteCache.getNonceGenerator();
|
|
271
318
|
|
|
272
319
|
const publicCallRequests = collectNested([executionResult], r =>
|
|
273
320
|
r.publicInputs.publicCallRequests
|
|
@@ -275,9 +322,9 @@ export class ContractFunctionSimulator {
|
|
|
275
322
|
.map(r => r.inner)
|
|
276
323
|
.concat(r.publicInputs.publicTeardownCallRequest.isEmpty() ? [] : [r.publicInputs.publicTeardownCallRequest]),
|
|
277
324
|
);
|
|
278
|
-
const publicFunctionsCalldata = await
|
|
325
|
+
const publicFunctionsCalldata = await allToCompletion(
|
|
279
326
|
publicCallRequests.map(async r => {
|
|
280
|
-
const calldata = await privateExecutionOracle.
|
|
327
|
+
const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
|
|
281
328
|
return new HashedValues(calldata, r.calldataHash);
|
|
282
329
|
}),
|
|
283
330
|
);
|
|
@@ -290,53 +337,79 @@ export class ContractFunctionSimulator {
|
|
|
290
337
|
}
|
|
291
338
|
|
|
292
339
|
// Not to be confused with a PrivateCallExecutionResult. This is a superset
|
|
293
|
-
// of the PrivateCallExecutionResult, containing also
|
|
340
|
+
// of the PrivateCallExecutionResult, containing also firstNullifier
|
|
294
341
|
// and publicFunctionsCalldata.
|
|
295
|
-
return new PrivateExecutionResult(executionResult,
|
|
342
|
+
return new PrivateExecutionResult(executionResult, firstNullifier, publicFunctionsCalldata);
|
|
296
343
|
} catch (err) {
|
|
297
344
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
298
345
|
}
|
|
299
346
|
}
|
|
300
347
|
|
|
301
|
-
// docs:start:execute_utility_function
|
|
302
348
|
/**
|
|
303
349
|
* Runs a utility function.
|
|
304
350
|
* @param call - The function call to execute.
|
|
305
|
-
* @param authwits - Authentication witnesses required for the function call.
|
|
306
|
-
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
307
|
-
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
308
|
-
* accounts if not specified.
|
|
309
351
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
310
352
|
*/
|
|
311
353
|
public async runUtility(
|
|
312
354
|
call: FunctionCall,
|
|
313
355
|
authwits: AuthWitness[],
|
|
314
356
|
anchorBlockHeader: BlockHeader,
|
|
315
|
-
scopes:
|
|
357
|
+
scopes: AztecAddress[],
|
|
316
358
|
jobId: string,
|
|
317
|
-
): Promise<Fr[]> {
|
|
318
|
-
const
|
|
359
|
+
): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
|
|
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
|
+
}
|
|
319
374
|
|
|
320
375
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
321
376
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
322
377
|
}
|
|
323
378
|
|
|
379
|
+
const utilityExecutor = async (syncCall: FunctionCall, execScopes: AztecAddress[]) => {
|
|
380
|
+
await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
|
|
381
|
+
};
|
|
382
|
+
|
|
324
383
|
const oracle = new UtilityExecutionOracle({
|
|
325
|
-
|
|
384
|
+
callContext: CallContext.from({
|
|
385
|
+
msgSender: AztecAddress.NULL_MSG_SENDER,
|
|
386
|
+
contractAddress: call.to,
|
|
387
|
+
functionSelector: call.selector,
|
|
388
|
+
isStaticCall: true,
|
|
389
|
+
}),
|
|
326
390
|
authWitnesses: authwits,
|
|
327
391
|
capsules: [],
|
|
328
392
|
anchorBlockHeader,
|
|
329
|
-
|
|
393
|
+
anchoredContractData,
|
|
330
394
|
noteStore: this.noteStore,
|
|
331
395
|
keyStore: this.keyStore,
|
|
332
396
|
addressStore: this.addressStore,
|
|
333
397
|
aztecNode: this.aztecNode,
|
|
334
398
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
335
|
-
|
|
336
|
-
|
|
399
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
400
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
401
|
+
factService: new FactService(this.factStore, scopes),
|
|
337
402
|
privateEventStore: this.privateEventStore,
|
|
403
|
+
txResolver: this.txResolver,
|
|
404
|
+
contractSyncService: this.contractSyncService,
|
|
405
|
+
l2TipsStore: this.l2TipsStore,
|
|
338
406
|
jobId,
|
|
339
407
|
scopes,
|
|
408
|
+
simulator: this.simulator,
|
|
409
|
+
hooks: this.hooks,
|
|
410
|
+
utilityExecutor,
|
|
411
|
+
// Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
|
|
412
|
+
transientArrayService: new TransientArrayService(),
|
|
340
413
|
});
|
|
341
414
|
|
|
342
415
|
try {
|
|
@@ -347,7 +420,7 @@ export class ContractFunctionSimulator {
|
|
|
347
420
|
|
|
348
421
|
const initialWitness = toACVMWitness(0, call.args);
|
|
349
422
|
const acirExecutionResult = await this.simulator
|
|
350
|
-
.executeUserCircuit(initialWitness, entryPointArtifact,
|
|
423
|
+
.executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle))
|
|
351
424
|
.catch((err: Error) => {
|
|
352
425
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
353
426
|
throw new ExecutionError(
|
|
@@ -362,28 +435,14 @@ export class ContractFunctionSimulator {
|
|
|
362
435
|
});
|
|
363
436
|
|
|
364
437
|
this.log.verbose(`Utility execution for ${call.to}.${call.selector} completed`);
|
|
365
|
-
return
|
|
438
|
+
return {
|
|
439
|
+
result: witnessMapToFields(acirExecutionResult.returnWitness),
|
|
440
|
+
offchainEffects: oracle.getOffchainEffects(),
|
|
441
|
+
};
|
|
366
442
|
} catch (err) {
|
|
367
443
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
368
444
|
}
|
|
369
445
|
}
|
|
370
|
-
// docs:end:execute_utility_function
|
|
371
|
-
|
|
372
|
-
/**
|
|
373
|
-
* Returns the execution statistics collected during the simulator run.
|
|
374
|
-
* @returns The execution statistics.
|
|
375
|
-
*/
|
|
376
|
-
getStats() {
|
|
377
|
-
const nodeRPCCalls =
|
|
378
|
-
typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
|
|
379
|
-
? (this.aztecNode as BenchmarkedNode).getStats()
|
|
380
|
-
: {
|
|
381
|
-
perMethod: {},
|
|
382
|
-
roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
|
|
383
|
-
};
|
|
384
|
-
|
|
385
|
-
return { nodeRPCCalls };
|
|
386
|
-
}
|
|
387
446
|
}
|
|
388
447
|
|
|
389
448
|
class OrderedSideEffect<T> {
|
|
@@ -432,14 +491,34 @@ export async function generateSimulatedProvingResult(
|
|
|
432
491
|
|
|
433
492
|
let publicTeardownCallRequest;
|
|
434
493
|
|
|
494
|
+
// We set expiration timestamp to anchor_block_timestamp + MAX_TX_LIFETIME (24h) just like kernels do
|
|
495
|
+
let expirationTimestamp =
|
|
496
|
+
privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.globalVariables.timestamp +
|
|
497
|
+
BigInt(MAX_TX_LIFETIME);
|
|
498
|
+
|
|
499
|
+
let feePayer = AztecAddress.zero();
|
|
500
|
+
|
|
435
501
|
const executions = [privateExecutionResult.entrypoint];
|
|
436
502
|
|
|
437
503
|
while (executions.length !== 0) {
|
|
438
504
|
const execution = executions.shift()!;
|
|
439
505
|
executions.unshift(...execution!.nestedExecutionResults);
|
|
440
506
|
|
|
507
|
+
// Just like kernels we overwrite the default value if the call sets it.
|
|
508
|
+
const callExpirationTimestamp = execution.publicInputs.expirationTimestamp;
|
|
509
|
+
if (callExpirationTimestamp !== 0n && callExpirationTimestamp < expirationTimestamp) {
|
|
510
|
+
expirationTimestamp = callExpirationTimestamp;
|
|
511
|
+
}
|
|
512
|
+
|
|
441
513
|
const { contractAddress } = execution.publicInputs.callContext;
|
|
442
514
|
|
|
515
|
+
if (execution.publicInputs.isFeePayer) {
|
|
516
|
+
if (!feePayer.isZero()) {
|
|
517
|
+
throw new Error('Multiple fee payers found in private execution result');
|
|
518
|
+
}
|
|
519
|
+
feePayer = contractAddress;
|
|
520
|
+
}
|
|
521
|
+
|
|
443
522
|
scopedNoteHashes.push(
|
|
444
523
|
...execution.publicInputs.noteHashes
|
|
445
524
|
.getActiveItems()
|
|
@@ -449,7 +528,7 @@ export async function generateSimulatedProvingResult(
|
|
|
449
528
|
scopedNullifiers.push(...execution.publicInputs.nullifiers.getActiveItems().map(n => n.scope(contractAddress)));
|
|
450
529
|
|
|
451
530
|
taggedPrivateLogs.push(
|
|
452
|
-
...(await
|
|
531
|
+
...(await allToCompletion(
|
|
453
532
|
execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
|
|
454
533
|
metadata.log.fields[0] = await computeSiloedPrivateLogFirstField(contractAddress, metadata.log.fields[0]);
|
|
455
534
|
return new OrderedSideEffect(metadata, metadata.counter);
|
|
@@ -528,12 +607,12 @@ export async function generateSimulatedProvingResult(
|
|
|
528
607
|
scopedNullifiersCLA,
|
|
529
608
|
);
|
|
530
609
|
|
|
531
|
-
const siloedNoteHashes = await
|
|
610
|
+
const siloedNoteHashes = await allToCompletion(
|
|
532
611
|
filteredNoteHashes
|
|
533
612
|
.sort((a, b) => a.counter - b.counter)
|
|
534
613
|
.map(async nh => new OrderedSideEffect(await siloNoteHash(nh.contractAddress, nh.value), nh.counter)),
|
|
535
614
|
);
|
|
536
|
-
const siloedNullifiers = await
|
|
615
|
+
const siloedNullifiers = await allToCompletion(
|
|
537
616
|
filteredNullifiers
|
|
538
617
|
.sort((a, b) => a.counter - b.counter)
|
|
539
618
|
.map(async n => new OrderedSideEffect(await siloNullifier(n.contractAddress, n.value), n.counter)),
|
|
@@ -560,17 +639,17 @@ export async function generateSimulatedProvingResult(
|
|
|
560
639
|
siloedNullifiers,
|
|
561
640
|
minRevertibleSideEffectCounter,
|
|
562
641
|
);
|
|
642
|
+
// The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
|
|
643
|
+
// init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
|
|
644
|
+
// the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
|
|
645
|
+
// nullifier.
|
|
563
646
|
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
564
|
-
|
|
565
|
-
nonRevertibleNullifiers.push(nonceGenerator);
|
|
566
|
-
} else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
|
|
567
|
-
throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
|
|
568
|
-
}
|
|
647
|
+
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
569
648
|
|
|
570
649
|
if (isPrivateOnlyTx) {
|
|
571
650
|
// We must make the note hashes unique by using the
|
|
572
651
|
// nonce generator and their index in the tx.
|
|
573
|
-
const uniqueNoteHashes = await
|
|
652
|
+
const uniqueNoteHashes = await allToCompletion(
|
|
574
653
|
siloedNoteHashes.map(async (orderedSideEffect, i) => {
|
|
575
654
|
const siloedNoteHash = orderedSideEffect.sideEffect;
|
|
576
655
|
const nonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
@@ -600,7 +679,7 @@ export async function generateSimulatedProvingResult(
|
|
|
600
679
|
siloedNoteHashes,
|
|
601
680
|
minRevertibleSideEffectCounter,
|
|
602
681
|
);
|
|
603
|
-
const nonRevertibleUniqueNoteHashes = await
|
|
682
|
+
const nonRevertibleUniqueNoteHashes = await allToCompletion(
|
|
604
683
|
nonRevertibleNoteHashes.map(async (noteHash, i) => {
|
|
605
684
|
const nonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
606
685
|
return await computeUniqueNoteHash(nonce, noteHash);
|
|
@@ -660,8 +739,8 @@ export async function generateSimulatedProvingResult(
|
|
|
660
739
|
daGas: TX_DA_GAS_OVERHEAD,
|
|
661
740
|
}),
|
|
662
741
|
),
|
|
663
|
-
/*feePayer=*/
|
|
664
|
-
/*expirationTimestamp=*/
|
|
742
|
+
/*feePayer=*/ feePayer,
|
|
743
|
+
/*expirationTimestamp=*/ expirationTimestamp,
|
|
665
744
|
hasPublicCalls ? inputsForPublic : undefined,
|
|
666
745
|
!hasPublicCalls ? inputsForRollup : undefined,
|
|
667
746
|
);
|
|
@@ -716,7 +795,7 @@ function squashTransientSideEffects(
|
|
|
716
795
|
* at the tx's anchor block, mimicking the behavior of the kernels
|
|
717
796
|
*/
|
|
718
797
|
async function verifyReadRequests(
|
|
719
|
-
node: Pick<AztecNode, '
|
|
798
|
+
node: Pick<AztecNode, 'findLeavesIndexes'>,
|
|
720
799
|
anchorBlockHash: BlockParameter,
|
|
721
800
|
noteHashReadRequests: ScopedReadRequest[],
|
|
722
801
|
nullifierReadRequests: ScopedReadRequest[],
|
|
@@ -749,13 +828,25 @@ async function verifyReadRequests(
|
|
|
749
828
|
}
|
|
750
829
|
}
|
|
751
830
|
|
|
752
|
-
const [
|
|
753
|
-
|
|
754
|
-
|
|
831
|
+
const [noteHashResults, nullifierResults] = await allToCompletion([
|
|
832
|
+
settledNoteHashReads.length > 0
|
|
833
|
+
? node.findLeavesIndexes(
|
|
834
|
+
anchorBlockHash,
|
|
835
|
+
MerkleTreeId.NOTE_HASH_TREE,
|
|
836
|
+
settledNoteHashReads.map(({ value }) => value),
|
|
837
|
+
)
|
|
838
|
+
: [],
|
|
839
|
+
settledNullifierReads.length > 0
|
|
840
|
+
? node.findLeavesIndexes(
|
|
841
|
+
anchorBlockHash,
|
|
842
|
+
MerkleTreeId.NULLIFIER_TREE,
|
|
843
|
+
settledNullifierReads.map(({ value }) => value),
|
|
844
|
+
)
|
|
845
|
+
: [],
|
|
755
846
|
]);
|
|
756
847
|
|
|
757
848
|
for (let i = 0; i < settledNoteHashReads.length; i++) {
|
|
758
|
-
if (!
|
|
849
|
+
if (!noteHashResults[i]) {
|
|
759
850
|
throw new Error(
|
|
760
851
|
`Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`,
|
|
761
852
|
);
|
|
@@ -763,7 +854,7 @@ async function verifyReadRequests(
|
|
|
763
854
|
}
|
|
764
855
|
|
|
765
856
|
for (let i = 0; i < settledNullifierReads.length; i++) {
|
|
766
|
-
if (!
|
|
857
|
+
if (!nullifierResults[i]) {
|
|
767
858
|
throw new Error(
|
|
768
859
|
`Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`,
|
|
769
860
|
);
|
|
@@ -816,6 +907,11 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
|
|
|
816
907
|
);
|
|
817
908
|
meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
|
|
818
909
|
|
|
910
|
+
if (isPrivateOnlyTx) {
|
|
911
|
+
// The public data write that the private tx base rollup always performs to update the fee payer's balance.
|
|
912
|
+
meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
|
|
913
|
+
}
|
|
914
|
+
|
|
819
915
|
const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
|
|
820
916
|
|
|
821
917
|
if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
|