@aztec/pxe 0.0.1-commit.d3ec352c → 0.0.1-commit.e3c1de76
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 -12
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +48 -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 +3 -3
- 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 +1 -1
- 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 +20 -16
- 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 +10 -8
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +58 -36
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -28
- 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 +32 -25
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +41 -45
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +73 -25
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +168 -64
- 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 +23 -0
- package/dest/contract_sync/index.d.ts.map +1 -0
- package/dest/contract_sync/index.js +54 -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 +125 -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 +18 -18
- 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 -29
- 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 +2 -2
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +25 -15
- 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 +74 -45
- package/src/contract_function_simulator/oracle/private_execution.ts +2 -69
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +120 -59
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +259 -81
- 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 +98 -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 +13 -12
- package/src/private_kernel/private_kernel_oracle.ts +118 -37
- package/src/pxe.ts +267 -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 -12
- 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 -267
- 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 -123
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
- package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -696
- 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 -314
- 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 -11
- 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 -36
- package/dest/synchronizer/synchronizer.d.ts.map +0 -1
- package/dest/synchronizer/synchronizer.js +0 -102
- 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 -342
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1023
- 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 -403
- 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 -121
- package/src/tagging/siloed_tag.ts +0 -22
- package/src/tagging/tag.ts +0 -16
- package/src/tagging/utils.ts +0 -31
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
FIXED_AVM_STARTUP_L2_GAS,
|
|
8
8
|
FIXED_DA_GAS,
|
|
9
9
|
FIXED_L2_GAS,
|
|
10
|
+
GeneratorIndex,
|
|
10
11
|
L2_GAS_PER_CONTRACT_CLASS_LOG,
|
|
11
12
|
L2_GAS_PER_PRIVATE_LOG,
|
|
12
13
|
MAX_CONTRACT_CLASS_LOGS_PER_TX,
|
|
@@ -17,10 +18,11 @@ import {
|
|
|
17
18
|
MAX_PRIVATE_LOGS_PER_TX,
|
|
18
19
|
} from '@aztec/constants';
|
|
19
20
|
import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
|
|
20
|
-
import {
|
|
21
|
-
import { Fr } from '@aztec/foundation/
|
|
21
|
+
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
|
|
22
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
22
23
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
23
24
|
import { Timer } from '@aztec/foundation/timer';
|
|
25
|
+
import type { KeyStore } from '@aztec/key-store';
|
|
24
26
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
25
27
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
26
28
|
import {
|
|
@@ -44,6 +46,7 @@ import {
|
|
|
44
46
|
siloNoteHash,
|
|
45
47
|
siloNullifier,
|
|
46
48
|
} from '@aztec/stdlib/hash';
|
|
49
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/server';
|
|
47
50
|
import {
|
|
48
51
|
PartialPrivateTailPublicInputsForPublic,
|
|
49
52
|
PartialPrivateTailPublicInputsForRollup,
|
|
@@ -59,6 +62,7 @@ import { PrivateLog } from '@aztec/stdlib/logs';
|
|
|
59
62
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
60
63
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
61
64
|
import {
|
|
65
|
+
BlockHeader,
|
|
62
66
|
CallContext,
|
|
63
67
|
HashedValues,
|
|
64
68
|
PrivateExecutionResult,
|
|
@@ -68,13 +72,20 @@ import {
|
|
|
68
72
|
getFinalMinRevertibleSideEffectCounter,
|
|
69
73
|
} from '@aztec/stdlib/tx';
|
|
70
74
|
|
|
71
|
-
import type {
|
|
72
|
-
import type {
|
|
75
|
+
import type { AddressStore } from '../storage/address_store/address_store.js';
|
|
76
|
+
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
77
|
+
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
78
|
+
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
79
|
+
import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
80
|
+
import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
|
|
81
|
+
import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
|
|
82
|
+
import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
|
|
83
|
+
import type { BenchmarkedNode } from './benchmarked_node.js';
|
|
73
84
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
74
85
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
75
86
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
76
87
|
import { Oracle } from './oracle/oracle.js';
|
|
77
|
-
import { executePrivateFunction
|
|
88
|
+
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
78
89
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
79
90
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
80
91
|
|
|
@@ -85,7 +96,16 @@ export class ContractFunctionSimulator {
|
|
|
85
96
|
private log: Logger;
|
|
86
97
|
|
|
87
98
|
constructor(
|
|
88
|
-
private
|
|
99
|
+
private contractStore: ContractStore,
|
|
100
|
+
private noteStore: NoteStore,
|
|
101
|
+
private keyStore: KeyStore,
|
|
102
|
+
private addressStore: AddressStore,
|
|
103
|
+
private aztecNode: AztecNode,
|
|
104
|
+
private senderTaggingStore: SenderTaggingStore,
|
|
105
|
+
private recipientTaggingStore: RecipientTaggingStore,
|
|
106
|
+
private senderAddressBookStore: SenderAddressBookStore,
|
|
107
|
+
private capsuleStore: CapsuleStore,
|
|
108
|
+
private privateEventStore: PrivateEventStore,
|
|
89
109
|
private simulator: CircuitSimulator,
|
|
90
110
|
) {
|
|
91
111
|
this.log = createLogger('simulator');
|
|
@@ -98,9 +118,11 @@ export class ContractFunctionSimulator {
|
|
|
98
118
|
* @param contractAddress - The address of the contract (should match request.origin)
|
|
99
119
|
* @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract
|
|
100
120
|
* or a specific account.
|
|
121
|
+
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
101
122
|
* @param senderForTags - The address that is used as a tagging sender when emitting private logs. Returned from
|
|
102
123
|
* the `privateGetSenderForTags` oracle.
|
|
103
124
|
* @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
|
|
125
|
+
* @param jobId - The job ID for staged writes.
|
|
104
126
|
* @returns The result of the execution.
|
|
105
127
|
*/
|
|
106
128
|
public async run(
|
|
@@ -108,15 +130,14 @@ export class ContractFunctionSimulator {
|
|
|
108
130
|
contractAddress: AztecAddress,
|
|
109
131
|
selector: FunctionSelector,
|
|
110
132
|
msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
|
|
111
|
-
|
|
112
|
-
|
|
133
|
+
anchorBlockHeader: BlockHeader,
|
|
134
|
+
senderForTags: AztecAddress | undefined,
|
|
135
|
+
scopes: AztecAddress[] | undefined,
|
|
136
|
+
jobId: string,
|
|
113
137
|
): Promise<PrivateExecutionResult> {
|
|
114
138
|
const simulatorSetupTimer = new Timer();
|
|
115
|
-
const anchorBlockHeader = await this.executionDataProvider.getAnchorBlockHeader();
|
|
116
139
|
|
|
117
|
-
await
|
|
118
|
-
|
|
119
|
-
const entryPointArtifact = await this.executionDataProvider.getFunctionArtifact(contractAddress, selector);
|
|
140
|
+
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
|
|
120
141
|
|
|
121
142
|
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
122
143
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
@@ -147,12 +168,25 @@ export class ContractFunctionSimulator {
|
|
|
147
168
|
request.txContext,
|
|
148
169
|
callContext,
|
|
149
170
|
anchorBlockHeader,
|
|
171
|
+
async call => {
|
|
172
|
+
await this.runUtility(call, [], anchorBlockHeader, scopes, jobId);
|
|
173
|
+
},
|
|
150
174
|
request.authWitnesses,
|
|
151
175
|
request.capsules,
|
|
152
176
|
HashedValuesCache.create(request.argsOfCalls),
|
|
153
177
|
noteCache,
|
|
154
178
|
taggingIndexCache,
|
|
155
|
-
this.
|
|
179
|
+
this.contractStore,
|
|
180
|
+
this.noteStore,
|
|
181
|
+
this.keyStore,
|
|
182
|
+
this.addressStore,
|
|
183
|
+
this.aztecNode,
|
|
184
|
+
this.senderTaggingStore,
|
|
185
|
+
this.recipientTaggingStore,
|
|
186
|
+
this.senderAddressBookStore,
|
|
187
|
+
this.capsuleStore,
|
|
188
|
+
this.privateEventStore,
|
|
189
|
+
jobId,
|
|
156
190
|
0, // totalPublicArgsCount
|
|
157
191
|
startSideEffectCounter,
|
|
158
192
|
undefined, // log
|
|
@@ -176,8 +210,9 @@ export class ContractFunctionSimulator {
|
|
|
176
210
|
request.functionSelector,
|
|
177
211
|
);
|
|
178
212
|
const simulatorTeardownTimer = new Timer();
|
|
179
|
-
|
|
180
|
-
|
|
213
|
+
|
|
214
|
+
noteCache.finish();
|
|
215
|
+
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
181
216
|
|
|
182
217
|
const publicCallRequests = collectNested([executionResult], r =>
|
|
183
218
|
r.publicInputs.publicCallRequests
|
|
@@ -213,20 +248,42 @@ export class ContractFunctionSimulator {
|
|
|
213
248
|
* Runs a utility function.
|
|
214
249
|
* @param call - The function call to execute.
|
|
215
250
|
* @param authwits - Authentication witnesses required for the function call.
|
|
251
|
+
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
216
252
|
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
217
253
|
* accounts if not specified.
|
|
218
254
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
219
255
|
*/
|
|
220
|
-
public async runUtility(
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
256
|
+
public async runUtility(
|
|
257
|
+
call: FunctionCall,
|
|
258
|
+
authwits: AuthWitness[],
|
|
259
|
+
anchorBlockHeader: BlockHeader,
|
|
260
|
+
scopes: AztecAddress[] | undefined,
|
|
261
|
+
jobId: string,
|
|
262
|
+
): Promise<Fr[]> {
|
|
263
|
+
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
224
264
|
|
|
225
265
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
226
266
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
227
267
|
}
|
|
228
268
|
|
|
229
|
-
const oracle = new UtilityExecutionOracle(
|
|
269
|
+
const oracle = new UtilityExecutionOracle(
|
|
270
|
+
call.to,
|
|
271
|
+
authwits,
|
|
272
|
+
[],
|
|
273
|
+
anchorBlockHeader,
|
|
274
|
+
this.contractStore,
|
|
275
|
+
this.noteStore,
|
|
276
|
+
this.keyStore,
|
|
277
|
+
this.addressStore,
|
|
278
|
+
this.aztecNode,
|
|
279
|
+
this.recipientTaggingStore,
|
|
280
|
+
this.senderAddressBookStore,
|
|
281
|
+
this.capsuleStore,
|
|
282
|
+
this.privateEventStore,
|
|
283
|
+
jobId,
|
|
284
|
+
undefined,
|
|
285
|
+
scopes,
|
|
286
|
+
);
|
|
230
287
|
|
|
231
288
|
try {
|
|
232
289
|
this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
|
|
@@ -258,8 +315,20 @@ export class ContractFunctionSimulator {
|
|
|
258
315
|
}
|
|
259
316
|
// docs:end:execute_utility_function
|
|
260
317
|
|
|
318
|
+
/**
|
|
319
|
+
* Returns the execution statistics collected during the simulator run.
|
|
320
|
+
* @returns The execution statistics.
|
|
321
|
+
*/
|
|
261
322
|
getStats() {
|
|
262
|
-
|
|
323
|
+
const nodeRPCCalls =
|
|
324
|
+
typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
|
|
325
|
+
? (this.aztecNode as BenchmarkedNode).getStats()
|
|
326
|
+
: {
|
|
327
|
+
perMethod: {},
|
|
328
|
+
roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
return { nodeRPCCalls };
|
|
263
332
|
}
|
|
264
333
|
}
|
|
265
334
|
|
|
@@ -280,15 +349,15 @@ class OrderedSideEffect<T> {
|
|
|
280
349
|
* (allowing state overrides) and is much faster, while still generating a valid
|
|
281
350
|
* output that can be sent to the node for public simulation
|
|
282
351
|
* @param privateExecutionResult - The result of the private execution.
|
|
283
|
-
* @param
|
|
284
|
-
*
|
|
285
|
-
*
|
|
352
|
+
* @param contractStore - A provider for contract data in order to get function names and debug info.
|
|
353
|
+
* @param minRevertibleSideEffectCounterOverride - Optional override for the min revertible side effect counter.
|
|
354
|
+
* Used by TXE to simulate account contract behavior (setting the counter before app execution).
|
|
286
355
|
* @returns The simulated proving result.
|
|
287
356
|
*/
|
|
288
357
|
export async function generateSimulatedProvingResult(
|
|
289
358
|
privateExecutionResult: PrivateExecutionResult,
|
|
290
|
-
|
|
291
|
-
|
|
359
|
+
contractStore: ContractStore,
|
|
360
|
+
minRevertibleSideEffectCounterOverride?: number,
|
|
292
361
|
): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
293
362
|
const siloedNoteHashes: OrderedSideEffect<Fr>[] = [];
|
|
294
363
|
const nullifiers: OrderedSideEffect<Fr>[] = [];
|
|
@@ -329,7 +398,10 @@ export async function generateSimulatedProvingResult(
|
|
|
329
398
|
|
|
330
399
|
const privateLogsFromExecution = await Promise.all(
|
|
331
400
|
execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
|
|
332
|
-
metadata.log.fields[0] = await
|
|
401
|
+
metadata.log.fields[0] = await poseidon2HashWithSeparator(
|
|
402
|
+
[contractAddress, metadata.log.fields[0]],
|
|
403
|
+
GeneratorIndex.PRIVATE_LOG_FIRST_FIELD,
|
|
404
|
+
);
|
|
333
405
|
return new OrderedSideEffect(metadata.log, metadata.counter);
|
|
334
406
|
}),
|
|
335
407
|
);
|
|
@@ -365,7 +437,7 @@ export async function generateSimulatedProvingResult(
|
|
|
365
437
|
: execution.publicInputs.publicTeardownCallRequest;
|
|
366
438
|
|
|
367
439
|
executionSteps.push({
|
|
368
|
-
functionName: await
|
|
440
|
+
functionName: await contractStore.getDebugFunctionName(
|
|
369
441
|
execution.publicInputs.callContext.contractAddress,
|
|
370
442
|
execution.publicInputs.callContext.functionSelector,
|
|
371
443
|
),
|
|
@@ -392,16 +464,18 @@ export async function generateSimulatedProvingResult(
|
|
|
392
464
|
const getEffect = <T>(orderedSideEffect: OrderedSideEffect<T>) => orderedSideEffect.sideEffect;
|
|
393
465
|
|
|
394
466
|
const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
|
|
395
|
-
const minRevertibleSideEffectCounter =
|
|
467
|
+
const minRevertibleSideEffectCounter =
|
|
468
|
+
minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
|
|
396
469
|
|
|
397
470
|
const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(
|
|
398
471
|
nullifiers.sort(sortByCounter),
|
|
399
472
|
minRevertibleSideEffectCounter,
|
|
400
473
|
);
|
|
401
|
-
|
|
474
|
+
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
475
|
+
if (nonRevertibleNullifiers.length === 0) {
|
|
476
|
+
nonRevertibleNullifiers.push(nonceGenerator);
|
|
477
|
+
} else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
|
|
402
478
|
throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
|
|
403
|
-
} else {
|
|
404
|
-
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
405
479
|
}
|
|
406
480
|
|
|
407
481
|
if (isPrivateOnlyTx) {
|
|
@@ -437,6 +511,12 @@ export async function generateSimulatedProvingResult(
|
|
|
437
511
|
siloedNoteHashes.sort(sortByCounter),
|
|
438
512
|
minRevertibleSideEffectCounter,
|
|
439
513
|
);
|
|
514
|
+
const nonRevertibleUniqueNoteHashes = await Promise.all(
|
|
515
|
+
nonRevertibleNoteHashes.map(async (noteHash, i) => {
|
|
516
|
+
const nonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
517
|
+
return await computeUniqueNoteHash(nonce, noteHash);
|
|
518
|
+
}),
|
|
519
|
+
);
|
|
440
520
|
const [nonRevertibleL2ToL1Messages, revertibleL2ToL1Messages] = splitOrderedSideEffects(
|
|
441
521
|
l2ToL1Messages.sort(sortByCounter),
|
|
442
522
|
minRevertibleSideEffectCounter,
|
|
@@ -455,7 +535,7 @@ export async function generateSimulatedProvingResult(
|
|
|
455
535
|
);
|
|
456
536
|
|
|
457
537
|
const nonRevertibleData = new PrivateToPublicAccumulatedData(
|
|
458
|
-
padArrayEnd(
|
|
538
|
+
padArrayEnd(nonRevertibleUniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
|
|
459
539
|
padArrayEnd(nonRevertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
|
|
460
540
|
padArrayEnd(nonRevertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
|
|
461
541
|
padArrayEnd(nonRevertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
|
|
@@ -503,7 +583,7 @@ function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertib
|
|
|
503
583
|
const revertibleSideEffects: T[] = [];
|
|
504
584
|
const nonRevertibleSideEffects: T[] = [];
|
|
505
585
|
effects.forEach(effect => {
|
|
506
|
-
if (effect.counter < minRevertibleSideEffectCounter) {
|
|
586
|
+
if (minRevertibleSideEffectCounter === 0 || effect.counter < minRevertibleSideEffectCounter) {
|
|
507
587
|
nonRevertibleSideEffects.push(effect.sideEffect);
|
|
508
588
|
} else {
|
|
509
589
|
revertibleSideEffects.push(effect.sideEffect);
|
|
@@ -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 { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
4
4
|
|
|
@@ -32,19 +32,22 @@ export class ExecutionNoteCache {
|
|
|
32
32
|
private nullifierMap: Map<bigint, Set<bigint>> = new Map();
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* Nullifiers emitted by private calls in this transaction.
|
|
36
36
|
*/
|
|
37
|
-
private
|
|
37
|
+
private emittedNullifiers: Set<bigint> = new Set();
|
|
38
38
|
|
|
39
|
+
/**
|
|
40
|
+
* The counter that separates non-revertible side effects (which persist even if the tx reverts) from revertible ones.
|
|
41
|
+
*/
|
|
39
42
|
private minRevertibleSideEffectCounter = 0;
|
|
40
43
|
|
|
41
44
|
private inRevertiblePhase = false;
|
|
42
45
|
|
|
43
46
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
47
|
+
* Whether the protocol nullifier was used for nonce generation.
|
|
48
|
+
* We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
|
|
46
49
|
*/
|
|
47
|
-
private usedProtocolNullifierForNonces
|
|
50
|
+
private usedProtocolNullifierForNonces: boolean | undefined;
|
|
48
51
|
|
|
49
52
|
constructor(private readonly protocolNullifier: Fr) {}
|
|
50
53
|
|
|
@@ -60,17 +63,18 @@ export class ExecutionNoteCache {
|
|
|
60
63
|
}
|
|
61
64
|
this.inRevertiblePhase = true;
|
|
62
65
|
this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
|
|
63
|
-
|
|
64
|
-
const nullifiers = this.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
|
|
67
|
+
const nullifiers = this.getEmittedNullifiers();
|
|
68
|
+
// If there are no nullifiers emitted by private calls so far, we use the protocol nullifier as the nonce generator.
|
|
69
|
+
// Note: There could still be nullifiers emitted after the counter is set, but those nullifiers are revertible, so
|
|
70
|
+
// we don't want to use them as the nonce generator.
|
|
71
|
+
this.usedProtocolNullifierForNonces = nullifiers.length === 0;
|
|
72
|
+
const nonceGenerator = this.usedProtocolNullifierForNonces ? this.protocolNullifier : new Fr(nullifiers[0]);
|
|
69
73
|
|
|
70
74
|
// The existing pending notes are all non-revertible.
|
|
71
75
|
// They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
|
|
72
76
|
// Their indexes in the tx are known at this point and won't change. So we can assign a nonce to each one of them.
|
|
73
|
-
// The nonces will be used to create the "
|
|
77
|
+
// The nonces will be used to create the "unique" note hashes.
|
|
74
78
|
const updatedNotes = await Promise.all(
|
|
75
79
|
this.notes.map(async ({ note, counter }, i) => {
|
|
76
80
|
const noteNonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
@@ -99,15 +103,11 @@ export class ExecutionNoteCache {
|
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
public finish() {
|
|
102
|
-
// If we never entered the revertible phase,
|
|
103
|
-
//
|
|
106
|
+
// If we never entered the revertible phase, and there are no nullifiers emitted, we need to use the protocol
|
|
107
|
+
// nullifier as the nonce generator.
|
|
104
108
|
if (!this.inRevertiblePhase) {
|
|
105
|
-
this.usedProtocolNullifierForNonces = this.
|
|
109
|
+
this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
|
|
106
110
|
}
|
|
107
|
-
// If we entered the revertible phase, the nonce generator was decided based on wether or not a nullifier was emitted before entering.
|
|
108
|
-
return {
|
|
109
|
-
usedProtocolNullifierForNonces: this.usedProtocolNullifierForNonces,
|
|
110
|
-
};
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
/**
|
|
@@ -150,11 +150,11 @@ export class ExecutionNoteCache {
|
|
|
150
150
|
|
|
151
151
|
// If the note is non revertible and the nullifier was emitted in the revertible phase, both the note hash and the nullifier will be emitted
|
|
152
152
|
if (this.inRevertiblePhase && note.counter < this.minRevertibleSideEffectCounter) {
|
|
153
|
-
this
|
|
153
|
+
this.#recordNullifier(contractAddress, siloedNullifier);
|
|
154
154
|
}
|
|
155
155
|
} else {
|
|
156
156
|
// If the note being nullified comes from a previous tx the nullifier will be emitted.
|
|
157
|
-
this
|
|
157
|
+
this.#recordNullifier(contractAddress, siloedNullifier);
|
|
158
158
|
}
|
|
159
159
|
return nullifiedNoteHashCounter;
|
|
160
160
|
}
|
|
@@ -166,19 +166,22 @@ export class ExecutionNoteCache {
|
|
|
166
166
|
*/
|
|
167
167
|
public async nullifierCreated(contractAddress: AztecAddress, innerNullifier: Fr) {
|
|
168
168
|
const siloedNullifier = (await siloNullifier(contractAddress, innerNullifier)).toBigInt();
|
|
169
|
-
this
|
|
169
|
+
this.#recordNullifier(contractAddress, siloedNullifier);
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
/**
|
|
173
173
|
* Return notes created up to current point in execution.
|
|
174
174
|
* If a nullifier for a note in this list is emitted, the note will be deleted.
|
|
175
175
|
* @param contractAddress - Contract address of the notes.
|
|
176
|
-
* @param owner - Owner of the notes.
|
|
176
|
+
* @param owner - Owner of the notes. If undefined, returns all notes regardless of owner.
|
|
177
177
|
* @param storageSlot - Storage slot of the notes.
|
|
178
178
|
**/
|
|
179
|
-
public getNotes(contractAddress: AztecAddress, owner: AztecAddress, storageSlot: Fr) {
|
|
179
|
+
public getNotes(contractAddress: AztecAddress, owner: AztecAddress | undefined, storageSlot: Fr) {
|
|
180
180
|
const notes = this.noteMap.get(contractAddress.toBigInt()) ?? [];
|
|
181
|
-
return notes
|
|
181
|
+
return notes
|
|
182
|
+
.filter(n => owner === undefined || n.note.owner.equals(owner))
|
|
183
|
+
.filter(n => n.note.storageSlot.equals(storageSlot))
|
|
184
|
+
.map(n => n.note);
|
|
182
185
|
}
|
|
183
186
|
|
|
184
187
|
/**
|
|
@@ -212,11 +215,30 @@ export class ExecutionNoteCache {
|
|
|
212
215
|
return this.notes;
|
|
213
216
|
}
|
|
214
217
|
|
|
218
|
+
/**
|
|
219
|
+
* @returns All nullifiers emitted by private calls in this transaction.
|
|
220
|
+
*/
|
|
221
|
+
getEmittedNullifiers(): Fr[] {
|
|
222
|
+
return [...this.emittedNullifiers].map(n => new Fr(n));
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* @returns All nullifiers emitted by private calls in this transaction. If the protocol nullifier was used as the
|
|
227
|
+
* nonce generator, it is injected as the first nullifier.
|
|
228
|
+
*/
|
|
215
229
|
getAllNullifiers(): Fr[] {
|
|
216
|
-
|
|
230
|
+
if (this.usedProtocolNullifierForNonces === undefined) {
|
|
231
|
+
throw new Error('usedProtocolNullifierForNonces is not set yet. Call finish() to complete the transaction.');
|
|
232
|
+
}
|
|
233
|
+
const allNullifiers = this.getEmittedNullifiers();
|
|
234
|
+
return [...(this.usedProtocolNullifierForNonces ? [this.protocolNullifier] : []), ...allNullifiers];
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
getNonceGenerator(): Fr {
|
|
238
|
+
return this.getAllNullifiers()[0];
|
|
217
239
|
}
|
|
218
240
|
|
|
219
|
-
recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
|
|
241
|
+
#recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
|
|
220
242
|
const nullifiers = this.getNullifiers(contractAddress);
|
|
221
243
|
|
|
222
244
|
if (nullifiers.has(siloedNullifier)) {
|
|
@@ -225,6 +247,6 @@ export class ExecutionNoteCache {
|
|
|
225
247
|
|
|
226
248
|
nullifiers.add(siloedNullifier);
|
|
227
249
|
this.nullifierMap.set(contractAddress.toBigInt(), nullifiers);
|
|
228
|
-
this.
|
|
250
|
+
this.emittedNullifiers.add(siloedNullifier);
|
|
229
251
|
}
|
|
230
252
|
}
|
|
@@ -21,7 +21,7 @@ export class ExecutionTaggingIndexCache {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* Returns the pre
|
|
24
|
+
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
25
25
|
*/
|
|
26
26
|
public getUsedPreTags(): PreTag[] {
|
|
27
27
|
return Array.from(this.taggingIndexMap.entries()).map(([secret, index]) => ({
|
|
@@ -9,5 +9,5 @@ export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
|
9
9
|
export { Oracle } from './oracle/oracle.js';
|
|
10
10
|
export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
|
|
11
11
|
export { generateSimulatedProvingResult } from './contract_function_simulator.js';
|
|
12
|
-
export {
|
|
12
|
+
export { packAsHintedNote } from './oracle/note_packing_utils.js';
|
|
13
13
|
export { UtilityContext } from './noir-structs/utility_context.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { FieldReader } from '@aztec/foundation/serialize';
|
|
3
3
|
import { EventSelector } from '@aztec/stdlib/abi';
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
@@ -8,13 +8,14 @@ import { TxHash } from '@aztec/stdlib/tx';
|
|
|
8
8
|
const MAX_EVENT_SERIALIZED_LEN = 12;
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
* Intermediate struct used to perform batch event validation by PXE. The `
|
|
11
|
+
* Intermediate struct used to perform batch event validation by PXE. The `utilityValidateAndStoreEnqueuedNotesAndEvents` oracle
|
|
12
12
|
* expects for values of this type to be stored in a `CapsuleArray`.
|
|
13
13
|
*/
|
|
14
14
|
export class EventValidationRequest {
|
|
15
15
|
constructor(
|
|
16
16
|
public contractAddress: AztecAddress,
|
|
17
17
|
public eventTypeId: EventSelector,
|
|
18
|
+
public randomness: Fr,
|
|
18
19
|
public serializedEvent: Fr[],
|
|
19
20
|
public eventCommitment: Fr,
|
|
20
21
|
public txHash: TxHash,
|
|
@@ -27,6 +28,8 @@ export class EventValidationRequest {
|
|
|
27
28
|
const contractAddress = AztecAddress.fromField(reader.readField());
|
|
28
29
|
const eventTypeId = EventSelector.fromField(reader.readField());
|
|
29
30
|
|
|
31
|
+
const randomness = reader.readField();
|
|
32
|
+
|
|
30
33
|
const eventStorage = reader.readFieldArray(MAX_EVENT_SERIALIZED_LEN);
|
|
31
34
|
const eventLen = reader.readField().toNumber();
|
|
32
35
|
const serializedEvent = eventStorage.slice(0, eventLen);
|
|
@@ -38,6 +41,7 @@ export class EventValidationRequest {
|
|
|
38
41
|
return new EventValidationRequest(
|
|
39
42
|
contractAddress,
|
|
40
43
|
eventTypeId,
|
|
44
|
+
randomness,
|
|
41
45
|
serializedEvent,
|
|
42
46
|
eventCommitment,
|
|
43
47
|
txHash,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { FieldReader } from '@aztec/foundation/serialize';
|
|
3
3
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
+
import { Tag } from '@aztec/stdlib/logs';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Intermediate struct used to perform batch log retrieval by PXE. The `utilityBulkRetrieveLogs` oracle expects values of this
|
|
@@ -9,19 +10,19 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
|
9
10
|
export class LogRetrievalRequest {
|
|
10
11
|
constructor(
|
|
11
12
|
public contractAddress: AztecAddress,
|
|
12
|
-
public
|
|
13
|
+
public tag: Tag,
|
|
13
14
|
) {}
|
|
14
15
|
|
|
15
16
|
toFields(): Fr[] {
|
|
16
|
-
return [this.contractAddress.toField(), this.
|
|
17
|
+
return [this.contractAddress.toField(), this.tag.value];
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
static fromFields(fields: Fr[] | FieldReader): LogRetrievalRequest {
|
|
20
21
|
const reader = FieldReader.asReader(fields);
|
|
21
22
|
|
|
22
23
|
const contractAddress = AztecAddress.fromField(reader.readField());
|
|
23
|
-
const
|
|
24
|
+
const tag = new Tag(reader.readField());
|
|
24
25
|
|
|
25
|
-
return new LogRetrievalRequest(contractAddress,
|
|
26
|
+
return new LogRetrievalRequest(contractAddress, tag);
|
|
26
27
|
}
|
|
27
28
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MAX_NOTE_HASHES_PER_TX, PRIVATE_LOG_CIPHERTEXT_LEN } from '@aztec/constants';
|
|
2
2
|
import { range } from '@aztec/foundation/array';
|
|
3
|
-
import { Fr } from '@aztec/foundation/
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import type { TxHash } from '@aztec/stdlib/tx';
|
|
5
5
|
|
|
6
6
|
import { MAX_NOTE_PACKED_LEN } from './note_validation_request.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { FieldReader } from '@aztec/foundation/serialize';
|
|
3
3
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
@@ -7,7 +7,7 @@ import { TxHash } from '@aztec/stdlib/tx';
|
|
|
7
7
|
export const MAX_NOTE_PACKED_LEN = 10;
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* Intermediate struct used to perform batch note validation by PXE. The `
|
|
10
|
+
* Intermediate struct used to perform batch note validation by PXE. The `utilityValidateAndStoreEnqueuedNotesAndEvents` oracle
|
|
11
11
|
* expects for values of this type to be stored in a `CapsuleArray`.
|
|
12
12
|
*/
|
|
13
13
|
export class NoteValidationRequest {
|
|
@@ -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
|
}
|