@aztec/pxe 0.0.1-commit.5daedc8 → 0.0.1-commit.6201a7b05
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_stream_source.d.ts +10 -0
- package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
- package/dest/block_synchronizer/block_stream_source.js +37 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts +49 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/block_synchronizer/block_synchronizer.js +173 -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 -5
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +12 -2
- 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 +252 -82
- 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 +72 -87
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +153 -127
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +168 -58
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +403 -108
- 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 +21 -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 +65 -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 +27 -26
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +91 -2
- package/dest/pxe.d.ts +128 -103
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +318 -266
- 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 +276 -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_stream_source.ts +52 -0
- package/src/block_synchronizer/block_synchronizer.ts +200 -0
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +12 -4
- 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 +424 -114
- 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 +212 -174
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +677 -113
- package/src/contract_function_simulator/pick_notes.ts +23 -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 +96 -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 +516 -364
- 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 +388 -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 +130 -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,46 +68,53 @@ 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
|
+
private readonly initialSideEffectCounter: number;
|
|
85
|
+
/** Sender for tags passed in at oracle construction time. Returned by `getSenderForTags` unless overridden. */
|
|
86
|
+
private readonly defaultSenderForTags: AztecAddress | undefined;
|
|
87
|
+
/** Per-call sender-for-tags override, set by `setSenderForTags`. Takes precedence over `defaultSenderForTags`. */
|
|
88
|
+
private currentSenderForTags: AztecAddress | undefined;
|
|
89
|
+
private readonly simulator?: CircuitSimulator;
|
|
90
|
+
|
|
91
|
+
constructor(args: PrivateExecutionOracleArgs) {
|
|
92
|
+
super({
|
|
93
|
+
...args,
|
|
94
|
+
contractAddress: args.callContext.contractAddress,
|
|
95
|
+
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
96
|
+
});
|
|
97
|
+
this.argsHash = args.argsHash;
|
|
98
|
+
this.txContext = args.txContext;
|
|
99
|
+
this.callContext = args.callContext;
|
|
100
|
+
this.utilityExecutor = args.utilityExecutor;
|
|
101
|
+
this.executionCache = args.executionCache;
|
|
102
|
+
this.noteCache = args.noteCache;
|
|
103
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
104
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
105
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
106
|
+
this.initialSideEffectCounter = args.sideEffectCounter ?? 0;
|
|
107
|
+
this.defaultSenderForTags = args.senderForTags;
|
|
108
|
+
this.simulator = args.simulator;
|
|
90
109
|
}
|
|
91
110
|
|
|
92
111
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
93
|
-
return new PrivateContextInputs(
|
|
112
|
+
return new PrivateContextInputs(
|
|
113
|
+
this.callContext,
|
|
114
|
+
this.anchorBlockHeader,
|
|
115
|
+
this.txContext,
|
|
116
|
+
this.initialSideEffectCounter,
|
|
117
|
+
);
|
|
94
118
|
}
|
|
95
119
|
|
|
96
120
|
// We still need this function until we can get user-defined ordering of structs for fn arguments
|
|
@@ -118,14 +142,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
118
142
|
return toACVMWitness(0, fields);
|
|
119
143
|
}
|
|
120
144
|
|
|
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
145
|
/**
|
|
130
146
|
* Get the data for the newly created notes.
|
|
131
147
|
*/
|
|
@@ -145,17 +161,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
145
161
|
}
|
|
146
162
|
|
|
147
163
|
/**
|
|
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).
|
|
164
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
156
165
|
*/
|
|
157
|
-
public
|
|
158
|
-
return this.taggingIndexCache.
|
|
166
|
+
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
167
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
159
168
|
}
|
|
160
169
|
|
|
161
170
|
/**
|
|
@@ -172,11 +181,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
172
181
|
* for a tag in order to emit a log. Constrained tagging should not use this as there is no
|
|
173
182
|
* guarantee that the recipient knows about the sender, and hence about the shared secret.
|
|
174
183
|
*
|
|
175
|
-
*
|
|
176
|
-
* 'senderForTags' value (unless it is replaced).
|
|
184
|
+
* Returns `currentSenderForTags` if set (via `setSenderForTags`), otherwise `defaultSenderForTags`.
|
|
177
185
|
*/
|
|
178
|
-
public
|
|
179
|
-
return Promise.resolve(this.
|
|
186
|
+
public getSenderForTags(): Promise<AztecAddress | undefined> {
|
|
187
|
+
return Promise.resolve(this.currentSenderForTags ?? this.defaultSenderForTags);
|
|
180
188
|
}
|
|
181
189
|
|
|
182
190
|
/**
|
|
@@ -186,12 +194,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
186
194
|
* for a tag in order to emit a log. Constrained tagging should not use this as there is no
|
|
187
195
|
* guarantee that the recipient knows about the sender, and hence about the shared secret.
|
|
188
196
|
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
* value (unless it is replaced by another call to this setter).
|
|
197
|
+
* Overrides `defaultSenderForTags` for the remainder of this call. Each oracle instance is
|
|
198
|
+
* independent, so this has no effect on any other call in the execution.
|
|
192
199
|
*/
|
|
193
|
-
public
|
|
194
|
-
this.
|
|
200
|
+
public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
201
|
+
this.logger.debug(
|
|
202
|
+
`Sender for tags switched to ${senderForTags} by contract ${this.contractAddress} (default was ${this.defaultSenderForTags})`,
|
|
203
|
+
);
|
|
204
|
+
this.currentSenderForTags = senderForTags;
|
|
195
205
|
return Promise.resolve();
|
|
196
206
|
}
|
|
197
207
|
|
|
@@ -201,23 +211,49 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
201
211
|
* @param recipient - The address receiving the log
|
|
202
212
|
* @returns An app tag to be used in a log.
|
|
203
213
|
*/
|
|
204
|
-
public async
|
|
205
|
-
const
|
|
214
|
+
public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
|
|
215
|
+
const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
|
|
206
216
|
this.contractAddress,
|
|
207
217
|
sender,
|
|
208
218
|
recipient,
|
|
209
219
|
);
|
|
210
220
|
|
|
211
|
-
|
|
212
|
-
|
|
221
|
+
if (!extendedSecret) {
|
|
222
|
+
// We'd only fail to compute an extended secret if the recipient is an invalid address. To prevent
|
|
223
|
+
// king-of-the-hill attacks, instead of failing we use a random tag. By including a correct-looking tag in the
|
|
224
|
+
// log, the transaction shape is preserved and no privacy is leaked, even if the tag is bogus.
|
|
225
|
+
this.logger.warn(`Computing a tag for invalid recipient ${recipient} - returning a random tag instead`, {
|
|
226
|
+
contractAddress: this.contractAddress,
|
|
227
|
+
});
|
|
228
|
+
return Tag.random();
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
const index = await this.#getIndexToUseForSecret(extendedSecret);
|
|
232
|
+
this.logger.debug(
|
|
213
233
|
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
214
234
|
);
|
|
215
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
235
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
236
|
+
|
|
237
|
+
return Tag.compute({ extendedSecret, index });
|
|
238
|
+
}
|
|
216
239
|
|
|
217
|
-
|
|
240
|
+
async #calculateExtendedDirectionalAppTaggingSecret(
|
|
241
|
+
contractAddress: AztecAddress,
|
|
242
|
+
sender: AztecAddress,
|
|
243
|
+
recipient: AztecAddress,
|
|
244
|
+
) {
|
|
245
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
246
|
+
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
247
|
+
return ExtendedDirectionalAppTaggingSecret.compute(
|
|
248
|
+
senderCompleteAddress,
|
|
249
|
+
senderIvsk,
|
|
250
|
+
recipient,
|
|
251
|
+
contractAddress,
|
|
252
|
+
recipient,
|
|
253
|
+
);
|
|
218
254
|
}
|
|
219
255
|
|
|
220
|
-
async #getIndexToUseForSecret(secret:
|
|
256
|
+
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
|
|
221
257
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
222
258
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
223
259
|
|
|
@@ -227,8 +263,15 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
227
263
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
228
264
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
229
265
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
230
|
-
await
|
|
231
|
-
|
|
266
|
+
await syncSenderTaggingIndexes(
|
|
267
|
+
secret,
|
|
268
|
+
this.aztecNode,
|
|
269
|
+
this.senderTaggingStore,
|
|
270
|
+
await this.anchorBlockHeader.hash(),
|
|
271
|
+
this.jobId,
|
|
272
|
+
);
|
|
273
|
+
|
|
274
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
232
275
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
233
276
|
// Otherwise, the next index to use is one past the last used index
|
|
234
277
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -240,7 +283,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
240
283
|
* @param values - Values to store.
|
|
241
284
|
* @returns The hash of the values.
|
|
242
285
|
*/
|
|
243
|
-
public
|
|
286
|
+
public setHashPreimage(values: Fr[], hash: Fr) {
|
|
244
287
|
return this.executionCache.store(values, hash);
|
|
245
288
|
}
|
|
246
289
|
|
|
@@ -249,7 +292,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
249
292
|
* @param hash - Hash of the values.
|
|
250
293
|
* @returns The values.
|
|
251
294
|
*/
|
|
252
|
-
public
|
|
295
|
+
public getHashPreimage(hash: Fr): Promise<Fr[]> {
|
|
253
296
|
const preimage = this.executionCache.getPreimage(hash);
|
|
254
297
|
if (!preimage) {
|
|
255
298
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -257,12 +300,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
257
300
|
return Promise.resolve(preimage);
|
|
258
301
|
}
|
|
259
302
|
|
|
260
|
-
override async
|
|
303
|
+
override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
|
|
261
304
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
262
305
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
263
306
|
// in the current transaction.
|
|
264
307
|
|
|
265
|
-
this.
|
|
308
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
266
309
|
contractAddress: this.contractAddress,
|
|
267
310
|
});
|
|
268
311
|
|
|
@@ -270,7 +313,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
270
313
|
|
|
271
314
|
return (
|
|
272
315
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
273
|
-
(await super.
|
|
316
|
+
(await super.doesNullifierExist(innerNullifier))
|
|
274
317
|
);
|
|
275
318
|
}
|
|
276
319
|
|
|
@@ -282,6 +325,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
282
325
|
* Real notes coming from DB will have a leafIndex which
|
|
283
326
|
* represents their index in the note hash tree.
|
|
284
327
|
*
|
|
328
|
+
* @param owner - The owner of the notes. If undefined, returns notes for all owners.
|
|
285
329
|
* @param storageSlot - The storage slot.
|
|
286
330
|
* @param numSelects - The number of valid selects in selectBy and selectValues.
|
|
287
331
|
* @param selectBy - An array of indices of the fields to selects.
|
|
@@ -294,7 +338,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
294
338
|
* @param status - The status of notes to fetch.
|
|
295
339
|
* @returns Array of note data.
|
|
296
340
|
*/
|
|
297
|
-
public override async
|
|
341
|
+
public override async getNotes(
|
|
342
|
+
owner: AztecAddress | undefined,
|
|
298
343
|
storageSlot: Fr,
|
|
299
344
|
numSelects: number,
|
|
300
345
|
selectByIndexes: number[],
|
|
@@ -311,11 +356,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
311
356
|
status: NoteStatus,
|
|
312
357
|
): Promise<NoteData[]> {
|
|
313
358
|
// Nullified pending notes are already removed from the list.
|
|
314
|
-
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, storageSlot);
|
|
359
|
+
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
|
|
315
360
|
|
|
316
361
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
317
|
-
|
|
362
|
+
|
|
363
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
364
|
+
const dbNotes = await noteService.getNotes(
|
|
318
365
|
this.callContext.contractAddress,
|
|
366
|
+
owner,
|
|
319
367
|
storageSlot,
|
|
320
368
|
status,
|
|
321
369
|
this.scopes,
|
|
@@ -336,36 +384,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
336
384
|
offset,
|
|
337
385
|
});
|
|
338
386
|
|
|
339
|
-
this.
|
|
387
|
+
this.logger.debug(
|
|
340
388
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
341
389
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
342
390
|
.join(', ')}`,
|
|
343
391
|
);
|
|
344
392
|
|
|
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
393
|
return notes;
|
|
363
394
|
}
|
|
364
395
|
|
|
365
396
|
/**
|
|
366
397
|
* Keep track of the new note created during execution.
|
|
367
398
|
* It can be used in subsequent calls (or transactions when chaining txs is possible).
|
|
368
|
-
* @param
|
|
399
|
+
* @param owner - The owner of the note.
|
|
369
400
|
* @param storageSlot - The storage slot.
|
|
370
401
|
* @param randomness - The randomness injected into the note.
|
|
371
402
|
* @param noteTypeId - The type ID of the note.
|
|
@@ -373,7 +404,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
373
404
|
* @param noteHash - A hash of the new note.
|
|
374
405
|
* @returns
|
|
375
406
|
*/
|
|
376
|
-
public
|
|
407
|
+
public notifyCreatedNote(
|
|
408
|
+
owner: AztecAddress,
|
|
377
409
|
storageSlot: Fr,
|
|
378
410
|
randomness: Fr,
|
|
379
411
|
noteTypeId: NoteSelector,
|
|
@@ -381,7 +413,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
381
413
|
noteHash: Fr,
|
|
382
414
|
counter: number,
|
|
383
415
|
) {
|
|
384
|
-
this.
|
|
416
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
385
417
|
contractAddress: this.callContext.contractAddress,
|
|
386
418
|
storageSlot,
|
|
387
419
|
randomness,
|
|
@@ -393,12 +425,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
393
425
|
this.noteCache.addNewNote(
|
|
394
426
|
{
|
|
395
427
|
contractAddress: this.callContext.contractAddress,
|
|
428
|
+
owner,
|
|
396
429
|
storageSlot,
|
|
397
430
|
randomness,
|
|
398
431
|
noteNonce: Fr.ZERO, // Nonce cannot be known during private execution.
|
|
399
432
|
note,
|
|
400
433
|
siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
|
|
401
434
|
noteHash,
|
|
435
|
+
isPending: true, // This note has just been created and hence is not settled yet.
|
|
402
436
|
},
|
|
403
437
|
counter,
|
|
404
438
|
);
|
|
@@ -411,7 +445,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
411
445
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
412
446
|
* @param noteHash - A hash of the new note.
|
|
413
447
|
*/
|
|
414
|
-
public async
|
|
448
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
415
449
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
416
450
|
this.callContext.contractAddress,
|
|
417
451
|
innerNullifier,
|
|
@@ -428,11 +462,24 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
428
462
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
429
463
|
* @param noteHash - A hash of the new note.
|
|
430
464
|
*/
|
|
431
|
-
public
|
|
432
|
-
this.
|
|
465
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
466
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
433
467
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
434
468
|
}
|
|
435
469
|
|
|
470
|
+
/**
|
|
471
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
|
|
472
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
473
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
474
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
475
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
476
|
+
*/
|
|
477
|
+
public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
478
|
+
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
479
|
+
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
480
|
+
return Promise.resolve(isNullifierPending);
|
|
481
|
+
}
|
|
482
|
+
|
|
436
483
|
/**
|
|
437
484
|
* Emit a contract class log.
|
|
438
485
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -440,10 +487,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
440
487
|
* @param log - The contract class log to be emitted.
|
|
441
488
|
* @param counter - The contract class log's counter.
|
|
442
489
|
*/
|
|
443
|
-
public
|
|
490
|
+
public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
|
|
444
491
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
445
492
|
const text = log.toBuffer().toString('hex');
|
|
446
|
-
this.
|
|
493
|
+
this.logger.verbose(
|
|
447
494
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
448
495
|
);
|
|
449
496
|
}
|
|
@@ -469,7 +516,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
469
516
|
* @param isStaticCall - Whether the call is a static call.
|
|
470
517
|
* @returns The execution result.
|
|
471
518
|
*/
|
|
472
|
-
async
|
|
519
|
+
async callPrivateFunction(
|
|
473
520
|
targetContractAddress: AztecAddress,
|
|
474
521
|
functionSelector: FunctionSelector,
|
|
475
522
|
argsHash: Fr,
|
|
@@ -483,15 +530,22 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
483
530
|
}
|
|
484
531
|
|
|
485
532
|
const simulatorSetupTimer = new Timer();
|
|
486
|
-
this.
|
|
533
|
+
this.logger.debug(
|
|
487
534
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
488
535
|
);
|
|
489
536
|
|
|
490
537
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
491
538
|
|
|
492
|
-
await
|
|
539
|
+
await this.contractSyncService.ensureContractSynced(
|
|
540
|
+
targetContractAddress,
|
|
541
|
+
functionSelector,
|
|
542
|
+
this.utilityExecutor,
|
|
543
|
+
this.anchorBlockHeader,
|
|
544
|
+
this.jobId,
|
|
545
|
+
this.scopes,
|
|
546
|
+
);
|
|
493
547
|
|
|
494
|
-
const targetArtifact = await this.
|
|
548
|
+
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
495
549
|
targetContractAddress,
|
|
496
550
|
functionSelector,
|
|
497
551
|
);
|
|
@@ -500,35 +554,52 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
500
554
|
|
|
501
555
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
502
556
|
|
|
503
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
557
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
504
558
|
argsHash,
|
|
505
|
-
derivedTxContext,
|
|
506
|
-
derivedCallContext,
|
|
507
|
-
this.anchorBlockHeader,
|
|
508
|
-
this.
|
|
509
|
-
this.
|
|
510
|
-
this.
|
|
511
|
-
this.
|
|
512
|
-
this.
|
|
513
|
-
this.
|
|
514
|
-
this.
|
|
559
|
+
txContext: derivedTxContext,
|
|
560
|
+
callContext: derivedCallContext,
|
|
561
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
562
|
+
utilityExecutor: this.utilityExecutor,
|
|
563
|
+
authWitnesses: this.authWitnesses,
|
|
564
|
+
capsules: this.capsules,
|
|
565
|
+
executionCache: this.executionCache,
|
|
566
|
+
noteCache: this.noteCache,
|
|
567
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
568
|
+
contractStore: this.contractStore,
|
|
569
|
+
noteStore: this.noteStore,
|
|
570
|
+
keyStore: this.keyStore,
|
|
571
|
+
addressStore: this.addressStore,
|
|
572
|
+
aztecNode: this.aztecNode,
|
|
573
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
574
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
575
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
576
|
+
capsuleService: this.capsuleService,
|
|
577
|
+
privateEventStore: this.privateEventStore,
|
|
578
|
+
messageContextService: this.messageContextService,
|
|
579
|
+
contractSyncService: this.contractSyncService,
|
|
580
|
+
jobId: this.jobId,
|
|
581
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
515
582
|
sideEffectCounter,
|
|
516
|
-
this.
|
|
517
|
-
this.scopes,
|
|
518
|
-
this.
|
|
519
|
-
this.simulator
|
|
520
|
-
|
|
583
|
+
log: this.logger,
|
|
584
|
+
scopes: this.scopes,
|
|
585
|
+
senderForTags: this.defaultSenderForTags,
|
|
586
|
+
simulator: this.simulator!,
|
|
587
|
+
l2TipsStore: this.l2TipsStore,
|
|
588
|
+
});
|
|
521
589
|
|
|
522
590
|
const setupTime = simulatorSetupTimer.ms();
|
|
523
591
|
|
|
524
592
|
const childExecutionResult = await executePrivateFunction(
|
|
525
|
-
this.simulator
|
|
593
|
+
this.simulator!,
|
|
526
594
|
privateExecutionOracle,
|
|
527
595
|
targetArtifact,
|
|
528
596
|
targetContractAddress,
|
|
529
597
|
functionSelector,
|
|
530
598
|
);
|
|
531
599
|
|
|
600
|
+
// Propagate the nested call's calldata count so the parent sees its increments on subsequent enqueues.
|
|
601
|
+
this.totalPublicCalldataCount = privateExecutionOracle.getTotalPublicCalldataCount();
|
|
602
|
+
|
|
532
603
|
if (isStaticCall) {
|
|
533
604
|
this.#checkValidStaticCall(childExecutionResult);
|
|
534
605
|
}
|
|
@@ -548,7 +619,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
548
619
|
};
|
|
549
620
|
}
|
|
550
621
|
|
|
551
|
-
|
|
622
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
623
|
+
public assertValidPublicCalldata(calldataHash: Fr) {
|
|
552
624
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
553
625
|
if (!calldata) {
|
|
554
626
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -558,47 +630,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
558
630
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
559
631
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
560
632
|
}
|
|
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
633
|
return Promise.resolve();
|
|
578
634
|
}
|
|
579
635
|
|
|
580
|
-
|
|
581
|
-
|
|
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();
|
|
636
|
+
public getTotalPublicCalldataCount(): number {
|
|
637
|
+
return this.totalPublicCalldataCount;
|
|
595
638
|
}
|
|
596
639
|
|
|
597
|
-
public
|
|
640
|
+
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
598
641
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
599
642
|
}
|
|
600
643
|
|
|
601
|
-
public
|
|
644
|
+
public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
602
645
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
603
646
|
}
|
|
604
647
|
|
|
@@ -623,11 +666,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
623
666
|
}
|
|
624
667
|
|
|
625
668
|
public getDebugFunctionName() {
|
|
626
|
-
return this.
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|
|
630
|
-
this.offchainEffects.push({ data });
|
|
631
|
-
return Promise.resolve();
|
|
669
|
+
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
632
670
|
}
|
|
633
671
|
}
|