@aztec/pxe 4.0.0-nightly.20250907 → 4.0.0-nightly.20260107
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dest/bin/check_oracle_version.d.ts +1 -1
- package/dest/bin/check_oracle_version.js +110 -10
- package/dest/block_synchronizer/block_synchronizer.d.ts +39 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/{synchronizer/synchronizer.js → block_synchronizer/block_synchronizer.js} +23 -23
- package/dest/block_synchronizer/index.d.ts +2 -0
- package/dest/block_synchronizer/index.d.ts.map +1 -0
- package/dest/block_synchronizer/index.js +1 -0
- package/dest/config/index.d.ts +9 -17
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +10 -16
- package/dest/config/package_info.d.ts +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +44 -15
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +142 -57
- package/dest/contract_function_simulator/execution_note_cache.d.ts +11 -9
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +28 -17
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +16 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +26 -0
- 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 +4 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +2 -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 +8 -4
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +6 -3
- 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 +22 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.js +33 -0
- package/dest/contract_function_simulator/oracle/index.d.ts +2 -2
- package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/index.js +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +103 -0
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +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 +17 -15
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +101 -81
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +11 -12
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +15 -24
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +51 -25
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +103 -27
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +65 -36
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +171 -69
- 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 +4 -3
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +2 -2
- package/dest/entrypoints/client/bundle/utils.d.ts +9 -9
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +21 -12
- package/dest/entrypoints/client/lazy/index.d.ts +4 -3
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts +8 -8
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +20 -11
- package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +5 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +3 -2
- package/dest/entrypoints/server/utils.d.ts +5 -24
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +17 -45
- package/dest/error_enriching.d.ts +11 -0
- package/dest/error_enriching.d.ts.map +1 -0
- package/dest/{pxe_service/error_enriching.js → error_enriching.js} +9 -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/compute_tx_include_by_timestamp.js +6 -6
- 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 +9 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +38 -32
- 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 +10 -9
- 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 +232 -0
- package/dest/pxe.d.ts.map +1 -0
- package/dest/{pxe_service/pxe_service.js → pxe.js} +299 -324
- 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 -4
- 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 -12
- 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 -10
- 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} +10 -18
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +46 -18
- 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 -9
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +7 -8
- 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_store/note_store.d.ts +84 -0
- 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} +144 -82
- package/dest/storage/private_event_store/private_event_store.d.ts +56 -0
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
- package/dest/storage/private_event_store/private_event_store.js +157 -0
- package/dest/storage/tagging_store/index.d.ts +4 -0
- package/dest/storage/tagging_store/index.d.ts.map +1 -0
- package/dest/storage/tagging_store/index.js +3 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +21 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/recipient_tagging_store.js +42 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_address_book_store.js +30 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +67 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_tagging_store.js +196 -0
- package/dest/tagging/index.d.ts +16 -0
- package/dest/tagging/index.d.ts.map +1 -0
- package/dest/tagging/index.js +23 -0
- 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 +22 -24
- package/src/bin/check_oracle_version.ts +134 -10
- package/src/{synchronizer/synchronizer.ts → block_synchronizer/block_synchronizer.ts} +22 -23
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +18 -32
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +233 -75
- package/src/contract_function_simulator/execution_note_cache.ts +33 -17
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +32 -0
- package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
- package/src/contract_function_simulator/index.ts +3 -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 +10 -5
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +14 -2
- package/src/contract_function_simulator/noir-structs/utility_context.ts +42 -0
- package/src/contract_function_simulator/oracle/index.ts +1 -1
- package/src/contract_function_simulator/oracle/interfaces.ts +175 -0
- 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 +135 -80
- package/src/contract_function_simulator/oracle/private_execution.ts +22 -28
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +200 -56
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +260 -109
- 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 +3 -2
- package/src/entrypoints/client/bundle/utils.ts +21 -23
- package/src/entrypoints/client/lazy/index.ts +3 -2
- package/src/entrypoints/client/lazy/utils.ts +20 -23
- package/src/entrypoints/pxe_creation_options.ts +4 -1
- package/src/entrypoints/server/index.ts +4 -2
- package/src/entrypoints/server/utils.ts +20 -68
- package/src/{pxe_service/error_enriching.ts → error_enriching.ts} +11 -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/hints/compute_tx_include_by_timestamp.ts +6 -6
- package/src/private_kernel/private_kernel_execution_prover.ts +51 -43
- 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_service/pxe_service.ts → pxe.ts} +349 -410
- package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +1 -7
- 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 -17
- 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 -12
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +67 -28
- 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 -8
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/{note_data_provider/note_data_provider.ts → note_store/note_store.ts} +173 -111
- package/src/storage/private_event_store/private_event_store.ts +213 -0
- package/src/storage/tagging_store/index.ts +3 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +53 -0
- package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
- package/src/storage/tagging_store/sender_tagging_store.ts +244 -0
- package/src/tagging/index.ts +28 -0
- 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/bin/index.d.ts +0 -3
- package/dest/bin/index.d.ts.map +0 -1
- package/dest/bin/index.js +0 -48
- package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -285
- 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/oracle/typed_oracle.d.ts +0 -87
- package/dest/contract_function_simulator/oracle/typed_oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/typed_oracle.js +0 -146
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -158
- 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/contract_function_simulator/tagging_utils.d.ts +0 -17
- package/dest/contract_function_simulator/tagging_utils.d.ts.map +0 -1
- package/dest/contract_function_simulator/tagging_utils.js +0 -23
- package/dest/pxe_service/error_enriching.d.ts +0 -11
- package/dest/pxe_service/error_enriching.d.ts.map +0 -1
- package/dest/pxe_service/index.d.ts +0 -3
- package/dest/pxe_service/index.d.ts.map +0 -1
- package/dest/pxe_service/index.js +0 -2
- package/dest/pxe_service/pxe_service.d.ts +0 -100
- package/dest/pxe_service/pxe_service.d.ts.map +0 -1
- package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -13
- package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.d.ts +0 -2
- package/dest/storage/address_data_provider/index.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.js +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -27
- 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/data_provider.d.ts +0 -4
- package/dest/storage/data_provider.d.ts.map +0 -1
- package/dest/storage/data_provider.js +0 -1
- package/dest/storage/note_data_provider/index.d.ts +0 -3
- package/dest/storage/note_data_provider/index.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.js +0 -2
- package/dest/storage/note_data_provider/note_dao.d.ts +0 -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 +0 -20
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -37
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -96
- package/dest/storage/sync_data_provider/index.d.ts +0 -2
- package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/index.js +0 -1
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -12
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.d.ts +0 -2
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -18
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -82
- 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/test/pxe_test_suite.d.ts +0 -3
- package/dest/test/pxe_test_suite.d.ts.map +0 -1
- package/dest/test/pxe_test_suite.js +0 -97
- package/src/bin/index.ts +0 -62
- package/src/contract_function_simulator/execution_data_provider.ts +0 -361
- package/src/contract_function_simulator/oracle/typed_oracle.ts +0 -289
- package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1020
- package/src/contract_function_simulator/tagging_utils.ts +0 -32
- package/src/pxe_service/index.ts +0 -2
- 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/data_provider.ts +0 -3
- package/src/storage/note_data_provider/index.ts +0 -2
- package/src/storage/note_data_provider/note_dao.ts +0 -154
- package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -134
- 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 -123
- package/src/synchronizer/index.ts +0 -1
- package/src/test/pxe_test_suite.ts +0 -113
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { vkAsFieldsMegaHonk } from '@aztec/foundation/crypto';
|
|
2
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { vkAsFieldsMegaHonk } from '@aztec/foundation/crypto/keys';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { pushTestData } from '@aztec/foundation/testing';
|
|
5
5
|
import { Timer } from '@aztec/foundation/timer';
|
|
6
6
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
7
|
-
import {
|
|
7
|
+
import { ProtocolContractsList } from '@aztec/protocol-contracts';
|
|
8
8
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
|
-
import { computeContractAddressFromInstance } from '@aztec/stdlib/contract';
|
|
10
9
|
import { HidingKernelToPublicPrivateInputs, HidingKernelToRollupPrivateInputs, PaddedSideEffectAmounts, PrivateCallData, PrivateKernelCircuitPublicInputs, PrivateKernelData, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelTailCircuitPrivateInputs, PrivateVerificationKeyHints } from '@aztec/stdlib/kernel';
|
|
11
|
-
import {
|
|
10
|
+
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
12
11
|
import { collectNoteHashLeafIndexMap, collectNoteHashNullifierCounterMap, getFinalMinRevertibleSideEffectCounter } from '@aztec/stdlib/tx';
|
|
13
12
|
import { VerificationKeyAsFields, VerificationKeyData, VkData } from '@aztec/stdlib/vks';
|
|
14
13
|
import { PrivateKernelResetPrivateInputsBuilder } from './hints/build_private_kernel_reset_private_inputs.js';
|
|
@@ -21,7 +20,7 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
21
20
|
/**
|
|
22
21
|
* The PrivateKernelExecutionProver class is responsible for taking a transaction request and sequencing the
|
|
23
22
|
* the execution of the private functions within, sequenced with private kernel "glue" to check protocol rules.
|
|
24
|
-
* The result can be a
|
|
23
|
+
* The result can be a chonk proof of the private transaction portion, or just a simulation that can e.g.
|
|
25
24
|
* inform state tree updates.
|
|
26
25
|
*/ export class PrivateKernelExecutionProver {
|
|
27
26
|
oracle;
|
|
@@ -63,10 +62,11 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
63
62
|
const executionSteps = [];
|
|
64
63
|
const noteHashLeafIndexMap = collectNoteHashLeafIndexMap(executionResult);
|
|
65
64
|
const noteHashNullifierCounterMap = collectNoteHashNullifierCounterMap(executionResult);
|
|
66
|
-
const
|
|
65
|
+
const minRevertibleSideEffectCounter = getFinalMinRevertibleSideEffectCounter(executionResult);
|
|
66
|
+
const splitCounter = isPrivateOnlyTx ? 0 : minRevertibleSideEffectCounter;
|
|
67
67
|
while(executionStack.length){
|
|
68
68
|
if (!firstIteration) {
|
|
69
|
-
let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, executionStack, noteHashNullifierCounterMap,
|
|
69
|
+
let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, executionStack, noteHashNullifierCounterMap, splitCounter);
|
|
70
70
|
while(resetBuilder.needsReset()){
|
|
71
71
|
const witgenTimer = new Timer();
|
|
72
72
|
const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
|
|
@@ -80,7 +80,7 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
80
80
|
witgen: witgenTimer.ms()
|
|
81
81
|
}
|
|
82
82
|
});
|
|
83
|
-
resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, executionStack, noteHashNullifierCounterMap,
|
|
83
|
+
resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, executionStack, noteHashNullifierCounterMap, splitCounter);
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
const currentExecution = executionStack.pop();
|
|
@@ -101,7 +101,7 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
101
101
|
const privateCallData = await this.createPrivateCallData(currentExecution);
|
|
102
102
|
if (firstIteration) {
|
|
103
103
|
const witgenTimer = new Timer();
|
|
104
|
-
const proofInput = new PrivateKernelInitCircuitPrivateInputs(txRequest, getVKTreeRoot(),
|
|
104
|
+
const proofInput = new PrivateKernelInitCircuitPrivateInputs(txRequest, getVKTreeRoot(), ProtocolContractsList, privateCallData, isPrivateOnlyTx, executionResult.firstNullifier, minRevertibleSideEffectCounter);
|
|
105
105
|
this.log.debug(`Calling private kernel init with isPrivateOnly ${isPrivateOnlyTx} and firstNullifierHint ${proofInput.firstNullifierHint}`);
|
|
106
106
|
pushTestData('private-kernel-inputs-init', proofInput);
|
|
107
107
|
output = generateWitnesses ? await this.proofCreator.generateInitOutput(proofInput) : await this.proofCreator.simulateInit(proofInput);
|
|
@@ -134,7 +134,7 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
134
134
|
firstIteration = false;
|
|
135
135
|
}
|
|
136
136
|
// Reset.
|
|
137
|
-
let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, [], noteHashNullifierCounterMap,
|
|
137
|
+
let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, [], noteHashNullifierCounterMap, splitCounter);
|
|
138
138
|
while(resetBuilder.needsReset()){
|
|
139
139
|
const witgenTimer = new Timer();
|
|
140
140
|
const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
|
|
@@ -148,7 +148,7 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
148
148
|
witgen: witgenTimer.ms()
|
|
149
149
|
}
|
|
150
150
|
});
|
|
151
|
-
resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, [], noteHashNullifierCounterMap,
|
|
151
|
+
resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, [], noteHashNullifierCounterMap, splitCounter);
|
|
152
152
|
}
|
|
153
153
|
if (output.publicInputs.feePayer.isZero() && skipFeeEnforcement) {
|
|
154
154
|
if (!skipProofGeneration) {
|
|
@@ -165,12 +165,11 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
165
165
|
// Use the aggregated includeByTimestamp set throughout the tx execution.
|
|
166
166
|
// TODO: Call `computeTxIncludeByTimestamp` to round the value down and reduce precision, improving privacy.
|
|
167
167
|
const includeByTimestampUpperBound = previousKernelData.publicInputs.includeByTimestamp;
|
|
168
|
-
const
|
|
169
|
-
if (includeByTimestampUpperBound <=
|
|
170
|
-
throw new Error(`Include-by timestamp must be greater than the
|
|
168
|
+
const anchorBlockTimestamp = previousKernelData.publicInputs.constants.anchorBlockHeader.globalVariables.timestamp;
|
|
169
|
+
if (includeByTimestampUpperBound <= anchorBlockTimestamp) {
|
|
170
|
+
throw new Error(`Include-by timestamp must be greater than the anchor block timestamp. Anchor block timestamp: ${anchorBlockTimestamp}. Include-by timestamp: ${includeByTimestampUpperBound}.`);
|
|
171
171
|
}
|
|
172
172
|
const privateInputs = new PrivateKernelTailCircuitPrivateInputs(previousKernelData, paddedSideEffectAmounts, includeByTimestampUpperBound);
|
|
173
|
-
pushTestData('private-kernel-inputs-ordering', privateInputs);
|
|
174
173
|
const witgenTimer = new Timer();
|
|
175
174
|
const tailOutput = generateWitnesses ? await this.proofCreator.generateTailOutput(privateInputs) : await this.proofCreator.simulateTail(privateInputs);
|
|
176
175
|
executionSteps.push({
|
|
@@ -182,8 +181,8 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
182
181
|
witgen: witgenTimer.ms()
|
|
183
182
|
}
|
|
184
183
|
});
|
|
185
|
-
// Hiding
|
|
186
|
-
// For simulation, we can end with the tail, since the
|
|
184
|
+
// Hiding kernel is only executed if we are generating witnesses.
|
|
185
|
+
// For simulation, we can end with the tail, since the Hiding kernel will simply return the same tail output.
|
|
187
186
|
if (generateWitnesses) {
|
|
188
187
|
const previousKernelVkData = await this.getVkData(tailOutput.verificationKey);
|
|
189
188
|
const witgenTimer = new Timer();
|
|
@@ -223,25 +222,42 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
223
222
|
if (generateWitnesses) {
|
|
224
223
|
this.log.info(`Private kernel witness generation took ${timer.ms()}ms`);
|
|
225
224
|
}
|
|
226
|
-
let
|
|
225
|
+
let chonkProof;
|
|
227
226
|
// TODO(#7368) how do we 'bincode' encode these inputs?
|
|
228
227
|
let provingTime;
|
|
229
228
|
if (!skipProofGeneration) {
|
|
230
229
|
const provingTimer = new Timer();
|
|
231
|
-
|
|
230
|
+
const proofWithPublicInputs = await this.proofCreator.createChonkProof(executionSteps);
|
|
232
231
|
provingTime = provingTimer.ms();
|
|
232
|
+
this.ensurePublicInputsMatch(proofWithPublicInputs, tailOutput.publicInputs);
|
|
233
|
+
chonkProof = proofWithPublicInputs.removePublicInputs();
|
|
233
234
|
} else {
|
|
234
|
-
|
|
235
|
+
chonkProof = ChonkProof.random();
|
|
235
236
|
}
|
|
236
237
|
return {
|
|
237
238
|
publicInputs: tailOutput.publicInputs,
|
|
238
239
|
executionSteps,
|
|
239
|
-
|
|
240
|
+
chonkProof,
|
|
240
241
|
timings: provingTime ? {
|
|
241
242
|
proving: provingTime
|
|
242
243
|
} : undefined
|
|
243
244
|
};
|
|
244
245
|
}
|
|
246
|
+
/**
|
|
247
|
+
* Checks that the public inputs of the chonk proof match the public inputs of the tail circuit.
|
|
248
|
+
* This can only mismatch if there is a circuit / noir / bb bug.
|
|
249
|
+
* @param chonkProof - The chonk proof with public inputs.
|
|
250
|
+
* @param tailPublicInputs - The public inputs resulting from witness generation of the tail circuit.
|
|
251
|
+
*/ ensurePublicInputsMatch(chonkProof, tailPublicInputs) {
|
|
252
|
+
const serializedChonkProofPublicInputs = chonkProof.getPublicInputs();
|
|
253
|
+
const serializedTailPublicInputs = tailPublicInputs.publicInputs().toFields();
|
|
254
|
+
if (serializedChonkProofPublicInputs.length !== serializedTailPublicInputs.length) {
|
|
255
|
+
throw new Error(`Public inputs length mismatch: ${serializedChonkProofPublicInputs.length} !== ${serializedTailPublicInputs.length}`);
|
|
256
|
+
}
|
|
257
|
+
if (!serializedChonkProofPublicInputs.every((input, index)=>input.equals(serializedTailPublicInputs[index]))) {
|
|
258
|
+
throw new Error(`Public inputs mismatch between kernel and chonk proof`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
245
261
|
async getVkData(verificationKey) {
|
|
246
262
|
const previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(verificationKey.keyAsFields);
|
|
247
263
|
return new VkData(verificationKey, Number(previousVkMembershipWitness.leafIndex), previousVkMembershipWitness.siblingPath);
|
|
@@ -253,14 +269,6 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
253
269
|
const { currentContractClassId, publicKeys, saltedInitializationHash } = await this.oracle.getContractAddressPreimage(contractAddress);
|
|
254
270
|
const functionLeafMembershipWitness = await this.oracle.getFunctionMembershipWitness(currentContractClassId, functionSelector);
|
|
255
271
|
const { artifactHash: contractClassArtifactHash, publicBytecodeCommitment: contractClassPublicBytecodeCommitment } = await this.oracle.getContractClassIdPreimage(currentContractClassId);
|
|
256
|
-
// This will be the address computed in the kernel by the executed class. We need to provide non membership of it in the protocol contract tree.
|
|
257
|
-
// This would only be equal to contractAddress if the currentClassId is equal to the original class id (no update happened).
|
|
258
|
-
const computedAddress = await computeContractAddressFromInstance({
|
|
259
|
-
originalContractClassId: currentContractClassId,
|
|
260
|
-
saltedInitializationHash,
|
|
261
|
-
publicKeys
|
|
262
|
-
});
|
|
263
|
-
const { lowLeaf: protocolContractLeaf, witness: protocolContractMembershipWitness } = await getProtocolContractLeafAndMembershipWitness(contractAddress, computedAddress);
|
|
264
272
|
const updatedClassIdHints = await this.oracle.getUpdatedClassIdHints(contractAddress);
|
|
265
273
|
return PrivateCallData.from({
|
|
266
274
|
publicInputs,
|
|
@@ -271,8 +279,6 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
271
279
|
contractClassPublicBytecodeCommitment,
|
|
272
280
|
saltedInitializationHash,
|
|
273
281
|
functionLeafMembershipWitness,
|
|
274
|
-
protocolContractMembershipWitness,
|
|
275
|
-
protocolContractLeaf,
|
|
276
282
|
updatedClassIdHints
|
|
277
283
|
})
|
|
278
284
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FUNCTION_TREE_HEIGHT, NOTE_HASH_TREE_HEIGHT, VK_TREE_HEIGHT } from '@aztec/constants';
|
|
2
|
-
import type { Fr
|
|
2
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import type { GrumpkinScalar, Point } from '@aztec/foundation/curves/grumpkin';
|
|
3
4
|
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
4
5
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
5
6
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
@@ -59,4 +60,4 @@ export interface PrivateKernelOracle {
|
|
|
59
60
|
* along with an associated DelayedPublicMutable containing the class ID to update. */
|
|
60
61
|
getUpdatedClassIdHints(contractAddress: AztecAddress): Promise<UpdatedClassIdHints>;
|
|
61
62
|
}
|
|
62
|
-
//# sourceMappingURL=
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9rZXJuZWxfb3JhY2xlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJpdmF0ZV9rZXJuZWwvcHJpdmF0ZV9rZXJuZWxfb3JhY2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRixPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFakU7OztHQUdHO0FBQ0gsTUFBTSxXQUFXLG1CQUFtQjtJQUNsQyw4RkFBOEY7SUFDOUYsMEJBQTBCLENBQUMsT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUM7UUFDekQsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO1FBQzdCLFVBQVUsRUFBRSxVQUFVLENBQUM7UUFDdkIsc0JBQXNCLEVBQUUsRUFBRSxDQUFDO1FBQzNCLHVCQUF1QixFQUFFLEVBQUUsQ0FBQztLQUM3QixDQUFDLENBQUM7SUFFSCxrRkFBa0Y7SUFDbEYsMEJBQTBCLENBQ3hCLGVBQWUsRUFBRSxFQUFFLEdBQ2xCLE9BQU8sQ0FBQztRQUFFLFlBQVksRUFBRSxFQUFFLENBQUM7UUFBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7UUFBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUE7S0FBRSxDQUFDLENBQUM7SUFFekY7O09BRUc7SUFDSCw0QkFBNEIsQ0FDMUIsZUFBZSxFQUFFLEVBQUUsRUFDbkIsUUFBUSxFQUFFLGdCQUFnQixHQUN6QixPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFFM0Q7OztPQUdHO0lBQ0gsc0JBQXNCLENBQUMsRUFBRSxFQUFFLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFdkc7O09BRUcsQ0FBQyw0QkFBNEIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLHFCQUFxQixDQUFDLENBQUMsQ0FBQztJQUU5Rzs7T0FFRztJQUNILDZCQUE2QixDQUFDLFNBQVMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQzlGOztPQUVHO0lBQ0gsbUJBQW1CLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRW5DOzs7Ozs7T0FNRztJQUNILGtCQUFrQixDQUFDLGVBQWUsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRXBFLDJFQUEyRTtJQUMzRSxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBRTdHOzBGQUNzRjtJQUN0RixzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0NBQ3JGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private_kernel_oracle.d.ts","sourceRoot":"","sources":["../../src/private_kernel/private_kernel_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"private_kernel_oracle.d.ts","sourceRoot":"","sources":["../../src/private_kernel/private_kernel_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,8FAA8F;IAC9F,0BAA0B,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QACzD,wBAAwB,EAAE,EAAE,CAAC;QAC7B,UAAU,EAAE,UAAU,CAAC;QACvB,sBAAsB,EAAE,EAAE,CAAC;QAC3B,uBAAuB,EAAE,EAAE,CAAC;KAC7B,CAAC,CAAC;IAEH,kFAAkF;IAClF,0BAA0B,CACxB,eAAe,EAAE,EAAE,GAClB,OAAO,CAAC;QAAE,YAAY,EAAE,EAAE,CAAC;QAAC,wBAAwB,EAAE,EAAE,CAAC;QAAC,oBAAoB,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEzF;;OAEG;IACH,4BAA4B,CAC1B,eAAe,EAAE,EAAE,EACnB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;IAE3D;;;OAGG;IACH,sBAAsB,CAAC,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IAEvG;;OAEG,CAAC,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;IAE9G;;OAEG;IACH,6BAA6B,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;IAC9F;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IAEnC;;;;;;OAMG;IACH,kBAAkB,CAAC,eAAe,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEpE,2EAA2E;IAC3E,oBAAoB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE7G;0FACsF;IACtF,sBAAsB,CAAC,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrF"}
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import { NOTE_HASH_TREE_HEIGHT } from '@aztec/constants';
|
|
2
|
-
import type { Fr
|
|
2
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import type { GrumpkinScalar, Point } from '@aztec/foundation/curves/grumpkin';
|
|
3
4
|
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
4
5
|
import type { KeyStore } from '@aztec/key-store';
|
|
5
6
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
6
7
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
-
import type {
|
|
8
|
+
import type { BlockParameter } from '@aztec/stdlib/block';
|
|
8
9
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
9
10
|
import { UpdatedClassIdHints } from '@aztec/stdlib/kernel';
|
|
10
11
|
import type { NullifierMembershipWitness } from '@aztec/stdlib/trees';
|
|
11
12
|
import type { VerificationKeyAsFields } from '@aztec/stdlib/vks';
|
|
12
|
-
import type {
|
|
13
|
+
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
13
14
|
import type { PrivateKernelOracle } from './private_kernel_oracle.js';
|
|
14
15
|
/**
|
|
15
16
|
* A data oracle that provides information needed for simulating a transaction.
|
|
16
17
|
*/
|
|
17
18
|
export declare class PrivateKernelOracleImpl implements PrivateKernelOracle {
|
|
18
|
-
private
|
|
19
|
+
private contractStore;
|
|
19
20
|
private keyStore;
|
|
20
21
|
private node;
|
|
21
22
|
private blockNumber;
|
|
22
23
|
private log;
|
|
23
|
-
constructor(
|
|
24
|
+
constructor(contractStore: ContractStore, keyStore: KeyStore, node: AztecNode, blockNumber?: BlockParameter, log?: import("@aztec/foundation/log").Logger);
|
|
24
25
|
getContractAddressPreimage(address: AztecAddress): Promise<{
|
|
25
26
|
version: 1;
|
|
26
27
|
salt: Fr;
|
|
@@ -28,13 +29,13 @@ export declare class PrivateKernelOracleImpl implements PrivateKernelOracle {
|
|
|
28
29
|
currentContractClassId: Fr;
|
|
29
30
|
originalContractClassId: Fr;
|
|
30
31
|
initializationHash: Fr;
|
|
31
|
-
publicKeys: import("
|
|
32
|
+
publicKeys: import("../../../stdlib/dest/keys/public_keys.js").PublicKeys;
|
|
32
33
|
address: AztecAddress;
|
|
33
34
|
saltedInitializationHash: Fr;
|
|
34
35
|
}>;
|
|
35
36
|
getContractClassIdPreimage(contractClassId: Fr): Promise<import("@aztec/stdlib/contract").ContractClassIdPreimage>;
|
|
36
|
-
getFunctionMembershipWitness(contractClassId: Fr, selector: FunctionSelector): Promise<MembershipWitness<
|
|
37
|
-
getVkMembershipWitness(vk: VerificationKeyAsFields): Promise<MembershipWitness<
|
|
37
|
+
getFunctionMembershipWitness(contractClassId: Fr, selector: FunctionSelector): Promise<MembershipWitness<7>>;
|
|
38
|
+
getVkMembershipWitness(vk: VerificationKeyAsFields): Promise<MembershipWitness<7>>;
|
|
38
39
|
getNoteHashMembershipWitness(leafIndex: bigint): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT>>;
|
|
39
40
|
getNullifierMembershipWitness(nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
40
41
|
getNoteHashTreeRoot(): Promise<Fr>;
|
|
@@ -42,4 +43,4 @@ export declare class PrivateKernelOracleImpl implements PrivateKernelOracle {
|
|
|
42
43
|
getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string>;
|
|
43
44
|
getUpdatedClassIdHints(contractAddress: AztecAddress): Promise<UpdatedClassIdHints>;
|
|
44
45
|
}
|
|
45
|
-
//# sourceMappingURL=
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9rZXJuZWxfb3JhY2xlX2ltcGwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcml2YXRlX2tlcm5lbC9wcml2YXRlX2tlcm5lbF9vcmFjbGVfaW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQTJDLE1BQU0sa0JBQWtCLENBQUM7QUFDbEcsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJMUQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpFLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFLdEU7O0dBRUc7QUFDSCxxQkFBYSx1QkFBd0IsWUFBVyxtQkFBbUI7SUFFL0QsT0FBTyxDQUFDLGFBQWE7SUFDckIsT0FBTyxDQUFDLFFBQVE7SUFDaEIsT0FBTyxDQUFDLElBQUk7SUFDWixPQUFPLENBQUMsV0FBVztJQUNuQixPQUFPLENBQUMsR0FBRztJQUxiLFlBQ1UsYUFBYSxFQUFFLGFBQWEsRUFDNUIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsSUFBSSxFQUFFLFNBQVMsRUFDZixXQUFXLEdBQUUsY0FBeUIsRUFDdEMsR0FBRyx5Q0FBb0MsRUFDN0M7SUFFUywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsWUFBWTs7Ozs7Ozs7OztPQVM1RDtJQUVZLDBCQUEwQixDQUFDLGVBQWUsRUFBRSxFQUFFLHFFQU0xRDtJQUVZLDRCQUE0QixDQUFDLGVBQWUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixpQ0FReEY7SUFFTSxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsdUJBQXVCLGlDQUd4RDtJQUVLLDRCQUE0QixDQUFDLFNBQVMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLE9BQU8scUJBQXFCLENBQUMsQ0FBQyxDQU85RztJQUVELDZCQUE2QixDQUFDLFNBQVMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixHQUFHLFNBQVMsQ0FBQyxDQUU1RjtJQUVLLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FNdkM7SUFFTSxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FFekU7SUFFTSxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBRXRHO0lBRVksc0JBQXNCLENBQUMsZUFBZSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0E4Qi9GO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private_kernel_oracle_impl.d.ts","sourceRoot":"","sources":["../../src/private_kernel/private_kernel_oracle_impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA2C,MAAM,kBAAkB,CAAC;AAClG,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"private_kernel_oracle_impl.d.ts","sourceRoot":"","sources":["../../src/private_kernel/private_kernel_oracle_impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA2C,MAAM,kBAAkB,CAAC;AAClG,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAG/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKtE;;GAEG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAE/D,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,GAAG;IALb,YACU,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,SAAS,EACf,WAAW,GAAE,cAAyB,EACtC,GAAG,yCAAoC,EAC7C;IAES,0BAA0B,CAAC,OAAO,EAAE,YAAY;;;;;;;;;;OAS5D;IAEY,0BAA0B,CAAC,eAAe,EAAE,EAAE,qEAM1D;IAEY,4BAA4B,CAAC,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE,gBAAgB,iCAQxF;IAEM,sBAAsB,CAAC,EAAE,EAAE,uBAAuB,iCAGxD;IAEK,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAO9G;IAED,6BAA6B,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAE5F;IAEK,mBAAmB,IAAI,OAAO,CAAC,EAAE,CAAC,CAMvC;IAEM,kBAAkB,CAAC,eAAe,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,CAEzE;IAEM,oBAAoB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAEtG;IAEY,sBAAsB,CAAC,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA8B/F;CACF"}
|
|
@@ -12,20 +12,20 @@ import { UpdatedClassIdHints } from '@aztec/stdlib/kernel';
|
|
|
12
12
|
/**
|
|
13
13
|
* A data oracle that provides information needed for simulating a transaction.
|
|
14
14
|
*/ export class PrivateKernelOracleImpl {
|
|
15
|
-
|
|
15
|
+
contractStore;
|
|
16
16
|
keyStore;
|
|
17
17
|
node;
|
|
18
18
|
blockNumber;
|
|
19
19
|
log;
|
|
20
|
-
constructor(
|
|
21
|
-
this.
|
|
20
|
+
constructor(contractStore, keyStore, node, blockNumber = 'latest', log = createLogger('pxe:kernel_oracle')){
|
|
21
|
+
this.contractStore = contractStore;
|
|
22
22
|
this.keyStore = keyStore;
|
|
23
23
|
this.node = node;
|
|
24
24
|
this.blockNumber = blockNumber;
|
|
25
25
|
this.log = log;
|
|
26
26
|
}
|
|
27
27
|
async getContractAddressPreimage(address) {
|
|
28
|
-
const instance = await this.
|
|
28
|
+
const instance = await this.contractStore.getContractInstance(address);
|
|
29
29
|
if (!instance) {
|
|
30
30
|
throw new Error(`Contract instance not found when getting address preimage. Contract address: ${address}.`);
|
|
31
31
|
}
|
|
@@ -35,14 +35,14 @@ import { UpdatedClassIdHints } from '@aztec/stdlib/kernel';
|
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
async getContractClassIdPreimage(contractClassId) {
|
|
38
|
-
const contractClass = await this.
|
|
38
|
+
const contractClass = await this.contractStore.getContractClass(contractClassId);
|
|
39
39
|
if (!contractClass) {
|
|
40
40
|
throw new Error(`Contract class not found when getting class id preimage. Class id: ${contractClassId}.`);
|
|
41
41
|
}
|
|
42
42
|
return computeContractClassIdPreimage(contractClass);
|
|
43
43
|
}
|
|
44
44
|
async getFunctionMembershipWitness(contractClassId, selector) {
|
|
45
|
-
const membershipWitness = await this.
|
|
45
|
+
const membershipWitness = await this.contractStore.getFunctionMembershipWitness(contractClassId, selector);
|
|
46
46
|
if (!membershipWitness) {
|
|
47
47
|
throw new Error(`Membership witness not found for contract class id ${contractClassId} and selector ${selector}.`);
|
|
48
48
|
}
|
|
@@ -70,7 +70,7 @@ import { UpdatedClassIdHints } from '@aztec/stdlib/kernel';
|
|
|
70
70
|
return this.keyStore.getMasterSecretKey(masterPublicKey);
|
|
71
71
|
}
|
|
72
72
|
getDebugFunctionName(contractAddress, selector) {
|
|
73
|
-
return this.
|
|
73
|
+
return this.contractStore.getDebugFunctionName(contractAddress, selector);
|
|
74
74
|
}
|
|
75
75
|
async getUpdatedClassIdHints(contractAddress) {
|
|
76
76
|
const { delayedPublicMutableSlot, delayedPublicMutableHashSlot } = await DelayedPublicMutableValuesWithHash.getContractUpdateSlots(contractAddress);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
import type { BlockParameter } from '@aztec/stdlib/block';
|
|
4
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/server';
|
|
5
|
+
import type { AnchorBlockStore } from '../storage/anchor_block_store/anchor_block_store.js';
|
|
6
|
+
export declare class PublicStorageService {
|
|
7
|
+
private readonly anchorBlockStore;
|
|
8
|
+
private readonly aztecNode;
|
|
9
|
+
constructor(anchorBlockStore: AnchorBlockStore, aztecNode: AztecNode);
|
|
10
|
+
/**
|
|
11
|
+
* Gets the storage value at the given contract storage slot.
|
|
12
|
+
*
|
|
13
|
+
* @remarks The storage slot here refers to the slot as it is defined in Noir not the index in the merkle tree.
|
|
14
|
+
* Aztec's version of `eth_getStorageAt`.
|
|
15
|
+
*
|
|
16
|
+
* @param blockNumber - The block number at which to get the data.
|
|
17
|
+
* @param contract - Address of the contract to query.
|
|
18
|
+
* @param slot - Slot to query.
|
|
19
|
+
* @returns Storage value at the given contract slot.
|
|
20
|
+
* @throws If the contract is not deployed.
|
|
21
|
+
*/
|
|
22
|
+
getPublicStorageAt(blockNumber: BlockParameter, contract: AztecAddress, slot: Fr): Promise<Fr>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3N0b3JhZ2Vfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpY19zdG9yYWdlL3B1YmxpY19zdG9yYWdlX3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU1RixxQkFBYSxvQkFBb0I7SUFFN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0I7SUFDakMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBRjVCLFlBQ21CLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxTQUFTLEVBQUUsU0FBUyxFQUNuQztJQUVKOzs7Ozs7Ozs7OztPQVdHO0lBQ1Usa0JBQWtCLENBQUMsV0FBVyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQU0xRztDQUNGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_storage_service.d.ts","sourceRoot":"","sources":["../../src/public_storage/public_storage_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AAE5F,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAF5B,YACmB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACnC;IAEJ;;;;;;;;;;;OAWG;IACU,kBAAkB,CAAC,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAM1G;CACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export class PublicStorageService {
|
|
2
|
+
anchorBlockStore;
|
|
3
|
+
aztecNode;
|
|
4
|
+
constructor(anchorBlockStore, aztecNode){
|
|
5
|
+
this.anchorBlockStore = anchorBlockStore;
|
|
6
|
+
this.aztecNode = aztecNode;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Gets the storage value at the given contract storage slot.
|
|
10
|
+
*
|
|
11
|
+
* @remarks The storage slot here refers to the slot as it is defined in Noir not the index in the merkle tree.
|
|
12
|
+
* Aztec's version of `eth_getStorageAt`.
|
|
13
|
+
*
|
|
14
|
+
* @param blockNumber - The block number at which to get the data.
|
|
15
|
+
* @param contract - Address of the contract to query.
|
|
16
|
+
* @param slot - Slot to query.
|
|
17
|
+
* @returns Storage value at the given contract slot.
|
|
18
|
+
* @throws If the contract is not deployed.
|
|
19
|
+
*/ async getPublicStorageAt(blockNumber, contract, slot) {
|
|
20
|
+
const anchorBlockNumber = (await this.anchorBlockStore.getBlockHeader()).getBlockNumber();
|
|
21
|
+
if (blockNumber !== 'latest' && blockNumber > anchorBlockNumber) {
|
|
22
|
+
throw new Error(`Block number ${blockNumber} is higher than current block ${anchorBlockNumber}`);
|
|
23
|
+
}
|
|
24
|
+
return await this.aztecNode.getPublicStorageAt(blockNumber, contract, slot);
|
|
25
|
+
}
|
|
26
|
+
}
|
package/dest/pxe.d.ts
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import type { PrivateEventFilter } from '@aztec/aztec.js/wallet';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
4
|
+
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
5
|
+
import { type ProtocolContractsProvider } from '@aztec/protocol-contracts';
|
|
6
|
+
import type { CircuitSimulator } from '@aztec/simulator/client';
|
|
7
|
+
import { type ContractArtifact, EventSelector, FunctionCall } from '@aztec/stdlib/abi';
|
|
8
|
+
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
9
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
10
|
+
import { CompleteAddress, type ContractClassWithId, type ContractInstanceWithAddress, type PartialAddress } from '@aztec/stdlib/contract';
|
|
11
|
+
import type { AztecNode, PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
|
|
12
|
+
import { type InTx, SimulationOverrides, TxExecutionRequest, TxProfileResult, TxProvingResult, TxSimulationResult, UtilitySimulationResult } from '@aztec/stdlib/tx';
|
|
13
|
+
import type { PXEConfig } from './config/index.js';
|
|
14
|
+
import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
|
|
15
|
+
export type PackedPrivateEvent = InTx & {
|
|
16
|
+
packedEvent: Fr[];
|
|
17
|
+
eventSelector: EventSelector;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Private eXecution Environment (PXE) is a library used by wallets to simulate private phase of transactions and to
|
|
21
|
+
* manage private state of users.
|
|
22
|
+
*/
|
|
23
|
+
export declare class PXE {
|
|
24
|
+
#private;
|
|
25
|
+
private node;
|
|
26
|
+
private blockStateSynchronizer;
|
|
27
|
+
private keyStore;
|
|
28
|
+
private contractStore;
|
|
29
|
+
private noteStore;
|
|
30
|
+
private capsuleStore;
|
|
31
|
+
private anchorBlockStore;
|
|
32
|
+
private senderTaggingStore;
|
|
33
|
+
private senderAddressBookStore;
|
|
34
|
+
private recipientTaggingStore;
|
|
35
|
+
private addressStore;
|
|
36
|
+
private privateEventStore;
|
|
37
|
+
private simulator;
|
|
38
|
+
private proverEnabled;
|
|
39
|
+
private proofCreator;
|
|
40
|
+
private protocolContractsProvider;
|
|
41
|
+
private log;
|
|
42
|
+
private jobQueue;
|
|
43
|
+
debug: PXEDebugUtils;
|
|
44
|
+
private constructor();
|
|
45
|
+
/**
|
|
46
|
+
* Creates an instance of a PXE by instantiating all the necessary data providers and services.
|
|
47
|
+
* Also triggers the registration of the protocol contracts and makes sure the provided node
|
|
48
|
+
* can be contacted.
|
|
49
|
+
*
|
|
50
|
+
* @returns A promise that resolves PXE is ready to be used.
|
|
51
|
+
*/
|
|
52
|
+
static create(node: AztecNode, store: AztecAsyncKVStore, proofCreator: PrivateKernelProver, simulator: CircuitSimulator, protocolContractsProvider: ProtocolContractsProvider, config: PXEConfig, loggerOrSuffix?: string | Logger): Promise<PXE>;
|
|
53
|
+
getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
|
|
54
|
+
/**
|
|
55
|
+
* Returns the contract class metadata given a contract class id.
|
|
56
|
+
* The metadata consists of its contract class, whether it has been publicly registered, and its artifact.
|
|
57
|
+
* @remark - it queries the node to check whether the contract class with the given id has been publicly registered.
|
|
58
|
+
* @param id - Identifier of the class.
|
|
59
|
+
* @param includeArtifact - Identifier of the class.
|
|
60
|
+
* @returns - It returns the contract class metadata, with the artifact field being optional, and will only be returned if true is passed in
|
|
61
|
+
* for `includeArtifact`
|
|
62
|
+
* TODO(@spalladino): The PXE actually holds artifacts and not classes, what should we return? Also,
|
|
63
|
+
* should the pxe query the node for contract public info, and merge it with its own definitions?
|
|
64
|
+
* TODO(@spalladino): This method is strictly needed to decide whether to publicly register a class or not
|
|
65
|
+
* during a public deployment. We probably want a nicer and more general API for this, but it'll have to
|
|
66
|
+
* do for the time being.
|
|
67
|
+
*/
|
|
68
|
+
getContractClassMetadata(id: Fr, includeArtifact?: boolean): Promise<{
|
|
69
|
+
contractClass: ContractClassWithId | undefined;
|
|
70
|
+
isContractClassPubliclyRegistered: boolean;
|
|
71
|
+
artifact: ContractArtifact | undefined;
|
|
72
|
+
}>;
|
|
73
|
+
/**
|
|
74
|
+
* Returns the contract metadata given an address.
|
|
75
|
+
* The metadata consists of its contract instance, which includes the contract class identifier,
|
|
76
|
+
* initialization hash, deployment salt, and public keys hash; whether the contract instance has been initialized;
|
|
77
|
+
* and whether the contract instance with the given address has been publicly deployed.
|
|
78
|
+
* @remark - it queries the node to check whether the contract instance has been initialized / publicly deployed through a node.
|
|
79
|
+
* This query is not dependent on the PXE.
|
|
80
|
+
* @param address - The address that the contract instance resides at.
|
|
81
|
+
* @returns - It returns the contract metadata
|
|
82
|
+
* TODO(@spalladino): Should we return the public keys in plain as well here?
|
|
83
|
+
*/
|
|
84
|
+
getContractMetadata(address: AztecAddress): Promise<{
|
|
85
|
+
contractInstance: ContractInstanceWithAddress | undefined;
|
|
86
|
+
isContractInitialized: boolean;
|
|
87
|
+
isContractPublished: boolean;
|
|
88
|
+
}>;
|
|
89
|
+
/**
|
|
90
|
+
* Registers a user account in PXE given its master encryption private key.
|
|
91
|
+
* Once a new account is registered, the PXE will trial-decrypt all published notes on
|
|
92
|
+
* the chain and store those that correspond to the registered account. Will do nothing if the
|
|
93
|
+
* account is already registered.
|
|
94
|
+
*
|
|
95
|
+
* @param secretKey - Secret key of the corresponding user master public key.
|
|
96
|
+
* @param partialAddress - The partial address of the account contract corresponding to the account being registered.
|
|
97
|
+
* @returns The complete address of the account.
|
|
98
|
+
*/
|
|
99
|
+
registerAccount(secretKey: Fr, partialAddress: PartialAddress): Promise<CompleteAddress>;
|
|
100
|
+
/**
|
|
101
|
+
* Registers a sender in this PXE.
|
|
102
|
+
*
|
|
103
|
+
* After registering a new sender, the PXE will sync private logs that are tagged with this sender's address.
|
|
104
|
+
* Will do nothing if the address is already registered.
|
|
105
|
+
*
|
|
106
|
+
* @param sender - Address of the sender to register.
|
|
107
|
+
* @returns The address of the sender.
|
|
108
|
+
* TODO: It's strange that we return the address here and I (benesjan) think we should drop the return value.
|
|
109
|
+
*/
|
|
110
|
+
registerSender(sender: AztecAddress): Promise<AztecAddress>;
|
|
111
|
+
/**
|
|
112
|
+
* Retrieves senders registered in this PXE.
|
|
113
|
+
* @returns Senders registered in this PXE.
|
|
114
|
+
*/
|
|
115
|
+
getSenders(): Promise<AztecAddress[]>;
|
|
116
|
+
/**
|
|
117
|
+
* Removes a sender registered in this PXE.
|
|
118
|
+
* @param sender - The address of the sender to remove.
|
|
119
|
+
*/
|
|
120
|
+
removeSender(sender: AztecAddress): Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* Retrieves the user accounts registered on this PXE.
|
|
123
|
+
* @returns An array of the accounts registered on this PXE.
|
|
124
|
+
*/
|
|
125
|
+
getRegisteredAccounts(): Promise<CompleteAddress[]>;
|
|
126
|
+
/**
|
|
127
|
+
* Registers a contract class in the PXE without registering any associated contract instance with it.
|
|
128
|
+
*
|
|
129
|
+
* @param artifact - The build artifact for the contract class.
|
|
130
|
+
*/
|
|
131
|
+
registerContractClass(artifact: ContractArtifact): Promise<void>;
|
|
132
|
+
/**
|
|
133
|
+
* Adds deployed contracts to the PXE. Deployed contract information is used to access the
|
|
134
|
+
* contract code when simulating local transactions. This is automatically called by aztec.js when
|
|
135
|
+
* deploying a contract. Dapps that wish to interact with contracts already deployed should register
|
|
136
|
+
* these contracts in their users' PXE through this method.
|
|
137
|
+
*
|
|
138
|
+
* @param contract - A contract instance to register, with an optional artifact which can be omitted if the contract class has already been registered.
|
|
139
|
+
*/
|
|
140
|
+
registerContract(contract: {
|
|
141
|
+
instance: ContractInstanceWithAddress;
|
|
142
|
+
artifact?: ContractArtifact;
|
|
143
|
+
}): Promise<void>;
|
|
144
|
+
/**
|
|
145
|
+
* Updates a deployed contract in the PXE. This is used to update the contract artifact when
|
|
146
|
+
* an update has happened, so the new code can be used in the simulation of local transactions.
|
|
147
|
+
* This is called by aztec.js when instantiating a contract in a given address with a mismatching artifact.
|
|
148
|
+
* @param contractAddress - The address of the contract to update.
|
|
149
|
+
* @param artifact - The updated artifact for the contract.
|
|
150
|
+
* @throws If the artifact's contract class is not found in the PXE or if the contract class is different from
|
|
151
|
+
* the current one (current one from the point of view of the node to which the PXE is connected).
|
|
152
|
+
*/
|
|
153
|
+
updateContract(contractAddress: AztecAddress, artifact: ContractArtifact): Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* Retrieves the addresses of contracts added to this PXE.
|
|
156
|
+
* @returns An array of contracts addresses registered on this PXE.
|
|
157
|
+
*/
|
|
158
|
+
getContracts(): Promise<AztecAddress[]>;
|
|
159
|
+
/**
|
|
160
|
+
* Proves the private portion of a simulated transaction, ready to send to the network
|
|
161
|
+
* (where validators prove the public portion).
|
|
162
|
+
*
|
|
163
|
+
* @param txRequest - An authenticated tx request ready for proving
|
|
164
|
+
* @returns A result containing the proof and public inputs of the tail circuit.
|
|
165
|
+
* @throws If contract code not found, or public simulation reverts.
|
|
166
|
+
* Also throws if simulatePublic is true and public simulation reverts.
|
|
167
|
+
*/
|
|
168
|
+
proveTx(txRequest: TxExecutionRequest): Promise<TxProvingResult>;
|
|
169
|
+
/**
|
|
170
|
+
* Profiles a transaction, reporting gate counts (unless disabled) and returns an execution trace.
|
|
171
|
+
*
|
|
172
|
+
* @param txRequest - An authenticated tx request ready for simulation
|
|
173
|
+
* @param msgSender - (Optional) The message sender to use for the simulation.
|
|
174
|
+
* @param skipTxValidation - (Optional) If false, this function throws if the transaction is unable to be included in a block at the current state.
|
|
175
|
+
* @returns A trace of the program execution with gate counts.
|
|
176
|
+
* @throws If the code for the functions executed in this transaction have not been made available via `addContracts`.
|
|
177
|
+
*/
|
|
178
|
+
profileTx(txRequest: TxExecutionRequest, profileMode: 'full' | 'execution-steps' | 'gates', skipProofGeneration?: boolean): Promise<TxProfileResult>;
|
|
179
|
+
/**
|
|
180
|
+
* Simulates a transaction based on the provided preauthenticated execution request.
|
|
181
|
+
* This will run a local simulation of private execution (and optionally of public as well), run the
|
|
182
|
+
* kernel circuits to ensure adherence to protocol rules (without generating a proof), and return the
|
|
183
|
+
* simulation results .
|
|
184
|
+
*
|
|
185
|
+
*
|
|
186
|
+
* Note that this is used with `ContractFunctionInteraction::simulateTx` to bypass certain checks.
|
|
187
|
+
* In that case, the transaction returned is only potentially ready to be sent to the network for execution.
|
|
188
|
+
*
|
|
189
|
+
*
|
|
190
|
+
* @param txRequest - An authenticated tx request ready for simulation
|
|
191
|
+
* @param simulatePublic - Whether to simulate the public part of the transaction.
|
|
192
|
+
* @param skipTxValidation - (Optional) If false, this function throws if the transaction is unable to be included in a block at the current state.
|
|
193
|
+
* @param skipFeeEnforcement - (Optional) If false, fees are enforced.
|
|
194
|
+
* @param overrides - (Optional) State overrides for the simulation, such as msgSender, contract instances and artifacts.
|
|
195
|
+
* @param scopes - (Optional) The accounts whose notes we can access in this call. Currently optional and will default to all.
|
|
196
|
+
* @returns A simulated transaction result object that includes public and private return values.
|
|
197
|
+
* @throws If the code for the functions executed in this transaction have not been made available via `addContracts`.
|
|
198
|
+
* Also throws if simulatePublic is true and public simulation reverts.
|
|
199
|
+
*
|
|
200
|
+
* TODO(#7456) Prevent msgSender being defined here for the first call
|
|
201
|
+
*/
|
|
202
|
+
simulateTx(txRequest: TxExecutionRequest, simulatePublic: boolean, skipTxValidation?: boolean, skipFeeEnforcement?: boolean, overrides?: SimulationOverrides, scopes?: AztecAddress[]): Promise<TxSimulationResult>;
|
|
203
|
+
/**
|
|
204
|
+
* Simulate the execution of a contract utility function.
|
|
205
|
+
*
|
|
206
|
+
* @param call - The function call containing the function details, arguments, and target contract address.
|
|
207
|
+
* @param authwits - (Optional) The authentication witnesses required for the function call.
|
|
208
|
+
* @param scopes - (Optional) The accounts whose notes we can access in this call. Currently optional and will
|
|
209
|
+
* default to all.
|
|
210
|
+
* @returns The result of the utility function call, structured based on the function ABI.
|
|
211
|
+
*/
|
|
212
|
+
simulateUtility(call: FunctionCall, authwits?: AuthWitness[], scopes?: AztecAddress[]): Promise<UtilitySimulationResult>;
|
|
213
|
+
/**
|
|
214
|
+
* Returns the private events given search parameters.
|
|
215
|
+
* @param eventSelector - Event selector to search for.
|
|
216
|
+
* @param filter
|
|
217
|
+
* contractAddress - The address of the contract to get events from. Required.
|
|
218
|
+
* scopes - One or more event scope addresses to filter by. Required.
|
|
219
|
+
* fromBlock - The block number to search from (inclusive). Optional. If provided, it must be >= 0.
|
|
220
|
+
* Defaults to 0.
|
|
221
|
+
* If toBlock is defined but fromBlock is not, fromBlock defaults to toBlock - 1.
|
|
222
|
+
* toBlock - The block number to search up to (exclusive). Optional. If provided, it must be > 0.
|
|
223
|
+
* Defaults to the latest known block to PXE + 1.
|
|
224
|
+
* @returns - The packed events with block and tx metadata.
|
|
225
|
+
*/
|
|
226
|
+
getPrivateEvents(eventSelector: EventSelector, filter: PrivateEventFilter): Promise<PackedPrivateEvent[]>;
|
|
227
|
+
/**
|
|
228
|
+
* Stops the PXE's job queue.
|
|
229
|
+
*/
|
|
230
|
+
stop(): Promise<void>;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHhlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUlsRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxLQUFLLHlCQUF5QixFQUF5QixNQUFNLDJCQUEyQixDQUFDO0FBQ2xHLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLGFBQWEsRUFDYixZQUFZLEVBR2IsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLEtBQUssbUJBQW1CLEVBQ3hCLEtBQUssMkJBQTJCLEVBQ2hDLEtBQUssY0FBYyxFQUdwQixNQUFNLHdCQUF3QixDQUFDO0FBR2hDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTXRGLE9BQU8sRUFFTCxLQUFLLElBQUksRUFLVCxtQkFBbUIsRUFHbkIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN4QixNQUFNLGtCQUFrQixDQUFDO0FBSzFCLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBT25ELE9BQU8sRUFBRSxhQUFh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
|