@aztec/pxe 0.0.1-commit.3fd054f6 → 0.0.1-commit.431c48d
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 +22 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +18 -14
- package/dest/config/package_info.js +1 -1
- package/dest/contract/contract_call_graph.d.ts +52 -0
- package/dest/contract/contract_call_graph.d.ts.map +1 -0
- package/dest/contract/contract_call_graph.js +91 -0
- 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 +83 -0
- package/dest/contract/contract_sync_service.d.ts.map +1 -0
- package/dest/contract/contract_sync_service.js +213 -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 +27 -28
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +94 -68
- 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 +5 -9
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
- package/dest/contract_function_simulator/index.d.ts +26 -6
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +11 -4
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -5
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -9
- package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.js +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 -61
- package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
- package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -5
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +8 -10
- package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
- package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/option.js +67 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
- package/dest/contract_function_simulator/noir-structs/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 -103
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
- package/dest/contract_function_simulator/oracle/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 +3 -4
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +52 -42
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +210 -66
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +167 -80
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +651 -198
- 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 +9 -7
- 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/job_coordinator/job_coordinator.d.ts +10 -1
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
- package/dest/job_coordinator/job_coordinator.js +19 -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 +167 -55
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +394 -219
- 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 +44 -13
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +91 -36
- 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 +7 -6
- 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 +24 -27
- 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 -7
- 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 +39 -37
- 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 +40 -9
- package/src/config/package_info.ts +1 -1
- package/src/contract/contract_call_graph.ts +113 -0
- package/src/contract/contract_class_service.ts +45 -0
- package/src/contract/contract_sync_service.ts +342 -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 +148 -84
- 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 +5 -9
- package/src/contract_function_simulator/index.ts +89 -5
- package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
- package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
- package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
- package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -7
- package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
- package/src/contract_function_simulator/noir-structs/fact_collection.ts +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 -61
- package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -8
- package/src/contract_function_simulator/noir-structs/option.ts +75 -0
- package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
- package/src/contract_function_simulator/noir-structs/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 +3 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +257 -91
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +951 -317
- 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 +11 -18
- 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/job_coordinator/job_coordinator.ts +30 -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 +586 -265
- 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 +123 -50
- 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 +11 -5
- 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 +30 -38
- 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 +50 -44
- 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/noir-structs/message_tx_context.d.ts +0 -16
- package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +0 -1
- package/dest/contract_function_simulator/noir-structs/message_tx_context.js +0 -57
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -42
- package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -61
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/oracle.js +0 -437
- package/dest/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 -45
- package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
- package/dest/contract_sync/contract_sync_service.js +0 -114
- 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/messages/message_context_service.d.ts +0 -17
- package/dest/messages/message_context_service.d.ts.map +0 -1
- package/dest/messages/message_context_service.js +0 -36
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
- package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +0 -12
- 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 -39
- package/src/access_scopes.ts +0 -9
- package/src/contract_function_simulator/benchmarked_node.ts +0 -103
- package/src/contract_function_simulator/noir-structs/message_tx_context.ts +0 -55
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -135
- package/src/contract_function_simulator/oracle/oracle.ts +0 -675
- package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
- package/src/contract_sync/contract_sync_service.ts +0 -181
- package/src/contract_sync/helpers.ts +0 -98
- package/src/messages/message_context_service.ts +0 -45
- package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -140
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +0 -51
|
@@ -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
|
+
}
|
|
@@ -19,12 +19,14 @@ import {
|
|
|
19
19
|
MAX_PRIVATE_LOGS_PER_TX,
|
|
20
20
|
MAX_TX_LIFETIME,
|
|
21
21
|
PRIVATE_TX_L2_GAS_OVERHEAD,
|
|
22
|
+
PUBLIC_DATA_WRITE_LENGTH,
|
|
22
23
|
PUBLIC_TX_L2_GAS_OVERHEAD,
|
|
23
24
|
TX_DA_GAS_OVERHEAD,
|
|
24
25
|
} from '@aztec/constants';
|
|
25
26
|
import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
|
|
26
27
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
27
28
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
29
|
+
import { allToCompletion } from '@aztec/foundation/promise';
|
|
28
30
|
import { Timer } from '@aztec/foundation/timer';
|
|
29
31
|
import type { KeyStore } from '@aztec/key-store';
|
|
30
32
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
@@ -42,7 +44,7 @@ import type { FunctionCall } from '@aztec/stdlib/abi';
|
|
|
42
44
|
import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
43
45
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
44
46
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
45
|
-
import type { BlockParameter } from '@aztec/stdlib/block';
|
|
47
|
+
import type { BlockParameter, L2TipsProvider } from '@aztec/stdlib/block';
|
|
46
48
|
import { Gas } from '@aztec/stdlib/gas';
|
|
47
49
|
import {
|
|
48
50
|
computeNoteHashNonce,
|
|
@@ -76,9 +78,11 @@ import {
|
|
|
76
78
|
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
77
79
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
78
80
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
81
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
79
82
|
import {
|
|
80
83
|
BlockHeader,
|
|
81
84
|
CallContext,
|
|
85
|
+
type ContractOverrides,
|
|
82
86
|
HashedValues,
|
|
83
87
|
type OffchainEffect,
|
|
84
88
|
PrivateExecutionResult,
|
|
@@ -89,32 +93,33 @@ import {
|
|
|
89
93
|
getFinalMinRevertibleSideEffectCounter,
|
|
90
94
|
} from '@aztec/stdlib/tx';
|
|
91
95
|
|
|
92
|
-
import type {
|
|
93
|
-
import type { ContractSyncService } from '../
|
|
94
|
-
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';
|
|
95
100
|
import type { AddressStore } from '../storage/address_store/address_store.js';
|
|
101
|
+
import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
|
|
96
102
|
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
97
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';
|
|
98
106
|
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
99
107
|
import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
100
108
|
import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
|
|
101
|
-
import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
|
|
102
109
|
import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
|
|
103
|
-
import type {
|
|
110
|
+
import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
|
|
111
|
+
import { AnchoredContractData } from './anchored_contract_data.js';
|
|
104
112
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
105
113
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
106
114
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
107
|
-
import {
|
|
115
|
+
import { buildACIRCallback } from './oracle/acir_callback.js';
|
|
108
116
|
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
109
117
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
110
118
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
119
|
+
import { TransientArrayService } from './transient_array_service.js';
|
|
111
120
|
|
|
112
121
|
/** Options for ContractFunctionSimulator.run. */
|
|
113
122
|
export type ContractSimulatorRunOpts = {
|
|
114
|
-
/** The address of the contract (should match request.origin). */
|
|
115
|
-
contractAddress: AztecAddress;
|
|
116
|
-
/** The function selector of the entry point. */
|
|
117
|
-
selector: FunctionSelector;
|
|
118
123
|
/** The address calling the function. Can be replaced to simulate a call from another contract or account. */
|
|
119
124
|
msgSender?: AztecAddress;
|
|
120
125
|
/** The block header to use as base state for this run. */
|
|
@@ -122,7 +127,7 @@ export type ContractSimulatorRunOpts = {
|
|
|
122
127
|
/** The address used as a tagging sender when emitting private logs. */
|
|
123
128
|
senderForTags?: AztecAddress;
|
|
124
129
|
/** The accounts whose notes we can access in this call. */
|
|
125
|
-
scopes:
|
|
130
|
+
scopes: AztecAddress[];
|
|
126
131
|
/** The job ID for staged writes. */
|
|
127
132
|
jobId: string;
|
|
128
133
|
};
|
|
@@ -130,18 +135,24 @@ export type ContractSimulatorRunOpts = {
|
|
|
130
135
|
/** Args for ContractFunctionSimulator constructor. */
|
|
131
136
|
export type ContractFunctionSimulatorArgs = {
|
|
132
137
|
contractStore: ContractStore;
|
|
138
|
+
contractClassService: ContractClassService;
|
|
139
|
+
/** Per-simulation contract overrides. */
|
|
140
|
+
overrides?: ContractOverrides;
|
|
133
141
|
noteStore: NoteStore;
|
|
134
142
|
keyStore: KeyStore;
|
|
135
143
|
addressStore: AddressStore;
|
|
136
144
|
aztecNode: AztecNode;
|
|
145
|
+
l2TipsStore: L2TipsProvider;
|
|
137
146
|
senderTaggingStore: SenderTaggingStore;
|
|
138
147
|
recipientTaggingStore: RecipientTaggingStore;
|
|
139
|
-
|
|
148
|
+
taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
140
149
|
capsuleStore: CapsuleStore;
|
|
150
|
+
factStore: FactStore;
|
|
141
151
|
privateEventStore: PrivateEventStore;
|
|
142
152
|
simulator: CircuitSimulator;
|
|
143
153
|
contractSyncService: ContractSyncService;
|
|
144
|
-
|
|
154
|
+
txResolver: TxResolverService;
|
|
155
|
+
hooks?: ExecutionHooks;
|
|
145
156
|
};
|
|
146
157
|
|
|
147
158
|
/**
|
|
@@ -150,33 +161,43 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
150
161
|
export class ContractFunctionSimulator {
|
|
151
162
|
private readonly log: Logger;
|
|
152
163
|
private readonly contractStore: ContractStore;
|
|
164
|
+
private readonly contractClassService: ContractClassService;
|
|
165
|
+
private readonly overrides: ContractOverrides | undefined;
|
|
153
166
|
private readonly noteStore: NoteStore;
|
|
154
167
|
private readonly keyStore: KeyStore;
|
|
155
168
|
private readonly addressStore: AddressStore;
|
|
156
169
|
private readonly aztecNode: AztecNode;
|
|
170
|
+
private readonly l2TipsStore: L2TipsProvider;
|
|
157
171
|
private readonly senderTaggingStore: SenderTaggingStore;
|
|
158
172
|
private readonly recipientTaggingStore: RecipientTaggingStore;
|
|
159
|
-
private readonly
|
|
173
|
+
private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
160
174
|
private readonly capsuleStore: CapsuleStore;
|
|
175
|
+
private readonly factStore: FactStore;
|
|
161
176
|
private readonly privateEventStore: PrivateEventStore;
|
|
162
177
|
private readonly simulator: CircuitSimulator;
|
|
163
178
|
private readonly contractSyncService: ContractSyncService;
|
|
164
|
-
private readonly
|
|
179
|
+
private readonly txResolver: TxResolverService;
|
|
180
|
+
private readonly hooks: ExecutionHooks | undefined;
|
|
165
181
|
|
|
166
182
|
constructor(args: ContractFunctionSimulatorArgs) {
|
|
167
183
|
this.contractStore = args.contractStore;
|
|
184
|
+
this.contractClassService = args.contractClassService;
|
|
185
|
+
this.overrides = args.overrides;
|
|
168
186
|
this.noteStore = args.noteStore;
|
|
169
187
|
this.keyStore = args.keyStore;
|
|
170
188
|
this.addressStore = args.addressStore;
|
|
171
189
|
this.aztecNode = args.aztecNode;
|
|
190
|
+
this.l2TipsStore = args.l2TipsStore;
|
|
172
191
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
173
192
|
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
174
|
-
this.
|
|
193
|
+
this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
|
|
175
194
|
this.capsuleStore = args.capsuleStore;
|
|
195
|
+
this.factStore = args.factStore;
|
|
176
196
|
this.privateEventStore = args.privateEventStore;
|
|
177
197
|
this.simulator = args.simulator;
|
|
178
198
|
this.contractSyncService = args.contractSyncService;
|
|
179
|
-
this.
|
|
199
|
+
this.txResolver = args.txResolver;
|
|
200
|
+
this.hooks = args.hooks;
|
|
180
201
|
this.log = createLogger('simulator');
|
|
181
202
|
}
|
|
182
203
|
|
|
@@ -187,9 +208,7 @@ export class ContractFunctionSimulator {
|
|
|
187
208
|
public async run(
|
|
188
209
|
request: TxExecutionRequest,
|
|
189
210
|
{
|
|
190
|
-
|
|
191
|
-
selector,
|
|
192
|
-
msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
|
|
211
|
+
msgSender = AztecAddress.NULL_MSG_SENDER,
|
|
193
212
|
anchorBlockHeader,
|
|
194
213
|
senderForTags,
|
|
195
214
|
scopes,
|
|
@@ -198,18 +217,30 @@ export class ContractFunctionSimulator {
|
|
|
198
217
|
): Promise<PrivateExecutionResult> {
|
|
199
218
|
const simulatorSetupTimer = new Timer();
|
|
200
219
|
|
|
201
|
-
const
|
|
220
|
+
const contractAddress = request.origin;
|
|
202
221
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
222
|
+
const anchoredContractData = new AnchoredContractData(
|
|
223
|
+
this.contractStore,
|
|
224
|
+
this.contractClassService,
|
|
225
|
+
anchorBlockHeader,
|
|
226
|
+
this.overrides,
|
|
227
|
+
);
|
|
206
228
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
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(...).`,
|
|
210
237
|
);
|
|
211
238
|
}
|
|
212
239
|
|
|
240
|
+
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
241
|
+
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
242
|
+
}
|
|
243
|
+
|
|
213
244
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
214
245
|
const startSideEffectCounter = 2;
|
|
215
246
|
|
|
@@ -224,9 +255,15 @@ export class ContractFunctionSimulator {
|
|
|
224
255
|
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
225
256
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
226
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
|
+
|
|
227
263
|
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
228
264
|
argsHash: request.firstCallArgsHash,
|
|
229
265
|
txContext: request.txContext,
|
|
266
|
+
txRequestSalt: request.salt,
|
|
230
267
|
callContext,
|
|
231
268
|
anchorBlockHeader,
|
|
232
269
|
utilityExecutor: async (call, execScopes) => {
|
|
@@ -237,17 +274,18 @@ export class ContractFunctionSimulator {
|
|
|
237
274
|
executionCache: HashedValuesCache.create(request.argsOfCalls),
|
|
238
275
|
noteCache,
|
|
239
276
|
taggingIndexCache,
|
|
240
|
-
|
|
277
|
+
anchoredContractData,
|
|
241
278
|
noteStore: this.noteStore,
|
|
242
279
|
keyStore: this.keyStore,
|
|
243
280
|
addressStore: this.addressStore,
|
|
244
281
|
aztecNode: this.aztecNode,
|
|
245
282
|
senderTaggingStore: this.senderTaggingStore,
|
|
246
283
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
247
|
-
|
|
248
|
-
|
|
284
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
285
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
286
|
+
factService: new FactService(this.factStore, scopes),
|
|
249
287
|
privateEventStore: this.privateEventStore,
|
|
250
|
-
|
|
288
|
+
txResolver: this.txResolver,
|
|
251
289
|
contractSyncService: this.contractSyncService,
|
|
252
290
|
jobId,
|
|
253
291
|
totalPublicCalldataCount: 0,
|
|
@@ -255,6 +293,9 @@ export class ContractFunctionSimulator {
|
|
|
255
293
|
scopes,
|
|
256
294
|
senderForTags,
|
|
257
295
|
simulator: this.simulator,
|
|
296
|
+
l2TipsStore: this.l2TipsStore,
|
|
297
|
+
hooks: this.hooks,
|
|
298
|
+
transientArrayService,
|
|
258
299
|
});
|
|
259
300
|
|
|
260
301
|
const setupTime = simulatorSetupTimer.ms();
|
|
@@ -273,8 +314,7 @@ export class ContractFunctionSimulator {
|
|
|
273
314
|
);
|
|
274
315
|
const simulatorTeardownTimer = new Timer();
|
|
275
316
|
|
|
276
|
-
noteCache.
|
|
277
|
-
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
317
|
+
const firstNullifier = noteCache.getNonceGenerator();
|
|
278
318
|
|
|
279
319
|
const publicCallRequests = collectNested([executionResult], r =>
|
|
280
320
|
r.publicInputs.publicCallRequests
|
|
@@ -282,9 +322,9 @@ export class ContractFunctionSimulator {
|
|
|
282
322
|
.map(r => r.inner)
|
|
283
323
|
.concat(r.publicInputs.publicTeardownCallRequest.isEmpty() ? [] : [r.publicInputs.publicTeardownCallRequest]),
|
|
284
324
|
);
|
|
285
|
-
const publicFunctionsCalldata = await
|
|
325
|
+
const publicFunctionsCalldata = await allToCompletion(
|
|
286
326
|
publicCallRequests.map(async r => {
|
|
287
|
-
const calldata = await privateExecutionOracle.
|
|
327
|
+
const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
|
|
288
328
|
return new HashedValues(calldata, r.calldataHash);
|
|
289
329
|
}),
|
|
290
330
|
);
|
|
@@ -297,55 +337,79 @@ export class ContractFunctionSimulator {
|
|
|
297
337
|
}
|
|
298
338
|
|
|
299
339
|
// Not to be confused with a PrivateCallExecutionResult. This is a superset
|
|
300
|
-
// of the PrivateCallExecutionResult, containing also
|
|
340
|
+
// of the PrivateCallExecutionResult, containing also firstNullifier
|
|
301
341
|
// and publicFunctionsCalldata.
|
|
302
|
-
return new PrivateExecutionResult(executionResult,
|
|
342
|
+
return new PrivateExecutionResult(executionResult, firstNullifier, publicFunctionsCalldata);
|
|
303
343
|
} catch (err) {
|
|
304
344
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
305
345
|
}
|
|
306
346
|
}
|
|
307
347
|
|
|
308
|
-
// docs:start:execute_utility_function
|
|
309
348
|
/**
|
|
310
349
|
* Runs a utility function.
|
|
311
350
|
* @param call - The function call to execute.
|
|
312
|
-
* @param authwits - Authentication witnesses required for the function call.
|
|
313
|
-
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
314
|
-
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
315
|
-
* accounts if not specified.
|
|
316
351
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
317
352
|
*/
|
|
318
353
|
public async runUtility(
|
|
319
354
|
call: FunctionCall,
|
|
320
355
|
authwits: AuthWitness[],
|
|
321
356
|
anchorBlockHeader: BlockHeader,
|
|
322
|
-
scopes:
|
|
357
|
+
scopes: AztecAddress[],
|
|
323
358
|
jobId: string,
|
|
324
359
|
): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
|
|
325
|
-
const
|
|
360
|
+
const anchoredContractData = new AnchoredContractData(
|
|
361
|
+
this.contractStore,
|
|
362
|
+
this.contractClassService,
|
|
363
|
+
anchorBlockHeader,
|
|
364
|
+
this.overrides,
|
|
365
|
+
);
|
|
366
|
+
|
|
367
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
368
|
+
if (!entryPointArtifact) {
|
|
369
|
+
throw new Error(
|
|
370
|
+
`Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` +
|
|
371
|
+
`Register it via wallet.registerContract(...).`,
|
|
372
|
+
);
|
|
373
|
+
}
|
|
326
374
|
|
|
327
375
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
328
376
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
329
377
|
}
|
|
330
378
|
|
|
379
|
+
const utilityExecutor = async (syncCall: FunctionCall, execScopes: AztecAddress[]) => {
|
|
380
|
+
await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
|
|
381
|
+
};
|
|
382
|
+
|
|
331
383
|
const oracle = new UtilityExecutionOracle({
|
|
332
|
-
|
|
384
|
+
callContext: CallContext.from({
|
|
385
|
+
msgSender: AztecAddress.NULL_MSG_SENDER,
|
|
386
|
+
contractAddress: call.to,
|
|
387
|
+
functionSelector: call.selector,
|
|
388
|
+
isStaticCall: true,
|
|
389
|
+
}),
|
|
333
390
|
authWitnesses: authwits,
|
|
334
391
|
capsules: [],
|
|
335
392
|
anchorBlockHeader,
|
|
336
|
-
|
|
393
|
+
anchoredContractData,
|
|
337
394
|
noteStore: this.noteStore,
|
|
338
395
|
keyStore: this.keyStore,
|
|
339
396
|
addressStore: this.addressStore,
|
|
340
397
|
aztecNode: this.aztecNode,
|
|
341
398
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
342
|
-
|
|
343
|
-
|
|
399
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
400
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
401
|
+
factService: new FactService(this.factStore, scopes),
|
|
344
402
|
privateEventStore: this.privateEventStore,
|
|
345
|
-
|
|
403
|
+
txResolver: this.txResolver,
|
|
346
404
|
contractSyncService: this.contractSyncService,
|
|
405
|
+
l2TipsStore: this.l2TipsStore,
|
|
347
406
|
jobId,
|
|
348
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(),
|
|
349
413
|
});
|
|
350
414
|
|
|
351
415
|
try {
|
|
@@ -356,7 +420,7 @@ export class ContractFunctionSimulator {
|
|
|
356
420
|
|
|
357
421
|
const initialWitness = toACVMWitness(0, call.args);
|
|
358
422
|
const acirExecutionResult = await this.simulator
|
|
359
|
-
.executeUserCircuit(initialWitness, entryPointArtifact,
|
|
423
|
+
.executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle))
|
|
360
424
|
.catch((err: Error) => {
|
|
361
425
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
362
426
|
throw new ExecutionError(
|
|
@@ -379,23 +443,6 @@ export class ContractFunctionSimulator {
|
|
|
379
443
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
380
444
|
}
|
|
381
445
|
}
|
|
382
|
-
// docs:end:execute_utility_function
|
|
383
|
-
|
|
384
|
-
/**
|
|
385
|
-
* Returns the execution statistics collected during the simulator run.
|
|
386
|
-
* @returns The execution statistics.
|
|
387
|
-
*/
|
|
388
|
-
getStats() {
|
|
389
|
-
const nodeRPCCalls =
|
|
390
|
-
typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
|
|
391
|
-
? (this.aztecNode as BenchmarkedNode).getStats()
|
|
392
|
-
: {
|
|
393
|
-
perMethod: {},
|
|
394
|
-
roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
|
|
395
|
-
};
|
|
396
|
-
|
|
397
|
-
return { nodeRPCCalls };
|
|
398
|
-
}
|
|
399
446
|
}
|
|
400
447
|
|
|
401
448
|
class OrderedSideEffect<T> {
|
|
@@ -481,7 +528,7 @@ export async function generateSimulatedProvingResult(
|
|
|
481
528
|
scopedNullifiers.push(...execution.publicInputs.nullifiers.getActiveItems().map(n => n.scope(contractAddress)));
|
|
482
529
|
|
|
483
530
|
taggedPrivateLogs.push(
|
|
484
|
-
...(await
|
|
531
|
+
...(await allToCompletion(
|
|
485
532
|
execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
|
|
486
533
|
metadata.log.fields[0] = await computeSiloedPrivateLogFirstField(contractAddress, metadata.log.fields[0]);
|
|
487
534
|
return new OrderedSideEffect(metadata, metadata.counter);
|
|
@@ -560,12 +607,12 @@ export async function generateSimulatedProvingResult(
|
|
|
560
607
|
scopedNullifiersCLA,
|
|
561
608
|
);
|
|
562
609
|
|
|
563
|
-
const siloedNoteHashes = await
|
|
610
|
+
const siloedNoteHashes = await allToCompletion(
|
|
564
611
|
filteredNoteHashes
|
|
565
612
|
.sort((a, b) => a.counter - b.counter)
|
|
566
613
|
.map(async nh => new OrderedSideEffect(await siloNoteHash(nh.contractAddress, nh.value), nh.counter)),
|
|
567
614
|
);
|
|
568
|
-
const siloedNullifiers = await
|
|
615
|
+
const siloedNullifiers = await allToCompletion(
|
|
569
616
|
filteredNullifiers
|
|
570
617
|
.sort((a, b) => a.counter - b.counter)
|
|
571
618
|
.map(async n => new OrderedSideEffect(await siloNullifier(n.contractAddress, n.value), n.counter)),
|
|
@@ -592,17 +639,17 @@ export async function generateSimulatedProvingResult(
|
|
|
592
639
|
siloedNullifiers,
|
|
593
640
|
minRevertibleSideEffectCounter,
|
|
594
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.
|
|
595
646
|
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
596
|
-
|
|
597
|
-
nonRevertibleNullifiers.push(nonceGenerator);
|
|
598
|
-
} else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
|
|
599
|
-
throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
|
|
600
|
-
}
|
|
647
|
+
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
601
648
|
|
|
602
649
|
if (isPrivateOnlyTx) {
|
|
603
650
|
// We must make the note hashes unique by using the
|
|
604
651
|
// nonce generator and their index in the tx.
|
|
605
|
-
const uniqueNoteHashes = await
|
|
652
|
+
const uniqueNoteHashes = await allToCompletion(
|
|
606
653
|
siloedNoteHashes.map(async (orderedSideEffect, i) => {
|
|
607
654
|
const siloedNoteHash = orderedSideEffect.sideEffect;
|
|
608
655
|
const nonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
@@ -632,7 +679,7 @@ export async function generateSimulatedProvingResult(
|
|
|
632
679
|
siloedNoteHashes,
|
|
633
680
|
minRevertibleSideEffectCounter,
|
|
634
681
|
);
|
|
635
|
-
const nonRevertibleUniqueNoteHashes = await
|
|
682
|
+
const nonRevertibleUniqueNoteHashes = await allToCompletion(
|
|
636
683
|
nonRevertibleNoteHashes.map(async (noteHash, i) => {
|
|
637
684
|
const nonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
638
685
|
return await computeUniqueNoteHash(nonce, noteHash);
|
|
@@ -748,7 +795,7 @@ function squashTransientSideEffects(
|
|
|
748
795
|
* at the tx's anchor block, mimicking the behavior of the kernels
|
|
749
796
|
*/
|
|
750
797
|
async function verifyReadRequests(
|
|
751
|
-
node: Pick<AztecNode, '
|
|
798
|
+
node: Pick<AztecNode, 'findLeavesIndexes'>,
|
|
752
799
|
anchorBlockHash: BlockParameter,
|
|
753
800
|
noteHashReadRequests: ScopedReadRequest[],
|
|
754
801
|
nullifierReadRequests: ScopedReadRequest[],
|
|
@@ -781,13 +828,25 @@ async function verifyReadRequests(
|
|
|
781
828
|
}
|
|
782
829
|
}
|
|
783
830
|
|
|
784
|
-
const [
|
|
785
|
-
|
|
786
|
-
|
|
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
|
+
: [],
|
|
787
846
|
]);
|
|
788
847
|
|
|
789
848
|
for (let i = 0; i < settledNoteHashReads.length; i++) {
|
|
790
|
-
if (!
|
|
849
|
+
if (!noteHashResults[i]) {
|
|
791
850
|
throw new Error(
|
|
792
851
|
`Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`,
|
|
793
852
|
);
|
|
@@ -795,7 +854,7 @@ async function verifyReadRequests(
|
|
|
795
854
|
}
|
|
796
855
|
|
|
797
856
|
for (let i = 0; i < settledNullifierReads.length; i++) {
|
|
798
|
-
if (!
|
|
857
|
+
if (!nullifierResults[i]) {
|
|
799
858
|
throw new Error(
|
|
800
859
|
`Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`,
|
|
801
860
|
);
|
|
@@ -848,6 +907,11 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
|
|
|
848
907
|
);
|
|
849
908
|
meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
|
|
850
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
|
+
|
|
851
915
|
const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
|
|
852
916
|
|
|
853
917
|
if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
|