@aztec/pxe 0.0.1-commit.9b94fc1 → 0.0.1-commit.9d2bcf6d
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 +105 -15
- package/dest/block_synchronizer/block_synchronizer.d.ts +43 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/block_synchronizer/block_synchronizer.js +147 -0
- package/dest/block_synchronizer/index.d.ts +2 -0
- package/dest/block_synchronizer/index.d.ts.map +1 -0
- package/dest/block_synchronizer/index.js +1 -0
- package/dest/config/index.d.ts +6 -4
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +17 -0
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/benchmarked_node.js +77 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +40 -14
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +72 -33
- 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 +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
- 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 +2 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -1
- 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 +6 -3
- 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 +2 -2
- 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 +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +6 -5
- 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 +7 -4
- 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 +26 -19
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- 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 +12 -10
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +83 -48
- 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 +2 -38
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +34 -26
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +46 -48
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +84 -29
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +170 -68
- 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_sync/index.d.ts +24 -0
- package/dest/contract_sync/index.d.ts.map +1 -0
- package/dest/contract_sync/index.js +61 -0
- package/dest/debug/pxe_debug_utils.d.ts +41 -0
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
- package/dest/debug/pxe_debug_utils.js +47 -0
- package/dest/entrypoints/client/bundle/index.d.ts +1 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +0 -1
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +23 -8
- package/dest/entrypoints/client/lazy/index.d.ts +1 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +0 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +24 -9
- 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 +4 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +3 -1
- package/dest/entrypoints/server/utils.d.ts +1 -1
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +30 -15
- package/dest/error_enriching.d.ts +4 -4
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +6 -6
- package/dest/events/event_service.d.ts +15 -0
- package/dest/events/event_service.d.ts.map +1 -0
- package/dest/events/event_service.js +44 -0
- package/dest/events/index.d.ts +2 -0
- package/dest/events/index.d.ts.map +1 -0
- package/dest/events/index.js +1 -0
- package/dest/events/private_event_filter_validator.d.ts +9 -0
- package/dest/events/private_event_filter_validator.d.ts.map +1 -0
- package/dest/events/private_event_filter_validator.js +38 -0
- package/dest/job_coordinator/job_coordinator.d.ts +75 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +94 -0
- package/dest/logs/log_service.d.ts +28 -0
- package/dest/logs/log_service.d.ts.map +1 -0
- package/dest/logs/log_service.js +123 -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 +147 -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/index.d.ts +2 -2
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +1 -1
- 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} +13 -7
- 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 +10 -11
- package/dest/private_kernel/private_kernel_oracle.d.ts +26 -29
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +90 -2
- package/dest/pxe.d.ts +45 -81
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +188 -217
- package/dest/storage/address_store/address_store.d.ts +11 -0
- package/dest/storage/address_store/address_store.d.ts.map +1 -0
- package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -12
- package/dest/storage/address_store/index.d.ts +2 -0
- package/dest/storage/address_store/index.d.ts.map +1 -0
- package/dest/storage/address_store/index.js +1 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
- package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +10 -10
- package/dest/storage/{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_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_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +7 -5
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +56 -16
- 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 +341 -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 -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 +46 -0
- package/dest/tagging/index.d.ts +16 -6
- 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 +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 +19 -19
- package/src/bin/check_oracle_version.ts +131 -20
- package/src/block_synchronizer/block_synchronizer.ts +172 -0
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +17 -3
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +114 -34
- package/src/contract_function_simulator/execution_note_cache.ts +51 -28
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
- package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
- package/src/contract_function_simulator/index.ts +1 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +6 -2
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -1
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -3
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +31 -16
- 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 +98 -44
- package/src/contract_function_simulator/oracle/private_execution.ts +2 -68
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +127 -59
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +261 -75
- 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_sync/index.ts +119 -0
- package/src/debug/pxe_debug_utils.ts +63 -0
- package/src/entrypoints/client/bundle/index.ts +0 -1
- package/src/entrypoints/client/bundle/utils.ts +15 -16
- package/src/entrypoints/client/lazy/index.ts +0 -1
- package/src/entrypoints/client/lazy/utils.ts +16 -17
- package/src/entrypoints/pxe_creation_options.ts +6 -2
- package/src/entrypoints/server/index.ts +3 -1
- package/src/entrypoints/server/utils.ts +26 -34
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +71 -0
- package/src/events/index.ts +1 -0
- package/src/events/private_event_filter_validator.ts +46 -0
- package/src/job_coordinator/job_coordinator.ts +150 -0
- package/src/logs/log_service.ts +220 -0
- package/src/notes/index.ts +1 -0
- package/src/notes/note_service.ts +195 -0
- package/src/oracle_version.ts +4 -3
- package/src/private_kernel/hints/index.ts +1 -1
- package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +34 -23
- package/src/private_kernel/private_kernel_execution_prover.ts +14 -12
- package/src/private_kernel/private_kernel_oracle.ts +118 -37
- package/src/pxe.ts +273 -282
- package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +16 -16
- package/src/storage/address_store/index.ts +1 -0
- package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +10 -11
- package/src/storage/anchor_block_store/index.ts +1 -0
- package/src/storage/capsule_store/capsule_store.ts +315 -0
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +67 -14
- 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 +411 -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 -2
- package/src/tagging/get_all_logs_by_tags.ts +68 -0
- package/src/tagging/index.ts +18 -5
- 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/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/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.map +0 -1
- 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/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/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,42 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { FieldsOf } from '@aztec/foundation/types';
|
|
1
|
+
import { toACVMField } from '@aztec/simulator/client';
|
|
3
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
-
import type {
|
|
3
|
+
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* TypeScript counterpart of utility_context.nr. Used only as a return value for the utilityGetUtilityContext oracle.
|
|
8
7
|
*/
|
|
9
8
|
export class UtilityContext {
|
|
10
|
-
|
|
11
|
-
public readonly
|
|
12
|
-
public readonly timestamp: UInt64,
|
|
9
|
+
constructor(
|
|
10
|
+
public readonly blockHeader: BlockHeader,
|
|
13
11
|
public readonly contractAddress: AztecAddress,
|
|
14
|
-
public readonly version: Fr,
|
|
15
|
-
public readonly chainId: Fr,
|
|
16
12
|
) {}
|
|
17
13
|
|
|
18
|
-
static from(fields: FieldsOf<UtilityContext>) {
|
|
19
|
-
return new UtilityContext(
|
|
20
|
-
fields.blockNumber,
|
|
21
|
-
fields.timestamp,
|
|
22
|
-
fields.contractAddress,
|
|
23
|
-
fields.version,
|
|
24
|
-
fields.chainId,
|
|
25
|
-
);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
14
|
/**
|
|
29
15
|
* Returns a representation of the utility context as expected by intrinsic Noir deserialization.
|
|
30
16
|
* The order of the fields has to be the same as the order of the fields in the utility_context.nr.
|
|
31
17
|
*/
|
|
32
18
|
public toNoirRepresentation(): (string | string[])[] {
|
|
33
19
|
// TODO(#12874): remove the stupid as string conversion by modifying ForeignCallOutput type in acvm.js
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
new Fr(this.timestamp).toString() as string,
|
|
37
|
-
this.contractAddress.toString() as string,
|
|
38
|
-
this.version.toString() as string,
|
|
39
|
-
this.chainId.toString() as string,
|
|
40
|
-
];
|
|
20
|
+
const blockHeaderFields = this.blockHeader.toFields().map(toACVMField);
|
|
21
|
+
return [...blockHeaderFields, this.contractAddress.toString() as string];
|
|
41
22
|
}
|
|
42
23
|
}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import type { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
|
|
2
|
-
import {
|
|
1
|
+
import type { ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, NOTE_HASH_TREE_HEIGHT } from '@aztec/constants';
|
|
2
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
|
+
import { Point } from '@aztec/foundation/curves/grumpkin';
|
|
5
|
+
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
3
6
|
import type { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
4
7
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
8
|
+
import { BlockHash } from '@aztec/stdlib/block';
|
|
5
9
|
import type { CompleteAddress, ContractInstance } from '@aztec/stdlib/contract';
|
|
6
10
|
import type { KeyValidationRequest } from '@aztec/stdlib/kernel';
|
|
7
|
-
import type { ContractClassLog } from '@aztec/stdlib/logs';
|
|
11
|
+
import type { ContractClassLog, Tag } from '@aztec/stdlib/logs';
|
|
8
12
|
import type { Note, NoteStatus } from '@aztec/stdlib/note';
|
|
9
|
-
import { type
|
|
13
|
+
import { type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
10
14
|
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
11
15
|
|
|
12
|
-
import type { Tag } from '../../tagging/tag.js';
|
|
13
16
|
import type { UtilityContext } from '../noir-structs/utility_context.js';
|
|
14
17
|
import type { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
15
18
|
|
|
@@ -21,6 +24,8 @@ export interface NoteData {
|
|
|
21
24
|
note: Note;
|
|
22
25
|
/** The address of the contract that owns the note. */
|
|
23
26
|
contractAddress: AztecAddress;
|
|
27
|
+
/** The owner of the note. */
|
|
28
|
+
owner: AztecAddress;
|
|
24
29
|
/** The storage slot of the note. */
|
|
25
30
|
storageSlot: Fr;
|
|
26
31
|
/** The randomness injected to the note */
|
|
@@ -29,10 +34,10 @@ export interface NoteData {
|
|
|
29
34
|
noteNonce: Fr;
|
|
30
35
|
/** A hash of the note as it gets stored in the note hash tree. */
|
|
31
36
|
noteHash: Fr;
|
|
37
|
+
/** True if the note is pending, false if settled. */
|
|
38
|
+
isPending: boolean;
|
|
32
39
|
/** The corresponding nullifier of the note. Undefined for pending notes. */
|
|
33
40
|
siloedNullifier?: Fr;
|
|
34
|
-
/** The note's leaf index in the note hash tree. Undefined for pending notes. */
|
|
35
|
-
index?: bigint;
|
|
36
41
|
}
|
|
37
42
|
|
|
38
43
|
// These interfaces contain the list of oracles required by aztec-nr in order to simulate and execute transactions, i.e.
|
|
@@ -59,23 +64,31 @@ export interface IMiscOracle {
|
|
|
59
64
|
export interface IUtilityExecutionOracle {
|
|
60
65
|
isUtility: true;
|
|
61
66
|
|
|
62
|
-
utilityGetUtilityContext():
|
|
67
|
+
utilityGetUtilityContext(): UtilityContext;
|
|
63
68
|
utilityGetKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest>;
|
|
64
69
|
utilityGetContractInstance(address: AztecAddress): Promise<ContractInstance>;
|
|
65
|
-
|
|
70
|
+
utilityGetNoteHashMembershipWitness(
|
|
71
|
+
anchorBlockHash: BlockHash,
|
|
72
|
+
noteHash: Fr,
|
|
73
|
+
): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT> | undefined>;
|
|
74
|
+
utilityGetBlockHashMembershipWitness(
|
|
75
|
+
anchorBlockHash: BlockHash,
|
|
76
|
+
blockHash: BlockHash,
|
|
77
|
+
): Promise<MembershipWitness<typeof ARCHIVE_HEIGHT> | undefined>;
|
|
66
78
|
utilityGetNullifierMembershipWitness(
|
|
67
|
-
|
|
79
|
+
anchorBlockHash: BlockHash,
|
|
68
80
|
nullifier: Fr,
|
|
69
81
|
): Promise<NullifierMembershipWitness | undefined>;
|
|
70
|
-
utilityGetPublicDataWitness(
|
|
82
|
+
utilityGetPublicDataWitness(anchorBlockHash: BlockHash, leafSlot: Fr): Promise<PublicDataWitness | undefined>;
|
|
71
83
|
utilityGetLowNullifierMembershipWitness(
|
|
72
|
-
|
|
84
|
+
anchorBlockHash: BlockHash,
|
|
73
85
|
nullifier: Fr,
|
|
74
86
|
): Promise<NullifierMembershipWitness | undefined>;
|
|
75
|
-
utilityGetBlockHeader(blockNumber:
|
|
76
|
-
|
|
87
|
+
utilityGetBlockHeader(blockNumber: BlockNumber): Promise<BlockHeader | undefined>;
|
|
88
|
+
utilityTryGetPublicKeysAndPartialAddress(account: AztecAddress): Promise<CompleteAddress | undefined>;
|
|
77
89
|
utilityGetAuthWitness(messageHash: Fr): Promise<Fr[] | undefined>;
|
|
78
90
|
utilityGetNotes(
|
|
91
|
+
owner: AztecAddress | undefined,
|
|
79
92
|
storageSlot: Fr,
|
|
80
93
|
numSelects: number,
|
|
81
94
|
selectByIndexes: number[],
|
|
@@ -98,13 +111,13 @@ export interface IUtilityExecutionOracle {
|
|
|
98
111
|
secret: Fr,
|
|
99
112
|
): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
|
|
100
113
|
utilityStorageRead(
|
|
114
|
+
anchorBlockHash: BlockHash,
|
|
101
115
|
contractAddress: AztecAddress,
|
|
102
116
|
startStorageSlot: Fr,
|
|
103
|
-
blockNumber: number,
|
|
104
117
|
numberOfElements: number,
|
|
105
118
|
): Promise<Fr[]>;
|
|
106
119
|
utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr): Promise<void>;
|
|
107
|
-
|
|
120
|
+
utilityValidateAndStoreEnqueuedNotesAndEvents(
|
|
108
121
|
contractAddress: AztecAddress,
|
|
109
122
|
noteValidationRequestsArrayBaseSlot: Fr,
|
|
110
123
|
eventValidationRequestsArrayBaseSlot: Fr,
|
|
@@ -132,6 +145,7 @@ export interface IPrivateExecutionOracle {
|
|
|
132
145
|
privateStoreInExecutionCache(values: Fr[], hash: Fr): void;
|
|
133
146
|
privateLoadFromExecutionCache(hash: Fr): Promise<Fr[]>;
|
|
134
147
|
privateNotifyCreatedNote(
|
|
148
|
+
owner: AztecAddress,
|
|
135
149
|
storageSlot: Fr,
|
|
136
150
|
randomness: Fr,
|
|
137
151
|
noteTypeId: NoteSelector,
|
|
@@ -141,6 +155,7 @@ export interface IPrivateExecutionOracle {
|
|
|
141
155
|
): void;
|
|
142
156
|
privateNotifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number): Promise<void>;
|
|
143
157
|
privateNotifyCreatedNullifier(innerNullifier: Fr): Promise<void>;
|
|
158
|
+
privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean>;
|
|
144
159
|
privateNotifyCreatedContractClassLog(log: ContractClassLog, counter: number): void;
|
|
145
160
|
privateCallPrivateFunction(
|
|
146
161
|
targetContractAddress: AztecAddress,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
3
|
import type { Note } from '@aztec/stdlib/note';
|
|
4
4
|
|
|
@@ -18,37 +18,51 @@ function fromRawData(nonzeroNoteHashCounter: boolean, maybeNoteNonce: Fr): { sta
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
-
* Packs a note in a format that is compatible with the default Packable implementation of the
|
|
21
|
+
* Packs a note in a format that is compatible with the default Packable implementation of the hinted note.
|
|
22
22
|
*
|
|
23
23
|
* @dev Unlike the default Packable implementation, this function first constructs the note metadata from the inputs
|
|
24
|
-
* and only after that it packs the
|
|
24
|
+
* and only after that it packs the hinted note. Hence it doesn't map one to one with `HintedNote::pack()`.
|
|
25
25
|
*
|
|
26
26
|
* @param contractAddress - The address of the contract that owns the note
|
|
27
|
+
* @param owner - The owner of the note
|
|
27
28
|
* @param randomness - The randomness injected into the note to get the hiding property of commitments
|
|
29
|
+
* @param storageSlot - The storage slot of the note
|
|
28
30
|
* @param noteNonce - The nonce injected into the note hash preimage by kernels.
|
|
29
|
-
* @param
|
|
31
|
+
* @param isPending - True if the note is pending, false if settled
|
|
30
32
|
* @param note - The note content containing the actual note data
|
|
31
33
|
* @returns The packed note as an array of field elements
|
|
32
34
|
*/
|
|
33
|
-
export function
|
|
35
|
+
export function packAsHintedNote({
|
|
34
36
|
contractAddress,
|
|
37
|
+
owner,
|
|
35
38
|
randomness,
|
|
39
|
+
storageSlot,
|
|
36
40
|
noteNonce,
|
|
37
|
-
|
|
41
|
+
isPending,
|
|
38
42
|
note,
|
|
39
43
|
}: {
|
|
40
44
|
contractAddress: AztecAddress;
|
|
45
|
+
owner: AztecAddress;
|
|
41
46
|
randomness: Fr;
|
|
47
|
+
storageSlot: Fr;
|
|
42
48
|
noteNonce: Fr;
|
|
43
|
-
|
|
49
|
+
isPending: boolean;
|
|
44
50
|
note: Note;
|
|
45
51
|
}) {
|
|
46
|
-
// If
|
|
47
|
-
const
|
|
52
|
+
// If the note is pending it means it has a non-zero note hash counter associated with it.
|
|
53
|
+
const nonZeroNoteHashCounter = isPending;
|
|
48
54
|
|
|
49
|
-
// To pack the note as
|
|
50
|
-
const noteMetadata = fromRawData(
|
|
55
|
+
// To pack the note as hinted note we first need to reconstruct the note metadata.
|
|
56
|
+
const noteMetadata = fromRawData(nonZeroNoteHashCounter, noteNonce);
|
|
51
57
|
|
|
52
|
-
// Pack
|
|
53
|
-
return [
|
|
58
|
+
// Pack in order: note, contract_address, owner, randomness, storage_slot, metadata (stage, maybe_note_nonce)
|
|
59
|
+
return [
|
|
60
|
+
...note.items,
|
|
61
|
+
contractAddress,
|
|
62
|
+
owner,
|
|
63
|
+
randomness,
|
|
64
|
+
storageSlot,
|
|
65
|
+
new Fr(noteMetadata.stage),
|
|
66
|
+
noteMetadata.maybeNoteNonce,
|
|
67
|
+
];
|
|
54
68
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import { Point } from '@aztec/foundation/curves/grumpkin';
|
|
2
4
|
import {
|
|
3
5
|
type ACIRCallback,
|
|
4
6
|
type ACVMField,
|
|
@@ -10,11 +12,11 @@ import {
|
|
|
10
12
|
} from '@aztec/simulator/client';
|
|
11
13
|
import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
12
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
|
+
import { BlockHash } from '@aztec/stdlib/block';
|
|
13
16
|
import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
|
|
14
|
-
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
15
17
|
|
|
16
18
|
import type { IMiscOracle, IPrivateExecutionOracle, IUtilityExecutionOracle } from './interfaces.js';
|
|
17
|
-
import {
|
|
19
|
+
import { packAsHintedNote } from './note_packing_utils.js';
|
|
18
20
|
|
|
19
21
|
export class UnavailableOracleError extends Error {
|
|
20
22
|
constructor(oracleName: string) {
|
|
@@ -110,9 +112,9 @@ export class Oracle {
|
|
|
110
112
|
return [values.map(toACVMField)];
|
|
111
113
|
}
|
|
112
114
|
|
|
113
|
-
|
|
114
|
-
const context =
|
|
115
|
-
return context.toNoirRepresentation();
|
|
115
|
+
utilityGetUtilityContext(): Promise<(ACVMField | ACVMField[])[]> {
|
|
116
|
+
const context = this.handlerAsUtility().utilityGetUtilityContext();
|
|
117
|
+
return Promise.resolve(context.toNoirRepresentation());
|
|
116
118
|
}
|
|
117
119
|
|
|
118
120
|
async utilityGetKeyValidationRequest([pkMHash]: ACVMField[]): Promise<ACVMField[]> {
|
|
@@ -135,74 +137,94 @@ export class Oracle {
|
|
|
135
137
|
].map(toACVMField);
|
|
136
138
|
}
|
|
137
139
|
|
|
138
|
-
async
|
|
139
|
-
[
|
|
140
|
-
[
|
|
141
|
-
[leafValue]: ACVMField[],
|
|
140
|
+
async utilityGetNoteHashMembershipWitness(
|
|
141
|
+
[anchorBlockHash]: ACVMField[],
|
|
142
|
+
[noteHash]: ACVMField[],
|
|
142
143
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
143
|
-
const
|
|
144
|
-
const
|
|
145
|
-
|
|
144
|
+
const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
|
|
145
|
+
const parsedNoteHash = Fr.fromString(noteHash);
|
|
146
|
+
|
|
147
|
+
const witness = await this.handlerAsUtility().utilityGetNoteHashMembershipWitness(
|
|
148
|
+
parsedAnchorBlockHash,
|
|
149
|
+
parsedNoteHash,
|
|
150
|
+
);
|
|
151
|
+
if (!witness) {
|
|
152
|
+
throw new Error(
|
|
153
|
+
`Note hash ${noteHash} not found in the note hash tree at anchor block hash ${parsedAnchorBlockHash.toString()}.`,
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
return witness.toNoirRepresentation();
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
async utilityGetBlockHashMembershipWitness(
|
|
160
|
+
[anchorBlockHash]: ACVMField[],
|
|
161
|
+
[blockHash]: ACVMField[],
|
|
162
|
+
): Promise<(ACVMField | ACVMField[])[]> {
|
|
163
|
+
const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
|
|
164
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
146
165
|
|
|
147
|
-
const witness = await this.handlerAsUtility().
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
parsedLeafValue,
|
|
166
|
+
const witness = await this.handlerAsUtility().utilityGetBlockHashMembershipWitness(
|
|
167
|
+
parsedAnchorBlockHash,
|
|
168
|
+
parsedBlockHash,
|
|
151
169
|
);
|
|
152
170
|
if (!witness) {
|
|
153
171
|
throw new Error(
|
|
154
|
-
`
|
|
172
|
+
`Block hash ${parsedBlockHash.toString()} not found in the archive tree at anchor block ${parsedAnchorBlockHash.toString()}.`,
|
|
155
173
|
);
|
|
156
174
|
}
|
|
157
|
-
return
|
|
175
|
+
return witness.toNoirRepresentation();
|
|
158
176
|
}
|
|
159
177
|
|
|
160
178
|
async utilityGetNullifierMembershipWitness(
|
|
161
|
-
[
|
|
179
|
+
[blockHash]: ACVMField[],
|
|
162
180
|
[nullifier]: ACVMField[], // nullifier, we try to find the witness for (to prove inclusion)
|
|
163
181
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
164
|
-
const
|
|
182
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
165
183
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
166
184
|
|
|
167
185
|
const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(
|
|
168
|
-
|
|
186
|
+
parsedBlockHash,
|
|
169
187
|
parsedNullifier,
|
|
170
188
|
);
|
|
171
189
|
if (!witness) {
|
|
172
|
-
throw new Error(
|
|
190
|
+
throw new Error(
|
|
191
|
+
`Nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
|
|
192
|
+
);
|
|
173
193
|
}
|
|
174
194
|
return witness.toNoirRepresentation();
|
|
175
195
|
}
|
|
176
196
|
|
|
177
197
|
async utilityGetLowNullifierMembershipWitness(
|
|
178
|
-
[
|
|
198
|
+
[blockHash]: ACVMField[],
|
|
179
199
|
[nullifier]: ACVMField[], // nullifier, we try to find the low nullifier witness for (to prove non-inclusion)
|
|
180
200
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
181
|
-
const
|
|
201
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
182
202
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
183
203
|
|
|
184
204
|
const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(
|
|
185
|
-
|
|
205
|
+
parsedBlockHash,
|
|
186
206
|
parsedNullifier,
|
|
187
207
|
);
|
|
188
208
|
if (!witness) {
|
|
189
209
|
throw new Error(
|
|
190
|
-
`Low nullifier witness not found for nullifier ${parsedNullifier} at block ${
|
|
210
|
+
`Low nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
|
|
191
211
|
);
|
|
192
212
|
}
|
|
193
213
|
return witness.toNoirRepresentation();
|
|
194
214
|
}
|
|
195
215
|
|
|
196
216
|
async utilityGetPublicDataWitness(
|
|
197
|
-
[
|
|
217
|
+
[blockHash]: ACVMField[],
|
|
198
218
|
[leafSlot]: ACVMField[],
|
|
199
219
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
200
|
-
const
|
|
220
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
201
221
|
const parsedLeafSlot = Fr.fromString(leafSlot);
|
|
202
222
|
|
|
203
|
-
const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(
|
|
223
|
+
const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(parsedBlockHash, parsedLeafSlot);
|
|
204
224
|
if (!witness) {
|
|
205
|
-
throw new Error(
|
|
225
|
+
throw new Error(
|
|
226
|
+
`Public data witness not found for slot ${parsedLeafSlot} at block hash ${parsedBlockHash.toString()}.`,
|
|
227
|
+
);
|
|
206
228
|
}
|
|
207
229
|
return witness.toNoirRepresentation();
|
|
208
230
|
}
|
|
@@ -210,7 +232,7 @@ export class Oracle {
|
|
|
210
232
|
async utilityGetBlockHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]> {
|
|
211
233
|
const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
|
|
212
234
|
|
|
213
|
-
const header = await this.handlerAsUtility().utilityGetBlockHeader(parsedBlockNumber);
|
|
235
|
+
const header = await this.handlerAsUtility().utilityGetBlockHeader(BlockNumber(parsedBlockNumber));
|
|
214
236
|
if (!header) {
|
|
215
237
|
throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
|
|
216
238
|
}
|
|
@@ -226,15 +248,24 @@ export class Oracle {
|
|
|
226
248
|
return [witness.map(toACVMField)];
|
|
227
249
|
}
|
|
228
250
|
|
|
229
|
-
async
|
|
251
|
+
async utilityTryGetPublicKeysAndPartialAddress([address]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]> {
|
|
230
252
|
const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
|
|
231
|
-
const
|
|
232
|
-
await this.handlerAsUtility().utilityGetPublicKeysAndPartialAddress(parsedAddress);
|
|
253
|
+
const result = await this.handlerAsUtility().utilityTryGetPublicKeysAndPartialAddress(parsedAddress);
|
|
233
254
|
|
|
234
|
-
return
|
|
255
|
+
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
256
|
+
// with two fields: `some` (a boolean) and `value` (a field array in this case).
|
|
257
|
+
if (result === undefined) {
|
|
258
|
+
// No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
|
|
259
|
+
return [toACVMField(0), Array(13).fill(toACVMField(0))];
|
|
260
|
+
} else {
|
|
261
|
+
// Data was found so we set `some` to 1 and return it along with `value`.
|
|
262
|
+
return [toACVMField(1), [...result.publicKeys.toFields(), result.partialAddress].map(toACVMField)];
|
|
263
|
+
}
|
|
235
264
|
}
|
|
236
265
|
|
|
237
266
|
async utilityGetNotes(
|
|
267
|
+
[ownerSome]: ACVMField[],
|
|
268
|
+
[ownerValue]: ACVMField[],
|
|
238
269
|
[storageSlot]: ACVMField[],
|
|
239
270
|
[numSelects]: ACVMField[],
|
|
240
271
|
selectByIndexes: ACVMField[],
|
|
@@ -250,9 +281,12 @@ export class Oracle {
|
|
|
250
281
|
[offset]: ACVMField[],
|
|
251
282
|
[status]: ACVMField[],
|
|
252
283
|
[maxNotes]: ACVMField[],
|
|
253
|
-
[
|
|
284
|
+
[packedHintedNoteLength]: ACVMField[],
|
|
254
285
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
286
|
+
// Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
|
|
287
|
+
const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
|
|
255
288
|
const noteDatas = await this.handlerAsUtility().utilityGetNotes(
|
|
289
|
+
owner,
|
|
256
290
|
Fr.fromString(storageSlot),
|
|
257
291
|
+numSelects,
|
|
258
292
|
selectByIndexes.map(s => +s),
|
|
@@ -269,18 +303,29 @@ export class Oracle {
|
|
|
269
303
|
+status,
|
|
270
304
|
);
|
|
271
305
|
|
|
272
|
-
const
|
|
306
|
+
const returnDataAsArrayOfPackedHintedNotes = noteDatas.map(noteData =>
|
|
307
|
+
packAsHintedNote({
|
|
308
|
+
contractAddress: noteData.contractAddress,
|
|
309
|
+
owner: noteData.owner,
|
|
310
|
+
randomness: noteData.randomness,
|
|
311
|
+
storageSlot: noteData.storageSlot,
|
|
312
|
+
noteNonce: noteData.noteNonce,
|
|
313
|
+
isPending: noteData.isPending,
|
|
314
|
+
note: noteData.note,
|
|
315
|
+
}),
|
|
316
|
+
);
|
|
273
317
|
|
|
274
318
|
// Now we convert each sub-array to an array of ACVMField
|
|
275
|
-
const returnDataAsArrayOfACVMFieldArrays =
|
|
319
|
+
const returnDataAsArrayOfACVMFieldArrays = returnDataAsArrayOfPackedHintedNotes.map(subArray =>
|
|
276
320
|
subArray.map(toACVMField),
|
|
277
321
|
);
|
|
278
322
|
|
|
279
323
|
// At last we convert the array of arrays to a bounded vec of arrays
|
|
280
|
-
return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +
|
|
324
|
+
return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +packedHintedNoteLength);
|
|
281
325
|
}
|
|
282
326
|
|
|
283
327
|
privateNotifyCreatedNote(
|
|
328
|
+
[owner]: ACVMField[],
|
|
284
329
|
[storageSlot]: ACVMField[],
|
|
285
330
|
[randomness]: ACVMField[],
|
|
286
331
|
[noteTypeId]: ACVMField[],
|
|
@@ -289,6 +334,7 @@ export class Oracle {
|
|
|
289
334
|
[counter]: ACVMField[],
|
|
290
335
|
): Promise<ACVMField[]> {
|
|
291
336
|
this.handlerAsPrivate().privateNotifyCreatedNote(
|
|
337
|
+
AztecAddress.fromString(owner),
|
|
292
338
|
Fr.fromString(storageSlot),
|
|
293
339
|
Fr.fromString(randomness),
|
|
294
340
|
NoteSelector.fromField(Fr.fromString(noteTypeId)),
|
|
@@ -317,6 +363,14 @@ export class Oracle {
|
|
|
317
363
|
return [];
|
|
318
364
|
}
|
|
319
365
|
|
|
366
|
+
async privateIsNullifierPending([innerNullifier]: ACVMField[], [contractAddress]: ACVMField[]): Promise<ACVMField[]> {
|
|
367
|
+
const isPending = await this.handlerAsPrivate().privateIsNullifierPending(
|
|
368
|
+
Fr.fromString(innerNullifier),
|
|
369
|
+
AztecAddress.fromString(contractAddress),
|
|
370
|
+
);
|
|
371
|
+
return [toACVMField(isPending)];
|
|
372
|
+
}
|
|
373
|
+
|
|
320
374
|
async utilityCheckNullifierExists([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
|
|
321
375
|
const exists = await this.handlerAsUtility().utilityCheckNullifierExists(Fr.fromString(innerNullifier));
|
|
322
376
|
return [toACVMField(exists)];
|
|
@@ -336,15 +390,15 @@ export class Oracle {
|
|
|
336
390
|
}
|
|
337
391
|
|
|
338
392
|
async utilityStorageRead(
|
|
393
|
+
[blockHash]: ACVMField[],
|
|
339
394
|
[contractAddress]: ACVMField[],
|
|
340
395
|
[startStorageSlot]: ACVMField[],
|
|
341
|
-
[blockNumber]: ACVMField[],
|
|
342
396
|
[numberOfElements]: ACVMField[],
|
|
343
397
|
): Promise<ACVMField[][]> {
|
|
344
398
|
const values = await this.handlerAsUtility().utilityStorageRead(
|
|
399
|
+
BlockHash.fromString(blockHash),
|
|
345
400
|
new AztecAddress(Fr.fromString(contractAddress)),
|
|
346
401
|
Fr.fromString(startStorageSlot),
|
|
347
|
-
+blockNumber,
|
|
348
402
|
+numberOfElements,
|
|
349
403
|
);
|
|
350
404
|
return [values.map(toACVMField)];
|
|
@@ -454,12 +508,12 @@ export class Oracle {
|
|
|
454
508
|
return [];
|
|
455
509
|
}
|
|
456
510
|
|
|
457
|
-
async
|
|
511
|
+
async utilityValidateAndStoreEnqueuedNotesAndEvents(
|
|
458
512
|
[contractAddress]: ACVMField[],
|
|
459
513
|
[noteValidationRequestsArrayBaseSlot]: ACVMField[],
|
|
460
514
|
[eventValidationRequestsArrayBaseSlot]: ACVMField[],
|
|
461
515
|
): Promise<ACVMField[]> {
|
|
462
|
-
await this.handlerAsUtility().
|
|
516
|
+
await this.handlerAsUtility().utilityValidateAndStoreEnqueuedNotesAndEvents(
|
|
463
517
|
AztecAddress.fromString(contractAddress),
|
|
464
518
|
Fr.fromString(noteValidationRequestsArrayBaseSlot),
|
|
465
519
|
Fr.fromString(eventValidationRequestsArrayBaseSlot),
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, 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
|
-
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
6
5
|
import {
|
|
7
6
|
type ACVMWitness,
|
|
8
7
|
type CircuitSimulator,
|
|
@@ -18,15 +17,10 @@ import {
|
|
|
18
17
|
countArgumentsSize,
|
|
19
18
|
} from '@aztec/stdlib/abi';
|
|
20
19
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
21
|
-
import type { ContractInstance } from '@aztec/stdlib/contract';
|
|
22
|
-
import { DelayedPublicMutableValues, DelayedPublicMutableValuesWithHash } from '@aztec/stdlib/delayed-public-mutable';
|
|
23
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
24
20
|
import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
25
21
|
import type { CircuitWitnessGenerationStats } from '@aztec/stdlib/stats';
|
|
26
|
-
import {
|
|
27
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
22
|
+
import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
28
23
|
|
|
29
|
-
import type { ExecutionDataProvider } from '../execution_data_provider.js';
|
|
30
24
|
import { Oracle } from './oracle.js';
|
|
31
25
|
import type { PrivateExecutionOracle } from './private_execution_oracle.js';
|
|
32
26
|
|
|
@@ -84,7 +78,6 @@ export async function executePrivateFunction(
|
|
|
84
78
|
|
|
85
79
|
const rawReturnValues = await privateExecutionOracle.privateLoadFromExecutionCache(publicInputs.returnsHash);
|
|
86
80
|
|
|
87
|
-
const noteHashLeafIndexMap = privateExecutionOracle.getNoteHashLeafIndexMap();
|
|
88
81
|
const newNotes = privateExecutionOracle.getNewNotes();
|
|
89
82
|
const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
|
|
90
83
|
const offchainEffects = privateExecutionOracle.getOffchainEffects();
|
|
@@ -107,7 +100,6 @@ export async function executePrivateFunction(
|
|
|
107
100
|
Buffer.from(artifact.verificationKey!, 'base64'),
|
|
108
101
|
partialWitness,
|
|
109
102
|
publicInputs,
|
|
110
|
-
noteHashLeafIndexMap,
|
|
111
103
|
newNotes,
|
|
112
104
|
noteHashNullifierCounterMap,
|
|
113
105
|
rawReturnValues,
|
|
@@ -147,61 +139,3 @@ export function extractPrivateCircuitPublicInputs(
|
|
|
147
139
|
}
|
|
148
140
|
return PrivateCircuitPublicInputs.fromFields(returnData);
|
|
149
141
|
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Read the current class id of a contract from the execution data provider or AztecNode. If not found, class id
|
|
153
|
-
* from the instance is used.
|
|
154
|
-
* @param contractAddress - The address of the contract to read the class id for.
|
|
155
|
-
* @param instance - The instance of the contract.
|
|
156
|
-
* @param executionDataProvider - The execution data provider.
|
|
157
|
-
* @param blockNumber - The block number at which to load the DelayedPublicMutable storing the class id.
|
|
158
|
-
* @param timestamp - The timestamp at which to obtain the class id from the DelayedPublicMutable.
|
|
159
|
-
* @returns The current class id.
|
|
160
|
-
*/
|
|
161
|
-
export async function readCurrentClassId(
|
|
162
|
-
contractAddress: AztecAddress,
|
|
163
|
-
instance: ContractInstance,
|
|
164
|
-
executionDataProvider: ExecutionDataProvider | AztecNode,
|
|
165
|
-
blockNumber: number,
|
|
166
|
-
timestamp: UInt64,
|
|
167
|
-
) {
|
|
168
|
-
const { delayedPublicMutableSlot } = await DelayedPublicMutableValuesWithHash.getContractUpdateSlots(contractAddress);
|
|
169
|
-
const delayedPublicMutableValues = await DelayedPublicMutableValues.readFromTree(delayedPublicMutableSlot, slot =>
|
|
170
|
-
executionDataProvider.getPublicStorageAt(blockNumber, ProtocolContractAddress.ContractInstanceRegistry, slot),
|
|
171
|
-
);
|
|
172
|
-
let currentClassId = delayedPublicMutableValues.svc.getCurrentAt(timestamp)[0];
|
|
173
|
-
if (currentClassId.isZero()) {
|
|
174
|
-
currentClassId = instance.originalContractClassId;
|
|
175
|
-
}
|
|
176
|
-
return currentClassId;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* Verify that the current class id of a contract obtained from AztecNode is the same as the one in the execution data
|
|
181
|
-
* provider (i.e. PXE).
|
|
182
|
-
* @param contractAddress - The address of the contract to verify class id for.
|
|
183
|
-
* @param executionDataProvider - The execution data provider.
|
|
184
|
-
* @param header - The header of the block at which to verify the current class id. If not provided, the anchor block
|
|
185
|
-
* header of the execution data provider is used.
|
|
186
|
-
*/
|
|
187
|
-
export async function verifyCurrentClassId(
|
|
188
|
-
contractAddress: AztecAddress,
|
|
189
|
-
executionDataProvider: ExecutionDataProvider,
|
|
190
|
-
header?: BlockHeader,
|
|
191
|
-
) {
|
|
192
|
-
header = header ?? (await executionDataProvider.getAnchorBlockHeader());
|
|
193
|
-
|
|
194
|
-
const instance = await executionDataProvider.getContractInstance(contractAddress);
|
|
195
|
-
const currentClassId = await readCurrentClassId(
|
|
196
|
-
contractAddress,
|
|
197
|
-
instance,
|
|
198
|
-
executionDataProvider,
|
|
199
|
-
header.globalVariables.blockNumber,
|
|
200
|
-
header.globalVariables.timestamp,
|
|
201
|
-
);
|
|
202
|
-
if (!instance.currentContractClassId.equals(currentClassId)) {
|
|
203
|
-
throw new Error(
|
|
204
|
-
`Contract ${contractAddress} is outdated, current class id is ${currentClassId}, local class id is ${instance.currentContractClassId}`,
|
|
205
|
-
);
|
|
206
|
-
}
|
|
207
|
-
}
|