@aztec/pxe 0.0.1-commit.b655e406 → 0.0.1-commit.d1f2d6c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bin/check_oracle_version.d.ts +1 -1
- package/dest/bin/check_oracle_version.js +105 -15
- package/dest/block_synchronizer/block_synchronizer.d.ts +43 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/block_synchronizer/block_synchronizer.js +147 -0
- 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 +6 -12
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +24 -13
- package/dest/config/package_info.d.ts +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/benchmarked_node.js +77 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +44 -16
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +78 -38
- package/dest/contract_function_simulator/execution_note_cache.d.ts +25 -14
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +59 -34
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +2 -2
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
- package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
- package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.d.ts +2 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -3
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +5 -2
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +3 -3
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +6 -4
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +12 -3
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
- package/dest/contract_function_simulator/oracle/index.d.ts +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +27 -17
- 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 +14 -8
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +16 -11
- package/dest/contract_function_simulator/oracle/oracle.d.ts +12 -9
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +67 -39
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +10 -16
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +28 -18
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +37 -33
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +59 -49
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +76 -25
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +171 -64
- 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 +38 -0
- package/dest/entrypoints/client/bundle/index.d.ts +1 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +0 -1
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +13 -4
- package/dest/entrypoints/client/lazy/index.d.ts +1 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +0 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +13 -4
- package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +3 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +2 -1
- package/dest/entrypoints/server/utils.d.ts +1 -1
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +13 -20
- 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 +16 -0
- package/dest/events/event_service.d.ts.map +1 -0
- package/dest/events/event_service.js +45 -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 +38 -0
- package/dest/job_coordinator/job_coordinator.d.ts +74 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +93 -0
- package/dest/logs/log_service.d.ts +27 -0
- package/dest/logs/log_service.d.ts.map +1 -0
- package/dest/logs/log_service.js +129 -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 +49 -0
- package/dest/notes/note_service.d.ts.map +1 -0
- package/dest/notes/note_service.js +149 -0
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +4 -3
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +1 -1
- package/dest/private_kernel/hints/index.d.ts +2 -2
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
- package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +19 -13
- package/dest/private_kernel/index.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +15 -15
- package/dest/private_kernel/private_kernel_oracle.d.ts +26 -29
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +90 -2
- package/dest/pxe.d.ts +54 -83
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +193 -241
- package/dest/storage/address_store/address_store.d.ts +11 -0
- package/dest/storage/address_store/address_store.d.ts.map +1 -0
- package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +1 -1
- package/dest/storage/address_store/index.d.ts +2 -0
- package/dest/storage/address_store/index.d.ts.map +1 -0
- package/dest/storage/address_store/index.js +1 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
- package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +2 -9
- package/dest/storage/anchor_block_store/index.d.ts +2 -0
- package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
- package/dest/storage/anchor_block_store/index.js +1 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_store.js +255 -0
- package/dest/storage/capsule_store/index.d.ts +2 -0
- package/dest/storage/capsule_store/index.d.ts.map +1 -0
- package/dest/storage/capsule_store/index.js +1 -0
- package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +8 -15
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +46 -15
- package/dest/storage/contract_store/index.d.ts +2 -0
- package/dest/storage/contract_store/index.d.ts.map +1 -0
- package/dest/storage/contract_store/index.js +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
- package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
- package/dest/storage/index.d.ts +8 -8
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +7 -7
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/note_store/index.d.ts +3 -0
- package/dest/storage/note_store/index.d.ts.map +1 -0
- package/dest/storage/note_store/index.js +2 -0
- package/dest/storage/note_store/note_store.d.ts +73 -0
- package/dest/storage/note_store/note_store.d.ts.map +1 -0
- package/dest/storage/note_store/note_store.js +303 -0
- package/dest/storage/note_store/stored_note.d.ts +16 -0
- package/dest/storage/note_store/stored_note.d.ts.map +1 -0
- package/dest/storage/note_store/stored_note.js +43 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
- package/dest/storage/private_event_store/private_event_store.js +250 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
- package/dest/storage/private_event_store/stored_private_event.js +56 -0
- package/dest/storage/tagging_store/index.d.ts +4 -0
- package/dest/storage/tagging_store/index.d.ts.map +1 -0
- package/dest/storage/tagging_store/index.js +3 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/recipient_tagging_store.js +99 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_address_book_store.js +30 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +77 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_tagging_store.js +278 -0
- package/dest/tagging/constants.d.ts +2 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +10 -2
- package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
- package/dest/tagging/get_all_logs_by_tags.js +46 -0
- package/dest/tagging/index.d.ts +16 -6
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +15 -5
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +15 -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 +15 -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 +32 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +21 -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 +29 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +21 -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 +60 -0
- package/package.json +20 -19
- package/src/bin/check_oracle_version.ts +130 -20
- package/src/block_synchronizer/block_synchronizer.ts +174 -0
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +24 -25
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +127 -42
- package/src/contract_function_simulator/execution_note_cache.ts +58 -28
- 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/index.ts +1 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -1
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -2
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +14 -2
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +40 -15
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +30 -14
- package/src/contract_function_simulator/oracle/oracle.ts +86 -41
- package/src/contract_function_simulator/oracle/private_execution.ts +42 -30
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +139 -60
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +260 -70
- 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 +49 -0
- package/src/entrypoints/client/bundle/index.ts +0 -1
- package/src/entrypoints/client/bundle/utils.ts +10 -4
- package/src/entrypoints/client/lazy/index.ts +0 -1
- package/src/entrypoints/client/lazy/utils.ts +10 -5
- package/src/entrypoints/pxe_creation_options.ts +4 -1
- package/src/entrypoints/server/index.ts +2 -1
- package/src/entrypoints/server/utils.ts +13 -31
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +73 -0
- package/src/events/index.ts +1 -0
- package/src/events/private_event_filter_validator.ts +46 -0
- package/src/job_coordinator/job_coordinator.ts +149 -0
- package/src/logs/log_service.ts +221 -0
- package/src/notes/index.ts +1 -0
- package/src/notes/note_service.ts +198 -0
- package/src/oracle_version.ts +4 -3
- package/src/private_kernel/hints/index.ts +1 -1
- package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +38 -31
- package/src/private_kernel/private_kernel_execution_prover.ts +15 -21
- package/src/private_kernel/private_kernel_oracle.ts +118 -37
- package/src/pxe.ts +263 -313
- 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_store/capsule_store.ts +315 -0
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +65 -20
- package/src/storage/contract_store/index.ts +1 -0
- package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
- package/src/storage/index.ts +7 -7
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/note_store/note_store.ts +381 -0
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +363 -0
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/index.ts +3 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +129 -0
- package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
- package/src/storage/tagging_store/sender_tagging_store.ts +345 -0
- package/src/tagging/constants.ts +10 -2
- package/src/tagging/get_all_logs_by_tags.ts +68 -0
- package/src/tagging/index.ts +18 -5
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +143 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +49 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +99 -0
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +36 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +84 -0
- package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -274
- package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
- package/dest/contract_function_simulator/execution_data_provider.js +0 -14
- package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
- package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_node.js +0 -27
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
- package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -701
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -45
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
- package/dest/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/capsule_data_provider.js +0 -118
- package/dest/storage/capsule_data_provider/index.d.ts +0 -2
- package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.d.ts +0 -2
- package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.d.ts +0 -3
- package/dest/storage/note_data_provider/index.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.js +0 -2
- package/dest/storage/note_data_provider/note_dao.d.ts +0 -100
- package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_dao.js +0 -102
- package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -83
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_data_provider.js +0 -308
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -43
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -104
- package/dest/storage/sync_data_provider/index.d.ts +0 -2
- package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/index.js +0 -1
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -10
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.d.ts +0 -2
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
- package/dest/synchronizer/index.d.ts +0 -2
- package/dest/synchronizer/index.d.ts.map +0 -1
- package/dest/synchronizer/index.js +0 -1
- package/dest/synchronizer/synchronizer.d.ts +0 -35
- package/dest/synchronizer/synchronizer.d.ts.map +0 -1
- package/dest/synchronizer/synchronizer.js +0 -101
- package/dest/tagging/siloed_tag.d.ts +0 -14
- package/dest/tagging/siloed_tag.d.ts.map +0 -1
- package/dest/tagging/siloed_tag.js +0 -20
- package/dest/tagging/tag.d.ts +0 -12
- package/dest/tagging/tag.d.ts.map +0 -1
- package/dest/tagging/tag.js +0 -17
- package/dest/tagging/utils.d.ts +0 -18
- package/dest/tagging/utils.d.ts.map +0 -1
- package/dest/tagging/utils.js +0 -24
- package/src/contract_function_simulator/execution_data_provider.ts +0 -343
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1019
- package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
- package/src/storage/address_data_provider/index.ts +0 -1
- package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -147
- package/src/storage/capsule_data_provider/index.ts +0 -1
- package/src/storage/contract_data_provider/index.ts +0 -1
- package/src/storage/note_data_provider/index.ts +0 -2
- package/src/storage/note_data_provider/note_dao.ts +0 -154
- package/src/storage/note_data_provider/note_data_provider.ts +0 -393
- package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -148
- 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/synchronizer/synchronizer.ts +0 -120
- package/src/tagging/siloed_tag.ts +0 -22
- package/src/tagging/tag.ts +0 -16
- package/src/tagging/utils.ts +0 -31
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { type ACVMWitness, type CircuitSimulator } from '@aztec/simulator/client';
|
|
3
|
-
import { type FunctionArtifact, type FunctionArtifactWithContractName, type FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
|
+
import { type FunctionArtifact, type FunctionArtifactWithContractName, type FunctionCall, type FunctionSelector } from '@aztec/stdlib/abi';
|
|
4
4
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
5
|
import type { ContractInstance } from '@aztec/stdlib/contract';
|
|
6
6
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
7
7
|
import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
8
8
|
import { BlockHeader, PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
9
|
-
import
|
|
10
|
-
import type { ExecutionDataProvider } from '../execution_data_provider.js';
|
|
9
|
+
import { ContractStore } from '../../storage/contract_store/index.js';
|
|
11
10
|
import type { PrivateExecutionOracle } from './private_execution_oracle.js';
|
|
12
11
|
/**
|
|
13
12
|
* Execute a private function and return the execution result.
|
|
@@ -30,19 +29,14 @@ export declare function extractPrivateCircuitPublicInputs(artifact: FunctionArti
|
|
|
30
29
|
* from the instance is used.
|
|
31
30
|
* @param contractAddress - The address of the contract to read the class id for.
|
|
32
31
|
* @param instance - The instance of the contract.
|
|
33
|
-
* @param
|
|
34
|
-
* @param
|
|
35
|
-
* @param timestamp - The timestamp at which to obtain the class id from the DelayedPublicMutable.
|
|
32
|
+
* @param aztecNode - The Aztec node to query for storage.
|
|
33
|
+
* @param header - The header of the block at which to load the DelayedPublicMutable storing the class id.
|
|
36
34
|
* @returns The current class id.
|
|
37
35
|
*/
|
|
38
|
-
export declare function readCurrentClassId(contractAddress: AztecAddress, instance: ContractInstance,
|
|
36
|
+
export declare function readCurrentClassId(contractAddress: AztecAddress, instance: ContractInstance, aztecNode: AztecNode, header: BlockHeader): Promise<Fr>;
|
|
39
37
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* @param contractAddress - The address of the contract to verify class id for.
|
|
43
|
-
* @param executionDataProvider - The execution data provider.
|
|
44
|
-
* @param header - The header of the block at which to verify the current class id. If not provided, the anchor block
|
|
45
|
-
* header of the execution data provider is used.
|
|
38
|
+
* Ensures the contract's private state is synchronized and that the PXE holds the current class artifact for
|
|
39
|
+
* the contract.
|
|
46
40
|
*/
|
|
47
|
-
export declare function
|
|
48
|
-
//# sourceMappingURL=
|
|
41
|
+
export declare function ensureContractSynced(contractAddress: AztecAddress, functionToInvokeAfterSync: FunctionSelector | null, utilityExecutor: (call: FunctionCall) => Promise<any>, aztecNode: AztecNode, contractStore: ContractStore, header: BlockHeader): Promise<void>;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leGVjdXRpb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3Ivb3JhY2xlL3ByaXZhdGVfZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUlwRCxPQUFPLEVBQ0wsS0FBSyxXQUFXLEVBQ2hCLEtBQUssZ0JBQWdCLEVBS3RCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssZ0NBQWdDLEVBQ3JDLEtBQUssWUFBWSxFQUNqQixLQUFLLGdCQUFnQixFQUV0QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFL0QsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV0RSxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTVFOzs7Ozs7O0dBT0c7QUFDSCx3QkFBc0Isc0JBQXNCLENBQzFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFDM0Isc0JBQXNCLEVBQUUsc0JBQXNCLEVBQzlDLFFBQVEsRUFBRSxnQ0FBZ0MsRUFDMUMsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLEdBQUcseUNBQThDLEdBQ2hELE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQTJFckM7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQixpQ0FBaUMsQ0FDL0MsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixjQUFjLEVBQUUsV0FBVyxHQUMxQiwwQkFBMEIsQ0FhNUI7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixrQkFBa0IsQ0FDdEMsZUFBZSxFQUFFLFlBQVksRUFDN0IsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixTQUFTLEVBQUUsU0FBUyxFQUNwQixNQUFNLEVBQUUsV0FBVyxlQWNwQjtBQTBCRDs7O0dBR0c7QUFDSCx3QkFBc0Isb0JBQW9CLENBQ3hDLGVBQWUsRUFBRSxZQUFZLEVBQzdCLHlCQUF5QixFQUFFLGdCQUFnQixHQUFHLElBQUksRUFDbEQsZUFBZSxFQUFFLENBQUMsSUFBSSxFQUFFLFlBQVksS0FBSyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQ3JELFNBQVMsRUFBRSxTQUFTLEVBQ3BCLGFBQWEsRUFBRSxhQUFhLEVBQzVCLE1BQU0sRUFBRSxXQUFXLEdBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FLZiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private_execution.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"private_execution.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAIpD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAKtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gCAAgC,EACrC,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,gBAAgB,EAC3B,sBAAsB,EAAE,sBAAsB,EAC9C,QAAQ,EAAE,gCAAgC,EAC1C,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,yCAA8C,GAChD,OAAO,CAAC,0BAA0B,CAAC,CA2ErC;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,gBAAgB,EAC1B,cAAc,EAAE,WAAW,GAC1B,0BAA0B,CAa5B;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,eAcpB;AA0BD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,YAAY,EAC7B,yBAAyB,EAAE,gBAAgB,GAAG,IAAI,EAClD,eAAe,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,GAAG,CAAC,EACrD,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAKf"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, 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
5
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
6
6
|
import { ExecutionError, extractCallStack, resolveAssertionMessageFromError, witnessMapToFields } from '@aztec/simulator/client';
|
|
7
7
|
import { countArgumentsSize } from '@aztec/stdlib/abi';
|
|
8
|
+
import { L2BlockHash } from '@aztec/stdlib/block';
|
|
8
9
|
import { DelayedPublicMutableValues, DelayedPublicMutableValuesWithHash } from '@aztec/stdlib/delayed-public-mutable';
|
|
9
10
|
import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
10
11
|
import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
@@ -48,7 +49,6 @@ import { Oracle } from './oracle.js';
|
|
|
48
49
|
});
|
|
49
50
|
const contractClassLogs = privateExecutionOracle.getContractClassLogs();
|
|
50
51
|
const rawReturnValues = await privateExecutionOracle.privateLoadFromExecutionCache(publicInputs.returnsHash);
|
|
51
|
-
const noteHashLeafIndexMap = privateExecutionOracle.getNoteHashLeafIndexMap();
|
|
52
52
|
const newNotes = privateExecutionOracle.getNewNotes();
|
|
53
53
|
const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
|
|
54
54
|
const offchainEffects = privateExecutionOracle.getOffchainEffects();
|
|
@@ -62,7 +62,7 @@ import { Oracle } from './oracle.js';
|
|
|
62
62
|
timerSubtractionList = timerSubtractionList.flatMap((nested)=>nested.nestedExecutionResults ?? []);
|
|
63
63
|
}
|
|
64
64
|
log.debug(`Returning from call to ${contractAddress.toString()}:${functionSelector}`);
|
|
65
|
-
return new PrivateCallExecutionResult(artifact.bytecode, Buffer.from(artifact.verificationKey, 'base64'), partialWitness, publicInputs,
|
|
65
|
+
return new PrivateCallExecutionResult(artifact.bytecode, Buffer.from(artifact.verificationKey, 'base64'), partialWitness, publicInputs, newNotes, noteHashNullifierCounterMap, rawReturnValues, offchainEffects, preTags, nestedExecutionResults, contractClassLogs, {
|
|
66
66
|
timings: {
|
|
67
67
|
witgen: witgenTime,
|
|
68
68
|
oracles: acirExecutionResult.oracles
|
|
@@ -93,13 +93,15 @@ import { Oracle } from './oracle.js';
|
|
|
93
93
|
* from the instance is used.
|
|
94
94
|
* @param contractAddress - The address of the contract to read the class id for.
|
|
95
95
|
* @param instance - The instance of the contract.
|
|
96
|
-
* @param
|
|
97
|
-
* @param
|
|
98
|
-
* @param timestamp - The timestamp at which to obtain the class id from the DelayedPublicMutable.
|
|
96
|
+
* @param aztecNode - The Aztec node to query for storage.
|
|
97
|
+
* @param header - The header of the block at which to load the DelayedPublicMutable storing the class id.
|
|
99
98
|
* @returns The current class id.
|
|
100
|
-
*/ export async function readCurrentClassId(contractAddress, instance,
|
|
99
|
+
*/ export async function readCurrentClassId(contractAddress, instance, aztecNode, header) {
|
|
100
|
+
const blockHashFr = await header.hash();
|
|
101
|
+
const blockHash = L2BlockHash.fromField(blockHashFr);
|
|
102
|
+
const timestamp = header.globalVariables.timestamp;
|
|
101
103
|
const { delayedPublicMutableSlot } = await DelayedPublicMutableValuesWithHash.getContractUpdateSlots(contractAddress);
|
|
102
|
-
const delayedPublicMutableValues = await DelayedPublicMutableValues.readFromTree(delayedPublicMutableSlot, (slot)=>
|
|
104
|
+
const delayedPublicMutableValues = await DelayedPublicMutableValues.readFromTree(delayedPublicMutableSlot, (slot)=>aztecNode.getPublicStorageAt(blockHash, ProtocolContractAddress.ContractInstanceRegistry, slot));
|
|
103
105
|
let currentClassId = delayedPublicMutableValues.svc.getCurrentAt(timestamp)[0];
|
|
104
106
|
if (currentClassId.isZero()) {
|
|
105
107
|
currentClassId = instance.originalContractClassId;
|
|
@@ -107,17 +109,25 @@ import { Oracle } from './oracle.js';
|
|
|
107
109
|
return currentClassId;
|
|
108
110
|
}
|
|
109
111
|
/**
|
|
110
|
-
* Verify that the current class id of a contract obtained from AztecNode is the same as the one in
|
|
111
|
-
* provider (i.e. PXE).
|
|
112
|
-
* @param
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
const currentClassId = await readCurrentClassId(contractAddress, instance, executionDataProvider, header.globalVariables.blockNumber, header.globalVariables.timestamp);
|
|
112
|
+
* Verify that the current class id of a contract obtained from AztecNode is the same as the one in contract data
|
|
113
|
+
* provider (i.e. PXE's own storage).
|
|
114
|
+
* @param header - The header of the block at which to verify the current class id.
|
|
115
|
+
*/ async function verifyCurrentClassId(contractAddress, aztecNode, contractStore, header) {
|
|
116
|
+
const instance = await contractStore.getContractInstance(contractAddress);
|
|
117
|
+
if (!instance) {
|
|
118
|
+
throw new Error(`No contract instance found for address ${contractAddress.toString()}`);
|
|
119
|
+
}
|
|
120
|
+
const currentClassId = await readCurrentClassId(contractAddress, instance, aztecNode, header);
|
|
120
121
|
if (!instance.currentContractClassId.equals(currentClassId)) {
|
|
121
122
|
throw new Error(`Contract ${contractAddress} is outdated, current class id is ${currentClassId}, local class id is ${instance.currentContractClassId}`);
|
|
122
123
|
}
|
|
123
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Ensures the contract's private state is synchronized and that the PXE holds the current class artifact for
|
|
127
|
+
* the contract.
|
|
128
|
+
*/ export async function ensureContractSynced(contractAddress, functionToInvokeAfterSync, utilityExecutor, aztecNode, contractStore, header) {
|
|
129
|
+
await Promise.all([
|
|
130
|
+
contractStore.syncPrivateState(contractAddress, functionToInvokeAfterSync, utilityExecutor),
|
|
131
|
+
verifyCurrentClassId(contractAddress, aztecNode, contractStore, header)
|
|
132
|
+
]);
|
|
133
|
+
}
|
|
@@ -1,14 +1,24 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { KeyStore } from '@aztec/key-store';
|
|
2
3
|
import { type CircuitSimulator } from '@aztec/simulator/client';
|
|
3
|
-
import { type FunctionAbi, FunctionSelector, type NoteSelector } from '@aztec/stdlib/abi';
|
|
4
|
+
import { type FunctionAbi, type FunctionCall, FunctionSelector, type NoteSelector } from '@aztec/stdlib/abi';
|
|
4
5
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
5
6
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
6
8
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
7
|
-
import type
|
|
9
|
+
import { type ContractClassLog, type PreTag } from '@aztec/stdlib/logs';
|
|
10
|
+
import { Tag } from '@aztec/stdlib/logs';
|
|
8
11
|
import { type NoteStatus } from '@aztec/stdlib/note';
|
|
9
12
|
import { type BlockHeader, CallContext, Capsule, CountedContractClassLog, NoteAndSlot, PrivateCallExecutionResult, type TxContext } from '@aztec/stdlib/tx';
|
|
10
|
-
import {
|
|
11
|
-
import type {
|
|
13
|
+
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
14
|
+
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
15
|
+
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
16
|
+
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
17
|
+
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
18
|
+
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
19
|
+
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
20
|
+
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
21
|
+
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
12
22
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
13
23
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
14
24
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
@@ -24,9 +34,12 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
24
34
|
private readonly callContext;
|
|
25
35
|
/** Header of a block whose state is used during private execution (not the block the transaction is included in). */
|
|
26
36
|
protected readonly anchorBlockHeader: BlockHeader;
|
|
37
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
38
|
+
private readonly utilityExecutor;
|
|
27
39
|
private readonly executionCache;
|
|
28
40
|
private readonly noteCache;
|
|
29
41
|
private readonly taggingIndexCache;
|
|
42
|
+
private readonly senderTaggingStore;
|
|
30
43
|
private totalPublicCalldataCount;
|
|
31
44
|
protected sideEffectCounter: number;
|
|
32
45
|
private senderForTags?;
|
|
@@ -41,16 +54,6 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
41
54
|
* Users can also use this to get a clearer idea of what's happened during a simulation.
|
|
42
55
|
*/
|
|
43
56
|
private newNotes;
|
|
44
|
-
/**
|
|
45
|
-
* Notes from previous transactions that are returned to the oracle call `getNotes` during this execution.
|
|
46
|
-
* The mapping maps from the unique siloed note hash to the index for notes created in private executions.
|
|
47
|
-
* It maps from siloed note hash to the index for notes created by public functions.
|
|
48
|
-
*
|
|
49
|
-
* They are not part of the ExecutionNoteCache and being forwarded to nested contexts via `extend()`
|
|
50
|
-
* because these notes are meant to be maintained on a per-call basis
|
|
51
|
-
* They should act as references for the read requests output by an app circuit via public inputs.
|
|
52
|
-
*/
|
|
53
|
-
private noteHashLeafIndexMap;
|
|
54
57
|
private noteHashNullifierCounterMap;
|
|
55
58
|
private contractClassLogs;
|
|
56
59
|
private offchainEffects;
|
|
@@ -58,8 +61,10 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
58
61
|
constructor(argsHash: Fr, txContext: TxContext, callContext: CallContext,
|
|
59
62
|
/** Header of a block whose state is used during private execution (not the block the transaction is included in). */
|
|
60
63
|
anchorBlockHeader: BlockHeader,
|
|
64
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
65
|
+
utilityExecutor: (call: FunctionCall) => Promise<void>,
|
|
61
66
|
/** List of transient auth witnesses to be used during this simulation */
|
|
62
|
-
authWitnesses: AuthWitness[], capsules: Capsule[], executionCache: HashedValuesCache, noteCache: ExecutionNoteCache, taggingIndexCache: ExecutionTaggingIndexCache,
|
|
67
|
+
authWitnesses: AuthWitness[], capsules: Capsule[], executionCache: HashedValuesCache, noteCache: ExecutionNoteCache, taggingIndexCache: ExecutionTaggingIndexCache, contractStore: ContractStore, noteStore: NoteStore, keyStore: KeyStore, addressStore: AddressStore, aztecNode: AztecNode, anchorBlockStore: AnchorBlockStore, senderTaggingStore: SenderTaggingStore, recipientTaggingStore: RecipientTaggingStore, senderAddressBookStore: SenderAddressBookStore, capsuleStore: CapsuleStore, privateEventStore: PrivateEventStore, jobId: string, totalPublicCalldataCount?: number, sideEffectCounter?: number, log?: import("@aztec/foundation/log").Logger, scopes?: AztecAddress[], senderForTags?: AztecAddress | undefined, simulator?: CircuitSimulator | undefined);
|
|
63
68
|
getPrivateContextInputs(): PrivateContextInputs;
|
|
64
69
|
/**
|
|
65
70
|
* Writes the function inputs to the initial witness.
|
|
@@ -67,11 +72,6 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
67
72
|
* @returns The initial witness.
|
|
68
73
|
*/
|
|
69
74
|
getInitialWitness(abi: FunctionAbi): Map<number, string>;
|
|
70
|
-
/**
|
|
71
|
-
* The KernelProver will use this to fully populate witnesses and provide hints to the kernel circuit
|
|
72
|
-
* regarding which note hash each settled read request corresponds to.
|
|
73
|
-
*/
|
|
74
|
-
getNoteHashLeafIndexMap(): Map<bigint, bigint>;
|
|
75
75
|
/**
|
|
76
76
|
* Get the data for the newly created notes.
|
|
77
77
|
*/
|
|
@@ -88,7 +88,7 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
88
88
|
data: Fr[];
|
|
89
89
|
}[];
|
|
90
90
|
/**
|
|
91
|
-
* Returns the pre
|
|
91
|
+
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
92
92
|
*/
|
|
93
93
|
getUsedPreTags(): PreTag[];
|
|
94
94
|
/**
|
|
@@ -146,6 +146,7 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
146
146
|
* Real notes coming from DB will have a leafIndex which
|
|
147
147
|
* represents their index in the note hash tree.
|
|
148
148
|
*
|
|
149
|
+
* @param owner - The owner of the notes. If undefined, returns notes for all owners.
|
|
149
150
|
* @param storageSlot - The storage slot.
|
|
150
151
|
* @param numSelects - The number of valid selects in selectBy and selectValues.
|
|
151
152
|
* @param selectBy - An array of indices of the fields to selects.
|
|
@@ -158,18 +159,19 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
158
159
|
* @param status - The status of notes to fetch.
|
|
159
160
|
* @returns Array of note data.
|
|
160
161
|
*/
|
|
161
|
-
utilityGetNotes(storageSlot: Fr, numSelects: number, selectByIndexes: number[], selectByOffsets: number[], selectByLengths: number[], selectValues: Fr[], selectComparators: number[], sortByIndexes: number[], sortByOffsets: number[], sortByLengths: number[], sortOrder: number[], limit: number, offset: number, status: NoteStatus): Promise<NoteData[]>;
|
|
162
|
+
utilityGetNotes(owner: AztecAddress | undefined, storageSlot: Fr, numSelects: number, selectByIndexes: number[], selectByOffsets: number[], selectByLengths: number[], selectValues: Fr[], selectComparators: number[], sortByIndexes: number[], sortByOffsets: number[], sortByLengths: number[], sortOrder: number[], limit: number, offset: number, status: NoteStatus): Promise<NoteData[]>;
|
|
162
163
|
/**
|
|
163
164
|
* Keep track of the new note created during execution.
|
|
164
165
|
* It can be used in subsequent calls (or transactions when chaining txs is possible).
|
|
165
|
-
* @param
|
|
166
|
+
* @param owner - The owner of the note.
|
|
166
167
|
* @param storageSlot - The storage slot.
|
|
168
|
+
* @param randomness - The randomness injected into the note.
|
|
167
169
|
* @param noteTypeId - The type ID of the note.
|
|
168
170
|
* @param noteItems - The items to be included in a Note.
|
|
169
171
|
* @param noteHash - A hash of the new note.
|
|
170
172
|
* @returns
|
|
171
173
|
*/
|
|
172
|
-
privateNotifyCreatedNote(storageSlot: Fr, noteTypeId: NoteSelector, noteItems: Fr[], noteHash: Fr, counter: number): void;
|
|
174
|
+
privateNotifyCreatedNote(owner: AztecAddress, storageSlot: Fr, randomness: Fr, noteTypeId: NoteSelector, noteItems: Fr[], noteHash: Fr, counter: number): void;
|
|
173
175
|
/**
|
|
174
176
|
* Adding a siloed nullifier into the current set of all pending nullifiers created
|
|
175
177
|
* within the current transaction/execution.
|
|
@@ -184,6 +186,14 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
184
186
|
* @param noteHash - A hash of the new note.
|
|
185
187
|
*/
|
|
186
188
|
privateNotifyCreatedNullifier(innerNullifier: Fr): Promise<void>;
|
|
189
|
+
/**
|
|
190
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
|
|
191
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
192
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
193
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
194
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
195
|
+
*/
|
|
196
|
+
privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean>;
|
|
187
197
|
/**
|
|
188
198
|
* Emit a contract class log.
|
|
189
199
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -222,15 +232,9 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
222
232
|
*/
|
|
223
233
|
privateNotifySetPublicTeardownFunctionCall(_targetContractAddress: AztecAddress, calldataHash: Fr, _sideEffectCounter: number, _isStaticCall: boolean): Promise<void>;
|
|
224
234
|
privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void>;
|
|
225
|
-
|
|
226
|
-
* Derives the call context for a nested execution.
|
|
227
|
-
* @param targetContractAddress - The address of the contract being called.
|
|
228
|
-
* @param targetArtifact - The artifact of the function being called.
|
|
229
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
230
|
-
* @returns The derived call context.
|
|
231
|
-
*/
|
|
235
|
+
privateIsSideEffectCounterRevertible(sideEffectCounter: number): Promise<boolean>;
|
|
232
236
|
private deriveCallContext;
|
|
233
237
|
getDebugFunctionName(): Promise<string>;
|
|
234
238
|
utilityEmitOffchainEffect(data: Fr[]): Promise<void>;
|
|
235
239
|
}
|
|
236
|
-
//# sourceMappingURL=
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leGVjdXRpb25fb3JhY2xlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL29yYWNsZS9wcml2YXRlX2V4ZWN1dGlvbl9vcmFjbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFpQixNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFFaEIsS0FBSyxZQUFZLEVBQ2pCLGdCQUFnQixFQUNoQixLQUFLLFlBQVksRUFFbEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHM0QsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQStCLEtBQUssTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pDLE9BQU8sRUFBUSxLQUFLLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFDaEIsV0FBVyxFQUNYLE9BQU8sRUFDUCx1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLDBCQUEwQixFQUMxQixLQUFLLFNBQVMsRUFDZixNQUFNLGtCQUFrQixDQUFDO0FBRzFCLE9BQU8sS0FBSyxFQUFFLFlB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private_execution_oracle.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution_oracle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"private_execution_oracle.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,20 @@
|
|
|
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
5
|
import { toACVMWitness } from '@aztec/simulator/client';
|
|
6
6
|
import { FunctionSelector, countArgumentsSize } from '@aztec/stdlib/abi';
|
|
7
|
-
import {
|
|
7
|
+
import { L2BlockHash } from '@aztec/stdlib/block';
|
|
8
|
+
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
8
9
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
10
|
+
import { DirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
|
|
11
|
+
import { Tag } from '@aztec/stdlib/logs';
|
|
9
12
|
import { Note } from '@aztec/stdlib/note';
|
|
10
13
|
import { CallContext, CountedContractClassLog, NoteAndSlot } from '@aztec/stdlib/tx';
|
|
11
|
-
import {
|
|
14
|
+
import { NoteService } from '../../notes/note_service.js';
|
|
15
|
+
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
12
16
|
import { pickNotes } from '../pick_notes.js';
|
|
13
|
-
import {
|
|
17
|
+
import { ensureContractSynced, executePrivateFunction } from './private_execution.js';
|
|
14
18
|
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
15
19
|
/**
|
|
16
20
|
* The execution oracle for the private part of a transaction.
|
|
@@ -19,9 +23,11 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
19
23
|
txContext;
|
|
20
24
|
callContext;
|
|
21
25
|
anchorBlockHeader;
|
|
26
|
+
utilityExecutor;
|
|
22
27
|
executionCache;
|
|
23
28
|
noteCache;
|
|
24
29
|
taggingIndexCache;
|
|
30
|
+
senderTaggingStore;
|
|
25
31
|
totalPublicCalldataCount;
|
|
26
32
|
sideEffectCounter;
|
|
27
33
|
senderForTags;
|
|
@@ -35,21 +41,12 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
35
41
|
* This information is only for references (currently used for tests), and is not used for any sort of constrains.
|
|
36
42
|
* Users can also use this to get a clearer idea of what's happened during a simulation.
|
|
37
43
|
*/ newNotes;
|
|
38
|
-
/**
|
|
39
|
-
* Notes from previous transactions that are returned to the oracle call `getNotes` during this execution.
|
|
40
|
-
* The mapping maps from the unique siloed note hash to the index for notes created in private executions.
|
|
41
|
-
* It maps from siloed note hash to the index for notes created by public functions.
|
|
42
|
-
*
|
|
43
|
-
* They are not part of the ExecutionNoteCache and being forwarded to nested contexts via `extend()`
|
|
44
|
-
* because these notes are meant to be maintained on a per-call basis
|
|
45
|
-
* They should act as references for the read requests output by an app circuit via public inputs.
|
|
46
|
-
*/ noteHashLeafIndexMap;
|
|
47
44
|
noteHashNullifierCounterMap;
|
|
48
45
|
contractClassLogs;
|
|
49
46
|
offchainEffects;
|
|
50
47
|
nestedExecutionResults;
|
|
51
|
-
constructor(argsHash, txContext, callContext, /** Header of a block whose state is used during private execution (not the block the transaction is included in). */ anchorBlockHeader, /** List of transient auth witnesses to be used during this simulation */ authWitnesses, capsules, executionCache, noteCache, taggingIndexCache,
|
|
52
|
-
super(callContext.contractAddress, authWitnesses, capsules,
|
|
48
|
+
constructor(argsHash, txContext, callContext, /** Header of a block whose state is used during private execution (not the block the transaction is included in). */ anchorBlockHeader, /** Needed to trigger contract synchronization before nested calls */ utilityExecutor, /** List of transient auth witnesses to be used during this simulation */ authWitnesses, capsules, executionCache, noteCache, taggingIndexCache, contractStore, noteStore, keyStore, addressStore, aztecNode, anchorBlockStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, jobId, totalPublicCalldataCount = 0, sideEffectCounter = 0, log = createLogger('simulator:client_execution_context'), scopes, senderForTags, simulator){
|
|
49
|
+
super(callContext.contractAddress, authWitnesses, capsules, anchorBlockHeader, contractStore, noteStore, keyStore, addressStore, aztecNode, anchorBlockStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, jobId, log, scopes), this.argsHash = argsHash, this.txContext = txContext, this.callContext = callContext, this.anchorBlockHeader = anchorBlockHeader, this.utilityExecutor = utilityExecutor, this.executionCache = executionCache, this.noteCache = noteCache, this.taggingIndexCache = taggingIndexCache, this.senderTaggingStore = senderTaggingStore, this.totalPublicCalldataCount = totalPublicCalldataCount, this.sideEffectCounter = sideEffectCounter, this.senderForTags = senderForTags, this.simulator = simulator, this.isPrivate = true, this.newNotes = [], this.noteHashNullifierCounterMap = new Map(), this.contractClassLogs = [], this.offchainEffects = [], this.nestedExecutionResults = [];
|
|
53
50
|
}
|
|
54
51
|
getPrivateContextInputs() {
|
|
55
52
|
return new PrivateContextInputs(this.callContext, this.anchorBlockHeader, this.txContext, this.sideEffectCounter);
|
|
@@ -77,12 +74,6 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
77
74
|
return toACVMWitness(0, fields);
|
|
78
75
|
}
|
|
79
76
|
/**
|
|
80
|
-
* The KernelProver will use this to fully populate witnesses and provide hints to the kernel circuit
|
|
81
|
-
* regarding which note hash each settled read request corresponds to.
|
|
82
|
-
*/ getNoteHashLeafIndexMap() {
|
|
83
|
-
return this.noteHashLeafIndexMap;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
77
|
* Get the data for the newly created notes.
|
|
87
78
|
*/ getNewNotes() {
|
|
88
79
|
return this.newNotes;
|
|
@@ -101,7 +92,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
101
92
|
return this.offchainEffects;
|
|
102
93
|
}
|
|
103
94
|
/**
|
|
104
|
-
* Returns the pre
|
|
95
|
+
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
105
96
|
*/ getUsedPreTags() {
|
|
106
97
|
return this.taggingIndexCache.getUsedPreTags();
|
|
107
98
|
}
|
|
@@ -142,7 +133,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
142
133
|
* @param recipient - The address receiving the log
|
|
143
134
|
* @returns An app tag to be used in a log.
|
|
144
135
|
*/ async privateGetNextAppTagAsSender(sender, recipient) {
|
|
145
|
-
const secret = await this
|
|
136
|
+
const secret = await this.#calculateDirectionalAppTaggingSecret(this.contractAddress, sender, recipient);
|
|
146
137
|
const index = await this.#getIndexToUseForSecret(secret);
|
|
147
138
|
this.log.debug(`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`);
|
|
148
139
|
this.taggingIndexCache.setLastUsedIndex(secret, index);
|
|
@@ -151,6 +142,11 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
151
142
|
index
|
|
152
143
|
});
|
|
153
144
|
}
|
|
145
|
+
async #calculateDirectionalAppTaggingSecret(contractAddress, sender, recipient) {
|
|
146
|
+
const senderCompleteAddress = await this.getCompleteAddress(sender);
|
|
147
|
+
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
148
|
+
return DirectionalAppTaggingSecret.compute(senderCompleteAddress, senderIvsk, recipient, contractAddress, recipient);
|
|
149
|
+
}
|
|
154
150
|
async #getIndexToUseForSecret(secret) {
|
|
155
151
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
156
152
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
@@ -160,8 +156,9 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
160
156
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
161
157
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
162
158
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
163
|
-
await this.
|
|
164
|
-
|
|
159
|
+
const anchorBlockHash = L2BlockHash.fromField(await this.anchorBlockHeader.hash());
|
|
160
|
+
await syncSenderTaggingIndexes(secret, this.contractAddress, this.aztecNode, this.senderTaggingStore, anchorBlockHash, this.jobId);
|
|
161
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
165
162
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
166
163
|
// Otherwise, the next index to use is one past the last used index
|
|
167
164
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -203,6 +200,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
203
200
|
* Real notes coming from DB will have a leafIndex which
|
|
204
201
|
* represents their index in the note hash tree.
|
|
205
202
|
*
|
|
203
|
+
* @param owner - The owner of the notes. If undefined, returns notes for all owners.
|
|
206
204
|
* @param storageSlot - The storage slot.
|
|
207
205
|
* @param numSelects - The number of valid selects in selectBy and selectValues.
|
|
208
206
|
* @param selectBy - An array of indices of the fields to selects.
|
|
@@ -214,11 +212,12 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
214
212
|
* @param offset - The starting index for pagination.
|
|
215
213
|
* @param status - The status of notes to fetch.
|
|
216
214
|
* @returns Array of note data.
|
|
217
|
-
*/ async utilityGetNotes(storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status) {
|
|
215
|
+
*/ async utilityGetNotes(owner, storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status) {
|
|
218
216
|
// Nullified pending notes are already removed from the list.
|
|
219
|
-
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, storageSlot);
|
|
217
|
+
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
|
|
220
218
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
221
|
-
const
|
|
219
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore, this.jobId);
|
|
220
|
+
const dbNotes = await noteService.getNotes(this.callContext.contractAddress, owner, storageSlot, status, this.scopes);
|
|
222
221
|
const dbNotesFiltered = dbNotes.filter((n)=>!pendingNullifiers.has(n.siloedNullifier.value));
|
|
223
222
|
const notes = pickNotes([
|
|
224
223
|
...dbNotesFiltered,
|
|
@@ -245,47 +244,44 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
245
244
|
offset
|
|
246
245
|
});
|
|
247
246
|
this.log.debug(`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes.map((n)=>`${n.noteNonce.toString()}:[${n.note.items.map((i)=>i.toString()).join(',')}]`).join(', ')}`);
|
|
248
|
-
const noteHashesAndIndexes = await Promise.all(notes.map(async (n)=>{
|
|
249
|
-
if (n.index !== undefined) {
|
|
250
|
-
const siloedNoteHash = await siloNoteHash(n.contractAddress, n.noteHash);
|
|
251
|
-
const uniqueNoteHash = await computeUniqueNoteHash(n.noteNonce, siloedNoteHash);
|
|
252
|
-
return {
|
|
253
|
-
hash: uniqueNoteHash,
|
|
254
|
-
index: n.index
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
}));
|
|
258
|
-
noteHashesAndIndexes.filter((n)=>n !== undefined).forEach((n)=>{
|
|
259
|
-
this.noteHashLeafIndexMap.set(n.hash.toBigInt(), n.index);
|
|
260
|
-
});
|
|
261
247
|
return notes;
|
|
262
248
|
}
|
|
263
249
|
/**
|
|
264
250
|
* Keep track of the new note created during execution.
|
|
265
251
|
* It can be used in subsequent calls (or transactions when chaining txs is possible).
|
|
266
|
-
* @param
|
|
252
|
+
* @param owner - The owner of the note.
|
|
267
253
|
* @param storageSlot - The storage slot.
|
|
254
|
+
* @param randomness - The randomness injected into the note.
|
|
268
255
|
* @param noteTypeId - The type ID of the note.
|
|
269
256
|
* @param noteItems - The items to be included in a Note.
|
|
270
257
|
* @param noteHash - A hash of the new note.
|
|
271
258
|
* @returns
|
|
272
|
-
*/ privateNotifyCreatedNote(storageSlot, noteTypeId, noteItems, noteHash, counter) {
|
|
259
|
+
*/ privateNotifyCreatedNote(owner, storageSlot, randomness, noteTypeId, noteItems, noteHash, counter) {
|
|
273
260
|
this.log.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
274
261
|
contractAddress: this.callContext.contractAddress,
|
|
275
262
|
storageSlot,
|
|
263
|
+
randomness,
|
|
276
264
|
noteTypeId,
|
|
277
265
|
counter
|
|
278
266
|
});
|
|
279
267
|
const note = new Note(noteItems);
|
|
280
268
|
this.noteCache.addNewNote({
|
|
281
269
|
contractAddress: this.callContext.contractAddress,
|
|
270
|
+
owner,
|
|
282
271
|
storageSlot,
|
|
272
|
+
randomness,
|
|
283
273
|
noteNonce: Fr.ZERO,
|
|
284
274
|
note,
|
|
285
275
|
siloedNullifier: undefined,
|
|
286
|
-
noteHash
|
|
276
|
+
noteHash,
|
|
277
|
+
isPending: true
|
|
287
278
|
}, counter);
|
|
288
|
-
this.newNotes.push(
|
|
279
|
+
this.newNotes.push(NoteAndSlot.from({
|
|
280
|
+
note,
|
|
281
|
+
storageSlot,
|
|
282
|
+
randomness,
|
|
283
|
+
noteTypeId
|
|
284
|
+
}));
|
|
289
285
|
}
|
|
290
286
|
/**
|
|
291
287
|
* Adding a siloed nullifier into the current set of all pending nullifiers created
|
|
@@ -310,6 +306,17 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
310
306
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
311
307
|
}
|
|
312
308
|
/**
|
|
309
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
|
|
310
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
311
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
312
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
313
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
314
|
+
*/ async privateIsNullifierPending(innerNullifier, contractAddress) {
|
|
315
|
+
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
316
|
+
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
317
|
+
return Promise.resolve(isNullifierPending);
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
313
320
|
* Emit a contract class log.
|
|
314
321
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
315
322
|
* keep the preimage in ts for later.
|
|
@@ -342,11 +349,11 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
342
349
|
const simulatorSetupTimer = new Timer();
|
|
343
350
|
this.log.debug(`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`);
|
|
344
351
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
345
|
-
await
|
|
346
|
-
const targetArtifact = await this.
|
|
352
|
+
await ensureContractSynced(targetContractAddress, functionSelector, this.utilityExecutor, this.aztecNode, this.contractStore, this.anchorBlockHeader);
|
|
353
|
+
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(targetContractAddress, functionSelector);
|
|
347
354
|
const derivedTxContext = this.txContext.clone();
|
|
348
355
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
349
|
-
const privateExecutionOracle = new PrivateExecutionOracle(argsHash, derivedTxContext, derivedCallContext, this.anchorBlockHeader, this.authWitnesses, this.capsules, this.executionCache, this.noteCache, this.taggingIndexCache, this.
|
|
356
|
+
const privateExecutionOracle = new PrivateExecutionOracle(argsHash, derivedTxContext, derivedCallContext, this.anchorBlockHeader, this.utilityExecutor, this.authWitnesses, this.capsules, this.executionCache, this.noteCache, this.taggingIndexCache, this.contractStore, this.noteStore, this.keyStore, this.addressStore, this.aztecNode, this.anchorBlockStore, this.senderTaggingStore, this.recipientTaggingStore, this.senderAddressBookStore, this.capsuleStore, this.privateEventStore, this.jobId, this.totalPublicCalldataCount, sideEffectCounter, this.log, this.scopes, this.senderForTags, this.simulator);
|
|
350
357
|
const setupTime = simulatorSetupTimer.ms();
|
|
351
358
|
const childExecutionResult = await executePrivateFunction(this.simulator, privateExecutionOracle, targetArtifact, targetContractAddress, functionSelector);
|
|
352
359
|
if (isStaticCall) {
|
|
@@ -396,6 +403,9 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
396
403
|
privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter) {
|
|
397
404
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
398
405
|
}
|
|
406
|
+
privateIsSideEffectCounterRevertible(sideEffectCounter) {
|
|
407
|
+
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
408
|
+
}
|
|
399
409
|
/**
|
|
400
410
|
* Derives the call context for a nested execution.
|
|
401
411
|
* @param targetContractAddress - The address of the contract being called.
|
|
@@ -406,7 +416,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
406
416
|
return new CallContext(this.contractAddress, targetContractAddress, await FunctionSelector.fromNameAndParameters(targetArtifact.name, targetArtifact.parameters), isStaticCall);
|
|
407
417
|
}
|
|
408
418
|
getDebugFunctionName() {
|
|
409
|
-
return this.
|
|
419
|
+
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
410
420
|
}
|
|
411
421
|
utilityEmitOffchainEffect(data) {
|
|
412
422
|
this.offchainEffects.push({
|