@aztec/pxe 0.0.1-commit.9ef841308 → 0.0.1-commit.a5db02d
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 +45 -111
- 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 +23 -15
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +78 -28
- package/dest/config/index.d.ts +8 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +13 -14
- 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/aztec_node_read_cache.d.ts +39 -0
- package/dest/contract_function_simulator/aztec_node_read_cache.d.ts.map +1 -0
- package/dest/contract_function_simulator/aztec_node_read_cache.js +60 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +27 -21
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +83 -42
- 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 +8 -28
- 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 +12 -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 +4 -3
- 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 +5 -4
- 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 +4 -3
- 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 +6 -5
- 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 +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 +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 +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 +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +2 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +47 -37
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +184 -55
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +146 -69
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +484 -180
- 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/debug/pxe_debug_utils.d.ts +4 -9
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +0 -6
- package/dest/entrypoints/client/bundle/index.d.ts +2 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +27 -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 +27 -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 +28 -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 +28 -8
- package/dest/error_enriching.d.ts +5 -3
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +13 -11
- package/dest/events/event_service.d.ts +13 -5
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +30 -9
- package/dest/events/private_event_filter_validator.d.ts +3 -2
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +15 -0
- package/dest/hooks/authorize_utility_call.d.ts +41 -0
- package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
- package/dest/hooks/authorize_utility_call.js +4 -0
- package/dest/hooks/execution_hooks.d.ts +62 -0
- package/dest/hooks/execution_hooks.d.ts.map +1 -0
- package/dest/hooks/execution_hooks.js +9 -0
- package/dest/hooks/index.d.ts +5 -0
- package/dest/hooks/index.d.ts.map +1 -0
- package/dest/hooks/index.js +2 -0
- package/dest/hooks/resolve_custom_request.d.ts +23 -0
- package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
- package/dest/hooks/resolve_custom_request.js +3 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
- package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
- package/dest/logs/log_service.d.ts +14 -11
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +185 -72
- 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/note_service.d.ts +28 -7
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +81 -66
- 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 +7 -3
- 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 +159 -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 +337 -206
- 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 +2 -3
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_service.js +6 -9
- package/dest/storage/capsule_store/capsule_store.d.ts +1 -1
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_store.js +8 -5
- 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 +70 -98
- 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 +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 +199 -170
- 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 +43 -43
- 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 +23 -7
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +51 -14
- 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 +18 -9
- package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +36 -37
- package/dest/tagging/index.d.ts +5 -4
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +4 -3
- 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 +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 +4 -5
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +26 -14
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -6
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +21 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
- 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 +8 -4
- package/package.json +20 -17
- package/src/bin/check_oracle_version.ts +51 -133
- 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 +96 -39
- package/src/config/index.ts +15 -8
- 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/aztec_node_read_cache.ts +89 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +137 -58
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- package/src/contract_function_simulator/execution_note_cache.ts +8 -29
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
- package/src/contract_function_simulator/index.ts +69 -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 -4
- 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 -5
- 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 +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 +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 -185
- 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 +711 -0
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +964 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +2 -3
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +233 -79
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +747 -338
- package/src/contract_function_simulator/pick_notes.ts +22 -3
- package/src/contract_function_simulator/transient_array_service.ts +91 -0
- package/src/debug/pxe_debug_utils.ts +4 -12
- package/src/entrypoints/client/bundle/index.ts +1 -1
- package/src/entrypoints/client/bundle/utils.ts +32 -8
- package/src/entrypoints/client/lazy/index.ts +1 -1
- package/src/entrypoints/client/lazy/utils.ts +32 -8
- package/src/entrypoints/client/store.ts +38 -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 +45 -14
- package/src/error_enriching.ts +27 -11
- package/src/events/event_service.ts +54 -19
- package/src/events/private_event_filter_validator.ts +21 -1
- package/src/hooks/authorize_utility_call.ts +44 -0
- package/src/hooks/execution_hooks.ts +68 -0
- package/src/hooks/index.ts +13 -0
- package/src/hooks/resolve_custom_request.ts +24 -0
- package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
- package/src/logs/log_service.ts +216 -139
- package/src/messages/tx_resolver_service.ts +69 -0
- package/src/notes/note_service.ts +118 -95
- 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 +12 -2
- package/src/private_kernel/hints/test_utils.ts +3 -10
- package/src/private_kernel/private_kernel_execution_prover.ts +245 -117
- package/src/private_kernel/private_kernel_oracle.ts +58 -29
- package/src/pxe.ts +533 -236
- 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 +8 -14
- package/src/storage/capsule_store/capsule_store.ts +15 -5
- package/src/storage/contract_store/contract_store.ts +96 -124
- 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 +2 -1
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +228 -192
- 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 +52 -54
- 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 +68 -21
- package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
- package/src/tagging/constants.ts +19 -9
- package/src/tagging/get_all_logs_by_tags.ts +78 -50
- package/src/tagging/index.ts +4 -3
- 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 +2 -2
- package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +41 -19
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +23 -8
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +10 -7
- 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/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 -38
- package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -80
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/oracle.js +0 -458
- 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 -46
- package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
- package/dest/contract_sync/contract_sync_service.js +0 -124
- 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 -60
- 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/src/access_scopes.ts +0 -9
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -98
- package/src/contract_function_simulator/oracle/oracle.ts +0 -721
- package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
- package/src/contract_sync/contract_sync_service.ts +0 -192
- package/src/contract_sync/helpers.ts +0 -99
- package/src/messages/message_context_service.ts +0 -44
- 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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AVM_EMITNOTEHASH_BASE_L2_GAS, AVM_EMITNULLIFIER_BASE_L2_GAS, AVM_SENDL2TOL1MSG_BASE_L2_GAS, DA_GAS_PER_FIELD, FIXED_AVM_STARTUP_L2_GAS, L2_GAS_PER_CONTRACT_CLASS_LOG, L2_GAS_PER_L2_TO_L1_MSG, L2_GAS_PER_NOTE_HASH, L2_GAS_PER_NULLIFIER, L2_GAS_PER_PRIVATE_LOG, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, MAX_TX_LIFETIME, PRIVATE_TX_L2_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
|
|
1
|
+
import { AVM_EMITNOTEHASH_BASE_L2_GAS, AVM_EMITNULLIFIER_BASE_L2_GAS, AVM_SENDL2TOL1MSG_BASE_L2_GAS, DA_GAS_PER_FIELD, FIXED_AVM_STARTUP_L2_GAS, L2_GAS_PER_CONTRACT_CLASS_LOG, L2_GAS_PER_L2_TO_L1_MSG, L2_GAS_PER_NOTE_HASH, L2_GAS_PER_NULLIFIER, L2_GAS_PER_PRIVATE_LOG, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, MAX_TX_LIFETIME, PRIVATE_TX_L2_GAS_OVERHEAD, PUBLIC_DATA_WRITE_LENGTH, PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
|
|
2
2
|
import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -14,69 +14,90 @@ import { ClaimedLengthArray, PartialPrivateTailPublicInputsForPublic, PartialPri
|
|
|
14
14
|
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
15
15
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
16
16
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
17
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
17
18
|
import { CallContext, HashedValues, PrivateExecutionResult, TxConstantData, collectNested, collectNoteHashNullifierCounterMap, getFinalMinRevertibleSideEffectCounter } from '@aztec/stdlib/tx';
|
|
18
19
|
import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
|
|
20
|
+
import { FactService } from '../storage/fact_store/index.js';
|
|
21
|
+
import { AnchoredContractData } from './anchored_contract_data.js';
|
|
19
22
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
20
23
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
21
24
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
22
|
-
import {
|
|
25
|
+
import { buildACIRCallback } from './oracle/acir_callback.js';
|
|
23
26
|
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
24
27
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
25
28
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
29
|
+
import { TransientArrayService } from './transient_array_service.js';
|
|
26
30
|
/**
|
|
27
31
|
* The contract function simulator.
|
|
28
32
|
*/ export class ContractFunctionSimulator {
|
|
29
33
|
log;
|
|
30
34
|
contractStore;
|
|
35
|
+
contractClassService;
|
|
36
|
+
overrides;
|
|
31
37
|
noteStore;
|
|
32
38
|
keyStore;
|
|
33
39
|
addressStore;
|
|
34
40
|
aztecNode;
|
|
41
|
+
l2TipsStore;
|
|
35
42
|
senderTaggingStore;
|
|
36
43
|
recipientTaggingStore;
|
|
37
|
-
|
|
44
|
+
taggingSecretSourcesStore;
|
|
38
45
|
capsuleStore;
|
|
46
|
+
factStore;
|
|
39
47
|
privateEventStore;
|
|
40
48
|
simulator;
|
|
41
49
|
contractSyncService;
|
|
42
|
-
|
|
50
|
+
txResolver;
|
|
51
|
+
hooks;
|
|
43
52
|
constructor(args){
|
|
44
53
|
this.contractStore = args.contractStore;
|
|
54
|
+
this.contractClassService = args.contractClassService;
|
|
55
|
+
this.overrides = args.overrides;
|
|
45
56
|
this.noteStore = args.noteStore;
|
|
46
57
|
this.keyStore = args.keyStore;
|
|
47
58
|
this.addressStore = args.addressStore;
|
|
48
59
|
this.aztecNode = args.aztecNode;
|
|
60
|
+
this.l2TipsStore = args.l2TipsStore;
|
|
49
61
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
50
62
|
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
51
|
-
this.
|
|
63
|
+
this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
|
|
52
64
|
this.capsuleStore = args.capsuleStore;
|
|
65
|
+
this.factStore = args.factStore;
|
|
53
66
|
this.privateEventStore = args.privateEventStore;
|
|
54
67
|
this.simulator = args.simulator;
|
|
55
68
|
this.contractSyncService = args.contractSyncService;
|
|
56
|
-
this.
|
|
69
|
+
this.txResolver = args.txResolver;
|
|
70
|
+
this.hooks = args.hooks;
|
|
57
71
|
this.log = createLogger('simulator');
|
|
58
72
|
}
|
|
59
73
|
/**
|
|
60
74
|
* Runs a private function.
|
|
61
75
|
* @param request - The transaction request.
|
|
62
|
-
*/ async run(request, {
|
|
76
|
+
*/ async run(request, { msgSender = AztecAddress.NULL_MSG_SENDER, anchorBlockHeader, senderForTags, scopes, jobId }) {
|
|
63
77
|
const simulatorSetupTimer = new Timer();
|
|
64
|
-
const
|
|
78
|
+
const contractAddress = request.origin;
|
|
79
|
+
const anchoredContractData = new AnchoredContractData(this.contractStore, this.contractClassService, anchorBlockHeader, this.overrides);
|
|
80
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(contractAddress, request.functionSelector);
|
|
81
|
+
if (!entryPointArtifact) {
|
|
82
|
+
throw new Error(`Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` + `Register it via wallet.registerContract(...).`);
|
|
83
|
+
}
|
|
65
84
|
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
66
85
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
67
86
|
}
|
|
68
|
-
if (request.origin !== contractAddress) {
|
|
69
|
-
this.log.warn(`Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`);
|
|
70
|
-
}
|
|
71
87
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
72
88
|
const startSideEffectCounter = 2;
|
|
73
89
|
const callContext = new CallContext(msgSender, contractAddress, await FunctionSelector.fromNameAndParameters(entryPointArtifact.name, entryPointArtifact.parameters), entryPointArtifact.isStatic);
|
|
74
90
|
const protocolNullifier = await computeProtocolNullifier(await request.toTxRequest().hash());
|
|
75
91
|
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
76
92
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
93
|
+
// One shared transient store for the whole execution tree rooted at this transaction. Threaded into every child
|
|
94
|
+
// private oracle and inherited by nested utility frames, so that frames of the same contract see each other's
|
|
95
|
+
// transient arrays, then discarded when run() returns.
|
|
96
|
+
const transientArrayService = new TransientArrayService();
|
|
77
97
|
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
78
98
|
argsHash: request.firstCallArgsHash,
|
|
79
99
|
txContext: request.txContext,
|
|
100
|
+
txRequestSalt: request.salt,
|
|
80
101
|
callContext,
|
|
81
102
|
anchorBlockHeader,
|
|
82
103
|
utilityExecutor: async (call, execScopes)=>{
|
|
@@ -87,24 +108,28 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
87
108
|
executionCache: HashedValuesCache.create(request.argsOfCalls),
|
|
88
109
|
noteCache,
|
|
89
110
|
taggingIndexCache,
|
|
90
|
-
|
|
111
|
+
anchoredContractData,
|
|
91
112
|
noteStore: this.noteStore,
|
|
92
113
|
keyStore: this.keyStore,
|
|
93
114
|
addressStore: this.addressStore,
|
|
94
115
|
aztecNode: this.aztecNode,
|
|
95
116
|
senderTaggingStore: this.senderTaggingStore,
|
|
96
117
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
97
|
-
|
|
118
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
98
119
|
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
120
|
+
factService: new FactService(this.factStore, scopes),
|
|
99
121
|
privateEventStore: this.privateEventStore,
|
|
100
|
-
|
|
122
|
+
txResolver: this.txResolver,
|
|
101
123
|
contractSyncService: this.contractSyncService,
|
|
102
124
|
jobId,
|
|
103
125
|
totalPublicCalldataCount: 0,
|
|
104
126
|
sideEffectCounter: startSideEffectCounter,
|
|
105
127
|
scopes,
|
|
106
128
|
senderForTags,
|
|
107
|
-
simulator: this.simulator
|
|
129
|
+
simulator: this.simulator,
|
|
130
|
+
l2TipsStore: this.l2TipsStore,
|
|
131
|
+
hooks: this.hooks,
|
|
132
|
+
transientArrayService
|
|
108
133
|
});
|
|
109
134
|
const setupTime = simulatorSetupTimer.ms();
|
|
110
135
|
try {
|
|
@@ -114,8 +139,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
114
139
|
// within executionResult.nestedExecutionResults).
|
|
115
140
|
const executionResult = await executePrivateFunction(this.simulator, privateExecutionOracle, entryPointArtifact, contractAddress, request.functionSelector);
|
|
116
141
|
const simulatorTeardownTimer = new Timer();
|
|
117
|
-
noteCache.
|
|
118
|
-
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
142
|
+
const firstNullifier = noteCache.getNonceGenerator();
|
|
119
143
|
const publicCallRequests = collectNested([
|
|
120
144
|
executionResult
|
|
121
145
|
], (r)=>r.publicInputs.publicCallRequests.getActiveItems().map((r)=>r.inner).concat(r.publicInputs.publicTeardownCallRequest.isEmpty() ? [] : [
|
|
@@ -131,45 +155,59 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
131
155
|
executionResult.profileResult.timings.witgen += setupTime + teardownTime;
|
|
132
156
|
}
|
|
133
157
|
// Not to be confused with a PrivateCallExecutionResult. This is a superset
|
|
134
|
-
// of the PrivateCallExecutionResult, containing also
|
|
158
|
+
// of the PrivateCallExecutionResult, containing also firstNullifier
|
|
135
159
|
// and publicFunctionsCalldata.
|
|
136
|
-
return new PrivateExecutionResult(executionResult,
|
|
160
|
+
return new PrivateExecutionResult(executionResult, firstNullifier, publicFunctionsCalldata);
|
|
137
161
|
} catch (err) {
|
|
138
162
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
139
163
|
}
|
|
140
164
|
}
|
|
141
|
-
// docs:start:execute_utility_function
|
|
142
165
|
/**
|
|
143
166
|
* Runs a utility function.
|
|
144
167
|
* @param call - The function call to execute.
|
|
145
|
-
* @param authwits - Authentication witnesses required for the function call.
|
|
146
|
-
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
147
|
-
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
148
|
-
* accounts if not specified.
|
|
149
168
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
150
169
|
*/ async runUtility(call, authwits, anchorBlockHeader, scopes, jobId) {
|
|
151
|
-
const
|
|
170
|
+
const anchoredContractData = new AnchoredContractData(this.contractStore, this.contractClassService, anchorBlockHeader, this.overrides);
|
|
171
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
172
|
+
if (!entryPointArtifact) {
|
|
173
|
+
throw new Error(`Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` + `Register it via wallet.registerContract(...).`);
|
|
174
|
+
}
|
|
152
175
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
153
176
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
154
177
|
}
|
|
178
|
+
const utilityExecutor = async (syncCall, execScopes)=>{
|
|
179
|
+
await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
|
|
180
|
+
};
|
|
155
181
|
const oracle = new UtilityExecutionOracle({
|
|
156
|
-
|
|
182
|
+
callContext: CallContext.from({
|
|
183
|
+
msgSender: AztecAddress.NULL_MSG_SENDER,
|
|
184
|
+
contractAddress: call.to,
|
|
185
|
+
functionSelector: call.selector,
|
|
186
|
+
isStaticCall: true
|
|
187
|
+
}),
|
|
157
188
|
authWitnesses: authwits,
|
|
158
189
|
capsules: [],
|
|
159
190
|
anchorBlockHeader,
|
|
160
|
-
|
|
191
|
+
anchoredContractData,
|
|
161
192
|
noteStore: this.noteStore,
|
|
162
193
|
keyStore: this.keyStore,
|
|
163
194
|
addressStore: this.addressStore,
|
|
164
195
|
aztecNode: this.aztecNode,
|
|
165
196
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
166
|
-
|
|
197
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
167
198
|
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
199
|
+
factService: new FactService(this.factStore, scopes),
|
|
168
200
|
privateEventStore: this.privateEventStore,
|
|
169
|
-
|
|
201
|
+
txResolver: this.txResolver,
|
|
170
202
|
contractSyncService: this.contractSyncService,
|
|
203
|
+
l2TipsStore: this.l2TipsStore,
|
|
171
204
|
jobId,
|
|
172
|
-
scopes
|
|
205
|
+
scopes,
|
|
206
|
+
simulator: this.simulator,
|
|
207
|
+
hooks: this.hooks,
|
|
208
|
+
utilityExecutor,
|
|
209
|
+
// Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
|
|
210
|
+
transientArrayService: new TransientArrayService()
|
|
173
211
|
});
|
|
174
212
|
try {
|
|
175
213
|
this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
|
|
@@ -177,7 +215,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
177
215
|
selector: call.selector
|
|
178
216
|
});
|
|
179
217
|
const initialWitness = toACVMWitness(0, call.args);
|
|
180
|
-
const acirExecutionResult = await this.simulator.executeUserCircuit(initialWitness, entryPointArtifact,
|
|
218
|
+
const acirExecutionResult = await this.simulator.executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle)).catch((err)=>{
|
|
181
219
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
182
220
|
throw new ExecutionError(err.message, {
|
|
183
221
|
contractAddress: call.to,
|
|
@@ -195,7 +233,6 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
195
233
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
196
234
|
}
|
|
197
235
|
}
|
|
198
|
-
// docs:end:execute_utility_function
|
|
199
236
|
/**
|
|
200
237
|
* Returns the execution statistics collected during the simulator run.
|
|
201
238
|
* @returns The execution statistics.
|
|
@@ -312,12 +349,12 @@ class OrderedSideEffect {
|
|
|
312
349
|
const getEffect = (orderedSideEffect)=>orderedSideEffect.sideEffect;
|
|
313
350
|
const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
|
|
314
351
|
const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(siloedNullifiers, minRevertibleSideEffectCounter);
|
|
352
|
+
// The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
|
|
353
|
+
// init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
|
|
354
|
+
// the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
|
|
355
|
+
// nullifier.
|
|
315
356
|
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
316
|
-
|
|
317
|
-
nonRevertibleNullifiers.push(nonceGenerator);
|
|
318
|
-
} else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
|
|
319
|
-
throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
|
|
320
|
-
}
|
|
357
|
+
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
321
358
|
if (isPrivateOnlyTx) {
|
|
322
359
|
// We must make the note hashes unique by using the
|
|
323
360
|
// nonce generator and their index in the tx.
|
|
@@ -402,17 +439,17 @@ class OrderedSideEffect {
|
|
|
402
439
|
});
|
|
403
440
|
}
|
|
404
441
|
}
|
|
405
|
-
const [
|
|
406
|
-
|
|
407
|
-
|
|
442
|
+
const [noteHashResults, nullifierResults] = await Promise.all([
|
|
443
|
+
settledNoteHashReads.length > 0 ? node.findLeavesIndexes(anchorBlockHash, MerkleTreeId.NOTE_HASH_TREE, settledNoteHashReads.map(({ value })=>value)) : [],
|
|
444
|
+
settledNullifierReads.length > 0 ? node.findLeavesIndexes(anchorBlockHash, MerkleTreeId.NULLIFIER_TREE, settledNullifierReads.map(({ value })=>value)) : []
|
|
408
445
|
]);
|
|
409
446
|
for(let i = 0; i < settledNoteHashReads.length; i++){
|
|
410
|
-
if (!
|
|
447
|
+
if (!noteHashResults[i]) {
|
|
411
448
|
throw new Error(`Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`);
|
|
412
449
|
}
|
|
413
450
|
}
|
|
414
451
|
for(let i = 0; i < settledNullifierReads.length; i++){
|
|
415
|
-
if (!
|
|
452
|
+
if (!nullifierResults[i]) {
|
|
416
453
|
throw new Error(`Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`);
|
|
417
454
|
}
|
|
418
455
|
}
|
|
@@ -455,6 +492,10 @@ function meterGasUsed(data, isPrivateOnlyTx) {
|
|
|
455
492
|
// Every contract class log emits its contract address as an additional field
|
|
456
493
|
meteredDAFields += data.contractClassLogsHashes.reduce((acc, log)=>!log.isEmpty() ? acc + log.logHash.length + 1 : acc, 0);
|
|
457
494
|
meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
|
|
495
|
+
if (isPrivateOnlyTx) {
|
|
496
|
+
// The public data write that the private tx base rollup always performs to update the fee payer's balance.
|
|
497
|
+
meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
|
|
498
|
+
}
|
|
458
499
|
const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
|
|
459
500
|
if (data.publicCallRequests) {
|
|
460
501
|
const dataForPublic = data;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
/** In-memory store for ephemeral arrays scoped to a single contract call frame. */
|
|
3
|
+
export declare class EphemeralArrayService {
|
|
4
|
+
#private;
|
|
5
|
+
/** Returns all elements in the array, or an empty array if uninitialized. */
|
|
6
|
+
readArrayAt(slot: Fr): Fr[][];
|
|
7
|
+
/** Returns the number of elements in the array at the given slot. */
|
|
8
|
+
len(slot: Fr): number;
|
|
9
|
+
/** Appends an element to the array and returns the new length. */
|
|
10
|
+
push(slot: Fr, elements: Fr[]): number;
|
|
11
|
+
/** Removes and returns the last element. Throws if empty. */
|
|
12
|
+
pop(slot: Fr): Fr[];
|
|
13
|
+
/** Returns the element at the given index. Throws if out of bounds. */
|
|
14
|
+
get(slot: Fr, index: number): Fr[];
|
|
15
|
+
/** Overwrites the element at the given index. Throws if out of bounds. */
|
|
16
|
+
set(slot: Fr, index: number, value: Fr[]): void;
|
|
17
|
+
/** Removes the element at the given index, shifting subsequent elements backward. Throws if out of bounds. */
|
|
18
|
+
remove(slot: Fr, index: number): void;
|
|
19
|
+
/** Removes all elements from the array. */
|
|
20
|
+
clear(slot: Fr): void;
|
|
21
|
+
/** Allocates a fresh, unused slot for a new ephemeral array. */
|
|
22
|
+
allocateSlot(): Fr;
|
|
23
|
+
/** Creates a new ephemeral array pre-populated with the given elements and returns its slot. */
|
|
24
|
+
newArray(elements: Fr[][]): Fr;
|
|
25
|
+
/** Copies `count` elements from the source array to the destination array (overwrites destination). */
|
|
26
|
+
copy(srcSlot: Fr, dstSlot: Fr, count: number): void;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBoZW1lcmFsX2FycmF5X3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXBoZW1lcmFsX2FycmF5X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELG1GQUFtRjtBQUNuRixxQkFBYSxxQkFBcUI7O0lBT2hDLDZFQUE2RTtJQUM3RSxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUU1QjtJQU1ELHFFQUFxRTtJQUNyRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBRXBCO0lBRUQsa0VBQWtFO0lBQ2xFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBS3JDO0lBRUQsNkRBQTZEO0lBQzdELEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQVFsQjtJQUVELHVFQUF1RTtJQUN2RSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQVFqQztJQUVELDBFQUEwRTtJQUMxRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBUTlDO0lBRUQsOEdBQThHO0lBQzlHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQVFwQztJQUVELDJDQUEyQztJQUMzQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBRXBCO0lBRUQsZ0VBQWdFO0lBQ2hFLFlBQVksSUFBSSxFQUFFLENBTWpCO0lBRUQsZ0dBQWdHO0lBQ2hHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBSTdCO0lBRUQsdUdBQXVHO0lBQ3ZHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBVWxEO0NBQ0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ephemeral_array_service.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/ephemeral_array_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,mFAAmF;AACnF,qBAAa,qBAAqB;;IAOhC,6EAA6E;IAC7E,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAE5B;IAMD,qEAAqE;IACrE,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAEpB;IAED,kEAAkE;IAClE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,MAAM,CAKrC;IAED,6DAA6D;IAC7D,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAQlB;IAED,uEAAuE;IACvE,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,CAQjC;IAED,0EAA0E;IAC1E,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAQ9C;IAED,8GAA8G;IAC9G,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQpC;IAED,2CAA2C;IAC3C,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAEpB;IAED,gEAAgE;IAChE,YAAY,IAAI,EAAE,CAMjB;IAED,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAI7B;IAED,uGAAuG;IACvG,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAUlD;CACF"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
/** In-memory store for ephemeral arrays scoped to a single contract call frame. */ export class EphemeralArrayService {
|
|
3
|
+
/**
|
|
4
|
+
* Maps a slot to the elements of the array stored at that slot. Each element is a serialized representation of
|
|
5
|
+
* the original type.
|
|
6
|
+
*/ #arrays = new Map();
|
|
7
|
+
/** Returns all elements in the array, or an empty array if uninitialized. */ readArrayAt(slot) {
|
|
8
|
+
return this.#arrays.get(slot.toString()) ?? [];
|
|
9
|
+
}
|
|
10
|
+
#setArray(slot, array) {
|
|
11
|
+
this.#arrays.set(slot.toString(), array);
|
|
12
|
+
}
|
|
13
|
+
/** Returns the number of elements in the array at the given slot. */ len(slot) {
|
|
14
|
+
return this.readArrayAt(slot).length;
|
|
15
|
+
}
|
|
16
|
+
/** Appends an element to the array and returns the new length. */ push(slot, elements) {
|
|
17
|
+
const array = this.readArrayAt(slot);
|
|
18
|
+
array.push(elements);
|
|
19
|
+
this.#setArray(slot, array);
|
|
20
|
+
return array.length;
|
|
21
|
+
}
|
|
22
|
+
/** Removes and returns the last element. Throws if empty. */ pop(slot) {
|
|
23
|
+
const array = this.readArrayAt(slot);
|
|
24
|
+
if (array.length === 0) {
|
|
25
|
+
throw new Error(`Ephemeral array at slot ${slot} is empty`);
|
|
26
|
+
}
|
|
27
|
+
const element = array.pop();
|
|
28
|
+
this.#setArray(slot, array);
|
|
29
|
+
return element;
|
|
30
|
+
}
|
|
31
|
+
/** Returns the element at the given index. Throws if out of bounds. */ get(slot, index) {
|
|
32
|
+
const array = this.readArrayAt(slot);
|
|
33
|
+
if (index < 0 || index >= array.length) {
|
|
34
|
+
throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
|
|
35
|
+
}
|
|
36
|
+
return array[index];
|
|
37
|
+
}
|
|
38
|
+
/** Overwrites the element at the given index. Throws if out of bounds. */ set(slot, index, value) {
|
|
39
|
+
const array = this.readArrayAt(slot);
|
|
40
|
+
if (index < 0 || index >= array.length) {
|
|
41
|
+
throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
|
|
42
|
+
}
|
|
43
|
+
array[index] = value;
|
|
44
|
+
}
|
|
45
|
+
/** Removes the element at the given index, shifting subsequent elements backward. Throws if out of bounds. */ remove(slot, index) {
|
|
46
|
+
const array = this.readArrayAt(slot);
|
|
47
|
+
if (index < 0 || index >= array.length) {
|
|
48
|
+
throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
|
|
49
|
+
}
|
|
50
|
+
array.splice(index, 1);
|
|
51
|
+
}
|
|
52
|
+
/** Removes all elements from the array. */ clear(slot) {
|
|
53
|
+
this.#arrays.delete(slot.toString());
|
|
54
|
+
}
|
|
55
|
+
/** Allocates a fresh, unused slot for a new ephemeral array. */ allocateSlot() {
|
|
56
|
+
let slot;
|
|
57
|
+
do {
|
|
58
|
+
slot = Fr.random();
|
|
59
|
+
}while (this.#arrays.has(slot.toString()))
|
|
60
|
+
return slot;
|
|
61
|
+
}
|
|
62
|
+
/** Creates a new ephemeral array pre-populated with the given elements and returns its slot. */ newArray(elements) {
|
|
63
|
+
const slot = this.allocateSlot();
|
|
64
|
+
this.#setArray(slot, elements);
|
|
65
|
+
return slot;
|
|
66
|
+
}
|
|
67
|
+
/** Copies `count` elements from the source array to the destination array (overwrites destination). */ copy(srcSlot, dstSlot, count) {
|
|
68
|
+
const srcArray = this.readArrayAt(srcSlot);
|
|
69
|
+
if (count > srcArray.length) {
|
|
70
|
+
throw new Error(`Cannot copy ${count} elements from ephemeral array of length ${srcArray.length} at slot ${srcSlot}`);
|
|
71
|
+
}
|
|
72
|
+
// Deep copy the elements to avoid aliasing
|
|
73
|
+
const copied = srcArray.slice(0, count).map((el)=>[
|
|
74
|
+
...el
|
|
75
|
+
]);
|
|
76
|
+
this.#setArray(dstSlot, copied);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
-
import type { NoteData } from './
|
|
3
|
+
import type { NoteData } from './noir-structs/note_data.js';
|
|
4
4
|
interface PendingNote {
|
|
5
5
|
note: NoteData;
|
|
6
6
|
counter: number;
|
|
@@ -36,11 +36,6 @@ export declare class ExecutionNoteCache {
|
|
|
36
36
|
*/
|
|
37
37
|
private minRevertibleSideEffectCounter;
|
|
38
38
|
private inRevertiblePhase;
|
|
39
|
-
/**
|
|
40
|
-
* Whether the protocol nullifier was used for nonce generation.
|
|
41
|
-
* We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
|
|
42
|
-
*/
|
|
43
|
-
private usedProtocolNullifierForNonces;
|
|
44
39
|
constructor(protocolNullifier: Fr);
|
|
45
40
|
/**
|
|
46
41
|
* Enters the revertible phase of the transaction.
|
|
@@ -48,7 +43,6 @@ export declare class ExecutionNoteCache {
|
|
|
48
43
|
*/
|
|
49
44
|
setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void>;
|
|
50
45
|
isSideEffectCounterRevertible(sideEffectCounter: number): boolean;
|
|
51
|
-
finish(): void;
|
|
52
46
|
/**
|
|
53
47
|
* Add a new note to cache.
|
|
54
48
|
* @param note - New note created during execution.
|
|
@@ -94,11 +88,11 @@ export declare class ExecutionNoteCache {
|
|
|
94
88
|
*/
|
|
95
89
|
getEmittedNullifiers(): Fr[];
|
|
96
90
|
/**
|
|
97
|
-
* @returns All nullifiers
|
|
98
|
-
*
|
|
91
|
+
* @returns All nullifiers of the transaction: the protocol nullifier (the kernel-injected first nullifier),
|
|
92
|
+
* followed by those emitted by private calls.
|
|
99
93
|
*/
|
|
100
94
|
getAllNullifiers(): Fr[];
|
|
101
95
|
getNonceGenerator(): Fr;
|
|
102
96
|
}
|
|
103
97
|
export {};
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX25vdGVfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX25vdGVfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELFVBQVUsV0FBVztJQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQ2YsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixzQkFBc0IsRUFBRSxFQUFFLENBQUM7Q0FDNUI7QUFFRDs7R0FFRztBQUNILHFCQUFhLGtCQUFrQjs7SUE4QmpCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBN0I5Qzs7O09BR0c7SUFDSCxPQUFPLENBQUMsS0FBSyxDQUFxQjtJQUNsQzs7T0FFRztJQUNILE9BQU8sQ0FBQyxPQUFPLENBQXlDO0lBRXhEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsWUFBWSxDQUF1QztJQUUzRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBMEI7SUFFbkQ7O09BRUc7SUFDSCxPQUFPLENBQUMsOEJBQThCLENBQUs7SUFFM0MsT0FBTyxDQUFDLGlCQUFpQixDQUFTO0lBRWxDLFlBQTZCLGlCQUFpQixFQUFFLEVBQUUsRUFBSTtJQUV0RDs7O09BR0c7SUFDVSxpQ0FBaUMsQ0FBQyw4QkFBOEIsRUFBRSxNQUFNLGlCQW1DcEY7SUFFTSw2QkFBNkIsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUt2RTtJQUVEOzs7T0FHRztJQUNJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBU2hEO0lBRUQ7Ozs7OztPQU1HO0lBQ1UsV0FBVyxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSwrQkF5QnZGO0lBRUQ7Ozs7T0FJRztJQUNVLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLEVBQUUsaUJBRzlFO0lBRUQ7Ozs7OztRQU1JO0lBQ0csUUFBUSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsY0FNOUY7SUFFRDs7Ozs7UUFLSTtJQUNHLGVBQWUsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFLFdBR2pFO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYSxDQUFDLGVBQWUsRUFBRSxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUUvRDtJQVVELFdBQVcsSUFBSSxXQUFXLEVBQUUsQ0FFM0I7SUFFRDs7T0FFRztJQUNILG9CQUFvQixJQUFJLEVBQUUsRUFBRSxDQUUzQjtJQUVEOzs7T0FHRztJQUNILGdCQUFnQixJQUFJLEVBQUUsRUFBRSxDQUV2QjtJQUVELGlCQUFpQixJQUFJLEVBQUUsQ0FFdEI7Q0FhRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution_note_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_note_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"execution_note_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_note_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,UAAU,WAAW;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,EAAE,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,kBAAkB;;IA8BjB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IA7B9C;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAqB;IAClC;;OAEG;IACH,OAAO,CAAC,OAAO,CAAyC;IAExD;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAuC;IAE3D;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAA0B;IAEnD;;OAEG;IACH,OAAO,CAAC,8BAA8B,CAAK;IAE3C,OAAO,CAAC,iBAAiB,CAAS;IAElC,YAA6B,iBAAiB,EAAE,EAAE,EAAI;IAEtD;;;OAGG;IACU,iCAAiC,CAAC,8BAA8B,EAAE,MAAM,iBAmCpF;IAEM,6BAA6B,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAKvE;IAED;;;OAGG;IACI,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAShD;IAED;;;;;;OAMG;IACU,WAAW,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,+BAyBvF;IAED;;;;OAIG;IACU,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,iBAG9E;IAED;;;;;;QAMI;IACG,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,WAAW,EAAE,EAAE,cAM9F;IAED;;;;;QAKI;IACG,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,WAGjE;IAED;;;OAGG;IACI,aAAa,CAAC,eAAe,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAE/D;IAUD,WAAW,IAAI,WAAW,EAAE,CAE3B;IAED;;OAEG;IACH,oBAAoB,IAAI,EAAE,EAAE,CAE3B;IAED;;;OAGG;IACH,gBAAgB,IAAI,EAAE,EAAE,CAEvB;IAED,iBAAiB,IAAI,EAAE,CAEtB;CAaF"}
|
|
@@ -23,10 +23,6 @@ import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifie
|
|
|
23
23
|
* The counter that separates non-revertible side effects (which persist even if the tx reverts) from revertible ones.
|
|
24
24
|
*/ minRevertibleSideEffectCounter;
|
|
25
25
|
inRevertiblePhase;
|
|
26
|
-
/**
|
|
27
|
-
* Whether the protocol nullifier was used for nonce generation.
|
|
28
|
-
* We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
|
|
29
|
-
*/ usedProtocolNullifierForNonces;
|
|
30
26
|
constructor(protocolNullifier){
|
|
31
27
|
this.protocolNullifier = protocolNullifier;
|
|
32
28
|
this.notes = [];
|
|
@@ -45,12 +41,9 @@ import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifie
|
|
|
45
41
|
}
|
|
46
42
|
this.inRevertiblePhase = true;
|
|
47
43
|
this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
|
|
48
|
-
|
|
49
|
-
//
|
|
50
|
-
|
|
51
|
-
// we don't want to use them as the nonce generator.
|
|
52
|
-
this.usedProtocolNullifierForNonces = nullifiers.length === 0;
|
|
53
|
-
const nonceGenerator = this.usedProtocolNullifierForNonces ? this.protocolNullifier : new Fr(nullifiers[0]);
|
|
44
|
+
// The protocol nullifier is always the tx's first nullifier (injected by the kernel init), so it is the
|
|
45
|
+
// nonce generator for every note hash.
|
|
46
|
+
const nonceGenerator = this.protocolNullifier;
|
|
54
47
|
// The existing pending notes are all non-revertible.
|
|
55
48
|
// They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
|
|
56
49
|
// Their indexes in the tx are known at this point and won't change. So we can assign a nonce to each one of them.
|
|
@@ -78,13 +71,6 @@ import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifie
|
|
|
78
71
|
}
|
|
79
72
|
return sideEffectCounter >= this.minRevertibleSideEffectCounter;
|
|
80
73
|
}
|
|
81
|
-
finish() {
|
|
82
|
-
// If we never entered the revertible phase, and there are no nullifiers emitted, we need to use the protocol
|
|
83
|
-
// nullifier as the nonce generator.
|
|
84
|
-
if (!this.inRevertiblePhase) {
|
|
85
|
-
this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
74
|
/**
|
|
89
75
|
* Add a new note to cache.
|
|
90
76
|
* @param note - New note created during execution.
|
|
@@ -179,22 +165,16 @@ import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifie
|
|
|
179
165
|
].map((n)=>new Fr(n));
|
|
180
166
|
}
|
|
181
167
|
/**
|
|
182
|
-
* @returns All nullifiers
|
|
183
|
-
*
|
|
168
|
+
* @returns All nullifiers of the transaction: the protocol nullifier (the kernel-injected first nullifier),
|
|
169
|
+
* followed by those emitted by private calls.
|
|
184
170
|
*/ getAllNullifiers() {
|
|
185
|
-
if (this.usedProtocolNullifierForNonces === undefined) {
|
|
186
|
-
throw new Error('usedProtocolNullifierForNonces is not set yet. Call finish() to complete the transaction.');
|
|
187
|
-
}
|
|
188
|
-
const allNullifiers = this.getEmittedNullifiers();
|
|
189
171
|
return [
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
] : [],
|
|
193
|
-
...allNullifiers
|
|
172
|
+
this.protocolNullifier,
|
|
173
|
+
...this.getEmittedNullifiers()
|
|
194
174
|
];
|
|
195
175
|
}
|
|
196
176
|
getNonceGenerator() {
|
|
197
|
-
return this.
|
|
177
|
+
return this.protocolNullifier;
|
|
198
178
|
}
|
|
199
179
|
#recordNullifier(contractAddress, siloedNullifier) {
|
|
200
180
|
const nullifiers = this.getNullifiers(contractAddress);
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/**
|
|
3
|
-
* A map that stores the tagging index range for a given extended directional app tagging secret.
|
|
4
|
-
* Note: The directional app tagging secret is unique for a (sender, recipient, contract) tuple while the direction
|
|
5
|
-
* of sender -> recipient matters.
|
|
6
|
-
*/
|
|
1
|
+
import { AppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
|
|
2
|
+
/** A map that stores the tagging index range for a given app tagging secret. */
|
|
7
3
|
export declare class ExecutionTaggingIndexCache {
|
|
8
4
|
private taggingIndexMap;
|
|
9
|
-
getLastUsedIndex(secret:
|
|
10
|
-
setLastUsedIndex(secret:
|
|
5
|
+
getLastUsedIndex(secret: AppTaggingSecret): number | undefined;
|
|
6
|
+
setLastUsedIndex(secret: AppTaggingSecret, index: number): void;
|
|
11
7
|
/**
|
|
12
8
|
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
13
9
|
*/
|
|
14
10
|
getUsedTaggingIndexRanges(): TaggingIndexRange[];
|
|
15
11
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEtBQUssaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RSxnRkFBZ0Y7QUFDaEYscUJBQWEsMEJBQTBCO0lBQ3JDLE9BQU8sQ0FBQyxlQUFlLENBQXlFO0lBRXpGLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUVwRTtJQUVNLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxRQVU5RDtJQUVEOztPQUVHO0lBQ0kseUJBQXlCLElBQUksaUJBQWlCLEVBQUUsQ0FNdEQ7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution_tagging_index_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_tagging_index_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"execution_tagging_index_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_tagging_index_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,gFAAgF;AAChF,qBAAa,0BAA0B;IACrC,OAAO,CAAC,eAAe,CAAyE;IAEzF,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAEpE;IAEM,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,QAU9D;IAED;;OAEG;IACI,yBAAyB,IAAI,iBAAiB,EAAE,CAMtD;CACF"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/**
|
|
3
|
-
* A map that stores the tagging index range for a given extended directional app tagging secret.
|
|
4
|
-
* Note: The directional app tagging secret is unique for a (sender, recipient, contract) tuple while the direction
|
|
5
|
-
* of sender -> recipient matters.
|
|
6
|
-
*/ export class ExecutionTaggingIndexCache {
|
|
1
|
+
import { AppTaggingSecret } from '@aztec/stdlib/logs';
|
|
2
|
+
/** A map that stores the tagging index range for a given app tagging secret. */ export class ExecutionTaggingIndexCache {
|
|
7
3
|
taggingIndexMap = new Map();
|
|
8
4
|
getLastUsedIndex(secret) {
|
|
9
5
|
return this.taggingIndexMap.get(secret.toString())?.highestIndex;
|
|
@@ -26,7 +22,7 @@ import { ExtendedDirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
|
|
|
26
22
|
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
27
23
|
*/ getUsedTaggingIndexRanges() {
|
|
28
24
|
return Array.from(this.taggingIndexMap.entries()).map(([secret, { lowestIndex, highestIndex }])=>({
|
|
29
|
-
extendedSecret:
|
|
25
|
+
extendedSecret: AppTaggingSecret.fromString(secret),
|
|
30
26
|
lowestIndex,
|
|
31
27
|
highestIndex
|
|
32
28
|
}));
|