@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/dest/pxe.js
CHANGED
|
@@ -1,70 +1,77 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { SerialQueue } from '@aztec/foundation/queue';
|
|
4
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
5
|
import { KeyStore } from '@aztec/key-store';
|
|
6
6
|
import { L2TipsKVStore } from '@aztec/kv-store/stores';
|
|
7
7
|
import { protocolContractNames } from '@aztec/protocol-contracts';
|
|
8
|
-
import {
|
|
8
|
+
import { FunctionType, decodeFunctionSignature } from '@aztec/stdlib/abi';
|
|
9
9
|
import { computeContractAddressFromInstance, getContractClassFromArtifact } from '@aztec/stdlib/contract';
|
|
10
10
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
11
|
-
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
12
|
-
import { UniqueNote } from '@aztec/stdlib/note';
|
|
11
|
+
import { computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
|
|
13
12
|
import { PrivateSimulationResult, TxProfileResult, TxProvingResult, TxSimulationResult } from '@aztec/stdlib/tx';
|
|
14
13
|
import { inspect } from 'util';
|
|
14
|
+
import { BlockSynchronizer } from './block_synchronizer/index.js';
|
|
15
15
|
import { ContractFunctionSimulator, generateSimulatedProvingResult } from './contract_function_simulator/contract_function_simulator.js';
|
|
16
16
|
import { readCurrentClassId } from './contract_function_simulator/oracle/private_execution.js';
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { PXEOracleInterface } from './contract_function_simulator/pxe_oracle_interface.js';
|
|
17
|
+
import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
|
|
18
|
+
import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
|
|
20
19
|
import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
|
|
20
|
+
import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
|
|
21
21
|
import { PrivateKernelExecutionProver } from './private_kernel/private_kernel_execution_prover.js';
|
|
22
22
|
import { PrivateKernelOracleImpl } from './private_kernel/private_kernel_oracle_impl.js';
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
23
|
+
import { AddressStore } from './storage/address_store/address_store.js';
|
|
24
|
+
import { AnchorBlockStore } from './storage/anchor_block_store/anchor_block_store.js';
|
|
25
|
+
import { CapsuleStore } from './storage/capsule_store/capsule_store.js';
|
|
26
|
+
import { ContractStore } from './storage/contract_store/contract_store.js';
|
|
27
|
+
import { NoteStore } from './storage/note_store/note_store.js';
|
|
28
|
+
import { PrivateEventStore } from './storage/private_event_store/private_event_store.js';
|
|
29
|
+
import { RecipientTaggingStore } from './storage/tagging_store/recipient_tagging_store.js';
|
|
30
|
+
import { SenderAddressBookStore } from './storage/tagging_store/sender_address_book_store.js';
|
|
31
|
+
import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store.js';
|
|
31
32
|
/**
|
|
32
33
|
* Private eXecution Environment (PXE) is a library used by wallets to simulate private phase of transactions and to
|
|
33
34
|
* manage private state of users.
|
|
34
35
|
*/ export class PXE {
|
|
35
36
|
node;
|
|
36
|
-
|
|
37
|
+
blockStateSynchronizer;
|
|
37
38
|
keyStore;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
contractStore;
|
|
40
|
+
noteStore;
|
|
41
|
+
capsuleStore;
|
|
42
|
+
anchorBlockStore;
|
|
43
|
+
senderTaggingStore;
|
|
44
|
+
senderAddressBookStore;
|
|
45
|
+
recipientTaggingStore;
|
|
46
|
+
addressStore;
|
|
47
|
+
privateEventStore;
|
|
45
48
|
simulator;
|
|
46
49
|
proverEnabled;
|
|
47
50
|
proofCreator;
|
|
48
51
|
protocolContractsProvider;
|
|
49
52
|
log;
|
|
50
53
|
jobQueue;
|
|
51
|
-
|
|
54
|
+
debug;
|
|
55
|
+
constructor(node, blockStateSynchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, debug){
|
|
52
56
|
this.node = node;
|
|
53
|
-
this.
|
|
57
|
+
this.blockStateSynchronizer = blockStateSynchronizer;
|
|
54
58
|
this.keyStore = keyStore;
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
59
|
-
this.
|
|
60
|
-
this.
|
|
61
|
-
this.
|
|
59
|
+
this.contractStore = contractStore;
|
|
60
|
+
this.noteStore = noteStore;
|
|
61
|
+
this.capsuleStore = capsuleStore;
|
|
62
|
+
this.anchorBlockStore = anchorBlockStore;
|
|
63
|
+
this.senderTaggingStore = senderTaggingStore;
|
|
64
|
+
this.senderAddressBookStore = senderAddressBookStore;
|
|
65
|
+
this.recipientTaggingStore = recipientTaggingStore;
|
|
66
|
+
this.addressStore = addressStore;
|
|
67
|
+
this.privateEventStore = privateEventStore;
|
|
62
68
|
this.simulator = simulator;
|
|
63
69
|
this.proverEnabled = proverEnabled;
|
|
64
70
|
this.proofCreator = proofCreator;
|
|
65
71
|
this.protocolContractsProvider = protocolContractsProvider;
|
|
66
72
|
this.log = log;
|
|
67
73
|
this.jobQueue = jobQueue;
|
|
74
|
+
this.debug = debug;
|
|
68
75
|
}
|
|
69
76
|
/**
|
|
70
77
|
* Creates an instance of a PXE by instantiating all the necessary data providers and services.
|
|
@@ -75,18 +82,22 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
75
82
|
*/ static async create(node, store, proofCreator, simulator, protocolContractsProvider, config, loggerOrSuffix) {
|
|
76
83
|
const log = !loggerOrSuffix || typeof loggerOrSuffix === 'string' ? createLogger(loggerOrSuffix ? `pxe:service:${loggerOrSuffix}` : `pxe:service`) : loggerOrSuffix;
|
|
77
84
|
const proverEnabled = !!config.proverEnabled;
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
const
|
|
82
|
-
const
|
|
83
|
-
const
|
|
84
|
-
const
|
|
85
|
+
const addressStore = new AddressStore(store);
|
|
86
|
+
const privateEventStore = new PrivateEventStore(store);
|
|
87
|
+
const contractStore = new ContractStore(store);
|
|
88
|
+
const noteStore = await NoteStore.create(store);
|
|
89
|
+
const anchorBlockStore = new AnchorBlockStore(store);
|
|
90
|
+
const senderTaggingStore = new SenderTaggingStore(store);
|
|
91
|
+
const senderAddressBookStore = new SenderAddressBookStore(store);
|
|
92
|
+
const recipientTaggingStore = new RecipientTaggingStore(store);
|
|
93
|
+
const capsuleStore = new CapsuleStore(store);
|
|
85
94
|
const keyStore = new KeyStore(store);
|
|
86
95
|
const tipsStore = new L2TipsKVStore(store, 'pxe');
|
|
87
|
-
const synchronizer = new
|
|
96
|
+
const synchronizer = new BlockSynchronizer(node, anchorBlockStore, noteStore, tipsStore, config, loggerOrSuffix);
|
|
97
|
+
const debugUtils = new PXEDebugUtils(contractStore, noteStore);
|
|
88
98
|
const jobQueue = new SerialQueue();
|
|
89
|
-
const pxe = new PXE(node, synchronizer, keyStore,
|
|
99
|
+
const pxe = new PXE(node, synchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, debugUtils);
|
|
100
|
+
debugUtils.setPXE(pxe);
|
|
90
101
|
pxe.jobQueue.start();
|
|
91
102
|
await pxe.#registerProtocolContracts();
|
|
92
103
|
const info = await node.getNodeInfo();
|
|
@@ -95,8 +106,8 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
95
106
|
}
|
|
96
107
|
// Internal methods
|
|
97
108
|
#getSimulatorForTx(overrides) {
|
|
98
|
-
const
|
|
99
|
-
return new ContractFunctionSimulator(
|
|
109
|
+
const proxyContractStore = ProxiedContractStoreFactory.create(this.contractStore, overrides?.contracts);
|
|
110
|
+
return new ContractFunctionSimulator(proxyContractStore, this.noteStore, this.keyStore, this.addressStore, this.node, this.anchorBlockStore, this.senderTaggingStore, this.recipientTaggingStore, this.senderAddressBookStore, this.capsuleStore, this.privateEventStore, this.simulator);
|
|
100
111
|
}
|
|
101
112
|
#contextualizeError(err, ...context) {
|
|
102
113
|
let contextStr = '';
|
|
@@ -127,8 +138,8 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
127
138
|
const registered = {};
|
|
128
139
|
for (const name of protocolContractNames){
|
|
129
140
|
const { address, contractClass, instance, artifact } = await this.protocolContractsProvider.getProtocolContractArtifact(name);
|
|
130
|
-
await this.
|
|
131
|
-
await this.
|
|
141
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
142
|
+
await this.contractStore.addContractInstance(instance);
|
|
132
143
|
registered[name] = address.toString();
|
|
133
144
|
}
|
|
134
145
|
this.log.verbose(`Registered protocol contracts in pxe`, registered);
|
|
@@ -143,39 +154,20 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
143
154
|
const initNullifier = await siloNullifier(address, address.toField());
|
|
144
155
|
return !!await this.node.getNullifierMembershipWitness('latest', initNullifier);
|
|
145
156
|
}
|
|
146
|
-
async #getFunctionCall(functionName, args, to) {
|
|
147
|
-
const contract = await this.contractDataProvider.getContract(to);
|
|
148
|
-
if (!contract) {
|
|
149
|
-
throw new Error(`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`);
|
|
150
|
-
}
|
|
151
|
-
const functionDao = contract.functions.find((f)=>f.name === functionName);
|
|
152
|
-
if (!functionDao) {
|
|
153
|
-
throw new Error(`Unknown function ${functionName} in contract ${contract.name}.`);
|
|
154
|
-
}
|
|
155
|
-
return {
|
|
156
|
-
name: functionDao.name,
|
|
157
|
-
args: encodeArguments(functionDao, args),
|
|
158
|
-
selector: await FunctionSelector.fromNameAndParameters(functionDao.name, functionDao.parameters),
|
|
159
|
-
type: functionDao.functionType,
|
|
160
|
-
to,
|
|
161
|
-
hideMsgSender: false,
|
|
162
|
-
isStatic: functionDao.isStatic,
|
|
163
|
-
returnTypes: functionDao.returnTypes
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
157
|
// Executes the entrypoint private function, as well as all nested private
|
|
167
158
|
// functions that might arise.
|
|
168
159
|
async #executePrivate(contractFunctionSimulator, txRequest, scopes) {
|
|
169
160
|
const { origin: contractAddress, functionSelector } = txRequest;
|
|
170
161
|
try {
|
|
171
|
-
const
|
|
162
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
163
|
+
const result = await contractFunctionSimulator.run(txRequest, contractAddress, functionSelector, undefined, anchorBlockHeader, // The sender for tags is set by contracts, typically by an account
|
|
172
164
|
// contract entrypoint
|
|
173
165
|
undefined, scopes);
|
|
174
166
|
this.log.debug(`Private simulation completed for ${contractAddress.toString()}:${functionSelector}`);
|
|
175
167
|
return result;
|
|
176
168
|
} catch (err) {
|
|
177
169
|
if (err instanceof SimulationError) {
|
|
178
|
-
await enrichSimulationError(err, this.
|
|
170
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
179
171
|
}
|
|
180
172
|
throw err;
|
|
181
173
|
}
|
|
@@ -190,10 +182,11 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
190
182
|
* @returns The simulation result containing the outputs of the utility function.
|
|
191
183
|
*/ async #simulateUtility(contractFunctionSimulator, call, authWitnesses, scopes) {
|
|
192
184
|
try {
|
|
193
|
-
|
|
185
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
186
|
+
return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes);
|
|
194
187
|
} catch (err) {
|
|
195
188
|
if (err instanceof SimulationError) {
|
|
196
|
-
await enrichSimulationError(err, this.
|
|
189
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
197
190
|
}
|
|
198
191
|
throw err;
|
|
199
192
|
}
|
|
@@ -215,7 +208,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
215
208
|
} catch (err) {
|
|
216
209
|
if (err instanceof SimulationError) {
|
|
217
210
|
try {
|
|
218
|
-
await enrichPublicSimulationError(err, this.
|
|
211
|
+
await enrichPublicSimulationError(err, this.contractStore, this.log);
|
|
219
212
|
} catch (enrichErr) {
|
|
220
213
|
this.log.error(`Failed to enrich public simulation error: ${enrichErr}`);
|
|
221
214
|
}
|
|
@@ -235,14 +228,14 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
235
228
|
* @returns An object that contains the output of the kernel execution, including the ChonkProof if proving is enabled.
|
|
236
229
|
*/ async #prove(txExecutionRequest, proofCreator, privateExecutionResult, config) {
|
|
237
230
|
const simulationAnchorBlock = privateExecutionResult.getSimulationAnchorBlockNumber();
|
|
238
|
-
const kernelOracle = new PrivateKernelOracleImpl(this.
|
|
231
|
+
const kernelOracle = new PrivateKernelOracleImpl(this.contractStore, this.keyStore, this.node, simulationAnchorBlock);
|
|
239
232
|
const kernelTraceProver = new PrivateKernelExecutionProver(kernelOracle, proofCreator, !this.proverEnabled);
|
|
240
233
|
this.log.debug(`Executing kernel trace prover (${JSON.stringify(config)})...`);
|
|
241
234
|
return await kernelTraceProver.proveWithKernels(txExecutionRequest.toTxRequest(), privateExecutionResult, config);
|
|
242
235
|
}
|
|
243
236
|
// Public API
|
|
244
237
|
getContractInstance(address) {
|
|
245
|
-
return this.
|
|
238
|
+
return this.contractStore.getContractInstance(address);
|
|
246
239
|
}
|
|
247
240
|
/**
|
|
248
241
|
* Returns the contract class metadata given a contract class id.
|
|
@@ -258,7 +251,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
258
251
|
* during a public deployment. We probably want a nicer and more general API for this, but it'll have to
|
|
259
252
|
* do for the time being.
|
|
260
253
|
*/ async getContractClassMetadata(id, includeArtifact = false) {
|
|
261
|
-
const artifact = await this.
|
|
254
|
+
const artifact = await this.contractStore.getContractArtifact(id);
|
|
262
255
|
if (!artifact) {
|
|
263
256
|
this.log.warn(`No artifact found for contract class ${id.toString()} when looking for its metadata`);
|
|
264
257
|
}
|
|
@@ -281,7 +274,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
281
274
|
*/ async getContractMetadata(address) {
|
|
282
275
|
let instance;
|
|
283
276
|
try {
|
|
284
|
-
instance = await this.
|
|
277
|
+
instance = await this.contractStore.getContractInstance(address);
|
|
285
278
|
} catch {
|
|
286
279
|
this.log.warn(`No instance found for contract ${address.toString()} when looking for its metadata`);
|
|
287
280
|
}
|
|
@@ -310,46 +303,48 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
310
303
|
this.log.info(`Registered account ${accountCompleteAddress.address.toString()}`);
|
|
311
304
|
this.log.debug(`Registered account\n ${accountCompleteAddress.toReadableString()}`);
|
|
312
305
|
}
|
|
313
|
-
await this.
|
|
314
|
-
await this.
|
|
306
|
+
await this.addressStore.addCompleteAddress(accountCompleteAddress);
|
|
307
|
+
await this.noteStore.addScope(accountCompleteAddress.address);
|
|
315
308
|
return accountCompleteAddress;
|
|
316
309
|
}
|
|
317
310
|
/**
|
|
318
|
-
* Registers a
|
|
311
|
+
* Registers a sender in this PXE.
|
|
319
312
|
*
|
|
320
|
-
*
|
|
321
|
-
* Will do nothing if the
|
|
313
|
+
* After registering a new sender, the PXE will sync private logs that are tagged with this sender's address.
|
|
314
|
+
* Will do nothing if the address is already registered.
|
|
322
315
|
*
|
|
323
|
-
* @param
|
|
324
|
-
* @returns The address
|
|
325
|
-
|
|
316
|
+
* @param sender - Address of the sender to register.
|
|
317
|
+
* @returns The address of the sender.
|
|
318
|
+
* TODO: It's strange that we return the address here and I (benesjan) think we should drop the return value.
|
|
319
|
+
*/ async registerSender(sender) {
|
|
326
320
|
const accounts = await this.keyStore.getAccounts();
|
|
327
|
-
if (accounts.includes(
|
|
328
|
-
this.log.info(`Sender:\n "${
|
|
329
|
-
return
|
|
321
|
+
if (accounts.includes(sender)) {
|
|
322
|
+
this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
|
|
323
|
+
return sender;
|
|
330
324
|
}
|
|
331
|
-
const wasAdded = await this.
|
|
325
|
+
const wasAdded = await this.senderAddressBookStore.addSender(sender);
|
|
332
326
|
if (wasAdded) {
|
|
333
|
-
this.log.info(`Added sender:\n ${
|
|
327
|
+
this.log.info(`Added sender:\n ${sender.toString()}`);
|
|
334
328
|
} else {
|
|
335
|
-
this.log.info(`Sender:\n "${
|
|
329
|
+
this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
|
|
336
330
|
}
|
|
337
|
-
return
|
|
331
|
+
return sender;
|
|
338
332
|
}
|
|
339
333
|
/**
|
|
340
|
-
* Retrieves
|
|
341
|
-
* @returns
|
|
334
|
+
* Retrieves senders registered in this PXE.
|
|
335
|
+
* @returns Senders registered in this PXE.
|
|
342
336
|
*/ getSenders() {
|
|
343
|
-
return this.
|
|
337
|
+
return this.senderAddressBookStore.getSenders();
|
|
344
338
|
}
|
|
345
339
|
/**
|
|
346
|
-
* Removes a sender in
|
|
347
|
-
|
|
348
|
-
|
|
340
|
+
* Removes a sender registered in this PXE.
|
|
341
|
+
* @param sender - The address of the sender to remove.
|
|
342
|
+
*/ async removeSender(sender) {
|
|
343
|
+
const wasRemoved = await this.senderAddressBookStore.removeSender(sender);
|
|
349
344
|
if (wasRemoved) {
|
|
350
|
-
this.log.info(`Removed sender:\n ${
|
|
345
|
+
this.log.info(`Removed sender:\n ${sender.toString()}`);
|
|
351
346
|
} else {
|
|
352
|
-
this.log.info(`Sender:\n "${
|
|
347
|
+
this.log.info(`Sender:\n "${sender.toString()}"\n not registered in PXE.`);
|
|
353
348
|
}
|
|
354
349
|
}
|
|
355
350
|
/**
|
|
@@ -357,7 +352,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
357
352
|
* @returns An array of the accounts registered on this PXE.
|
|
358
353
|
*/ async getRegisteredAccounts() {
|
|
359
354
|
// Get complete addresses of both the recipients and the accounts
|
|
360
|
-
const completeAddresses = await this.
|
|
355
|
+
const completeAddresses = await this.addressStore.getCompleteAddresses();
|
|
361
356
|
// Filter out the addresses not corresponding to accounts
|
|
362
357
|
const accounts = await this.keyStore.getAccounts();
|
|
363
358
|
return completeAddresses.filter((completeAddress)=>accounts.find((address)=>address.equals(completeAddress.address)));
|
|
@@ -368,7 +363,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
368
363
|
* @param artifact - The build artifact for the contract class.
|
|
369
364
|
*/ async registerContractClass(artifact) {
|
|
370
365
|
const { id: contractClassId } = await getContractClassFromArtifact(artifact);
|
|
371
|
-
await this.
|
|
366
|
+
await this.contractStore.addContractArtifact(contractClassId, artifact);
|
|
372
367
|
this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
|
|
373
368
|
}
|
|
374
369
|
/**
|
|
@@ -392,17 +387,17 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
392
387
|
if (!computedAddress.equals(instance.address)) {
|
|
393
388
|
throw new Error('Added a contract in which the address does not match the contract instance.');
|
|
394
389
|
}
|
|
395
|
-
await this.
|
|
390
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
396
391
|
const publicFunctionSignatures = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
|
|
397
392
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
398
393
|
} else {
|
|
399
394
|
// Otherwise, make sure there is an artifact already registered for that class id
|
|
400
|
-
artifact = await this.
|
|
395
|
+
artifact = await this.contractStore.getContractArtifact(instance.currentContractClassId);
|
|
401
396
|
if (!artifact) {
|
|
402
397
|
throw new Error(`Artifact not found when registering an instance. Contract class: ${instance.currentContractClassId}.`);
|
|
403
398
|
}
|
|
404
399
|
}
|
|
405
|
-
await this.
|
|
400
|
+
await this.contractStore.addContractInstance(instance);
|
|
406
401
|
this.log.info(`Added contract ${artifact.name} at ${instance.address.toString()} with class ${instance.currentContractClassId}`);
|
|
407
402
|
}
|
|
408
403
|
/**
|
|
@@ -417,22 +412,22 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
417
412
|
// We disable concurrently updating contracts to avoid concurrently syncing with the node, or changing a contract's
|
|
418
413
|
// class while we're simulating it.
|
|
419
414
|
return this.#putInJobQueue(async ()=>{
|
|
420
|
-
const currentInstance = await this.
|
|
415
|
+
const currentInstance = await this.contractStore.getContractInstance(contractAddress);
|
|
421
416
|
if (!currentInstance) {
|
|
422
417
|
throw new Error(`Instance not found when updating a contract. Contract address: ${contractAddress}.`);
|
|
423
418
|
}
|
|
424
419
|
const contractClass = await getContractClassFromArtifact(artifact);
|
|
425
|
-
await this.
|
|
426
|
-
const header = await this.
|
|
420
|
+
await this.blockStateSynchronizer.sync();
|
|
421
|
+
const header = await this.anchorBlockStore.getBlockHeader();
|
|
427
422
|
const currentClassId = await readCurrentClassId(contractAddress, currentInstance, this.node, header.globalVariables.blockNumber, header.globalVariables.timestamp);
|
|
428
423
|
if (!contractClass.id.equals(currentClassId)) {
|
|
429
424
|
throw new Error('Could not update contract to a class different from the current one.');
|
|
430
425
|
}
|
|
431
|
-
await this.
|
|
426
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
432
427
|
const publicFunctionSignatures = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
|
|
433
428
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
434
429
|
currentInstance.currentContractClassId = contractClass.id;
|
|
435
|
-
await this.
|
|
430
|
+
await this.contractStore.addContractInstance(currentInstance);
|
|
436
431
|
this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
|
|
437
432
|
});
|
|
438
433
|
}
|
|
@@ -440,33 +435,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
440
435
|
* Retrieves the addresses of contracts added to this PXE.
|
|
441
436
|
* @returns An array of contracts addresses registered on this PXE.
|
|
442
437
|
*/ getContracts() {
|
|
443
|
-
return this.
|
|
444
|
-
}
|
|
445
|
-
/**
|
|
446
|
-
* A debugging utility to get notes based on the provided filter.
|
|
447
|
-
*
|
|
448
|
-
* Note that this should not be used in production code because the structure of notes is considered to be
|
|
449
|
-
* an implementation detail of contracts. This is only meant to be used for debugging purposes. If you need to obtain
|
|
450
|
-
* note-related information in production code, please implement a custom utility function on your contract and call
|
|
451
|
-
* that function instead (e.g. `get_balance(owner: AztecAddress) -> u128` utility function on a Token contract).
|
|
452
|
-
*
|
|
453
|
-
* @param filter - The filter to apply to the notes.
|
|
454
|
-
* @returns The requested notes.
|
|
455
|
-
*/ async getNotes(filter) {
|
|
456
|
-
// We need to manually trigger private state sync to have a guarantee that all the notes are available.
|
|
457
|
-
await this.simulateUtility('sync_private_state', [], filter.contractAddress);
|
|
458
|
-
const noteDaos = await this.noteDataProvider.getNotes(filter);
|
|
459
|
-
const uniqueNotes = noteDaos.map(async (dao)=>{
|
|
460
|
-
const completeAddresses = await this.addressDataProvider.getCompleteAddresses();
|
|
461
|
-
const completeAddressIndex = completeAddresses.findIndex((completeAddress)=>completeAddress.address.equals(dao.recipient));
|
|
462
|
-
const completeAddress = completeAddresses[completeAddressIndex];
|
|
463
|
-
if (completeAddress === undefined) {
|
|
464
|
-
throw new Error(`Cannot find complete address for recipient ${dao.recipient.toString()}`);
|
|
465
|
-
}
|
|
466
|
-
const recipient = completeAddress.address;
|
|
467
|
-
return new UniqueNote(dao.note, recipient, dao.contractAddress, dao.storageSlot, dao.txHash, dao.noteNonce);
|
|
468
|
-
});
|
|
469
|
-
return Promise.all(uniqueNotes);
|
|
438
|
+
return this.contractStore.getContractsAddresses();
|
|
470
439
|
}
|
|
471
440
|
/**
|
|
472
441
|
* Proves the private portion of a simulated transaction, ready to send to the network
|
|
@@ -484,7 +453,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
484
453
|
const totalTimer = new Timer();
|
|
485
454
|
try {
|
|
486
455
|
const syncTimer = new Timer();
|
|
487
|
-
await this.
|
|
456
|
+
await this.blockStateSynchronizer.sync();
|
|
488
457
|
const syncTime = syncTimer.ms();
|
|
489
458
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
490
459
|
privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
|
|
@@ -513,14 +482,21 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
513
482
|
timings,
|
|
514
483
|
nodeRPCCalls: contractFunctionSimulator?.getStats().nodeRPCCalls
|
|
515
484
|
});
|
|
485
|
+
// While not strictly necessary to store tagging cache contents in the DB since we sync tagging indexes from
|
|
486
|
+
// chain before sending new logs, the sync can only see logs already included in blocks. If we send another
|
|
487
|
+
// transaction before this one is included in a block from this PXE, and that transaction contains a log with
|
|
488
|
+
// a tag derived from the same secret, we would reuse the tag and the transactions would be linked. Hence
|
|
489
|
+
// storing the tags here prevents linkage of txs sent from the same PXE.
|
|
516
490
|
const preTagsUsedInTheTx = privateExecutionResult.entrypoint.preTags;
|
|
517
491
|
if (preTagsUsedInTheTx.length > 0) {
|
|
518
|
-
|
|
519
|
-
|
|
492
|
+
// TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
|
|
493
|
+
const txHash = (await txProvingResult.toTx()).txHash;
|
|
494
|
+
await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash);
|
|
495
|
+
this.log.debug(`Stored used pre-tags as sender for the tx`, {
|
|
520
496
|
preTagsUsedInTheTx
|
|
521
497
|
});
|
|
522
498
|
} else {
|
|
523
|
-
this.log.debug(`No pre
|
|
499
|
+
this.log.debug(`No pre-tags used in the tx`);
|
|
524
500
|
}
|
|
525
501
|
return txProvingResult;
|
|
526
502
|
} catch (err) {
|
|
@@ -551,7 +527,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
551
527
|
};
|
|
552
528
|
this.log.info(`Profiling transaction execution request to ${txRequest.functionSelector} at ${txRequest.origin}`, txInfo);
|
|
553
529
|
const syncTimer = new Timer();
|
|
554
|
-
await this.
|
|
530
|
+
await this.blockStateSynchronizer.sync();
|
|
555
531
|
const syncTime = syncTimer.ms();
|
|
556
532
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
557
533
|
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
|
|
@@ -627,7 +603,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
627
603
|
};
|
|
628
604
|
this.log.info(`Simulating transaction execution request to ${txRequest.functionSelector} at ${txRequest.origin}`, txInfo);
|
|
629
605
|
const syncTimer = new Timer();
|
|
630
|
-
await this.
|
|
606
|
+
await this.blockStateSynchronizer.sync();
|
|
631
607
|
const syncTime = syncTimer.ms();
|
|
632
608
|
const contractFunctionSimulator = this.#getSimulatorForTx(overrides);
|
|
633
609
|
// Temporary: in case there are overrides, we have to skip the kernels or validations
|
|
@@ -640,10 +616,9 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
640
616
|
let executionSteps = [];
|
|
641
617
|
if (skipKernels) {
|
|
642
618
|
// According to the protocol rules, the nonce generator for the note hashes
|
|
643
|
-
// can either be the first nullifier in the tx or the
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
({ publicInputs, executionSteps } = await generateSimulatedProvingResult(privateExecutionResult, nonceGenerator, this.contractDataProvider));
|
|
619
|
+
// can either be the first nullifier in the tx or the protocol nullifier if there are none.
|
|
620
|
+
const nonceGenerator = privateExecutionResult.firstNullifier.equals(Fr.ZERO) ? await computeProtocolNullifier(await txRequest.toTxRequest().hash()) : privateExecutionResult.firstNullifier;
|
|
621
|
+
({ publicInputs, executionSteps } = await generateSimulatedProvingResult(privateExecutionResult, nonceGenerator, this.contractStore));
|
|
647
622
|
} else {
|
|
648
623
|
// Kernel logic, plus proving of all private functions and kernels.
|
|
649
624
|
({ publicInputs, executionSteps } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, {
|
|
@@ -710,15 +685,12 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
710
685
|
/**
|
|
711
686
|
* Simulate the execution of a contract utility function.
|
|
712
687
|
*
|
|
713
|
-
* @param
|
|
714
|
-
* @param args - The arguments to be provided to the function.
|
|
715
|
-
* @param to - The address of the contract to be called.
|
|
688
|
+
* @param call - The function call containing the function details, arguments, and target contract address.
|
|
716
689
|
* @param authwits - (Optional) The authentication witnesses required for the function call.
|
|
717
|
-
* @param from - (Optional) The msg sender to set for the call.
|
|
718
690
|
* @param scopes - (Optional) The accounts whose notes we can access in this call. Currently optional and will
|
|
719
691
|
* default to all.
|
|
720
692
|
* @returns The result of the utility function call, structured based on the function ABI.
|
|
721
|
-
*/ simulateUtility(
|
|
693
|
+
*/ simulateUtility(call, authwits, scopes) {
|
|
722
694
|
// We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
|
|
723
695
|
// to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
|
|
724
696
|
// delete the same read value, or reading values that another simulation is currently modifying).
|
|
@@ -726,17 +698,16 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
726
698
|
try {
|
|
727
699
|
const totalTimer = new Timer();
|
|
728
700
|
const syncTimer = new Timer();
|
|
729
|
-
await this.
|
|
701
|
+
await this.blockStateSynchronizer.sync();
|
|
730
702
|
const syncTime = syncTimer.ms();
|
|
731
|
-
const functionCall = await this.#getFunctionCall(functionName, args, to);
|
|
732
703
|
const functionTimer = new Timer();
|
|
733
704
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
734
|
-
const executionResult = await this.#simulateUtility(contractFunctionSimulator,
|
|
705
|
+
const executionResult = await this.#simulateUtility(contractFunctionSimulator, call, authwits ?? [], scopes);
|
|
735
706
|
const functionTime = functionTimer.ms();
|
|
736
707
|
const totalTime = totalTimer.ms();
|
|
737
708
|
const perFunction = [
|
|
738
709
|
{
|
|
739
|
-
functionName,
|
|
710
|
+
functionName: call.name,
|
|
740
711
|
time: functionTime
|
|
741
712
|
}
|
|
742
713
|
];
|
|
@@ -755,31 +726,31 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
755
726
|
}
|
|
756
727
|
};
|
|
757
728
|
} catch (err) {
|
|
729
|
+
const { to, name, args } = call;
|
|
758
730
|
const stringifiedArgs = args.map((arg)=>arg.toString()).join(', ');
|
|
759
|
-
throw this.#contextualizeError(err, `simulateUtility ${to}:${
|
|
731
|
+
throw this.#contextualizeError(err, `simulateUtility ${to}:${name}(${stringifiedArgs})`, `scopes=${scopes?.map((s)=>s.toString()).join(', ') ?? 'undefined'}`);
|
|
760
732
|
}
|
|
761
733
|
});
|
|
762
734
|
}
|
|
763
735
|
/**
|
|
764
736
|
* Returns the private events given search parameters.
|
|
765
|
-
* @param
|
|
766
|
-
* @param
|
|
767
|
-
*
|
|
768
|
-
*
|
|
769
|
-
*
|
|
770
|
-
*
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
737
|
+
* @param eventSelector - Event selector to search for.
|
|
738
|
+
* @param filter
|
|
739
|
+
* contractAddress - The address of the contract to get events from. Required.
|
|
740
|
+
* scopes - One or more event scope addresses to filter by. Required.
|
|
741
|
+
* fromBlock - The block number to search from (inclusive). Optional. If provided, it must be >= 0.
|
|
742
|
+
* Defaults to 0.
|
|
743
|
+
* If toBlock is defined but fromBlock is not, fromBlock defaults to toBlock - 1.
|
|
744
|
+
* toBlock - The block number to search up to (exclusive). Optional. If provided, it must be > 0.
|
|
745
|
+
* Defaults to the latest known block to PXE + 1.
|
|
746
|
+
* @returns - The packed events with block and tx metadata.
|
|
747
|
+
*/ async getPrivateEvents(eventSelector, filter) {
|
|
776
748
|
// We need to manually trigger private state sync to have a guarantee that all the events are available.
|
|
777
|
-
await this.
|
|
778
|
-
|
|
779
|
-
const
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
return decodedEvents;
|
|
749
|
+
const call = await this.contractStore.getFunctionCall('sync_private_state', [], filter.contractAddress);
|
|
750
|
+
await this.simulateUtility(call);
|
|
751
|
+
const sanitizedFilter = await new PrivateEventFilterValidator(this.anchorBlockStore).validate(filter);
|
|
752
|
+
this.log.debug(`Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`);
|
|
753
|
+
return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
|
|
783
754
|
}
|
|
784
755
|
/**
|
|
785
756
|
* Stops the PXE's job queue.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
2
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
import { CompleteAddress } from '@aztec/stdlib/contract';
|
|
4
|
+
export declare class AddressStore {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(store: AztecAsyncKVStore);
|
|
7
|
+
addCompleteAddress(completeAddress: CompleteAddress): Promise<boolean>;
|
|
8
|
+
getCompleteAddress(account: AztecAddress): Promise<CompleteAddress | undefined>;
|
|
9
|
+
getCompleteAddresses(): Promise<CompleteAddress[]>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc19zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JhZ2UvYWRkcmVzc19zdG9yZS9hZGRyZXNzX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFtQixpQkFBaUIsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQscUJBQWEsWUFBWTs7SUFLdkIsWUFBWSxLQUFLLEVBQUUsaUJBQWlCLEVBS25DO0lBRUQsa0JBQWtCLENBQUMsZUFBZSxFQUFFLGVBQWUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBMEJyRTtJQVlELGtCQUFrQixDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FFOUU7SUFFSyxvQkFBb0IsSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FJdkQ7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address_store.d.ts","sourceRoot":"","sources":["../../../src/storage/address_store/address_store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,qBAAa,YAAY;;IAKvB,YAAY,KAAK,EAAE,iBAAiB,EAKnC;IAED,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BrE;IAYD,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAE9E;IAEK,oBAAoB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAIvD;CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { AddressStore } from './address_store.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL2FkZHJlc3Nfc3RvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/address_store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|