@aztec/pxe 0.0.1-commit.5476d83 → 0.0.1-commit.6230efd
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 +49 -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 +27 -12
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +31 -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 +5 -8
- 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 +135 -143
- 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} +8 -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} +46 -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 +86 -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 +97 -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 +4 -8
- 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 +162 -181
- 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} +65 -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/private_kernel/hints/compute_side_effect_uniqueness_hints.d.ts +0 -3
- package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.d.ts.map +0 -1
- package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.js +0 -48
- 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/private_kernel/hints/compute_side_effect_uniqueness_hints.ts +0 -173
- 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,11 +1,13 @@
|
|
|
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,
|
|
8
9
|
type FunctionArtifact,
|
|
10
|
+
type FunctionCall,
|
|
9
11
|
FunctionSelector,
|
|
10
12
|
type NoteSelector,
|
|
11
13
|
countArgumentsSize,
|
|
@@ -13,8 +15,10 @@ import {
|
|
|
13
15
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
14
16
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
17
|
import { computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
18
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
16
19
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
17
|
-
import type
|
|
20
|
+
import { type ContractClassLog, DirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
|
|
21
|
+
import { Tag } from '@aztec/stdlib/logs';
|
|
18
22
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
19
23
|
import {
|
|
20
24
|
type BlockHeader,
|
|
@@ -26,8 +30,17 @@ import {
|
|
|
26
30
|
type TxContext,
|
|
27
31
|
} from '@aztec/stdlib/tx';
|
|
28
32
|
|
|
29
|
-
import {
|
|
30
|
-
import type {
|
|
33
|
+
import { NoteService } from '../../notes/note_service.js';
|
|
34
|
+
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
35
|
+
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
36
|
+
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
37
|
+
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
38
|
+
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
39
|
+
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
40
|
+
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
41
|
+
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
42
|
+
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
43
|
+
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
31
44
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
32
45
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
33
46
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
@@ -71,14 +84,26 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
71
84
|
private readonly txContext: TxContext,
|
|
72
85
|
private readonly callContext: CallContext,
|
|
73
86
|
/** Header of a block whose state is used during private execution (not the block the transaction is included in). */
|
|
74
|
-
protected readonly anchorBlockHeader: BlockHeader,
|
|
87
|
+
protected override readonly anchorBlockHeader: BlockHeader,
|
|
88
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
89
|
+
private readonly utilityExecutor: (call: FunctionCall) => Promise<void>,
|
|
75
90
|
/** List of transient auth witnesses to be used during this simulation */
|
|
76
91
|
authWitnesses: AuthWitness[],
|
|
77
92
|
capsules: Capsule[],
|
|
78
93
|
private readonly executionCache: HashedValuesCache,
|
|
79
94
|
private readonly noteCache: ExecutionNoteCache,
|
|
80
95
|
private readonly taggingIndexCache: ExecutionTaggingIndexCache,
|
|
81
|
-
|
|
96
|
+
contractStore: ContractStore,
|
|
97
|
+
noteStore: NoteStore,
|
|
98
|
+
keyStore: KeyStore,
|
|
99
|
+
addressStore: AddressStore,
|
|
100
|
+
aztecNode: AztecNode,
|
|
101
|
+
anchorBlockStore: AnchorBlockStore,
|
|
102
|
+
private readonly senderTaggingStore: SenderTaggingStore,
|
|
103
|
+
recipientTaggingStore: RecipientTaggingStore,
|
|
104
|
+
senderAddressBookStore: SenderAddressBookStore,
|
|
105
|
+
capsuleStore: CapsuleStore,
|
|
106
|
+
privateEventStore: PrivateEventStore,
|
|
82
107
|
private totalPublicCalldataCount: number = 0,
|
|
83
108
|
protected sideEffectCounter: number = 0,
|
|
84
109
|
log = createLogger('simulator:client_execution_context'),
|
|
@@ -86,7 +111,24 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
86
111
|
private senderForTags?: AztecAddress,
|
|
87
112
|
private simulator?: CircuitSimulator,
|
|
88
113
|
) {
|
|
89
|
-
super(
|
|
114
|
+
super(
|
|
115
|
+
callContext.contractAddress,
|
|
116
|
+
authWitnesses,
|
|
117
|
+
capsules,
|
|
118
|
+
anchorBlockHeader,
|
|
119
|
+
contractStore,
|
|
120
|
+
noteStore,
|
|
121
|
+
keyStore,
|
|
122
|
+
addressStore,
|
|
123
|
+
aztecNode,
|
|
124
|
+
anchorBlockStore,
|
|
125
|
+
recipientTaggingStore,
|
|
126
|
+
senderAddressBookStore,
|
|
127
|
+
capsuleStore,
|
|
128
|
+
privateEventStore,
|
|
129
|
+
log,
|
|
130
|
+
scopes,
|
|
131
|
+
);
|
|
90
132
|
}
|
|
91
133
|
|
|
92
134
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -152,7 +194,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
152
194
|
}
|
|
153
195
|
|
|
154
196
|
/**
|
|
155
|
-
* Returns the pre
|
|
197
|
+
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
156
198
|
*/
|
|
157
199
|
public getUsedPreTags(): PreTag[] {
|
|
158
200
|
return this.taggingIndexCache.getUsedPreTags();
|
|
@@ -202,11 +244,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
202
244
|
* @returns An app tag to be used in a log.
|
|
203
245
|
*/
|
|
204
246
|
public async privateGetNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
|
|
205
|
-
const secret = await this
|
|
206
|
-
this.contractAddress,
|
|
207
|
-
sender,
|
|
208
|
-
recipient,
|
|
209
|
-
);
|
|
247
|
+
const secret = await this.#calculateDirectionalAppTaggingSecret(this.contractAddress, sender, recipient);
|
|
210
248
|
|
|
211
249
|
const index = await this.#getIndexToUseForSecret(secret);
|
|
212
250
|
this.log.debug(
|
|
@@ -217,6 +255,22 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
217
255
|
return Tag.compute({ secret, index });
|
|
218
256
|
}
|
|
219
257
|
|
|
258
|
+
async #calculateDirectionalAppTaggingSecret(
|
|
259
|
+
contractAddress: AztecAddress,
|
|
260
|
+
sender: AztecAddress,
|
|
261
|
+
recipient: AztecAddress,
|
|
262
|
+
) {
|
|
263
|
+
const senderCompleteAddress = await this.getCompleteAddress(sender);
|
|
264
|
+
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
265
|
+
return DirectionalAppTaggingSecret.compute(
|
|
266
|
+
senderCompleteAddress,
|
|
267
|
+
senderIvsk,
|
|
268
|
+
recipient,
|
|
269
|
+
contractAddress,
|
|
270
|
+
recipient,
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
|
|
220
274
|
async #getIndexToUseForSecret(secret: DirectionalAppTaggingSecret): Promise<number> {
|
|
221
275
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
222
276
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
@@ -227,8 +281,9 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
227
281
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
228
282
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
229
283
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
230
|
-
await this.
|
|
231
|
-
|
|
284
|
+
await syncSenderTaggingIndexes(secret, this.contractAddress, this.aztecNode, this.senderTaggingStore);
|
|
285
|
+
|
|
286
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret);
|
|
232
287
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
233
288
|
// Otherwise, the next index to use is one past the last used index
|
|
234
289
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -282,6 +337,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
282
337
|
* Real notes coming from DB will have a leafIndex which
|
|
283
338
|
* represents their index in the note hash tree.
|
|
284
339
|
*
|
|
340
|
+
* @param owner - The owner of the notes. If undefined, returns notes for all owners.
|
|
285
341
|
* @param storageSlot - The storage slot.
|
|
286
342
|
* @param numSelects - The number of valid selects in selectBy and selectValues.
|
|
287
343
|
* @param selectBy - An array of indices of the fields to selects.
|
|
@@ -295,6 +351,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
295
351
|
* @returns Array of note data.
|
|
296
352
|
*/
|
|
297
353
|
public override async utilityGetNotes(
|
|
354
|
+
owner: AztecAddress | undefined,
|
|
298
355
|
storageSlot: Fr,
|
|
299
356
|
numSelects: number,
|
|
300
357
|
selectByIndexes: number[],
|
|
@@ -311,11 +368,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
311
368
|
status: NoteStatus,
|
|
312
369
|
): Promise<NoteData[]> {
|
|
313
370
|
// Nullified pending notes are already removed from the list.
|
|
314
|
-
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, storageSlot);
|
|
371
|
+
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
|
|
315
372
|
|
|
316
373
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
317
|
-
|
|
374
|
+
|
|
375
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore);
|
|
376
|
+
const dbNotes = await noteService.getNotes(
|
|
318
377
|
this.callContext.contractAddress,
|
|
378
|
+
owner,
|
|
319
379
|
storageSlot,
|
|
320
380
|
status,
|
|
321
381
|
this.scopes,
|
|
@@ -365,7 +425,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
365
425
|
/**
|
|
366
426
|
* Keep track of the new note created during execution.
|
|
367
427
|
* It can be used in subsequent calls (or transactions when chaining txs is possible).
|
|
368
|
-
* @param
|
|
428
|
+
* @param owner - The owner of the note.
|
|
369
429
|
* @param storageSlot - The storage slot.
|
|
370
430
|
* @param randomness - The randomness injected into the note.
|
|
371
431
|
* @param noteTypeId - The type ID of the note.
|
|
@@ -374,6 +434,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
374
434
|
* @returns
|
|
375
435
|
*/
|
|
376
436
|
public privateNotifyCreatedNote(
|
|
437
|
+
owner: AztecAddress,
|
|
377
438
|
storageSlot: Fr,
|
|
378
439
|
randomness: Fr,
|
|
379
440
|
noteTypeId: NoteSelector,
|
|
@@ -393,6 +454,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
393
454
|
this.noteCache.addNewNote(
|
|
394
455
|
{
|
|
395
456
|
contractAddress: this.callContext.contractAddress,
|
|
457
|
+
owner,
|
|
396
458
|
storageSlot,
|
|
397
459
|
randomness,
|
|
398
460
|
noteNonce: Fr.ZERO, // Nonce cannot be known during private execution.
|
|
@@ -489,9 +551,11 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
489
551
|
|
|
490
552
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
491
553
|
|
|
492
|
-
await verifyCurrentClassId(targetContractAddress, this.
|
|
554
|
+
await verifyCurrentClassId(targetContractAddress, this.aztecNode, this.contractStore, this.anchorBlockHeader);
|
|
555
|
+
|
|
556
|
+
await this.contractStore.syncPrivateState(targetContractAddress, functionSelector, this.utilityExecutor);
|
|
493
557
|
|
|
494
|
-
const targetArtifact = await this.
|
|
558
|
+
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
495
559
|
targetContractAddress,
|
|
496
560
|
functionSelector,
|
|
497
561
|
);
|
|
@@ -505,12 +569,23 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
505
569
|
derivedTxContext,
|
|
506
570
|
derivedCallContext,
|
|
507
571
|
this.anchorBlockHeader,
|
|
572
|
+
this.utilityExecutor,
|
|
508
573
|
this.authWitnesses,
|
|
509
574
|
this.capsules,
|
|
510
575
|
this.executionCache,
|
|
511
576
|
this.noteCache,
|
|
512
577
|
this.taggingIndexCache,
|
|
513
|
-
this.
|
|
578
|
+
this.contractStore,
|
|
579
|
+
this.noteStore,
|
|
580
|
+
this.keyStore,
|
|
581
|
+
this.addressStore,
|
|
582
|
+
this.aztecNode,
|
|
583
|
+
this.anchorBlockStore,
|
|
584
|
+
this.senderTaggingStore,
|
|
585
|
+
this.recipientTaggingStore,
|
|
586
|
+
this.senderAddressBookStore,
|
|
587
|
+
this.capsuleStore,
|
|
588
|
+
this.privateEventStore,
|
|
514
589
|
this.totalPublicCalldataCount,
|
|
515
590
|
sideEffectCounter,
|
|
516
591
|
this.log,
|
|
@@ -623,7 +698,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
623
698
|
}
|
|
624
699
|
|
|
625
700
|
public getDebugFunctionName() {
|
|
626
|
-
return this.
|
|
701
|
+
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
627
702
|
}
|
|
628
703
|
|
|
629
704
|
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|