@aztec/pxe 0.0.1-commit.9593d84 → 0.0.1-commit.96bb3f7
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 +105 -15
- package/dest/block_synchronizer/block_synchronizer.d.ts +39 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/{synchronizer/synchronizer.js → block_synchronizer/block_synchronizer.js} +24 -23
- 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 +4 -4
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +42 -12
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +50 -19
- package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -3
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +4 -3
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
- package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
- package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/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 -2
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
- 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 +7 -6
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
- 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 +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -4
- 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 -3
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +2 -2
- 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 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +16 -13
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +2 -2
- 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 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +7 -3
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +7 -3
- package/dest/contract_function_simulator/oracle/oracle.d.ts +3 -3
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +27 -15
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +9 -10
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +13 -14
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +27 -27
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +32 -46
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +59 -16
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +149 -40
- package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
- package/dest/debug/pxe_debug_utils.d.ts +31 -0
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
- package/dest/debug/pxe_debug_utils.js +37 -0
- 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 +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +12 -3
- 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 +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +12 -3
- package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +2 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +1 -1
- package/dest/entrypoints/server/utils.d.ts +1 -1
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +12 -8
- package/dest/error_enriching.d.ts +4 -4
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +6 -6
- package/dest/events/event_service.d.ts +15 -0
- package/dest/events/event_service.d.ts.map +1 -0
- package/dest/events/event_service.js +47 -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 +9 -0
- package/dest/events/private_event_filter_validator.d.ts.map +1 -0
- package/dest/events/private_event_filter_validator.js +39 -0
- package/dest/job_coordinator/job_coordinator.d.ts +74 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +93 -0
- package/dest/logs/log_service.d.ts +26 -0
- package/dest/logs/log_service.d.ts.map +1 -0
- package/dest/logs/log_service.js +120 -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 +48 -0
- package/dest/notes/note_service.d.ts.map +1 -0
- package/dest/notes/note_service.js +152 -0
- package/dest/oracle_version.d.ts +2 -2
- package/dest/oracle_version.js +2 -2
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +2 -2
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -1
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.js +2 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +7 -8
- package/dest/private_kernel/private_kernel_oracle.d.ts +5 -3
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts +8 -7
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +9 -10
- package/dest/public_storage/public_storage_service.d.ts +24 -0
- package/dest/public_storage/public_storage_service.d.ts.map +1 -0
- package/dest/public_storage/public_storage_service.js +26 -0
- package/dest/pxe.d.ts +39 -46
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +165 -154
- 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} +1 -1
- 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/{sync_data_provider/sync_data_provider.d.ts → anchor_block_store/anchor_block_store.d.ts} +2 -3
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
- package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +2 -9
- package/dest/storage/{sync_data_provider → anchor_block_store}/index.d.ts +2 -2
- 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/capsule_store/capsule_store.d.ts +57 -0
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
- package/dest/storage/{capsule_data_provider/capsule_data_provider.js → capsule_store/capsule_store.js} +34 -6
- package/dest/storage/capsule_store/index.d.ts +2 -0
- package/dest/storage/capsule_store/index.d.ts.map +1 -0
- package/dest/storage/capsule_store/index.js +1 -0
- package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +8 -5
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +46 -3
- package/dest/storage/contract_store/index.d.ts +2 -0
- package/dest/storage/contract_store/index.d.ts.map +1 -0
- package/dest/storage/contract_store/index.js +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
- package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
- package/dest/storage/index.d.ts +8 -8
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +7 -7
- 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_data_provider/note_data_provider.d.ts → note_store/note_store.d.ts} +13 -12
- package/dest/storage/note_store/note_store.d.ts.map +1 -0
- package/dest/storage/{note_data_provider/note_data_provider.js → note_store/note_store.js} +20 -9
- package/dest/storage/private_event_store/private_event_store.d.ts +56 -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 +158 -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 +21 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/recipient_tagging_store.js +42 -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 +30 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +67 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_tagging_store.js +196 -0
- package/dest/tagging/constants.d.ts +2 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +10 -2
- package/dest/tagging/index.d.ts +15 -6
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +14 -5
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +14 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -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/recipient_sync/utils/load_logs_for_range.d.ts +14 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +29 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +20 -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 +74 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -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 +32 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +18 -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 +55 -0
- package/dest/tree_membership/tree_membership_service.d.ts +52 -0
- package/dest/tree_membership/tree_membership_service.d.ts.map +1 -0
- package/dest/tree_membership/tree_membership_service.js +84 -0
- package/package.json +17 -17
- package/src/bin/check_oracle_version.ts +130 -20
- package/src/{synchronizer/synchronizer.ts → block_synchronizer/block_synchronizer.ts} +23 -23
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +3 -3
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +93 -19
- package/src/contract_function_simulator/execution_note_cache.ts +7 -3
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
- package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -1
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -1
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +5 -2
- package/src/contract_function_simulator/noir-structs/utility_context.ts +1 -1
- package/src/contract_function_simulator/oracle/interfaces.ts +15 -10
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +17 -3
- package/src/contract_function_simulator/oracle/oracle.ts +33 -11
- package/src/contract_function_simulator/oracle/private_execution.ts +17 -17
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +101 -58
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +225 -47
- package/src/contract_function_simulator/pick_notes.ts +1 -1
- package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
- package/src/debug/pxe_debug_utils.ts +48 -0
- package/src/entrypoints/client/bundle/index.ts +0 -1
- package/src/entrypoints/client/bundle/utils.ts +9 -3
- package/src/entrypoints/client/lazy/index.ts +0 -1
- package/src/entrypoints/client/lazy/utils.ts +9 -4
- package/src/entrypoints/pxe_creation_options.ts +4 -1
- package/src/entrypoints/server/index.ts +1 -1
- package/src/entrypoints/server/utils.ts +12 -16
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +79 -0
- package/src/events/index.ts +1 -0
- package/src/events/private_event_filter_validator.ts +48 -0
- package/src/job_coordinator/job_coordinator.ts +149 -0
- package/src/logs/log_service.ts +202 -0
- package/src/notes/index.ts +1 -0
- package/src/notes/note_service.ts +200 -0
- package/src/oracle_version.ts +2 -2
- package/src/private_kernel/hints/build_private_kernel_reset_private_inputs.ts +2 -3
- package/src/private_kernel/private_kernel_execution_prover.ts +7 -8
- package/src/private_kernel/private_kernel_oracle.ts +4 -2
- package/src/private_kernel/private_kernel_oracle_impl.ts +12 -17
- package/src/public_storage/public_storage_service.ts +33 -0
- package/src/pxe.ts +214 -188
- package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +1 -1
- package/src/storage/address_store/index.ts +1 -0
- package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +2 -11
- package/src/storage/anchor_block_store/index.ts +1 -0
- package/src/storage/{capsule_data_provider/capsule_data_provider.ts → capsule_store/capsule_store.ts} +34 -2
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +65 -3
- package/src/storage/contract_store/index.ts +1 -0
- package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
- package/src/storage/index.ts +7 -7
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/{note_data_provider/note_data_provider.ts → note_store/note_store.ts} +26 -13
- package/src/storage/private_event_store/private_event_store.ts +216 -0
- package/src/storage/tagging_store/index.ts +3 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +53 -0
- package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
- package/src/storage/tagging_store/sender_tagging_store.ts +244 -0
- package/src/tagging/constants.ts +10 -2
- package/src/tagging/index.ts +17 -5
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +132 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +43 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +96 -0
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +48 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +72 -0
- package/src/tree_membership/tree_membership_service.ts +112 -0
- package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -265
- package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
- package/dest/contract_function_simulator/execution_data_provider.js +0 -14
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
- package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -694
- package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
- package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.d.ts +0 -2
- package/dest/storage/address_data_provider/index.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.js +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/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.map +0 -1
- package/dest/storage/contract_data_provider/index.d.ts +0 -2
- package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.d.ts +0 -3
- package/dest/storage/note_data_provider/index.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.js +0 -2
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -37
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -105
- 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.map +0 -1
- package/dest/storage/tagging_data_provider/index.d.ts +0 -2
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
- package/dest/synchronizer/index.d.ts +0 -2
- package/dest/synchronizer/index.d.ts.map +0 -1
- package/dest/synchronizer/index.js +0 -1
- package/dest/synchronizer/synchronizer.d.ts +0 -35
- package/dest/synchronizer/synchronizer.d.ts.map +0 -1
- package/dest/tagging/siloed_tag.d.ts +0 -14
- package/dest/tagging/siloed_tag.d.ts.map +0 -1
- package/dest/tagging/siloed_tag.js +0 -20
- package/dest/tagging/tag.d.ts +0 -12
- package/dest/tagging/tag.d.ts.map +0 -1
- package/dest/tagging/tag.js +0 -17
- package/dest/tagging/utils.d.ts +0 -18
- package/dest/tagging/utils.d.ts.map +0 -1
- package/dest/tagging/utils.js +0 -24
- package/src/contract_function_simulator/execution_data_provider.ts +0 -333
- package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1008
- package/src/storage/address_data_provider/index.ts +0 -1
- package/src/storage/capsule_data_provider/index.ts +0 -1
- package/src/storage/contract_data_provider/index.ts +0 -1
- package/src/storage/note_data_provider/index.ts +0 -2
- package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -143
- package/src/storage/sync_data_provider/index.ts +0 -1
- package/src/storage/tagging_data_provider/index.ts +0 -1
- package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
- package/src/synchronizer/index.ts +0 -1
- package/src/tagging/siloed_tag.ts +0 -22
- package/src/tagging/tag.ts +0 -16
- package/src/tagging/utils.ts +0 -31
package/src/pxe.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { PrivateEventFilter } from '@aztec/aztec.js/wallet';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
3
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
3
4
|
import { SerialQueue } from '@aztec/foundation/queue';
|
|
4
5
|
import { Timer } from '@aztec/foundation/timer';
|
|
@@ -11,14 +12,11 @@ import {
|
|
|
11
12
|
type ContractArtifact,
|
|
12
13
|
EventSelector,
|
|
13
14
|
FunctionCall,
|
|
14
|
-
FunctionSelector,
|
|
15
15
|
FunctionType,
|
|
16
16
|
decodeFunctionSignature,
|
|
17
|
-
encodeArguments,
|
|
18
17
|
} from '@aztec/stdlib/abi';
|
|
19
18
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
20
19
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
21
|
-
import type { L2BlockHash } from '@aztec/stdlib/block';
|
|
22
20
|
import {
|
|
23
21
|
CompleteAddress,
|
|
24
22
|
type ContractClassWithId,
|
|
@@ -35,10 +33,9 @@ import type {
|
|
|
35
33
|
PrivateKernelExecutionProofOutput,
|
|
36
34
|
PrivateKernelTailCircuitPublicInputs,
|
|
37
35
|
} from '@aztec/stdlib/kernel';
|
|
38
|
-
import type { NotesFilter } from '@aztec/stdlib/note';
|
|
39
|
-
import { NoteDao } from '@aztec/stdlib/note';
|
|
40
36
|
import {
|
|
41
37
|
type ContractOverrides,
|
|
38
|
+
type InTx,
|
|
42
39
|
PrivateExecutionResult,
|
|
43
40
|
PrivateSimulationResult,
|
|
44
41
|
type ProvingTimings,
|
|
@@ -47,7 +44,6 @@ import {
|
|
|
47
44
|
type SimulationTimings,
|
|
48
45
|
Tx,
|
|
49
46
|
TxExecutionRequest,
|
|
50
|
-
TxHash,
|
|
51
47
|
TxProfileResult,
|
|
52
48
|
TxProvingResult,
|
|
53
49
|
TxSimulationResult,
|
|
@@ -56,36 +52,36 @@ import {
|
|
|
56
52
|
|
|
57
53
|
import { inspect } from 'util';
|
|
58
54
|
|
|
55
|
+
import { BlockSynchronizer } from './block_synchronizer/index.js';
|
|
59
56
|
import type { PXEConfig } from './config/index.js';
|
|
60
57
|
import {
|
|
61
58
|
ContractFunctionSimulator,
|
|
62
59
|
generateSimulatedProvingResult,
|
|
63
60
|
} from './contract_function_simulator/contract_function_simulator.js';
|
|
64
61
|
import { readCurrentClassId } from './contract_function_simulator/oracle/private_execution.js';
|
|
65
|
-
import {
|
|
62
|
+
import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
|
|
66
63
|
import { ProxiedNodeFactory } from './contract_function_simulator/proxied_node.js';
|
|
67
|
-
import {
|
|
64
|
+
import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
|
|
68
65
|
import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
|
|
66
|
+
import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
|
|
67
|
+
import { JobCoordinator } from './job_coordinator/job_coordinator.js';
|
|
69
68
|
import {
|
|
70
69
|
PrivateKernelExecutionProver,
|
|
71
70
|
type PrivateKernelExecutionProverConfig,
|
|
72
71
|
} from './private_kernel/private_kernel_execution_prover.js';
|
|
73
72
|
import { PrivateKernelOracleImpl } from './private_kernel/private_kernel_oracle_impl.js';
|
|
74
|
-
import {
|
|
75
|
-
import {
|
|
76
|
-
import {
|
|
77
|
-
import {
|
|
78
|
-
import {
|
|
79
|
-
import {
|
|
80
|
-
import {
|
|
81
|
-
import {
|
|
82
|
-
|
|
83
|
-
|
|
73
|
+
import { AddressStore } from './storage/address_store/address_store.js';
|
|
74
|
+
import { AnchorBlockStore } from './storage/anchor_block_store/anchor_block_store.js';
|
|
75
|
+
import { CapsuleStore } from './storage/capsule_store/capsule_store.js';
|
|
76
|
+
import { ContractStore } from './storage/contract_store/contract_store.js';
|
|
77
|
+
import { NoteStore } from './storage/note_store/note_store.js';
|
|
78
|
+
import { PrivateEventStore } from './storage/private_event_store/private_event_store.js';
|
|
79
|
+
import { RecipientTaggingStore } from './storage/tagging_store/recipient_tagging_store.js';
|
|
80
|
+
import { SenderAddressBookStore } from './storage/tagging_store/sender_address_book_store.js';
|
|
81
|
+
import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store.js';
|
|
82
|
+
|
|
83
|
+
export type PackedPrivateEvent = InTx & {
|
|
84
84
|
packedEvent: Fr[];
|
|
85
|
-
blockNumber: number;
|
|
86
|
-
blockHash: L2BlockHash;
|
|
87
|
-
txHash: TxHash;
|
|
88
|
-
recipient: AztecAddress;
|
|
89
85
|
eventSelector: EventSelector;
|
|
90
86
|
};
|
|
91
87
|
|
|
@@ -96,21 +92,25 @@ export type PrivateEvent = {
|
|
|
96
92
|
export class PXE {
|
|
97
93
|
private constructor(
|
|
98
94
|
private node: AztecNode,
|
|
99
|
-
private
|
|
95
|
+
private blockStateSynchronizer: BlockSynchronizer,
|
|
100
96
|
private keyStore: KeyStore,
|
|
101
|
-
private
|
|
102
|
-
private
|
|
103
|
-
private
|
|
104
|
-
private
|
|
105
|
-
private
|
|
106
|
-
private
|
|
107
|
-
private
|
|
97
|
+
private contractStore: ContractStore,
|
|
98
|
+
private noteStore: NoteStore,
|
|
99
|
+
private capsuleStore: CapsuleStore,
|
|
100
|
+
private anchorBlockStore: AnchorBlockStore,
|
|
101
|
+
private senderTaggingStore: SenderTaggingStore,
|
|
102
|
+
private senderAddressBookStore: SenderAddressBookStore,
|
|
103
|
+
private recipientTaggingStore: RecipientTaggingStore,
|
|
104
|
+
private addressStore: AddressStore,
|
|
105
|
+
private privateEventStore: PrivateEventStore,
|
|
108
106
|
private simulator: CircuitSimulator,
|
|
109
107
|
private proverEnabled: boolean,
|
|
110
108
|
private proofCreator: PrivateKernelProver,
|
|
111
109
|
private protocolContractsProvider: ProtocolContractsProvider,
|
|
112
110
|
private log: Logger,
|
|
113
111
|
private jobQueue: SerialQueue,
|
|
112
|
+
private jobCoordinator: JobCoordinator,
|
|
113
|
+
public debug: PXEDebugUtils,
|
|
114
114
|
) {}
|
|
115
115
|
|
|
116
116
|
/**
|
|
@@ -135,46 +135,58 @@ export class PXE {
|
|
|
135
135
|
: loggerOrSuffix;
|
|
136
136
|
|
|
137
137
|
const proverEnabled = !!config.proverEnabled;
|
|
138
|
-
const
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
const
|
|
143
|
-
const
|
|
144
|
-
const
|
|
138
|
+
const addressStore = new AddressStore(store);
|
|
139
|
+
const privateEventStore = new PrivateEventStore(store);
|
|
140
|
+
const contractStore = new ContractStore(store);
|
|
141
|
+
const noteStore = await NoteStore.create(store);
|
|
142
|
+
const anchorBlockStore = new AnchorBlockStore(store);
|
|
143
|
+
const senderTaggingStore = new SenderTaggingStore(store);
|
|
144
|
+
const senderAddressBookStore = new SenderAddressBookStore(store);
|
|
145
|
+
const recipientTaggingStore = new RecipientTaggingStore(store);
|
|
146
|
+
const capsuleStore = new CapsuleStore(store);
|
|
145
147
|
const keyStore = new KeyStore(store);
|
|
146
148
|
const tipsStore = new L2TipsKVStore(store, 'pxe');
|
|
147
|
-
const synchronizer = new
|
|
149
|
+
const synchronizer = new BlockSynchronizer(
|
|
148
150
|
node,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
151
|
+
anchorBlockStore,
|
|
152
|
+
noteStore,
|
|
153
|
+
privateEventStore,
|
|
152
154
|
tipsStore,
|
|
153
155
|
config,
|
|
154
156
|
loggerOrSuffix,
|
|
155
157
|
);
|
|
156
158
|
|
|
159
|
+
const jobCoordinator = new JobCoordinator(store);
|
|
160
|
+
|
|
161
|
+
const debugUtils = new PXEDebugUtils(contractStore, noteStore);
|
|
162
|
+
|
|
157
163
|
const jobQueue = new SerialQueue();
|
|
158
164
|
|
|
159
165
|
const pxe = new PXE(
|
|
160
166
|
node,
|
|
161
167
|
synchronizer,
|
|
162
168
|
keyStore,
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
169
|
+
contractStore,
|
|
170
|
+
noteStore,
|
|
171
|
+
capsuleStore,
|
|
172
|
+
anchorBlockStore,
|
|
173
|
+
senderTaggingStore,
|
|
174
|
+
senderAddressBookStore,
|
|
175
|
+
recipientTaggingStore,
|
|
176
|
+
addressStore,
|
|
177
|
+
privateEventStore,
|
|
170
178
|
simulator,
|
|
171
179
|
proverEnabled,
|
|
172
180
|
proofCreator,
|
|
173
181
|
protocolContractsProvider,
|
|
174
182
|
log,
|
|
175
183
|
jobQueue,
|
|
184
|
+
jobCoordinator,
|
|
185
|
+
debugUtils,
|
|
176
186
|
);
|
|
177
187
|
|
|
188
|
+
debugUtils.setPXE(pxe);
|
|
189
|
+
|
|
178
190
|
pxe.jobQueue.start();
|
|
179
191
|
|
|
180
192
|
await pxe.#registerProtocolContracts();
|
|
@@ -186,19 +198,22 @@ export class PXE {
|
|
|
186
198
|
// Internal methods
|
|
187
199
|
|
|
188
200
|
#getSimulatorForTx(overrides?: { contracts?: ContractOverrides }) {
|
|
189
|
-
const
|
|
190
|
-
|
|
201
|
+
const proxyContractStore = ProxiedContractStoreFactory.create(this.contractStore, overrides?.contracts);
|
|
202
|
+
|
|
203
|
+
return new ContractFunctionSimulator(
|
|
204
|
+
proxyContractStore,
|
|
205
|
+
this.noteStore,
|
|
191
206
|
this.keyStore,
|
|
192
|
-
|
|
193
|
-
this.
|
|
194
|
-
this.
|
|
195
|
-
this.
|
|
196
|
-
this.
|
|
197
|
-
this.
|
|
198
|
-
this.
|
|
199
|
-
this.
|
|
207
|
+
this.addressStore,
|
|
208
|
+
ProxiedNodeFactory.create(this.node),
|
|
209
|
+
this.anchorBlockStore,
|
|
210
|
+
this.senderTaggingStore,
|
|
211
|
+
this.recipientTaggingStore,
|
|
212
|
+
this.senderAddressBookStore,
|
|
213
|
+
this.capsuleStore,
|
|
214
|
+
this.privateEventStore,
|
|
215
|
+
this.simulator,
|
|
200
216
|
);
|
|
201
|
-
return new ContractFunctionSimulator(pxeOracleInterface, this.simulator);
|
|
202
217
|
}
|
|
203
218
|
|
|
204
219
|
#contextualizeError(err: Error, ...context: string[]): Error {
|
|
@@ -221,7 +236,7 @@ export class PXE {
|
|
|
221
236
|
*
|
|
222
237
|
* Useful for tasks that cannot run concurrently, such as contract function simulation.
|
|
223
238
|
*/
|
|
224
|
-
#putInJobQueue<T>(fn: () => Promise<T>): Promise<T> {
|
|
239
|
+
#putInJobQueue<T>(fn: (jobId: string) => Promise<T>): Promise<T> {
|
|
225
240
|
// TODO(#12636): relax the conditions under which we forbid concurrency.
|
|
226
241
|
if (this.jobQueue.length() != 0) {
|
|
227
242
|
this.log.warn(
|
|
@@ -229,7 +244,22 @@ export class PXE {
|
|
|
229
244
|
);
|
|
230
245
|
}
|
|
231
246
|
|
|
232
|
-
return this.jobQueue.put(
|
|
247
|
+
return this.jobQueue.put(async () => {
|
|
248
|
+
const jobId = this.jobCoordinator.beginJob();
|
|
249
|
+
this.log.verbose(`Beginning job ${jobId}`);
|
|
250
|
+
|
|
251
|
+
try {
|
|
252
|
+
const result = await fn(jobId);
|
|
253
|
+
this.log.verbose(`Committing job ${jobId}`);
|
|
254
|
+
|
|
255
|
+
await this.jobCoordinator.commitJob(jobId);
|
|
256
|
+
return result;
|
|
257
|
+
} catch (err) {
|
|
258
|
+
this.log.verbose(`Aborting job ${jobId}`);
|
|
259
|
+
await this.jobCoordinator.abortJob(jobId);
|
|
260
|
+
throw err;
|
|
261
|
+
}
|
|
262
|
+
});
|
|
233
263
|
}
|
|
234
264
|
|
|
235
265
|
async #registerProtocolContracts() {
|
|
@@ -237,8 +267,8 @@ export class PXE {
|
|
|
237
267
|
for (const name of protocolContractNames) {
|
|
238
268
|
const { address, contractClass, instance, artifact } =
|
|
239
269
|
await this.protocolContractsProvider.getProtocolContractArtifact(name);
|
|
240
|
-
await this.
|
|
241
|
-
await this.
|
|
270
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
271
|
+
await this.contractStore.addContractInstance(instance);
|
|
242
272
|
registered[name] = address.toString();
|
|
243
273
|
}
|
|
244
274
|
this.log.verbose(`Registered protocol contracts in pxe`, registered);
|
|
@@ -257,56 +287,36 @@ export class PXE {
|
|
|
257
287
|
return !!(await this.node.getNullifierMembershipWitness('latest', initNullifier));
|
|
258
288
|
}
|
|
259
289
|
|
|
260
|
-
async #getFunctionCall(functionName: string, args: any[], to: AztecAddress): Promise<FunctionCall> {
|
|
261
|
-
const contract = await this.contractDataProvider.getContract(to);
|
|
262
|
-
if (!contract) {
|
|
263
|
-
throw new Error(
|
|
264
|
-
`Unknown contract ${to}: add it to PXE by calling server.addContracts(...).\nSee docs for context: https://docs.aztec.network/developers/resources/debugging/aztecnr-errors#unknown-contract-0x0-add-it-to-pxe-by-calling-serveraddcontracts`,
|
|
265
|
-
);
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
const functionDao = contract.functions.find(f => f.name === functionName);
|
|
269
|
-
if (!functionDao) {
|
|
270
|
-
throw new Error(`Unknown function ${functionName} in contract ${contract.name}.`);
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
return {
|
|
274
|
-
name: functionDao.name,
|
|
275
|
-
args: encodeArguments(functionDao, args),
|
|
276
|
-
selector: await FunctionSelector.fromNameAndParameters(functionDao.name, functionDao.parameters),
|
|
277
|
-
type: functionDao.functionType,
|
|
278
|
-
to,
|
|
279
|
-
hideMsgSender: false,
|
|
280
|
-
isStatic: functionDao.isStatic,
|
|
281
|
-
returnTypes: functionDao.returnTypes,
|
|
282
|
-
};
|
|
283
|
-
}
|
|
284
|
-
|
|
285
290
|
// Executes the entrypoint private function, as well as all nested private
|
|
286
291
|
// functions that might arise.
|
|
287
292
|
async #executePrivate(
|
|
288
293
|
contractFunctionSimulator: ContractFunctionSimulator,
|
|
289
294
|
txRequest: TxExecutionRequest,
|
|
290
|
-
scopes
|
|
295
|
+
scopes: AztecAddress[] | undefined,
|
|
296
|
+
jobId: string,
|
|
291
297
|
): Promise<PrivateExecutionResult> {
|
|
292
298
|
const { origin: contractAddress, functionSelector } = txRequest;
|
|
293
299
|
|
|
294
300
|
try {
|
|
301
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
302
|
+
|
|
295
303
|
const result = await contractFunctionSimulator.run(
|
|
296
304
|
txRequest,
|
|
297
305
|
contractAddress,
|
|
298
306
|
functionSelector,
|
|
299
307
|
undefined,
|
|
308
|
+
anchorBlockHeader,
|
|
300
309
|
// The sender for tags is set by contracts, typically by an account
|
|
301
310
|
// contract entrypoint
|
|
302
311
|
undefined, // senderForTags
|
|
303
312
|
scopes,
|
|
313
|
+
jobId,
|
|
304
314
|
);
|
|
305
315
|
this.log.debug(`Private simulation completed for ${contractAddress.toString()}:${functionSelector}`);
|
|
306
316
|
return result;
|
|
307
317
|
} catch (err) {
|
|
308
318
|
if (err instanceof SimulationError) {
|
|
309
|
-
await enrichSimulationError(err, this.
|
|
319
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
310
320
|
}
|
|
311
321
|
throw err;
|
|
312
322
|
}
|
|
@@ -319,19 +329,22 @@ export class PXE {
|
|
|
319
329
|
* @param authWitnesses - Authentication witnesses required for the function call.
|
|
320
330
|
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
321
331
|
* accounts if not specified.
|
|
332
|
+
* @param jobId - The job ID for staged writes.
|
|
322
333
|
* @returns The simulation result containing the outputs of the utility function.
|
|
323
334
|
*/
|
|
324
335
|
async #simulateUtility(
|
|
325
336
|
contractFunctionSimulator: ContractFunctionSimulator,
|
|
326
337
|
call: FunctionCall,
|
|
327
|
-
authWitnesses
|
|
328
|
-
scopes
|
|
338
|
+
authWitnesses: AuthWitness[] | undefined,
|
|
339
|
+
scopes: AztecAddress[] | undefined,
|
|
340
|
+
jobId: string,
|
|
329
341
|
) {
|
|
330
342
|
try {
|
|
331
|
-
|
|
343
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
344
|
+
return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes, jobId);
|
|
332
345
|
} catch (err) {
|
|
333
346
|
if (err instanceof SimulationError) {
|
|
334
|
-
await enrichSimulationError(err, this.
|
|
347
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
335
348
|
}
|
|
336
349
|
throw err;
|
|
337
350
|
}
|
|
@@ -355,7 +368,7 @@ export class PXE {
|
|
|
355
368
|
} catch (err) {
|
|
356
369
|
if (err instanceof SimulationError) {
|
|
357
370
|
try {
|
|
358
|
-
await enrichPublicSimulationError(err, this.
|
|
371
|
+
await enrichPublicSimulationError(err, this.contractStore, this.log);
|
|
359
372
|
} catch (enrichErr) {
|
|
360
373
|
this.log.error(`Failed to enrich public simulation error: ${enrichErr}`);
|
|
361
374
|
}
|
|
@@ -383,7 +396,7 @@ export class PXE {
|
|
|
383
396
|
): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
384
397
|
const simulationAnchorBlock = privateExecutionResult.getSimulationAnchorBlockNumber();
|
|
385
398
|
const kernelOracle = new PrivateKernelOracleImpl(
|
|
386
|
-
this.
|
|
399
|
+
this.contractStore,
|
|
387
400
|
this.keyStore,
|
|
388
401
|
this.node,
|
|
389
402
|
simulationAnchorBlock,
|
|
@@ -396,7 +409,7 @@ export class PXE {
|
|
|
396
409
|
// Public API
|
|
397
410
|
|
|
398
411
|
public getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
|
|
399
|
-
return this.
|
|
412
|
+
return this.contractStore.getContractInstance(address);
|
|
400
413
|
}
|
|
401
414
|
|
|
402
415
|
/**
|
|
@@ -421,7 +434,7 @@ export class PXE {
|
|
|
421
434
|
isContractClassPubliclyRegistered: boolean;
|
|
422
435
|
artifact: ContractArtifact | undefined;
|
|
423
436
|
}> {
|
|
424
|
-
const artifact = await this.
|
|
437
|
+
const artifact = await this.contractStore.getContractArtifact(id);
|
|
425
438
|
if (!artifact) {
|
|
426
439
|
this.log.warn(`No artifact found for contract class ${id.toString()} when looking for its metadata`);
|
|
427
440
|
}
|
|
@@ -451,7 +464,7 @@ export class PXE {
|
|
|
451
464
|
}> {
|
|
452
465
|
let instance;
|
|
453
466
|
try {
|
|
454
|
-
instance = await this.
|
|
467
|
+
instance = await this.contractStore.getContractInstance(address);
|
|
455
468
|
} catch {
|
|
456
469
|
this.log.warn(`No instance found for contract ${address.toString()} when looking for its metadata`);
|
|
457
470
|
}
|
|
@@ -483,56 +496,58 @@ export class PXE {
|
|
|
483
496
|
this.log.debug(`Registered account\n ${accountCompleteAddress.toReadableString()}`);
|
|
484
497
|
}
|
|
485
498
|
|
|
486
|
-
await this.
|
|
487
|
-
await this.
|
|
499
|
+
await this.addressStore.addCompleteAddress(accountCompleteAddress);
|
|
500
|
+
await this.noteStore.addScope(accountCompleteAddress.address);
|
|
488
501
|
return accountCompleteAddress;
|
|
489
502
|
}
|
|
490
503
|
|
|
491
504
|
/**
|
|
492
|
-
* Registers a
|
|
505
|
+
* Registers a sender in this PXE.
|
|
493
506
|
*
|
|
494
|
-
*
|
|
495
|
-
* Will do nothing if the
|
|
507
|
+
* After registering a new sender, the PXE will sync private logs that are tagged with this sender's address.
|
|
508
|
+
* Will do nothing if the address is already registered.
|
|
496
509
|
*
|
|
497
|
-
* @param
|
|
498
|
-
* @returns The address
|
|
510
|
+
* @param sender - Address of the sender to register.
|
|
511
|
+
* @returns The address of the sender.
|
|
512
|
+
* TODO: It's strange that we return the address here and I (benesjan) think we should drop the return value.
|
|
499
513
|
*/
|
|
500
|
-
public async registerSender(
|
|
514
|
+
public async registerSender(sender: AztecAddress): Promise<AztecAddress> {
|
|
501
515
|
const accounts = await this.keyStore.getAccounts();
|
|
502
|
-
if (accounts.includes(
|
|
503
|
-
this.log.info(`Sender:\n "${
|
|
504
|
-
return
|
|
516
|
+
if (accounts.includes(sender)) {
|
|
517
|
+
this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
|
|
518
|
+
return sender;
|
|
505
519
|
}
|
|
506
520
|
|
|
507
|
-
const wasAdded = await this.
|
|
521
|
+
const wasAdded = await this.senderAddressBookStore.addSender(sender);
|
|
508
522
|
|
|
509
523
|
if (wasAdded) {
|
|
510
|
-
this.log.info(`Added sender:\n ${
|
|
524
|
+
this.log.info(`Added sender:\n ${sender.toString()}`);
|
|
511
525
|
} else {
|
|
512
|
-
this.log.info(`Sender:\n "${
|
|
526
|
+
this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
|
|
513
527
|
}
|
|
514
528
|
|
|
515
|
-
return
|
|
529
|
+
return sender;
|
|
516
530
|
}
|
|
517
531
|
|
|
518
532
|
/**
|
|
519
|
-
* Retrieves
|
|
520
|
-
* @returns
|
|
533
|
+
* Retrieves senders registered in this PXE.
|
|
534
|
+
* @returns Senders registered in this PXE.
|
|
521
535
|
*/
|
|
522
536
|
public getSenders(): Promise<AztecAddress[]> {
|
|
523
|
-
return this.
|
|
537
|
+
return this.senderAddressBookStore.getSenders();
|
|
524
538
|
}
|
|
525
539
|
|
|
526
540
|
/**
|
|
527
|
-
* Removes a sender in
|
|
541
|
+
* Removes a sender registered in this PXE.
|
|
542
|
+
* @param sender - The address of the sender to remove.
|
|
528
543
|
*/
|
|
529
|
-
public async removeSender(
|
|
530
|
-
const wasRemoved = await this.
|
|
544
|
+
public async removeSender(sender: AztecAddress): Promise<void> {
|
|
545
|
+
const wasRemoved = await this.senderAddressBookStore.removeSender(sender);
|
|
531
546
|
|
|
532
547
|
if (wasRemoved) {
|
|
533
|
-
this.log.info(`Removed sender:\n ${
|
|
548
|
+
this.log.info(`Removed sender:\n ${sender.toString()}`);
|
|
534
549
|
} else {
|
|
535
|
-
this.log.info(`Sender:\n "${
|
|
550
|
+
this.log.info(`Sender:\n "${sender.toString()}"\n not registered in PXE.`);
|
|
536
551
|
}
|
|
537
552
|
}
|
|
538
553
|
|
|
@@ -542,7 +557,7 @@ export class PXE {
|
|
|
542
557
|
*/
|
|
543
558
|
public async getRegisteredAccounts(): Promise<CompleteAddress[]> {
|
|
544
559
|
// Get complete addresses of both the recipients and the accounts
|
|
545
|
-
const completeAddresses = await this.
|
|
560
|
+
const completeAddresses = await this.addressStore.getCompleteAddresses();
|
|
546
561
|
// Filter out the addresses not corresponding to accounts
|
|
547
562
|
const accounts = await this.keyStore.getAccounts();
|
|
548
563
|
return completeAddresses.filter(completeAddress =>
|
|
@@ -557,7 +572,7 @@ export class PXE {
|
|
|
557
572
|
*/
|
|
558
573
|
public async registerContractClass(artifact: ContractArtifact): Promise<void> {
|
|
559
574
|
const { id: contractClassId } = await getContractClassFromArtifact(artifact);
|
|
560
|
-
await this.
|
|
575
|
+
await this.contractStore.addContractArtifact(contractClassId, artifact);
|
|
561
576
|
this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
|
|
562
577
|
}
|
|
563
578
|
|
|
@@ -586,7 +601,7 @@ export class PXE {
|
|
|
586
601
|
if (!computedAddress.equals(instance.address)) {
|
|
587
602
|
throw new Error('Added a contract in which the address does not match the contract instance.');
|
|
588
603
|
}
|
|
589
|
-
await this.
|
|
604
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
590
605
|
|
|
591
606
|
const publicFunctionSignatures = artifact.functions
|
|
592
607
|
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
@@ -594,7 +609,7 @@ export class PXE {
|
|
|
594
609
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
595
610
|
} else {
|
|
596
611
|
// Otherwise, make sure there is an artifact already registered for that class id
|
|
597
|
-
artifact = await this.
|
|
612
|
+
artifact = await this.contractStore.getContractArtifact(instance.currentContractClassId);
|
|
598
613
|
if (!artifact) {
|
|
599
614
|
throw new Error(
|
|
600
615
|
`Artifact not found when registering an instance. Contract class: ${instance.currentContractClassId}.`,
|
|
@@ -602,7 +617,7 @@ export class PXE {
|
|
|
602
617
|
}
|
|
603
618
|
}
|
|
604
619
|
|
|
605
|
-
await this.
|
|
620
|
+
await this.contractStore.addContractInstance(instance);
|
|
606
621
|
this.log.info(
|
|
607
622
|
`Added contract ${artifact.name} at ${instance.address.toString()} with class ${instance.currentContractClassId}`,
|
|
608
623
|
);
|
|
@@ -621,14 +636,14 @@ export class PXE {
|
|
|
621
636
|
// We disable concurrently updating contracts to avoid concurrently syncing with the node, or changing a contract's
|
|
622
637
|
// class while we're simulating it.
|
|
623
638
|
return this.#putInJobQueue(async () => {
|
|
624
|
-
const currentInstance = await this.
|
|
639
|
+
const currentInstance = await this.contractStore.getContractInstance(contractAddress);
|
|
625
640
|
if (!currentInstance) {
|
|
626
641
|
throw new Error(`Instance not found when updating a contract. Contract address: ${contractAddress}.`);
|
|
627
642
|
}
|
|
628
643
|
const contractClass = await getContractClassFromArtifact(artifact);
|
|
629
|
-
await this.
|
|
644
|
+
await this.blockStateSynchronizer.sync();
|
|
630
645
|
|
|
631
|
-
const header = await this.
|
|
646
|
+
const header = await this.anchorBlockStore.getBlockHeader();
|
|
632
647
|
|
|
633
648
|
const currentClassId = await readCurrentClassId(
|
|
634
649
|
contractAddress,
|
|
@@ -641,7 +656,7 @@ export class PXE {
|
|
|
641
656
|
throw new Error('Could not update contract to a class different from the current one.');
|
|
642
657
|
}
|
|
643
658
|
|
|
644
|
-
await this.
|
|
659
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
645
660
|
|
|
646
661
|
const publicFunctionSignatures = artifact.functions
|
|
647
662
|
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
@@ -649,7 +664,7 @@ export class PXE {
|
|
|
649
664
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
650
665
|
|
|
651
666
|
currentInstance.currentContractClassId = contractClass.id;
|
|
652
|
-
await this.
|
|
667
|
+
await this.contractStore.addContractInstance(currentInstance);
|
|
653
668
|
this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
|
|
654
669
|
});
|
|
655
670
|
}
|
|
@@ -659,26 +674,7 @@ export class PXE {
|
|
|
659
674
|
* @returns An array of contracts addresses registered on this PXE.
|
|
660
675
|
*/
|
|
661
676
|
public getContracts(): Promise<AztecAddress[]> {
|
|
662
|
-
return this.
|
|
663
|
-
}
|
|
664
|
-
|
|
665
|
-
/**
|
|
666
|
-
* A debugging utility to get notes based on the provided filter.
|
|
667
|
-
*
|
|
668
|
-
* Note that this should not be used in production code because the structure of notes is considered to be
|
|
669
|
-
* an implementation detail of contracts. This is only meant to be used for debugging purposes. If you need to obtain
|
|
670
|
-
* note-related information in production code, please implement a custom utility function on your contract and call
|
|
671
|
-
* that function instead (e.g. `get_balance(owner: AztecAddress) -> u128` utility function on a Token contract).
|
|
672
|
-
*
|
|
673
|
-
* @param filter - The filter to apply to the notes.
|
|
674
|
-
* @returns The requested notes.
|
|
675
|
-
*/
|
|
676
|
-
public async getNotes(filter: NotesFilter): Promise<NoteDao[]> {
|
|
677
|
-
// We need to manually trigger private state sync to have a guarantee that all the notes are available.
|
|
678
|
-
const call = await this.#getFunctionCall('sync_private_state', [], filter.contractAddress);
|
|
679
|
-
await this.simulateUtility(call);
|
|
680
|
-
|
|
681
|
-
return this.noteDataProvider.getNotes(filter);
|
|
677
|
+
return this.contractStore.getContractsAddresses();
|
|
682
678
|
}
|
|
683
679
|
|
|
684
680
|
/**
|
|
@@ -694,14 +690,14 @@ export class PXE {
|
|
|
694
690
|
let privateExecutionResult: PrivateExecutionResult;
|
|
695
691
|
// We disable proving concurrently mostly out of caution, since it accesses some of our stores. Proving is so
|
|
696
692
|
// computationally demanding that it'd be rare for someone to try to do it concurrently regardless.
|
|
697
|
-
return this.#putInJobQueue(async
|
|
693
|
+
return this.#putInJobQueue(async jobId => {
|
|
698
694
|
const totalTimer = new Timer();
|
|
699
695
|
try {
|
|
700
696
|
const syncTimer = new Timer();
|
|
701
|
-
await this.
|
|
697
|
+
await this.blockStateSynchronizer.sync();
|
|
702
698
|
const syncTime = syncTimer.ms();
|
|
703
699
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
704
|
-
privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
|
|
700
|
+
privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, undefined, jobId);
|
|
705
701
|
|
|
706
702
|
const {
|
|
707
703
|
publicInputs,
|
|
@@ -738,14 +734,22 @@ export class PXE {
|
|
|
738
734
|
nodeRPCCalls: contractFunctionSimulator?.getStats().nodeRPCCalls,
|
|
739
735
|
});
|
|
740
736
|
|
|
737
|
+
// While not strictly necessary to store tagging cache contents in the DB since we sync tagging indexes from
|
|
738
|
+
// chain before sending new logs, the sync can only see logs already included in blocks. If we send another
|
|
739
|
+
// transaction before this one is included in a block from this PXE, and that transaction contains a log with
|
|
740
|
+
// a tag derived from the same secret, we would reuse the tag and the transactions would be linked. Hence
|
|
741
|
+
// storing the tags here prevents linkage of txs sent from the same PXE.
|
|
741
742
|
const preTagsUsedInTheTx = privateExecutionResult.entrypoint.preTags;
|
|
742
743
|
if (preTagsUsedInTheTx.length > 0) {
|
|
743
|
-
|
|
744
|
-
|
|
744
|
+
// TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
|
|
745
|
+
const txHash = (await txProvingResult.toTx()).txHash;
|
|
746
|
+
|
|
747
|
+
await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash);
|
|
748
|
+
this.log.debug(`Stored used pre-tags as sender for the tx`, {
|
|
745
749
|
preTagsUsedInTheTx,
|
|
746
750
|
});
|
|
747
751
|
} else {
|
|
748
|
-
this.log.debug(`No pre
|
|
752
|
+
this.log.debug(`No pre-tags used in the tx`);
|
|
749
753
|
}
|
|
750
754
|
|
|
751
755
|
return txProvingResult;
|
|
@@ -770,7 +774,7 @@ export class PXE {
|
|
|
770
774
|
skipProofGeneration: boolean = true,
|
|
771
775
|
): Promise<TxProfileResult> {
|
|
772
776
|
// We disable concurrent profiles for consistency with simulateTx.
|
|
773
|
-
return this.#putInJobQueue(async
|
|
777
|
+
return this.#putInJobQueue(async jobId => {
|
|
774
778
|
const totalTimer = new Timer();
|
|
775
779
|
try {
|
|
776
780
|
const txInfo = {
|
|
@@ -786,11 +790,16 @@ export class PXE {
|
|
|
786
790
|
txInfo,
|
|
787
791
|
);
|
|
788
792
|
const syncTimer = new Timer();
|
|
789
|
-
await this.
|
|
793
|
+
await this.blockStateSynchronizer.sync();
|
|
790
794
|
const syncTime = syncTimer.ms();
|
|
791
795
|
|
|
792
796
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
793
|
-
const privateExecutionResult = await this.#executePrivate(
|
|
797
|
+
const privateExecutionResult = await this.#executePrivate(
|
|
798
|
+
contractFunctionSimulator,
|
|
799
|
+
txRequest,
|
|
800
|
+
undefined,
|
|
801
|
+
jobId,
|
|
802
|
+
);
|
|
794
803
|
|
|
795
804
|
const { executionSteps, timings: { proving } = {} } = await this.#prove(
|
|
796
805
|
txRequest,
|
|
@@ -870,7 +879,7 @@ export class PXE {
|
|
|
870
879
|
// We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
|
|
871
880
|
// to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
|
|
872
881
|
// delete the same read value, or reading values that another simulation is currently modifying).
|
|
873
|
-
return this.#putInJobQueue(async
|
|
882
|
+
return this.#putInJobQueue(async jobId => {
|
|
874
883
|
try {
|
|
875
884
|
const totalTimer = new Timer();
|
|
876
885
|
const txInfo = {
|
|
@@ -886,7 +895,7 @@ export class PXE {
|
|
|
886
895
|
txInfo,
|
|
887
896
|
);
|
|
888
897
|
const syncTimer = new Timer();
|
|
889
|
-
await this.
|
|
898
|
+
await this.blockStateSynchronizer.sync();
|
|
890
899
|
const syncTime = syncTimer.ms();
|
|
891
900
|
|
|
892
901
|
const contractFunctionSimulator = this.#getSimulatorForTx(overrides);
|
|
@@ -896,7 +905,7 @@ export class PXE {
|
|
|
896
905
|
const skipKernels = overrides?.contracts !== undefined && Object.keys(overrides.contracts ?? {}).length > 0;
|
|
897
906
|
|
|
898
907
|
// Execution of private functions only; no proving, and no kernel logic.
|
|
899
|
-
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes);
|
|
908
|
+
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes, jobId);
|
|
900
909
|
|
|
901
910
|
let publicInputs: PrivateKernelTailCircuitPublicInputs | undefined;
|
|
902
911
|
let executionSteps: PrivateExecutionStep[] = [];
|
|
@@ -910,7 +919,7 @@ export class PXE {
|
|
|
910
919
|
({ publicInputs, executionSteps } = await generateSimulatedProvingResult(
|
|
911
920
|
privateExecutionResult,
|
|
912
921
|
nonceGenerator,
|
|
913
|
-
this.
|
|
922
|
+
this.contractStore,
|
|
914
923
|
));
|
|
915
924
|
} else {
|
|
916
925
|
// Kernel logic, plus proving of all private functions and kernels.
|
|
@@ -1011,15 +1020,26 @@ export class PXE {
|
|
|
1011
1020
|
// We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
|
|
1012
1021
|
// to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
|
|
1013
1022
|
// delete the same read value, or reading values that another simulation is currently modifying).
|
|
1014
|
-
return this.#putInJobQueue(async
|
|
1023
|
+
return this.#putInJobQueue(async jobId => {
|
|
1015
1024
|
try {
|
|
1016
1025
|
const totalTimer = new Timer();
|
|
1017
1026
|
const syncTimer = new Timer();
|
|
1018
|
-
await this.
|
|
1027
|
+
await this.blockStateSynchronizer.sync();
|
|
1019
1028
|
const syncTime = syncTimer.ms();
|
|
1020
1029
|
const functionTimer = new Timer();
|
|
1021
1030
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
1022
|
-
|
|
1031
|
+
|
|
1032
|
+
await this.contractStore.syncPrivateState(call.to, call.selector, privateSyncCall =>
|
|
1033
|
+
this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
|
|
1034
|
+
);
|
|
1035
|
+
|
|
1036
|
+
const executionResult = await this.#simulateUtility(
|
|
1037
|
+
contractFunctionSimulator,
|
|
1038
|
+
call,
|
|
1039
|
+
authwits ?? [],
|
|
1040
|
+
scopes,
|
|
1041
|
+
jobId,
|
|
1042
|
+
);
|
|
1023
1043
|
const functionTime = functionTimer.ms();
|
|
1024
1044
|
|
|
1025
1045
|
const totalTime = totalTimer.ms();
|
|
@@ -1049,31 +1069,37 @@ export class PXE {
|
|
|
1049
1069
|
|
|
1050
1070
|
/**
|
|
1051
1071
|
* Returns the private events given search parameters.
|
|
1052
|
-
* @param contractAddress - The address of the contract to get events from.
|
|
1053
1072
|
* @param eventSelector - Event selector to search for.
|
|
1054
|
-
* @param
|
|
1055
|
-
*
|
|
1056
|
-
*
|
|
1073
|
+
* @param filter
|
|
1074
|
+
* contractAddress - The address of the contract to get events from. Required.
|
|
1075
|
+
* scopes - One or more event scope addresses to filter by. Required.
|
|
1076
|
+
* fromBlock - The block number to search from (inclusive). Optional. If provided, it must be >= 0.
|
|
1077
|
+
* Defaults to 0.
|
|
1078
|
+
* If toBlock is defined but fromBlock is not, fromBlock defaults to toBlock - 1.
|
|
1079
|
+
* toBlock - The block number to search up to (exclusive). Optional. If provided, it must be > 0.
|
|
1080
|
+
* Defaults to the latest known block to PXE + 1.
|
|
1057
1081
|
* @returns - The packed events with block and tx metadata.
|
|
1058
1082
|
*/
|
|
1059
|
-
public
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1083
|
+
public getPrivateEvents(eventSelector: EventSelector, filter: PrivateEventFilter): Promise<PackedPrivateEvent[]> {
|
|
1084
|
+
return this.#putInJobQueue(async jobId => {
|
|
1085
|
+
await this.blockStateSynchronizer.sync();
|
|
1086
|
+
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
1087
|
+
|
|
1088
|
+
await this.contractStore.syncPrivateState(
|
|
1089
|
+
filter.contractAddress,
|
|
1090
|
+
null,
|
|
1091
|
+
async privateSyncCall =>
|
|
1092
|
+
await this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
|
|
1093
|
+
);
|
|
1069
1094
|
|
|
1070
|
-
|
|
1095
|
+
const sanitizedFilter = await new PrivateEventFilterValidator(this.anchorBlockStore).validate(filter);
|
|
1071
1096
|
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1097
|
+
this.log.debug(
|
|
1098
|
+
`Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`,
|
|
1099
|
+
);
|
|
1075
1100
|
|
|
1076
|
-
|
|
1101
|
+
return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
|
|
1102
|
+
});
|
|
1077
1103
|
}
|
|
1078
1104
|
|
|
1079
1105
|
/**
|