@aztec/pxe 0.0.1-commit.03f7ef2 → 0.0.1-commit.0b941701
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bin/check_oracle_version.js +1 -1
- package/dest/block_synchronizer/block_synchronizer.d.ts +14 -10
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +72 -32
- package/dest/config/index.d.ts +3 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +17 -0
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/benchmarked_node.js +77 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +28 -27
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +56 -40
- package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +45 -28
- package/dest/contract_function_simulator/index.d.ts +2 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -3
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +6 -3
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -11
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +6 -6
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
- package/dest/contract_function_simulator/oracle/oracle.d.ts +10 -8
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +43 -32
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +1 -37
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +26 -26
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +28 -41
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +44 -34
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +92 -92
- 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 +5 -5
- package/dest/contract_sync/index.d.ts +23 -0
- package/dest/contract_sync/index.d.ts.map +1 -0
- package/dest/contract_sync/index.js +54 -0
- package/dest/debug/pxe_debug_utils.d.ts +6 -6
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +8 -7
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +10 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +10 -1
- package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +3 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +2 -0
- 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 +11 -7
- 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 +8 -7
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +22 -24
- package/dest/events/private_event_filter_validator.d.ts +6 -6
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +5 -6
- package/dest/job_coordinator/job_coordinator.d.ts +74 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +93 -0
- package/dest/logs/log_service.d.ts +15 -31
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +77 -188
- package/dest/notes/note_service.d.ts +10 -9
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +40 -44
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +4 -3
- package/dest/private_kernel/hints/index.d.ts +2 -2
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
- package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +13 -7
- 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 +4 -5
- package/dest/private_kernel/private_kernel_oracle.d.ts +24 -28
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +90 -2
- package/dest/pxe.d.ts +17 -44
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +131 -147
- 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/{anchor_block_data_provider/anchor_block_data_provider.js → anchor_block_store/anchor_block_store.js} +1 -1
- 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 +72 -0
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_store.js +255 -0
- 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} +3 -3
- 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} +2 -2
- 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/index.d.ts +8 -8
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +7 -7
- package/dest/storage/note_store/index.d.ts +3 -0
- package/dest/storage/note_store/index.d.ts.map +1 -0
- package/dest/storage/note_store/index.js +2 -0
- package/dest/storage/note_store/note_store.d.ts +73 -0
- package/dest/storage/note_store/note_store.d.ts.map +1 -0
- package/dest/storage/note_store/note_store.js +303 -0
- package/dest/storage/note_store/stored_note.d.ts +16 -0
- package/dest/storage/note_store/stored_note.d.ts.map +1 -0
- package/dest/storage/note_store/stored_note.js +43 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
- package/dest/storage/private_event_store/private_event_store.js +250 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
- package/dest/storage/private_event_store/stored_private_event.js +56 -0
- package/dest/storage/tagging_store/index.d.ts +4 -0
- package/dest/storage/tagging_store/index.d.ts.map +1 -0
- package/dest/storage/tagging_store/index.js +3 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/recipient_tagging_store.js +99 -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_data_provider/sender_tagging_data_provider.d.ts → tagging_store/sender_tagging_store.d.ts} +19 -9
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/{tagging_data_provider/sender_tagging_data_provider.js → tagging_store/sender_tagging_store.js} +111 -29
- package/dest/tagging/constants.d.ts +2 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +10 -3
- package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
- package/dest/tagging/get_all_logs_by_tags.js +46 -0
- package/dest/tagging/index.d.ts +15 -3
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +14 -2
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -3
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +8 -8
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +3 -2
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +5 -2
- package/dest/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.d.ts +4 -4
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.js +8 -23
- package/dest/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.d.ts +1 -1
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
- package/dest/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.js +5 -8
- package/dest/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.d.ts +7 -4
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.js +12 -7
- package/package.json +18 -18
- package/src/bin/check_oracle_version.ts +1 -0
- package/src/block_synchronizer/block_synchronizer.ts +83 -34
- package/src/config/index.ts +14 -0
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +79 -64
- package/src/contract_function_simulator/execution_note_cache.ts +44 -25
- package/src/contract_function_simulator/index.ts +1 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -1
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +20 -10
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
- package/src/contract_function_simulator/oracle/oracle.ts +56 -41
- package/src/contract_function_simulator/oracle/private_execution.ts +1 -69
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +77 -78
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +121 -105
- package/src/contract_function_simulator/proxied_contract_data_source.ts +7 -7
- package/src/contract_sync/index.ts +98 -0
- package/src/debug/pxe_debug_utils.ts +7 -6
- package/src/entrypoints/client/bundle/utils.ts +7 -1
- package/src/entrypoints/client/lazy/utils.ts +7 -2
- package/src/entrypoints/pxe_creation_options.ts +2 -1
- package/src/entrypoints/server/index.ts +2 -0
- package/src/entrypoints/server/utils.ts +11 -15
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +23 -27
- package/src/events/private_event_filter_validator.ts +4 -6
- package/src/job_coordinator/job_coordinator.ts +149 -0
- package/src/logs/log_service.ts +116 -260
- package/src/notes/note_service.ts +43 -46
- package/src/oracle_version.ts +4 -3
- package/src/private_kernel/hints/index.ts +1 -1
- package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +33 -22
- package/src/private_kernel/private_kernel_execution_prover.ts +3 -5
- package/src/private_kernel/private_kernel_oracle.ts +116 -36
- package/src/pxe.ts +189 -190
- 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/{anchor_block_data_provider/anchor_block_data_provider.ts → anchor_block_store/anchor_block_store.ts} +1 -1
- package/src/storage/anchor_block_store/index.ts +1 -0
- package/src/storage/capsule_store/capsule_store.ts +315 -0
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +2 -2
- package/src/storage/contract_store/index.ts +1 -0
- package/src/storage/index.ts +7 -7
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/note_store/note_store.ts +381 -0
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +363 -0
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/index.ts +3 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +129 -0
- package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
- package/src/storage/{tagging_data_provider/sender_tagging_data_provider.ts → tagging_store/sender_tagging_store.ts} +129 -28
- package/src/tagging/constants.ts +10 -3
- package/src/tagging/get_all_logs_by_tags.ts +68 -0
- package/src/tagging/index.ts +17 -2
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +23 -9
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +7 -1
- package/src/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.ts +12 -25
- package/src/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.ts +5 -13
- package/src/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.ts +19 -7
- package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
- package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_node.js +0 -27
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
- package/dest/public_storage/public_storage_service.d.ts +0 -24
- package/dest/public_storage/public_storage_service.d.ts.map +0 -1
- package/dest/public_storage/public_storage_service.js +0 -26
- 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/anchor_block_data_provider/anchor_block_data_provider.d.ts +0 -9
- package/dest/storage/anchor_block_data_provider/anchor_block_data_provider.d.ts.map +0 -1
- package/dest/storage/anchor_block_data_provider/index.d.ts +0 -2
- package/dest/storage/anchor_block_data_provider/index.d.ts.map +0 -1
- package/dest/storage/anchor_block_data_provider/index.js +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -57
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -146
- package/dest/storage/capsule_data_provider/index.d.ts +0 -2
- package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.d.ts +0 -2
- package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.d.ts +0 -3
- package/dest/storage/note_data_provider/index.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.js +0 -2
- package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -84
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_data_provider.js +0 -322
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -51
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -115
- package/dest/storage/tagging_data_provider/index.d.ts +0 -3
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -2
- package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.d.ts +0 -31
- package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.js +0 -65
- package/dest/storage/tagging_data_provider/sender_tagging_data_provider.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.d.ts +0 -21
- package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.js +0 -42
- package/dest/tagging/sync/sync_sender_tagging_indexes.d.ts.map +0 -1
- package/dest/tagging/sync/utils/get_status_change_of_pending.d.ts.map +0 -1
- package/dest/tagging/sync/utils/load_and_store_new_tagging_indexes.d.ts.map +0 -1
- package/dest/tagging/utils.d.ts +0 -18
- package/dest/tagging/utils.d.ts.map +0 -1
- package/dest/tagging/utils.js +0 -25
- package/dest/tree_membership/tree_membership_service.d.ts +0 -52
- package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
- package/dest/tree_membership/tree_membership_service.js +0 -84
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/private_kernel/private_kernel_oracle_impl.ts +0 -133
- package/src/public_storage/public_storage_service.ts +0 -33
- package/src/storage/address_data_provider/index.ts +0 -1
- package/src/storage/anchor_block_data_provider/index.ts +0 -1
- package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -179
- 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_data_provider.ts +0 -412
- package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -162
- package/src/storage/tagging_data_provider/index.ts +0 -2
- package/src/storage/tagging_data_provider/recipient_tagging_data_provider.ts +0 -86
- package/src/tagging/recipient_sync/new_recipient_tagging_data_provider.ts +0 -53
- package/src/tagging/utils.ts +0 -32
- package/src/tree_membership/tree_membership_service.ts +0 -112
- /package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +0 -0
- /package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +0 -0
package/src/pxe.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { PrivateEventFilter } from '@aztec/aztec.js/wallet';
|
|
2
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
4
5
|
import { SerialQueue } from '@aztec/foundation/queue';
|
|
@@ -19,14 +20,12 @@ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
|
19
20
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
20
21
|
import {
|
|
21
22
|
CompleteAddress,
|
|
22
|
-
type ContractClassWithId,
|
|
23
23
|
type ContractInstanceWithAddress,
|
|
24
24
|
type PartialAddress,
|
|
25
25
|
computeContractAddressFromInstance,
|
|
26
26
|
getContractClassFromArtifact,
|
|
27
27
|
} from '@aztec/stdlib/contract';
|
|
28
28
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
29
|
-
import { computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
|
|
30
29
|
import type { AztecNode, PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
|
|
31
30
|
import type {
|
|
32
31
|
PrivateExecutionStep,
|
|
@@ -54,28 +53,31 @@ import { inspect } from 'util';
|
|
|
54
53
|
|
|
55
54
|
import { BlockSynchronizer } from './block_synchronizer/index.js';
|
|
56
55
|
import type { PXEConfig } from './config/index.js';
|
|
56
|
+
import { BenchmarkedNodeFactory } from './contract_function_simulator/benchmarked_node.js';
|
|
57
57
|
import {
|
|
58
58
|
ContractFunctionSimulator,
|
|
59
59
|
generateSimulatedProvingResult,
|
|
60
60
|
} from './contract_function_simulator/contract_function_simulator.js';
|
|
61
|
-
import {
|
|
62
|
-
import {
|
|
61
|
+
import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
|
|
62
|
+
import { ensureContractSynced, readCurrentClassId } from './contract_sync/index.js';
|
|
63
63
|
import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
|
|
64
64
|
import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
|
|
65
65
|
import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
|
|
66
|
+
import { JobCoordinator } from './job_coordinator/job_coordinator.js';
|
|
66
67
|
import {
|
|
67
68
|
PrivateKernelExecutionProver,
|
|
68
69
|
type PrivateKernelExecutionProverConfig,
|
|
69
70
|
} from './private_kernel/private_kernel_execution_prover.js';
|
|
70
|
-
import {
|
|
71
|
-
import {
|
|
72
|
-
import {
|
|
73
|
-
import {
|
|
74
|
-
import {
|
|
75
|
-
import {
|
|
76
|
-
import {
|
|
77
|
-
import {
|
|
78
|
-
import {
|
|
71
|
+
import { PrivateKernelOracle } from './private_kernel/private_kernel_oracle.js';
|
|
72
|
+
import { AddressStore } from './storage/address_store/address_store.js';
|
|
73
|
+
import { AnchorBlockStore } from './storage/anchor_block_store/anchor_block_store.js';
|
|
74
|
+
import { CapsuleStore } from './storage/capsule_store/capsule_store.js';
|
|
75
|
+
import { ContractStore } from './storage/contract_store/contract_store.js';
|
|
76
|
+
import { NoteStore } from './storage/note_store/note_store.js';
|
|
77
|
+
import { PrivateEventStore } from './storage/private_event_store/private_event_store.js';
|
|
78
|
+
import { RecipientTaggingStore } from './storage/tagging_store/recipient_tagging_store.js';
|
|
79
|
+
import { SenderAddressBookStore } from './storage/tagging_store/sender_address_book_store.js';
|
|
80
|
+
import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store.js';
|
|
79
81
|
|
|
80
82
|
export type PackedPrivateEvent = InTx & {
|
|
81
83
|
packedEvent: Fr[];
|
|
@@ -91,20 +93,22 @@ export class PXE {
|
|
|
91
93
|
private node: AztecNode,
|
|
92
94
|
private blockStateSynchronizer: BlockSynchronizer,
|
|
93
95
|
private keyStore: KeyStore,
|
|
94
|
-
private
|
|
95
|
-
private
|
|
96
|
-
private
|
|
97
|
-
private
|
|
98
|
-
private
|
|
99
|
-
private
|
|
100
|
-
private
|
|
101
|
-
private
|
|
96
|
+
private contractStore: ContractStore,
|
|
97
|
+
private noteStore: NoteStore,
|
|
98
|
+
private capsuleStore: CapsuleStore,
|
|
99
|
+
private anchorBlockStore: AnchorBlockStore,
|
|
100
|
+
private senderTaggingStore: SenderTaggingStore,
|
|
101
|
+
private senderAddressBookStore: SenderAddressBookStore,
|
|
102
|
+
private recipientTaggingStore: RecipientTaggingStore,
|
|
103
|
+
private addressStore: AddressStore,
|
|
104
|
+
private privateEventStore: PrivateEventStore,
|
|
102
105
|
private simulator: CircuitSimulator,
|
|
103
106
|
private proverEnabled: boolean,
|
|
104
107
|
private proofCreator: PrivateKernelProver,
|
|
105
108
|
private protocolContractsProvider: ProtocolContractsProvider,
|
|
106
109
|
private log: Logger,
|
|
107
110
|
private jobQueue: SerialQueue,
|
|
111
|
+
private jobCoordinator: JobCoordinator,
|
|
108
112
|
public debug: PXEDebugUtils,
|
|
109
113
|
) {}
|
|
110
114
|
|
|
@@ -130,27 +134,38 @@ export class PXE {
|
|
|
130
134
|
: loggerOrSuffix;
|
|
131
135
|
|
|
132
136
|
const proverEnabled = !!config.proverEnabled;
|
|
133
|
-
const
|
|
134
|
-
const
|
|
135
|
-
const
|
|
136
|
-
const
|
|
137
|
-
const
|
|
138
|
-
const
|
|
139
|
-
const
|
|
140
|
-
const
|
|
137
|
+
const addressStore = new AddressStore(store);
|
|
138
|
+
const privateEventStore = new PrivateEventStore(store);
|
|
139
|
+
const contractStore = new ContractStore(store);
|
|
140
|
+
const noteStore = new NoteStore(store);
|
|
141
|
+
const anchorBlockStore = new AnchorBlockStore(store);
|
|
142
|
+
const senderTaggingStore = new SenderTaggingStore(store);
|
|
143
|
+
const senderAddressBookStore = new SenderAddressBookStore(store);
|
|
144
|
+
const recipientTaggingStore = new RecipientTaggingStore(store);
|
|
145
|
+
const capsuleStore = new CapsuleStore(store);
|
|
141
146
|
const keyStore = new KeyStore(store);
|
|
142
147
|
const tipsStore = new L2TipsKVStore(store, 'pxe');
|
|
143
148
|
const synchronizer = new BlockSynchronizer(
|
|
144
149
|
node,
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
150
|
+
store,
|
|
151
|
+
anchorBlockStore,
|
|
152
|
+
noteStore,
|
|
153
|
+
privateEventStore,
|
|
148
154
|
tipsStore,
|
|
149
155
|
config,
|
|
150
156
|
loggerOrSuffix,
|
|
151
157
|
);
|
|
152
158
|
|
|
153
|
-
const
|
|
159
|
+
const jobCoordinator = new JobCoordinator(store);
|
|
160
|
+
jobCoordinator.registerStores([
|
|
161
|
+
capsuleStore,
|
|
162
|
+
senderTaggingStore,
|
|
163
|
+
recipientTaggingStore,
|
|
164
|
+
privateEventStore,
|
|
165
|
+
noteStore,
|
|
166
|
+
]);
|
|
167
|
+
|
|
168
|
+
const debugUtils = new PXEDebugUtils(contractStore, noteStore);
|
|
154
169
|
|
|
155
170
|
const jobQueue = new SerialQueue();
|
|
156
171
|
|
|
@@ -158,20 +173,22 @@ export class PXE {
|
|
|
158
173
|
node,
|
|
159
174
|
synchronizer,
|
|
160
175
|
keyStore,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
176
|
+
contractStore,
|
|
177
|
+
noteStore,
|
|
178
|
+
capsuleStore,
|
|
179
|
+
anchorBlockStore,
|
|
180
|
+
senderTaggingStore,
|
|
181
|
+
senderAddressBookStore,
|
|
182
|
+
recipientTaggingStore,
|
|
183
|
+
addressStore,
|
|
184
|
+
privateEventStore,
|
|
169
185
|
simulator,
|
|
170
186
|
proverEnabled,
|
|
171
187
|
proofCreator,
|
|
172
188
|
protocolContractsProvider,
|
|
173
189
|
log,
|
|
174
190
|
jobQueue,
|
|
191
|
+
jobCoordinator,
|
|
175
192
|
debugUtils,
|
|
176
193
|
);
|
|
177
194
|
|
|
@@ -188,22 +205,20 @@ export class PXE {
|
|
|
188
205
|
// Internal methods
|
|
189
206
|
|
|
190
207
|
#getSimulatorForTx(overrides?: { contracts?: ContractOverrides }) {
|
|
191
|
-
const
|
|
192
|
-
this.contractDataProvider,
|
|
193
|
-
overrides?.contracts,
|
|
194
|
-
);
|
|
208
|
+
const proxyContractStore = ProxiedContractStoreFactory.create(this.contractStore, overrides?.contracts);
|
|
195
209
|
|
|
196
210
|
return new ContractFunctionSimulator(
|
|
197
|
-
|
|
198
|
-
this.
|
|
211
|
+
proxyContractStore,
|
|
212
|
+
this.noteStore,
|
|
199
213
|
this.keyStore,
|
|
200
|
-
this.
|
|
201
|
-
this.node,
|
|
202
|
-
this.
|
|
203
|
-
this.
|
|
204
|
-
this.
|
|
205
|
-
this.
|
|
206
|
-
this.
|
|
214
|
+
this.addressStore,
|
|
215
|
+
BenchmarkedNodeFactory.create(this.node),
|
|
216
|
+
this.anchorBlockStore,
|
|
217
|
+
this.senderTaggingStore,
|
|
218
|
+
this.recipientTaggingStore,
|
|
219
|
+
this.senderAddressBookStore,
|
|
220
|
+
this.capsuleStore,
|
|
221
|
+
this.privateEventStore,
|
|
207
222
|
this.simulator,
|
|
208
223
|
);
|
|
209
224
|
}
|
|
@@ -228,7 +243,7 @@ export class PXE {
|
|
|
228
243
|
*
|
|
229
244
|
* Useful for tasks that cannot run concurrently, such as contract function simulation.
|
|
230
245
|
*/
|
|
231
|
-
#putInJobQueue<T>(fn: () => Promise<T>): Promise<T> {
|
|
246
|
+
#putInJobQueue<T>(fn: (jobId: string) => Promise<T>): Promise<T> {
|
|
232
247
|
// TODO(#12636): relax the conditions under which we forbid concurrency.
|
|
233
248
|
if (this.jobQueue.length() != 0) {
|
|
234
249
|
this.log.warn(
|
|
@@ -236,7 +251,22 @@ export class PXE {
|
|
|
236
251
|
);
|
|
237
252
|
}
|
|
238
253
|
|
|
239
|
-
return this.jobQueue.put(
|
|
254
|
+
return this.jobQueue.put(async () => {
|
|
255
|
+
const jobId = this.jobCoordinator.beginJob();
|
|
256
|
+
this.log.verbose(`Beginning job ${jobId}`);
|
|
257
|
+
|
|
258
|
+
try {
|
|
259
|
+
const result = await fn(jobId);
|
|
260
|
+
this.log.verbose(`Committing job ${jobId}`);
|
|
261
|
+
|
|
262
|
+
await this.jobCoordinator.commitJob(jobId);
|
|
263
|
+
return result;
|
|
264
|
+
} catch (err) {
|
|
265
|
+
this.log.verbose(`Aborting job ${jobId}`);
|
|
266
|
+
await this.jobCoordinator.abortJob(jobId);
|
|
267
|
+
throw err;
|
|
268
|
+
}
|
|
269
|
+
});
|
|
240
270
|
}
|
|
241
271
|
|
|
242
272
|
async #registerProtocolContracts() {
|
|
@@ -244,37 +274,34 @@ export class PXE {
|
|
|
244
274
|
for (const name of protocolContractNames) {
|
|
245
275
|
const { address, contractClass, instance, artifact } =
|
|
246
276
|
await this.protocolContractsProvider.getProtocolContractArtifact(name);
|
|
247
|
-
await this.
|
|
248
|
-
await this.
|
|
277
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
278
|
+
await this.contractStore.addContractInstance(instance);
|
|
249
279
|
registered[name] = address.toString();
|
|
250
280
|
}
|
|
251
281
|
this.log.verbose(`Registered protocol contracts in pxe`, registered);
|
|
252
282
|
}
|
|
253
283
|
|
|
254
|
-
async #isContractClassPubliclyRegistered(id: Fr): Promise<boolean> {
|
|
255
|
-
return !!(await this.node.getContractClass(id));
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
async #isContractPublished(address: AztecAddress): Promise<boolean> {
|
|
259
|
-
return !!(await this.node.getContract(address));
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
async #isContractInitialized(address: AztecAddress): Promise<boolean> {
|
|
263
|
-
const initNullifier = await siloNullifier(address, address.toField());
|
|
264
|
-
return !!(await this.node.getNullifierMembershipWitness('latest', initNullifier));
|
|
265
|
-
}
|
|
266
|
-
|
|
267
284
|
// Executes the entrypoint private function, as well as all nested private
|
|
268
285
|
// functions that might arise.
|
|
269
286
|
async #executePrivate(
|
|
270
287
|
contractFunctionSimulator: ContractFunctionSimulator,
|
|
271
288
|
txRequest: TxExecutionRequest,
|
|
272
|
-
scopes
|
|
289
|
+
scopes: AztecAddress[] | undefined,
|
|
290
|
+
jobId: string,
|
|
273
291
|
): Promise<PrivateExecutionResult> {
|
|
274
292
|
const { origin: contractAddress, functionSelector } = txRequest;
|
|
275
293
|
|
|
276
294
|
try {
|
|
277
|
-
const anchorBlockHeader = await this.
|
|
295
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
296
|
+
|
|
297
|
+
await ensureContractSynced(
|
|
298
|
+
contractAddress,
|
|
299
|
+
functionSelector,
|
|
300
|
+
privateSyncCall => this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
|
|
301
|
+
this.node,
|
|
302
|
+
this.contractStore,
|
|
303
|
+
anchorBlockHeader,
|
|
304
|
+
);
|
|
278
305
|
|
|
279
306
|
const result = await contractFunctionSimulator.run(
|
|
280
307
|
txRequest,
|
|
@@ -286,12 +313,13 @@ export class PXE {
|
|
|
286
313
|
// contract entrypoint
|
|
287
314
|
undefined, // senderForTags
|
|
288
315
|
scopes,
|
|
316
|
+
jobId,
|
|
289
317
|
);
|
|
290
318
|
this.log.debug(`Private simulation completed for ${contractAddress.toString()}:${functionSelector}`);
|
|
291
319
|
return result;
|
|
292
320
|
} catch (err) {
|
|
293
321
|
if (err instanceof SimulationError) {
|
|
294
|
-
await enrichSimulationError(err, this.
|
|
322
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
295
323
|
}
|
|
296
324
|
throw err;
|
|
297
325
|
}
|
|
@@ -304,20 +332,22 @@ export class PXE {
|
|
|
304
332
|
* @param authWitnesses - Authentication witnesses required for the function call.
|
|
305
333
|
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
306
334
|
* accounts if not specified.
|
|
335
|
+
* @param jobId - The job ID for staged writes.
|
|
307
336
|
* @returns The simulation result containing the outputs of the utility function.
|
|
308
337
|
*/
|
|
309
338
|
async #simulateUtility(
|
|
310
339
|
contractFunctionSimulator: ContractFunctionSimulator,
|
|
311
340
|
call: FunctionCall,
|
|
312
|
-
authWitnesses
|
|
313
|
-
scopes
|
|
341
|
+
authWitnesses: AuthWitness[] | undefined,
|
|
342
|
+
scopes: AztecAddress[] | undefined,
|
|
343
|
+
jobId: string,
|
|
314
344
|
) {
|
|
315
345
|
try {
|
|
316
|
-
const anchorBlockHeader = await this.
|
|
317
|
-
return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes);
|
|
346
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
347
|
+
return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes, jobId);
|
|
318
348
|
} catch (err) {
|
|
319
349
|
if (err instanceof SimulationError) {
|
|
320
|
-
await enrichSimulationError(err, this.
|
|
350
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
321
351
|
}
|
|
322
352
|
throw err;
|
|
323
353
|
}
|
|
@@ -341,7 +371,7 @@ export class PXE {
|
|
|
341
371
|
} catch (err) {
|
|
342
372
|
if (err instanceof SimulationError) {
|
|
343
373
|
try {
|
|
344
|
-
await enrichPublicSimulationError(err, this.
|
|
374
|
+
await enrichPublicSimulationError(err, this.contractStore, this.log);
|
|
345
375
|
} catch (enrichErr) {
|
|
346
376
|
this.log.error(`Failed to enrich public simulation error: ${enrichErr}`);
|
|
347
377
|
}
|
|
@@ -367,13 +397,9 @@ export class PXE {
|
|
|
367
397
|
privateExecutionResult: PrivateExecutionResult,
|
|
368
398
|
config: PrivateKernelExecutionProverConfig,
|
|
369
399
|
): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
370
|
-
const
|
|
371
|
-
const
|
|
372
|
-
|
|
373
|
-
this.keyStore,
|
|
374
|
-
this.node,
|
|
375
|
-
simulationAnchorBlock,
|
|
376
|
-
);
|
|
400
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
401
|
+
const anchorBlockHash = await anchorBlockHeader.hash();
|
|
402
|
+
const kernelOracle = new PrivateKernelOracle(this.contractStore, this.keyStore, this.node, anchorBlockHash);
|
|
377
403
|
const kernelTraceProver = new PrivateKernelExecutionProver(kernelOracle, proofCreator, !this.proverEnabled);
|
|
378
404
|
this.log.debug(`Executing kernel trace prover (${JSON.stringify(config)})...`);
|
|
379
405
|
return await kernelTraceProver.proveWithKernels(txExecutionRequest.toTxRequest(), privateExecutionResult, config);
|
|
@@ -382,70 +408,16 @@ export class PXE {
|
|
|
382
408
|
// Public API
|
|
383
409
|
|
|
384
410
|
public getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
|
|
385
|
-
return this.
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
/**
|
|
389
|
-
* Returns the contract class metadata given a contract class id.
|
|
390
|
-
* The metadata consists of its contract class, whether it has been publicly registered, and its artifact.
|
|
391
|
-
* @remark - it queries the node to check whether the contract class with the given id has been publicly registered.
|
|
392
|
-
* @param id - Identifier of the class.
|
|
393
|
-
* @param includeArtifact - Identifier of the class.
|
|
394
|
-
* @returns - It returns the contract class metadata, with the artifact field being optional, and will only be returned if true is passed in
|
|
395
|
-
* for `includeArtifact`
|
|
396
|
-
* TODO(@spalladino): The PXE actually holds artifacts and not classes, what should we return? Also,
|
|
397
|
-
* should the pxe query the node for contract public info, and merge it with its own definitions?
|
|
398
|
-
* TODO(@spalladino): This method is strictly needed to decide whether to publicly register a class or not
|
|
399
|
-
* during a public deployment. We probably want a nicer and more general API for this, but it'll have to
|
|
400
|
-
* do for the time being.
|
|
401
|
-
*/
|
|
402
|
-
public async getContractClassMetadata(
|
|
403
|
-
id: Fr,
|
|
404
|
-
includeArtifact: boolean = false,
|
|
405
|
-
): Promise<{
|
|
406
|
-
contractClass: ContractClassWithId | undefined;
|
|
407
|
-
isContractClassPubliclyRegistered: boolean;
|
|
408
|
-
artifact: ContractArtifact | undefined;
|
|
409
|
-
}> {
|
|
410
|
-
const artifact = await this.contractDataProvider.getContractArtifact(id);
|
|
411
|
-
if (!artifact) {
|
|
412
|
-
this.log.warn(`No artifact found for contract class ${id.toString()} when looking for its metadata`);
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
return {
|
|
416
|
-
contractClass: artifact && (await getContractClassFromArtifact(artifact)),
|
|
417
|
-
isContractClassPubliclyRegistered: await this.#isContractClassPubliclyRegistered(id),
|
|
418
|
-
artifact: includeArtifact ? artifact : undefined,
|
|
419
|
-
};
|
|
411
|
+
return this.contractStore.getContractInstance(address);
|
|
420
412
|
}
|
|
421
413
|
|
|
422
414
|
/**
|
|
423
|
-
* Returns the contract
|
|
424
|
-
*
|
|
425
|
-
*
|
|
426
|
-
* and whether the contract instance with the given address has been publicly deployed.
|
|
427
|
-
* @remark - it queries the node to check whether the contract instance has been initialized / publicly deployed through a node.
|
|
428
|
-
* This query is not dependent on the PXE.
|
|
429
|
-
* @param address - The address that the contract instance resides at.
|
|
430
|
-
* @returns - It returns the contract metadata
|
|
431
|
-
* TODO(@spalladino): Should we return the public keys in plain as well here?
|
|
415
|
+
* Returns the contract artifact for a given contract class id, if it's registered in the PXE.
|
|
416
|
+
* @param id - Identifier of the contract class.
|
|
417
|
+
* @returns The contract artifact if found, undefined otherwise.
|
|
432
418
|
*/
|
|
433
|
-
public async
|
|
434
|
-
|
|
435
|
-
isContractInitialized: boolean;
|
|
436
|
-
isContractPublished: boolean;
|
|
437
|
-
}> {
|
|
438
|
-
let instance;
|
|
439
|
-
try {
|
|
440
|
-
instance = await this.contractDataProvider.getContractInstance(address);
|
|
441
|
-
} catch {
|
|
442
|
-
this.log.warn(`No instance found for contract ${address.toString()} when looking for its metadata`);
|
|
443
|
-
}
|
|
444
|
-
return {
|
|
445
|
-
contractInstance: instance,
|
|
446
|
-
isContractInitialized: await this.#isContractInitialized(address),
|
|
447
|
-
isContractPublished: await this.#isContractPublished(address),
|
|
448
|
-
};
|
|
419
|
+
public async getContractArtifact(id: Fr): Promise<ContractArtifact | undefined> {
|
|
420
|
+
return await this.contractStore.getContractArtifact(id);
|
|
449
421
|
}
|
|
450
422
|
|
|
451
423
|
/**
|
|
@@ -469,8 +441,7 @@ export class PXE {
|
|
|
469
441
|
this.log.debug(`Registered account\n ${accountCompleteAddress.toReadableString()}`);
|
|
470
442
|
}
|
|
471
443
|
|
|
472
|
-
await this.
|
|
473
|
-
await this.noteDataProvider.addScope(accountCompleteAddress.address);
|
|
444
|
+
await this.addressStore.addCompleteAddress(accountCompleteAddress);
|
|
474
445
|
return accountCompleteAddress;
|
|
475
446
|
}
|
|
476
447
|
|
|
@@ -491,7 +462,7 @@ export class PXE {
|
|
|
491
462
|
return sender;
|
|
492
463
|
}
|
|
493
464
|
|
|
494
|
-
const wasAdded = await this.
|
|
465
|
+
const wasAdded = await this.senderAddressBookStore.addSender(sender);
|
|
495
466
|
|
|
496
467
|
if (wasAdded) {
|
|
497
468
|
this.log.info(`Added sender:\n ${sender.toString()}`);
|
|
@@ -507,7 +478,7 @@ export class PXE {
|
|
|
507
478
|
* @returns Senders registered in this PXE.
|
|
508
479
|
*/
|
|
509
480
|
public getSenders(): Promise<AztecAddress[]> {
|
|
510
|
-
return this.
|
|
481
|
+
return this.senderAddressBookStore.getSenders();
|
|
511
482
|
}
|
|
512
483
|
|
|
513
484
|
/**
|
|
@@ -515,7 +486,7 @@ export class PXE {
|
|
|
515
486
|
* @param sender - The address of the sender to remove.
|
|
516
487
|
*/
|
|
517
488
|
public async removeSender(sender: AztecAddress): Promise<void> {
|
|
518
|
-
const wasRemoved = await this.
|
|
489
|
+
const wasRemoved = await this.senderAddressBookStore.removeSender(sender);
|
|
519
490
|
|
|
520
491
|
if (wasRemoved) {
|
|
521
492
|
this.log.info(`Removed sender:\n ${sender.toString()}`);
|
|
@@ -530,7 +501,7 @@ export class PXE {
|
|
|
530
501
|
*/
|
|
531
502
|
public async getRegisteredAccounts(): Promise<CompleteAddress[]> {
|
|
532
503
|
// Get complete addresses of both the recipients and the accounts
|
|
533
|
-
const completeAddresses = await this.
|
|
504
|
+
const completeAddresses = await this.addressStore.getCompleteAddresses();
|
|
534
505
|
// Filter out the addresses not corresponding to accounts
|
|
535
506
|
const accounts = await this.keyStore.getAccounts();
|
|
536
507
|
return completeAddresses.filter(completeAddress =>
|
|
@@ -545,7 +516,7 @@ export class PXE {
|
|
|
545
516
|
*/
|
|
546
517
|
public async registerContractClass(artifact: ContractArtifact): Promise<void> {
|
|
547
518
|
const { id: contractClassId } = await getContractClassFromArtifact(artifact);
|
|
548
|
-
await this.
|
|
519
|
+
await this.contractStore.addContractArtifact(contractClassId, artifact);
|
|
549
520
|
this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
|
|
550
521
|
}
|
|
551
522
|
|
|
@@ -574,7 +545,7 @@ export class PXE {
|
|
|
574
545
|
if (!computedAddress.equals(instance.address)) {
|
|
575
546
|
throw new Error('Added a contract in which the address does not match the contract instance.');
|
|
576
547
|
}
|
|
577
|
-
await this.
|
|
548
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
578
549
|
|
|
579
550
|
const publicFunctionSignatures = artifact.functions
|
|
580
551
|
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
@@ -582,7 +553,7 @@ export class PXE {
|
|
|
582
553
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
583
554
|
} else {
|
|
584
555
|
// Otherwise, make sure there is an artifact already registered for that class id
|
|
585
|
-
artifact = await this.
|
|
556
|
+
artifact = await this.contractStore.getContractArtifact(instance.currentContractClassId);
|
|
586
557
|
if (!artifact) {
|
|
587
558
|
throw new Error(
|
|
588
559
|
`Artifact not found when registering an instance. Contract class: ${instance.currentContractClassId}.`,
|
|
@@ -590,7 +561,7 @@ export class PXE {
|
|
|
590
561
|
}
|
|
591
562
|
}
|
|
592
563
|
|
|
593
|
-
await this.
|
|
564
|
+
await this.contractStore.addContractInstance(instance);
|
|
594
565
|
this.log.info(
|
|
595
566
|
`Added contract ${artifact.name} at ${instance.address.toString()} with class ${instance.currentContractClassId}`,
|
|
596
567
|
);
|
|
@@ -609,27 +580,21 @@ export class PXE {
|
|
|
609
580
|
// We disable concurrently updating contracts to avoid concurrently syncing with the node, or changing a contract's
|
|
610
581
|
// class while we're simulating it.
|
|
611
582
|
return this.#putInJobQueue(async () => {
|
|
612
|
-
const currentInstance = await this.
|
|
583
|
+
const currentInstance = await this.contractStore.getContractInstance(contractAddress);
|
|
613
584
|
if (!currentInstance) {
|
|
614
585
|
throw new Error(`Instance not found when updating a contract. Contract address: ${contractAddress}.`);
|
|
615
586
|
}
|
|
616
587
|
const contractClass = await getContractClassFromArtifact(artifact);
|
|
617
588
|
await this.blockStateSynchronizer.sync();
|
|
618
589
|
|
|
619
|
-
const header = await this.
|
|
590
|
+
const header = await this.anchorBlockStore.getBlockHeader();
|
|
620
591
|
|
|
621
|
-
const currentClassId = await readCurrentClassId(
|
|
622
|
-
contractAddress,
|
|
623
|
-
currentInstance,
|
|
624
|
-
this.node,
|
|
625
|
-
header.globalVariables.blockNumber,
|
|
626
|
-
header.globalVariables.timestamp,
|
|
627
|
-
);
|
|
592
|
+
const currentClassId = await readCurrentClassId(contractAddress, currentInstance, this.node, header);
|
|
628
593
|
if (!contractClass.id.equals(currentClassId)) {
|
|
629
594
|
throw new Error('Could not update contract to a class different from the current one.');
|
|
630
595
|
}
|
|
631
596
|
|
|
632
|
-
await this.
|
|
597
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
633
598
|
|
|
634
599
|
const publicFunctionSignatures = artifact.functions
|
|
635
600
|
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
@@ -637,7 +602,7 @@ export class PXE {
|
|
|
637
602
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
638
603
|
|
|
639
604
|
currentInstance.currentContractClassId = contractClass.id;
|
|
640
|
-
await this.
|
|
605
|
+
await this.contractStore.addContractInstance(currentInstance);
|
|
641
606
|
this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
|
|
642
607
|
});
|
|
643
608
|
}
|
|
@@ -647,7 +612,7 @@ export class PXE {
|
|
|
647
612
|
* @returns An array of contracts addresses registered on this PXE.
|
|
648
613
|
*/
|
|
649
614
|
public getContracts(): Promise<AztecAddress[]> {
|
|
650
|
-
return this.
|
|
615
|
+
return this.contractStore.getContractsAddresses();
|
|
651
616
|
}
|
|
652
617
|
|
|
653
618
|
/**
|
|
@@ -663,14 +628,14 @@ export class PXE {
|
|
|
663
628
|
let privateExecutionResult: PrivateExecutionResult;
|
|
664
629
|
// We disable proving concurrently mostly out of caution, since it accesses some of our stores. Proving is so
|
|
665
630
|
// computationally demanding that it'd be rare for someone to try to do it concurrently regardless.
|
|
666
|
-
return this.#putInJobQueue(async
|
|
631
|
+
return this.#putInJobQueue(async jobId => {
|
|
667
632
|
const totalTimer = new Timer();
|
|
668
633
|
try {
|
|
669
634
|
const syncTimer = new Timer();
|
|
670
635
|
await this.blockStateSynchronizer.sync();
|
|
671
636
|
const syncTime = syncTimer.ms();
|
|
672
637
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
673
|
-
privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
|
|
638
|
+
privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, undefined, jobId);
|
|
674
639
|
|
|
675
640
|
const {
|
|
676
641
|
publicInputs,
|
|
@@ -717,7 +682,7 @@ export class PXE {
|
|
|
717
682
|
// TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
|
|
718
683
|
const txHash = (await txProvingResult.toTx()).txHash;
|
|
719
684
|
|
|
720
|
-
await this.
|
|
685
|
+
await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash, jobId);
|
|
721
686
|
this.log.debug(`Stored used pre-tags as sender for the tx`, {
|
|
722
687
|
preTagsUsedInTheTx,
|
|
723
688
|
});
|
|
@@ -747,7 +712,7 @@ export class PXE {
|
|
|
747
712
|
skipProofGeneration: boolean = true,
|
|
748
713
|
): Promise<TxProfileResult> {
|
|
749
714
|
// We disable concurrent profiles for consistency with simulateTx.
|
|
750
|
-
return this.#putInJobQueue(async
|
|
715
|
+
return this.#putInJobQueue(async jobId => {
|
|
751
716
|
const totalTimer = new Timer();
|
|
752
717
|
try {
|
|
753
718
|
const txInfo = {
|
|
@@ -767,7 +732,12 @@ export class PXE {
|
|
|
767
732
|
const syncTime = syncTimer.ms();
|
|
768
733
|
|
|
769
734
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
770
|
-
const privateExecutionResult = await this.#executePrivate(
|
|
735
|
+
const privateExecutionResult = await this.#executePrivate(
|
|
736
|
+
contractFunctionSimulator,
|
|
737
|
+
txRequest,
|
|
738
|
+
undefined,
|
|
739
|
+
jobId,
|
|
740
|
+
);
|
|
771
741
|
|
|
772
742
|
const { executionSteps, timings: { proving } = {} } = await this.#prove(
|
|
773
743
|
txRequest,
|
|
@@ -847,7 +817,7 @@ export class PXE {
|
|
|
847
817
|
// We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
|
|
848
818
|
// to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
|
|
849
819
|
// delete the same read value, or reading values that another simulation is currently modifying).
|
|
850
|
-
return this.#putInJobQueue(async
|
|
820
|
+
return this.#putInJobQueue(async jobId => {
|
|
851
821
|
try {
|
|
852
822
|
const totalTimer = new Timer();
|
|
853
823
|
const txInfo = {
|
|
@@ -873,21 +843,15 @@ export class PXE {
|
|
|
873
843
|
const skipKernels = overrides?.contracts !== undefined && Object.keys(overrides.contracts ?? {}).length > 0;
|
|
874
844
|
|
|
875
845
|
// Execution of private functions only; no proving, and no kernel logic.
|
|
876
|
-
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes);
|
|
846
|
+
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes, jobId);
|
|
877
847
|
|
|
878
848
|
let publicInputs: PrivateKernelTailCircuitPublicInputs | undefined;
|
|
879
849
|
let executionSteps: PrivateExecutionStep[] = [];
|
|
880
850
|
|
|
881
851
|
if (skipKernels) {
|
|
882
|
-
// According to the protocol rules, the nonce generator for the note hashes
|
|
883
|
-
// can either be the first nullifier in the tx or the protocol nullifier if there are none.
|
|
884
|
-
const nonceGenerator = privateExecutionResult.firstNullifier.equals(Fr.ZERO)
|
|
885
|
-
? await computeProtocolNullifier(await txRequest.toTxRequest().hash())
|
|
886
|
-
: privateExecutionResult.firstNullifier;
|
|
887
852
|
({ publicInputs, executionSteps } = await generateSimulatedProvingResult(
|
|
888
853
|
privateExecutionResult,
|
|
889
|
-
|
|
890
|
-
this.contractDataProvider,
|
|
854
|
+
this.contractStore,
|
|
891
855
|
));
|
|
892
856
|
} else {
|
|
893
857
|
// Kernel logic, plus proving of all private functions and kernels.
|
|
@@ -988,7 +952,7 @@ export class PXE {
|
|
|
988
952
|
// We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
|
|
989
953
|
// to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
|
|
990
954
|
// delete the same read value, or reading values that another simulation is currently modifying).
|
|
991
|
-
return this.#putInJobQueue(async
|
|
955
|
+
return this.#putInJobQueue(async jobId => {
|
|
992
956
|
try {
|
|
993
957
|
const totalTimer = new Timer();
|
|
994
958
|
const syncTimer = new Timer();
|
|
@@ -996,7 +960,24 @@ export class PXE {
|
|
|
996
960
|
const syncTime = syncTimer.ms();
|
|
997
961
|
const functionTimer = new Timer();
|
|
998
962
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
999
|
-
|
|
963
|
+
|
|
964
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
965
|
+
await ensureContractSynced(
|
|
966
|
+
call.to,
|
|
967
|
+
call.selector,
|
|
968
|
+
privateSyncCall => this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
|
|
969
|
+
this.node,
|
|
970
|
+
this.contractStore,
|
|
971
|
+
anchorBlockHeader,
|
|
972
|
+
);
|
|
973
|
+
|
|
974
|
+
const executionResult = await this.#simulateUtility(
|
|
975
|
+
contractFunctionSimulator,
|
|
976
|
+
call,
|
|
977
|
+
authwits ?? [],
|
|
978
|
+
scopes,
|
|
979
|
+
jobId,
|
|
980
|
+
);
|
|
1000
981
|
const functionTime = functionTimer.ms();
|
|
1001
982
|
|
|
1002
983
|
const totalTime = totalTimer.ms();
|
|
@@ -1041,17 +1022,35 @@ export class PXE {
|
|
|
1041
1022
|
eventSelector: EventSelector,
|
|
1042
1023
|
filter: PrivateEventFilter,
|
|
1043
1024
|
): Promise<PackedPrivateEvent[]> {
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
await this
|
|
1025
|
+
let anchorBlockNumber: BlockNumber;
|
|
1026
|
+
|
|
1027
|
+
await this.#putInJobQueue(async jobId => {
|
|
1028
|
+
await this.blockStateSynchronizer.sync();
|
|
1029
|
+
|
|
1030
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
1031
|
+
anchorBlockNumber = anchorBlockHeader.getBlockNumber();
|
|
1032
|
+
|
|
1033
|
+
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
1034
|
+
|
|
1035
|
+
await ensureContractSynced(
|
|
1036
|
+
filter.contractAddress,
|
|
1037
|
+
null,
|
|
1038
|
+
async privateSyncCall =>
|
|
1039
|
+
await this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId),
|
|
1040
|
+
this.node,
|
|
1041
|
+
this.contractStore,
|
|
1042
|
+
anchorBlockHeader,
|
|
1043
|
+
);
|
|
1044
|
+
});
|
|
1047
1045
|
|
|
1048
|
-
|
|
1046
|
+
// anchorBlockNumber is set during the job and fixed to whatever it is after a block sync
|
|
1047
|
+
const sanitizedFilter = new PrivateEventFilterValidator(anchorBlockNumber!).validate(filter);
|
|
1049
1048
|
|
|
1050
1049
|
this.log.debug(
|
|
1051
1050
|
`Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`,
|
|
1052
1051
|
);
|
|
1053
1052
|
|
|
1054
|
-
return this.
|
|
1053
|
+
return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
|
|
1055
1054
|
}
|
|
1056
1055
|
|
|
1057
1056
|
/**
|