@aztec/pxe 0.0.1-commit.b655e406 → 0.0.1-commit.b8a057fa
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 +1 -1
- package/dest/bin/check_oracle_version.js +53 -29
- package/dest/bin/index.d.ts +2 -0
- package/dest/bin/index.d.ts.map +1 -0
- package/dest/bin/index.js +1 -0
- package/dest/bin/oracle_version_helpers.d.ts +51 -0
- package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
- package/dest/bin/oracle_version_helpers.js +254 -0
- package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
- package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
- package/dest/block_synchronizer/block_stream_source.js +37 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts +53 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/block_synchronizer/block_synchronizer.js +209 -0
- package/dest/block_synchronizer/index.d.ts +2 -0
- package/dest/block_synchronizer/index.d.ts.map +1 -0
- package/dest/block_synchronizer/index.js +1 -0
- package/dest/config/index.d.ts +14 -13
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +25 -15
- package/dest/config/package_info.d.ts +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract/contract_class_service.d.ts +31 -0
- package/dest/contract/contract_class_service.d.ts.map +1 -0
- package/dest/contract/contract_class_service.js +68 -0
- package/dest/contract/contract_sync_service.d.ts +48 -0
- package/dest/contract/contract_sync_service.d.ts.map +1 -0
- package/dest/contract/contract_sync_service.js +116 -0
- package/dest/contract/helpers.d.ts +7 -0
- package/dest/contract/helpers.d.ts.map +1 -0
- package/dest/contract/helpers.js +20 -0
- package/dest/contract_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/benchmarked_node.d.ts +9 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/benchmarked_node.js +77 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +93 -29
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +307 -97
- 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 +22 -17
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +41 -36
- 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/hashed_values_cache.d.ts +2 -2
- package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.d.ts +27 -6
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +13 -4
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +6 -6
- 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 +13 -11
- package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +21 -11
- 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 -23
- 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 +7 -7
- 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 +16 -11
- 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 +43 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +21 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.js +50 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +14 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +7 -18
- 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 -31
- 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 -88
- 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 +74 -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 +14 -8
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +17 -12
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +136 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.js +989 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +222 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -27
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +8 -43
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +92 -103
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +291 -138
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +228 -62
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +632 -129
- package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +21 -4
- package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
- package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
- package/dest/contract_function_simulator/transient_array_service.js +62 -0
- package/dest/contract_logging.d.ts +27 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +38 -0
- package/dest/debug/pxe_debug_utils.d.ts +40 -0
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
- package/dest/debug/pxe_debug_utils.js +42 -0
- package/dest/entrypoints/client/bundle/index.d.ts +3 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +2 -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 +49 -13
- package/dest/entrypoints/client/lazy/index.d.ts +3 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +2 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +50 -14
- package/dest/entrypoints/pxe_creation_options.d.ts +22 -4
- 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 +9 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +7 -2
- package/dest/entrypoints/server/utils.d.ts +4 -3
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +57 -31
- package/dest/error_enriching.d.ts +6 -4
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +13 -11
- package/dest/events/event_service.d.ts +24 -0
- package/dest/events/event_service.d.ts.map +1 -0
- package/dest/events/event_service.js +77 -0
- package/dest/events/index.d.ts +2 -0
- package/dest/events/index.d.ts.map +1 -0
- package/dest/events/index.js +1 -0
- package/dest/events/private_event_filter_validator.d.ts +10 -0
- package/dest/events/private_event_filter_validator.d.ts.map +1 -0
- package/dest/events/private_event_filter_validator.js +53 -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 +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 +48 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
- package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
- package/dest/job_coordinator/job_coordinator.d.ts +75 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +94 -0
- package/dest/logs/log_service.d.ts +30 -0
- package/dest/logs/log_service.d.ts.map +1 -0
- package/dest/logs/log_service.js +223 -0
- package/dest/messages/tx_resolver_service.d.ts +17 -0
- package/dest/messages/tx_resolver_service.d.ts.map +1 -0
- package/dest/messages/tx_resolver_service.js +55 -0
- package/dest/notes/index.d.ts +2 -0
- package/dest/notes/index.d.ts.map +1 -0
- package/dest/notes/index.js +1 -0
- package/dest/notes/note_service.d.ts +70 -0
- package/dest/notes/note_service.d.ts.map +1 -0
- package/dest/notes/note_service.js +172 -0
- package/dest/notes_filter.d.ts +24 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +4 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +20 -9
- package/dest/private_kernel/batch_planner.d.ts +47 -0
- package/dest/private_kernel/batch_planner.d.ts.map +1 -0
- package/dest/private_kernel/batch_planner.js +104 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
- package/dest/private_kernel/hints/index.d.ts +3 -3
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +2 -2
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +342 -0
- package/dest/private_kernel/hints/test_utils.d.ts +122 -0
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
- package/dest/private_kernel/hints/test_utils.js +202 -0
- package/dest/private_kernel/index.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +7 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +218 -96
- package/dest/private_kernel/private_kernel_oracle.d.ts +32 -29
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +108 -2
- package/dest/pxe.d.ts +267 -134
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +498 -365
- package/dest/storage/address_store/address_store.d.ts +11 -0
- package/dest/storage/address_store/address_store.d.ts.map +1 -0
- package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -12
- package/dest/storage/address_store/index.d.ts +2 -0
- package/dest/storage/address_store/index.d.ts.map +1 -0
- package/dest/storage/address_store/index.js +1 -0
- 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 +20 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
- package/dest/storage/anchor_block_store/anchor_block_store.js +28 -0
- package/dest/storage/anchor_block_store/index.d.ts +2 -0
- package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
- package/dest/storage/anchor_block_store/index.js +1 -0
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.js +647 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
- package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_service.js +47 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_store.js +261 -0
- package/dest/storage/capsule_store/index.d.ts +3 -0
- package/dest/storage/capsule_store/index.d.ts.map +1 -0
- package/dest/storage/capsule_store/index.js +2 -0
- package/dest/storage/contract_store/contract_store.d.ts +96 -0
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
- package/dest/storage/contract_store/contract_store.js +281 -0
- package/dest/storage/contract_store/index.d.ts +2 -0
- package/dest/storage/contract_store/index.d.ts.map +1 -0
- package/dest/storage/contract_store/index.js +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
- package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -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 +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 +57 -0
- package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
- package/dest/storage/fact_store/origin_state.js +53 -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 +9 -8
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +8 -7
- 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/index.d.ts +3 -0
- package/dest/storage/note_store/index.d.ts.map +1 -0
- package/dest/storage/note_store/index.js +2 -0
- package/dest/storage/note_store/note_store.d.ts +92 -0
- package/dest/storage/note_store/note_store.d.ts.map +1 -0
- package/dest/storage/note_store/note_store.js +372 -0
- package/dest/storage/note_store/stored_note.d.ts +11 -0
- package/dest/storage/note_store/stored_note.d.ts.map +1 -0
- package/dest/storage/note_store/stored_note.js +27 -0
- package/dest/storage/open_pxe_stores.d.ts +35 -0
- package/dest/storage/open_pxe_stores.d.ts.map +1 -0
- package/dest/storage/open_pxe_stores.js +29 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +88 -0
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
- package/dest/storage/private_event_store/private_event_store.js +273 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
- package/dest/storage/private_event_store/stored_private_event.js +56 -0
- package/dest/storage/tagging_store/index.d.ts +4 -0
- package/dest/storage/tagging_store/index.d.ts.map +1 -0
- package/dest/storage/tagging_store/index.js +3 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +78 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_tagging_store.js +374 -0
- 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 +2 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +7 -2
- package/dest/tagging/get_all_logs_by_tags.d.ts +48 -0
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
- package/dest/tagging/get_all_logs_by_tags.js +59 -0
- package/dest/tagging/index.d.ts +18 -7
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +16 -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 +69 -0
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +203 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
- 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 +16 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +92 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +17 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +60 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +19 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +72 -0
- package/package.json +33 -20
- package/src/bin/check_oracle_version.ts +62 -33
- package/src/bin/index.ts +5 -0
- package/src/bin/oracle_version_helpers.ts +311 -0
- package/src/block_synchronizer/block_stream_source.ts +42 -0
- package/src/block_synchronizer/block_synchronizer.ts +241 -0
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +32 -26
- package/src/config/package_info.ts +1 -1
- package/src/contract/contract_class_service.ts +83 -0
- package/src/contract/contract_sync_service.ts +176 -0
- package/src/contract/helpers.ts +35 -0
- package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
- package/src/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +526 -132
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- package/src/contract_function_simulator/execution_note_cache.ts +42 -33
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
- package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
- package/src/contract_function_simulator/index.ts +70 -5
- package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
- package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
- package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
- package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +16 -11
- 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 +28 -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 +18 -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 +58 -0
- package/src/contract_function_simulator/noir-structs/resolved_tx.ts +53 -0
- package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +15 -0
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -37
- 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 -151
- package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +120 -0
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +31 -15
- package/src/contract_function_simulator/oracle/oracle_registry.ts +689 -0
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +964 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +8 -75
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +363 -189
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +974 -154
- package/src/contract_function_simulator/pick_notes.ts +23 -4
- package/src/contract_function_simulator/transient_array_service.ts +91 -0
- package/src/contract_logging.ts +52 -0
- package/src/debug/pxe_debug_utils.ts +85 -0
- package/src/entrypoints/client/bundle/index.ts +2 -1
- package/src/entrypoints/client/bundle/utils.ts +41 -22
- package/src/entrypoints/client/lazy/index.ts +2 -1
- package/src/entrypoints/client/lazy/utils.ts +43 -24
- package/src/entrypoints/pxe_creation_options.ts +27 -3
- package/src/entrypoints/server/index.ts +9 -2
- package/src/entrypoints/server/utils.ts +55 -60
- package/src/error_enriching.ts +20 -12
- package/src/events/event_service.ts +119 -0
- package/src/events/index.ts +1 -0
- package/src/events/private_event_filter_validator.ts +66 -0
- package/src/hooks/authorize_utility_call.ts +44 -0
- package/src/hooks/execution_hooks.ts +68 -0
- package/src/hooks/index.ts +12 -0
- package/src/hooks/resolve_custom_request.ts +24 -0
- package/src/hooks/resolve_tagging_secret_strategy.ts +57 -0
- package/src/job_coordinator/job_coordinator.ts +150 -0
- package/src/logs/log_service.ts +291 -0
- package/src/messages/tx_resolver_service.ts +69 -0
- package/src/notes/index.ts +1 -0
- package/src/notes/note_service.ts +230 -0
- package/src/notes_filter.ts +24 -0
- package/src/oracle_version.ts +20 -9
- package/src/private_kernel/batch_planner.ts +168 -0
- package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
- package/src/private_kernel/hints/index.ts +2 -2
- package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +211 -147
- package/src/private_kernel/hints/test_utils.ts +318 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +358 -140
- package/src/private_kernel/private_kernel_oracle.ts +149 -39
- package/src/pxe.ts +849 -491
- package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +16 -16
- package/src/storage/address_store/index.ts +1 -0
- package/src/storage/allowed_scopes.ts +14 -0
- package/src/storage/anchor_block_store/anchor_block_store.ts +35 -0
- package/src/storage/anchor_block_store/index.ts +1 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
- package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
- package/src/storage/backwards_compatibility_tests/schema_tests.ts +774 -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 +333 -0
- package/src/storage/capsule_store/index.ts +2 -0
- package/src/storage/contract_store/contract_store.ts +401 -0
- package/src/storage/contract_store/index.ts +1 -0
- package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
- 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 +14 -0
- package/src/storage/fact_store/origin_state.ts +75 -0
- package/src/storage/fact_store/stored_fact.ts +80 -0
- package/src/storage/index.ts +8 -7
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/note_store/note_store.ts +454 -0
- package/src/storage/note_store/stored_note.ts +26 -0
- package/src/storage/open_pxe_stores.ts +52 -0
- package/src/storage/private_event_store/private_event_store.ts +382 -0
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/index.ts +3 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +139 -0
- package/src/storage/tagging_store/sender_tagging_store.ts +476 -0
- package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
- package/src/tagging/constants.ts +8 -2
- package/src/tagging/get_all_logs_by_tags.ts +120 -0
- package/src/tagging/index.ts +20 -6
- package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
- package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +301 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
- package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +134 -0
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +66 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +84 -0
- package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -274
- package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
- package/dest/contract_function_simulator/execution_data_provider.js +0 -14
- package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -57
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/oracle.js +0 -328
- 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 -62
- package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
- package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_node.js +0 -27
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
- package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -701
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.js +0 -271
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -45
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
- package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
- package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.d.ts +0 -2
- package/dest/storage/address_data_provider/index.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.js +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -118
- package/dest/storage/capsule_data_provider/index.d.ts +0 -2
- package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts +0 -74
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/contract_data_provider.js +0 -205
- package/dest/storage/contract_data_provider/index.d.ts +0 -2
- package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.d.ts +0 -3
- package/dest/storage/note_data_provider/index.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.js +0 -2
- package/dest/storage/note_data_provider/note_dao.d.ts +0 -100
- package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_dao.js +0 -102
- package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -83
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_data_provider.js +0 -308
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -43
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -104
- package/dest/storage/sync_data_provider/index.d.ts +0 -2
- package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/index.js +0 -1
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -10
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/sync_data_provider.js +0 -26
- package/dest/storage/tagging_data_provider/index.d.ts +0 -2
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
- package/dest/synchronizer/index.d.ts +0 -2
- package/dest/synchronizer/index.d.ts.map +0 -1
- package/dest/synchronizer/index.js +0 -1
- package/dest/synchronizer/synchronizer.d.ts +0 -35
- package/dest/synchronizer/synchronizer.d.ts.map +0 -1
- package/dest/synchronizer/synchronizer.js +0 -101
- package/dest/tagging/siloed_tag.d.ts +0 -14
- package/dest/tagging/siloed_tag.d.ts.map +0 -1
- package/dest/tagging/siloed_tag.js +0 -20
- package/dest/tagging/tag.d.ts +0 -12
- package/dest/tagging/tag.d.ts.map +0 -1
- package/dest/tagging/tag.js +0 -17
- package/dest/tagging/utils.d.ts +0 -18
- package/dest/tagging/utils.d.ts.map +0 -1
- package/dest/tagging/utils.js +0 -24
- package/src/contract_function_simulator/execution_data_provider.ts +0 -343
- package/src/contract_function_simulator/oracle/oracle.ts +0 -575
- package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -66
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1019
- package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
- package/src/storage/address_data_provider/index.ts +0 -1
- package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -147
- package/src/storage/capsule_data_provider/index.ts +0 -1
- package/src/storage/contract_data_provider/contract_data_provider.ts +0 -294
- package/src/storage/contract_data_provider/index.ts +0 -1
- package/src/storage/note_data_provider/index.ts +0 -2
- package/src/storage/note_data_provider/note_dao.ts +0 -154
- package/src/storage/note_data_provider/note_data_provider.ts +0 -393
- package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -148
- package/src/storage/sync_data_provider/index.ts +0 -1
- package/src/storage/sync_data_provider/sync_data_provider.ts +0 -34
- package/src/storage/tagging_data_provider/index.ts +0 -1
- package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
- package/src/synchronizer/index.ts +0 -1
- package/src/synchronizer/synchronizer.ts +0 -120
- package/src/tagging/siloed_tag.ts +0 -22
- package/src/tagging/tag.ts +0 -16
- package/src/tagging/utils.ts +0 -31
|
@@ -1,26 +1,34 @@
|
|
|
1
|
+
import { CircuitKind } from '@aztec/bb.js';
|
|
1
2
|
import {
|
|
2
3
|
AVM_EMITNOTEHASH_BASE_L2_GAS,
|
|
3
4
|
AVM_EMITNULLIFIER_BASE_L2_GAS,
|
|
4
5
|
AVM_SENDL2TOL1MSG_BASE_L2_GAS,
|
|
5
|
-
|
|
6
|
-
DA_GAS_PER_BYTE,
|
|
6
|
+
DA_GAS_PER_FIELD,
|
|
7
7
|
FIXED_AVM_STARTUP_L2_GAS,
|
|
8
|
-
FIXED_DA_GAS,
|
|
9
|
-
FIXED_L2_GAS,
|
|
10
8
|
L2_GAS_PER_CONTRACT_CLASS_LOG,
|
|
9
|
+
L2_GAS_PER_L2_TO_L1_MSG,
|
|
10
|
+
L2_GAS_PER_NOTE_HASH,
|
|
11
|
+
L2_GAS_PER_NULLIFIER,
|
|
11
12
|
L2_GAS_PER_PRIVATE_LOG,
|
|
12
13
|
MAX_CONTRACT_CLASS_LOGS_PER_TX,
|
|
13
14
|
MAX_ENQUEUED_CALLS_PER_TX,
|
|
14
15
|
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
15
16
|
MAX_NOTE_HASHES_PER_TX,
|
|
17
|
+
MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
|
|
16
18
|
MAX_NULLIFIERS_PER_TX,
|
|
19
|
+
MAX_NULLIFIER_READ_REQUESTS_PER_TX,
|
|
17
20
|
MAX_PRIVATE_LOGS_PER_TX,
|
|
21
|
+
MAX_TX_LIFETIME,
|
|
22
|
+
PRIVATE_TX_L2_GAS_OVERHEAD,
|
|
23
|
+
PUBLIC_DATA_WRITE_LENGTH,
|
|
24
|
+
PUBLIC_TX_L2_GAS_OVERHEAD,
|
|
25
|
+
TX_DA_GAS_OVERHEAD,
|
|
18
26
|
} from '@aztec/constants';
|
|
19
27
|
import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
|
|
20
|
-
import {
|
|
21
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
28
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
22
29
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
23
30
|
import { Timer } from '@aztec/foundation/timer';
|
|
31
|
+
import type { KeyStore } from '@aztec/key-store';
|
|
24
32
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
25
33
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
26
34
|
import {
|
|
@@ -32,98 +40,210 @@ import {
|
|
|
32
40
|
toACVMWitness,
|
|
33
41
|
witnessMapToFields,
|
|
34
42
|
} from '@aztec/simulator/client';
|
|
35
|
-
import type {
|
|
36
|
-
import { FunctionSelector, FunctionType
|
|
43
|
+
import type { FunctionCall } from '@aztec/stdlib/abi';
|
|
44
|
+
import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
37
45
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
38
46
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
47
|
+
import type { BlockParameter, L2TipsProvider } from '@aztec/stdlib/block';
|
|
39
48
|
import { Gas } from '@aztec/stdlib/gas';
|
|
40
|
-
import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
41
49
|
import {
|
|
50
|
+
computeNoteHashNonce,
|
|
51
|
+
computeProtocolNullifier,
|
|
52
|
+
computeSiloedPrivateLogFirstField,
|
|
53
|
+
computeUniqueNoteHash,
|
|
54
|
+
siloNoteHash,
|
|
55
|
+
siloNullifier,
|
|
56
|
+
} from '@aztec/stdlib/hash';
|
|
57
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/server';
|
|
58
|
+
import {
|
|
59
|
+
ClaimedLengthArray,
|
|
42
60
|
PartialPrivateTailPublicInputsForPublic,
|
|
43
61
|
PartialPrivateTailPublicInputsForRollup,
|
|
44
62
|
type PrivateExecutionStep,
|
|
45
63
|
type PrivateKernelExecutionProofOutput,
|
|
46
64
|
PrivateKernelTailCircuitPublicInputs,
|
|
65
|
+
PrivateLogData,
|
|
47
66
|
PrivateToPublicAccumulatedData,
|
|
48
67
|
PrivateToRollupAccumulatedData,
|
|
49
68
|
PublicCallRequest,
|
|
69
|
+
ReadRequestActionEnum,
|
|
50
70
|
ScopedLogHash,
|
|
71
|
+
ScopedNoteHash,
|
|
72
|
+
ScopedNullifier,
|
|
73
|
+
ScopedReadRequest,
|
|
74
|
+
buildTransientDataHints,
|
|
75
|
+
getNoteHashReadRequestResetActions,
|
|
76
|
+
getNullifierReadRequestResetActions,
|
|
51
77
|
} from '@aztec/stdlib/kernel';
|
|
52
78
|
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
53
79
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
54
80
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
81
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
55
82
|
import {
|
|
83
|
+
BlockHeader,
|
|
56
84
|
CallContext,
|
|
85
|
+
type ContractOverrides,
|
|
57
86
|
HashedValues,
|
|
87
|
+
type OffchainEffect,
|
|
58
88
|
PrivateExecutionResult,
|
|
59
89
|
TxConstantData,
|
|
60
90
|
TxExecutionRequest,
|
|
61
91
|
collectNested,
|
|
92
|
+
collectNoteHashNullifierCounterMap,
|
|
62
93
|
getFinalMinRevertibleSideEffectCounter,
|
|
63
94
|
} from '@aztec/stdlib/tx';
|
|
64
95
|
|
|
65
|
-
import type {
|
|
66
|
-
import type {
|
|
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';
|
|
100
|
+
import type { AddressStore } from '../storage/address_store/address_store.js';
|
|
101
|
+
import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
|
|
102
|
+
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
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';
|
|
106
|
+
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
107
|
+
import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
108
|
+
import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
|
|
109
|
+
import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
|
|
110
|
+
import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
|
|
111
|
+
import { AnchoredContractData } from './anchored_contract_data.js';
|
|
112
|
+
import type { BenchmarkedNode } from './benchmarked_node.js';
|
|
67
113
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
68
114
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
69
115
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
70
|
-
import {
|
|
71
|
-
import { executePrivateFunction
|
|
116
|
+
import { buildACIRCallback } from './oracle/acir_callback.js';
|
|
117
|
+
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
72
118
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
73
119
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
120
|
+
import { TransientArrayService } from './transient_array_service.js';
|
|
121
|
+
|
|
122
|
+
/** Options for ContractFunctionSimulator.run. */
|
|
123
|
+
export type ContractSimulatorRunOpts = {
|
|
124
|
+
/** The address calling the function. Can be replaced to simulate a call from another contract or account. */
|
|
125
|
+
msgSender?: AztecAddress;
|
|
126
|
+
/** The block header to use as base state for this run. */
|
|
127
|
+
anchorBlockHeader: BlockHeader;
|
|
128
|
+
/** The address used as a tagging sender when emitting private logs. */
|
|
129
|
+
senderForTags?: AztecAddress;
|
|
130
|
+
/** The accounts whose notes we can access in this call. */
|
|
131
|
+
scopes: AztecAddress[];
|
|
132
|
+
/** The job ID for staged writes. */
|
|
133
|
+
jobId: string;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
/** Args for ContractFunctionSimulator constructor. */
|
|
137
|
+
export type ContractFunctionSimulatorArgs = {
|
|
138
|
+
contractStore: ContractStore;
|
|
139
|
+
contractClassService: ContractClassService;
|
|
140
|
+
/** Per-simulation contract overrides. */
|
|
141
|
+
overrides?: ContractOverrides;
|
|
142
|
+
noteStore: NoteStore;
|
|
143
|
+
keyStore: KeyStore;
|
|
144
|
+
addressStore: AddressStore;
|
|
145
|
+
aztecNode: AztecNode;
|
|
146
|
+
l2TipsStore: L2TipsProvider;
|
|
147
|
+
senderTaggingStore: SenderTaggingStore;
|
|
148
|
+
recipientTaggingStore: RecipientTaggingStore;
|
|
149
|
+
taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
150
|
+
capsuleStore: CapsuleStore;
|
|
151
|
+
factStore: FactStore;
|
|
152
|
+
privateEventStore: PrivateEventStore;
|
|
153
|
+
simulator: CircuitSimulator;
|
|
154
|
+
contractSyncService: ContractSyncService;
|
|
155
|
+
txResolver: TxResolverService;
|
|
156
|
+
hooks?: ExecutionHooks;
|
|
157
|
+
};
|
|
74
158
|
|
|
75
159
|
/**
|
|
76
160
|
* The contract function simulator.
|
|
77
161
|
*/
|
|
78
162
|
export class ContractFunctionSimulator {
|
|
79
|
-
private log: Logger;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
163
|
+
private readonly log: Logger;
|
|
164
|
+
private readonly contractStore: ContractStore;
|
|
165
|
+
private readonly contractClassService: ContractClassService;
|
|
166
|
+
private readonly overrides: ContractOverrides | undefined;
|
|
167
|
+
private readonly noteStore: NoteStore;
|
|
168
|
+
private readonly keyStore: KeyStore;
|
|
169
|
+
private readonly addressStore: AddressStore;
|
|
170
|
+
private readonly aztecNode: AztecNode;
|
|
171
|
+
private readonly l2TipsStore: L2TipsProvider;
|
|
172
|
+
private readonly senderTaggingStore: SenderTaggingStore;
|
|
173
|
+
private readonly recipientTaggingStore: RecipientTaggingStore;
|
|
174
|
+
private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
175
|
+
private readonly capsuleStore: CapsuleStore;
|
|
176
|
+
private readonly factStore: FactStore;
|
|
177
|
+
private readonly privateEventStore: PrivateEventStore;
|
|
178
|
+
private readonly simulator: CircuitSimulator;
|
|
179
|
+
private readonly contractSyncService: ContractSyncService;
|
|
180
|
+
private readonly txResolver: TxResolverService;
|
|
181
|
+
private readonly hooks: ExecutionHooks | undefined;
|
|
182
|
+
|
|
183
|
+
constructor(args: ContractFunctionSimulatorArgs) {
|
|
184
|
+
this.contractStore = args.contractStore;
|
|
185
|
+
this.contractClassService = args.contractClassService;
|
|
186
|
+
this.overrides = args.overrides;
|
|
187
|
+
this.noteStore = args.noteStore;
|
|
188
|
+
this.keyStore = args.keyStore;
|
|
189
|
+
this.addressStore = args.addressStore;
|
|
190
|
+
this.aztecNode = args.aztecNode;
|
|
191
|
+
this.l2TipsStore = args.l2TipsStore;
|
|
192
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
193
|
+
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
194
|
+
this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
|
|
195
|
+
this.capsuleStore = args.capsuleStore;
|
|
196
|
+
this.factStore = args.factStore;
|
|
197
|
+
this.privateEventStore = args.privateEventStore;
|
|
198
|
+
this.simulator = args.simulator;
|
|
199
|
+
this.contractSyncService = args.contractSyncService;
|
|
200
|
+
this.txResolver = args.txResolver;
|
|
201
|
+
this.hooks = args.hooks;
|
|
85
202
|
this.log = createLogger('simulator');
|
|
86
203
|
}
|
|
87
204
|
|
|
88
205
|
/**
|
|
89
206
|
* Runs a private function.
|
|
90
207
|
* @param request - The transaction request.
|
|
91
|
-
* @param entryPointArtifact - The artifact of the entry point function.
|
|
92
|
-
* @param contractAddress - The address of the contract (should match request.origin)
|
|
93
|
-
* @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract
|
|
94
|
-
* or a specific account.
|
|
95
|
-
* @param senderForTags - The address that is used as a tagging sender when emitting private logs. Returned from
|
|
96
|
-
* the `privateGetSenderForTags` oracle.
|
|
97
|
-
* @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
|
|
98
|
-
* @returns The result of the execution.
|
|
99
208
|
*/
|
|
100
209
|
public async run(
|
|
101
210
|
request: TxExecutionRequest,
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
211
|
+
{
|
|
212
|
+
msgSender = AztecAddress.NULL_MSG_SENDER,
|
|
213
|
+
anchorBlockHeader,
|
|
214
|
+
senderForTags,
|
|
215
|
+
scopes,
|
|
216
|
+
jobId,
|
|
217
|
+
}: ContractSimulatorRunOpts,
|
|
107
218
|
): Promise<PrivateExecutionResult> {
|
|
108
219
|
const simulatorSetupTimer = new Timer();
|
|
109
|
-
const anchorBlockHeader = await this.executionDataProvider.getAnchorBlockHeader();
|
|
110
220
|
|
|
111
|
-
|
|
221
|
+
const contractAddress = request.origin;
|
|
112
222
|
|
|
113
|
-
const
|
|
223
|
+
const anchoredContractData = new AnchoredContractData(
|
|
224
|
+
this.contractStore,
|
|
225
|
+
this.contractClassService,
|
|
226
|
+
anchorBlockHeader,
|
|
227
|
+
this.overrides,
|
|
228
|
+
);
|
|
114
229
|
|
|
115
|
-
|
|
116
|
-
|
|
230
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(
|
|
231
|
+
contractAddress,
|
|
232
|
+
request.functionSelector,
|
|
233
|
+
);
|
|
234
|
+
if (!entryPointArtifact) {
|
|
235
|
+
throw new Error(
|
|
236
|
+
`Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` +
|
|
237
|
+
`Register it via wallet.registerContract(...).`,
|
|
238
|
+
);
|
|
117
239
|
}
|
|
118
240
|
|
|
119
|
-
if (
|
|
120
|
-
|
|
121
|
-
`Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`,
|
|
122
|
-
);
|
|
241
|
+
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
242
|
+
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
123
243
|
}
|
|
124
244
|
|
|
125
245
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
126
|
-
const startSideEffectCounter =
|
|
246
|
+
const startSideEffectCounter = 2;
|
|
127
247
|
|
|
128
248
|
const callContext = new CallContext(
|
|
129
249
|
msgSender,
|
|
@@ -132,28 +252,52 @@ export class ContractFunctionSimulator {
|
|
|
132
252
|
entryPointArtifact.isStatic,
|
|
133
253
|
);
|
|
134
254
|
|
|
135
|
-
const
|
|
136
|
-
const noteCache = new ExecutionNoteCache(
|
|
255
|
+
const protocolNullifier = await computeProtocolNullifier(await request.toTxRequest().hash());
|
|
256
|
+
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
137
257
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
138
258
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
259
|
+
// One shared transient store for the whole execution tree rooted at this transaction. Threaded into every child
|
|
260
|
+
// private oracle and inherited by nested utility frames, so that frames of the same contract see each other's
|
|
261
|
+
// transient arrays, then discarded when run() returns.
|
|
262
|
+
const transientArrayService = new TransientArrayService();
|
|
263
|
+
|
|
264
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
265
|
+
argsHash: request.firstCallArgsHash,
|
|
266
|
+
txContext: request.txContext,
|
|
267
|
+
txRequestSalt: request.salt,
|
|
142
268
|
callContext,
|
|
143
269
|
anchorBlockHeader,
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
270
|
+
utilityExecutor: async (call, execScopes) => {
|
|
271
|
+
await this.runUtility(call, [], anchorBlockHeader, execScopes, jobId);
|
|
272
|
+
},
|
|
273
|
+
authWitnesses: request.authWitnesses,
|
|
274
|
+
capsules: request.capsules,
|
|
275
|
+
executionCache: HashedValuesCache.create(request.argsOfCalls),
|
|
147
276
|
noteCache,
|
|
148
277
|
taggingIndexCache,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
278
|
+
anchoredContractData,
|
|
279
|
+
noteStore: this.noteStore,
|
|
280
|
+
keyStore: this.keyStore,
|
|
281
|
+
addressStore: this.addressStore,
|
|
282
|
+
aztecNode: this.aztecNode,
|
|
283
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
284
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
285
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
286
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
287
|
+
factService: new FactService(this.factStore, scopes),
|
|
288
|
+
privateEventStore: this.privateEventStore,
|
|
289
|
+
txResolver: this.txResolver,
|
|
290
|
+
contractSyncService: this.contractSyncService,
|
|
291
|
+
jobId,
|
|
292
|
+
totalPublicCalldataCount: 0,
|
|
293
|
+
sideEffectCounter: startSideEffectCounter,
|
|
153
294
|
scopes,
|
|
154
295
|
senderForTags,
|
|
155
|
-
this.simulator,
|
|
156
|
-
|
|
296
|
+
simulator: this.simulator,
|
|
297
|
+
l2TipsStore: this.l2TipsStore,
|
|
298
|
+
hooks: this.hooks,
|
|
299
|
+
transientArrayService,
|
|
300
|
+
});
|
|
157
301
|
|
|
158
302
|
const setupTime = simulatorSetupTimer.ms();
|
|
159
303
|
|
|
@@ -170,8 +314,8 @@ export class ContractFunctionSimulator {
|
|
|
170
314
|
request.functionSelector,
|
|
171
315
|
);
|
|
172
316
|
const simulatorTeardownTimer = new Timer();
|
|
173
|
-
|
|
174
|
-
const firstNullifierHint =
|
|
317
|
+
|
|
318
|
+
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
175
319
|
|
|
176
320
|
const publicCallRequests = collectNested([executionResult], r =>
|
|
177
321
|
r.publicInputs.publicCallRequests
|
|
@@ -181,7 +325,7 @@ export class ContractFunctionSimulator {
|
|
|
181
325
|
);
|
|
182
326
|
const publicFunctionsCalldata = await Promise.all(
|
|
183
327
|
publicCallRequests.map(async r => {
|
|
184
|
-
const calldata = await privateExecutionOracle.
|
|
328
|
+
const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
|
|
185
329
|
return new HashedValues(calldata, r.calldataHash);
|
|
186
330
|
}),
|
|
187
331
|
);
|
|
@@ -202,25 +346,72 @@ export class ContractFunctionSimulator {
|
|
|
202
346
|
}
|
|
203
347
|
}
|
|
204
348
|
|
|
205
|
-
// docs:start:execute_utility_function
|
|
206
349
|
/**
|
|
207
350
|
* Runs a utility function.
|
|
208
351
|
* @param call - The function call to execute.
|
|
209
|
-
* @
|
|
210
|
-
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
211
|
-
* accounts if not specified.
|
|
212
|
-
* @returns A decoded ABI value containing the function's return data.
|
|
352
|
+
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
213
353
|
*/
|
|
214
|
-
public async runUtility(
|
|
215
|
-
|
|
354
|
+
public async runUtility(
|
|
355
|
+
call: FunctionCall,
|
|
356
|
+
authwits: AuthWitness[],
|
|
357
|
+
anchorBlockHeader: BlockHeader,
|
|
358
|
+
scopes: AztecAddress[],
|
|
359
|
+
jobId: string,
|
|
360
|
+
): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
|
|
361
|
+
const anchoredContractData = new AnchoredContractData(
|
|
362
|
+
this.contractStore,
|
|
363
|
+
this.contractClassService,
|
|
364
|
+
anchorBlockHeader,
|
|
365
|
+
this.overrides,
|
|
366
|
+
);
|
|
216
367
|
|
|
217
|
-
const entryPointArtifact = await
|
|
368
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
369
|
+
if (!entryPointArtifact) {
|
|
370
|
+
throw new Error(
|
|
371
|
+
`Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` +
|
|
372
|
+
`Register it via wallet.registerContract(...).`,
|
|
373
|
+
);
|
|
374
|
+
}
|
|
218
375
|
|
|
219
376
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
220
377
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
221
378
|
}
|
|
222
379
|
|
|
223
|
-
const
|
|
380
|
+
const utilityExecutor = async (syncCall: FunctionCall, execScopes: AztecAddress[]) => {
|
|
381
|
+
await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
|
|
382
|
+
};
|
|
383
|
+
|
|
384
|
+
const oracle = new UtilityExecutionOracle({
|
|
385
|
+
callContext: CallContext.from({
|
|
386
|
+
msgSender: AztecAddress.NULL_MSG_SENDER,
|
|
387
|
+
contractAddress: call.to,
|
|
388
|
+
functionSelector: call.selector,
|
|
389
|
+
isStaticCall: true,
|
|
390
|
+
}),
|
|
391
|
+
authWitnesses: authwits,
|
|
392
|
+
capsules: [],
|
|
393
|
+
anchorBlockHeader,
|
|
394
|
+
anchoredContractData,
|
|
395
|
+
noteStore: this.noteStore,
|
|
396
|
+
keyStore: this.keyStore,
|
|
397
|
+
addressStore: this.addressStore,
|
|
398
|
+
aztecNode: this.aztecNode,
|
|
399
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
400
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
401
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
402
|
+
factService: new FactService(this.factStore, scopes),
|
|
403
|
+
privateEventStore: this.privateEventStore,
|
|
404
|
+
txResolver: this.txResolver,
|
|
405
|
+
contractSyncService: this.contractSyncService,
|
|
406
|
+
l2TipsStore: this.l2TipsStore,
|
|
407
|
+
jobId,
|
|
408
|
+
scopes,
|
|
409
|
+
simulator: this.simulator,
|
|
410
|
+
hooks: this.hooks,
|
|
411
|
+
utilityExecutor,
|
|
412
|
+
// Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
|
|
413
|
+
transientArrayService: new TransientArrayService(),
|
|
414
|
+
});
|
|
224
415
|
|
|
225
416
|
try {
|
|
226
417
|
this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
|
|
@@ -230,7 +421,7 @@ export class ContractFunctionSimulator {
|
|
|
230
421
|
|
|
231
422
|
const initialWitness = toACVMWitness(0, call.args);
|
|
232
423
|
const acirExecutionResult = await this.simulator
|
|
233
|
-
.executeUserCircuit(initialWitness, entryPointArtifact,
|
|
424
|
+
.executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle))
|
|
234
425
|
.catch((err: Error) => {
|
|
235
426
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
236
427
|
throw new ExecutionError(
|
|
@@ -244,17 +435,30 @@ export class ContractFunctionSimulator {
|
|
|
244
435
|
);
|
|
245
436
|
});
|
|
246
437
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
438
|
+
this.log.verbose(`Utility execution for ${call.to}.${call.selector} completed`);
|
|
439
|
+
return {
|
|
440
|
+
result: witnessMapToFields(acirExecutionResult.returnWitness),
|
|
441
|
+
offchainEffects: oracle.getOffchainEffects(),
|
|
442
|
+
};
|
|
250
443
|
} catch (err) {
|
|
251
444
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
252
445
|
}
|
|
253
446
|
}
|
|
254
|
-
// docs:end:execute_utility_function
|
|
255
447
|
|
|
448
|
+
/**
|
|
449
|
+
* Returns the execution statistics collected during the simulator run.
|
|
450
|
+
* @returns The execution statistics.
|
|
451
|
+
*/
|
|
256
452
|
getStats() {
|
|
257
|
-
|
|
453
|
+
const nodeRPCCalls =
|
|
454
|
+
typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
|
|
455
|
+
? (this.aztecNode as BenchmarkedNode).getStats()
|
|
456
|
+
: {
|
|
457
|
+
perMethod: {},
|
|
458
|
+
roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
return { nodeRPCCalls };
|
|
258
462
|
}
|
|
259
463
|
}
|
|
260
464
|
|
|
@@ -275,63 +479,82 @@ class OrderedSideEffect<T> {
|
|
|
275
479
|
* (allowing state overrides) and is much faster, while still generating a valid
|
|
276
480
|
* output that can be sent to the node for public simulation
|
|
277
481
|
* @param privateExecutionResult - The result of the private execution.
|
|
278
|
-
* @param
|
|
279
|
-
*
|
|
280
|
-
* @param
|
|
482
|
+
* @param debugFunctionNameGetter - A provider for contract data in order to get function names and debug info.
|
|
483
|
+
* @param node - AztecNode for verifying settled read requests against the note hash and nullifier trees.
|
|
484
|
+
* @param minRevertibleSideEffectCounterOverride - Optional override for the min revertible side effect counter.
|
|
485
|
+
* Used by TXE to simulate account contract behavior (setting the counter before app execution).
|
|
281
486
|
* @returns The simulated proving result.
|
|
282
487
|
*/
|
|
283
488
|
export async function generateSimulatedProvingResult(
|
|
284
489
|
privateExecutionResult: PrivateExecutionResult,
|
|
285
|
-
|
|
286
|
-
|
|
490
|
+
debugFunctionNameGetter: (contractAddress: AztecAddress, functionSelector: FunctionSelector) => Promise<string>,
|
|
491
|
+
node: AztecNode,
|
|
492
|
+
minRevertibleSideEffectCounterOverride?: number,
|
|
287
493
|
): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
288
|
-
const
|
|
289
|
-
const nullifiers: OrderedSideEffect<Fr>[] = [];
|
|
290
|
-
const taggedPrivateLogs: OrderedSideEffect<PrivateLog>[] = [];
|
|
494
|
+
const taggedPrivateLogs: OrderedSideEffect<PrivateLogData>[] = [];
|
|
291
495
|
const l2ToL1Messages: OrderedSideEffect<ScopedL2ToL1Message>[] = [];
|
|
292
496
|
const contractClassLogsHashes: OrderedSideEffect<ScopedLogHash>[] = [];
|
|
293
497
|
const publicCallRequests: OrderedSideEffect<PublicCallRequest>[] = [];
|
|
294
498
|
const executionSteps: PrivateExecutionStep[] = [];
|
|
295
499
|
|
|
500
|
+
// Unsiloed scoped arrays — used for squashing, read request verification,
|
|
501
|
+
// and siloed at the end only for the surviving items
|
|
502
|
+
const scopedNoteHashes: ScopedNoteHash[] = [];
|
|
503
|
+
const scopedNullifiers: ScopedNullifier[] = [];
|
|
504
|
+
|
|
505
|
+
// Read requests for verification
|
|
506
|
+
const noteHashReadRequests: ScopedReadRequest[] = [];
|
|
507
|
+
const nullifierReadRequests: ScopedReadRequest[] = [];
|
|
508
|
+
|
|
296
509
|
let publicTeardownCallRequest;
|
|
297
510
|
|
|
511
|
+
// We set expiration timestamp to anchor_block_timestamp + MAX_TX_LIFETIME (24h) just like kernels do
|
|
512
|
+
let expirationTimestamp =
|
|
513
|
+
privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.globalVariables.timestamp +
|
|
514
|
+
BigInt(MAX_TX_LIFETIME);
|
|
515
|
+
|
|
516
|
+
let feePayer = AztecAddress.zero();
|
|
517
|
+
|
|
298
518
|
const executions = [privateExecutionResult.entrypoint];
|
|
299
519
|
|
|
300
520
|
while (executions.length !== 0) {
|
|
301
521
|
const execution = executions.shift()!;
|
|
302
522
|
executions.unshift(...execution!.nestedExecutionResults);
|
|
303
523
|
|
|
524
|
+
// Just like kernels we overwrite the default value if the call sets it.
|
|
525
|
+
const callExpirationTimestamp = execution.publicInputs.expirationTimestamp;
|
|
526
|
+
if (callExpirationTimestamp !== 0n && callExpirationTimestamp < expirationTimestamp) {
|
|
527
|
+
expirationTimestamp = callExpirationTimestamp;
|
|
528
|
+
}
|
|
529
|
+
|
|
304
530
|
const { contractAddress } = execution.publicInputs.callContext;
|
|
305
531
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
new OrderedSideEffect(await siloNoteHash(contractAddress, noteHash.value), noteHash.counter),
|
|
313
|
-
),
|
|
314
|
-
);
|
|
532
|
+
if (execution.publicInputs.isFeePayer) {
|
|
533
|
+
if (!feePayer.isZero()) {
|
|
534
|
+
throw new Error('Multiple fee payers found in private execution result');
|
|
535
|
+
}
|
|
536
|
+
feePayer = contractAddress;
|
|
537
|
+
}
|
|
315
538
|
|
|
316
|
-
|
|
317
|
-
execution.publicInputs.
|
|
539
|
+
scopedNoteHashes.push(
|
|
540
|
+
...execution.publicInputs.noteHashes
|
|
318
541
|
.getActiveItems()
|
|
319
|
-
.
|
|
320
|
-
|
|
321
|
-
new OrderedSideEffect(await siloNullifier(contractAddress, nullifier.value), nullifier.counter),
|
|
322
|
-
),
|
|
542
|
+
.filter(nh => !nh.isEmpty())
|
|
543
|
+
.map(nh => nh.scope(contractAddress)),
|
|
323
544
|
);
|
|
545
|
+
scopedNullifiers.push(...execution.publicInputs.nullifiers.getActiveItems().map(n => n.scope(contractAddress)));
|
|
324
546
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
547
|
+
taggedPrivateLogs.push(
|
|
548
|
+
...(await Promise.all(
|
|
549
|
+
execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
|
|
550
|
+
metadata.log.fields[0] = await computeSiloedPrivateLogFirstField(contractAddress, metadata.log.fields[0]);
|
|
551
|
+
return new OrderedSideEffect(metadata, metadata.counter);
|
|
552
|
+
}),
|
|
553
|
+
)),
|
|
330
554
|
);
|
|
331
555
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
nullifiers.push(...nullifiersFromExecution);
|
|
556
|
+
noteHashReadRequests.push(...execution.publicInputs.noteHashReadRequests.getActiveItems());
|
|
557
|
+
nullifierReadRequests.push(...execution.publicInputs.nullifierReadRequests.getActiveItems());
|
|
335
558
|
l2ToL1Messages.push(
|
|
336
559
|
...execution.publicInputs.l2ToL1Msgs
|
|
337
560
|
.getActiveItems()
|
|
@@ -360,17 +583,59 @@ export async function generateSimulatedProvingResult(
|
|
|
360
583
|
: execution.publicInputs.publicTeardownCallRequest;
|
|
361
584
|
|
|
362
585
|
executionSteps.push({
|
|
363
|
-
functionName: await
|
|
586
|
+
functionName: await debugFunctionNameGetter(
|
|
364
587
|
execution.publicInputs.callContext.contractAddress,
|
|
365
588
|
execution.publicInputs.callContext.functionSelector,
|
|
366
589
|
),
|
|
367
590
|
timings: execution.profileResult?.timings ?? { witgen: 0, oracles: {} },
|
|
591
|
+
kind: CircuitKind.App,
|
|
368
592
|
bytecode: execution.acir,
|
|
369
593
|
vk: execution.vk,
|
|
370
594
|
witness: execution.partialWitness,
|
|
371
595
|
});
|
|
372
596
|
}
|
|
373
597
|
|
|
598
|
+
const noteHashNullifierCounterMap = collectNoteHashNullifierCounterMap(privateExecutionResult);
|
|
599
|
+
const minRevertibleSideEffectCounter =
|
|
600
|
+
minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
|
|
601
|
+
|
|
602
|
+
const scopedNoteHashesCLA = new ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>(
|
|
603
|
+
padArrayEnd(scopedNoteHashes, ScopedNoteHash.empty(), MAX_NOTE_HASHES_PER_TX),
|
|
604
|
+
scopedNoteHashes.length,
|
|
605
|
+
);
|
|
606
|
+
const scopedNullifiersCLA = new ClaimedLengthArray<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>(
|
|
607
|
+
padArrayEnd(scopedNullifiers, ScopedNullifier.empty(), MAX_NULLIFIERS_PER_TX),
|
|
608
|
+
scopedNullifiers.length,
|
|
609
|
+
);
|
|
610
|
+
|
|
611
|
+
const { filteredNoteHashes, filteredNullifiers, filteredPrivateLogs } = squashTransientSideEffects(
|
|
612
|
+
taggedPrivateLogs,
|
|
613
|
+
scopedNoteHashesCLA,
|
|
614
|
+
scopedNullifiersCLA,
|
|
615
|
+
noteHashNullifierCounterMap,
|
|
616
|
+
minRevertibleSideEffectCounter,
|
|
617
|
+
);
|
|
618
|
+
|
|
619
|
+
await verifyReadRequests(
|
|
620
|
+
node,
|
|
621
|
+
await privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.hash(),
|
|
622
|
+
noteHashReadRequests,
|
|
623
|
+
nullifierReadRequests,
|
|
624
|
+
scopedNoteHashesCLA,
|
|
625
|
+
scopedNullifiersCLA,
|
|
626
|
+
);
|
|
627
|
+
|
|
628
|
+
const siloedNoteHashes = await Promise.all(
|
|
629
|
+
filteredNoteHashes
|
|
630
|
+
.sort((a, b) => a.counter - b.counter)
|
|
631
|
+
.map(async nh => new OrderedSideEffect(await siloNoteHash(nh.contractAddress, nh.value), nh.counter)),
|
|
632
|
+
);
|
|
633
|
+
const siloedNullifiers = await Promise.all(
|
|
634
|
+
filteredNullifiers
|
|
635
|
+
.sort((a, b) => a.counter - b.counter)
|
|
636
|
+
.map(async n => new OrderedSideEffect(await siloNullifier(n.contractAddress, n.value), n.counter)),
|
|
637
|
+
);
|
|
638
|
+
|
|
374
639
|
const constantData = new TxConstantData(
|
|
375
640
|
privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader,
|
|
376
641
|
privateExecutionResult.entrypoint.publicInputs.txContext,
|
|
@@ -387,23 +652,23 @@ export async function generateSimulatedProvingResult(
|
|
|
387
652
|
const getEffect = <T>(orderedSideEffect: OrderedSideEffect<T>) => orderedSideEffect.sideEffect;
|
|
388
653
|
|
|
389
654
|
const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
|
|
390
|
-
const minRevertibleSideEffectCounter = getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
|
|
391
655
|
|
|
392
656
|
const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(
|
|
393
|
-
|
|
657
|
+
siloedNullifiers,
|
|
394
658
|
minRevertibleSideEffectCounter,
|
|
395
659
|
);
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
660
|
+
// The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
|
|
661
|
+
// init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
|
|
662
|
+
// the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
|
|
663
|
+
// nullifier.
|
|
664
|
+
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
665
|
+
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
401
666
|
|
|
402
667
|
if (isPrivateOnlyTx) {
|
|
403
668
|
// We must make the note hashes unique by using the
|
|
404
669
|
// nonce generator and their index in the tx.
|
|
405
670
|
const uniqueNoteHashes = await Promise.all(
|
|
406
|
-
siloedNoteHashes.
|
|
671
|
+
siloedNoteHashes.map(async (orderedSideEffect, i) => {
|
|
407
672
|
const siloedNoteHash = orderedSideEffect.sideEffect;
|
|
408
673
|
const nonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
409
674
|
const uniqueNoteHash = await computeUniqueNoteHash(nonce, siloedNoteHash);
|
|
@@ -418,26 +683,32 @@ export async function generateSimulatedProvingResult(
|
|
|
418
683
|
ScopedL2ToL1Message.empty(),
|
|
419
684
|
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
420
685
|
),
|
|
421
|
-
padArrayEnd(
|
|
686
|
+
padArrayEnd(filteredPrivateLogs.sort(sortByCounter).map(getEffect), PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
|
|
422
687
|
padArrayEnd(
|
|
423
688
|
contractClassLogsHashes.sort(sortByCounter).map(getEffect),
|
|
424
689
|
ScopedLogHash.empty(),
|
|
425
690
|
MAX_CONTRACT_CLASS_LOGS_PER_TX,
|
|
426
691
|
),
|
|
427
692
|
);
|
|
428
|
-
gasUsed = meterGasUsed(accumulatedDataForRollup);
|
|
693
|
+
gasUsed = meterGasUsed(accumulatedDataForRollup, isPrivateOnlyTx);
|
|
429
694
|
inputsForRollup = new PartialPrivateTailPublicInputsForRollup(accumulatedDataForRollup);
|
|
430
695
|
} else {
|
|
431
696
|
const [nonRevertibleNoteHashes, revertibleNoteHashes] = splitOrderedSideEffects(
|
|
432
|
-
siloedNoteHashes
|
|
697
|
+
siloedNoteHashes,
|
|
433
698
|
minRevertibleSideEffectCounter,
|
|
434
699
|
);
|
|
700
|
+
const nonRevertibleUniqueNoteHashes = await Promise.all(
|
|
701
|
+
nonRevertibleNoteHashes.map(async (noteHash, i) => {
|
|
702
|
+
const nonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
703
|
+
return await computeUniqueNoteHash(nonce, noteHash);
|
|
704
|
+
}),
|
|
705
|
+
);
|
|
435
706
|
const [nonRevertibleL2ToL1Messages, revertibleL2ToL1Messages] = splitOrderedSideEffects(
|
|
436
707
|
l2ToL1Messages.sort(sortByCounter),
|
|
437
708
|
minRevertibleSideEffectCounter,
|
|
438
709
|
);
|
|
439
710
|
const [nonRevertibleTaggedPrivateLogs, revertibleTaggedPrivateLogs] = splitOrderedSideEffects(
|
|
440
|
-
|
|
711
|
+
filteredPrivateLogs,
|
|
441
712
|
minRevertibleSideEffectCounter,
|
|
442
713
|
);
|
|
443
714
|
const [nonRevertibleContractClassLogHashes, revertibleContractClassLogHashes] = splitOrderedSideEffects(
|
|
@@ -450,7 +721,7 @@ export async function generateSimulatedProvingResult(
|
|
|
450
721
|
);
|
|
451
722
|
|
|
452
723
|
const nonRevertibleData = new PrivateToPublicAccumulatedData(
|
|
453
|
-
padArrayEnd(
|
|
724
|
+
padArrayEnd(nonRevertibleUniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
|
|
454
725
|
padArrayEnd(nonRevertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
|
|
455
726
|
padArrayEnd(nonRevertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
|
|
456
727
|
padArrayEnd(nonRevertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
|
|
@@ -466,9 +737,9 @@ export async function generateSimulatedProvingResult(
|
|
|
466
737
|
padArrayEnd(revertibleContractClassLogHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX),
|
|
467
738
|
padArrayEnd(revertiblePublicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
|
|
468
739
|
);
|
|
469
|
-
gasUsed = meterGasUsed(revertibleData).add(meterGasUsed(nonRevertibleData));
|
|
740
|
+
gasUsed = meterGasUsed(revertibleData, isPrivateOnlyTx).add(meterGasUsed(nonRevertibleData, isPrivateOnlyTx));
|
|
470
741
|
if (publicTeardownCallRequest) {
|
|
471
|
-
gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
|
|
742
|
+
gasUsed = gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
|
|
472
743
|
}
|
|
473
744
|
|
|
474
745
|
inputsForPublic = new PartialPrivateTailPublicInputsForPublic(
|
|
@@ -480,9 +751,14 @@ export async function generateSimulatedProvingResult(
|
|
|
480
751
|
|
|
481
752
|
const publicInputs = new PrivateKernelTailCircuitPublicInputs(
|
|
482
753
|
constantData,
|
|
483
|
-
/*gasUsed=*/ gasUsed.add(
|
|
484
|
-
|
|
485
|
-
|
|
754
|
+
/*gasUsed=*/ gasUsed.add(
|
|
755
|
+
Gas.from({
|
|
756
|
+
l2Gas: isPrivateOnlyTx ? PRIVATE_TX_L2_GAS_OVERHEAD : PUBLIC_TX_L2_GAS_OVERHEAD,
|
|
757
|
+
daGas: TX_DA_GAS_OVERHEAD,
|
|
758
|
+
}),
|
|
759
|
+
),
|
|
760
|
+
/*feePayer=*/ feePayer,
|
|
761
|
+
/*expirationTimestamp=*/ expirationTimestamp,
|
|
486
762
|
hasPublicCalls ? inputsForPublic : undefined,
|
|
487
763
|
!hasPublicCalls ? inputsForRollup : undefined,
|
|
488
764
|
);
|
|
@@ -494,11 +770,121 @@ export async function generateSimulatedProvingResult(
|
|
|
494
770
|
};
|
|
495
771
|
}
|
|
496
772
|
|
|
773
|
+
/**
|
|
774
|
+
* Squashes transient note hashes and nullifiers, mimicking the behavior
|
|
775
|
+
* of the reset kernels. Returns the filtered (surviving) scoped items and private logs.
|
|
776
|
+
*/
|
|
777
|
+
function squashTransientSideEffects(
|
|
778
|
+
taggedPrivateLogs: OrderedSideEffect<PrivateLogData>[],
|
|
779
|
+
scopedNoteHashesCLA: ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>,
|
|
780
|
+
scopedNullifiersCLA: ClaimedLengthArray<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>,
|
|
781
|
+
noteHashNullifierCounterMap: Map<number, number>,
|
|
782
|
+
minRevertibleSideEffectCounter: number,
|
|
783
|
+
) {
|
|
784
|
+
const { numTransientData, hints: transientDataHints } = buildTransientDataHints(
|
|
785
|
+
scopedNoteHashesCLA,
|
|
786
|
+
scopedNullifiersCLA,
|
|
787
|
+
/*futureNoteHashReads=*/ [],
|
|
788
|
+
/*futureNullifierReads=*/ [],
|
|
789
|
+
/*futureLogs=*/ [],
|
|
790
|
+
noteHashNullifierCounterMap,
|
|
791
|
+
minRevertibleSideEffectCounter,
|
|
792
|
+
);
|
|
793
|
+
|
|
794
|
+
const squashedNoteHashCounters = new Set<number>();
|
|
795
|
+
const squashedNullifierCounters = new Set<number>();
|
|
796
|
+
for (let i = 0; i < numTransientData; i++) {
|
|
797
|
+
const hint = transientDataHints[i];
|
|
798
|
+
squashedNoteHashCounters.add(scopedNoteHashesCLA.array[hint.noteHashIndex].counter);
|
|
799
|
+
squashedNullifierCounters.add(scopedNullifiersCLA.array[hint.nullifierIndex].counter);
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
return {
|
|
803
|
+
filteredNoteHashes: scopedNoteHashesCLA.getActiveItems().filter(nh => !squashedNoteHashCounters.has(nh.counter)),
|
|
804
|
+
filteredNullifiers: scopedNullifiersCLA.getActiveItems().filter(n => !squashedNullifierCounters.has(n.counter)),
|
|
805
|
+
filteredPrivateLogs: taggedPrivateLogs
|
|
806
|
+
.filter(item => !squashedNoteHashCounters.has(item.sideEffect.noteHashCounter))
|
|
807
|
+
.map(item => new OrderedSideEffect(item.sideEffect.log, item.counter)),
|
|
808
|
+
};
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
/**
|
|
812
|
+
* Verifies settled read requests by checking membership in the note hash and nullifier trees
|
|
813
|
+
* at the tx's anchor block, mimicking the behavior of the kernels
|
|
814
|
+
*/
|
|
815
|
+
async function verifyReadRequests(
|
|
816
|
+
node: Pick<AztecNode, 'findLeavesIndexes'>,
|
|
817
|
+
anchorBlockHash: BlockParameter,
|
|
818
|
+
noteHashReadRequests: ScopedReadRequest[],
|
|
819
|
+
nullifierReadRequests: ScopedReadRequest[],
|
|
820
|
+
scopedNoteHashesCLA: ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>,
|
|
821
|
+
scopedNullifiersCLA: ClaimedLengthArray<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>,
|
|
822
|
+
) {
|
|
823
|
+
const noteHashReadRequestsCLA = new ClaimedLengthArray<ScopedReadRequest, typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>(
|
|
824
|
+
padArrayEnd(noteHashReadRequests, ScopedReadRequest.empty(), MAX_NOTE_HASH_READ_REQUESTS_PER_TX),
|
|
825
|
+
noteHashReadRequests.length,
|
|
826
|
+
);
|
|
827
|
+
const nullifierReadRequestsCLA = new ClaimedLengthArray<ScopedReadRequest, typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>(
|
|
828
|
+
padArrayEnd(nullifierReadRequests, ScopedReadRequest.empty(), MAX_NULLIFIER_READ_REQUESTS_PER_TX),
|
|
829
|
+
nullifierReadRequests.length,
|
|
830
|
+
);
|
|
831
|
+
|
|
832
|
+
const noteHashResetActions = getNoteHashReadRequestResetActions(noteHashReadRequestsCLA, scopedNoteHashesCLA);
|
|
833
|
+
const nullifierResetActions = getNullifierReadRequestResetActions(nullifierReadRequestsCLA, scopedNullifiersCLA);
|
|
834
|
+
|
|
835
|
+
const settledNoteHashReads: { index: number; value: Fr }[] = [];
|
|
836
|
+
for (let i = 0; i < noteHashResetActions.actions.length; i++) {
|
|
837
|
+
if (noteHashResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
|
|
838
|
+
settledNoteHashReads.push({ index: i, value: noteHashReadRequests[i].value });
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
const settledNullifierReads: { index: number; value: Fr }[] = [];
|
|
843
|
+
for (let i = 0; i < nullifierResetActions.actions.length; i++) {
|
|
844
|
+
if (nullifierResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
|
|
845
|
+
settledNullifierReads.push({ index: i, value: nullifierReadRequests[i].value });
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
const [noteHashResults, nullifierResults] = await Promise.all([
|
|
850
|
+
settledNoteHashReads.length > 0
|
|
851
|
+
? node.findLeavesIndexes(
|
|
852
|
+
anchorBlockHash,
|
|
853
|
+
MerkleTreeId.NOTE_HASH_TREE,
|
|
854
|
+
settledNoteHashReads.map(({ value }) => value),
|
|
855
|
+
)
|
|
856
|
+
: [],
|
|
857
|
+
settledNullifierReads.length > 0
|
|
858
|
+
? node.findLeavesIndexes(
|
|
859
|
+
anchorBlockHash,
|
|
860
|
+
MerkleTreeId.NULLIFIER_TREE,
|
|
861
|
+
settledNullifierReads.map(({ value }) => value),
|
|
862
|
+
)
|
|
863
|
+
: [],
|
|
864
|
+
]);
|
|
865
|
+
|
|
866
|
+
for (let i = 0; i < settledNoteHashReads.length; i++) {
|
|
867
|
+
if (!noteHashResults[i]) {
|
|
868
|
+
throw new Error(
|
|
869
|
+
`Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`,
|
|
870
|
+
);
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
for (let i = 0; i < settledNullifierReads.length; i++) {
|
|
875
|
+
if (!nullifierResults[i]) {
|
|
876
|
+
throw new Error(
|
|
877
|
+
`Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`,
|
|
878
|
+
);
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
|
|
497
883
|
function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertibleSideEffectCounter: number) {
|
|
498
884
|
const revertibleSideEffects: T[] = [];
|
|
499
885
|
const nonRevertibleSideEffects: T[] = [];
|
|
500
886
|
effects.forEach(effect => {
|
|
501
|
-
if (effect.counter < minRevertibleSideEffectCounter) {
|
|
887
|
+
if (minRevertibleSideEffectCounter === 0 || effect.counter < minRevertibleSideEffectCounter) {
|
|
502
888
|
nonRevertibleSideEffects.push(effect.sideEffect);
|
|
503
889
|
} else {
|
|
504
890
|
revertibleSideEffects.push(effect.sideEffect);
|
|
@@ -507,21 +893,24 @@ function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertib
|
|
|
507
893
|
return [nonRevertibleSideEffects, revertibleSideEffects];
|
|
508
894
|
}
|
|
509
895
|
|
|
510
|
-
function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccumulatedData) {
|
|
896
|
+
function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccumulatedData, isPrivateOnlyTx: boolean) {
|
|
511
897
|
let meteredDAFields = 0;
|
|
512
898
|
let meteredL2Gas = 0;
|
|
513
899
|
|
|
514
900
|
const numNoteHashes = arrayNonEmptyLength(data.noteHashes, hash => hash.isEmpty());
|
|
515
901
|
meteredDAFields += numNoteHashes;
|
|
516
|
-
|
|
902
|
+
const noteHashBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NOTE_HASH : AVM_EMITNOTEHASH_BASE_L2_GAS;
|
|
903
|
+
meteredL2Gas += numNoteHashes * noteHashBaseGas;
|
|
517
904
|
|
|
518
905
|
const numNullifiers = arrayNonEmptyLength(data.nullifiers, nullifier => nullifier.isEmpty());
|
|
519
906
|
meteredDAFields += numNullifiers;
|
|
520
|
-
|
|
907
|
+
const nullifierBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NULLIFIER : AVM_EMITNULLIFIER_BASE_L2_GAS;
|
|
908
|
+
meteredL2Gas += numNullifiers * nullifierBaseGas;
|
|
521
909
|
|
|
522
910
|
const numL2toL1Messages = arrayNonEmptyLength(data.l2ToL1Msgs, msg => msg.isEmpty());
|
|
523
911
|
meteredDAFields += numL2toL1Messages;
|
|
524
|
-
|
|
912
|
+
const l2ToL1MessageBaseGas = isPrivateOnlyTx ? L2_GAS_PER_L2_TO_L1_MSG : AVM_SENDL2TOL1MSG_BASE_L2_GAS;
|
|
913
|
+
meteredL2Gas += numL2toL1Messages * l2ToL1MessageBaseGas;
|
|
525
914
|
|
|
526
915
|
const numPrivatelogs = arrayNonEmptyLength(data.privateLogs, log => log.isEmpty());
|
|
527
916
|
// Every private log emits its length as an additional field
|
|
@@ -529,14 +918,19 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
|
|
|
529
918
|
meteredL2Gas += numPrivatelogs * L2_GAS_PER_PRIVATE_LOG;
|
|
530
919
|
|
|
531
920
|
const numContractClassLogs = arrayNonEmptyLength(data.contractClassLogsHashes, log => log.isEmpty());
|
|
532
|
-
// Every contract class log emits its
|
|
921
|
+
// Every contract class log emits its contract address as an additional field
|
|
533
922
|
meteredDAFields += data.contractClassLogsHashes.reduce(
|
|
534
|
-
(acc, log) => (!log.isEmpty() ? acc + log.logHash.length +
|
|
923
|
+
(acc, log) => (!log.isEmpty() ? acc + log.logHash.length + 1 : acc),
|
|
535
924
|
0,
|
|
536
925
|
);
|
|
537
926
|
meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
|
|
538
927
|
|
|
539
|
-
|
|
928
|
+
if (isPrivateOnlyTx) {
|
|
929
|
+
// The public data write that the private tx base rollup always performs to update the fee payer's balance.
|
|
930
|
+
meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
|
|
540
934
|
|
|
541
935
|
if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
|
|
542
936
|
const dataForPublic = data as PrivateToPublicAccumulatedData;
|