@aztec/pxe 0.0.1-commit.9ef841308 → 0.0.1-commit.a4600f49
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/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 +82 -39
- 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 +43 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +21 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.js +50 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +14 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +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 +74 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +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 +136 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.js +989 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +222 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +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 +186 -55
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +136 -65
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +448 -170
- 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 +1 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +0 -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 +20 -7
- package/dest/entrypoints/client/lazy/index.d.ts +1 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +0 -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 +20 -7
- 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 +6 -4
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +4 -3
- 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 +20 -6
- 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 +1 -0
- package/dest/hooks/resolve_custom_request.d.ts +23 -0
- package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
- package/dest/hooks/resolve_custom_request.js +3 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts +48 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
- package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
- package/dest/logs/log_service.d.ts +13 -11
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +181 -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 +27 -6
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +80 -65
- 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 +203 -89
- 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 +334 -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 +647 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
- package/dest/storage/capsule_store/capsule_service.d.ts +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/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 +5 -5
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +3 -3
- 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 +5 -8
- 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 +2 -2
- 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/contract_function_simulator.ts +136 -55
- 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 +58 -0
- package/src/contract_function_simulator/noir-structs/resolved_tx.ts +53 -0
- package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +15 -0
- package/src/contract_function_simulator/noir-structs/utility_context.ts +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 +120 -0
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
- package/src/contract_function_simulator/oracle/oracle_registry.ts +689 -0
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +964 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +2 -3
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +233 -79
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +681 -320
- 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 +0 -1
- package/src/entrypoints/client/bundle/utils.ts +19 -7
- package/src/entrypoints/client/lazy/index.ts +0 -1
- package/src/entrypoints/client/lazy/utils.ts +19 -7
- package/src/entrypoints/pxe_creation_options.ts +21 -1
- package/src/entrypoints/server/index.ts +6 -3
- package/src/entrypoints/server/utils.ts +24 -7
- 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 +12 -0
- package/src/hooks/resolve_custom_request.ts +24 -0
- package/src/hooks/resolve_tagging_secret_strategy.ts +57 -0
- package/src/logs/log_service.ts +212 -139
- package/src/messages/tx_resolver_service.ts +69 -0
- package/src/notes/note_service.ts +117 -94
- package/src/notes_filter.ts +1 -3
- package/src/oracle_version.ts +20 -10
- package/src/private_kernel/batch_planner.ts +168 -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 +335 -121
- package/src/private_kernel/private_kernel_oracle.ts +58 -29
- package/src/pxe.ts +530 -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 +18 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
- package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
- package/src/storage/backwards_compatibility_tests/schema_tests.ts +774 -0
- package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
- package/src/storage/capsule_store/capsule_service.ts +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/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 +6 -6
- package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
- package/src/tagging/constants.ts +6 -8
- 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 +4 -5
- 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,3 +1,4 @@
|
|
|
1
|
+
import { CircuitKind } from '@aztec/bb.js';
|
|
1
2
|
import {
|
|
2
3
|
AVM_EMITNOTEHASH_BASE_L2_GAS,
|
|
3
4
|
AVM_EMITNULLIFIER_BASE_L2_GAS,
|
|
@@ -19,6 +20,7 @@ import {
|
|
|
19
20
|
MAX_PRIVATE_LOGS_PER_TX,
|
|
20
21
|
MAX_TX_LIFETIME,
|
|
21
22
|
PRIVATE_TX_L2_GAS_OVERHEAD,
|
|
23
|
+
PUBLIC_DATA_WRITE_LENGTH,
|
|
22
24
|
PUBLIC_TX_L2_GAS_OVERHEAD,
|
|
23
25
|
TX_DA_GAS_OVERHEAD,
|
|
24
26
|
} from '@aztec/constants';
|
|
@@ -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,33 +93,34 @@ 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';
|
|
96
101
|
import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
|
|
97
102
|
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
98
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';
|
|
99
106
|
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
100
107
|
import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
101
108
|
import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
|
|
102
|
-
import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
|
|
103
109
|
import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
|
|
110
|
+
import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
|
|
111
|
+
import { AnchoredContractData } from './anchored_contract_data.js';
|
|
104
112
|
import type { BenchmarkedNode } from './benchmarked_node.js';
|
|
105
113
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
106
114
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
107
115
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
108
|
-
import {
|
|
116
|
+
import { buildACIRCallback } from './oracle/acir_callback.js';
|
|
109
117
|
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
110
118
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
111
119
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
120
|
+
import { TransientArrayService } from './transient_array_service.js';
|
|
112
121
|
|
|
113
122
|
/** Options for ContractFunctionSimulator.run. */
|
|
114
123
|
export type ContractSimulatorRunOpts = {
|
|
115
|
-
/** The address of the contract (should match request.origin). */
|
|
116
|
-
contractAddress: AztecAddress;
|
|
117
|
-
/** The function selector of the entry point. */
|
|
118
|
-
selector: FunctionSelector;
|
|
119
124
|
/** The address calling the function. Can be replaced to simulate a call from another contract or account. */
|
|
120
125
|
msgSender?: AztecAddress;
|
|
121
126
|
/** The block header to use as base state for this run. */
|
|
@@ -123,7 +128,7 @@ export type ContractSimulatorRunOpts = {
|
|
|
123
128
|
/** The address used as a tagging sender when emitting private logs. */
|
|
124
129
|
senderForTags?: AztecAddress;
|
|
125
130
|
/** The accounts whose notes we can access in this call. */
|
|
126
|
-
scopes:
|
|
131
|
+
scopes: AztecAddress[];
|
|
127
132
|
/** The job ID for staged writes. */
|
|
128
133
|
jobId: string;
|
|
129
134
|
};
|
|
@@ -131,18 +136,24 @@ export type ContractSimulatorRunOpts = {
|
|
|
131
136
|
/** Args for ContractFunctionSimulator constructor. */
|
|
132
137
|
export type ContractFunctionSimulatorArgs = {
|
|
133
138
|
contractStore: ContractStore;
|
|
139
|
+
contractClassService: ContractClassService;
|
|
140
|
+
/** Per-simulation contract overrides. */
|
|
141
|
+
overrides?: ContractOverrides;
|
|
134
142
|
noteStore: NoteStore;
|
|
135
143
|
keyStore: KeyStore;
|
|
136
144
|
addressStore: AddressStore;
|
|
137
145
|
aztecNode: AztecNode;
|
|
146
|
+
l2TipsStore: L2TipsProvider;
|
|
138
147
|
senderTaggingStore: SenderTaggingStore;
|
|
139
148
|
recipientTaggingStore: RecipientTaggingStore;
|
|
140
|
-
|
|
149
|
+
taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
141
150
|
capsuleStore: CapsuleStore;
|
|
151
|
+
factStore: FactStore;
|
|
142
152
|
privateEventStore: PrivateEventStore;
|
|
143
153
|
simulator: CircuitSimulator;
|
|
144
154
|
contractSyncService: ContractSyncService;
|
|
145
|
-
|
|
155
|
+
txResolver: TxResolverService;
|
|
156
|
+
hooks?: ExecutionHooks;
|
|
146
157
|
};
|
|
147
158
|
|
|
148
159
|
/**
|
|
@@ -151,33 +162,43 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
151
162
|
export class ContractFunctionSimulator {
|
|
152
163
|
private readonly log: Logger;
|
|
153
164
|
private readonly contractStore: ContractStore;
|
|
165
|
+
private readonly contractClassService: ContractClassService;
|
|
166
|
+
private readonly overrides: ContractOverrides | undefined;
|
|
154
167
|
private readonly noteStore: NoteStore;
|
|
155
168
|
private readonly keyStore: KeyStore;
|
|
156
169
|
private readonly addressStore: AddressStore;
|
|
157
170
|
private readonly aztecNode: AztecNode;
|
|
171
|
+
private readonly l2TipsStore: L2TipsProvider;
|
|
158
172
|
private readonly senderTaggingStore: SenderTaggingStore;
|
|
159
173
|
private readonly recipientTaggingStore: RecipientTaggingStore;
|
|
160
|
-
private readonly
|
|
174
|
+
private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
161
175
|
private readonly capsuleStore: CapsuleStore;
|
|
176
|
+
private readonly factStore: FactStore;
|
|
162
177
|
private readonly privateEventStore: PrivateEventStore;
|
|
163
178
|
private readonly simulator: CircuitSimulator;
|
|
164
179
|
private readonly contractSyncService: ContractSyncService;
|
|
165
|
-
private readonly
|
|
180
|
+
private readonly txResolver: TxResolverService;
|
|
181
|
+
private readonly hooks: ExecutionHooks | undefined;
|
|
166
182
|
|
|
167
183
|
constructor(args: ContractFunctionSimulatorArgs) {
|
|
168
184
|
this.contractStore = args.contractStore;
|
|
185
|
+
this.contractClassService = args.contractClassService;
|
|
186
|
+
this.overrides = args.overrides;
|
|
169
187
|
this.noteStore = args.noteStore;
|
|
170
188
|
this.keyStore = args.keyStore;
|
|
171
189
|
this.addressStore = args.addressStore;
|
|
172
190
|
this.aztecNode = args.aztecNode;
|
|
191
|
+
this.l2TipsStore = args.l2TipsStore;
|
|
173
192
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
174
193
|
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
175
|
-
this.
|
|
194
|
+
this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
|
|
176
195
|
this.capsuleStore = args.capsuleStore;
|
|
196
|
+
this.factStore = args.factStore;
|
|
177
197
|
this.privateEventStore = args.privateEventStore;
|
|
178
198
|
this.simulator = args.simulator;
|
|
179
199
|
this.contractSyncService = args.contractSyncService;
|
|
180
|
-
this.
|
|
200
|
+
this.txResolver = args.txResolver;
|
|
201
|
+
this.hooks = args.hooks;
|
|
181
202
|
this.log = createLogger('simulator');
|
|
182
203
|
}
|
|
183
204
|
|
|
@@ -188,9 +209,7 @@ export class ContractFunctionSimulator {
|
|
|
188
209
|
public async run(
|
|
189
210
|
request: TxExecutionRequest,
|
|
190
211
|
{
|
|
191
|
-
|
|
192
|
-
selector,
|
|
193
|
-
msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
|
|
212
|
+
msgSender = AztecAddress.NULL_MSG_SENDER,
|
|
194
213
|
anchorBlockHeader,
|
|
195
214
|
senderForTags,
|
|
196
215
|
scopes,
|
|
@@ -199,18 +218,30 @@ export class ContractFunctionSimulator {
|
|
|
199
218
|
): Promise<PrivateExecutionResult> {
|
|
200
219
|
const simulatorSetupTimer = new Timer();
|
|
201
220
|
|
|
202
|
-
const
|
|
221
|
+
const contractAddress = request.origin;
|
|
203
222
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
223
|
+
const anchoredContractData = new AnchoredContractData(
|
|
224
|
+
this.contractStore,
|
|
225
|
+
this.contractClassService,
|
|
226
|
+
anchorBlockHeader,
|
|
227
|
+
this.overrides,
|
|
228
|
+
);
|
|
207
229
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
230
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(
|
|
231
|
+
contractAddress,
|
|
232
|
+
request.functionSelector,
|
|
233
|
+
);
|
|
234
|
+
if (!entryPointArtifact) {
|
|
235
|
+
throw new Error(
|
|
236
|
+
`Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` +
|
|
237
|
+
`Register it via wallet.registerContract(...).`,
|
|
211
238
|
);
|
|
212
239
|
}
|
|
213
240
|
|
|
241
|
+
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
242
|
+
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
243
|
+
}
|
|
244
|
+
|
|
214
245
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
215
246
|
const startSideEffectCounter = 2;
|
|
216
247
|
|
|
@@ -225,9 +256,15 @@ export class ContractFunctionSimulator {
|
|
|
225
256
|
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
226
257
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
227
258
|
|
|
259
|
+
// One shared transient store for the whole execution tree rooted at this transaction. Threaded into every child
|
|
260
|
+
// private oracle and inherited by nested utility frames, so that frames of the same contract see each other's
|
|
261
|
+
// transient arrays, then discarded when run() returns.
|
|
262
|
+
const transientArrayService = new TransientArrayService();
|
|
263
|
+
|
|
228
264
|
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
229
265
|
argsHash: request.firstCallArgsHash,
|
|
230
266
|
txContext: request.txContext,
|
|
267
|
+
txRequestSalt: request.salt,
|
|
231
268
|
callContext,
|
|
232
269
|
anchorBlockHeader,
|
|
233
270
|
utilityExecutor: async (call, execScopes) => {
|
|
@@ -238,17 +275,18 @@ export class ContractFunctionSimulator {
|
|
|
238
275
|
executionCache: HashedValuesCache.create(request.argsOfCalls),
|
|
239
276
|
noteCache,
|
|
240
277
|
taggingIndexCache,
|
|
241
|
-
|
|
278
|
+
anchoredContractData,
|
|
242
279
|
noteStore: this.noteStore,
|
|
243
280
|
keyStore: this.keyStore,
|
|
244
281
|
addressStore: this.addressStore,
|
|
245
282
|
aztecNode: this.aztecNode,
|
|
246
283
|
senderTaggingStore: this.senderTaggingStore,
|
|
247
284
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
248
|
-
|
|
285
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
249
286
|
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
287
|
+
factService: new FactService(this.factStore, scopes),
|
|
250
288
|
privateEventStore: this.privateEventStore,
|
|
251
|
-
|
|
289
|
+
txResolver: this.txResolver,
|
|
252
290
|
contractSyncService: this.contractSyncService,
|
|
253
291
|
jobId,
|
|
254
292
|
totalPublicCalldataCount: 0,
|
|
@@ -256,6 +294,9 @@ export class ContractFunctionSimulator {
|
|
|
256
294
|
scopes,
|
|
257
295
|
senderForTags,
|
|
258
296
|
simulator: this.simulator,
|
|
297
|
+
l2TipsStore: this.l2TipsStore,
|
|
298
|
+
hooks: this.hooks,
|
|
299
|
+
transientArrayService,
|
|
259
300
|
});
|
|
260
301
|
|
|
261
302
|
const setupTime = simulatorSetupTimer.ms();
|
|
@@ -274,7 +315,6 @@ export class ContractFunctionSimulator {
|
|
|
274
315
|
);
|
|
275
316
|
const simulatorTeardownTimer = new Timer();
|
|
276
317
|
|
|
277
|
-
noteCache.finish();
|
|
278
318
|
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
279
319
|
|
|
280
320
|
const publicCallRequests = collectNested([executionResult], r =>
|
|
@@ -306,47 +346,71 @@ export class ContractFunctionSimulator {
|
|
|
306
346
|
}
|
|
307
347
|
}
|
|
308
348
|
|
|
309
|
-
// docs:start:execute_utility_function
|
|
310
349
|
/**
|
|
311
350
|
* Runs a utility function.
|
|
312
351
|
* @param call - The function call to execute.
|
|
313
|
-
* @param authwits - Authentication witnesses required for the function call.
|
|
314
|
-
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
315
|
-
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
316
|
-
* accounts if not specified.
|
|
317
352
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
318
353
|
*/
|
|
319
354
|
public async runUtility(
|
|
320
355
|
call: FunctionCall,
|
|
321
356
|
authwits: AuthWitness[],
|
|
322
357
|
anchorBlockHeader: BlockHeader,
|
|
323
|
-
scopes:
|
|
358
|
+
scopes: AztecAddress[],
|
|
324
359
|
jobId: string,
|
|
325
360
|
): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
|
|
326
|
-
const
|
|
361
|
+
const anchoredContractData = new AnchoredContractData(
|
|
362
|
+
this.contractStore,
|
|
363
|
+
this.contractClassService,
|
|
364
|
+
anchorBlockHeader,
|
|
365
|
+
this.overrides,
|
|
366
|
+
);
|
|
367
|
+
|
|
368
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
369
|
+
if (!entryPointArtifact) {
|
|
370
|
+
throw new Error(
|
|
371
|
+
`Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` +
|
|
372
|
+
`Register it via wallet.registerContract(...).`,
|
|
373
|
+
);
|
|
374
|
+
}
|
|
327
375
|
|
|
328
376
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
329
377
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
330
378
|
}
|
|
331
379
|
|
|
380
|
+
const utilityExecutor = async (syncCall: FunctionCall, execScopes: AztecAddress[]) => {
|
|
381
|
+
await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
|
|
382
|
+
};
|
|
383
|
+
|
|
332
384
|
const oracle = new UtilityExecutionOracle({
|
|
333
|
-
|
|
385
|
+
callContext: CallContext.from({
|
|
386
|
+
msgSender: AztecAddress.NULL_MSG_SENDER,
|
|
387
|
+
contractAddress: call.to,
|
|
388
|
+
functionSelector: call.selector,
|
|
389
|
+
isStaticCall: true,
|
|
390
|
+
}),
|
|
334
391
|
authWitnesses: authwits,
|
|
335
392
|
capsules: [],
|
|
336
393
|
anchorBlockHeader,
|
|
337
|
-
|
|
394
|
+
anchoredContractData,
|
|
338
395
|
noteStore: this.noteStore,
|
|
339
396
|
keyStore: this.keyStore,
|
|
340
397
|
addressStore: this.addressStore,
|
|
341
398
|
aztecNode: this.aztecNode,
|
|
342
399
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
343
|
-
|
|
400
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
344
401
|
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
402
|
+
factService: new FactService(this.factStore, scopes),
|
|
345
403
|
privateEventStore: this.privateEventStore,
|
|
346
|
-
|
|
404
|
+
txResolver: this.txResolver,
|
|
347
405
|
contractSyncService: this.contractSyncService,
|
|
406
|
+
l2TipsStore: this.l2TipsStore,
|
|
348
407
|
jobId,
|
|
349
408
|
scopes,
|
|
409
|
+
simulator: this.simulator,
|
|
410
|
+
hooks: this.hooks,
|
|
411
|
+
utilityExecutor,
|
|
412
|
+
// Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
|
|
413
|
+
transientArrayService: new TransientArrayService(),
|
|
350
414
|
});
|
|
351
415
|
|
|
352
416
|
try {
|
|
@@ -357,7 +421,7 @@ export class ContractFunctionSimulator {
|
|
|
357
421
|
|
|
358
422
|
const initialWitness = toACVMWitness(0, call.args);
|
|
359
423
|
const acirExecutionResult = await this.simulator
|
|
360
|
-
.executeUserCircuit(initialWitness, entryPointArtifact,
|
|
424
|
+
.executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle))
|
|
361
425
|
.catch((err: Error) => {
|
|
362
426
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
363
427
|
throw new ExecutionError(
|
|
@@ -380,7 +444,6 @@ export class ContractFunctionSimulator {
|
|
|
380
444
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
381
445
|
}
|
|
382
446
|
}
|
|
383
|
-
// docs:end:execute_utility_function
|
|
384
447
|
|
|
385
448
|
/**
|
|
386
449
|
* Returns the execution statistics collected during the simulator run.
|
|
@@ -525,6 +588,7 @@ export async function generateSimulatedProvingResult(
|
|
|
525
588
|
execution.publicInputs.callContext.functionSelector,
|
|
526
589
|
),
|
|
527
590
|
timings: execution.profileResult?.timings ?? { witgen: 0, oracles: {} },
|
|
591
|
+
kind: CircuitKind.App,
|
|
528
592
|
bytecode: execution.acir,
|
|
529
593
|
vk: execution.vk,
|
|
530
594
|
witness: execution.partialWitness,
|
|
@@ -593,12 +657,12 @@ export async function generateSimulatedProvingResult(
|
|
|
593
657
|
siloedNullifiers,
|
|
594
658
|
minRevertibleSideEffectCounter,
|
|
595
659
|
);
|
|
660
|
+
// The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
|
|
661
|
+
// init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
|
|
662
|
+
// the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
|
|
663
|
+
// nullifier.
|
|
596
664
|
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
597
|
-
|
|
598
|
-
nonRevertibleNullifiers.push(nonceGenerator);
|
|
599
|
-
} else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
|
|
600
|
-
throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
|
|
601
|
-
}
|
|
665
|
+
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
602
666
|
|
|
603
667
|
if (isPrivateOnlyTx) {
|
|
604
668
|
// We must make the note hashes unique by using the
|
|
@@ -749,7 +813,7 @@ function squashTransientSideEffects(
|
|
|
749
813
|
* at the tx's anchor block, mimicking the behavior of the kernels
|
|
750
814
|
*/
|
|
751
815
|
async function verifyReadRequests(
|
|
752
|
-
node: Pick<AztecNode, '
|
|
816
|
+
node: Pick<AztecNode, 'findLeavesIndexes'>,
|
|
753
817
|
anchorBlockHash: BlockParameter,
|
|
754
818
|
noteHashReadRequests: ScopedReadRequest[],
|
|
755
819
|
nullifierReadRequests: ScopedReadRequest[],
|
|
@@ -782,13 +846,25 @@ async function verifyReadRequests(
|
|
|
782
846
|
}
|
|
783
847
|
}
|
|
784
848
|
|
|
785
|
-
const [
|
|
786
|
-
|
|
787
|
-
|
|
849
|
+
const [noteHashResults, nullifierResults] = await Promise.all([
|
|
850
|
+
settledNoteHashReads.length > 0
|
|
851
|
+
? node.findLeavesIndexes(
|
|
852
|
+
anchorBlockHash,
|
|
853
|
+
MerkleTreeId.NOTE_HASH_TREE,
|
|
854
|
+
settledNoteHashReads.map(({ value }) => value),
|
|
855
|
+
)
|
|
856
|
+
: [],
|
|
857
|
+
settledNullifierReads.length > 0
|
|
858
|
+
? node.findLeavesIndexes(
|
|
859
|
+
anchorBlockHash,
|
|
860
|
+
MerkleTreeId.NULLIFIER_TREE,
|
|
861
|
+
settledNullifierReads.map(({ value }) => value),
|
|
862
|
+
)
|
|
863
|
+
: [],
|
|
788
864
|
]);
|
|
789
865
|
|
|
790
866
|
for (let i = 0; i < settledNoteHashReads.length; i++) {
|
|
791
|
-
if (!
|
|
867
|
+
if (!noteHashResults[i]) {
|
|
792
868
|
throw new Error(
|
|
793
869
|
`Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`,
|
|
794
870
|
);
|
|
@@ -796,7 +872,7 @@ async function verifyReadRequests(
|
|
|
796
872
|
}
|
|
797
873
|
|
|
798
874
|
for (let i = 0; i < settledNullifierReads.length; i++) {
|
|
799
|
-
if (!
|
|
875
|
+
if (!nullifierResults[i]) {
|
|
800
876
|
throw new Error(
|
|
801
877
|
`Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`,
|
|
802
878
|
);
|
|
@@ -849,6 +925,11 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
|
|
|
849
925
|
);
|
|
850
926
|
meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
|
|
851
927
|
|
|
928
|
+
if (isPrivateOnlyTx) {
|
|
929
|
+
// The public data write that the private tx base rollup always performs to update the fee payer's balance.
|
|
930
|
+
meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
|
|
931
|
+
}
|
|
932
|
+
|
|
852
933
|
const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
|
|
853
934
|
|
|
854
935
|
if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
|
|
3
|
+
/** In-memory store for ephemeral arrays scoped to a single contract call frame. */
|
|
4
|
+
export class EphemeralArrayService {
|
|
5
|
+
/**
|
|
6
|
+
* Maps a slot to the elements of the array stored at that slot. Each element is a serialized representation of
|
|
7
|
+
* the original type.
|
|
8
|
+
*/
|
|
9
|
+
#arrays: Map<string, Fr[][]> = new Map();
|
|
10
|
+
|
|
11
|
+
/** Returns all elements in the array, or an empty array if uninitialized. */
|
|
12
|
+
readArrayAt(slot: Fr): Fr[][] {
|
|
13
|
+
return this.#arrays.get(slot.toString()) ?? [];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
#setArray(slot: Fr, array: Fr[][]): void {
|
|
17
|
+
this.#arrays.set(slot.toString(), array);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Returns the number of elements in the array at the given slot. */
|
|
21
|
+
len(slot: Fr): number {
|
|
22
|
+
return this.readArrayAt(slot).length;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Appends an element to the array and returns the new length. */
|
|
26
|
+
push(slot: Fr, elements: Fr[]): number {
|
|
27
|
+
const array = this.readArrayAt(slot);
|
|
28
|
+
array.push(elements);
|
|
29
|
+
this.#setArray(slot, array);
|
|
30
|
+
return array.length;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Removes and returns the last element. Throws if empty. */
|
|
34
|
+
pop(slot: Fr): Fr[] {
|
|
35
|
+
const array = this.readArrayAt(slot);
|
|
36
|
+
if (array.length === 0) {
|
|
37
|
+
throw new Error(`Ephemeral array at slot ${slot} is empty`);
|
|
38
|
+
}
|
|
39
|
+
const element = array.pop()!;
|
|
40
|
+
this.#setArray(slot, array);
|
|
41
|
+
return element;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Returns the element at the given index. Throws if out of bounds. */
|
|
45
|
+
get(slot: Fr, index: number): Fr[] {
|
|
46
|
+
const array = this.readArrayAt(slot);
|
|
47
|
+
if (index < 0 || index >= array.length) {
|
|
48
|
+
throw new Error(
|
|
49
|
+
`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`,
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
return array[index];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Overwrites the element at the given index. Throws if out of bounds. */
|
|
56
|
+
set(slot: Fr, index: number, value: Fr[]): void {
|
|
57
|
+
const array = this.readArrayAt(slot);
|
|
58
|
+
if (index < 0 || index >= array.length) {
|
|
59
|
+
throw new Error(
|
|
60
|
+
`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`,
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
array[index] = value;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Removes the element at the given index, shifting subsequent elements backward. Throws if out of bounds. */
|
|
67
|
+
remove(slot: Fr, index: number): void {
|
|
68
|
+
const array = this.readArrayAt(slot);
|
|
69
|
+
if (index < 0 || index >= array.length) {
|
|
70
|
+
throw new Error(
|
|
71
|
+
`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`,
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
array.splice(index, 1);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Removes all elements from the array. */
|
|
78
|
+
clear(slot: Fr): void {
|
|
79
|
+
this.#arrays.delete(slot.toString());
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** Allocates a fresh, unused slot for a new ephemeral array. */
|
|
83
|
+
allocateSlot(): Fr {
|
|
84
|
+
let slot: Fr;
|
|
85
|
+
do {
|
|
86
|
+
slot = Fr.random();
|
|
87
|
+
} while (this.#arrays.has(slot.toString()));
|
|
88
|
+
return slot;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** Creates a new ephemeral array pre-populated with the given elements and returns its slot. */
|
|
92
|
+
newArray(elements: Fr[][]): Fr {
|
|
93
|
+
const slot = this.allocateSlot();
|
|
94
|
+
this.#setArray(slot, elements);
|
|
95
|
+
return slot;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/** Copies `count` elements from the source array to the destination array (overwrites destination). */
|
|
99
|
+
copy(srcSlot: Fr, dstSlot: Fr, count: number): void {
|
|
100
|
+
const srcArray = this.readArrayAt(srcSlot);
|
|
101
|
+
if (count > srcArray.length) {
|
|
102
|
+
throw new Error(
|
|
103
|
+
`Cannot copy ${count} elements from ephemeral array of length ${srcArray.length} at slot ${srcSlot}`,
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
// Deep copy the elements to avoid aliasing
|
|
107
|
+
const copied = srcArray.slice(0, count).map(el => [...el]);
|
|
108
|
+
this.#setArray(dstSlot, copied);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -2,7 +2,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
3
|
import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
4
4
|
|
|
5
|
-
import type { NoteData } from './
|
|
5
|
+
import type { NoteData } from './noir-structs/note_data.js';
|
|
6
6
|
|
|
7
7
|
interface PendingNote {
|
|
8
8
|
note: NoteData;
|
|
@@ -43,12 +43,6 @@ export class ExecutionNoteCache {
|
|
|
43
43
|
|
|
44
44
|
private inRevertiblePhase = false;
|
|
45
45
|
|
|
46
|
-
/**
|
|
47
|
-
* Whether the protocol nullifier was used for nonce generation.
|
|
48
|
-
* We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
|
|
49
|
-
*/
|
|
50
|
-
private usedProtocolNullifierForNonces: boolean | undefined;
|
|
51
|
-
|
|
52
46
|
constructor(private readonly protocolNullifier: Fr) {}
|
|
53
47
|
|
|
54
48
|
/**
|
|
@@ -64,12 +58,9 @@ export class ExecutionNoteCache {
|
|
|
64
58
|
this.inRevertiblePhase = true;
|
|
65
59
|
this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
|
|
66
60
|
|
|
67
|
-
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
// we don't want to use them as the nonce generator.
|
|
71
|
-
this.usedProtocolNullifierForNonces = nullifiers.length === 0;
|
|
72
|
-
const nonceGenerator = this.usedProtocolNullifierForNonces ? this.protocolNullifier : new Fr(nullifiers[0]);
|
|
61
|
+
// The protocol nullifier is always the tx's first nullifier (injected by the kernel init), so it is the
|
|
62
|
+
// nonce generator for every note hash.
|
|
63
|
+
const nonceGenerator = this.protocolNullifier;
|
|
73
64
|
|
|
74
65
|
// The existing pending notes are all non-revertible.
|
|
75
66
|
// They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
|
|
@@ -102,14 +93,6 @@ export class ExecutionNoteCache {
|
|
|
102
93
|
return sideEffectCounter >= this.minRevertibleSideEffectCounter;
|
|
103
94
|
}
|
|
104
95
|
|
|
105
|
-
public finish() {
|
|
106
|
-
// If we never entered the revertible phase, and there are no nullifiers emitted, we need to use the protocol
|
|
107
|
-
// nullifier as the nonce generator.
|
|
108
|
-
if (!this.inRevertiblePhase) {
|
|
109
|
-
this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
96
|
/**
|
|
114
97
|
* Add a new note to cache.
|
|
115
98
|
* @param note - New note created during execution.
|
|
@@ -223,19 +206,15 @@ export class ExecutionNoteCache {
|
|
|
223
206
|
}
|
|
224
207
|
|
|
225
208
|
/**
|
|
226
|
-
* @returns All nullifiers
|
|
227
|
-
*
|
|
209
|
+
* @returns All nullifiers of the transaction: the protocol nullifier (the kernel-injected first nullifier),
|
|
210
|
+
* followed by those emitted by private calls.
|
|
228
211
|
*/
|
|
229
212
|
getAllNullifiers(): Fr[] {
|
|
230
|
-
|
|
231
|
-
throw new Error('usedProtocolNullifierForNonces is not set yet. Call finish() to complete the transaction.');
|
|
232
|
-
}
|
|
233
|
-
const allNullifiers = this.getEmittedNullifiers();
|
|
234
|
-
return [...(this.usedProtocolNullifierForNonces ? [this.protocolNullifier] : []), ...allNullifiers];
|
|
213
|
+
return [this.protocolNullifier, ...this.getEmittedNullifiers()];
|
|
235
214
|
}
|
|
236
215
|
|
|
237
216
|
getNonceGenerator(): Fr {
|
|
238
|
-
return this.
|
|
217
|
+
return this.protocolNullifier;
|
|
239
218
|
}
|
|
240
219
|
|
|
241
220
|
#recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* A map that stores the tagging index range for a given extended directional app tagging secret.
|
|
5
|
-
* Note: The directional app tagging secret is unique for a (sender, recipient, contract) tuple while the direction
|
|
6
|
-
* of sender -> recipient matters.
|
|
7
|
-
*/
|
|
3
|
+
/** A map that stores the tagging index range for a given app tagging secret. */
|
|
8
4
|
export class ExecutionTaggingIndexCache {
|
|
9
5
|
private taggingIndexMap: Map<string, { lowestIndex: number; highestIndex: number }> = new Map();
|
|
10
6
|
|
|
11
|
-
public getLastUsedIndex(secret:
|
|
7
|
+
public getLastUsedIndex(secret: AppTaggingSecret): number | undefined {
|
|
12
8
|
return this.taggingIndexMap.get(secret.toString())?.highestIndex;
|
|
13
9
|
}
|
|
14
10
|
|
|
15
|
-
public setLastUsedIndex(secret:
|
|
11
|
+
public setLastUsedIndex(secret: AppTaggingSecret, index: number) {
|
|
16
12
|
const currentValue = this.taggingIndexMap.get(secret.toString());
|
|
17
13
|
if (currentValue !== undefined && currentValue.highestIndex !== index - 1) {
|
|
18
14
|
throw new Error(`Invalid tagging index update. Current value: ${currentValue.highestIndex}, new value: ${index}`);
|
|
@@ -29,7 +25,7 @@ export class ExecutionTaggingIndexCache {
|
|
|
29
25
|
*/
|
|
30
26
|
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
31
27
|
return Array.from(this.taggingIndexMap.entries()).map(([secret, { lowestIndex, highestIndex }]) => ({
|
|
32
|
-
extendedSecret:
|
|
28
|
+
extendedSecret: AppTaggingSecret.fromString(secret),
|
|
33
29
|
lowestIndex,
|
|
34
30
|
highestIndex,
|
|
35
31
|
}));
|