@aztec/pxe 0.0.1-commit.b655e406 → 0.0.1-commit.c7c42ec
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.d.ts +1 -1
- package/dest/bin/check_oracle_version.js +105 -15
- package/dest/block_synchronizer/block_synchronizer.d.ts +37 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/{synchronizer/synchronizer.js → block_synchronizer/block_synchronizer.js} +20 -22
- 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 -12
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +7 -13
- package/dest/config/package_info.d.ts +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +43 -14
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +55 -29
- package/dest/contract_function_simulator/execution_note_cache.d.ts +9 -7
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +21 -13
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +2 -2
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +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/index.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +2 -2
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- 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 +3 -3
- 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 +6 -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 +12 -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/index.d.ts +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +19 -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 -4
- 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 +10 -4
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +10 -5
- package/dest/contract_function_simulator/oracle/oracle.d.ts +5 -4
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +34 -17
- 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 +12 -12
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +24 -18
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +41 -18
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +58 -17
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +147 -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/contract_function_simulator/proxied_node.d.ts +1 -1
- package/dest/contract_function_simulator/proxied_node.d.ts.map +1 -1
- 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.js +4 -4
- 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.js +4 -4
- package/dest/entrypoints/pxe_creation_options.d.ts +3 -1
- 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 +5 -16
- 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/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 +3 -3
- package/dest/oracle_version.js +2 -2
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +3 -3
- 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 +7 -7
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +1 -1
- package/dest/private_kernel/hints/index.d.ts +1 -1
- package/dest/private_kernel/index.d.ts +1 -1
- 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 +11 -10
- package/dest/private_kernel/private_kernel_oracle.d.ts +3 -2
- 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 +7 -7
- 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 +47 -48
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +142 -171
- 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/anchor_block_store/anchor_block_store.d.ts +9 -0
- 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/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/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} +7 -15
- 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} +34 -15
- 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/metadata.d.ts +1 -1
- 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} +14 -13
- 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} +33 -19
- package/dest/storage/private_event_store/private_event_store.d.ts +51 -0
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
- package/dest/storage/{private_event_data_provider/private_event_data_provider.js → private_event_store/private_event_store.js} +39 -28
- 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/index.d.ts +15 -6
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +23 -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 +20 -19
- package/src/bin/check_oracle_version.ts +130 -20
- package/src/{synchronizer/synchronizer.ts → block_synchronizer/block_synchronizer.ts} +19 -22
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +10 -25
- package/src/contract_function_simulator/contract_function_simulator.ts +95 -28
- package/src/contract_function_simulator/execution_note_cache.ts +22 -11
- 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 +1 -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 +2 -2
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +14 -2
- package/src/contract_function_simulator/noir-structs/utility_context.ts +1 -1
- package/src/contract_function_simulator/oracle/interfaces.ts +26 -11
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +21 -5
- package/src/contract_function_simulator/oracle/oracle.ts +43 -13
- package/src/contract_function_simulator/oracle/private_execution.ts +17 -15
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +100 -23
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +223 -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 +4 -4
- package/src/entrypoints/client/lazy/index.ts +0 -1
- package/src/entrypoints/client/lazy/utils.ts +4 -4
- package/src/entrypoints/pxe_creation_options.ts +2 -0
- package/src/entrypoints/server/index.ts +1 -1
- package/src/entrypoints/server/utils.ts +5 -19
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +77 -0
- package/src/events/index.ts +1 -0
- package/src/events/private_event_filter_validator.ts +48 -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 +5 -9
- package/src/private_kernel/private_kernel_execution_prover.ts +12 -16
- package/src/private_kernel/private_kernel_oracle.ts +2 -1
- package/src/private_kernel/private_kernel_oracle_impl.ts +10 -9
- package/src/public_storage/public_storage_service.ts +33 -0
- package/src/pxe.ts +167 -223
- 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} +45 -20
- 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} +41 -22
- package/src/storage/{private_event_data_provider/private_event_data_provider.ts → private_event_store/private_event_store.ts} +61 -47
- 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/index.ts +27 -5
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +129 -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 +44 -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 -274
- 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 -701
- 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_dao.d.ts +0 -100
- package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_dao.js +0 -102
- 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 -43
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
- 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 -10
- 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/constants.d.ts +0 -2
- package/dest/tagging/constants.d.ts.map +0 -1
- package/dest/tagging/constants.js +0 -2
- 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 -343
- package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1019
- 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/note_data_provider/note_dao.ts +0 -154
- 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/constants.ts +0 -2
- 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';
|
|
@@ -9,13 +10,10 @@ import { type ProtocolContractsProvider, protocolContractNames } from '@aztec/pr
|
|
|
9
10
|
import type { CircuitSimulator } from '@aztec/simulator/client';
|
|
10
11
|
import {
|
|
11
12
|
type ContractArtifact,
|
|
12
|
-
|
|
13
|
+
EventSelector,
|
|
13
14
|
FunctionCall,
|
|
14
|
-
FunctionSelector,
|
|
15
15
|
FunctionType,
|
|
16
|
-
decodeFromAbi,
|
|
17
16
|
decodeFunctionSignature,
|
|
18
|
-
encodeArguments,
|
|
19
17
|
} from '@aztec/stdlib/abi';
|
|
20
18
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
21
19
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
@@ -28,16 +26,16 @@ import {
|
|
|
28
26
|
getContractClassFromArtifact,
|
|
29
27
|
} from '@aztec/stdlib/contract';
|
|
30
28
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
31
|
-
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
29
|
+
import { computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
|
|
32
30
|
import type { AztecNode, PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
|
|
33
31
|
import type {
|
|
34
32
|
PrivateExecutionStep,
|
|
35
33
|
PrivateKernelExecutionProofOutput,
|
|
36
34
|
PrivateKernelTailCircuitPublicInputs,
|
|
37
35
|
} from '@aztec/stdlib/kernel';
|
|
38
|
-
import { type NotesFilter, UniqueNote } from '@aztec/stdlib/note';
|
|
39
36
|
import {
|
|
40
37
|
type ContractOverrides,
|
|
38
|
+
type InTx,
|
|
41
39
|
PrivateExecutionResult,
|
|
42
40
|
PrivateSimulationResult,
|
|
43
41
|
type ProvingTimings,
|
|
@@ -54,32 +52,36 @@ import {
|
|
|
54
52
|
|
|
55
53
|
import { inspect } from 'util';
|
|
56
54
|
|
|
55
|
+
import { BlockSynchronizer } from './block_synchronizer/index.js';
|
|
57
56
|
import type { PXEConfig } from './config/index.js';
|
|
58
57
|
import {
|
|
59
58
|
ContractFunctionSimulator,
|
|
60
59
|
generateSimulatedProvingResult,
|
|
61
60
|
} from './contract_function_simulator/contract_function_simulator.js';
|
|
62
61
|
import { readCurrentClassId } from './contract_function_simulator/oracle/private_execution.js';
|
|
63
|
-
import {
|
|
64
|
-
import {
|
|
65
|
-
import { PXEOracleInterface } from './contract_function_simulator/pxe_oracle_interface.js';
|
|
62
|
+
import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
|
|
63
|
+
import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
|
|
66
64
|
import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
|
|
65
|
+
import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
|
|
67
66
|
import {
|
|
68
67
|
PrivateKernelExecutionProver,
|
|
69
68
|
type PrivateKernelExecutionProverConfig,
|
|
70
69
|
} from './private_kernel/private_kernel_execution_prover.js';
|
|
71
70
|
import { PrivateKernelOracleImpl } from './private_kernel/private_kernel_oracle_impl.js';
|
|
72
|
-
import {
|
|
73
|
-
import {
|
|
74
|
-
import {
|
|
75
|
-
import {
|
|
76
|
-
import {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
} from './storage/
|
|
80
|
-
import {
|
|
81
|
-
|
|
82
|
-
|
|
71
|
+
import { AddressStore } from './storage/address_store/address_store.js';
|
|
72
|
+
import { AnchorBlockStore } from './storage/anchor_block_store/anchor_block_store.js';
|
|
73
|
+
import { CapsuleStore } from './storage/capsule_store/capsule_store.js';
|
|
74
|
+
import { ContractStore } from './storage/contract_store/contract_store.js';
|
|
75
|
+
import { NoteStore } from './storage/note_store/note_store.js';
|
|
76
|
+
import { PrivateEventStore } from './storage/private_event_store/private_event_store.js';
|
|
77
|
+
import { RecipientTaggingStore } from './storage/tagging_store/recipient_tagging_store.js';
|
|
78
|
+
import { SenderAddressBookStore } from './storage/tagging_store/sender_address_book_store.js';
|
|
79
|
+
import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store.js';
|
|
80
|
+
|
|
81
|
+
export type PackedPrivateEvent = InTx & {
|
|
82
|
+
packedEvent: Fr[];
|
|
83
|
+
eventSelector: EventSelector;
|
|
84
|
+
};
|
|
83
85
|
|
|
84
86
|
/**
|
|
85
87
|
* Private eXecution Environment (PXE) is a library used by wallets to simulate private phase of transactions and to
|
|
@@ -88,21 +90,24 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
88
90
|
export class PXE {
|
|
89
91
|
private constructor(
|
|
90
92
|
private node: AztecNode,
|
|
91
|
-
private
|
|
93
|
+
private blockStateSynchronizer: BlockSynchronizer,
|
|
92
94
|
private keyStore: KeyStore,
|
|
93
|
-
private
|
|
94
|
-
private
|
|
95
|
-
private
|
|
96
|
-
private
|
|
97
|
-
private
|
|
98
|
-
private
|
|
99
|
-
private
|
|
95
|
+
private contractStore: ContractStore,
|
|
96
|
+
private noteStore: NoteStore,
|
|
97
|
+
private capsuleStore: CapsuleStore,
|
|
98
|
+
private anchorBlockStore: AnchorBlockStore,
|
|
99
|
+
private senderTaggingStore: SenderTaggingStore,
|
|
100
|
+
private senderAddressBookStore: SenderAddressBookStore,
|
|
101
|
+
private recipientTaggingStore: RecipientTaggingStore,
|
|
102
|
+
private addressStore: AddressStore,
|
|
103
|
+
private privateEventStore: PrivateEventStore,
|
|
100
104
|
private simulator: CircuitSimulator,
|
|
101
105
|
private proverEnabled: boolean,
|
|
102
106
|
private proofCreator: PrivateKernelProver,
|
|
103
107
|
private protocolContractsProvider: ProtocolContractsProvider,
|
|
104
108
|
private log: Logger,
|
|
105
109
|
private jobQueue: SerialQueue,
|
|
110
|
+
public debug: PXEDebugUtils,
|
|
106
111
|
) {}
|
|
107
112
|
|
|
108
113
|
/**
|
|
@@ -127,24 +132,20 @@ export class PXE {
|
|
|
127
132
|
: loggerOrSuffix;
|
|
128
133
|
|
|
129
134
|
const proverEnabled = !!config.proverEnabled;
|
|
130
|
-
const
|
|
131
|
-
const
|
|
132
|
-
const
|
|
133
|
-
const
|
|
134
|
-
const
|
|
135
|
-
const
|
|
136
|
-
const
|
|
135
|
+
const addressStore = new AddressStore(store);
|
|
136
|
+
const privateEventStore = new PrivateEventStore(store);
|
|
137
|
+
const contractStore = new ContractStore(store);
|
|
138
|
+
const noteStore = await NoteStore.create(store);
|
|
139
|
+
const anchorBlockStore = new AnchorBlockStore(store);
|
|
140
|
+
const senderTaggingStore = new SenderTaggingStore(store);
|
|
141
|
+
const senderAddressBookStore = new SenderAddressBookStore(store);
|
|
142
|
+
const recipientTaggingStore = new RecipientTaggingStore(store);
|
|
143
|
+
const capsuleStore = new CapsuleStore(store);
|
|
137
144
|
const keyStore = new KeyStore(store);
|
|
138
145
|
const tipsStore = new L2TipsKVStore(store, 'pxe');
|
|
139
|
-
const synchronizer = new
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
noteDataProvider,
|
|
143
|
-
taggingDataProvider,
|
|
144
|
-
tipsStore,
|
|
145
|
-
config,
|
|
146
|
-
loggerOrSuffix,
|
|
147
|
-
);
|
|
146
|
+
const synchronizer = new BlockSynchronizer(node, anchorBlockStore, noteStore, tipsStore, config, loggerOrSuffix);
|
|
147
|
+
|
|
148
|
+
const debugUtils = new PXEDebugUtils(contractStore, noteStore);
|
|
148
149
|
|
|
149
150
|
const jobQueue = new SerialQueue();
|
|
150
151
|
|
|
@@ -152,21 +153,26 @@ export class PXE {
|
|
|
152
153
|
node,
|
|
153
154
|
synchronizer,
|
|
154
155
|
keyStore,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
156
|
+
contractStore,
|
|
157
|
+
noteStore,
|
|
158
|
+
capsuleStore,
|
|
159
|
+
anchorBlockStore,
|
|
160
|
+
senderTaggingStore,
|
|
161
|
+
senderAddressBookStore,
|
|
162
|
+
recipientTaggingStore,
|
|
163
|
+
addressStore,
|
|
164
|
+
privateEventStore,
|
|
162
165
|
simulator,
|
|
163
166
|
proverEnabled,
|
|
164
167
|
proofCreator,
|
|
165
168
|
protocolContractsProvider,
|
|
166
169
|
log,
|
|
167
170
|
jobQueue,
|
|
171
|
+
debugUtils,
|
|
168
172
|
);
|
|
169
173
|
|
|
174
|
+
debugUtils.setPXE(pxe);
|
|
175
|
+
|
|
170
176
|
pxe.jobQueue.start();
|
|
171
177
|
|
|
172
178
|
await pxe.#registerProtocolContracts();
|
|
@@ -178,19 +184,22 @@ export class PXE {
|
|
|
178
184
|
// Internal methods
|
|
179
185
|
|
|
180
186
|
#getSimulatorForTx(overrides?: { contracts?: ContractOverrides }) {
|
|
181
|
-
const
|
|
182
|
-
|
|
187
|
+
const proxyContractStore = ProxiedContractStoreFactory.create(this.contractStore, overrides?.contracts);
|
|
188
|
+
|
|
189
|
+
return new ContractFunctionSimulator(
|
|
190
|
+
proxyContractStore,
|
|
191
|
+
this.noteStore,
|
|
183
192
|
this.keyStore,
|
|
184
|
-
|
|
185
|
-
this.
|
|
186
|
-
this.
|
|
187
|
-
this.
|
|
188
|
-
this.
|
|
189
|
-
this.
|
|
190
|
-
this.
|
|
191
|
-
this.
|
|
193
|
+
this.addressStore,
|
|
194
|
+
this.node,
|
|
195
|
+
this.anchorBlockStore,
|
|
196
|
+
this.senderTaggingStore,
|
|
197
|
+
this.recipientTaggingStore,
|
|
198
|
+
this.senderAddressBookStore,
|
|
199
|
+
this.capsuleStore,
|
|
200
|
+
this.privateEventStore,
|
|
201
|
+
this.simulator,
|
|
192
202
|
);
|
|
193
|
-
return new ContractFunctionSimulator(pxeOracleInterface, this.simulator);
|
|
194
203
|
}
|
|
195
204
|
|
|
196
205
|
#contextualizeError(err: Error, ...context: string[]): Error {
|
|
@@ -229,8 +238,8 @@ export class PXE {
|
|
|
229
238
|
for (const name of protocolContractNames) {
|
|
230
239
|
const { address, contractClass, instance, artifact } =
|
|
231
240
|
await this.protocolContractsProvider.getProtocolContractArtifact(name);
|
|
232
|
-
await this.
|
|
233
|
-
await this.
|
|
241
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
242
|
+
await this.contractStore.addContractInstance(instance);
|
|
234
243
|
registered[name] = address.toString();
|
|
235
244
|
}
|
|
236
245
|
this.log.verbose(`Registered protocol contracts in pxe`, registered);
|
|
@@ -249,31 +258,6 @@ export class PXE {
|
|
|
249
258
|
return !!(await this.node.getNullifierMembershipWitness('latest', initNullifier));
|
|
250
259
|
}
|
|
251
260
|
|
|
252
|
-
async #getFunctionCall(functionName: string, args: any[], to: AztecAddress): Promise<FunctionCall> {
|
|
253
|
-
const contract = await this.contractDataProvider.getContract(to);
|
|
254
|
-
if (!contract) {
|
|
255
|
-
throw new Error(
|
|
256
|
-
`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`,
|
|
257
|
-
);
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
const functionDao = contract.functions.find(f => f.name === functionName);
|
|
261
|
-
if (!functionDao) {
|
|
262
|
-
throw new Error(`Unknown function ${functionName} in contract ${contract.name}.`);
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
return {
|
|
266
|
-
name: functionDao.name,
|
|
267
|
-
args: encodeArguments(functionDao, args),
|
|
268
|
-
selector: await FunctionSelector.fromNameAndParameters(functionDao.name, functionDao.parameters),
|
|
269
|
-
type: functionDao.functionType,
|
|
270
|
-
to,
|
|
271
|
-
hideMsgSender: false,
|
|
272
|
-
isStatic: functionDao.isStatic,
|
|
273
|
-
returnTypes: functionDao.returnTypes,
|
|
274
|
-
};
|
|
275
|
-
}
|
|
276
|
-
|
|
277
261
|
// Executes the entrypoint private function, as well as all nested private
|
|
278
262
|
// functions that might arise.
|
|
279
263
|
async #executePrivate(
|
|
@@ -284,11 +268,14 @@ export class PXE {
|
|
|
284
268
|
const { origin: contractAddress, functionSelector } = txRequest;
|
|
285
269
|
|
|
286
270
|
try {
|
|
271
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
272
|
+
|
|
287
273
|
const result = await contractFunctionSimulator.run(
|
|
288
274
|
txRequest,
|
|
289
275
|
contractAddress,
|
|
290
276
|
functionSelector,
|
|
291
277
|
undefined,
|
|
278
|
+
anchorBlockHeader,
|
|
292
279
|
// The sender for tags is set by contracts, typically by an account
|
|
293
280
|
// contract entrypoint
|
|
294
281
|
undefined, // senderForTags
|
|
@@ -298,7 +285,7 @@ export class PXE {
|
|
|
298
285
|
return result;
|
|
299
286
|
} catch (err) {
|
|
300
287
|
if (err instanceof SimulationError) {
|
|
301
|
-
await enrichSimulationError(err, this.
|
|
288
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
302
289
|
}
|
|
303
290
|
throw err;
|
|
304
291
|
}
|
|
@@ -320,10 +307,11 @@ export class PXE {
|
|
|
320
307
|
scopes?: AztecAddress[],
|
|
321
308
|
) {
|
|
322
309
|
try {
|
|
323
|
-
|
|
310
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
311
|
+
return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes);
|
|
324
312
|
} catch (err) {
|
|
325
313
|
if (err instanceof SimulationError) {
|
|
326
|
-
await enrichSimulationError(err, this.
|
|
314
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
327
315
|
}
|
|
328
316
|
throw err;
|
|
329
317
|
}
|
|
@@ -347,7 +335,7 @@ export class PXE {
|
|
|
347
335
|
} catch (err) {
|
|
348
336
|
if (err instanceof SimulationError) {
|
|
349
337
|
try {
|
|
350
|
-
await enrichPublicSimulationError(err, this.
|
|
338
|
+
await enrichPublicSimulationError(err, this.contractStore, this.log);
|
|
351
339
|
} catch (enrichErr) {
|
|
352
340
|
this.log.error(`Failed to enrich public simulation error: ${enrichErr}`);
|
|
353
341
|
}
|
|
@@ -375,7 +363,7 @@ export class PXE {
|
|
|
375
363
|
): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
376
364
|
const simulationAnchorBlock = privateExecutionResult.getSimulationAnchorBlockNumber();
|
|
377
365
|
const kernelOracle = new PrivateKernelOracleImpl(
|
|
378
|
-
this.
|
|
366
|
+
this.contractStore,
|
|
379
367
|
this.keyStore,
|
|
380
368
|
this.node,
|
|
381
369
|
simulationAnchorBlock,
|
|
@@ -388,7 +376,7 @@ export class PXE {
|
|
|
388
376
|
// Public API
|
|
389
377
|
|
|
390
378
|
public getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
|
|
391
|
-
return this.
|
|
379
|
+
return this.contractStore.getContractInstance(address);
|
|
392
380
|
}
|
|
393
381
|
|
|
394
382
|
/**
|
|
@@ -413,7 +401,7 @@ export class PXE {
|
|
|
413
401
|
isContractClassPubliclyRegistered: boolean;
|
|
414
402
|
artifact: ContractArtifact | undefined;
|
|
415
403
|
}> {
|
|
416
|
-
const artifact = await this.
|
|
404
|
+
const artifact = await this.contractStore.getContractArtifact(id);
|
|
417
405
|
if (!artifact) {
|
|
418
406
|
this.log.warn(`No artifact found for contract class ${id.toString()} when looking for its metadata`);
|
|
419
407
|
}
|
|
@@ -443,7 +431,7 @@ export class PXE {
|
|
|
443
431
|
}> {
|
|
444
432
|
let instance;
|
|
445
433
|
try {
|
|
446
|
-
instance = await this.
|
|
434
|
+
instance = await this.contractStore.getContractInstance(address);
|
|
447
435
|
} catch {
|
|
448
436
|
this.log.warn(`No instance found for contract ${address.toString()} when looking for its metadata`);
|
|
449
437
|
}
|
|
@@ -475,56 +463,58 @@ export class PXE {
|
|
|
475
463
|
this.log.debug(`Registered account\n ${accountCompleteAddress.toReadableString()}`);
|
|
476
464
|
}
|
|
477
465
|
|
|
478
|
-
await this.
|
|
479
|
-
await this.
|
|
466
|
+
await this.addressStore.addCompleteAddress(accountCompleteAddress);
|
|
467
|
+
await this.noteStore.addScope(accountCompleteAddress.address);
|
|
480
468
|
return accountCompleteAddress;
|
|
481
469
|
}
|
|
482
470
|
|
|
483
471
|
/**
|
|
484
|
-
* Registers a
|
|
472
|
+
* Registers a sender in this PXE.
|
|
485
473
|
*
|
|
486
|
-
*
|
|
487
|
-
* Will do nothing if the
|
|
474
|
+
* After registering a new sender, the PXE will sync private logs that are tagged with this sender's address.
|
|
475
|
+
* Will do nothing if the address is already registered.
|
|
488
476
|
*
|
|
489
|
-
* @param
|
|
490
|
-
* @returns The address
|
|
477
|
+
* @param sender - Address of the sender to register.
|
|
478
|
+
* @returns The address of the sender.
|
|
479
|
+
* TODO: It's strange that we return the address here and I (benesjan) think we should drop the return value.
|
|
491
480
|
*/
|
|
492
|
-
public async registerSender(
|
|
481
|
+
public async registerSender(sender: AztecAddress): Promise<AztecAddress> {
|
|
493
482
|
const accounts = await this.keyStore.getAccounts();
|
|
494
|
-
if (accounts.includes(
|
|
495
|
-
this.log.info(`Sender:\n "${
|
|
496
|
-
return
|
|
483
|
+
if (accounts.includes(sender)) {
|
|
484
|
+
this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
|
|
485
|
+
return sender;
|
|
497
486
|
}
|
|
498
487
|
|
|
499
|
-
const wasAdded = await this.
|
|
488
|
+
const wasAdded = await this.senderAddressBookStore.addSender(sender);
|
|
500
489
|
|
|
501
490
|
if (wasAdded) {
|
|
502
|
-
this.log.info(`Added sender:\n ${
|
|
491
|
+
this.log.info(`Added sender:\n ${sender.toString()}`);
|
|
503
492
|
} else {
|
|
504
|
-
this.log.info(`Sender:\n "${
|
|
493
|
+
this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
|
|
505
494
|
}
|
|
506
495
|
|
|
507
|
-
return
|
|
496
|
+
return sender;
|
|
508
497
|
}
|
|
509
498
|
|
|
510
499
|
/**
|
|
511
|
-
* Retrieves
|
|
512
|
-
* @returns
|
|
500
|
+
* Retrieves senders registered in this PXE.
|
|
501
|
+
* @returns Senders registered in this PXE.
|
|
513
502
|
*/
|
|
514
503
|
public getSenders(): Promise<AztecAddress[]> {
|
|
515
|
-
return this.
|
|
504
|
+
return this.senderAddressBookStore.getSenders();
|
|
516
505
|
}
|
|
517
506
|
|
|
518
507
|
/**
|
|
519
|
-
* Removes a sender in
|
|
508
|
+
* Removes a sender registered in this PXE.
|
|
509
|
+
* @param sender - The address of the sender to remove.
|
|
520
510
|
*/
|
|
521
|
-
public async removeSender(
|
|
522
|
-
const wasRemoved = await this.
|
|
511
|
+
public async removeSender(sender: AztecAddress): Promise<void> {
|
|
512
|
+
const wasRemoved = await this.senderAddressBookStore.removeSender(sender);
|
|
523
513
|
|
|
524
514
|
if (wasRemoved) {
|
|
525
|
-
this.log.info(`Removed sender:\n ${
|
|
515
|
+
this.log.info(`Removed sender:\n ${sender.toString()}`);
|
|
526
516
|
} else {
|
|
527
|
-
this.log.info(`Sender:\n "${
|
|
517
|
+
this.log.info(`Sender:\n "${sender.toString()}"\n not registered in PXE.`);
|
|
528
518
|
}
|
|
529
519
|
}
|
|
530
520
|
|
|
@@ -534,7 +524,7 @@ export class PXE {
|
|
|
534
524
|
*/
|
|
535
525
|
public async getRegisteredAccounts(): Promise<CompleteAddress[]> {
|
|
536
526
|
// Get complete addresses of both the recipients and the accounts
|
|
537
|
-
const completeAddresses = await this.
|
|
527
|
+
const completeAddresses = await this.addressStore.getCompleteAddresses();
|
|
538
528
|
// Filter out the addresses not corresponding to accounts
|
|
539
529
|
const accounts = await this.keyStore.getAccounts();
|
|
540
530
|
return completeAddresses.filter(completeAddress =>
|
|
@@ -549,7 +539,7 @@ export class PXE {
|
|
|
549
539
|
*/
|
|
550
540
|
public async registerContractClass(artifact: ContractArtifact): Promise<void> {
|
|
551
541
|
const { id: contractClassId } = await getContractClassFromArtifact(artifact);
|
|
552
|
-
await this.
|
|
542
|
+
await this.contractStore.addContractArtifact(contractClassId, artifact);
|
|
553
543
|
this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
|
|
554
544
|
}
|
|
555
545
|
|
|
@@ -578,7 +568,7 @@ export class PXE {
|
|
|
578
568
|
if (!computedAddress.equals(instance.address)) {
|
|
579
569
|
throw new Error('Added a contract in which the address does not match the contract instance.');
|
|
580
570
|
}
|
|
581
|
-
await this.
|
|
571
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
582
572
|
|
|
583
573
|
const publicFunctionSignatures = artifact.functions
|
|
584
574
|
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
@@ -586,7 +576,7 @@ export class PXE {
|
|
|
586
576
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
587
577
|
} else {
|
|
588
578
|
// Otherwise, make sure there is an artifact already registered for that class id
|
|
589
|
-
artifact = await this.
|
|
579
|
+
artifact = await this.contractStore.getContractArtifact(instance.currentContractClassId);
|
|
590
580
|
if (!artifact) {
|
|
591
581
|
throw new Error(
|
|
592
582
|
`Artifact not found when registering an instance. Contract class: ${instance.currentContractClassId}.`,
|
|
@@ -594,7 +584,7 @@ export class PXE {
|
|
|
594
584
|
}
|
|
595
585
|
}
|
|
596
586
|
|
|
597
|
-
await this.
|
|
587
|
+
await this.contractStore.addContractInstance(instance);
|
|
598
588
|
this.log.info(
|
|
599
589
|
`Added contract ${artifact.name} at ${instance.address.toString()} with class ${instance.currentContractClassId}`,
|
|
600
590
|
);
|
|
@@ -613,14 +603,14 @@ export class PXE {
|
|
|
613
603
|
// We disable concurrently updating contracts to avoid concurrently syncing with the node, or changing a contract's
|
|
614
604
|
// class while we're simulating it.
|
|
615
605
|
return this.#putInJobQueue(async () => {
|
|
616
|
-
const currentInstance = await this.
|
|
606
|
+
const currentInstance = await this.contractStore.getContractInstance(contractAddress);
|
|
617
607
|
if (!currentInstance) {
|
|
618
608
|
throw new Error(`Instance not found when updating a contract. Contract address: ${contractAddress}.`);
|
|
619
609
|
}
|
|
620
610
|
const contractClass = await getContractClassFromArtifact(artifact);
|
|
621
|
-
await this.
|
|
611
|
+
await this.blockStateSynchronizer.sync();
|
|
622
612
|
|
|
623
|
-
const header = await this.
|
|
613
|
+
const header = await this.anchorBlockStore.getBlockHeader();
|
|
624
614
|
|
|
625
615
|
const currentClassId = await readCurrentClassId(
|
|
626
616
|
contractAddress,
|
|
@@ -633,7 +623,7 @@ export class PXE {
|
|
|
633
623
|
throw new Error('Could not update contract to a class different from the current one.');
|
|
634
624
|
}
|
|
635
625
|
|
|
636
|
-
await this.
|
|
626
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
637
627
|
|
|
638
628
|
const publicFunctionSignatures = artifact.functions
|
|
639
629
|
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
@@ -641,7 +631,7 @@ export class PXE {
|
|
|
641
631
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
642
632
|
|
|
643
633
|
currentInstance.currentContractClassId = contractClass.id;
|
|
644
|
-
await this.
|
|
634
|
+
await this.contractStore.addContractInstance(currentInstance);
|
|
645
635
|
this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
|
|
646
636
|
});
|
|
647
637
|
}
|
|
@@ -651,39 +641,7 @@ export class PXE {
|
|
|
651
641
|
* @returns An array of contracts addresses registered on this PXE.
|
|
652
642
|
*/
|
|
653
643
|
public getContracts(): Promise<AztecAddress[]> {
|
|
654
|
-
return this.
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
/**
|
|
658
|
-
* A debugging utility to get notes based on the provided filter.
|
|
659
|
-
*
|
|
660
|
-
* Note that this should not be used in production code because the structure of notes is considered to be
|
|
661
|
-
* an implementation detail of contracts. This is only meant to be used for debugging purposes. If you need to obtain
|
|
662
|
-
* note-related information in production code, please implement a custom utility function on your contract and call
|
|
663
|
-
* that function instead (e.g. `get_balance(owner: AztecAddress) -> u128` utility function on a Token contract).
|
|
664
|
-
*
|
|
665
|
-
* @param filter - The filter to apply to the notes.
|
|
666
|
-
* @returns The requested notes.
|
|
667
|
-
*/
|
|
668
|
-
public async getNotes(filter: NotesFilter): Promise<UniqueNote[]> {
|
|
669
|
-
// We need to manually trigger private state sync to have a guarantee that all the notes are available.
|
|
670
|
-
await this.simulateUtility('sync_private_state', [], filter.contractAddress);
|
|
671
|
-
|
|
672
|
-
const noteDaos = await this.noteDataProvider.getNotes(filter);
|
|
673
|
-
|
|
674
|
-
const uniqueNotes = noteDaos.map(async dao => {
|
|
675
|
-
const completeAddresses = await this.addressDataProvider.getCompleteAddresses();
|
|
676
|
-
const completeAddressIndex = completeAddresses.findIndex(completeAddress =>
|
|
677
|
-
completeAddress.address.equals(dao.recipient),
|
|
678
|
-
);
|
|
679
|
-
const completeAddress = completeAddresses[completeAddressIndex];
|
|
680
|
-
if (completeAddress === undefined) {
|
|
681
|
-
throw new Error(`Cannot find complete address for recipient ${dao.recipient.toString()}`);
|
|
682
|
-
}
|
|
683
|
-
const recipient = completeAddress.address;
|
|
684
|
-
return new UniqueNote(dao.note, recipient, dao.contractAddress, dao.storageSlot, dao.txHash, dao.noteNonce);
|
|
685
|
-
});
|
|
686
|
-
return Promise.all(uniqueNotes);
|
|
644
|
+
return this.contractStore.getContractsAddresses();
|
|
687
645
|
}
|
|
688
646
|
|
|
689
647
|
/**
|
|
@@ -703,7 +661,7 @@ export class PXE {
|
|
|
703
661
|
const totalTimer = new Timer();
|
|
704
662
|
try {
|
|
705
663
|
const syncTimer = new Timer();
|
|
706
|
-
await this.
|
|
664
|
+
await this.blockStateSynchronizer.sync();
|
|
707
665
|
const syncTime = syncTimer.ms();
|
|
708
666
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
709
667
|
privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
|
|
@@ -743,14 +701,22 @@ export class PXE {
|
|
|
743
701
|
nodeRPCCalls: contractFunctionSimulator?.getStats().nodeRPCCalls,
|
|
744
702
|
});
|
|
745
703
|
|
|
704
|
+
// While not strictly necessary to store tagging cache contents in the DB since we sync tagging indexes from
|
|
705
|
+
// chain before sending new logs, the sync can only see logs already included in blocks. If we send another
|
|
706
|
+
// transaction before this one is included in a block from this PXE, and that transaction contains a log with
|
|
707
|
+
// a tag derived from the same secret, we would reuse the tag and the transactions would be linked. Hence
|
|
708
|
+
// storing the tags here prevents linkage of txs sent from the same PXE.
|
|
746
709
|
const preTagsUsedInTheTx = privateExecutionResult.entrypoint.preTags;
|
|
747
710
|
if (preTagsUsedInTheTx.length > 0) {
|
|
748
|
-
|
|
749
|
-
|
|
711
|
+
// TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
|
|
712
|
+
const txHash = (await txProvingResult.toTx()).txHash;
|
|
713
|
+
|
|
714
|
+
await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash);
|
|
715
|
+
this.log.debug(`Stored used pre-tags as sender for the tx`, {
|
|
750
716
|
preTagsUsedInTheTx,
|
|
751
717
|
});
|
|
752
718
|
} else {
|
|
753
|
-
this.log.debug(`No pre
|
|
719
|
+
this.log.debug(`No pre-tags used in the tx`);
|
|
754
720
|
}
|
|
755
721
|
|
|
756
722
|
return txProvingResult;
|
|
@@ -791,7 +757,7 @@ export class PXE {
|
|
|
791
757
|
txInfo,
|
|
792
758
|
);
|
|
793
759
|
const syncTimer = new Timer();
|
|
794
|
-
await this.
|
|
760
|
+
await this.blockStateSynchronizer.sync();
|
|
795
761
|
const syncTime = syncTimer.ms();
|
|
796
762
|
|
|
797
763
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
@@ -891,7 +857,7 @@ export class PXE {
|
|
|
891
857
|
txInfo,
|
|
892
858
|
);
|
|
893
859
|
const syncTimer = new Timer();
|
|
894
|
-
await this.
|
|
860
|
+
await this.blockStateSynchronizer.sync();
|
|
895
861
|
const syncTime = syncTimer.ms();
|
|
896
862
|
|
|
897
863
|
const contractFunctionSimulator = this.#getSimulatorForTx(overrides);
|
|
@@ -908,15 +874,14 @@ export class PXE {
|
|
|
908
874
|
|
|
909
875
|
if (skipKernels) {
|
|
910
876
|
// According to the protocol rules, the nonce generator for the note hashes
|
|
911
|
-
// can either be the first nullifier in the tx or the
|
|
912
|
-
// if there are none.
|
|
877
|
+
// can either be the first nullifier in the tx or the protocol nullifier if there are none.
|
|
913
878
|
const nonceGenerator = privateExecutionResult.firstNullifier.equals(Fr.ZERO)
|
|
914
|
-
? await txRequest.toTxRequest().hash()
|
|
879
|
+
? await computeProtocolNullifier(await txRequest.toTxRequest().hash())
|
|
915
880
|
: privateExecutionResult.firstNullifier;
|
|
916
881
|
({ publicInputs, executionSteps } = await generateSimulatedProvingResult(
|
|
917
882
|
privateExecutionResult,
|
|
918
883
|
nonceGenerator,
|
|
919
|
-
this.
|
|
884
|
+
this.contractStore,
|
|
920
885
|
));
|
|
921
886
|
} else {
|
|
922
887
|
// Kernel logic, plus proving of all private functions and kernels.
|
|
@@ -1003,21 +968,15 @@ export class PXE {
|
|
|
1003
968
|
/**
|
|
1004
969
|
* Simulate the execution of a contract utility function.
|
|
1005
970
|
*
|
|
1006
|
-
* @param
|
|
1007
|
-
* @param args - The arguments to be provided to the function.
|
|
1008
|
-
* @param to - The address of the contract to be called.
|
|
971
|
+
* @param call - The function call containing the function details, arguments, and target contract address.
|
|
1009
972
|
* @param authwits - (Optional) The authentication witnesses required for the function call.
|
|
1010
|
-
* @param from - (Optional) The msg sender to set for the call.
|
|
1011
973
|
* @param scopes - (Optional) The accounts whose notes we can access in this call. Currently optional and will
|
|
1012
974
|
* default to all.
|
|
1013
975
|
* @returns The result of the utility function call, structured based on the function ABI.
|
|
1014
976
|
*/
|
|
1015
977
|
public simulateUtility(
|
|
1016
|
-
|
|
1017
|
-
args: any[],
|
|
1018
|
-
to: AztecAddress,
|
|
978
|
+
call: FunctionCall,
|
|
1019
979
|
authwits?: AuthWitness[],
|
|
1020
|
-
_from?: AztecAddress,
|
|
1021
980
|
scopes?: AztecAddress[],
|
|
1022
981
|
): Promise<UtilitySimulationResult> {
|
|
1023
982
|
// We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
|
|
@@ -1027,22 +986,16 @@ export class PXE {
|
|
|
1027
986
|
try {
|
|
1028
987
|
const totalTimer = new Timer();
|
|
1029
988
|
const syncTimer = new Timer();
|
|
1030
|
-
await this.
|
|
989
|
+
await this.blockStateSynchronizer.sync();
|
|
1031
990
|
const syncTime = syncTimer.ms();
|
|
1032
|
-
const functionCall = await this.#getFunctionCall(functionName, args, to);
|
|
1033
991
|
const functionTimer = new Timer();
|
|
1034
992
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
1035
|
-
const executionResult = await this.#simulateUtility(
|
|
1036
|
-
contractFunctionSimulator,
|
|
1037
|
-
functionCall,
|
|
1038
|
-
authwits ?? [],
|
|
1039
|
-
scopes,
|
|
1040
|
-
);
|
|
993
|
+
const executionResult = await this.#simulateUtility(contractFunctionSimulator, call, authwits ?? [], scopes);
|
|
1041
994
|
const functionTime = functionTimer.ms();
|
|
1042
995
|
|
|
1043
996
|
const totalTime = totalTimer.ms();
|
|
1044
997
|
|
|
1045
|
-
const perFunction = [{ functionName, time: functionTime }];
|
|
998
|
+
const perFunction = [{ functionName: call.name, time: functionTime }];
|
|
1046
999
|
|
|
1047
1000
|
const timings: SimulationTimings = {
|
|
1048
1001
|
total: totalTime,
|
|
@@ -1054,10 +1007,11 @@ export class PXE {
|
|
|
1054
1007
|
const simulationStats = contractFunctionSimulator.getStats();
|
|
1055
1008
|
return { result: executionResult, stats: { timings, nodeRPCCalls: simulationStats.nodeRPCCalls } };
|
|
1056
1009
|
} catch (err: any) {
|
|
1010
|
+
const { to, name, args } = call;
|
|
1057
1011
|
const stringifiedArgs = args.map(arg => arg.toString()).join(', ');
|
|
1058
1012
|
throw this.#contextualizeError(
|
|
1059
1013
|
err,
|
|
1060
|
-
`simulateUtility ${to}:${
|
|
1014
|
+
`simulateUtility ${to}:${name}(${stringifiedArgs})`,
|
|
1061
1015
|
`scopes=${scopes?.map(s => s.toString()).join(', ') ?? 'undefined'}`,
|
|
1062
1016
|
);
|
|
1063
1017
|
}
|
|
@@ -1066,42 +1020,32 @@ export class PXE {
|
|
|
1066
1020
|
|
|
1067
1021
|
/**
|
|
1068
1022
|
* Returns the private events given search parameters.
|
|
1069
|
-
* @param
|
|
1070
|
-
* @param
|
|
1071
|
-
*
|
|
1072
|
-
*
|
|
1073
|
-
*
|
|
1074
|
-
*
|
|
1023
|
+
* @param eventSelector - Event selector to search for.
|
|
1024
|
+
* @param filter
|
|
1025
|
+
* contractAddress - The address of the contract to get events from. Required.
|
|
1026
|
+
* scopes - One or more event scope addresses to filter by. Required.
|
|
1027
|
+
* fromBlock - The block number to search from (inclusive). Optional. If provided, it must be >= 0.
|
|
1028
|
+
* Defaults to 0.
|
|
1029
|
+
* If toBlock is defined but fromBlock is not, fromBlock defaults to toBlock - 1.
|
|
1030
|
+
* toBlock - The block number to search up to (exclusive). Optional. If provided, it must be > 0.
|
|
1031
|
+
* Defaults to the latest known block to PXE + 1.
|
|
1032
|
+
* @returns - The packed events with block and tx metadata.
|
|
1075
1033
|
*/
|
|
1076
|
-
public async getPrivateEvents
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
numBlocks: number,
|
|
1081
|
-
recipients: AztecAddress[],
|
|
1082
|
-
): Promise<T[]> {
|
|
1083
|
-
if (recipients.length === 0) {
|
|
1084
|
-
throw new Error('Recipients are required to get private events');
|
|
1085
|
-
}
|
|
1086
|
-
|
|
1087
|
-
this.log.verbose(`Getting private events for ${contractAddress.toString()} from ${from} to ${from + numBlocks}`);
|
|
1088
|
-
|
|
1034
|
+
public async getPrivateEvents(
|
|
1035
|
+
eventSelector: EventSelector,
|
|
1036
|
+
filter: PrivateEventFilter,
|
|
1037
|
+
): Promise<PackedPrivateEvent[]> {
|
|
1089
1038
|
// We need to manually trigger private state sync to have a guarantee that all the events are available.
|
|
1090
|
-
await this.
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
from,
|
|
1095
|
-
numBlocks,
|
|
1096
|
-
recipients,
|
|
1097
|
-
eventMetadataDef.eventSelector,
|
|
1098
|
-
);
|
|
1039
|
+
const call = await this.contractStore.getFunctionCall('sync_private_state', [], filter.contractAddress);
|
|
1040
|
+
await this.simulateUtility(call);
|
|
1041
|
+
|
|
1042
|
+
const sanitizedFilter = await new PrivateEventFilterValidator(this.anchorBlockStore).validate(filter);
|
|
1099
1043
|
|
|
1100
|
-
|
|
1101
|
-
|
|
1044
|
+
this.log.debug(
|
|
1045
|
+
`Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`,
|
|
1102
1046
|
);
|
|
1103
1047
|
|
|
1104
|
-
return
|
|
1048
|
+
return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
|
|
1105
1049
|
}
|
|
1106
1050
|
|
|
1107
1051
|
/**
|