@aztec/pxe 0.0.1-fake-ceab37513c → 0.0.6-commit.a2d1860fe9
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/README.md +5 -5
- package/dest/access_scopes.d.ts +9 -0
- package/dest/access_scopes.d.ts.map +1 -0
- package/dest/access_scopes.js +6 -0
- package/dest/bin/check_oracle_version.d.ts +1 -1
- package/dest/bin/check_oracle_version.js +110 -10
- package/dest/block_synchronizer/block_synchronizer.d.ts +45 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/block_synchronizer/block_synchronizer.js +153 -0
- package/dest/block_synchronizer/index.d.ts +2 -0
- package/dest/block_synchronizer/index.d.ts.map +1 -0
- package/dest/block_synchronizer/index.js +1 -0
- package/dest/config/index.d.ts +11 -17
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +27 -16
- package/dest/config/package_info.d.ts +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/benchmarked_node.js +77 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +79 -27
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +287 -87
- package/dest/contract_function_simulator/execution_note_cache.d.ts +26 -15
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +65 -37
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +16 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +26 -0
- 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 +5 -3
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +3 -2
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -4
- 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 +7 -4
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +3 -3
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +8 -4
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +7 -4
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +13 -4
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.js +22 -0
- package/dest/contract_function_simulator/oracle/index.d.ts +2 -2
- package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/index.js +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +107 -0
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +2 -2
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +14 -8
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +16 -11
- package/dest/contract_function_simulator/oracle/oracle.d.ts +26 -22
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +156 -113
- 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 +3 -48
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +72 -52
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +173 -68
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +116 -53
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +217 -94
- package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
- package/dest/contract_logging.d.ts +22 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +23 -0
- package/dest/contract_sync/contract_sync_service.d.ts +43 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +97 -0
- package/dest/contract_sync/helpers.d.ts +29 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/helpers.js +55 -0
- package/dest/debug/pxe_debug_utils.d.ts +45 -0
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
- package/dest/debug/pxe_debug_utils.js +48 -0
- package/dest/entrypoints/client/bundle/index.d.ts +7 -3
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +5 -2
- package/dest/entrypoints/client/bundle/utils.d.ts +9 -9
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +40 -17
- package/dest/entrypoints/client/lazy/index.d.ts +7 -3
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +5 -2
- package/dest/entrypoints/client/lazy/utils.d.ts +9 -9
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +40 -17
- package/dest/entrypoints/pxe_creation_options.d.ts +7 -3
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +9 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +7 -2
- package/dest/entrypoints/server/utils.d.ts +5 -24
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +42 -51
- package/dest/error_enriching.d.ts +11 -0
- package/dest/error_enriching.d.ts.map +1 -0
- package/dest/{pxe_service/error_enriching.js → error_enriching.js} +9 -6
- package/dest/events/event_service.d.ts +15 -0
- package/dest/events/event_service.d.ts.map +1 -0
- package/dest/events/event_service.js +44 -0
- package/dest/events/index.d.ts +2 -0
- package/dest/events/index.d.ts.map +1 -0
- package/dest/events/index.js +1 -0
- package/dest/events/private_event_filter_validator.d.ts +9 -0
- package/dest/events/private_event_filter_validator.d.ts.map +1 -0
- package/dest/events/private_event_filter_validator.js +38 -0
- package/dest/job_coordinator/job_coordinator.d.ts +75 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +94 -0
- package/dest/logs/log_service.d.ts +29 -0
- package/dest/logs/log_service.d.ts.map +1 -0
- package/dest/logs/log_service.js +118 -0
- package/dest/notes/index.d.ts +2 -0
- package/dest/notes/index.d.ts.map +1 -0
- package/dest/notes/index.js +1 -0
- package/dest/notes/note_service.d.ts +49 -0
- package/dest/notes/note_service.d.ts.map +1 -0
- package/dest/notes/note_service.js +148 -0
- package/dest/notes_filter.d.ts +25 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +4 -3
- 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_expiration_timestamp.js +41 -0
- 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 +28 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
- package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +22 -16
- package/dest/private_kernel/index.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +11 -3
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +48 -43
- package/dest/private_kernel/private_kernel_oracle.d.ts +26 -25
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +94 -2
- package/dest/pxe.d.ts +250 -0
- package/dest/pxe.d.ts.map +1 -0
- package/dest/pxe.js +774 -0
- 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 -15
- package/dest/storage/address_store/index.d.ts +2 -0
- package/dest/storage/address_store/index.d.ts.map +1 -0
- package/dest/storage/address_store/index.js +1 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
- package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +10 -13
- package/dest/storage/anchor_block_store/index.d.ts +2 -0
- package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
- package/dest/storage/anchor_block_store/index.js +1 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_store.js +253 -0
- package/dest/storage/capsule_store/index.d.ts +2 -0
- package/dest/storage/capsule_store/index.d.ts.map +1 -0
- package/dest/storage/capsule_store/index.js +1 -0
- package/dest/storage/contract_store/contract_store.d.ts +93 -0
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
- package/dest/storage/contract_store/contract_store.js +309 -0
- package/dest/storage/contract_store/index.d.ts +2 -0
- package/dest/storage/contract_store/index.d.ts.map +1 -0
- package/dest/storage/contract_store/index.js +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
- package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
- package/dest/storage/index.d.ts +8 -9
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +7 -8
- package/dest/storage/metadata.d.ts +2 -2
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/index.d.ts +3 -0
- package/dest/storage/note_store/index.d.ts.map +1 -0
- package/dest/storage/note_store/index.js +2 -0
- package/dest/storage/note_store/note_store.d.ts +83 -0
- package/dest/storage/note_store/note_store.d.ts.map +1 -0
- package/dest/storage/note_store/note_store.js +343 -0
- package/dest/storage/note_store/stored_note.d.ts +16 -0
- package/dest/storage/note_store/stored_note.d.ts.map +1 -0
- package/dest/storage/note_store/stored_note.js +43 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
- package/dest/storage/private_event_store/private_event_store.js +273 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
- package/dest/storage/private_event_store/stored_private_event.js +56 -0
- package/dest/storage/tagging_store/index.d.ts +4 -0
- package/dest/storage/tagging_store/index.d.ts.map +1 -0
- package/dest/storage/tagging_store/index.js +3 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_address_book_store.js +36 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +77 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_tagging_store.js +348 -0
- package/dest/tagging/constants.d.ts +2 -0
- package/dest/tagging/constants.d.ts.map +1 -0
- package/dest/tagging/constants.js +10 -0
- 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 -0
- package/dest/tagging/index.d.ts.map +1 -0
- package/dest/tagging/index.js +15 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +15 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +15 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +32 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +21 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +29 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +21 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +60 -0
- package/package.json +30 -23
- package/src/access_scopes.ts +9 -0
- package/src/bin/check_oracle_version.ts +135 -10
- package/src/block_synchronizer/block_synchronizer.ts +178 -0
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +32 -32
- 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 +505 -140
- package/src/contract_function_simulator/execution_note_cache.ts +67 -32
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +32 -0
- package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
- package/src/contract_function_simulator/index.ts +4 -2
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +7 -3
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +10 -5
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +15 -3
- package/src/contract_function_simulator/noir-structs/utility_context.ts +23 -0
- package/src/contract_function_simulator/oracle/index.ts +1 -1
- package/src/contract_function_simulator/oracle/interfaces.ts +185 -0
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +30 -14
- package/src/contract_function_simulator/oracle/oracle.ts +197 -110
- package/src/contract_function_simulator/oracle/private_execution.ts +4 -78
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +248 -122
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +372 -138
- package/src/contract_function_simulator/pick_notes.ts +1 -1
- package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
- package/src/contract_logging.ts +39 -0
- package/src/contract_sync/contract_sync_service.ts +152 -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 +6 -2
- package/src/entrypoints/client/bundle/utils.ts +31 -32
- package/src/entrypoints/client/lazy/index.ts +6 -2
- package/src/entrypoints/client/lazy/utils.ts +31 -32
- package/src/entrypoints/pxe_creation_options.ts +6 -2
- package/src/entrypoints/server/index.ts +8 -2
- package/src/entrypoints/server/utils.ts +39 -91
- package/src/{pxe_service/error_enriching.ts → error_enriching.ts} +11 -15
- package/src/events/event_service.ts +71 -0
- package/src/events/index.ts +1 -0
- package/src/events/private_event_filter_validator.ts +46 -0
- package/src/job_coordinator/job_coordinator.ts +150 -0
- package/src/logs/log_service.ts +208 -0
- package/src/notes/index.ts +1 -0
- package/src/notes/note_service.ts +196 -0
- package/src/notes_filter.ts +26 -0
- package/src/oracle_version.ts +4 -3
- package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +16 -16
- 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} +44 -37
- package/src/private_kernel/private_kernel_execution_prover.ts +64 -55
- package/src/private_kernel/private_kernel_oracle.ts +118 -37
- package/src/pxe.ts +1137 -0
- package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +15 -21
- package/src/storage/address_store/index.ts +1 -0
- package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +10 -17
- package/src/storage/anchor_block_store/index.ts +1 -0
- package/src/storage/capsule_store/capsule_store.ts +315 -0
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/contract_store/contract_store.ts +429 -0
- package/src/storage/contract_store/index.ts +1 -0
- package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
- package/src/storage/index.ts +7 -8
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/note_store/note_store.ts +418 -0
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +384 -0
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/index.ts +3 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +139 -0
- package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
- package/src/storage/tagging_store/sender_tagging_store.ts +429 -0
- package/src/tagging/constants.ts +10 -0
- package/src/tagging/get_all_logs_by_tags.ts +92 -0
- package/src/tagging/index.ts +19 -0
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +143 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +49 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +99 -0
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +36 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +84 -0
- package/dest/bin/index.d.ts +0 -3
- package/dest/bin/index.d.ts.map +0 -1
- package/dest/bin/index.js +0 -48
- package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -285
- 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/oracle/typed_oracle.d.ts +0 -87
- package/dest/contract_function_simulator/oracle/typed_oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/typed_oracle.js +0 -146
- 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 -158
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
- package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -701
- package/dest/contract_function_simulator/tagging_utils.d.ts +0 -17
- package/dest/contract_function_simulator/tagging_utils.d.ts.map +0 -1
- package/dest/contract_function_simulator/tagging_utils.js +0 -23
- 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/hints/compute_tx_include_by_timestamp.js +0 -41
- 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/pxe_service/error_enriching.d.ts +0 -11
- package/dest/pxe_service/error_enriching.d.ts.map +0 -1
- package/dest/pxe_service/index.d.ts +0 -3
- package/dest/pxe_service/index.d.ts.map +0 -1
- package/dest/pxe_service/index.js +0 -2
- package/dest/pxe_service/pxe_service.d.ts +0 -101
- package/dest/pxe_service/pxe_service.d.ts.map +0 -1
- package/dest/pxe_service/pxe_service.js +0 -791
- package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -13
- 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 -27
- 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 -122
- 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 -75
- 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 -208
- 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/data_provider.d.ts +0 -4
- package/dest/storage/data_provider.d.ts.map +0 -1
- package/dest/storage/data_provider.js +0 -1
- package/dest/storage/note_data_provider/index.d.ts +0 -3
- package/dest/storage/note_data_provider/index.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.js +0 -2
- package/dest/storage/note_data_provider/note_dao.d.ts +0 -100
- package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_dao.js +0 -102
- package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -20
- 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 -260
- 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 -96
- package/dest/storage/sync_data_provider/index.d.ts +0 -2
- package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/index.js +0 -1
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -12
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.d.ts +0 -2
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -18
- 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 -82
- 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 -102
- package/dest/test/pxe_test_suite.d.ts +0 -3
- package/dest/test/pxe_test_suite.d.ts.map +0 -1
- package/dest/test/pxe_test_suite.js +0 -97
- package/src/bin/index.ts +0 -62
- package/src/contract_function_simulator/execution_data_provider.ts +0 -361
- package/src/contract_function_simulator/oracle/typed_oracle.ts +0 -289
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1020
- package/src/contract_function_simulator/tagging_utils.ts +0 -32
- package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
- package/src/pxe_service/index.ts +0 -2
- package/src/pxe_service/pxe_service.ts +0 -1139
- package/src/storage/address_data_provider/index.ts +0 -1
- package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -157
- package/src/storage/capsule_data_provider/index.ts +0 -1
- package/src/storage/contract_data_provider/contract_data_provider.ts +0 -300
- package/src/storage/contract_data_provider/index.ts +0 -1
- package/src/storage/data_provider.ts +0 -3
- package/src/storage/note_data_provider/index.ts +0 -2
- package/src/storage/note_data_provider/note_dao.ts +0 -154
- package/src/storage/note_data_provider/note_data_provider.ts +0 -350
- package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -134
- 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 -123
- package/src/synchronizer/index.ts +0 -1
- package/src/synchronizer/synchronizer.ts +0 -121
- package/src/test/pxe_test_suite.ts +0 -113
|
@@ -1,43 +1,67 @@
|
|
|
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, DirectionalAppTaggingSecret, type PreTag } 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 type {
|
|
28
|
+
import type { AccessScopes } from '../../access_scopes.js';
|
|
29
|
+
import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
|
|
30
|
+
import { NoteService } from '../../notes/note_service.js';
|
|
31
|
+
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
32
|
+
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
30
33
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
34
|
+
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
31
35
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
32
36
|
import { pickNotes } from '../pick_notes.js';
|
|
33
|
-
import {
|
|
34
|
-
import
|
|
35
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
37
|
+
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
38
|
+
import { executePrivateFunction } from './private_execution.js';
|
|
39
|
+
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
40
|
+
|
|
41
|
+
/** Args for PrivateExecutionOracle constructor. */
|
|
42
|
+
export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
|
|
43
|
+
argsHash: Fr;
|
|
44
|
+
txContext: TxContext;
|
|
45
|
+
callContext: CallContext;
|
|
46
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
47
|
+
utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
48
|
+
executionCache: HashedValuesCache;
|
|
49
|
+
noteCache: ExecutionNoteCache;
|
|
50
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
51
|
+
senderTaggingStore: SenderTaggingStore;
|
|
52
|
+
contractSyncService: ContractSyncService;
|
|
53
|
+
totalPublicCalldataCount?: number;
|
|
54
|
+
sideEffectCounter?: number;
|
|
55
|
+
senderForTags?: AztecAddress;
|
|
56
|
+
simulator?: CircuitSimulator;
|
|
57
|
+
};
|
|
36
58
|
|
|
37
59
|
/**
|
|
38
60
|
* The execution oracle for the private part of a transaction.
|
|
39
61
|
*/
|
|
40
|
-
export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
62
|
+
export class PrivateExecutionOracle extends UtilityExecutionOracle implements IPrivateExecutionOracle {
|
|
63
|
+
isPrivate = true as const;
|
|
64
|
+
|
|
41
65
|
/**
|
|
42
66
|
* New notes created during this execution.
|
|
43
67
|
* It's possible that a note in this list has been nullified (in the same or other executions) and doesn't exist in
|
|
@@ -47,43 +71,48 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
47
71
|
* Users can also use this to get a clearer idea of what's happened during a simulation.
|
|
48
72
|
*/
|
|
49
73
|
private newNotes: NoteAndSlot[] = [];
|
|
50
|
-
/**
|
|
51
|
-
* Notes from previous transactions that are returned to the oracle call `getNotes` during this execution.
|
|
52
|
-
* The mapping maps from the unique siloed note hash to the index for notes created in private executions.
|
|
53
|
-
* It maps from siloed note hash to the index for notes created by public functions.
|
|
54
|
-
*
|
|
55
|
-
* They are not part of the ExecutionNoteCache and being forwarded to nested contexts via `extend()`
|
|
56
|
-
* because these notes are meant to be maintained on a per-call basis
|
|
57
|
-
* They should act as references for the read requests output by an app circuit via public inputs.
|
|
58
|
-
*/
|
|
59
|
-
private noteHashLeafIndexMap: Map<bigint, bigint> = new Map();
|
|
60
74
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
61
75
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
62
76
|
private offchainEffects: { data: Fr[] }[] = [];
|
|
63
77
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
78
|
+
|
|
79
|
+
private readonly argsHash: Fr;
|
|
80
|
+
private readonly txContext: TxContext;
|
|
81
|
+
private readonly callContext: CallContext;
|
|
82
|
+
private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
83
|
+
private readonly executionCache: HashedValuesCache;
|
|
84
|
+
private readonly noteCache: ExecutionNoteCache;
|
|
85
|
+
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
86
|
+
private readonly senderTaggingStore: SenderTaggingStore;
|
|
87
|
+
private readonly contractSyncService: ContractSyncService;
|
|
88
|
+
private totalPublicCalldataCount: number;
|
|
89
|
+
protected sideEffectCounter: number;
|
|
64
90
|
private senderForTags?: AztecAddress;
|
|
91
|
+
private readonly simulator?: CircuitSimulator;
|
|
65
92
|
|
|
66
|
-
constructor(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
senderForTags
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
93
|
+
constructor(args: PrivateExecutionOracleArgs) {
|
|
94
|
+
super({
|
|
95
|
+
...args,
|
|
96
|
+
contractAddress: args.callContext.contractAddress,
|
|
97
|
+
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
98
|
+
});
|
|
99
|
+
this.argsHash = args.argsHash;
|
|
100
|
+
this.txContext = args.txContext;
|
|
101
|
+
this.callContext = args.callContext;
|
|
102
|
+
this.utilityExecutor = args.utilityExecutor;
|
|
103
|
+
this.executionCache = args.executionCache;
|
|
104
|
+
this.noteCache = args.noteCache;
|
|
105
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
106
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
107
|
+
this.contractSyncService = args.contractSyncService;
|
|
108
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
109
|
+
this.sideEffectCounter = args.sideEffectCounter ?? 0;
|
|
110
|
+
this.senderForTags = args.senderForTags;
|
|
111
|
+
this.simulator = args.simulator;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
public getPrivateContextInputs(): PrivateContextInputs {
|
|
115
|
+
return new PrivateContextInputs(this.callContext, this.anchorBlockHeader, this.txContext, this.sideEffectCounter);
|
|
87
116
|
}
|
|
88
117
|
|
|
89
118
|
// We still need this function until we can get user-defined ordering of structs for fn arguments
|
|
@@ -102,13 +131,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
102
131
|
throw new Error(`Invalid arguments size: expected ${argumentsSize}, got ${args?.length}`);
|
|
103
132
|
}
|
|
104
133
|
|
|
105
|
-
const
|
|
106
|
-
this.callContext,
|
|
107
|
-
this.historicalHeader,
|
|
108
|
-
this.txContext,
|
|
109
|
-
this.sideEffectCounter,
|
|
110
|
-
);
|
|
111
|
-
const privateContextInputsAsFields = privateContextInputs.toFields();
|
|
134
|
+
const privateContextInputsAsFields = this.getPrivateContextInputs().toFields();
|
|
112
135
|
if (privateContextInputsAsFields.length !== PRIVATE_CONTEXT_INPUTS_LENGTH) {
|
|
113
136
|
throw new Error('Invalid private context inputs size');
|
|
114
137
|
}
|
|
@@ -117,14 +140,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
117
140
|
return toACVMWitness(0, fields);
|
|
118
141
|
}
|
|
119
142
|
|
|
120
|
-
/**
|
|
121
|
-
* The KernelProver will use this to fully populate witnesses and provide hints to the kernel circuit
|
|
122
|
-
* regarding which note hash each settled read request corresponds to.
|
|
123
|
-
*/
|
|
124
|
-
public getNoteHashLeafIndexMap() {
|
|
125
|
-
return this.noteHashLeafIndexMap;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
143
|
/**
|
|
129
144
|
* Get the data for the newly created notes.
|
|
130
145
|
*/
|
|
@@ -150,6 +165,13 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
150
165
|
return this.offchainEffects;
|
|
151
166
|
}
|
|
152
167
|
|
|
168
|
+
/**
|
|
169
|
+
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
170
|
+
*/
|
|
171
|
+
public getUsedPreTags(): PreTag[] {
|
|
172
|
+
return this.taggingIndexCache.getUsedPreTags();
|
|
173
|
+
}
|
|
174
|
+
|
|
153
175
|
/**
|
|
154
176
|
* Return the nested execution results during this execution.
|
|
155
177
|
*/
|
|
@@ -167,7 +189,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
167
189
|
* The value persists through nested calls, meaning all calls down the stack will use the same
|
|
168
190
|
* 'senderForTags' value (unless it is replaced).
|
|
169
191
|
*/
|
|
170
|
-
public
|
|
192
|
+
public privateGetSenderForTags(): Promise<AztecAddress | undefined> {
|
|
171
193
|
return Promise.resolve(this.senderForTags);
|
|
172
194
|
}
|
|
173
195
|
|
|
@@ -182,17 +204,77 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
182
204
|
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
183
205
|
* value (unless it is replaced by another call to this setter).
|
|
184
206
|
*/
|
|
185
|
-
public
|
|
207
|
+
public privateSetSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
186
208
|
this.senderForTags = senderForTags;
|
|
187
209
|
return Promise.resolve();
|
|
188
210
|
}
|
|
189
211
|
|
|
212
|
+
/**
|
|
213
|
+
* Returns the next app tag for a given sender and recipient pair.
|
|
214
|
+
* @param sender - The address sending the log
|
|
215
|
+
* @param recipient - The address receiving the log
|
|
216
|
+
* @returns An app tag to be used in a log.
|
|
217
|
+
*/
|
|
218
|
+
public async privateGetNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
|
|
219
|
+
const secret = await this.#calculateDirectionalAppTaggingSecret(this.contractAddress, sender, recipient);
|
|
220
|
+
|
|
221
|
+
const index = await this.#getIndexToUseForSecret(secret);
|
|
222
|
+
this.log.debug(
|
|
223
|
+
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
224
|
+
);
|
|
225
|
+
this.taggingIndexCache.setLastUsedIndex(secret, index);
|
|
226
|
+
|
|
227
|
+
return Tag.compute({ secret, index });
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
async #calculateDirectionalAppTaggingSecret(
|
|
231
|
+
contractAddress: AztecAddress,
|
|
232
|
+
sender: AztecAddress,
|
|
233
|
+
recipient: AztecAddress,
|
|
234
|
+
) {
|
|
235
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
236
|
+
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
237
|
+
return DirectionalAppTaggingSecret.compute(
|
|
238
|
+
senderCompleteAddress,
|
|
239
|
+
senderIvsk,
|
|
240
|
+
recipient,
|
|
241
|
+
contractAddress,
|
|
242
|
+
recipient,
|
|
243
|
+
);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
async #getIndexToUseForSecret(secret: DirectionalAppTaggingSecret): Promise<number> {
|
|
247
|
+
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
248
|
+
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
249
|
+
|
|
250
|
+
if (lastUsedIndexInTx !== undefined) {
|
|
251
|
+
return lastUsedIndexInTx + 1;
|
|
252
|
+
} else {
|
|
253
|
+
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
254
|
+
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
255
|
+
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
256
|
+
await syncSenderTaggingIndexes(
|
|
257
|
+
secret,
|
|
258
|
+
this.contractAddress,
|
|
259
|
+
this.aztecNode,
|
|
260
|
+
this.senderTaggingStore,
|
|
261
|
+
await this.anchorBlockHeader.hash(),
|
|
262
|
+
this.jobId,
|
|
263
|
+
);
|
|
264
|
+
|
|
265
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
266
|
+
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
267
|
+
// Otherwise, the next index to use is one past the last used index
|
|
268
|
+
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
190
272
|
/**
|
|
191
273
|
* Store values in the execution cache.
|
|
192
274
|
* @param values - Values to store.
|
|
193
275
|
* @returns The hash of the values.
|
|
194
276
|
*/
|
|
195
|
-
public
|
|
277
|
+
public privateStoreInExecutionCache(values: Fr[], hash: Fr) {
|
|
196
278
|
return this.executionCache.store(values, hash);
|
|
197
279
|
}
|
|
198
280
|
|
|
@@ -201,7 +283,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
201
283
|
* @param hash - Hash of the values.
|
|
202
284
|
* @returns The values.
|
|
203
285
|
*/
|
|
204
|
-
public
|
|
286
|
+
public privateLoadFromExecutionCache(hash: Fr): Promise<Fr[]> {
|
|
205
287
|
const preimage = this.executionCache.getPreimage(hash);
|
|
206
288
|
if (!preimage) {
|
|
207
289
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -209,6 +291,23 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
209
291
|
return Promise.resolve(preimage);
|
|
210
292
|
}
|
|
211
293
|
|
|
294
|
+
override async utilityCheckNullifierExists(innerNullifier: Fr): Promise<boolean> {
|
|
295
|
+
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
296
|
+
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
297
|
+
// in the current transaction.
|
|
298
|
+
|
|
299
|
+
this.log.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
300
|
+
contractAddress: this.contractAddress,
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
const nullifier = (await siloNullifier(this.contractAddress, innerNullifier)).toBigInt();
|
|
304
|
+
|
|
305
|
+
return (
|
|
306
|
+
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
307
|
+
(await super.utilityCheckNullifierExists(innerNullifier))
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
|
|
212
311
|
/**
|
|
213
312
|
* Gets some notes for a storage slot.
|
|
214
313
|
*
|
|
@@ -217,6 +316,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
217
316
|
* Real notes coming from DB will have a leafIndex which
|
|
218
317
|
* represents their index in the note hash tree.
|
|
219
318
|
*
|
|
319
|
+
* @param owner - The owner of the notes. If undefined, returns notes for all owners.
|
|
220
320
|
* @param storageSlot - The storage slot.
|
|
221
321
|
* @param numSelects - The number of valid selects in selectBy and selectValues.
|
|
222
322
|
* @param selectBy - An array of indices of the fields to selects.
|
|
@@ -230,6 +330,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
230
330
|
* @returns Array of note data.
|
|
231
331
|
*/
|
|
232
332
|
public override async utilityGetNotes(
|
|
333
|
+
owner: AztecAddress | undefined,
|
|
233
334
|
storageSlot: Fr,
|
|
234
335
|
numSelects: number,
|
|
235
336
|
selectByIndexes: number[],
|
|
@@ -246,11 +347,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
246
347
|
status: NoteStatus,
|
|
247
348
|
): Promise<NoteData[]> {
|
|
248
349
|
// Nullified pending notes are already removed from the list.
|
|
249
|
-
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, storageSlot);
|
|
350
|
+
const pendingNotes = this.noteCache.getNotes(this.callContext.contractAddress, owner, storageSlot);
|
|
250
351
|
|
|
251
352
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
252
|
-
|
|
353
|
+
|
|
354
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
355
|
+
const dbNotes = await noteService.getNotes(
|
|
253
356
|
this.callContext.contractAddress,
|
|
357
|
+
owner,
|
|
254
358
|
storageSlot,
|
|
255
359
|
status,
|
|
256
360
|
this.scopes,
|
|
@@ -277,38 +381,24 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
277
381
|
.join(', ')}`,
|
|
278
382
|
);
|
|
279
383
|
|
|
280
|
-
const noteHashesAndIndexes = await Promise.all(
|
|
281
|
-
notes.map(async n => {
|
|
282
|
-
if (n.index !== undefined) {
|
|
283
|
-
const siloedNoteHash = await siloNoteHash(n.contractAddress, n.noteHash);
|
|
284
|
-
const uniqueNoteHash = await computeUniqueNoteHash(n.noteNonce, siloedNoteHash);
|
|
285
|
-
|
|
286
|
-
return { hash: uniqueNoteHash, index: n.index };
|
|
287
|
-
}
|
|
288
|
-
}),
|
|
289
|
-
);
|
|
290
|
-
|
|
291
|
-
noteHashesAndIndexes
|
|
292
|
-
.filter(n => n !== undefined)
|
|
293
|
-
.forEach(n => {
|
|
294
|
-
this.noteHashLeafIndexMap.set(n!.hash.toBigInt(), n!.index);
|
|
295
|
-
});
|
|
296
|
-
|
|
297
384
|
return notes;
|
|
298
385
|
}
|
|
299
386
|
|
|
300
387
|
/**
|
|
301
388
|
* Keep track of the new note created during execution.
|
|
302
389
|
* It can be used in subsequent calls (or transactions when chaining txs is possible).
|
|
303
|
-
* @param
|
|
390
|
+
* @param owner - The owner of the note.
|
|
304
391
|
* @param storageSlot - The storage slot.
|
|
392
|
+
* @param randomness - The randomness injected into the note.
|
|
305
393
|
* @param noteTypeId - The type ID of the note.
|
|
306
394
|
* @param noteItems - The items to be included in a Note.
|
|
307
395
|
* @param noteHash - A hash of the new note.
|
|
308
396
|
* @returns
|
|
309
397
|
*/
|
|
310
|
-
public
|
|
398
|
+
public privateNotifyCreatedNote(
|
|
399
|
+
owner: AztecAddress,
|
|
311
400
|
storageSlot: Fr,
|
|
401
|
+
randomness: Fr,
|
|
312
402
|
noteTypeId: NoteSelector,
|
|
313
403
|
noteItems: Fr[],
|
|
314
404
|
noteHash: Fr,
|
|
@@ -317,6 +407,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
317
407
|
this.log.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
318
408
|
contractAddress: this.callContext.contractAddress,
|
|
319
409
|
storageSlot,
|
|
410
|
+
randomness,
|
|
320
411
|
noteTypeId,
|
|
321
412
|
counter,
|
|
322
413
|
});
|
|
@@ -325,15 +416,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
325
416
|
this.noteCache.addNewNote(
|
|
326
417
|
{
|
|
327
418
|
contractAddress: this.callContext.contractAddress,
|
|
419
|
+
owner,
|
|
328
420
|
storageSlot,
|
|
421
|
+
randomness,
|
|
329
422
|
noteNonce: Fr.ZERO, // Nonce cannot be known during private execution.
|
|
330
423
|
note,
|
|
331
424
|
siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
|
|
332
425
|
noteHash,
|
|
426
|
+
isPending: true, // This note has just been created and hence is not settled yet.
|
|
333
427
|
},
|
|
334
428
|
counter,
|
|
335
429
|
);
|
|
336
|
-
this.newNotes.push(
|
|
430
|
+
this.newNotes.push(NoteAndSlot.from({ note, storageSlot, randomness, noteTypeId }));
|
|
337
431
|
}
|
|
338
432
|
|
|
339
433
|
/**
|
|
@@ -342,7 +436,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
342
436
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
343
437
|
* @param noteHash - A hash of the new note.
|
|
344
438
|
*/
|
|
345
|
-
public
|
|
439
|
+
public async privateNotifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
346
440
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
347
441
|
this.callContext.contractAddress,
|
|
348
442
|
innerNullifier,
|
|
@@ -359,10 +453,24 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
359
453
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
360
454
|
* @param noteHash - A hash of the new note.
|
|
361
455
|
*/
|
|
362
|
-
public
|
|
456
|
+
public privateNotifyCreatedNullifier(innerNullifier: Fr) {
|
|
457
|
+
this.log.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
363
458
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
364
459
|
}
|
|
365
460
|
|
|
461
|
+
/**
|
|
462
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
|
|
463
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
464
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
465
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
466
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
467
|
+
*/
|
|
468
|
+
public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
469
|
+
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
470
|
+
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
471
|
+
return Promise.resolve(isNullifierPending);
|
|
472
|
+
}
|
|
473
|
+
|
|
366
474
|
/**
|
|
367
475
|
* Emit a contract class log.
|
|
368
476
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -370,7 +478,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
370
478
|
* @param log - The contract class log to be emitted.
|
|
371
479
|
* @param counter - The contract class log's counter.
|
|
372
480
|
*/
|
|
373
|
-
public
|
|
481
|
+
public privateNotifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
|
|
374
482
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
375
483
|
const text = log.toBuffer().toString('hex');
|
|
376
484
|
this.log.verbose(
|
|
@@ -399,13 +507,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
399
507
|
* @param isStaticCall - Whether the call is a static call.
|
|
400
508
|
* @returns The execution result.
|
|
401
509
|
*/
|
|
402
|
-
|
|
510
|
+
async privateCallPrivateFunction(
|
|
403
511
|
targetContractAddress: AztecAddress,
|
|
404
512
|
functionSelector: FunctionSelector,
|
|
405
513
|
argsHash: Fr,
|
|
406
514
|
sideEffectCounter: number,
|
|
407
515
|
isStaticCall: boolean,
|
|
408
516
|
) {
|
|
517
|
+
if (!this.simulator) {
|
|
518
|
+
// In practice it is only when creating inline private contexts in a Noir test using TXE that we create an
|
|
519
|
+
// instance of this class without a simulator.
|
|
520
|
+
throw new Error('No simulator provided, cannot perform a nested private call');
|
|
521
|
+
}
|
|
522
|
+
|
|
409
523
|
const simulatorSetupTimer = new Timer();
|
|
410
524
|
this.log.debug(
|
|
411
525
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
@@ -413,9 +527,16 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
413
527
|
|
|
414
528
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
415
529
|
|
|
416
|
-
await
|
|
530
|
+
await this.contractSyncService.ensureContractSynced(
|
|
531
|
+
targetContractAddress,
|
|
532
|
+
functionSelector,
|
|
533
|
+
this.utilityExecutor,
|
|
534
|
+
this.anchorBlockHeader,
|
|
535
|
+
this.jobId,
|
|
536
|
+
this.scopes,
|
|
537
|
+
);
|
|
417
538
|
|
|
418
|
-
const targetArtifact = await this.
|
|
539
|
+
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
419
540
|
targetContractAddress,
|
|
420
541
|
functionSelector,
|
|
421
542
|
);
|
|
@@ -424,28 +545,41 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
424
545
|
|
|
425
546
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
426
547
|
|
|
427
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
548
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
428
549
|
argsHash,
|
|
429
|
-
derivedTxContext,
|
|
430
|
-
derivedCallContext,
|
|
431
|
-
this.
|
|
432
|
-
this.
|
|
433
|
-
this.
|
|
434
|
-
this.
|
|
435
|
-
this.
|
|
436
|
-
this.
|
|
437
|
-
this.
|
|
438
|
-
this.
|
|
550
|
+
txContext: derivedTxContext,
|
|
551
|
+
callContext: derivedCallContext,
|
|
552
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
553
|
+
utilityExecutor: this.utilityExecutor,
|
|
554
|
+
authWitnesses: this.authWitnesses,
|
|
555
|
+
capsules: this.capsules,
|
|
556
|
+
executionCache: this.executionCache,
|
|
557
|
+
noteCache: this.noteCache,
|
|
558
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
559
|
+
contractStore: this.contractStore,
|
|
560
|
+
noteStore: this.noteStore,
|
|
561
|
+
keyStore: this.keyStore,
|
|
562
|
+
addressStore: this.addressStore,
|
|
563
|
+
aztecNode: this.aztecNode,
|
|
564
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
565
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
566
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
567
|
+
capsuleStore: this.capsuleStore,
|
|
568
|
+
privateEventStore: this.privateEventStore,
|
|
569
|
+
contractSyncService: this.contractSyncService,
|
|
570
|
+
jobId: this.jobId,
|
|
571
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
439
572
|
sideEffectCounter,
|
|
440
|
-
this.log,
|
|
441
|
-
this.scopes,
|
|
442
|
-
this.senderForTags,
|
|
443
|
-
|
|
573
|
+
log: this.log,
|
|
574
|
+
scopes: this.scopes,
|
|
575
|
+
senderForTags: this.senderForTags,
|
|
576
|
+
simulator: this.simulator!,
|
|
577
|
+
});
|
|
444
578
|
|
|
445
579
|
const setupTime = simulatorSetupTimer.ms();
|
|
446
580
|
|
|
447
581
|
const childExecutionResult = await executePrivateFunction(
|
|
448
|
-
this.simulator
|
|
582
|
+
this.simulator!,
|
|
449
583
|
privateExecutionOracle,
|
|
450
584
|
targetArtifact,
|
|
451
585
|
targetContractAddress,
|
|
@@ -490,7 +624,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
490
624
|
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
491
625
|
* @param isStaticCall - Whether the call is a static call.
|
|
492
626
|
*/
|
|
493
|
-
public
|
|
627
|
+
public privateNotifyEnqueuedPublicFunctionCall(
|
|
494
628
|
_targetContractAddress: AztecAddress,
|
|
495
629
|
calldataHash: Fr,
|
|
496
630
|
_sideEffectCounter: number,
|
|
@@ -507,7 +641,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
507
641
|
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
508
642
|
* @param isStaticCall - Whether the call is a static call.
|
|
509
643
|
*/
|
|
510
|
-
public
|
|
644
|
+
public privateNotifySetPublicTeardownFunctionCall(
|
|
511
645
|
_targetContractAddress: AztecAddress,
|
|
512
646
|
calldataHash: Fr,
|
|
513
647
|
_sideEffectCounter: number,
|
|
@@ -517,12 +651,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
517
651
|
return Promise.resolve();
|
|
518
652
|
}
|
|
519
653
|
|
|
520
|
-
public
|
|
521
|
-
minRevertibleSideEffectCounter: number,
|
|
522
|
-
): Promise<void> {
|
|
654
|
+
public privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
523
655
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
524
656
|
}
|
|
525
657
|
|
|
658
|
+
public privateIsSideEffectCounterRevertible(sideEffectCounter: number): Promise<boolean> {
|
|
659
|
+
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
660
|
+
}
|
|
661
|
+
|
|
526
662
|
/**
|
|
527
663
|
* Derives the call context for a nested execution.
|
|
528
664
|
* @param targetContractAddress - The address of the contract being called.
|
|
@@ -544,20 +680,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
|
544
680
|
}
|
|
545
681
|
|
|
546
682
|
public getDebugFunctionName() {
|
|
547
|
-
return this.
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
public override async privateIncrementAppTaggingSecretIndexAsSender(sender: AztecAddress, recipient: AztecAddress) {
|
|
551
|
-
await this.executionDataProvider.incrementAppTaggingSecretIndexAsSender(this.contractAddress, sender, recipient);
|
|
552
|
-
}
|
|
553
|
-
|
|
554
|
-
public override async utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr) {
|
|
555
|
-
await this.executionDataProvider.syncTaggedLogs(this.contractAddress, pendingTaggedLogArrayBaseSlot, this.scopes);
|
|
556
|
-
|
|
557
|
-
await this.executionDataProvider.removeNullifiedNotes(this.contractAddress);
|
|
683
|
+
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
558
684
|
}
|
|
559
685
|
|
|
560
|
-
public
|
|
686
|
+
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|
|
561
687
|
this.offchainEffects.push({ data });
|
|
562
688
|
return Promise.resolve();
|
|
563
689
|
}
|