@aztec/pxe 0.0.0-test.1 → 0.0.1-commit.017a351
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/README.md +5 -5
- package/dest/bin/check_oracle_version.d.ts +2 -0
- package/dest/bin/check_oracle_version.d.ts.map +1 -0
- package/dest/bin/check_oracle_version.js +73 -0
- package/dest/bin/index.d.ts +2 -3
- package/dest/bin/index.d.ts.map +1 -1
- package/dest/bin/index.js +1 -28
- package/dest/bin/oracle_version_helpers.d.ts +26 -0
- package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
- package/dest/bin/oracle_version_helpers.js +93 -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 +62 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts +49 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/block_synchronizer/block_synchronizer.js +173 -0
- package/dest/block_synchronizer/index.d.ts +2 -0
- package/dest/block_synchronizer/index.d.ts.map +1 -0
- package/dest/block_synchronizer/index.js +1 -0
- package/dest/config/index.d.ts +20 -25
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +35 -35
- package/dest/config/package_info.d.ts +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/benchmarked_node.js +77 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +119 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -0
- package/dest/contract_function_simulator/contract_function_simulator.js +480 -0
- 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 +104 -0
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -0
- package/dest/contract_function_simulator/execution_note_cache.js +208 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +12 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +30 -0
- package/dest/contract_function_simulator/hashed_values_cache.d.ts +28 -0
- package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -0
- package/dest/contract_function_simulator/hashed_values_cache.js +36 -0
- package/dest/contract_function_simulator/index.d.ts +26 -0
- package/dest/contract_function_simulator/index.d.ts.map +1 -0
- package/dest/contract_function_simulator/index.js +23 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +48 -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 +45 -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 +20 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +39 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +26 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +57 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +17 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +63 -0
- 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 +22 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +47 -0
- package/dest/contract_function_simulator/noir-structs/option.d.ts +61 -0
- package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/option.js +62 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +11 -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 +24 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.js +22 -0
- package/dest/contract_function_simulator/oracle/index.d.ts +14 -0
- package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/index.js +2 -0
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +25 -0
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +19 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +24 -0
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +28 -0
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +54 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +89 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle.js +552 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +127 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.js +786 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +139 -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 +560 -0
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +23 -0
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/private_execution.js +89 -0
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +212 -0
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +457 -0
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +283 -0
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +654 -0
- package/dest/contract_function_simulator/pick_notes.d.ts +85 -0
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -0
- package/dest/contract_function_simulator/pick_notes.js +68 -0
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +6 -0
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -0
- package/dest/contract_function_simulator/proxied_contract_data_source.js +51 -0
- package/dest/contract_logging.d.ts +27 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +38 -0
- package/dest/contract_sync/contract_sync_service.d.ts +42 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +135 -0
- package/dest/contract_sync/helpers.d.ts +27 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/helpers.js +53 -0
- package/dest/debug/pxe_debug_utils.d.ts +40 -0
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
- package/dest/debug/pxe_debug_utils.js +42 -0
- package/dest/entrypoints/client/bundle/index.d.ts +6 -3
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +4 -2
- package/dest/entrypoints/client/bundle/utils.d.ts +10 -10
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +51 -14
- package/dest/entrypoints/client/lazy/index.d.ts +6 -3
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +4 -2
- package/dest/entrypoints/client/lazy/utils.d.ts +10 -10
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +51 -14
- package/dest/entrypoints/pxe_creation_options.d.ts +26 -0
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -0
- package/dest/entrypoints/pxe_creation_options.js +3 -0
- package/dest/entrypoints/server/index.d.ts +10 -4
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +8 -3
- package/dest/entrypoints/server/utils.d.ts +9 -16
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +62 -36
- package/dest/error_enriching.d.ts +11 -0
- package/dest/error_enriching.d.ts.map +1 -0
- package/dest/{pxe_service/error_enriching.js → error_enriching.js} +30 -22
- package/dest/events/event_service.d.ts +24 -0
- package/dest/events/event_service.d.ts.map +1 -0
- package/dest/events/event_service.js +77 -0
- package/dest/events/index.d.ts +2 -0
- package/dest/events/index.d.ts.map +1 -0
- package/dest/events/index.js +1 -0
- package/dest/events/private_event_filter_validator.d.ts +10 -0
- package/dest/events/private_event_filter_validator.d.ts.map +1 -0
- package/dest/events/private_event_filter_validator.js +53 -0
- package/dest/hooks/authorize_utility_call.d.ts +41 -0
- package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
- package/dest/hooks/authorize_utility_call.js +4 -0
- package/dest/hooks/execution_hooks.d.ts +42 -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 +4 -0
- package/dest/hooks/index.d.ts.map +1 -0
- package/dest/hooks/index.js +1 -0
- package/dest/job_coordinator/job_coordinator.d.ts +75 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +94 -0
- package/dest/logs/log_service.d.ts +29 -0
- package/dest/logs/log_service.d.ts.map +1 -0
- package/dest/logs/log_service.js +172 -0
- package/dest/messages/message_context_service.d.ts +17 -0
- package/dest/messages/message_context_service.d.ts.map +1 -0
- package/dest/messages/message_context_service.js +55 -0
- package/dest/notes/index.d.ts +2 -0
- package/dest/notes/index.d.ts.map +1 -0
- package/dest/notes/index.js +1 -0
- package/dest/notes/note_service.d.ts +70 -0
- package/dest/notes/note_service.d.ts.map +1 -0
- package/dest/notes/note_service.js +172 -0
- package/dest/notes_filter.d.ts +24 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +4 -0
- package/dest/oracle_version.d.ts.map +1 -0
- package/dest/oracle_version.js +21 -0
- package/dest/private_kernel/batch_planner.d.ts +47 -0
- package/dest/private_kernel/batch_planner.d.ts.map +1 -0
- package/dest/private_kernel/batch_planner.js +104 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.js +41 -0
- package/dest/private_kernel/hints/index.d.ts +3 -0
- package/dest/private_kernel/hints/index.d.ts.map +1 -0
- package/dest/private_kernel/hints/index.js +2 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +338 -0
- package/dest/private_kernel/hints/test_utils.d.ts +122 -0
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
- package/dest/private_kernel/hints/test_utils.js +202 -0
- package/dest/private_kernel/index.d.ts +3 -0
- package/dest/private_kernel/index.d.ts.map +1 -0
- package/dest/private_kernel/index.js +2 -0
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +49 -0
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -0
- package/dest/private_kernel/private_kernel_execution_prover.js +386 -0
- package/dest/private_kernel/private_kernel_oracle.d.ts +63 -0
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -0
- package/dest/private_kernel/private_kernel_oracle.js +98 -0
- package/dest/pxe.d.ts +300 -0
- package/dest/pxe.d.ts.map +1 -0
- package/dest/pxe.js +839 -0
- package/dest/storage/address_store/address_store.d.ts +11 -0
- package/dest/storage/address_store/address_store.d.ts.map +1 -0
- package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -15
- package/dest/storage/address_store/index.d.ts +2 -0
- package/dest/storage/address_store/index.d.ts.map +1 -0
- package/dest/storage/address_store/index.js +1 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
- package/dest/storage/anchor_block_store/anchor_block_store.js +26 -0
- package/dest/storage/anchor_block_store/index.d.ts +2 -0
- package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
- package/dest/storage/anchor_block_store/index.js +1 -0
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.js +591 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
- package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_service.js +50 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_store.js +261 -0
- package/dest/storage/capsule_store/index.d.ts +3 -0
- package/dest/storage/capsule_store/index.d.ts.map +1 -0
- package/dest/storage/capsule_store/index.js +2 -0
- package/dest/storage/contract_store/contract_store.d.ts +93 -0
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
- package/dest/storage/contract_store/contract_store.js +292 -0
- package/dest/storage/contract_store/index.d.ts +2 -0
- package/dest/storage/contract_store/index.d.ts.map +1 -0
- package/dest/storage/contract_store/index.js +1 -0
- package/dest/storage/contract_store/private_functions_tree.d.ts +27 -0
- package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
- package/dest/storage/contract_store/private_functions_tree.js +47 -0
- package/dest/storage/index.d.ts +9 -10
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +8 -9
- package/dest/storage/metadata.d.ts +2 -0
- package/dest/storage/metadata.d.ts.map +1 -0
- package/dest/storage/metadata.js +1 -0
- package/dest/storage/note_store/index.d.ts +3 -0
- package/dest/storage/note_store/index.d.ts.map +1 -0
- package/dest/storage/note_store/index.js +2 -0
- package/dest/storage/note_store/note_store.d.ts +83 -0
- package/dest/storage/note_store/note_store.d.ts.map +1 -0
- package/dest/storage/note_store/note_store.js +343 -0
- package/dest/storage/note_store/stored_note.d.ts +16 -0
- package/dest/storage/note_store/stored_note.d.ts.map +1 -0
- package/dest/storage/note_store/stored_note.js +43 -0
- package/dest/storage/open_pxe_stores.d.ts +33 -0
- package/dest/storage/open_pxe_stores.d.ts.map +1 -0
- package/dest/storage/open_pxe_stores.js +27 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
- package/dest/storage/private_event_store/private_event_store.js +276 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
- package/dest/storage/private_event_store/stored_private_event.js +56 -0
- package/dest/storage/tagging_store/index.d.ts +4 -0
- package/dest/storage/tagging_store/index.d.ts.map +1 -0
- package/dest/storage/tagging_store/index.js +3 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_address_book_store.js +36 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +78 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_tagging_store.js +374 -0
- package/dest/tagging/constants.d.ts +2 -0
- package/dest/tagging/constants.d.ts.map +1 -0
- package/dest/tagging/constants.js +10 -0
- package/dest/tagging/get_all_logs_by_tags.d.ts +48 -0
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
- package/dest/tagging/get_all_logs_by_tags.js +59 -0
- package/dest/tagging/index.d.ts +18 -0
- package/dest/tagging/index.d.ts.map +1 -0
- package/dest/tagging/index.js +16 -0
- 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 +56 -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 +163 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
- package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
- package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
- package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +16 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +92 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +17 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +60 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +19 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +72 -0
- package/package.json +48 -33
- package/src/bin/check_oracle_version.ts +88 -0
- package/src/bin/index.ts +1 -38
- package/src/bin/oracle_version_helpers.ts +121 -0
- package/src/block_synchronizer/block_stream_source.ts +81 -0
- package/src/block_synchronizer/block_synchronizer.ts +200 -0
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +48 -56
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +888 -0
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- package/src/contract_function_simulator/execution_note_cache.ts +252 -0
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +33 -0
- package/src/contract_function_simulator/hashed_values_cache.ts +47 -0
- package/src/contract_function_simulator/index.ts +63 -0
- package/src/contract_function_simulator/noir-structs/bounded_vec.ts +55 -0
- package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +52 -0
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +61 -0
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +66 -0
- package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +59 -0
- package/src/contract_function_simulator/noir-structs/option.ts +69 -0
- package/src/contract_function_simulator/noir-structs/provided_secret.ts +27 -0
- package/src/contract_function_simulator/noir-structs/utility_context.ts +23 -0
- package/src/contract_function_simulator/oracle/index.ts +16 -0
- package/src/contract_function_simulator/oracle/interfaces.ts +21 -0
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +23 -0
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +68 -0
- package/src/contract_function_simulator/oracle/oracle.ts +711 -0
- package/src/contract_function_simulator/oracle/oracle_registry.ts +585 -0
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +553 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +141 -0
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +667 -0
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +967 -0
- package/src/contract_function_simulator/pick_notes.ts +160 -0
- package/src/contract_function_simulator/proxied_contract_data_source.ts +60 -0
- package/src/contract_logging.ts +52 -0
- package/src/contract_sync/contract_sync_service.ts +189 -0
- package/src/contract_sync/helpers.ts +86 -0
- package/src/debug/pxe_debug_utils.ts +85 -0
- package/src/entrypoints/client/bundle/index.ts +5 -2
- package/src/entrypoints/client/bundle/utils.ts +47 -35
- package/src/entrypoints/client/lazy/index.ts +5 -2
- package/src/entrypoints/client/lazy/utils.ts +48 -31
- package/src/entrypoints/pxe_creation_options.ts +28 -0
- package/src/entrypoints/server/index.ts +9 -3
- package/src/entrypoints/server/utils.ts +65 -56
- package/src/{pxe_service/error_enriching.ts → error_enriching.ts} +40 -39
- package/src/events/event_service.ts +119 -0
- package/src/events/index.ts +1 -0
- package/src/events/private_event_filter_validator.ts +66 -0
- package/src/hooks/authorize_utility_call.ts +44 -0
- package/src/hooks/execution_hooks.ts +48 -0
- package/src/hooks/index.ts +7 -0
- package/src/job_coordinator/job_coordinator.ts +150 -0
- package/src/logs/log_service.ts +237 -0
- package/src/messages/message_context_service.ts +62 -0
- package/src/notes/index.ts +1 -0
- package/src/notes/note_service.ts +230 -0
- package/src/notes_filter.ts +24 -0
- package/src/oracle_version.ts +22 -0
- package/src/private_kernel/batch_planner.ts +169 -0
- package/src/private_kernel/hints/compute_tx_expiration_timestamp.ts +58 -0
- package/src/private_kernel/hints/index.ts +2 -0
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +542 -0
- package/src/private_kernel/hints/test_utils.ts +318 -0
- package/src/private_kernel/index.ts +2 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +598 -0
- package/src/private_kernel/private_kernel_oracle.ts +162 -0
- package/src/pxe.ts +1305 -0
- package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +15 -21
- package/src/storage/address_store/index.ts +1 -0
- package/src/storage/anchor_block_store/anchor_block_store.ts +33 -0
- package/src/storage/anchor_block_store/index.ts +1 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +46 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +36 -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__/SenderAddressBookStore.json +16 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +97 -0
- package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
- package/src/storage/backwards_compatibility_tests/schema_tests.ts +712 -0
- package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
- package/src/storage/capsule_store/capsule_service.ts +90 -0
- package/src/storage/capsule_store/capsule_store.ts +333 -0
- package/src/storage/capsule_store/index.ts +2 -0
- package/src/storage/contract_store/contract_store.ts +408 -0
- package/src/storage/contract_store/index.ts +1 -0
- package/src/storage/contract_store/private_functions_tree.ts +67 -0
- package/src/storage/index.ts +8 -10
- package/src/storage/metadata.ts +1 -0
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/note_store/note_store.ts +415 -0
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/open_pxe_stores.ts +49 -0
- package/src/storage/private_event_store/private_event_store.ts +388 -0
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/index.ts +3 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +139 -0
- package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
- package/src/storage/tagging_store/sender_tagging_store.ts +476 -0
- package/src/tagging/constants.ts +10 -0
- package/src/tagging/get_all_logs_by_tags.ts +120 -0
- package/src/tagging/index.ts +20 -0
- package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
- package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +240 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
- package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +134 -0
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +66 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +84 -0
- package/dest/entrypoints/client/pxe_creation_options.d.ts +0 -11
- package/dest/entrypoints/client/pxe_creation_options.d.ts.map +0 -1
- package/dest/entrypoints/client/pxe_creation_options.js +0 -1
- package/dest/kernel_oracle/index.d.ts +0 -45
- package/dest/kernel_oracle/index.d.ts.map +0 -1
- package/dest/kernel_oracle/index.js +0 -76
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +0 -270
- package/dest/kernel_prover/hints/index.d.ts +0 -2
- package/dest/kernel_prover/hints/index.d.ts.map +0 -1
- package/dest/kernel_prover/hints/index.js +0 -1
- package/dest/kernel_prover/index.d.ts +0 -3
- package/dest/kernel_prover/index.d.ts.map +0 -1
- package/dest/kernel_prover/index.js +0 -2
- package/dest/kernel_prover/kernel_prover.d.ts +0 -38
- package/dest/kernel_prover/kernel_prover.d.ts.map +0 -1
- package/dest/kernel_prover/kernel_prover.js +0 -217
- package/dest/kernel_prover/proving_data_oracle.d.ts +0 -73
- package/dest/kernel_prover/proving_data_oracle.d.ts.map +0 -1
- package/dest/kernel_prover/proving_data_oracle.js +0 -4
- package/dest/note_decryption_utils/add_public_values_to_payload.d.ts +0 -11
- package/dest/note_decryption_utils/add_public_values_to_payload.d.ts.map +0 -1
- package/dest/note_decryption_utils/add_public_values_to_payload.js +0 -47
- package/dest/pxe_http/index.d.ts +0 -2
- package/dest/pxe_http/index.d.ts.map +0 -1
- package/dest/pxe_http/index.js +0 -1
- package/dest/pxe_http/pxe_http_server.d.ts +0 -16
- package/dest/pxe_http/pxe_http_server.d.ts.map +0 -1
- package/dest/pxe_http/pxe_http_server.js +0 -27
- package/dest/pxe_oracle_interface/index.d.ts +0 -159
- package/dest/pxe_oracle_interface/index.d.ts.map +0 -1
- package/dest/pxe_oracle_interface/index.js +0 -692
- package/dest/pxe_oracle_interface/tagging_utils.d.ts +0 -17
- package/dest/pxe_oracle_interface/tagging_utils.d.ts.map +0 -1
- package/dest/pxe_oracle_interface/tagging_utils.js +0 -23
- package/dest/pxe_service/error_enriching.d.ts +0 -11
- package/dest/pxe_service/error_enriching.d.ts.map +0 -1
- package/dest/pxe_service/index.d.ts +0 -3
- package/dest/pxe_service/index.d.ts.map +0 -1
- package/dest/pxe_service/index.js +0 -2
- package/dest/pxe_service/pxe_service.d.ts +0 -111
- package/dest/pxe_service/pxe_service.d.ts.map +0 -1
- package/dest/pxe_service/pxe_service.js +0 -664
- package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -13
- package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.d.ts +0 -2
- package/dest/storage/address_data_provider/index.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.js +0 -1
- package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts +0 -11
- package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts.map +0 -1
- package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.js +0 -20
- package/dest/storage/auth_witness_data_provider/index.d.ts +0 -2
- package/dest/storage/auth_witness_data_provider/index.d.ts.map +0 -1
- package/dest/storage/auth_witness_data_provider/index.js +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -16
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -57
- package/dest/storage/capsule_data_provider/index.d.ts +0 -2
- package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts +0 -109
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/contract_data_provider.js +0 -183
- package/dest/storage/contract_data_provider/index.d.ts +0 -3
- package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.js +0 -2
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts +0 -66
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/private_functions_tree.js +0 -99
- package/dest/storage/data_provider.d.ts +0 -4
- package/dest/storage/data_provider.d.ts.map +0 -1
- package/dest/storage/data_provider.js +0 -1
- package/dest/storage/note_data_provider/index.d.ts +0 -3
- package/dest/storage/note_data_provider/index.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.js +0 -2
- package/dest/storage/note_data_provider/note_dao.d.ts +0 -106
- package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_dao.js +0 -106
- package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -20
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_data_provider.js +0 -249
- package/dest/storage/sync_data_provider/index.d.ts +0 -2
- package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/index.js +0 -1
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -12
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/sync_data_provider.js +0 -29
- package/dest/storage/tagging_data_provider/index.d.ts +0 -2
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -18
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -65
- package/dest/synchronizer/index.d.ts +0 -2
- package/dest/synchronizer/index.d.ts.map +0 -1
- package/dest/synchronizer/index.js +0 -1
- package/dest/synchronizer/synchronizer.d.ts +0 -37
- package/dest/synchronizer/synchronizer.d.ts.map +0 -1
- package/dest/synchronizer/synchronizer.js +0 -103
- package/dest/test/pxe_test_suite.d.ts +0 -3
- package/dest/test/pxe_test_suite.d.ts.map +0 -1
- package/dest/test/pxe_test_suite.js +0 -97
- package/src/entrypoints/client/pxe_creation_options.ts +0 -7
- package/src/kernel_oracle/index.ts +0 -117
- package/src/kernel_prover/hints/build_private_kernel_reset_private_inputs.ts +0 -472
- package/src/kernel_prover/hints/index.ts +0 -1
- package/src/kernel_prover/index.ts +0 -2
- package/src/kernel_prover/kernel_prover.ts +0 -351
- package/src/kernel_prover/proving_data_oracle.ts +0 -83
- package/src/note_decryption_utils/add_public_values_to_payload.ts +0 -64
- package/src/pxe_http/index.ts +0 -1
- package/src/pxe_http/pxe_http_server.ts +0 -29
- package/src/pxe_oracle_interface/index.ts +0 -925
- package/src/pxe_oracle_interface/tagging_utils.ts +0 -32
- package/src/pxe_service/index.ts +0 -2
- package/src/pxe_service/pxe_service.ts +0 -949
- package/src/storage/address_data_provider/index.ts +0 -1
- package/src/storage/auth_witness_data_provider/auth_witness_data_provider.ts +0 -34
- package/src/storage/auth_witness_data_provider/index.ts +0 -1
- package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -80
- package/src/storage/capsule_data_provider/index.ts +0 -1
- package/src/storage/contract_data_provider/contract_data_provider.ts +0 -261
- package/src/storage/contract_data_provider/index.ts +0 -2
- package/src/storage/contract_data_provider/private_functions_tree.ts +0 -131
- package/src/storage/data_provider.ts +0 -3
- package/src/storage/note_data_provider/index.ts +0 -2
- package/src/storage/note_data_provider/note_dao.ts +0 -162
- package/src/storage/note_data_provider/note_data_provider.ts +0 -345
- package/src/storage/sync_data_provider/index.ts +0 -1
- package/src/storage/sync_data_provider/sync_data_provider.ts +0 -40
- package/src/storage/tagging_data_provider/index.ts +0 -1
- package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -92
- package/src/synchronizer/index.ts +0 -1
- package/src/synchronizer/synchronizer.ts +0 -121
- package/src/test/pxe_test_suite.ts +0 -111
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
import type { NoteData } from './noir-structs/note_data.js';
|
|
4
|
+
interface PendingNote {
|
|
5
|
+
note: NoteData;
|
|
6
|
+
counter: number;
|
|
7
|
+
noteHashForConsumption: Fr;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Data that's accessible by all the function calls in an execution.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ExecutionNoteCache {
|
|
13
|
+
#private;
|
|
14
|
+
private readonly protocolNullifier;
|
|
15
|
+
/**
|
|
16
|
+
* New notes created in this transaction.
|
|
17
|
+
* They are pushed to this array in the same order as they are emitted.
|
|
18
|
+
*/
|
|
19
|
+
private notes;
|
|
20
|
+
/**
|
|
21
|
+
* This mapping maps from a contract address to the notes in the contract.
|
|
22
|
+
*/
|
|
23
|
+
private noteMap;
|
|
24
|
+
/**
|
|
25
|
+
* This maps from a contract address to the nullifiers emitted from the contract.
|
|
26
|
+
* The note which is nullified might be new or not (i.e., was generated in a previous transaction).
|
|
27
|
+
* Note that their value (bigint representation) is used because Frs cannot be looked up in Sets.
|
|
28
|
+
*/
|
|
29
|
+
private nullifierMap;
|
|
30
|
+
/**
|
|
31
|
+
* Nullifiers emitted by private calls in this transaction.
|
|
32
|
+
*/
|
|
33
|
+
private emittedNullifiers;
|
|
34
|
+
/**
|
|
35
|
+
* The counter that separates non-revertible side effects (which persist even if the tx reverts) from revertible ones.
|
|
36
|
+
*/
|
|
37
|
+
private minRevertibleSideEffectCounter;
|
|
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
|
+
constructor(protocolNullifier: Fr);
|
|
45
|
+
/**
|
|
46
|
+
* Enters the revertible phase of the transaction.
|
|
47
|
+
* @param minRevertibleSideEffectCounter - The counter at which the transaction enters the revertible phase.
|
|
48
|
+
*/
|
|
49
|
+
setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void>;
|
|
50
|
+
isSideEffectCounterRevertible(sideEffectCounter: number): boolean;
|
|
51
|
+
finish(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Add a new note to cache.
|
|
54
|
+
* @param note - New note created during execution.
|
|
55
|
+
*/
|
|
56
|
+
addNewNote(note: NoteData, counter: number): void;
|
|
57
|
+
/**
|
|
58
|
+
* Add a nullifier to cache. It could be for a db note or a new note created during execution.
|
|
59
|
+
* @param contractAddress - Contract address of the note.
|
|
60
|
+
* @param innerNullifier - Inner nullifier of the note.
|
|
61
|
+
* @param noteHash - A hash of the note. If this value equals 0, it means the note being nullified is from a previous
|
|
62
|
+
* transaction (and thus not a new note).
|
|
63
|
+
*/
|
|
64
|
+
nullifyNote(contractAddress: AztecAddress, innerNullifier: Fr, noteHash: Fr): Promise<number | undefined>;
|
|
65
|
+
/**
|
|
66
|
+
* Adds a nullifier to the cache. Note cache needs to track all nullifiers to decide which nullifier to use for note siloing.
|
|
67
|
+
* @param contractAddress - Contract address that emitted the nullifier.
|
|
68
|
+
* @param innerNullifier
|
|
69
|
+
*/
|
|
70
|
+
nullifierCreated(contractAddress: AztecAddress, innerNullifier: Fr): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Return notes created up to current point in execution.
|
|
73
|
+
* If a nullifier for a note in this list is emitted, the note will be deleted.
|
|
74
|
+
* @param contractAddress - Contract address of the notes.
|
|
75
|
+
* @param owner - Owner of the notes. If undefined, returns all notes regardless of owner.
|
|
76
|
+
* @param storageSlot - Storage slot of the notes.
|
|
77
|
+
**/
|
|
78
|
+
getNotes(contractAddress: AztecAddress, owner: AztecAddress | undefined, storageSlot: Fr): NoteData[];
|
|
79
|
+
/**
|
|
80
|
+
* Check if a note exists in the newNotes array.
|
|
81
|
+
* @param contractAddress - Contract address of the note.
|
|
82
|
+
* @param storageSlot - Storage slot of the note.
|
|
83
|
+
* @param noteHash - A hash of the note.
|
|
84
|
+
**/
|
|
85
|
+
checkNoteExists(contractAddress: AztecAddress, noteHash: Fr): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Return all nullifiers emitted from a contract.
|
|
88
|
+
* @param contractAddress - Address of the contract.
|
|
89
|
+
*/
|
|
90
|
+
getNullifiers(contractAddress: AztecAddress): Set<bigint>;
|
|
91
|
+
getAllNotes(): PendingNote[];
|
|
92
|
+
/**
|
|
93
|
+
* @returns All nullifiers emitted by private calls in this transaction.
|
|
94
|
+
*/
|
|
95
|
+
getEmittedNullifiers(): Fr[];
|
|
96
|
+
/**
|
|
97
|
+
* @returns All nullifiers emitted by private calls in this transaction. If the protocol nullifier was used as the
|
|
98
|
+
* nonce generator, it is injected as the first nullifier.
|
|
99
|
+
*/
|
|
100
|
+
getAllNullifiers(): Fr[];
|
|
101
|
+
getNonceGenerator(): Fr;
|
|
102
|
+
}
|
|
103
|
+
export {};
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX25vdGVfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX25vdGVfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELFVBQVUsV0FBVztJQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQ2YsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixzQkFBc0IsRUFBRSxFQUFFLENBQUM7Q0FDNUI7QUFFRDs7R0FFRztBQUNILHFCQUFhLGtCQUFrQjs7SUFvQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBbkM5Qzs7O09BR0c7SUFDSCxPQUFPLENBQUMsS0FBSyxDQUFxQjtJQUNsQzs7T0FFRztJQUNILE9BQU8sQ0FBQyxPQUFPLENBQXlDO0lBRXhEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsWUFBWSxDQUF1QztJQUUzRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBMEI7SUFFbkQ7O09BRUc7SUFDSCxPQUFPLENBQUMsOEJBQThCLENBQUs7SUFFM0MsT0FBTyxDQUFDLGlCQUFpQixDQUFTO0lBRWxDOzs7T0FHRztJQUNILE9BQU8sQ0FBQyw4QkFBOEIsQ0FBc0I7SUFFNUQsWUFBNkIsaUJBQWlCLEVBQUUsRUFBRSxFQUFJO0lBRXREOzs7T0FHRztJQUNVLGlDQUFpQyxDQUFDLDhCQUE4QixFQUFFLE1BQU0saUJBc0NwRjtJQUVNLDZCQUE2QixDQUFDLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxPQUFPLENBS3ZFO0lBRU0sTUFBTSxTQU1aO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFTaEQ7SUFFRDs7Ozs7O09BTUc7SUFDVSxXQUFXLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLCtCQXlCdkY7SUFFRDs7OztPQUlHO0lBQ1UsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxpQkFHOUU7SUFFRDs7Ozs7O1FBTUk7SUFDRyxRQUFRLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxjQU05RjtJQUVEOzs7OztRQUtJO0lBQ0csZUFBZSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsV0FHakU7SUFFRDs7O09BR0c7SUFDSSxhQUFhLENBQUMsZUFBZSxFQUFFLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBRS9EO0lBVUQsV0FBVyxJQUFJLFdBQVcsRUFBRSxDQUUzQjtJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLElBQUksRUFBRSxFQUFFLENBRTNCO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLElBQUksRUFBRSxFQUFFLENBTXZCO0lBRUQsaUJBQWlCLElBQUksRUFBRSxDQUV0QjtDQWFGIn0=
|
|
@@ -0,0 +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,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;;IAoCjB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAnC9C;;;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;;;OAGG;IACH,OAAO,CAAC,8BAA8B,CAAsB;IAE5D,YAA6B,iBAAiB,EAAE,EAAE,EAAI;IAEtD;;;OAGG;IACU,iCAAiC,CAAC,8BAA8B,EAAE,MAAM,iBAsCpF;IAEM,6BAA6B,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAKvE;IAEM,MAAM,SAMZ;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,CAMvB;IAED,iBAAiB,IAAI,EAAE,CAEtB;CAaF"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
3
|
+
/**
|
|
4
|
+
* Data that's accessible by all the function calls in an execution.
|
|
5
|
+
*/ export class ExecutionNoteCache {
|
|
6
|
+
protocolNullifier;
|
|
7
|
+
/**
|
|
8
|
+
* New notes created in this transaction.
|
|
9
|
+
* They are pushed to this array in the same order as they are emitted.
|
|
10
|
+
*/ notes;
|
|
11
|
+
/**
|
|
12
|
+
* This mapping maps from a contract address to the notes in the contract.
|
|
13
|
+
*/ noteMap;
|
|
14
|
+
/**
|
|
15
|
+
* This maps from a contract address to the nullifiers emitted from the contract.
|
|
16
|
+
* The note which is nullified might be new or not (i.e., was generated in a previous transaction).
|
|
17
|
+
* Note that their value (bigint representation) is used because Frs cannot be looked up in Sets.
|
|
18
|
+
*/ nullifierMap;
|
|
19
|
+
/**
|
|
20
|
+
* Nullifiers emitted by private calls in this transaction.
|
|
21
|
+
*/ emittedNullifiers;
|
|
22
|
+
/**
|
|
23
|
+
* The counter that separates non-revertible side effects (which persist even if the tx reverts) from revertible ones.
|
|
24
|
+
*/ minRevertibleSideEffectCounter;
|
|
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
|
+
constructor(protocolNullifier){
|
|
31
|
+
this.protocolNullifier = protocolNullifier;
|
|
32
|
+
this.notes = [];
|
|
33
|
+
this.noteMap = new Map();
|
|
34
|
+
this.nullifierMap = new Map();
|
|
35
|
+
this.emittedNullifiers = new Set();
|
|
36
|
+
this.minRevertibleSideEffectCounter = 0;
|
|
37
|
+
this.inRevertiblePhase = false;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Enters the revertible phase of the transaction.
|
|
41
|
+
* @param minRevertibleSideEffectCounter - The counter at which the transaction enters the revertible phase.
|
|
42
|
+
*/ async setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter) {
|
|
43
|
+
if (this.inRevertiblePhase) {
|
|
44
|
+
throw new Error(`Cannot enter the revertible phase twice. Current counter: ${minRevertibleSideEffectCounter}. Previous enter counter: ${this.minRevertibleSideEffectCounter}`);
|
|
45
|
+
}
|
|
46
|
+
this.inRevertiblePhase = true;
|
|
47
|
+
this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
|
|
48
|
+
const nullifiers = this.getEmittedNullifiers();
|
|
49
|
+
// If there are no nullifiers emitted by private calls so far, we use the protocol nullifier as the nonce generator.
|
|
50
|
+
// Note: There could still be nullifiers emitted after the counter is set, but those nullifiers are revertible, so
|
|
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]);
|
|
54
|
+
// The existing pending notes are all non-revertible.
|
|
55
|
+
// They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
|
|
56
|
+
// 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.
|
|
57
|
+
// The nonces will be used to create the "unique" note hashes.
|
|
58
|
+
const updatedNotes = await Promise.all(this.notes.map(async ({ note, counter }, i)=>{
|
|
59
|
+
const noteNonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
60
|
+
const uniqueNoteHash = await computeUniqueNoteHash(noteNonce, await siloNoteHash(note.contractAddress, note.noteHash));
|
|
61
|
+
return {
|
|
62
|
+
counter,
|
|
63
|
+
note: {
|
|
64
|
+
...note,
|
|
65
|
+
noteNonce
|
|
66
|
+
},
|
|
67
|
+
noteHashForConsumption: uniqueNoteHash
|
|
68
|
+
};
|
|
69
|
+
}));
|
|
70
|
+
// Rebuild the data.
|
|
71
|
+
this.notes = [];
|
|
72
|
+
this.noteMap = new Map();
|
|
73
|
+
updatedNotes.forEach((n)=>this.#addNote(n));
|
|
74
|
+
}
|
|
75
|
+
isSideEffectCounterRevertible(sideEffectCounter) {
|
|
76
|
+
if (!this.inRevertiblePhase) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
return sideEffectCounter >= this.minRevertibleSideEffectCounter;
|
|
80
|
+
}
|
|
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
|
+
/**
|
|
89
|
+
* Add a new note to cache.
|
|
90
|
+
* @param note - New note created during execution.
|
|
91
|
+
*/ addNewNote(note, counter) {
|
|
92
|
+
const previousNote = this.notes[this.notes.length - 1];
|
|
93
|
+
if (previousNote && previousNote.counter >= counter) {
|
|
94
|
+
throw new Error(`Note hash counters must be strictly increasing. Current counter: ${counter}. Previous counter: ${previousNote.counter}.`);
|
|
95
|
+
}
|
|
96
|
+
this.#addNote({
|
|
97
|
+
note,
|
|
98
|
+
counter,
|
|
99
|
+
noteHashForConsumption: note.noteHash
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Add a nullifier to cache. It could be for a db note or a new note created during execution.
|
|
104
|
+
* @param contractAddress - Contract address of the note.
|
|
105
|
+
* @param innerNullifier - Inner nullifier of the note.
|
|
106
|
+
* @param noteHash - A hash of the note. If this value equals 0, it means the note being nullified is from a previous
|
|
107
|
+
* transaction (and thus not a new note).
|
|
108
|
+
*/ async nullifyNote(contractAddress, innerNullifier, noteHash) {
|
|
109
|
+
const siloedNullifier = (await siloNullifier(contractAddress, innerNullifier)).toBigInt();
|
|
110
|
+
let nullifiedNoteHashCounter = undefined;
|
|
111
|
+
// Find and remove the matching new note and log(s) if the emitted noteHash is not empty.
|
|
112
|
+
if (!noteHash.isEmpty()) {
|
|
113
|
+
const notesInContract = this.noteMap.get(contractAddress.toBigInt()) ?? [];
|
|
114
|
+
const noteIndexToRemove = notesInContract.findIndex((n)=>n.noteHashForConsumption.equals(noteHash));
|
|
115
|
+
if (noteIndexToRemove === -1) {
|
|
116
|
+
throw new Error('Attempt to remove a pending note that does not exist.');
|
|
117
|
+
}
|
|
118
|
+
const note = notesInContract.splice(noteIndexToRemove, 1)[0];
|
|
119
|
+
nullifiedNoteHashCounter = note.counter;
|
|
120
|
+
this.noteMap.set(contractAddress.toBigInt(), notesInContract);
|
|
121
|
+
this.notes = this.notes.filter((n)=>n.counter !== note.counter);
|
|
122
|
+
// If the note is non revertible and the nullifier was emitted in the revertible phase, both the note hash and the nullifier will be emitted
|
|
123
|
+
if (this.inRevertiblePhase && note.counter < this.minRevertibleSideEffectCounter) {
|
|
124
|
+
this.#recordNullifier(contractAddress, siloedNullifier);
|
|
125
|
+
}
|
|
126
|
+
} else {
|
|
127
|
+
// If the note being nullified comes from a previous tx the nullifier will be emitted.
|
|
128
|
+
this.#recordNullifier(contractAddress, siloedNullifier);
|
|
129
|
+
}
|
|
130
|
+
return nullifiedNoteHashCounter;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Adds a nullifier to the cache. Note cache needs to track all nullifiers to decide which nullifier to use for note siloing.
|
|
134
|
+
* @param contractAddress - Contract address that emitted the nullifier.
|
|
135
|
+
* @param innerNullifier
|
|
136
|
+
*/ async nullifierCreated(contractAddress, innerNullifier) {
|
|
137
|
+
const siloedNullifier = (await siloNullifier(contractAddress, innerNullifier)).toBigInt();
|
|
138
|
+
this.#recordNullifier(contractAddress, siloedNullifier);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Return notes created up to current point in execution.
|
|
142
|
+
* If a nullifier for a note in this list is emitted, the note will be deleted.
|
|
143
|
+
* @param contractAddress - Contract address of the notes.
|
|
144
|
+
* @param owner - Owner of the notes. If undefined, returns all notes regardless of owner.
|
|
145
|
+
* @param storageSlot - Storage slot of the notes.
|
|
146
|
+
**/ getNotes(contractAddress, owner, storageSlot) {
|
|
147
|
+
const notes = this.noteMap.get(contractAddress.toBigInt()) ?? [];
|
|
148
|
+
return notes.filter((n)=>owner === undefined || n.note.owner.equals(owner)).filter((n)=>n.note.storageSlot.equals(storageSlot)).map((n)=>n.note);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Check if a note exists in the newNotes array.
|
|
152
|
+
* @param contractAddress - Contract address of the note.
|
|
153
|
+
* @param storageSlot - Storage slot of the note.
|
|
154
|
+
* @param noteHash - A hash of the note.
|
|
155
|
+
**/ checkNoteExists(contractAddress, noteHash) {
|
|
156
|
+
const notes = this.noteMap.get(contractAddress.toBigInt()) ?? [];
|
|
157
|
+
return notes.some((n)=>n.note.noteHash.equals(noteHash));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Return all nullifiers emitted from a contract.
|
|
161
|
+
* @param contractAddress - Address of the contract.
|
|
162
|
+
*/ getNullifiers(contractAddress) {
|
|
163
|
+
return this.nullifierMap.get(contractAddress.toBigInt()) ?? new Set();
|
|
164
|
+
}
|
|
165
|
+
#addNote(note) {
|
|
166
|
+
this.notes.push(note);
|
|
167
|
+
const notes = this.noteMap.get(note.note.contractAddress.toBigInt()) ?? [];
|
|
168
|
+
notes.push(note);
|
|
169
|
+
this.noteMap.set(note.note.contractAddress.toBigInt(), notes);
|
|
170
|
+
}
|
|
171
|
+
getAllNotes() {
|
|
172
|
+
return this.notes;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* @returns All nullifiers emitted by private calls in this transaction.
|
|
176
|
+
*/ getEmittedNullifiers() {
|
|
177
|
+
return [
|
|
178
|
+
...this.emittedNullifiers
|
|
179
|
+
].map((n)=>new Fr(n));
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* @returns All nullifiers emitted by private calls in this transaction. If the protocol nullifier was used as the
|
|
183
|
+
* nonce generator, it is injected as the first nullifier.
|
|
184
|
+
*/ 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
|
+
return [
|
|
190
|
+
...this.usedProtocolNullifierForNonces ? [
|
|
191
|
+
this.protocolNullifier
|
|
192
|
+
] : [],
|
|
193
|
+
...allNullifiers
|
|
194
|
+
];
|
|
195
|
+
}
|
|
196
|
+
getNonceGenerator() {
|
|
197
|
+
return this.getAllNullifiers()[0];
|
|
198
|
+
}
|
|
199
|
+
#recordNullifier(contractAddress, siloedNullifier) {
|
|
200
|
+
const nullifiers = this.getNullifiers(contractAddress);
|
|
201
|
+
if (nullifiers.has(siloedNullifier)) {
|
|
202
|
+
throw new Error(`Duplicate siloed nullifier ${siloedNullifier} emitted by contract ${contractAddress}`);
|
|
203
|
+
}
|
|
204
|
+
nullifiers.add(siloedNullifier);
|
|
205
|
+
this.nullifierMap.set(contractAddress.toBigInt(), nullifiers);
|
|
206
|
+
this.emittedNullifiers.add(siloedNullifier);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
|
|
2
|
+
/** A map that stores the tagging index range for a given app tagging secret. */
|
|
3
|
+
export declare class ExecutionTaggingIndexCache {
|
|
4
|
+
private taggingIndexMap;
|
|
5
|
+
getLastUsedIndex(secret: AppTaggingSecret): number | undefined;
|
|
6
|
+
setLastUsedIndex(secret: AppTaggingSecret, index: number): void;
|
|
7
|
+
/**
|
|
8
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
9
|
+
*/
|
|
10
|
+
getUsedTaggingIndexRanges(): TaggingIndexRange[];
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEtBQUssaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RSxnRkFBZ0Y7QUFDaEYscUJBQWEsMEJBQTBCO0lBQ3JDLE9BQU8sQ0FBQyxlQUFlLENBQXlFO0lBRXpGLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUVwRTtJQUVNLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxRQVU5RDtJQUVEOztPQUVHO0lBQ0kseUJBQXlCLElBQUksaUJBQWlCLEVBQUUsQ0FNdEQ7Q0FDRiJ9
|
|
@@ -0,0 +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,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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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 {
|
|
3
|
+
taggingIndexMap = new Map();
|
|
4
|
+
getLastUsedIndex(secret) {
|
|
5
|
+
return this.taggingIndexMap.get(secret.toString())?.highestIndex;
|
|
6
|
+
}
|
|
7
|
+
setLastUsedIndex(secret, index) {
|
|
8
|
+
const currentValue = this.taggingIndexMap.get(secret.toString());
|
|
9
|
+
if (currentValue !== undefined && currentValue.highestIndex !== index - 1) {
|
|
10
|
+
throw new Error(`Invalid tagging index update. Current value: ${currentValue.highestIndex}, new value: ${index}`);
|
|
11
|
+
}
|
|
12
|
+
if (currentValue !== undefined) {
|
|
13
|
+
currentValue.highestIndex = index;
|
|
14
|
+
} else {
|
|
15
|
+
this.taggingIndexMap.set(secret.toString(), {
|
|
16
|
+
lowestIndex: index,
|
|
17
|
+
highestIndex: index
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
23
|
+
*/ getUsedTaggingIndexRanges() {
|
|
24
|
+
return Array.from(this.taggingIndexMap.entries()).map(([secret, { lowestIndex, highestIndex }])=>({
|
|
25
|
+
extendedSecret: AppTaggingSecret.fromString(secret),
|
|
26
|
+
lowestIndex,
|
|
27
|
+
highestIndex
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { HashedValues } from '@aztec/stdlib/tx';
|
|
3
|
+
/**
|
|
4
|
+
* A cache for hashed values (arguments, returns) during transaction execution.
|
|
5
|
+
*/
|
|
6
|
+
export declare class HashedValuesCache {
|
|
7
|
+
private cache;
|
|
8
|
+
constructor(initialArguments?: HashedValues[]);
|
|
9
|
+
/**
|
|
10
|
+
* Creates a new hashed values cache.
|
|
11
|
+
* @param initialArguments - The initial arguments to add to the cache.
|
|
12
|
+
* @returns The new hashed values cache.
|
|
13
|
+
*/
|
|
14
|
+
static create(initialArguments?: HashedValues[]): HashedValuesCache;
|
|
15
|
+
/**
|
|
16
|
+
* Gets preimage of a hash.
|
|
17
|
+
* @param hash - The hash to get the preimage of.
|
|
18
|
+
* @returns The preimage.
|
|
19
|
+
*/
|
|
20
|
+
getPreimage(hash: Fr): Fr[] | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Stores values in cache and returns its hash.
|
|
23
|
+
* @param values - The values to store.
|
|
24
|
+
* @returns The hash of the values.
|
|
25
|
+
*/
|
|
26
|
+
store(values: Fr[], hash: Fr): void;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaGVkX3ZhbHVlc19jYWNoZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0X2Z1bmN0aW9uX3NpbXVsYXRvci9oYXNoZWRfdmFsdWVzX2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQ7O0dBRUc7QUFDSCxxQkFBYSxpQkFBaUI7SUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBb0I7SUFFakMsWUFBWSxnQkFBZ0IsR0FBRSxZQUFZLEVBQU8sRUFLaEQ7SUFFRDs7OztPQUlHO0lBQ0gsT0FBYyxNQUFNLENBQUMsZ0JBQWdCLEdBQUUsWUFBWSxFQUFPLHFCQUV6RDtJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxTQUFTLENBTTdDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsUUFFbEM7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashed_values_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/hashed_values_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAoB;IAEjC,YAAY,gBAAgB,GAAE,YAAY,EAAO,EAKhD;IAED;;;;OAIG;IACH,OAAc,MAAM,CAAC,gBAAgB,GAAE,YAAY,EAAO,qBAEzD;IAED;;;;OAIG;IACI,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,SAAS,CAM7C;IAED;;;;OAIG;IACI,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAElC;CACF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A cache for hashed values (arguments, returns) during transaction execution.
|
|
3
|
+
*/ export class HashedValuesCache {
|
|
4
|
+
cache;
|
|
5
|
+
constructor(initialArguments = []){
|
|
6
|
+
this.cache = new Map();
|
|
7
|
+
for (const initialArg of initialArguments){
|
|
8
|
+
this.cache.set(initialArg.hash.toBigInt(), initialArg.values);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new hashed values cache.
|
|
13
|
+
* @param initialArguments - The initial arguments to add to the cache.
|
|
14
|
+
* @returns The new hashed values cache.
|
|
15
|
+
*/ static create(initialArguments = []) {
|
|
16
|
+
return new HashedValuesCache(initialArguments);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Gets preimage of a hash.
|
|
20
|
+
* @param hash - The hash to get the preimage of.
|
|
21
|
+
* @returns The preimage.
|
|
22
|
+
*/ getPreimage(hash) {
|
|
23
|
+
if (hash.isEmpty()) {
|
|
24
|
+
return [];
|
|
25
|
+
} else {
|
|
26
|
+
return this.cache.get(hash.toBigInt());
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Stores values in cache and returns its hash.
|
|
31
|
+
* @param values - The values to store.
|
|
32
|
+
* @returns The hash of the values.
|
|
33
|
+
*/ store(values, hash) {
|
|
34
|
+
this.cache.set(hash.toBigInt(), values);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export { ORACLE_REGISTRY, callHandler, makeEntry, type HandlersForPrefix, type NamedValue, type OracleRegistryEntry, type ParamTypes, type StripOraclePrefix, } from './oracle/oracle_registry.js';
|
|
2
|
+
export { ARRAY, AZTEC_ADDRESS, BIGINT, BLOCK_NUMBER, BOOL, BOUNDED_VEC, BUFFER, BYTE, DELIVERY_MODE, EPHEMERAL_ARRAY, EVENT_VALIDATION_REQUEST, FIELD, FUNCTION_SELECTOR, LOG_RETRIEVAL_REQUEST, LOG_RETRIEVAL_RESPONSE, MEMBERSHIP_WITNESS, MESSAGE_CONTEXT, NOTE_VALIDATION_REQUEST, OPTION, PENDING_TAGGED_LOG, POINT, PROVIDED_SECRET, STR, U32, type InputSlot, type MaybePromise, type OutputSlot, type TypeMapping, } from './oracle/oracle_type_mappings.js';
|
|
3
|
+
export { ExecutionNoteCache } from './execution_note_cache.js';
|
|
4
|
+
export { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
5
|
+
export { HashedValuesCache } from './hashed_values_cache.js';
|
|
6
|
+
export { pickNotes } from './pick_notes.js';
|
|
7
|
+
export type { IMiscOracle, IUtilityExecutionOracle, IPrivateExecutionOracle } from './oracle/interfaces.js';
|
|
8
|
+
export type { NoteData } from './noir-structs/note_data.js';
|
|
9
|
+
export { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
|
|
10
|
+
export { MessageContextService } from '../messages/message_context_service.js';
|
|
11
|
+
export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
12
|
+
export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
13
|
+
export { Oracle } from './oracle/oracle.js';
|
|
14
|
+
export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
|
|
15
|
+
export { generateSimulatedProvingResult } from './contract_function_simulator.js';
|
|
16
|
+
export { packAsHintedNote } from './oracle/note_packing_utils.js';
|
|
17
|
+
export { BoundedVec } from './noir-structs/bounded_vec.js';
|
|
18
|
+
export { EphemeralArray } from './noir-structs/ephemeral_array.js';
|
|
19
|
+
export { Option } from './noir-structs/option.js';
|
|
20
|
+
export { UtilityContext } from './noir-structs/utility_context.js';
|
|
21
|
+
export { EventValidationRequest } from './noir-structs/event_validation_request.js';
|
|
22
|
+
export { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
|
|
23
|
+
export { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
|
|
24
|
+
export { NoteValidationRequest } from './noir-structs/note_validation_request.js';
|
|
25
|
+
export { ProvidedSecret } from './noir-structs/provided_secret.js';
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixXQUFXLEVBQ1gsU0FBUyxFQUNULEtBQUssaUJBQWlCLEVBQ3RCLEtBQUssVUFBVSxFQUNmLEtBQUssbUJBQW1CLEVBQ3hCLEtBQUssVUFBVSxFQUNmLEtBQUssaUJBQWlCLEdBQ3ZCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLEtBQUssRUFDTCxhQUFhLEVBQ2IsTUFBTSxFQUNOLFlBQVksRUFDWixJQUFJLEVBQ0osV0FBVyxFQUNYLE1BQU0sRUFDTixJQUFJLEVBQ0osYUFBYSxFQUNiLGVBQWUsRUFDZix3QkFBd0IsRUFDeEIsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsS0FBSyxFQUNMLGVBQWUsRUFDZixHQUFHLEVBQ0gsR0FBRyxFQUNILEtBQUssU0FBUyxFQUNkLEtBQUssWUFBWSxFQUNqQixLQUFLLFVBQVUsRUFDZixLQUFLLFdBQVcsR0FDakIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsWUFBWSxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVHLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGlDQUFpQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,WAAW,EACX,SAAS,EACT,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,KAAK,EACL,aAAa,EACb,MAAM,EACN,YAAY,EACZ,IAAI,EACJ,WAAW,EACX,MAAM,EACN,IAAI,EACJ,aAAa,EACb,eAAe,EACf,wBAAwB,EACxB,KAAK,EACL,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,KAAK,EACL,eAAe,EACf,GAAG,EACH,GAAG,EACH,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC5G,YAAY,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAC1G,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export { ORACLE_REGISTRY, callHandler, makeEntry } from './oracle/oracle_registry.js';
|
|
2
|
+
export { ARRAY, AZTEC_ADDRESS, BIGINT, BLOCK_NUMBER, BOOL, BOUNDED_VEC, BUFFER, BYTE, DELIVERY_MODE, EPHEMERAL_ARRAY, EVENT_VALIDATION_REQUEST, FIELD, FUNCTION_SELECTOR, LOG_RETRIEVAL_REQUEST, LOG_RETRIEVAL_RESPONSE, MEMBERSHIP_WITNESS, MESSAGE_CONTEXT, NOTE_VALIDATION_REQUEST, OPTION, PENDING_TAGGED_LOG, POINT, PROVIDED_SECRET, STR, U32 } from './oracle/oracle_type_mappings.js';
|
|
3
|
+
export { ExecutionNoteCache } from './execution_note_cache.js';
|
|
4
|
+
export { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
5
|
+
export { HashedValuesCache } from './hashed_values_cache.js';
|
|
6
|
+
export { pickNotes } from './pick_notes.js';
|
|
7
|
+
export { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
|
|
8
|
+
export { MessageContextService } from '../messages/message_context_service.js';
|
|
9
|
+
export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
10
|
+
export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
11
|
+
export { Oracle } from './oracle/oracle.js';
|
|
12
|
+
export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
|
|
13
|
+
export { generateSimulatedProvingResult } from './contract_function_simulator.js';
|
|
14
|
+
export { packAsHintedNote } from './oracle/note_packing_utils.js';
|
|
15
|
+
export { BoundedVec } from './noir-structs/bounded_vec.js';
|
|
16
|
+
export { EphemeralArray } from './noir-structs/ephemeral_array.js';
|
|
17
|
+
export { Option } from './noir-structs/option.js';
|
|
18
|
+
export { UtilityContext } from './noir-structs/utility_context.js';
|
|
19
|
+
export { EventValidationRequest } from './noir-structs/event_validation_request.js';
|
|
20
|
+
export { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
|
|
21
|
+
export { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
|
|
22
|
+
export { NoteValidationRequest } from './noir-structs/note_validation_request.js';
|
|
23
|
+
export { ProvidedSecret } from './noir-structs/provided_secret.js';
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`.
|
|
3
|
+
*
|
|
4
|
+
* Carries the actual `data` plus wire-format metadata (`maxLength`, `elementSize`) so the ACVM
|
|
5
|
+
* serializer can pad the storage slot to exactly `maxLength * elementSize` fields.
|
|
6
|
+
*/
|
|
7
|
+
export declare class BoundedVec<T> {
|
|
8
|
+
readonly data: T[];
|
|
9
|
+
readonly maxLength: number;
|
|
10
|
+
readonly elementSize: number;
|
|
11
|
+
private constructor();
|
|
12
|
+
/**
|
|
13
|
+
* Construct a BoundedVec with data.
|
|
14
|
+
*
|
|
15
|
+
* @param data - Actual elements. Length must be `<= maxLength`.
|
|
16
|
+
* @param maxLength - Maximum capacity declared at the Noir call site.
|
|
17
|
+
* The storage slot is padded to this many elements.
|
|
18
|
+
* @param elementSize - Number of Fr fields each element contributes when serialized.
|
|
19
|
+
* `1` for scalar elements (u8, Field) — this is the default.
|
|
20
|
+
* `> 1` for compound elements (e.g. a packed note that spans multiple fields).
|
|
21
|
+
*
|
|
22
|
+
* @example A bounded vec of bytes (elementSize defaults to 1):
|
|
23
|
+
* ```ts
|
|
24
|
+
* BoundedVec.from({ data: plaintext, maxLength: ciphertext.maxLength })
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @example A bounded vec of packed notes, each spanning `packedHintedNoteLength` fields:
|
|
28
|
+
* ```ts
|
|
29
|
+
* BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength })
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
static from<T>({ data, maxLength, elementSize }: {
|
|
33
|
+
data: T[];
|
|
34
|
+
maxLength: number;
|
|
35
|
+
elementSize?: number;
|
|
36
|
+
}): BoundedVec<T>;
|
|
37
|
+
/**
|
|
38
|
+
* Construct an empty BoundedVec, typically used as a shape template for `Option.empty(...)`.
|
|
39
|
+
*
|
|
40
|
+
* @param maxLength - Maximum capacity declared at the Noir call site.
|
|
41
|
+
* @param elementSize - Number of Fr fields each element contributes when serialized (default 1).
|
|
42
|
+
*/
|
|
43
|
+
static empty<T>({ maxLength, elementSize }: {
|
|
44
|
+
maxLength: number;
|
|
45
|
+
elementSize?: number;
|
|
46
|
+
}): BoundedVec<T>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRlZF92ZWMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3Ivbm9pci1zdHJ1Y3RzL2JvdW5kZWRfdmVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gscUJBQWEsVUFBVSxDQUFDLENBQUM7YUFFTCxJQUFJLEVBQUUsQ0FBQyxFQUFFO2FBQ1QsU0FBUyxFQUFFLE1BQU07YUFDakIsV0FBVyxFQUFFLE1BQU07SUFIckMsT0FBTyxlQUlIO0lBRUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQkc7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUNiLElBQUksRUFDSixTQUFTLEVBQ1QsV0FBZSxFQUNoQixFQUFFO1FBQ0QsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ1YsU0FBUyxFQUFFLE1BQU0sQ0FBQztRQUNsQixXQUFXLENBQUMsRUFBRSxNQUFNLENBQUM7S0FDdEIsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBRWhCO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFlLEVBQUUsRUFBRTtRQUFFLFNBQVMsRUFBRSxNQUFNLENBQUM7UUFBQyxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FFMUc7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounded_vec.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/noir-structs/bounded_vec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,UAAU,CAAC,CAAC;aAEL,IAAI,EAAE,CAAC,EAAE;aACT,SAAS,EAAE,MAAM;aACjB,WAAW,EAAE,MAAM;IAHrC,OAAO,eAIH;IAEJ;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EACb,IAAI,EACJ,SAAS,EACT,WAAe,EAChB,EAAE;QACD,IAAI,EAAE,CAAC,EAAE,CAAC;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,UAAU,CAAC,CAAC,CAAC,CAEhB;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,WAAe,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAE1G;CACF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`.
|
|
3
|
+
*
|
|
4
|
+
* Carries the actual `data` plus wire-format metadata (`maxLength`, `elementSize`) so the ACVM
|
|
5
|
+
* serializer can pad the storage slot to exactly `maxLength * elementSize` fields.
|
|
6
|
+
*/ export class BoundedVec {
|
|
7
|
+
data;
|
|
8
|
+
maxLength;
|
|
9
|
+
elementSize;
|
|
10
|
+
constructor(data, maxLength, elementSize){
|
|
11
|
+
this.data = data;
|
|
12
|
+
this.maxLength = maxLength;
|
|
13
|
+
this.elementSize = elementSize;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Construct a BoundedVec with data.
|
|
17
|
+
*
|
|
18
|
+
* @param data - Actual elements. Length must be `<= maxLength`.
|
|
19
|
+
* @param maxLength - Maximum capacity declared at the Noir call site.
|
|
20
|
+
* The storage slot is padded to this many elements.
|
|
21
|
+
* @param elementSize - Number of Fr fields each element contributes when serialized.
|
|
22
|
+
* `1` for scalar elements (u8, Field) — this is the default.
|
|
23
|
+
* `> 1` for compound elements (e.g. a packed note that spans multiple fields).
|
|
24
|
+
*
|
|
25
|
+
* @example A bounded vec of bytes (elementSize defaults to 1):
|
|
26
|
+
* ```ts
|
|
27
|
+
* BoundedVec.from({ data: plaintext, maxLength: ciphertext.maxLength })
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example A bounded vec of packed notes, each spanning `packedHintedNoteLength` fields:
|
|
31
|
+
* ```ts
|
|
32
|
+
* BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength })
|
|
33
|
+
* ```
|
|
34
|
+
*/ static from({ data, maxLength, elementSize = 1 }) {
|
|
35
|
+
return new BoundedVec(data, maxLength, elementSize);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Construct an empty BoundedVec, typically used as a shape template for `Option.empty(...)`.
|
|
39
|
+
*
|
|
40
|
+
* @param maxLength - Maximum capacity declared at the Noir call site.
|
|
41
|
+
* @param elementSize - Number of Fr fields each element contributes when serialized (default 1).
|
|
42
|
+
*/ static empty({ maxLength, elementSize = 1 }) {
|
|
43
|
+
return new BoundedVec([], maxLength, elementSize);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { EphemeralArrayService } from '../ephemeral_array_service.js';
|
|
3
|
+
import type { TypeMapping } from '../oracle/oracle_registry.js';
|
|
4
|
+
/**
|
|
5
|
+
* TypeScript counterpart of Noir's `EphemeralArray<T>`.
|
|
6
|
+
*
|
|
7
|
+
* An ephemeral array looks very different depending on whether it's being produced (as an oracle return value) or
|
|
8
|
+
* consumed (as an oracle parameter), so we use a discriminated state to model both without leaking those details to
|
|
9
|
+
* callers:
|
|
10
|
+
*
|
|
11
|
+
* - As a return value (`output` mode), what we have are the typed values the oracle just computed. The slot is just
|
|
12
|
+
* an implementation detail of how those values get handed back to ACVM, so we hold onto the values and the service
|
|
13
|
+
* they will eventually live in, and only materialize a slot when something actually asks for it.
|
|
14
|
+
*
|
|
15
|
+
* - As a parameter (`input` mode), what we have is a slot pointing at fields ACVM already wrote into the service,
|
|
16
|
+
* plus the TypeMapping that knows how to interpret those fields. We hold onto both so callers can later ask for
|
|
17
|
+
* the typed values without having to think about deserialization.
|
|
18
|
+
*
|
|
19
|
+
* In both modes the idea is the same: store everything we already know at construction time, so the rest of the
|
|
20
|
+
* code can work with typed values and never touch slots, services, or TypeMappings directly.
|
|
21
|
+
*/
|
|
22
|
+
export declare class EphemeralArray<T> {
|
|
23
|
+
private readonly state;
|
|
24
|
+
private constructor();
|
|
25
|
+
/** Create an output-mode array carrying typed values. The service is only used if/when the slot is materialized. */
|
|
26
|
+
static fromValues<T>(service: EphemeralArrayService, values: T[]): EphemeralArray<T>;
|
|
27
|
+
/** Wrap an existing slot. Intended for the EPHEMERAL_ARRAY combinator during ACVM deserialization. */
|
|
28
|
+
static fromSlot<T>(slot: Fr, mapping: TypeMapping<T>): EphemeralArray<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Returns the slot, materializing values into the service on first call for output-mode arrays.
|
|
31
|
+
* Intended for the EPHEMERAL_ARRAY combinator during ACVM serialization.
|
|
32
|
+
*/
|
|
33
|
+
materializeSlot(serializeItem: (v: T) => Fr[]): Fr;
|
|
34
|
+
/** Read all elements: returns stored values for output-mode arrays, deserializes from the service for input-mode. */
|
|
35
|
+
readAll(service: EphemeralArrayService): T[];
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBoZW1lcmFsX2FycmF5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL25vaXItc3RydWN0cy9lcGhlbWVyYWxfYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHekQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxxQkFBYSxjQUFjLENBQUMsQ0FBQztJQUNQLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztJQUExQyxPQUFPLGVBQStEO0lBRXRFLG9IQUFvSDtJQUNwSCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FFbkY7SUFFRCxzR0FBc0c7SUFDdEcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FFdkU7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBUWpEO0lBRUQscUhBQXFIO0lBQ3JILE9BQU8sQ0FBQyxPQUFPLEVBQUUscUJBQXFCLEdBQUcsQ0FBQyxFQUFFLENBUTNDO0NBQ0YifQ==
|