@aztec/pxe 0.0.1-commit.9b94fc1 → 0.0.1-commit.c7c42ec
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bin/check_oracle_version.js +105 -15
- package/dest/block_synchronizer/block_synchronizer.d.ts +37 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/{synchronizer/synchronizer.js → block_synchronizer/block_synchronizer.js} +20 -22
- package/dest/block_synchronizer/index.d.ts +2 -0
- package/dest/block_synchronizer/index.d.ts.map +1 -0
- package/dest/block_synchronizer/index.js +1 -0
- package/dest/config/index.d.ts +4 -4
- package/dest/config/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +41 -12
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +46 -19
- package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -3
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +4 -3
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
- package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
- package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +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 +2 -2
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -4
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +6 -3
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +2 -2
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +16 -13
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +2 -2
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +7 -3
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +7 -3
- package/dest/contract_function_simulator/oracle/oracle.d.ts +3 -3
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +27 -15
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +9 -10
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +12 -12
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +22 -11
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +29 -17
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +58 -16
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +147 -40
- package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
- package/dest/debug/pxe_debug_utils.d.ts +31 -0
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
- package/dest/debug/pxe_debug_utils.js +37 -0
- package/dest/entrypoints/client/bundle/index.d.ts +1 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +0 -1
- package/dest/entrypoints/client/bundle/utils.js +2 -2
- package/dest/entrypoints/client/lazy/index.d.ts +1 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +0 -1
- package/dest/entrypoints/client/lazy/utils.js +2 -2
- package/dest/entrypoints/pxe_creation_options.d.ts +3 -1
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +2 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +1 -1
- package/dest/entrypoints/server/utils.js +1 -1
- package/dest/error_enriching.d.ts +4 -4
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +6 -6
- package/dest/events/event_service.d.ts +15 -0
- package/dest/events/event_service.d.ts.map +1 -0
- package/dest/events/event_service.js +47 -0
- package/dest/events/index.d.ts +2 -0
- package/dest/events/index.d.ts.map +1 -0
- package/dest/events/index.js +1 -0
- package/dest/events/private_event_filter_validator.d.ts +9 -0
- package/dest/events/private_event_filter_validator.d.ts.map +1 -0
- package/dest/events/private_event_filter_validator.js +39 -0
- package/dest/logs/log_service.d.ts +26 -0
- package/dest/logs/log_service.d.ts.map +1 -0
- package/dest/logs/log_service.js +120 -0
- package/dest/notes/index.d.ts +2 -0
- package/dest/notes/index.d.ts.map +1 -0
- package/dest/notes/index.js +1 -0
- package/dest/notes/note_service.d.ts +48 -0
- package/dest/notes/note_service.d.ts.map +1 -0
- package/dest/notes/note_service.js +152 -0
- package/dest/oracle_version.d.ts +2 -2
- package/dest/oracle_version.js +2 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +4 -4
- 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 +7 -6
- 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 +38 -46
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +130 -141
- package/dest/storage/address_store/address_store.d.ts +11 -0
- package/dest/storage/address_store/address_store.d.ts.map +1 -0
- package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +1 -1
- package/dest/storage/address_store/index.d.ts +2 -0
- package/dest/storage/address_store/index.d.ts.map +1 -0
- package/dest/storage/address_store/index.js +1 -0
- package/dest/storage/{sync_data_provider/sync_data_provider.d.ts → anchor_block_store/anchor_block_store.d.ts} +2 -3
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
- package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +2 -9
- package/dest/storage/{sync_data_provider → anchor_block_store}/index.d.ts +2 -2
- package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
- package/dest/storage/anchor_block_store/index.js +1 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +57 -0
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
- package/dest/storage/{capsule_data_provider/capsule_data_provider.js → capsule_store/capsule_store.js} +34 -6
- package/dest/storage/capsule_store/index.d.ts +2 -0
- package/dest/storage/capsule_store/index.d.ts.map +1 -0
- package/dest/storage/capsule_store/index.js +1 -0
- package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +7 -5
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +34 -3
- package/dest/storage/contract_store/index.d.ts +2 -0
- package/dest/storage/contract_store/index.d.ts.map +1 -0
- package/dest/storage/contract_store/index.js +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
- package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
- package/dest/storage/index.d.ts +8 -8
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +7 -7
- package/dest/storage/note_store/index.d.ts +3 -0
- package/dest/storage/note_store/index.d.ts.map +1 -0
- package/dest/storage/note_store/index.js +2 -0
- package/dest/storage/{note_data_provider/note_data_provider.d.ts → note_store/note_store.d.ts} +13 -12
- package/dest/storage/note_store/note_store.d.ts.map +1 -0
- package/dest/storage/{note_data_provider/note_data_provider.js → note_store/note_store.js} +20 -9
- package/dest/storage/private_event_store/private_event_store.d.ts +51 -0
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
- package/dest/storage/{private_event_data_provider/private_event_data_provider.js → private_event_store/private_event_store.js} +37 -27
- package/dest/storage/tagging_store/index.d.ts +4 -0
- package/dest/storage/tagging_store/index.d.ts.map +1 -0
- package/dest/storage/tagging_store/index.js +3 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +21 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/recipient_tagging_store.js +42 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_address_book_store.js +30 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +67 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_tagging_store.js +196 -0
- package/dest/tagging/index.d.ts +15 -6
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +23 -5
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +14 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +14 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +29 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +20 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +32 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +18 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +55 -0
- package/dest/tree_membership/tree_membership_service.d.ts +52 -0
- package/dest/tree_membership/tree_membership_service.d.ts.map +1 -0
- package/dest/tree_membership/tree_membership_service.js +84 -0
- package/package.json +17 -17
- package/src/bin/check_oracle_version.ts +130 -20
- package/src/{synchronizer/synchronizer.ts → block_synchronizer/block_synchronizer.ts} +19 -22
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +3 -3
- package/src/contract_function_simulator/contract_function_simulator.ts +79 -17
- package/src/contract_function_simulator/execution_note_cache.ts +7 -3
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
- package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +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 +1 -1
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +5 -2
- package/src/contract_function_simulator/noir-structs/utility_context.ts +1 -1
- package/src/contract_function_simulator/oracle/interfaces.ts +15 -10
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +17 -3
- package/src/contract_function_simulator/oracle/oracle.ts +33 -11
- package/src/contract_function_simulator/oracle/private_execution.ts +17 -15
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +91 -22
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +223 -47
- package/src/contract_function_simulator/pick_notes.ts +1 -1
- package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
- package/src/debug/pxe_debug_utils.ts +48 -0
- package/src/entrypoints/client/bundle/index.ts +0 -1
- package/src/entrypoints/client/bundle/utils.ts +2 -2
- package/src/entrypoints/client/lazy/index.ts +0 -1
- package/src/entrypoints/client/lazy/utils.ts +2 -2
- package/src/entrypoints/pxe_creation_options.ts +2 -0
- package/src/entrypoints/server/index.ts +1 -1
- package/src/entrypoints/server/utils.ts +1 -1
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +77 -0
- package/src/events/index.ts +1 -0
- package/src/events/private_event_filter_validator.ts +48 -0
- package/src/logs/log_service.ts +202 -0
- package/src/notes/index.ts +1 -0
- package/src/notes/note_service.ts +200 -0
- package/src/oracle_version.ts +2 -2
- package/src/private_kernel/hints/build_private_kernel_reset_private_inputs.ts +1 -1
- package/src/private_kernel/private_kernel_execution_prover.ts +5 -4
- package/src/private_kernel/private_kernel_oracle.ts +2 -1
- package/src/private_kernel/private_kernel_oracle_impl.ts +10 -9
- package/src/public_storage/public_storage_service.ts +33 -0
- package/src/pxe.ts +151 -179
- package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +1 -1
- package/src/storage/address_store/index.ts +1 -0
- package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +2 -11
- package/src/storage/anchor_block_store/index.ts +1 -0
- package/src/storage/{capsule_data_provider/capsule_data_provider.ts → capsule_store/capsule_store.ts} +34 -2
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +45 -3
- package/src/storage/contract_store/index.ts +1 -0
- package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
- package/src/storage/index.ts +7 -7
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/{note_data_provider/note_data_provider.ts → note_store/note_store.ts} +26 -13
- package/src/storage/{private_event_data_provider/private_event_data_provider.ts → private_event_store/private_event_store.ts} +60 -41
- package/src/storage/tagging_store/index.ts +3 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +53 -0
- package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
- package/src/storage/tagging_store/sender_tagging_store.ts +244 -0
- package/src/tagging/index.ts +27 -5
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +129 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +43 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +96 -0
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +44 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +72 -0
- package/src/tree_membership/tree_membership_service.ts +112 -0
- package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -265
- package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
- package/dest/contract_function_simulator/execution_data_provider.js +0 -14
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
- package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -694
- package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
- package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.d.ts +0 -2
- package/dest/storage/address_data_provider/index.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.js +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/index.d.ts +0 -2
- package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.d.ts +0 -2
- package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.d.ts +0 -3
- package/dest/storage/note_data_provider/index.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.js +0 -2
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -37
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/index.js +0 -1
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.d.ts +0 -2
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
- package/dest/synchronizer/index.d.ts +0 -2
- package/dest/synchronizer/index.d.ts.map +0 -1
- package/dest/synchronizer/index.js +0 -1
- package/dest/synchronizer/synchronizer.d.ts +0 -35
- package/dest/synchronizer/synchronizer.d.ts.map +0 -1
- package/dest/tagging/constants.d.ts +0 -2
- package/dest/tagging/constants.d.ts.map +0 -1
- package/dest/tagging/constants.js +0 -2
- package/dest/tagging/siloed_tag.d.ts +0 -14
- package/dest/tagging/siloed_tag.d.ts.map +0 -1
- package/dest/tagging/siloed_tag.js +0 -20
- package/dest/tagging/tag.d.ts +0 -12
- package/dest/tagging/tag.d.ts.map +0 -1
- package/dest/tagging/tag.js +0 -17
- package/dest/tagging/utils.d.ts +0 -18
- package/dest/tagging/utils.d.ts.map +0 -1
- package/dest/tagging/utils.js +0 -24
- package/src/contract_function_simulator/execution_data_provider.ts +0 -333
- package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1008
- package/src/storage/address_data_provider/index.ts +0 -1
- package/src/storage/capsule_data_provider/index.ts +0 -1
- package/src/storage/contract_data_provider/index.ts +0 -1
- package/src/storage/note_data_provider/index.ts +0 -2
- package/src/storage/sync_data_provider/index.ts +0 -1
- package/src/storage/tagging_data_provider/index.ts +0 -1
- package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
- package/src/synchronizer/index.ts +0 -1
- package/src/tagging/constants.ts +0 -2
- package/src/tagging/siloed_tag.ts +0 -22
- package/src/tagging/tag.ts +0 -16
- package/src/tagging/utils.ts +0 -31
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import type { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
|
|
2
|
-
import {
|
|
2
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
|
+
import { Point } from '@aztec/foundation/curves/grumpkin';
|
|
3
5
|
import type { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
4
6
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
7
|
import type { CompleteAddress, ContractInstance } from '@aztec/stdlib/contract';
|
|
6
8
|
import type { KeyValidationRequest } from '@aztec/stdlib/kernel';
|
|
7
|
-
import type { ContractClassLog } from '@aztec/stdlib/logs';
|
|
9
|
+
import type { ContractClassLog, Tag } from '@aztec/stdlib/logs';
|
|
8
10
|
import type { Note, NoteStatus } from '@aztec/stdlib/note';
|
|
9
11
|
import { type MerkleTreeId, type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
10
12
|
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
11
13
|
|
|
12
|
-
import type { Tag } from '../../tagging/tag.js';
|
|
13
14
|
import type { UtilityContext } from '../noir-structs/utility_context.js';
|
|
14
15
|
import type { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
15
16
|
|
|
@@ -21,6 +22,8 @@ export interface NoteData {
|
|
|
21
22
|
note: Note;
|
|
22
23
|
/** The address of the contract that owns the note. */
|
|
23
24
|
contractAddress: AztecAddress;
|
|
25
|
+
/** The owner of the note. */
|
|
26
|
+
owner: AztecAddress;
|
|
24
27
|
/** The storage slot of the note. */
|
|
25
28
|
storageSlot: Fr;
|
|
26
29
|
/** The randomness injected to the note */
|
|
@@ -59,23 +62,24 @@ export interface IMiscOracle {
|
|
|
59
62
|
export interface IUtilityExecutionOracle {
|
|
60
63
|
isUtility: true;
|
|
61
64
|
|
|
62
|
-
utilityGetUtilityContext():
|
|
65
|
+
utilityGetUtilityContext(): UtilityContext;
|
|
63
66
|
utilityGetKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest>;
|
|
64
67
|
utilityGetContractInstance(address: AztecAddress): Promise<ContractInstance>;
|
|
65
|
-
utilityGetMembershipWitness(blockNumber:
|
|
68
|
+
utilityGetMembershipWitness(blockNumber: BlockNumber, treeId: MerkleTreeId, leafValue: Fr): Promise<Fr[] | undefined>;
|
|
66
69
|
utilityGetNullifierMembershipWitness(
|
|
67
|
-
blockNumber:
|
|
70
|
+
blockNumber: BlockNumber,
|
|
68
71
|
nullifier: Fr,
|
|
69
72
|
): Promise<NullifierMembershipWitness | undefined>;
|
|
70
|
-
utilityGetPublicDataWitness(blockNumber:
|
|
73
|
+
utilityGetPublicDataWitness(blockNumber: BlockNumber, leafSlot: Fr): Promise<PublicDataWitness | undefined>;
|
|
71
74
|
utilityGetLowNullifierMembershipWitness(
|
|
72
|
-
blockNumber:
|
|
75
|
+
blockNumber: BlockNumber,
|
|
73
76
|
nullifier: Fr,
|
|
74
77
|
): Promise<NullifierMembershipWitness | undefined>;
|
|
75
|
-
utilityGetBlockHeader(blockNumber:
|
|
78
|
+
utilityGetBlockHeader(blockNumber: BlockNumber): Promise<BlockHeader | undefined>;
|
|
76
79
|
utilityGetPublicKeysAndPartialAddress(account: AztecAddress): Promise<CompleteAddress>;
|
|
77
80
|
utilityGetAuthWitness(messageHash: Fr): Promise<Fr[] | undefined>;
|
|
78
81
|
utilityGetNotes(
|
|
82
|
+
owner: AztecAddress | undefined,
|
|
79
83
|
storageSlot: Fr,
|
|
80
84
|
numSelects: number,
|
|
81
85
|
selectByIndexes: number[],
|
|
@@ -100,7 +104,7 @@ export interface IUtilityExecutionOracle {
|
|
|
100
104
|
utilityStorageRead(
|
|
101
105
|
contractAddress: AztecAddress,
|
|
102
106
|
startStorageSlot: Fr,
|
|
103
|
-
blockNumber:
|
|
107
|
+
blockNumber: BlockNumber,
|
|
104
108
|
numberOfElements: number,
|
|
105
109
|
): Promise<Fr[]>;
|
|
106
110
|
utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr): Promise<void>;
|
|
@@ -132,6 +136,7 @@ export interface IPrivateExecutionOracle {
|
|
|
132
136
|
privateStoreInExecutionCache(values: Fr[], hash: Fr): void;
|
|
133
137
|
privateLoadFromExecutionCache(hash: Fr): Promise<Fr[]>;
|
|
134
138
|
privateNotifyCreatedNote(
|
|
139
|
+
owner: AztecAddress,
|
|
135
140
|
storageSlot: Fr,
|
|
136
141
|
randomness: Fr,
|
|
137
142
|
noteTypeId: NoteSelector,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
3
|
import type { Note } from '@aztec/stdlib/note';
|
|
4
4
|
|
|
@@ -24,7 +24,9 @@ function fromRawData(nonzeroNoteHashCounter: boolean, maybeNoteNonce: Fr): { sta
|
|
|
24
24
|
* and only after that it packs the retrieved note. Hence it doesn't map one to one with `RetrievedNote::pack()`.
|
|
25
25
|
*
|
|
26
26
|
* @param contractAddress - The address of the contract that owns the note
|
|
27
|
+
* @param owner - The owner of the note
|
|
27
28
|
* @param randomness - The randomness injected into the note to get the hiding property of commitments
|
|
29
|
+
* @param storageSlot - The storage slot of the note
|
|
28
30
|
* @param noteNonce - The nonce injected into the note hash preimage by kernels.
|
|
29
31
|
* @param index - Optional index in the note hash tree. If undefined, indicates a transient note
|
|
30
32
|
* @param note - The note content containing the actual note data
|
|
@@ -32,13 +34,17 @@ function fromRawData(nonzeroNoteHashCounter: boolean, maybeNoteNonce: Fr): { sta
|
|
|
32
34
|
*/
|
|
33
35
|
export function packAsRetrievedNote({
|
|
34
36
|
contractAddress,
|
|
37
|
+
owner,
|
|
35
38
|
randomness,
|
|
39
|
+
storageSlot,
|
|
36
40
|
noteNonce,
|
|
37
41
|
index,
|
|
38
42
|
note,
|
|
39
43
|
}: {
|
|
40
44
|
contractAddress: AztecAddress;
|
|
45
|
+
owner: AztecAddress;
|
|
41
46
|
randomness: Fr;
|
|
47
|
+
storageSlot: Fr;
|
|
42
48
|
noteNonce: Fr;
|
|
43
49
|
index?: bigint;
|
|
44
50
|
note: Note;
|
|
@@ -49,6 +55,14 @@ export function packAsRetrievedNote({
|
|
|
49
55
|
// To pack the note as retrieved note we first need to reconstruct the note metadata.
|
|
50
56
|
const noteMetadata = fromRawData(nonzeroNoteHashCounter, noteNonce);
|
|
51
57
|
|
|
52
|
-
// Pack
|
|
53
|
-
return [
|
|
58
|
+
// Pack in order: note, contract_address, owner, randomness, storage_slot, metadata (stage, maybe_note_nonce)
|
|
59
|
+
return [
|
|
60
|
+
...note.items,
|
|
61
|
+
contractAddress,
|
|
62
|
+
owner,
|
|
63
|
+
randomness,
|
|
64
|
+
storageSlot,
|
|
65
|
+
new Fr(noteMetadata.stage),
|
|
66
|
+
noteMetadata.maybeNoteNonce,
|
|
67
|
+
];
|
|
54
68
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import { Point } from '@aztec/foundation/curves/grumpkin';
|
|
2
4
|
import {
|
|
3
5
|
type ACIRCallback,
|
|
4
6
|
type ACVMField,
|
|
@@ -110,9 +112,9 @@ export class Oracle {
|
|
|
110
112
|
return [values.map(toACVMField)];
|
|
111
113
|
}
|
|
112
114
|
|
|
113
|
-
|
|
114
|
-
const context =
|
|
115
|
-
return context.toNoirRepresentation();
|
|
115
|
+
utilityGetUtilityContext(): Promise<(ACVMField | ACVMField[])[]> {
|
|
116
|
+
const context = this.handlerAsUtility().utilityGetUtilityContext();
|
|
117
|
+
return Promise.resolve(context.toNoirRepresentation());
|
|
116
118
|
}
|
|
117
119
|
|
|
118
120
|
async utilityGetKeyValidationRequest([pkMHash]: ACVMField[]): Promise<ACVMField[]> {
|
|
@@ -145,7 +147,7 @@ export class Oracle {
|
|
|
145
147
|
const parsedLeafValue = Fr.fromString(leafValue);
|
|
146
148
|
|
|
147
149
|
const witness = await this.handlerAsUtility().utilityGetMembershipWitness(
|
|
148
|
-
parsedBlockNumber,
|
|
150
|
+
BlockNumber(parsedBlockNumber),
|
|
149
151
|
parsedTreeId,
|
|
150
152
|
parsedLeafValue,
|
|
151
153
|
);
|
|
@@ -165,7 +167,7 @@ export class Oracle {
|
|
|
165
167
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
166
168
|
|
|
167
169
|
const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(
|
|
168
|
-
parsedBlockNumber,
|
|
170
|
+
BlockNumber(parsedBlockNumber),
|
|
169
171
|
parsedNullifier,
|
|
170
172
|
);
|
|
171
173
|
if (!witness) {
|
|
@@ -182,7 +184,7 @@ export class Oracle {
|
|
|
182
184
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
183
185
|
|
|
184
186
|
const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(
|
|
185
|
-
parsedBlockNumber,
|
|
187
|
+
BlockNumber(parsedBlockNumber),
|
|
186
188
|
parsedNullifier,
|
|
187
189
|
);
|
|
188
190
|
if (!witness) {
|
|
@@ -200,7 +202,10 @@ export class Oracle {
|
|
|
200
202
|
const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
|
|
201
203
|
const parsedLeafSlot = Fr.fromString(leafSlot);
|
|
202
204
|
|
|
203
|
-
const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(
|
|
205
|
+
const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(
|
|
206
|
+
BlockNumber(parsedBlockNumber),
|
|
207
|
+
parsedLeafSlot,
|
|
208
|
+
);
|
|
204
209
|
if (!witness) {
|
|
205
210
|
throw new Error(`Public data witness not found for slot ${parsedLeafSlot} at block ${parsedBlockNumber}.`);
|
|
206
211
|
}
|
|
@@ -210,7 +215,7 @@ export class Oracle {
|
|
|
210
215
|
async utilityGetBlockHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]> {
|
|
211
216
|
const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
|
|
212
217
|
|
|
213
|
-
const header = await this.handlerAsUtility().utilityGetBlockHeader(parsedBlockNumber);
|
|
218
|
+
const header = await this.handlerAsUtility().utilityGetBlockHeader(BlockNumber(parsedBlockNumber));
|
|
214
219
|
if (!header) {
|
|
215
220
|
throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
|
|
216
221
|
}
|
|
@@ -235,6 +240,8 @@ export class Oracle {
|
|
|
235
240
|
}
|
|
236
241
|
|
|
237
242
|
async utilityGetNotes(
|
|
243
|
+
[ownerSome]: ACVMField[],
|
|
244
|
+
[ownerValue]: ACVMField[],
|
|
238
245
|
[storageSlot]: ACVMField[],
|
|
239
246
|
[numSelects]: ACVMField[],
|
|
240
247
|
selectByIndexes: ACVMField[],
|
|
@@ -252,7 +259,10 @@ export class Oracle {
|
|
|
252
259
|
[maxNotes]: ACVMField[],
|
|
253
260
|
[packedRetrievedNoteLength]: ACVMField[],
|
|
254
261
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
262
|
+
// Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
|
|
263
|
+
const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
|
|
255
264
|
const noteDatas = await this.handlerAsUtility().utilityGetNotes(
|
|
265
|
+
owner,
|
|
256
266
|
Fr.fromString(storageSlot),
|
|
257
267
|
+numSelects,
|
|
258
268
|
selectByIndexes.map(s => +s),
|
|
@@ -269,7 +279,17 @@ export class Oracle {
|
|
|
269
279
|
+status,
|
|
270
280
|
);
|
|
271
281
|
|
|
272
|
-
const returnDataAsArrayOfPackedRetrievedNotes = noteDatas.map(
|
|
282
|
+
const returnDataAsArrayOfPackedRetrievedNotes = noteDatas.map(noteData =>
|
|
283
|
+
packAsRetrievedNote({
|
|
284
|
+
contractAddress: noteData.contractAddress,
|
|
285
|
+
owner: noteData.owner,
|
|
286
|
+
randomness: noteData.randomness,
|
|
287
|
+
storageSlot: noteData.storageSlot,
|
|
288
|
+
noteNonce: noteData.noteNonce,
|
|
289
|
+
index: noteData.index,
|
|
290
|
+
note: noteData.note,
|
|
291
|
+
}),
|
|
292
|
+
);
|
|
273
293
|
|
|
274
294
|
// Now we convert each sub-array to an array of ACVMField
|
|
275
295
|
const returnDataAsArrayOfACVMFieldArrays = returnDataAsArrayOfPackedRetrievedNotes.map(subArray =>
|
|
@@ -281,6 +301,7 @@ export class Oracle {
|
|
|
281
301
|
}
|
|
282
302
|
|
|
283
303
|
privateNotifyCreatedNote(
|
|
304
|
+
[owner]: ACVMField[],
|
|
284
305
|
[storageSlot]: ACVMField[],
|
|
285
306
|
[randomness]: ACVMField[],
|
|
286
307
|
[noteTypeId]: ACVMField[],
|
|
@@ -289,6 +310,7 @@ export class Oracle {
|
|
|
289
310
|
[counter]: ACVMField[],
|
|
290
311
|
): Promise<ACVMField[]> {
|
|
291
312
|
this.handlerAsPrivate().privateNotifyCreatedNote(
|
|
313
|
+
AztecAddress.fromString(owner),
|
|
292
314
|
Fr.fromString(storageSlot),
|
|
293
315
|
Fr.fromString(randomness),
|
|
294
316
|
NoteSelector.fromField(Fr.fromString(noteTypeId)),
|
|
@@ -344,7 +366,7 @@ export class Oracle {
|
|
|
344
366
|
const values = await this.handlerAsUtility().utilityStorageRead(
|
|
345
367
|
new AztecAddress(Fr.fromString(contractAddress)),
|
|
346
368
|
Fr.fromString(startStorageSlot),
|
|
347
|
-
+blockNumber,
|
|
369
|
+
BlockNumber(+blockNumber),
|
|
348
370
|
+numberOfElements,
|
|
349
371
|
);
|
|
350
372
|
return [values.map(toACVMField)];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, PRIVATE_CONTEXT_INPUTS_LENGTH } from '@aztec/constants';
|
|
2
|
-
import {
|
|
2
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
5
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
6
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
@@ -26,7 +27,7 @@ import type { CircuitWitnessGenerationStats } from '@aztec/stdlib/stats';
|
|
|
26
27
|
import { BlockHeader, PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
27
28
|
import type { UInt64 } from '@aztec/stdlib/types';
|
|
28
29
|
|
|
29
|
-
import
|
|
30
|
+
import { ContractStore } from '../../storage/contract_store/index.js';
|
|
30
31
|
import { Oracle } from './oracle.js';
|
|
31
32
|
import type { PrivateExecutionOracle } from './private_execution_oracle.js';
|
|
32
33
|
|
|
@@ -153,7 +154,7 @@ export function extractPrivateCircuitPublicInputs(
|
|
|
153
154
|
* from the instance is used.
|
|
154
155
|
* @param contractAddress - The address of the contract to read the class id for.
|
|
155
156
|
* @param instance - The instance of the contract.
|
|
156
|
-
* @param
|
|
157
|
+
* @param executionStore - The execution data provider.
|
|
157
158
|
* @param blockNumber - The block number at which to load the DelayedPublicMutable storing the class id.
|
|
158
159
|
* @param timestamp - The timestamp at which to obtain the class id from the DelayedPublicMutable.
|
|
159
160
|
* @returns The current class id.
|
|
@@ -161,13 +162,13 @@ export function extractPrivateCircuitPublicInputs(
|
|
|
161
162
|
export async function readCurrentClassId(
|
|
162
163
|
contractAddress: AztecAddress,
|
|
163
164
|
instance: ContractInstance,
|
|
164
|
-
|
|
165
|
-
blockNumber:
|
|
165
|
+
aztecNode: AztecNode,
|
|
166
|
+
blockNumber: BlockNumber,
|
|
166
167
|
timestamp: UInt64,
|
|
167
168
|
) {
|
|
168
169
|
const { delayedPublicMutableSlot } = await DelayedPublicMutableValuesWithHash.getContractUpdateSlots(contractAddress);
|
|
169
170
|
const delayedPublicMutableValues = await DelayedPublicMutableValues.readFromTree(delayedPublicMutableSlot, slot =>
|
|
170
|
-
|
|
171
|
+
aztecNode.getPublicStorageAt(blockNumber, ProtocolContractAddress.ContractInstanceRegistry, slot),
|
|
171
172
|
);
|
|
172
173
|
let currentClassId = delayedPublicMutableValues.svc.getCurrentAt(timestamp)[0];
|
|
173
174
|
if (currentClassId.isZero()) {
|
|
@@ -177,25 +178,26 @@ export async function readCurrentClassId(
|
|
|
177
178
|
}
|
|
178
179
|
|
|
179
180
|
/**
|
|
180
|
-
* Verify that the current class id of a contract obtained from AztecNode is the same as the one in
|
|
181
|
-
* provider (i.e. PXE).
|
|
182
|
-
* @param contractAddress - The address of the contract to verify class id for.
|
|
183
|
-
* @param executionDataProvider - The execution data provider.
|
|
181
|
+
* Verify that the current class id of a contract obtained from AztecNode is the same as the one in contract data
|
|
182
|
+
* provider (i.e. PXE's own storage).
|
|
184
183
|
* @param header - The header of the block at which to verify the current class id. If not provided, the anchor block
|
|
185
184
|
* header of the execution data provider is used.
|
|
186
185
|
*/
|
|
187
186
|
export async function verifyCurrentClassId(
|
|
188
187
|
contractAddress: AztecAddress,
|
|
189
|
-
|
|
190
|
-
|
|
188
|
+
aztecNode: AztecNode,
|
|
189
|
+
contractStore: ContractStore,
|
|
190
|
+
header: BlockHeader,
|
|
191
191
|
) {
|
|
192
|
-
|
|
192
|
+
const instance = await contractStore.getContractInstance(contractAddress);
|
|
193
|
+
if (!instance) {
|
|
194
|
+
throw new Error(`No contract instance found for address ${contractAddress.toString()}`);
|
|
195
|
+
}
|
|
193
196
|
|
|
194
|
-
const instance = await executionDataProvider.getContractInstance(contractAddress);
|
|
195
197
|
const currentClassId = await readCurrentClassId(
|
|
196
198
|
contractAddress,
|
|
197
199
|
instance,
|
|
198
|
-
|
|
200
|
+
aztecNode,
|
|
199
201
|
header.globalVariables.blockNumber,
|
|
200
202
|
header.globalVariables.timestamp,
|
|
201
203
|
);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS, PRIVATE_CONTEXT_INPUTS_LENGTH } from '@aztec/constants';
|
|
2
|
-
import { Fr } from '@aztec/foundation/
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
|
+
import type { KeyStore } from '@aztec/key-store';
|
|
5
6
|
import { type CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
|
|
6
7
|
import {
|
|
7
8
|
type FunctionAbi,
|
|
@@ -13,8 +14,10 @@ import {
|
|
|
13
14
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
14
15
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
16
|
import { computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
17
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
16
18
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
17
|
-
import type
|
|
19
|
+
import { type ContractClassLog, DirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
|
|
20
|
+
import { Tag } from '@aztec/stdlib/logs';
|
|
18
21
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
19
22
|
import {
|
|
20
23
|
type BlockHeader,
|
|
@@ -26,8 +29,17 @@ import {
|
|
|
26
29
|
type TxContext,
|
|
27
30
|
} from '@aztec/stdlib/tx';
|
|
28
31
|
|
|
29
|
-
import {
|
|
30
|
-
import type {
|
|
32
|
+
import { NoteService } from '../../notes/note_service.js';
|
|
33
|
+
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
34
|
+
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
35
|
+
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
36
|
+
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
37
|
+
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
38
|
+
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
39
|
+
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
40
|
+
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
41
|
+
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
42
|
+
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
31
43
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
32
44
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
33
45
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
@@ -71,14 +83,24 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
71
83
|
private readonly txContext: TxContext,
|
|
72
84
|
private readonly callContext: CallContext,
|
|
73
85
|
/** Header of a block whose state is used during private execution (not the block the transaction is included in). */
|
|
74
|
-
protected readonly anchorBlockHeader: BlockHeader,
|
|
86
|
+
protected override readonly anchorBlockHeader: BlockHeader,
|
|
75
87
|
/** List of transient auth witnesses to be used during this simulation */
|
|
76
88
|
authWitnesses: AuthWitness[],
|
|
77
89
|
capsules: Capsule[],
|
|
78
90
|
private readonly executionCache: HashedValuesCache,
|
|
79
91
|
private readonly noteCache: ExecutionNoteCache,
|
|
80
92
|
private readonly taggingIndexCache: ExecutionTaggingIndexCache,
|
|
81
|
-
|
|
93
|
+
contractStore: ContractStore,
|
|
94
|
+
noteStore: NoteStore,
|
|
95
|
+
keyStore: KeyStore,
|
|
96
|
+
addressStore: AddressStore,
|
|
97
|
+
aztecNode: AztecNode,
|
|
98
|
+
anchorBlockStore: AnchorBlockStore,
|
|
99
|
+
private readonly senderTaggingStore: SenderTaggingStore,
|
|
100
|
+
recipientTaggingStore: RecipientTaggingStore,
|
|
101
|
+
senderAddressBookStore: SenderAddressBookStore,
|
|
102
|
+
capsuleStore: CapsuleStore,
|
|
103
|
+
privateEventStore: PrivateEventStore,
|
|
82
104
|
private totalPublicCalldataCount: number = 0,
|
|
83
105
|
protected sideEffectCounter: number = 0,
|
|
84
106
|
log = createLogger('simulator:client_execution_context'),
|
|
@@ -86,7 +108,24 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
86
108
|
private senderForTags?: AztecAddress,
|
|
87
109
|
private simulator?: CircuitSimulator,
|
|
88
110
|
) {
|
|
89
|
-
super(
|
|
111
|
+
super(
|
|
112
|
+
callContext.contractAddress,
|
|
113
|
+
authWitnesses,
|
|
114
|
+
capsules,
|
|
115
|
+
anchorBlockHeader,
|
|
116
|
+
contractStore,
|
|
117
|
+
noteStore,
|
|
118
|
+
keyStore,
|
|
119
|
+
addressStore,
|
|
120
|
+
aztecNode,
|
|
121
|
+
anchorBlockStore,
|
|
122
|
+
recipientTaggingStore,
|
|
123
|
+
senderAddressBookStore,
|
|
124
|
+
capsuleStore,
|
|
125
|
+
privateEventStore,
|
|
126
|
+
log,
|
|
127
|
+
scopes,
|
|
128
|
+
);
|
|
90
129
|
}
|
|
91
130
|
|
|
92
131
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -152,7 +191,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
152
191
|
}
|
|
153
192
|
|
|
154
193
|
/**
|
|
155
|
-
* Returns the pre
|
|
194
|
+
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
156
195
|
*/
|
|
157
196
|
public getUsedPreTags(): PreTag[] {
|
|
158
197
|
return this.taggingIndexCache.getUsedPreTags();
|
|
@@ -202,11 +241,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
202
241
|
* @returns An app tag to be used in a log.
|
|
203
242
|
*/
|
|
204
243
|
public async privateGetNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
|
|
205
|
-
const secret = await this
|
|
206
|
-
this.contractAddress,
|
|
207
|
-
sender,
|
|
208
|
-
recipient,
|
|
209
|
-
);
|
|
244
|
+
const secret = await this.#calculateDirectionalAppTaggingSecret(this.contractAddress, sender, recipient);
|
|
210
245
|
|
|
211
246
|
const index = await this.#getIndexToUseForSecret(secret);
|
|
212
247
|
this.log.debug(
|
|
@@ -217,6 +252,22 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
217
252
|
return Tag.compute({ secret, index });
|
|
218
253
|
}
|
|
219
254
|
|
|
255
|
+
async #calculateDirectionalAppTaggingSecret(
|
|
256
|
+
contractAddress: AztecAddress,
|
|
257
|
+
sender: AztecAddress,
|
|
258
|
+
recipient: AztecAddress,
|
|
259
|
+
) {
|
|
260
|
+
const senderCompleteAddress = await this.getCompleteAddress(sender);
|
|
261
|
+
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
262
|
+
return DirectionalAppTaggingSecret.compute(
|
|
263
|
+
senderCompleteAddress,
|
|
264
|
+
senderIvsk,
|
|
265
|
+
recipient,
|
|
266
|
+
contractAddress,
|
|
267
|
+
recipient,
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
|
|
220
271
|
async #getIndexToUseForSecret(secret: DirectionalAppTaggingSecret): Promise<number> {
|
|
221
272
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
222
273
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
@@ -227,8 +278,9 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
227
278
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
228
279
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
229
280
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
230
|
-
await this.
|
|
231
|
-
|
|
281
|
+
await syncSenderTaggingIndexes(secret, this.contractAddress, this.aztecNode, this.senderTaggingStore);
|
|
282
|
+
|
|
283
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret);
|
|
232
284
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
233
285
|
// Otherwise, the next index to use is one past the last used index
|
|
234
286
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -282,6 +334,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
282
334
|
* Real notes coming from DB will have a leafIndex which
|
|
283
335
|
* represents their index in the note hash tree.
|
|
284
336
|
*
|
|
337
|
+
* @param owner - The owner of the notes. If undefined, returns notes for all owners.
|
|
285
338
|
* @param storageSlot - The storage slot.
|
|
286
339
|
* @param numSelects - The number of valid selects in selectBy and selectValues.
|
|
287
340
|
* @param selectBy - An array of indices of the fields to selects.
|
|
@@ -295,6 +348,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
295
348
|
* @returns Array of note data.
|
|
296
349
|
*/
|
|
297
350
|
public override async utilityGetNotes(
|
|
351
|
+
owner: AztecAddress | undefined,
|
|
298
352
|
storageSlot: Fr,
|
|
299
353
|
numSelects: number,
|
|
300
354
|
selectByIndexes: number[],
|
|
@@ -311,11 +365,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
311
365
|
status: NoteStatus,
|
|
312
366
|
): Promise<NoteData[]> {
|
|
313
367
|
// Nullified pending notes are already removed from the list.
|
|
314
|
-
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, storageSlot);
|
|
368
|
+
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
|
|
315
369
|
|
|
316
370
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
317
|
-
|
|
371
|
+
|
|
372
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
|
|
373
|
+
const dbNotes = await noteService.getNotes(
|
|
318
374
|
this.callContext.contractAddress,
|
|
375
|
+
owner,
|
|
319
376
|
storageSlot,
|
|
320
377
|
status,
|
|
321
378
|
this.scopes,
|
|
@@ -365,7 +422,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
365
422
|
/**
|
|
366
423
|
* Keep track of the new note created during execution.
|
|
367
424
|
* It can be used in subsequent calls (or transactions when chaining txs is possible).
|
|
368
|
-
* @param
|
|
425
|
+
* @param owner - The owner of the note.
|
|
369
426
|
* @param storageSlot - The storage slot.
|
|
370
427
|
* @param randomness - The randomness injected into the note.
|
|
371
428
|
* @param noteTypeId - The type ID of the note.
|
|
@@ -374,6 +431,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
374
431
|
* @returns
|
|
375
432
|
*/
|
|
376
433
|
public privateNotifyCreatedNote(
|
|
434
|
+
owner: AztecAddress,
|
|
377
435
|
storageSlot: Fr,
|
|
378
436
|
randomness: Fr,
|
|
379
437
|
noteTypeId: NoteSelector,
|
|
@@ -393,6 +451,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
393
451
|
this.noteCache.addNewNote(
|
|
394
452
|
{
|
|
395
453
|
contractAddress: this.callContext.contractAddress,
|
|
454
|
+
owner,
|
|
396
455
|
storageSlot,
|
|
397
456
|
randomness,
|
|
398
457
|
noteNonce: Fr.ZERO, // Nonce cannot be known during private execution.
|
|
@@ -489,9 +548,9 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
489
548
|
|
|
490
549
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
491
550
|
|
|
492
|
-
await verifyCurrentClassId(targetContractAddress, this.
|
|
551
|
+
await verifyCurrentClassId(targetContractAddress, this.aztecNode, this.contractStore, this.anchorBlockHeader);
|
|
493
552
|
|
|
494
|
-
const targetArtifact = await this.
|
|
553
|
+
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
495
554
|
targetContractAddress,
|
|
496
555
|
functionSelector,
|
|
497
556
|
);
|
|
@@ -510,7 +569,17 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
510
569
|
this.executionCache,
|
|
511
570
|
this.noteCache,
|
|
512
571
|
this.taggingIndexCache,
|
|
513
|
-
this.
|
|
572
|
+
this.contractStore,
|
|
573
|
+
this.noteStore,
|
|
574
|
+
this.keyStore,
|
|
575
|
+
this.addressStore,
|
|
576
|
+
this.aztecNode,
|
|
577
|
+
this.anchorBlockStore,
|
|
578
|
+
this.senderTaggingStore,
|
|
579
|
+
this.recipientTaggingStore,
|
|
580
|
+
this.senderAddressBookStore,
|
|
581
|
+
this.capsuleStore,
|
|
582
|
+
this.privateEventStore,
|
|
514
583
|
this.totalPublicCalldataCount,
|
|
515
584
|
sideEffectCounter,
|
|
516
585
|
this.log,
|
|
@@ -623,7 +692,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
623
692
|
}
|
|
624
693
|
|
|
625
694
|
public getDebugFunctionName() {
|
|
626
|
-
return this.
|
|
695
|
+
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
627
696
|
}
|
|
628
697
|
|
|
629
698
|
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|