@aztec/pxe 0.0.1-commit.b655e406 → 0.0.1-commit.b6e433891
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/access_scopes.d.ts +9 -0
- package/dest/access_scopes.d.ts.map +1 -0
- package/dest/access_scopes.js +6 -0
- 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 +45 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/block_synchronizer/block_synchronizer.js +153 -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 +7 -13
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +25 -14
- 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 +84 -26
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +251 -85
- 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 +7 -7
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
- 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 +3 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +2 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +6 -6
- 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 +11 -7
- 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 +2 -4
- package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/message_tx_context.js +57 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +7 -7
- 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 +14 -7
- 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 +64 -49
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +42 -0
- 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 +45 -41
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +226 -117
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -27
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +6 -40
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +67 -88
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +140 -118
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +149 -56
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +290 -104
- package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
- package/dest/contract_logging.d.ts +22 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +23 -0
- package/dest/contract_sync/contract_sync_service.d.ts +45 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +114 -0
- package/dest/contract_sync/helpers.d.ts +29 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/helpers.js +55 -0
- package/dest/debug/pxe_debug_utils.d.ts +45 -0
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
- package/dest/debug/pxe_debug_utils.js +48 -0
- package/dest/entrypoints/client/bundle/index.d.ts +4 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +3 -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 +33 -10
- package/dest/entrypoints/client/lazy/index.d.ts +4 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +3 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +34 -11
- package/dest/entrypoints/pxe_creation_options.d.ts +7 -3
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +6 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +5 -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 +40 -28
- 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 +44 -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 +75 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +94 -0
- package/dest/logs/log_service.d.ts +29 -0
- package/dest/logs/log_service.d.ts.map +1 -0
- package/dest/logs/log_service.js +118 -0
- package/dest/messages/message_context_service.d.ts +17 -0
- package/dest/messages/message_context_service.d.ts.map +1 -0
- package/dest/messages/message_context_service.js +36 -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 +148 -0
- package/dest/notes_filter.d.ts +25 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +5 -4
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
- package/dest/private_kernel/hints/index.d.ts +3 -3
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +2 -2
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -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} +144 -77
- package/dest/private_kernel/hints/test_utils.d.ts +122 -0
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
- package/dest/private_kernel/hints/test_utils.js +203 -0
- package/dest/private_kernel/index.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +33 -25
- package/dest/private_kernel/private_kernel_oracle.d.ts +26 -25
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +94 -2
- package/dest/pxe.d.ts +124 -103
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +288 -285
- 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} +13 -12
- 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 +17 -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} +10 -10
- 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 +253 -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_store/contract_store.d.ts +93 -0
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
- package/dest/storage/contract_store/contract_store.js +309 -0
- 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 +2 -2
- package/dest/storage/metadata.js +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 +83 -0
- package/dest/storage/note_store/note_store.d.ts.map +1 -0
- package/dest/storage/note_store/note_store.js +343 -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 +273 -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 +111 -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 +36 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +78 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_tagging_store.js +374 -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 +60 -0
- package/dest/tagging/index.d.ts +17 -7
- 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 +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 +33 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +17 -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 +80 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +12 -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 +39 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +19 -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 +72 -0
- package/package.json +29 -19
- package/src/access_scopes.ts +9 -0
- package/src/bin/check_oracle_version.ts +131 -20
- package/src/block_synchronizer/block_synchronizer.ts +178 -0
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +25 -26
- 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 +431 -119
- package/src/contract_function_simulator/execution_note_cache.ts +58 -28
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
- package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
- package/src/contract_function_simulator/index.ts +2 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +14 -7
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +3 -6
- package/src/contract_function_simulator/noir-structs/message_tx_context.ts +55 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +16 -7
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +86 -61
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +135 -0
- 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 +258 -158
- package/src/contract_function_simulator/oracle/private_execution.ts +6 -72
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +187 -167
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +457 -115
- package/src/contract_function_simulator/pick_notes.ts +1 -1
- package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
- package/src/contract_logging.ts +39 -0
- package/src/contract_sync/contract_sync_service.ts +181 -0
- package/src/contract_sync/helpers.ts +98 -0
- package/src/debug/pxe_debug_utils.ts +93 -0
- package/src/entrypoints/client/bundle/index.ts +3 -1
- package/src/entrypoints/client/bundle/utils.ts +25 -18
- package/src/entrypoints/client/lazy/index.ts +3 -1
- package/src/entrypoints/client/lazy/utils.ts +26 -19
- package/src/entrypoints/pxe_creation_options.ts +6 -2
- package/src/entrypoints/server/index.ts +5 -1
- package/src/entrypoints/server/utils.ts +34 -56
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +71 -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 +150 -0
- package/src/logs/log_service.ts +213 -0
- package/src/messages/message_context_service.ts +45 -0
- package/src/notes/index.ts +1 -0
- package/src/notes/note_service.ts +196 -0
- package/src/notes_filter.ts +26 -0
- package/src/oracle_version.ts +5 -4
- package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
- package/src/private_kernel/hints/index.ts +2 -2
- package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +199 -145
- package/src/private_kernel/hints/test_utils.ts +325 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +38 -34
- package/src/private_kernel/private_kernel_oracle.ts +118 -37
- package/src/pxe.ts +450 -389
- package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +16 -16
- 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} +10 -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_store/contract_store.ts +429 -0
- 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/metadata.ts +1 -1
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/note_store/note_store.ts +418 -0
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +384 -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 +143 -0
- package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
- package/src/storage/tagging_store/sender_tagging_store.ts +476 -0
- package/src/tagging/constants.ts +10 -2
- package/src/tagging/get_all_logs_by_tags.ts +92 -0
- package/src/tagging/index.ts +19 -6
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +140 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +44 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +112 -0
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +51 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +85 -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/hints/compute_tx_include_by_timestamp.d.ts +0 -4
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.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 +0 -74
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/contract_data_provider.js +0 -205
- 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/contract_data_provider.ts +0 -294
- 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,40 +1,58 @@
|
|
|
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 { type CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
|
|
6
6
|
import {
|
|
7
7
|
type FunctionAbi,
|
|
8
8
|
type FunctionArtifact,
|
|
9
|
+
type FunctionCall,
|
|
9
10
|
FunctionSelector,
|
|
10
11
|
type NoteSelector,
|
|
11
12
|
countArgumentsSize,
|
|
12
13
|
} from '@aztec/stdlib/abi';
|
|
13
|
-
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
14
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
|
-
import {
|
|
15
|
+
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
16
16
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
17
|
-
import type
|
|
17
|
+
import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
|
|
18
|
+
import { Tag } from '@aztec/stdlib/logs';
|
|
18
19
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
19
20
|
import {
|
|
20
|
-
type BlockHeader,
|
|
21
21
|
CallContext,
|
|
22
|
-
Capsule,
|
|
23
22
|
CountedContractClassLog,
|
|
24
23
|
NoteAndSlot,
|
|
25
24
|
PrivateCallExecutionResult,
|
|
26
25
|
type TxContext,
|
|
27
26
|
} from '@aztec/stdlib/tx';
|
|
28
27
|
|
|
29
|
-
import {
|
|
30
|
-
import
|
|
28
|
+
import type { AccessScopes } from '../../access_scopes.js';
|
|
29
|
+
import { NoteService } from '../../notes/note_service.js';
|
|
30
|
+
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
31
|
+
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
31
32
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
32
33
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
33
34
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
34
35
|
import { pickNotes } from '../pick_notes.js';
|
|
35
36
|
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
36
|
-
import { executePrivateFunction
|
|
37
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
37
|
+
import { executePrivateFunction } from './private_execution.js';
|
|
38
|
+
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
39
|
+
|
|
40
|
+
/** Args for PrivateExecutionOracle constructor. */
|
|
41
|
+
export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
|
|
42
|
+
argsHash: Fr;
|
|
43
|
+
txContext: TxContext;
|
|
44
|
+
callContext: CallContext;
|
|
45
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
46
|
+
utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
47
|
+
executionCache: HashedValuesCache;
|
|
48
|
+
noteCache: ExecutionNoteCache;
|
|
49
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
50
|
+
senderTaggingStore: SenderTaggingStore;
|
|
51
|
+
totalPublicCalldataCount?: number;
|
|
52
|
+
sideEffectCounter?: number;
|
|
53
|
+
senderForTags?: AztecAddress;
|
|
54
|
+
simulator?: CircuitSimulator;
|
|
55
|
+
};
|
|
38
56
|
|
|
39
57
|
/**
|
|
40
58
|
* The execution oracle for the private part of a transaction.
|
|
@@ -51,42 +69,41 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
51
69
|
* Users can also use this to get a clearer idea of what's happened during a simulation.
|
|
52
70
|
*/
|
|
53
71
|
private newNotes: NoteAndSlot[] = [];
|
|
54
|
-
/**
|
|
55
|
-
* Notes from previous transactions that are returned to the oracle call `getNotes` during this execution.
|
|
56
|
-
* The mapping maps from the unique siloed note hash to the index for notes created in private executions.
|
|
57
|
-
* It maps from siloed note hash to the index for notes created by public functions.
|
|
58
|
-
*
|
|
59
|
-
* They are not part of the ExecutionNoteCache and being forwarded to nested contexts via `extend()`
|
|
60
|
-
* because these notes are meant to be maintained on a per-call basis
|
|
61
|
-
* They should act as references for the read requests output by an app circuit via public inputs.
|
|
62
|
-
*/
|
|
63
|
-
private noteHashLeafIndexMap: Map<bigint, bigint> = new Map();
|
|
64
72
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
65
73
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
66
|
-
private offchainEffects: { data: Fr[] }[] = [];
|
|
67
74
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
68
75
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
76
|
+
private readonly argsHash: Fr;
|
|
77
|
+
private readonly txContext: TxContext;
|
|
78
|
+
private readonly callContext: CallContext;
|
|
79
|
+
private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
80
|
+
private readonly executionCache: HashedValuesCache;
|
|
81
|
+
private readonly noteCache: ExecutionNoteCache;
|
|
82
|
+
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
83
|
+
private readonly senderTaggingStore: SenderTaggingStore;
|
|
84
|
+
private totalPublicCalldataCount: number;
|
|
85
|
+
protected sideEffectCounter: number;
|
|
86
|
+
private senderForTags?: AztecAddress;
|
|
87
|
+
private readonly simulator?: CircuitSimulator;
|
|
88
|
+
|
|
89
|
+
constructor(args: PrivateExecutionOracleArgs) {
|
|
90
|
+
super({
|
|
91
|
+
...args,
|
|
92
|
+
contractAddress: args.callContext.contractAddress,
|
|
93
|
+
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
94
|
+
});
|
|
95
|
+
this.argsHash = args.argsHash;
|
|
96
|
+
this.txContext = args.txContext;
|
|
97
|
+
this.callContext = args.callContext;
|
|
98
|
+
this.utilityExecutor = args.utilityExecutor;
|
|
99
|
+
this.executionCache = args.executionCache;
|
|
100
|
+
this.noteCache = args.noteCache;
|
|
101
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
102
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
103
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
104
|
+
this.sideEffectCounter = args.sideEffectCounter ?? 0;
|
|
105
|
+
this.senderForTags = args.senderForTags;
|
|
106
|
+
this.simulator = args.simulator;
|
|
90
107
|
}
|
|
91
108
|
|
|
92
109
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -118,14 +135,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
118
135
|
return toACVMWitness(0, fields);
|
|
119
136
|
}
|
|
120
137
|
|
|
121
|
-
/**
|
|
122
|
-
* The KernelProver will use this to fully populate witnesses and provide hints to the kernel circuit
|
|
123
|
-
* regarding which note hash each settled read request corresponds to.
|
|
124
|
-
*/
|
|
125
|
-
public getNoteHashLeafIndexMap() {
|
|
126
|
-
return this.noteHashLeafIndexMap;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
138
|
/**
|
|
130
139
|
* Get the data for the newly created notes.
|
|
131
140
|
*/
|
|
@@ -145,17 +154,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
145
154
|
}
|
|
146
155
|
|
|
147
156
|
/**
|
|
148
|
-
*
|
|
157
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
149
158
|
*/
|
|
150
|
-
public
|
|
151
|
-
return this.
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Returns the pre tags that were used in this execution (and that need to be stored in the db).
|
|
156
|
-
*/
|
|
157
|
-
public getUsedPreTags(): PreTag[] {
|
|
158
|
-
return this.taggingIndexCache.getUsedPreTags();
|
|
159
|
+
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
160
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
159
161
|
}
|
|
160
162
|
|
|
161
163
|
/**
|
|
@@ -175,7 +177,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
175
177
|
* The value persists through nested calls, meaning all calls down the stack will use the same
|
|
176
178
|
* 'senderForTags' value (unless it is replaced).
|
|
177
179
|
*/
|
|
178
|
-
public
|
|
180
|
+
public getSenderForTags(): Promise<AztecAddress | undefined> {
|
|
179
181
|
return Promise.resolve(this.senderForTags);
|
|
180
182
|
}
|
|
181
183
|
|
|
@@ -190,7 +192,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
190
192
|
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
191
193
|
* value (unless it is replaced by another call to this setter).
|
|
192
194
|
*/
|
|
193
|
-
public
|
|
195
|
+
public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
194
196
|
this.senderForTags = senderForTags;
|
|
195
197
|
return Promise.resolve();
|
|
196
198
|
}
|
|
@@ -201,23 +203,39 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
201
203
|
* @param recipient - The address receiving the log
|
|
202
204
|
* @returns An app tag to be used in a log.
|
|
203
205
|
*/
|
|
204
|
-
public async
|
|
205
|
-
const
|
|
206
|
+
public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
|
|
207
|
+
const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
|
|
206
208
|
this.contractAddress,
|
|
207
209
|
sender,
|
|
208
210
|
recipient,
|
|
209
211
|
);
|
|
210
212
|
|
|
211
|
-
const index = await this.#getIndexToUseForSecret(
|
|
212
|
-
this.
|
|
213
|
+
const index = await this.#getIndexToUseForSecret(extendedSecret);
|
|
214
|
+
this.logger.debug(
|
|
213
215
|
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
214
216
|
);
|
|
215
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
217
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
216
218
|
|
|
217
|
-
return Tag.compute({
|
|
219
|
+
return Tag.compute({ extendedSecret, index });
|
|
218
220
|
}
|
|
219
221
|
|
|
220
|
-
async #
|
|
222
|
+
async #calculateExtendedDirectionalAppTaggingSecret(
|
|
223
|
+
contractAddress: AztecAddress,
|
|
224
|
+
sender: AztecAddress,
|
|
225
|
+
recipient: AztecAddress,
|
|
226
|
+
) {
|
|
227
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
228
|
+
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
229
|
+
return ExtendedDirectionalAppTaggingSecret.compute(
|
|
230
|
+
senderCompleteAddress,
|
|
231
|
+
senderIvsk,
|
|
232
|
+
recipient,
|
|
233
|
+
contractAddress,
|
|
234
|
+
recipient,
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
|
|
221
239
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
222
240
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
223
241
|
|
|
@@ -227,8 +245,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
227
245
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
228
246
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
229
247
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
230
|
-
await
|
|
231
|
-
|
|
248
|
+
await syncSenderTaggingIndexes(
|
|
249
|
+
secret,
|
|
250
|
+
this.aztecNode,
|
|
251
|
+
this.senderTaggingStore,
|
|
252
|
+
await this.anchorBlockHeader.hash(),
|
|
253
|
+
this.jobId,
|
|
254
|
+
);
|
|
255
|
+
|
|
256
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
232
257
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
233
258
|
// Otherwise, the next index to use is one past the last used index
|
|
234
259
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -240,7 +265,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
240
265
|
* @param values - Values to store.
|
|
241
266
|
* @returns The hash of the values.
|
|
242
267
|
*/
|
|
243
|
-
public
|
|
268
|
+
public storeInExecutionCache(values: Fr[], hash: Fr) {
|
|
244
269
|
return this.executionCache.store(values, hash);
|
|
245
270
|
}
|
|
246
271
|
|
|
@@ -249,7 +274,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
249
274
|
* @param hash - Hash of the values.
|
|
250
275
|
* @returns The values.
|
|
251
276
|
*/
|
|
252
|
-
public
|
|
277
|
+
public loadFromExecutionCache(hash: Fr): Promise<Fr[]> {
|
|
253
278
|
const preimage = this.executionCache.getPreimage(hash);
|
|
254
279
|
if (!preimage) {
|
|
255
280
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -257,12 +282,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
257
282
|
return Promise.resolve(preimage);
|
|
258
283
|
}
|
|
259
284
|
|
|
260
|
-
override async
|
|
285
|
+
override async checkNullifierExists(innerNullifier: Fr): Promise<boolean> {
|
|
261
286
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
262
287
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
263
288
|
// in the current transaction.
|
|
264
289
|
|
|
265
|
-
this.
|
|
290
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
266
291
|
contractAddress: this.contractAddress,
|
|
267
292
|
});
|
|
268
293
|
|
|
@@ -270,7 +295,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
270
295
|
|
|
271
296
|
return (
|
|
272
297
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
273
|
-
(await super.
|
|
298
|
+
(await super.checkNullifierExists(innerNullifier))
|
|
274
299
|
);
|
|
275
300
|
}
|
|
276
301
|
|
|
@@ -282,6 +307,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
282
307
|
* Real notes coming from DB will have a leafIndex which
|
|
283
308
|
* represents their index in the note hash tree.
|
|
284
309
|
*
|
|
310
|
+
* @param owner - The owner of the notes. If undefined, returns notes for all owners.
|
|
285
311
|
* @param storageSlot - The storage slot.
|
|
286
312
|
* @param numSelects - The number of valid selects in selectBy and selectValues.
|
|
287
313
|
* @param selectBy - An array of indices of the fields to selects.
|
|
@@ -294,7 +320,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
294
320
|
* @param status - The status of notes to fetch.
|
|
295
321
|
* @returns Array of note data.
|
|
296
322
|
*/
|
|
297
|
-
public override async
|
|
323
|
+
public override async getNotes(
|
|
324
|
+
owner: AztecAddress | undefined,
|
|
298
325
|
storageSlot: Fr,
|
|
299
326
|
numSelects: number,
|
|
300
327
|
selectByIndexes: number[],
|
|
@@ -311,11 +338,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
311
338
|
status: NoteStatus,
|
|
312
339
|
): Promise<NoteData[]> {
|
|
313
340
|
// Nullified pending notes are already removed from the list.
|
|
314
|
-
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, storageSlot);
|
|
341
|
+
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
|
|
315
342
|
|
|
316
343
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
317
|
-
|
|
344
|
+
|
|
345
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
346
|
+
const dbNotes = await noteService.getNotes(
|
|
318
347
|
this.callContext.contractAddress,
|
|
348
|
+
owner,
|
|
319
349
|
storageSlot,
|
|
320
350
|
status,
|
|
321
351
|
this.scopes,
|
|
@@ -336,52 +366,39 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
336
366
|
offset,
|
|
337
367
|
});
|
|
338
368
|
|
|
339
|
-
this.
|
|
369
|
+
this.logger.debug(
|
|
340
370
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
341
371
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
342
372
|
.join(', ')}`,
|
|
343
373
|
);
|
|
344
374
|
|
|
345
|
-
const noteHashesAndIndexes = await Promise.all(
|
|
346
|
-
notes.map(async n => {
|
|
347
|
-
if (n.index !== undefined) {
|
|
348
|
-
const siloedNoteHash = await siloNoteHash(n.contractAddress, n.noteHash);
|
|
349
|
-
const uniqueNoteHash = await computeUniqueNoteHash(n.noteNonce, siloedNoteHash);
|
|
350
|
-
|
|
351
|
-
return { hash: uniqueNoteHash, index: n.index };
|
|
352
|
-
}
|
|
353
|
-
}),
|
|
354
|
-
);
|
|
355
|
-
|
|
356
|
-
noteHashesAndIndexes
|
|
357
|
-
.filter(n => n !== undefined)
|
|
358
|
-
.forEach(n => {
|
|
359
|
-
this.noteHashLeafIndexMap.set(n!.hash.toBigInt(), n!.index);
|
|
360
|
-
});
|
|
361
|
-
|
|
362
375
|
return notes;
|
|
363
376
|
}
|
|
364
377
|
|
|
365
378
|
/**
|
|
366
379
|
* Keep track of the new note created during execution.
|
|
367
380
|
* It can be used in subsequent calls (or transactions when chaining txs is possible).
|
|
368
|
-
* @param
|
|
381
|
+
* @param owner - The owner of the note.
|
|
369
382
|
* @param storageSlot - The storage slot.
|
|
383
|
+
* @param randomness - The randomness injected into the note.
|
|
370
384
|
* @param noteTypeId - The type ID of the note.
|
|
371
385
|
* @param noteItems - The items to be included in a Note.
|
|
372
386
|
* @param noteHash - A hash of the new note.
|
|
373
387
|
* @returns
|
|
374
388
|
*/
|
|
375
|
-
public
|
|
389
|
+
public notifyCreatedNote(
|
|
390
|
+
owner: AztecAddress,
|
|
376
391
|
storageSlot: Fr,
|
|
392
|
+
randomness: Fr,
|
|
377
393
|
noteTypeId: NoteSelector,
|
|
378
394
|
noteItems: Fr[],
|
|
379
395
|
noteHash: Fr,
|
|
380
396
|
counter: number,
|
|
381
397
|
) {
|
|
382
|
-
this.
|
|
398
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
383
399
|
contractAddress: this.callContext.contractAddress,
|
|
384
400
|
storageSlot,
|
|
401
|
+
randomness,
|
|
385
402
|
noteTypeId,
|
|
386
403
|
counter,
|
|
387
404
|
});
|
|
@@ -390,15 +407,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
390
407
|
this.noteCache.addNewNote(
|
|
391
408
|
{
|
|
392
409
|
contractAddress: this.callContext.contractAddress,
|
|
410
|
+
owner,
|
|
393
411
|
storageSlot,
|
|
412
|
+
randomness,
|
|
394
413
|
noteNonce: Fr.ZERO, // Nonce cannot be known during private execution.
|
|
395
414
|
note,
|
|
396
415
|
siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
|
|
397
416
|
noteHash,
|
|
417
|
+
isPending: true, // This note has just been created and hence is not settled yet.
|
|
398
418
|
},
|
|
399
419
|
counter,
|
|
400
420
|
);
|
|
401
|
-
this.newNotes.push(
|
|
421
|
+
this.newNotes.push(NoteAndSlot.from({ note, storageSlot, randomness, noteTypeId }));
|
|
402
422
|
}
|
|
403
423
|
|
|
404
424
|
/**
|
|
@@ -407,7 +427,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
407
427
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
408
428
|
* @param noteHash - A hash of the new note.
|
|
409
429
|
*/
|
|
410
|
-
public async
|
|
430
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
411
431
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
412
432
|
this.callContext.contractAddress,
|
|
413
433
|
innerNullifier,
|
|
@@ -424,11 +444,24 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
424
444
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
425
445
|
* @param noteHash - A hash of the new note.
|
|
426
446
|
*/
|
|
427
|
-
public
|
|
428
|
-
this.
|
|
447
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
448
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
429
449
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
430
450
|
}
|
|
431
451
|
|
|
452
|
+
/**
|
|
453
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
|
|
454
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
455
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
456
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
457
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
458
|
+
*/
|
|
459
|
+
public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
460
|
+
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
461
|
+
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
462
|
+
return Promise.resolve(isNullifierPending);
|
|
463
|
+
}
|
|
464
|
+
|
|
432
465
|
/**
|
|
433
466
|
* Emit a contract class log.
|
|
434
467
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -436,10 +469,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
436
469
|
* @param log - The contract class log to be emitted.
|
|
437
470
|
* @param counter - The contract class log's counter.
|
|
438
471
|
*/
|
|
439
|
-
public
|
|
472
|
+
public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
|
|
440
473
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
441
474
|
const text = log.toBuffer().toString('hex');
|
|
442
|
-
this.
|
|
475
|
+
this.logger.verbose(
|
|
443
476
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
444
477
|
);
|
|
445
478
|
}
|
|
@@ -465,7 +498,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
465
498
|
* @param isStaticCall - Whether the call is a static call.
|
|
466
499
|
* @returns The execution result.
|
|
467
500
|
*/
|
|
468
|
-
async
|
|
501
|
+
async callPrivateFunction(
|
|
469
502
|
targetContractAddress: AztecAddress,
|
|
470
503
|
functionSelector: FunctionSelector,
|
|
471
504
|
argsHash: Fr,
|
|
@@ -479,15 +512,22 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
479
512
|
}
|
|
480
513
|
|
|
481
514
|
const simulatorSetupTimer = new Timer();
|
|
482
|
-
this.
|
|
515
|
+
this.logger.debug(
|
|
483
516
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
484
517
|
);
|
|
485
518
|
|
|
486
519
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
487
520
|
|
|
488
|
-
await
|
|
521
|
+
await this.contractSyncService.ensureContractSynced(
|
|
522
|
+
targetContractAddress,
|
|
523
|
+
functionSelector,
|
|
524
|
+
this.utilityExecutor,
|
|
525
|
+
this.anchorBlockHeader,
|
|
526
|
+
this.jobId,
|
|
527
|
+
this.scopes,
|
|
528
|
+
);
|
|
489
529
|
|
|
490
|
-
const targetArtifact = await this.
|
|
530
|
+
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
491
531
|
targetContractAddress,
|
|
492
532
|
functionSelector,
|
|
493
533
|
);
|
|
@@ -496,29 +536,42 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
496
536
|
|
|
497
537
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
498
538
|
|
|
499
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
539
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
500
540
|
argsHash,
|
|
501
|
-
derivedTxContext,
|
|
502
|
-
derivedCallContext,
|
|
503
|
-
this.anchorBlockHeader,
|
|
504
|
-
this.
|
|
505
|
-
this.
|
|
506
|
-
this.
|
|
507
|
-
this.
|
|
508
|
-
this.
|
|
509
|
-
this.
|
|
510
|
-
this.
|
|
541
|
+
txContext: derivedTxContext,
|
|
542
|
+
callContext: derivedCallContext,
|
|
543
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
544
|
+
utilityExecutor: this.utilityExecutor,
|
|
545
|
+
authWitnesses: this.authWitnesses,
|
|
546
|
+
capsules: this.capsules,
|
|
547
|
+
executionCache: this.executionCache,
|
|
548
|
+
noteCache: this.noteCache,
|
|
549
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
550
|
+
contractStore: this.contractStore,
|
|
551
|
+
noteStore: this.noteStore,
|
|
552
|
+
keyStore: this.keyStore,
|
|
553
|
+
addressStore: this.addressStore,
|
|
554
|
+
aztecNode: this.aztecNode,
|
|
555
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
556
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
557
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
558
|
+
capsuleStore: this.capsuleStore,
|
|
559
|
+
privateEventStore: this.privateEventStore,
|
|
560
|
+
messageContextService: this.messageContextService,
|
|
561
|
+
contractSyncService: this.contractSyncService,
|
|
562
|
+
jobId: this.jobId,
|
|
563
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
511
564
|
sideEffectCounter,
|
|
512
|
-
this.
|
|
513
|
-
this.scopes,
|
|
514
|
-
this.senderForTags,
|
|
515
|
-
this.simulator
|
|
516
|
-
);
|
|
565
|
+
log: this.logger,
|
|
566
|
+
scopes: this.scopes,
|
|
567
|
+
senderForTags: this.senderForTags,
|
|
568
|
+
simulator: this.simulator!,
|
|
569
|
+
});
|
|
517
570
|
|
|
518
571
|
const setupTime = simulatorSetupTimer.ms();
|
|
519
572
|
|
|
520
573
|
const childExecutionResult = await executePrivateFunction(
|
|
521
|
-
this.simulator
|
|
574
|
+
this.simulator!,
|
|
522
575
|
privateExecutionOracle,
|
|
523
576
|
targetArtifact,
|
|
524
577
|
targetContractAddress,
|
|
@@ -544,7 +597,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
544
597
|
};
|
|
545
598
|
}
|
|
546
599
|
|
|
547
|
-
|
|
600
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
601
|
+
public validatePublicCalldata(calldataHash: Fr) {
|
|
548
602
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
549
603
|
if (!calldata) {
|
|
550
604
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -554,44 +608,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
554
608
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
555
609
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
556
610
|
}
|
|
557
|
-
}
|
|
558
|
-
|
|
559
|
-
/**
|
|
560
|
-
* Verify relevant information when a public function is enqueued.
|
|
561
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
562
|
-
* @param calldataHash - The hash of the function selector and arguments.
|
|
563
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
564
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
565
|
-
*/
|
|
566
|
-
public privateNotifyEnqueuedPublicFunctionCall(
|
|
567
|
-
_targetContractAddress: AztecAddress,
|
|
568
|
-
calldataHash: Fr,
|
|
569
|
-
_sideEffectCounter: number,
|
|
570
|
-
_isStaticCall: boolean,
|
|
571
|
-
) {
|
|
572
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
573
611
|
return Promise.resolve();
|
|
574
612
|
}
|
|
575
613
|
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
579
|
-
* @param argsHash - The arguments hash to pass to the function.
|
|
580
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
581
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
582
|
-
*/
|
|
583
|
-
public privateNotifySetPublicTeardownFunctionCall(
|
|
584
|
-
_targetContractAddress: AztecAddress,
|
|
585
|
-
calldataHash: Fr,
|
|
586
|
-
_sideEffectCounter: number,
|
|
587
|
-
_isStaticCall: boolean,
|
|
588
|
-
) {
|
|
589
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
590
|
-
return Promise.resolve();
|
|
614
|
+
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
615
|
+
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
591
616
|
}
|
|
592
617
|
|
|
593
|
-
public
|
|
594
|
-
return this.noteCache.
|
|
618
|
+
public inRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
619
|
+
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
595
620
|
}
|
|
596
621
|
|
|
597
622
|
/**
|
|
@@ -615,11 +640,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
615
640
|
}
|
|
616
641
|
|
|
617
642
|
public getDebugFunctionName() {
|
|
618
|
-
return this.
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|
|
622
|
-
this.offchainEffects.push({ data });
|
|
623
|
-
return Promise.resolve();
|
|
643
|
+
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
624
644
|
}
|
|
625
645
|
}
|