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