@aztec/pxe 0.0.1-commit.5476d83 → 0.0.1-commit.5914bae
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bin/check_oracle_version.js +107 -17
- 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 +159 -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 -4
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +17 -0
- 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 -24
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +249 -77
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
- package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
- package/dest/contract_function_simulator/execution_note_cache.d.ts +21 -11
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +49 -31
- 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 +7 -8
- 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 +12 -11
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +6 -5
- 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 +8 -7
- 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 +3 -5
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +7 -9
- 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 +10 -12
- 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/interfaces.d.ts +73 -50
- 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 +47 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +4 -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 +11 -7
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +14 -10
- package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -42
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +340 -120
- 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 +65 -82
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +139 -118
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +166 -55
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +400 -105
- 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 +15 -4
- 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 +26 -5
- package/dest/contract_logging.d.ts +27 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +38 -0
- package/dest/contract_sync/contract_sync_service.d.ts +44 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +116 -0
- package/dest/contract_sync/helpers.d.ts +28 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/helpers.js +60 -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 +3 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +2 -1
- package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +32 -9
- package/dest/entrypoints/client/lazy/index.d.ts +3 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +2 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +33 -10
- package/dest/entrypoints/pxe_creation_options.d.ts +9 -3
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/pxe_creation_options.js +3 -1
- package/dest/entrypoints/server/index.d.ts +6 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +5 -2
- package/dest/entrypoints/server/utils.d.ts +2 -2
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +39 -16
- 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 +56 -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 +10 -0
- package/dest/events/private_event_filter_validator.d.ts.map +1 -0
- package/dest/events/private_event_filter_validator.js +53 -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 +28 -0
- package/dest/logs/log_service.d.ts.map +1 -0
- package/dest/logs/log_service.js +108 -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 +48 -0
- package/dest/notes/note_service.d.ts.map +1 -0
- package/dest/notes/note_service.js +157 -0
- package/dest/notes_filter.d.ts +24 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +4 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +20 -9
- 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} +141 -74
- 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/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 +28 -27
- 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 +115 -102
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +285 -259
- 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/anchor_block_store/anchor_block_store.js +26 -0
- package/dest/storage/{sync_data_provider → anchor_block_store}/index.d.ts +2 -2
- package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
- package/dest/storage/anchor_block_store/index.js +1 -0
- package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_service.js +50 -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 +261 -0
- package/dest/storage/capsule_store/index.d.ts +3 -0
- package/dest/storage/capsule_store/index.d.ts.map +1 -0
- package/dest/storage/capsule_store/index.js +2 -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 +311 -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 +1 -1
- 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 +85 -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 +28 -19
- package/src/bin/check_oracle_version.ts +133 -22
- package/src/block_synchronizer/block_synchronizer.ts +184 -0
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +17 -3
- 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 +421 -109
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- package/src/contract_function_simulator/execution_note_cache.ts +51 -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 +15 -11
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +7 -6
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +3 -6
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +9 -12
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +105 -62
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +27 -13
- package/src/contract_function_simulator/oracle/oracle.ts +441 -163
- package/src/contract_function_simulator/oracle/private_execution.ts +6 -72
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +190 -168
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +674 -110
- package/src/contract_function_simulator/pick_notes.ts +15 -4
- package/src/contract_function_simulator/proxied_contract_data_source.ts +32 -8
- package/src/contract_logging.ts +52 -0
- package/src/contract_sync/contract_sync_service.ts +176 -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 +2 -1
- package/src/entrypoints/client/bundle/utils.ts +24 -18
- package/src/entrypoints/client/lazy/index.ts +2 -1
- package/src/entrypoints/client/lazy/utils.ts +25 -19
- package/src/entrypoints/pxe_creation_options.ts +13 -2
- package/src/entrypoints/server/index.ts +5 -2
- package/src/entrypoints/server/utils.ts +33 -42
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +84 -0
- package/src/events/index.ts +1 -0
- package/src/events/private_event_filter_validator.ts +66 -0
- package/src/job_coordinator/job_coordinator.ts +150 -0
- package/src/logs/log_service.ts +192 -0
- package/src/messages/message_context_service.ts +44 -0
- package/src/notes/index.ts +1 -0
- package/src/notes/note_service.ts +206 -0
- package/src/notes_filter.ts +24 -0
- package/src/oracle_version.ts +20 -9
- 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} +197 -139
- package/src/private_kernel/hints/test_utils.ts +325 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +30 -31
- package/src/private_kernel/private_kernel_oracle.ts +118 -37
- package/src/pxe.ts +448 -351
- 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} +11 -12
- package/src/storage/anchor_block_store/index.ts +1 -0
- package/src/storage/capsule_store/capsule_service.ts +90 -0
- package/src/storage/capsule_store/capsule_store.ts +333 -0
- package/src/storage/capsule_store/index.ts +2 -0
- package/src/storage/contract_store/contract_store.ts +431 -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 +415 -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 +128 -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 -265
- package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
- package/dest/contract_function_simulator/execution_data_provider.js +0 -14
- package/dest/contract_function_simulator/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 -694
- 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_side_effect_uniqueness_hints.d.ts +0 -3
- package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.d.ts.map +0 -1
- package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.js +0 -48
- package/dest/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 -64
- 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 -193
- package/dest/storage/contract_data_provider/index.d.ts +0 -2
- package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.d.ts +0 -3
- package/dest/storage/note_data_provider/index.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.js +0 -2
- package/dest/storage/note_data_provider/note_data_provider.d.ts +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 -311
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -37
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -105
- 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/sync_data_provider/sync_data_provider.js +0 -26
- 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 -333
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1008
- package/src/private_kernel/hints/compute_side_effect_uniqueness_hints.ts +0 -173
- package/src/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 -277
- 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_data_provider.ts +0 -399
- package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -143
- 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,57 @@
|
|
|
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 type {
|
|
28
|
+
import { NoteService } from '../../notes/note_service.js';
|
|
29
|
+
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
30
|
+
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
31
31
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
32
32
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
33
33
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
34
34
|
import { pickNotes } from '../pick_notes.js';
|
|
35
35
|
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
36
|
-
import { executePrivateFunction
|
|
37
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
36
|
+
import { executePrivateFunction } from './private_execution.js';
|
|
37
|
+
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
38
|
+
|
|
39
|
+
/** Args for PrivateExecutionOracle constructor. */
|
|
40
|
+
export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
|
|
41
|
+
argsHash: Fr;
|
|
42
|
+
txContext: TxContext;
|
|
43
|
+
callContext: CallContext;
|
|
44
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
45
|
+
utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<void>;
|
|
46
|
+
executionCache: HashedValuesCache;
|
|
47
|
+
noteCache: ExecutionNoteCache;
|
|
48
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
49
|
+
senderTaggingStore: SenderTaggingStore;
|
|
50
|
+
totalPublicCalldataCount?: number;
|
|
51
|
+
sideEffectCounter?: number;
|
|
52
|
+
senderForTags?: AztecAddress;
|
|
53
|
+
simulator?: CircuitSimulator;
|
|
54
|
+
};
|
|
38
55
|
|
|
39
56
|
/**
|
|
40
57
|
* The execution oracle for the private part of a transaction.
|
|
@@ -51,42 +68,41 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
51
68
|
* Users can also use this to get a clearer idea of what's happened during a simulation.
|
|
52
69
|
*/
|
|
53
70
|
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
71
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
65
72
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
66
|
-
private offchainEffects: { data: Fr[] }[] = [];
|
|
67
73
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
68
74
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
75
|
+
private readonly argsHash: Fr;
|
|
76
|
+
private readonly txContext: TxContext;
|
|
77
|
+
private readonly callContext: CallContext;
|
|
78
|
+
private readonly utilityExecutor: (call: FunctionCall, scopes: AztecAddress[]) => Promise<void>;
|
|
79
|
+
private readonly executionCache: HashedValuesCache;
|
|
80
|
+
private readonly noteCache: ExecutionNoteCache;
|
|
81
|
+
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
82
|
+
private readonly senderTaggingStore: SenderTaggingStore;
|
|
83
|
+
private totalPublicCalldataCount: number;
|
|
84
|
+
protected sideEffectCounter: number;
|
|
85
|
+
private senderForTags?: AztecAddress;
|
|
86
|
+
private readonly simulator?: CircuitSimulator;
|
|
87
|
+
|
|
88
|
+
constructor(args: PrivateExecutionOracleArgs) {
|
|
89
|
+
super({
|
|
90
|
+
...args,
|
|
91
|
+
contractAddress: args.callContext.contractAddress,
|
|
92
|
+
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
93
|
+
});
|
|
94
|
+
this.argsHash = args.argsHash;
|
|
95
|
+
this.txContext = args.txContext;
|
|
96
|
+
this.callContext = args.callContext;
|
|
97
|
+
this.utilityExecutor = args.utilityExecutor;
|
|
98
|
+
this.executionCache = args.executionCache;
|
|
99
|
+
this.noteCache = args.noteCache;
|
|
100
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
101
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
102
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
103
|
+
this.sideEffectCounter = args.sideEffectCounter ?? 0;
|
|
104
|
+
this.senderForTags = args.senderForTags;
|
|
105
|
+
this.simulator = args.simulator;
|
|
90
106
|
}
|
|
91
107
|
|
|
92
108
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -118,14 +134,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
118
134
|
return toACVMWitness(0, fields);
|
|
119
135
|
}
|
|
120
136
|
|
|
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
137
|
/**
|
|
130
138
|
* Get the data for the newly created notes.
|
|
131
139
|
*/
|
|
@@ -145,17 +153,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
145
153
|
}
|
|
146
154
|
|
|
147
155
|
/**
|
|
148
|
-
*
|
|
149
|
-
*/
|
|
150
|
-
public getOffchainEffects() {
|
|
151
|
-
return this.offchainEffects;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Returns the pre tags that were used in this execution (and that need to be stored in the db).
|
|
156
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
156
157
|
*/
|
|
157
|
-
public
|
|
158
|
-
return this.taggingIndexCache.
|
|
158
|
+
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
159
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
159
160
|
}
|
|
160
161
|
|
|
161
162
|
/**
|
|
@@ -175,7 +176,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
175
176
|
* The value persists through nested calls, meaning all calls down the stack will use the same
|
|
176
177
|
* 'senderForTags' value (unless it is replaced).
|
|
177
178
|
*/
|
|
178
|
-
public
|
|
179
|
+
public getSenderForTags(): Promise<AztecAddress | undefined> {
|
|
179
180
|
return Promise.resolve(this.senderForTags);
|
|
180
181
|
}
|
|
181
182
|
|
|
@@ -190,7 +191,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
190
191
|
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
191
192
|
* value (unless it is replaced by another call to this setter).
|
|
192
193
|
*/
|
|
193
|
-
public
|
|
194
|
+
public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
194
195
|
this.senderForTags = senderForTags;
|
|
195
196
|
return Promise.resolve();
|
|
196
197
|
}
|
|
@@ -201,23 +202,49 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
201
202
|
* @param recipient - The address receiving the log
|
|
202
203
|
* @returns An app tag to be used in a log.
|
|
203
204
|
*/
|
|
204
|
-
public async
|
|
205
|
-
const
|
|
205
|
+
public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
|
|
206
|
+
const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
|
|
206
207
|
this.contractAddress,
|
|
207
208
|
sender,
|
|
208
209
|
recipient,
|
|
209
210
|
);
|
|
210
211
|
|
|
211
|
-
|
|
212
|
-
|
|
212
|
+
if (!extendedSecret) {
|
|
213
|
+
// We'd only fail to compute an extended secret if the recipient is an invalid address. To prevent
|
|
214
|
+
// king-of-the-hill attacks, instead of failing we use a random tag. By including a correct-looking tag in the
|
|
215
|
+
// log, the transaction shape is preserved and no privacy is leaked, even if the tag is bogus.
|
|
216
|
+
this.logger.warn(`Computing a tag for invalid recipient ${recipient} - returning a random tag instead`, {
|
|
217
|
+
contractAddress: this.contractAddress,
|
|
218
|
+
});
|
|
219
|
+
return new Tag(Fr.random());
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
const index = await this.#getIndexToUseForSecret(extendedSecret);
|
|
223
|
+
this.logger.debug(
|
|
213
224
|
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
214
225
|
);
|
|
215
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
226
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
216
227
|
|
|
217
|
-
return Tag.compute({
|
|
228
|
+
return Tag.compute({ extendedSecret, index });
|
|
218
229
|
}
|
|
219
230
|
|
|
220
|
-
async #
|
|
231
|
+
async #calculateExtendedDirectionalAppTaggingSecret(
|
|
232
|
+
contractAddress: AztecAddress,
|
|
233
|
+
sender: AztecAddress,
|
|
234
|
+
recipient: AztecAddress,
|
|
235
|
+
) {
|
|
236
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
237
|
+
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
238
|
+
return ExtendedDirectionalAppTaggingSecret.compute(
|
|
239
|
+
senderCompleteAddress,
|
|
240
|
+
senderIvsk,
|
|
241
|
+
recipient,
|
|
242
|
+
contractAddress,
|
|
243
|
+
recipient,
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
|
|
221
248
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
222
249
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
223
250
|
|
|
@@ -227,8 +254,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
227
254
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
228
255
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
229
256
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
230
|
-
await
|
|
231
|
-
|
|
257
|
+
await syncSenderTaggingIndexes(
|
|
258
|
+
secret,
|
|
259
|
+
this.aztecNode,
|
|
260
|
+
this.senderTaggingStore,
|
|
261
|
+
await this.anchorBlockHeader.hash(),
|
|
262
|
+
this.jobId,
|
|
263
|
+
);
|
|
264
|
+
|
|
265
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
232
266
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
233
267
|
// Otherwise, the next index to use is one past the last used index
|
|
234
268
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -240,7 +274,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
240
274
|
* @param values - Values to store.
|
|
241
275
|
* @returns The hash of the values.
|
|
242
276
|
*/
|
|
243
|
-
public
|
|
277
|
+
public setHashPreimage(values: Fr[], hash: Fr) {
|
|
244
278
|
return this.executionCache.store(values, hash);
|
|
245
279
|
}
|
|
246
280
|
|
|
@@ -249,7 +283,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
249
283
|
* @param hash - Hash of the values.
|
|
250
284
|
* @returns The values.
|
|
251
285
|
*/
|
|
252
|
-
public
|
|
286
|
+
public getHashPreimage(hash: Fr): Promise<Fr[]> {
|
|
253
287
|
const preimage = this.executionCache.getPreimage(hash);
|
|
254
288
|
if (!preimage) {
|
|
255
289
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -257,12 +291,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
257
291
|
return Promise.resolve(preimage);
|
|
258
292
|
}
|
|
259
293
|
|
|
260
|
-
override async
|
|
294
|
+
override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
|
|
261
295
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
262
296
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
263
297
|
// in the current transaction.
|
|
264
298
|
|
|
265
|
-
this.
|
|
299
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
266
300
|
contractAddress: this.contractAddress,
|
|
267
301
|
});
|
|
268
302
|
|
|
@@ -270,7 +304,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
270
304
|
|
|
271
305
|
return (
|
|
272
306
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
273
|
-
(await super.
|
|
307
|
+
(await super.doesNullifierExist(innerNullifier))
|
|
274
308
|
);
|
|
275
309
|
}
|
|
276
310
|
|
|
@@ -282,6 +316,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
282
316
|
* Real notes coming from DB will have a leafIndex which
|
|
283
317
|
* represents their index in the note hash tree.
|
|
284
318
|
*
|
|
319
|
+
* @param owner - The owner of the notes. If undefined, returns notes for all owners.
|
|
285
320
|
* @param storageSlot - The storage slot.
|
|
286
321
|
* @param numSelects - The number of valid selects in selectBy and selectValues.
|
|
287
322
|
* @param selectBy - An array of indices of the fields to selects.
|
|
@@ -294,7 +329,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
294
329
|
* @param status - The status of notes to fetch.
|
|
295
330
|
* @returns Array of note data.
|
|
296
331
|
*/
|
|
297
|
-
public override async
|
|
332
|
+
public override async getNotes(
|
|
333
|
+
owner: AztecAddress | undefined,
|
|
298
334
|
storageSlot: Fr,
|
|
299
335
|
numSelects: number,
|
|
300
336
|
selectByIndexes: number[],
|
|
@@ -311,11 +347,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
311
347
|
status: NoteStatus,
|
|
312
348
|
): Promise<NoteData[]> {
|
|
313
349
|
// Nullified pending notes are already removed from the list.
|
|
314
|
-
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, storageSlot);
|
|
350
|
+
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
|
|
315
351
|
|
|
316
352
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
317
|
-
|
|
353
|
+
|
|
354
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
355
|
+
const dbNotes = await noteService.getNotes(
|
|
318
356
|
this.callContext.contractAddress,
|
|
357
|
+
owner,
|
|
319
358
|
storageSlot,
|
|
320
359
|
status,
|
|
321
360
|
this.scopes,
|
|
@@ -336,36 +375,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
336
375
|
offset,
|
|
337
376
|
});
|
|
338
377
|
|
|
339
|
-
this.
|
|
378
|
+
this.logger.debug(
|
|
340
379
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
341
380
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
342
381
|
.join(', ')}`,
|
|
343
382
|
);
|
|
344
383
|
|
|
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
384
|
return notes;
|
|
363
385
|
}
|
|
364
386
|
|
|
365
387
|
/**
|
|
366
388
|
* Keep track of the new note created during execution.
|
|
367
389
|
* It can be used in subsequent calls (or transactions when chaining txs is possible).
|
|
368
|
-
* @param
|
|
390
|
+
* @param owner - The owner of the note.
|
|
369
391
|
* @param storageSlot - The storage slot.
|
|
370
392
|
* @param randomness - The randomness injected into the note.
|
|
371
393
|
* @param noteTypeId - The type ID of the note.
|
|
@@ -373,7 +395,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
373
395
|
* @param noteHash - A hash of the new note.
|
|
374
396
|
* @returns
|
|
375
397
|
*/
|
|
376
|
-
public
|
|
398
|
+
public notifyCreatedNote(
|
|
399
|
+
owner: AztecAddress,
|
|
377
400
|
storageSlot: Fr,
|
|
378
401
|
randomness: Fr,
|
|
379
402
|
noteTypeId: NoteSelector,
|
|
@@ -381,7 +404,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
381
404
|
noteHash: Fr,
|
|
382
405
|
counter: number,
|
|
383
406
|
) {
|
|
384
|
-
this.
|
|
407
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
385
408
|
contractAddress: this.callContext.contractAddress,
|
|
386
409
|
storageSlot,
|
|
387
410
|
randomness,
|
|
@@ -393,12 +416,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
393
416
|
this.noteCache.addNewNote(
|
|
394
417
|
{
|
|
395
418
|
contractAddress: this.callContext.contractAddress,
|
|
419
|
+
owner,
|
|
396
420
|
storageSlot,
|
|
397
421
|
randomness,
|
|
398
422
|
noteNonce: Fr.ZERO, // Nonce cannot be known during private execution.
|
|
399
423
|
note,
|
|
400
424
|
siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
|
|
401
425
|
noteHash,
|
|
426
|
+
isPending: true, // This note has just been created and hence is not settled yet.
|
|
402
427
|
},
|
|
403
428
|
counter,
|
|
404
429
|
);
|
|
@@ -411,7 +436,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
411
436
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
412
437
|
* @param noteHash - A hash of the new note.
|
|
413
438
|
*/
|
|
414
|
-
public async
|
|
439
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
415
440
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
416
441
|
this.callContext.contractAddress,
|
|
417
442
|
innerNullifier,
|
|
@@ -428,11 +453,24 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
428
453
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
429
454
|
* @param noteHash - A hash of the new note.
|
|
430
455
|
*/
|
|
431
|
-
public
|
|
432
|
-
this.
|
|
456
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
457
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
433
458
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
434
459
|
}
|
|
435
460
|
|
|
461
|
+
/**
|
|
462
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
|
|
463
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
464
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
465
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
466
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
467
|
+
*/
|
|
468
|
+
public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
469
|
+
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
470
|
+
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
471
|
+
return Promise.resolve(isNullifierPending);
|
|
472
|
+
}
|
|
473
|
+
|
|
436
474
|
/**
|
|
437
475
|
* Emit a contract class log.
|
|
438
476
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -440,10 +478,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
440
478
|
* @param log - The contract class log to be emitted.
|
|
441
479
|
* @param counter - The contract class log's counter.
|
|
442
480
|
*/
|
|
443
|
-
public
|
|
481
|
+
public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
|
|
444
482
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
445
483
|
const text = log.toBuffer().toString('hex');
|
|
446
|
-
this.
|
|
484
|
+
this.logger.verbose(
|
|
447
485
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
448
486
|
);
|
|
449
487
|
}
|
|
@@ -469,7 +507,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
469
507
|
* @param isStaticCall - Whether the call is a static call.
|
|
470
508
|
* @returns The execution result.
|
|
471
509
|
*/
|
|
472
|
-
async
|
|
510
|
+
async callPrivateFunction(
|
|
473
511
|
targetContractAddress: AztecAddress,
|
|
474
512
|
functionSelector: FunctionSelector,
|
|
475
513
|
argsHash: Fr,
|
|
@@ -483,15 +521,22 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
483
521
|
}
|
|
484
522
|
|
|
485
523
|
const simulatorSetupTimer = new Timer();
|
|
486
|
-
this.
|
|
524
|
+
this.logger.debug(
|
|
487
525
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
488
526
|
);
|
|
489
527
|
|
|
490
528
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
491
529
|
|
|
492
|
-
await
|
|
530
|
+
await this.contractSyncService.ensureContractSynced(
|
|
531
|
+
targetContractAddress,
|
|
532
|
+
functionSelector,
|
|
533
|
+
this.utilityExecutor,
|
|
534
|
+
this.anchorBlockHeader,
|
|
535
|
+
this.jobId,
|
|
536
|
+
this.scopes,
|
|
537
|
+
);
|
|
493
538
|
|
|
494
|
-
const targetArtifact = await this.
|
|
539
|
+
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
495
540
|
targetContractAddress,
|
|
496
541
|
functionSelector,
|
|
497
542
|
);
|
|
@@ -500,29 +545,43 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
500
545
|
|
|
501
546
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
502
547
|
|
|
503
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
548
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
504
549
|
argsHash,
|
|
505
|
-
derivedTxContext,
|
|
506
|
-
derivedCallContext,
|
|
507
|
-
this.anchorBlockHeader,
|
|
508
|
-
this.
|
|
509
|
-
this.
|
|
510
|
-
this.
|
|
511
|
-
this.
|
|
512
|
-
this.
|
|
513
|
-
this.
|
|
514
|
-
this.
|
|
550
|
+
txContext: derivedTxContext,
|
|
551
|
+
callContext: derivedCallContext,
|
|
552
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
553
|
+
utilityExecutor: this.utilityExecutor,
|
|
554
|
+
authWitnesses: this.authWitnesses,
|
|
555
|
+
capsules: this.capsules,
|
|
556
|
+
executionCache: this.executionCache,
|
|
557
|
+
noteCache: this.noteCache,
|
|
558
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
559
|
+
contractStore: this.contractStore,
|
|
560
|
+
noteStore: this.noteStore,
|
|
561
|
+
keyStore: this.keyStore,
|
|
562
|
+
addressStore: this.addressStore,
|
|
563
|
+
aztecNode: this.aztecNode,
|
|
564
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
565
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
566
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
567
|
+
capsuleService: this.capsuleService,
|
|
568
|
+
privateEventStore: this.privateEventStore,
|
|
569
|
+
messageContextService: this.messageContextService,
|
|
570
|
+
contractSyncService: this.contractSyncService,
|
|
571
|
+
jobId: this.jobId,
|
|
572
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
515
573
|
sideEffectCounter,
|
|
516
|
-
this.
|
|
517
|
-
this.
|
|
518
|
-
this.senderForTags,
|
|
519
|
-
this.simulator
|
|
520
|
-
|
|
574
|
+
scopes: this.scopes,
|
|
575
|
+
log: this.logger,
|
|
576
|
+
senderForTags: this.senderForTags,
|
|
577
|
+
simulator: this.simulator!,
|
|
578
|
+
l2TipsStore: this.l2TipsStore,
|
|
579
|
+
});
|
|
521
580
|
|
|
522
581
|
const setupTime = simulatorSetupTimer.ms();
|
|
523
582
|
|
|
524
583
|
const childExecutionResult = await executePrivateFunction(
|
|
525
|
-
this.simulator
|
|
584
|
+
this.simulator!,
|
|
526
585
|
privateExecutionOracle,
|
|
527
586
|
targetArtifact,
|
|
528
587
|
targetContractAddress,
|
|
@@ -548,7 +607,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
548
607
|
};
|
|
549
608
|
}
|
|
550
609
|
|
|
551
|
-
|
|
610
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
611
|
+
public assertValidPublicCalldata(calldataHash: Fr) {
|
|
552
612
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
553
613
|
if (!calldata) {
|
|
554
614
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -558,47 +618,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
558
618
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
559
619
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
560
620
|
}
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
/**
|
|
564
|
-
* Verify relevant information when a public function is enqueued.
|
|
565
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
566
|
-
* @param calldataHash - The hash of the function selector and arguments.
|
|
567
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
568
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
569
|
-
*/
|
|
570
|
-
public privateNotifyEnqueuedPublicFunctionCall(
|
|
571
|
-
_targetContractAddress: AztecAddress,
|
|
572
|
-
calldataHash: Fr,
|
|
573
|
-
_sideEffectCounter: number,
|
|
574
|
-
_isStaticCall: boolean,
|
|
575
|
-
) {
|
|
576
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
577
621
|
return Promise.resolve();
|
|
578
622
|
}
|
|
579
623
|
|
|
580
|
-
|
|
581
|
-
* Verify relevant information when a public teardown function is set.
|
|
582
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
583
|
-
* @param argsHash - The arguments hash to pass to the function.
|
|
584
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
585
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
586
|
-
*/
|
|
587
|
-
public privateNotifySetPublicTeardownFunctionCall(
|
|
588
|
-
_targetContractAddress: AztecAddress,
|
|
589
|
-
calldataHash: Fr,
|
|
590
|
-
_sideEffectCounter: number,
|
|
591
|
-
_isStaticCall: boolean,
|
|
592
|
-
) {
|
|
593
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
594
|
-
return Promise.resolve();
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
public privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
624
|
+
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
598
625
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
599
626
|
}
|
|
600
627
|
|
|
601
|
-
public
|
|
628
|
+
public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
602
629
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
603
630
|
}
|
|
604
631
|
|
|
@@ -623,11 +650,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
623
650
|
}
|
|
624
651
|
|
|
625
652
|
public getDebugFunctionName() {
|
|
626
|
-
return this.
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|
|
630
|
-
this.offchainEffects.push({ data });
|
|
631
|
-
return Promise.resolve();
|
|
653
|
+
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
632
654
|
}
|
|
633
655
|
}
|