@aztec/pxe 0.0.1-commit.b655e406 → 0.0.1-commit.c31f2472
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.d.ts +1 -1
- 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 -12
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +24 -13
- package/dest/config/package_info.d.ts +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/benchmarked_node.js +77 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +44 -16
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +81 -41
- package/dest/contract_function_simulator/execution_note_cache.d.ts +25 -14
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +59 -34
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +2 -2
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +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 +3 -3
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +7 -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 +13 -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/index.d.ts +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +28 -18
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +2 -2
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +14 -8
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +16 -11
- package/dest/contract_function_simulator/oracle/oracle.d.ts +13 -10
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +69 -41
- 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 +37 -33
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +58 -49
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +77 -26
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +171 -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 +22 -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 +23 -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 +31 -27
- package/dest/error_enriching.d.ts +4 -4
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +6 -6
- package/dest/events/event_service.d.ts +16 -0
- package/dest/events/event_service.d.ts.map +1 -0
- package/dest/events/event_service.js +45 -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 +128 -0
- package/dest/notes/index.d.ts +2 -0
- package/dest/notes/index.d.ts.map +1 -0
- package/dest/notes/index.js +1 -0
- package/dest/notes/note_service.d.ts +49 -0
- package/dest/notes/note_service.d.ts.map +1 -0
- package/dest/notes/note_service.js +148 -0
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +4 -3
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +1 -1
- 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} +19 -13
- package/dest/private_kernel/index.d.ts +1 -1
- 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 +17 -17
- 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 +54 -83
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +195 -242
- 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} +1 -1
- 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 +9 -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} +2 -9
- package/dest/storage/anchor_block_store/index.d.ts +2 -0
- package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
- package/dest/storage/anchor_block_store/index.js +1 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_store.js +255 -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 -15
- 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} +34 -15
- 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/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 +73 -0
- package/dest/storage/note_store/note_store.d.ts.map +1 -0
- package/dest/storage/note_store/note_store.js +301 -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 +248 -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 +99 -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 +30 -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 +278 -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 +20 -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 +24 -25
- 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 +132 -43
- package/src/contract_function_simulator/execution_note_cache.ts +58 -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 +2 -2
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +15 -3
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +41 -16
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +30 -14
- package/src/contract_function_simulator/oracle/oracle.ts +88 -43
- package/src/contract_function_simulator/oracle/private_execution.ts +2 -68
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +138 -60
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +263 -71
- 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 +13 -16
- package/src/entrypoints/client/lazy/index.ts +0 -1
- package/src/entrypoints/client/lazy/utils.ts +14 -17
- package/src/entrypoints/pxe_creation_options.ts +6 -2
- package/src/entrypoints/server/index.ts +3 -1
- package/src/entrypoints/server/utils.ts +27 -49
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +73 -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 +223 -0
- package/src/notes/index.ts +1 -0
- package/src/notes/note_service.ts +197 -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} +38 -31
- package/src/private_kernel/private_kernel_execution_prover.ts +21 -24
- package/src/private_kernel/private_kernel_oracle.ts +118 -37
- package/src/pxe.ts +273 -315
- package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +1 -1
- 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} +2 -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} +45 -20
- 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/note_store/index.ts +2 -0
- package/src/storage/note_store/note_store.ts +376 -0
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +361 -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 +129 -0
- package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
- package/src/storage/tagging_store/sender_tagging_store.ts +345 -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 -274
- 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 -701
- 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_dao.d.ts +0 -100
- package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_dao.js +0 -102
- package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -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 -308
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -43
- 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 -104
- package/dest/storage/sync_data_provider/index.d.ts +0 -2
- package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/index.js +0 -1
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -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 -343
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1019
- 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_dao.ts +0 -154
- package/src/storage/note_data_provider/note_data_provider.ts +0 -393
- package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -148
- 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
|
@@ -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 {
|
|
@@ -32,12 +34,19 @@ import {
|
|
|
32
34
|
toACVMWitness,
|
|
33
35
|
witnessMapToFields,
|
|
34
36
|
} from '@aztec/simulator/client';
|
|
35
|
-
import type {
|
|
36
|
-
import { FunctionSelector, FunctionType
|
|
37
|
+
import type { FunctionCall } from '@aztec/stdlib/abi';
|
|
38
|
+
import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
37
39
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
38
40
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
39
41
|
import { Gas } from '@aztec/stdlib/gas';
|
|
40
|
-
import {
|
|
42
|
+
import {
|
|
43
|
+
computeNoteHashNonce,
|
|
44
|
+
computeProtocolNullifier,
|
|
45
|
+
computeUniqueNoteHash,
|
|
46
|
+
siloNoteHash,
|
|
47
|
+
siloNullifier,
|
|
48
|
+
} from '@aztec/stdlib/hash';
|
|
49
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/server';
|
|
41
50
|
import {
|
|
42
51
|
PartialPrivateTailPublicInputsForPublic,
|
|
43
52
|
PartialPrivateTailPublicInputsForRollup,
|
|
@@ -53,6 +62,7 @@ import { PrivateLog } from '@aztec/stdlib/logs';
|
|
|
53
62
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
54
63
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
55
64
|
import {
|
|
65
|
+
BlockHeader,
|
|
56
66
|
CallContext,
|
|
57
67
|
HashedValues,
|
|
58
68
|
PrivateExecutionResult,
|
|
@@ -62,13 +72,21 @@ import {
|
|
|
62
72
|
getFinalMinRevertibleSideEffectCounter,
|
|
63
73
|
} from '@aztec/stdlib/tx';
|
|
64
74
|
|
|
65
|
-
import type {
|
|
66
|
-
import type {
|
|
75
|
+
import type { AddressStore } from '../storage/address_store/address_store.js';
|
|
76
|
+
import type { AnchorBlockStore } from '../storage/anchor_block_store/anchor_block_store.js';
|
|
77
|
+
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
78
|
+
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
79
|
+
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
80
|
+
import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
81
|
+
import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
|
|
82
|
+
import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
|
|
83
|
+
import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
|
|
84
|
+
import type { BenchmarkedNode } from './benchmarked_node.js';
|
|
67
85
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
68
86
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
69
87
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
70
88
|
import { Oracle } from './oracle/oracle.js';
|
|
71
|
-
import { executePrivateFunction
|
|
89
|
+
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
72
90
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
73
91
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
74
92
|
|
|
@@ -79,7 +97,17 @@ export class ContractFunctionSimulator {
|
|
|
79
97
|
private log: Logger;
|
|
80
98
|
|
|
81
99
|
constructor(
|
|
82
|
-
private
|
|
100
|
+
private contractStore: ContractStore,
|
|
101
|
+
private noteStore: NoteStore,
|
|
102
|
+
private keyStore: KeyStore,
|
|
103
|
+
private addressStore: AddressStore,
|
|
104
|
+
private aztecNode: AztecNode,
|
|
105
|
+
private anchorBlockStore: AnchorBlockStore,
|
|
106
|
+
private senderTaggingStore: SenderTaggingStore,
|
|
107
|
+
private recipientTaggingStore: RecipientTaggingStore,
|
|
108
|
+
private senderAddressBookStore: SenderAddressBookStore,
|
|
109
|
+
private capsuleStore: CapsuleStore,
|
|
110
|
+
private privateEventStore: PrivateEventStore,
|
|
83
111
|
private simulator: CircuitSimulator,
|
|
84
112
|
) {
|
|
85
113
|
this.log = createLogger('simulator');
|
|
@@ -92,9 +120,11 @@ export class ContractFunctionSimulator {
|
|
|
92
120
|
* @param contractAddress - The address of the contract (should match request.origin)
|
|
93
121
|
* @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract
|
|
94
122
|
* or a specific account.
|
|
123
|
+
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
95
124
|
* @param senderForTags - The address that is used as a tagging sender when emitting private logs. Returned from
|
|
96
125
|
* the `privateGetSenderForTags` oracle.
|
|
97
126
|
* @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
|
|
127
|
+
* @param jobId - The job ID for staged writes.
|
|
98
128
|
* @returns The result of the execution.
|
|
99
129
|
*/
|
|
100
130
|
public async run(
|
|
@@ -102,15 +132,14 @@ export class ContractFunctionSimulator {
|
|
|
102
132
|
contractAddress: AztecAddress,
|
|
103
133
|
selector: FunctionSelector,
|
|
104
134
|
msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
|
|
105
|
-
|
|
106
|
-
|
|
135
|
+
anchorBlockHeader: BlockHeader,
|
|
136
|
+
senderForTags: AztecAddress | undefined,
|
|
137
|
+
scopes: AztecAddress[] | undefined,
|
|
138
|
+
jobId: string,
|
|
107
139
|
): Promise<PrivateExecutionResult> {
|
|
108
140
|
const simulatorSetupTimer = new Timer();
|
|
109
|
-
const anchorBlockHeader = await this.executionDataProvider.getAnchorBlockHeader();
|
|
110
|
-
|
|
111
|
-
await verifyCurrentClassId(contractAddress, this.executionDataProvider);
|
|
112
141
|
|
|
113
|
-
const entryPointArtifact = await this.
|
|
142
|
+
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
|
|
114
143
|
|
|
115
144
|
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
116
145
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
@@ -123,7 +152,7 @@ export class ContractFunctionSimulator {
|
|
|
123
152
|
}
|
|
124
153
|
|
|
125
154
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
126
|
-
const startSideEffectCounter =
|
|
155
|
+
const startSideEffectCounter = 2;
|
|
127
156
|
|
|
128
157
|
const callContext = new CallContext(
|
|
129
158
|
msgSender,
|
|
@@ -132,8 +161,8 @@ export class ContractFunctionSimulator {
|
|
|
132
161
|
entryPointArtifact.isStatic,
|
|
133
162
|
);
|
|
134
163
|
|
|
135
|
-
const
|
|
136
|
-
const noteCache = new ExecutionNoteCache(
|
|
164
|
+
const protocolNullifier = await computeProtocolNullifier(await request.toTxRequest().hash());
|
|
165
|
+
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
137
166
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
138
167
|
|
|
139
168
|
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
@@ -141,12 +170,26 @@ export class ContractFunctionSimulator {
|
|
|
141
170
|
request.txContext,
|
|
142
171
|
callContext,
|
|
143
172
|
anchorBlockHeader,
|
|
173
|
+
async call => {
|
|
174
|
+
await this.runUtility(call, [], anchorBlockHeader, scopes, jobId);
|
|
175
|
+
},
|
|
144
176
|
request.authWitnesses,
|
|
145
177
|
request.capsules,
|
|
146
178
|
HashedValuesCache.create(request.argsOfCalls),
|
|
147
179
|
noteCache,
|
|
148
180
|
taggingIndexCache,
|
|
149
|
-
this.
|
|
181
|
+
this.contractStore,
|
|
182
|
+
this.noteStore,
|
|
183
|
+
this.keyStore,
|
|
184
|
+
this.addressStore,
|
|
185
|
+
this.aztecNode,
|
|
186
|
+
this.anchorBlockStore,
|
|
187
|
+
this.senderTaggingStore,
|
|
188
|
+
this.recipientTaggingStore,
|
|
189
|
+
this.senderAddressBookStore,
|
|
190
|
+
this.capsuleStore,
|
|
191
|
+
this.privateEventStore,
|
|
192
|
+
jobId,
|
|
150
193
|
0, // totalPublicArgsCount
|
|
151
194
|
startSideEffectCounter,
|
|
152
195
|
undefined, // log
|
|
@@ -170,8 +213,9 @@ export class ContractFunctionSimulator {
|
|
|
170
213
|
request.functionSelector,
|
|
171
214
|
);
|
|
172
215
|
const simulatorTeardownTimer = new Timer();
|
|
173
|
-
|
|
174
|
-
|
|
216
|
+
|
|
217
|
+
noteCache.finish();
|
|
218
|
+
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
175
219
|
|
|
176
220
|
const publicCallRequests = collectNested([executionResult], r =>
|
|
177
221
|
r.publicInputs.publicCallRequests
|
|
@@ -207,20 +251,43 @@ export class ContractFunctionSimulator {
|
|
|
207
251
|
* Runs a utility function.
|
|
208
252
|
* @param call - The function call to execute.
|
|
209
253
|
* @param authwits - Authentication witnesses required for the function call.
|
|
254
|
+
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
210
255
|
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
211
256
|
* accounts if not specified.
|
|
212
|
-
* @returns A
|
|
257
|
+
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
213
258
|
*/
|
|
214
|
-
public async runUtility(
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
259
|
+
public async runUtility(
|
|
260
|
+
call: FunctionCall,
|
|
261
|
+
authwits: AuthWitness[],
|
|
262
|
+
anchorBlockHeader: BlockHeader,
|
|
263
|
+
scopes: AztecAddress[] | undefined,
|
|
264
|
+
jobId: string,
|
|
265
|
+
): Promise<Fr[]> {
|
|
266
|
+
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
218
267
|
|
|
219
268
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
220
269
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
221
270
|
}
|
|
222
271
|
|
|
223
|
-
const oracle = new UtilityExecutionOracle(
|
|
272
|
+
const oracle = new UtilityExecutionOracle(
|
|
273
|
+
call.to,
|
|
274
|
+
authwits,
|
|
275
|
+
[],
|
|
276
|
+
anchorBlockHeader,
|
|
277
|
+
this.contractStore,
|
|
278
|
+
this.noteStore,
|
|
279
|
+
this.keyStore,
|
|
280
|
+
this.addressStore,
|
|
281
|
+
this.aztecNode,
|
|
282
|
+
this.anchorBlockStore,
|
|
283
|
+
this.recipientTaggingStore,
|
|
284
|
+
this.senderAddressBookStore,
|
|
285
|
+
this.capsuleStore,
|
|
286
|
+
this.privateEventStore,
|
|
287
|
+
jobId,
|
|
288
|
+
undefined,
|
|
289
|
+
scopes,
|
|
290
|
+
);
|
|
224
291
|
|
|
225
292
|
try {
|
|
226
293
|
this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
|
|
@@ -244,17 +311,28 @@ export class ContractFunctionSimulator {
|
|
|
244
311
|
);
|
|
245
312
|
});
|
|
246
313
|
|
|
247
|
-
const returnWitness = witnessMapToFields(acirExecutionResult.returnWitness);
|
|
248
314
|
this.log.verbose(`Utility simulation for ${call.to}.${call.selector} completed`);
|
|
249
|
-
return
|
|
315
|
+
return witnessMapToFields(acirExecutionResult.returnWitness);
|
|
250
316
|
} catch (err) {
|
|
251
317
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
252
318
|
}
|
|
253
319
|
}
|
|
254
320
|
// docs:end:execute_utility_function
|
|
255
321
|
|
|
322
|
+
/**
|
|
323
|
+
* Returns the execution statistics collected during the simulator run.
|
|
324
|
+
* @returns The execution statistics.
|
|
325
|
+
*/
|
|
256
326
|
getStats() {
|
|
257
|
-
|
|
327
|
+
const nodeRPCCalls =
|
|
328
|
+
typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
|
|
329
|
+
? (this.aztecNode as BenchmarkedNode).getStats()
|
|
330
|
+
: {
|
|
331
|
+
perMethod: {},
|
|
332
|
+
roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
return { nodeRPCCalls };
|
|
258
336
|
}
|
|
259
337
|
}
|
|
260
338
|
|
|
@@ -275,15 +353,15 @@ class OrderedSideEffect<T> {
|
|
|
275
353
|
* (allowing state overrides) and is much faster, while still generating a valid
|
|
276
354
|
* output that can be sent to the node for public simulation
|
|
277
355
|
* @param privateExecutionResult - The result of the private execution.
|
|
278
|
-
* @param
|
|
279
|
-
*
|
|
280
|
-
*
|
|
356
|
+
* @param contractStore - A provider for contract data in order to get function names and debug info.
|
|
357
|
+
* @param minRevertibleSideEffectCounterOverride - Optional override for the min revertible side effect counter.
|
|
358
|
+
* Used by TXE to simulate account contract behavior (setting the counter before app execution).
|
|
281
359
|
* @returns The simulated proving result.
|
|
282
360
|
*/
|
|
283
361
|
export async function generateSimulatedProvingResult(
|
|
284
362
|
privateExecutionResult: PrivateExecutionResult,
|
|
285
|
-
|
|
286
|
-
|
|
363
|
+
contractStore: ContractStore,
|
|
364
|
+
minRevertibleSideEffectCounterOverride?: number,
|
|
287
365
|
): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
288
366
|
const siloedNoteHashes: OrderedSideEffect<Fr>[] = [];
|
|
289
367
|
const nullifiers: OrderedSideEffect<Fr>[] = [];
|
|
@@ -324,7 +402,10 @@ export async function generateSimulatedProvingResult(
|
|
|
324
402
|
|
|
325
403
|
const privateLogsFromExecution = await Promise.all(
|
|
326
404
|
execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
|
|
327
|
-
metadata.log.fields[0] = await
|
|
405
|
+
metadata.log.fields[0] = await poseidon2HashWithSeparator(
|
|
406
|
+
[contractAddress, metadata.log.fields[0]],
|
|
407
|
+
GeneratorIndex.PRIVATE_LOG_FIRST_FIELD,
|
|
408
|
+
);
|
|
328
409
|
return new OrderedSideEffect(metadata.log, metadata.counter);
|
|
329
410
|
}),
|
|
330
411
|
);
|
|
@@ -360,7 +441,7 @@ export async function generateSimulatedProvingResult(
|
|
|
360
441
|
: execution.publicInputs.publicTeardownCallRequest;
|
|
361
442
|
|
|
362
443
|
executionSteps.push({
|
|
363
|
-
functionName: await
|
|
444
|
+
functionName: await contractStore.getDebugFunctionName(
|
|
364
445
|
execution.publicInputs.callContext.contractAddress,
|
|
365
446
|
execution.publicInputs.callContext.functionSelector,
|
|
366
447
|
),
|
|
@@ -387,16 +468,18 @@ export async function generateSimulatedProvingResult(
|
|
|
387
468
|
const getEffect = <T>(orderedSideEffect: OrderedSideEffect<T>) => orderedSideEffect.sideEffect;
|
|
388
469
|
|
|
389
470
|
const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
|
|
390
|
-
const minRevertibleSideEffectCounter =
|
|
471
|
+
const minRevertibleSideEffectCounter =
|
|
472
|
+
minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
|
|
391
473
|
|
|
392
474
|
const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(
|
|
393
475
|
nullifiers.sort(sortByCounter),
|
|
394
476
|
minRevertibleSideEffectCounter,
|
|
395
477
|
);
|
|
396
|
-
|
|
478
|
+
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
479
|
+
if (nonRevertibleNullifiers.length === 0) {
|
|
480
|
+
nonRevertibleNullifiers.push(nonceGenerator);
|
|
481
|
+
} else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
|
|
397
482
|
throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
|
|
398
|
-
} else {
|
|
399
|
-
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
400
483
|
}
|
|
401
484
|
|
|
402
485
|
if (isPrivateOnlyTx) {
|
|
@@ -432,6 +515,12 @@ export async function generateSimulatedProvingResult(
|
|
|
432
515
|
siloedNoteHashes.sort(sortByCounter),
|
|
433
516
|
minRevertibleSideEffectCounter,
|
|
434
517
|
);
|
|
518
|
+
const nonRevertibleUniqueNoteHashes = await Promise.all(
|
|
519
|
+
nonRevertibleNoteHashes.map(async (noteHash, i) => {
|
|
520
|
+
const nonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
521
|
+
return await computeUniqueNoteHash(nonce, noteHash);
|
|
522
|
+
}),
|
|
523
|
+
);
|
|
435
524
|
const [nonRevertibleL2ToL1Messages, revertibleL2ToL1Messages] = splitOrderedSideEffects(
|
|
436
525
|
l2ToL1Messages.sort(sortByCounter),
|
|
437
526
|
minRevertibleSideEffectCounter,
|
|
@@ -450,7 +539,7 @@ export async function generateSimulatedProvingResult(
|
|
|
450
539
|
);
|
|
451
540
|
|
|
452
541
|
const nonRevertibleData = new PrivateToPublicAccumulatedData(
|
|
453
|
-
padArrayEnd(
|
|
542
|
+
padArrayEnd(nonRevertibleUniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
|
|
454
543
|
padArrayEnd(nonRevertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
|
|
455
544
|
padArrayEnd(nonRevertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
|
|
456
545
|
padArrayEnd(nonRevertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
|
|
@@ -498,7 +587,7 @@ function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertib
|
|
|
498
587
|
const revertibleSideEffects: T[] = [];
|
|
499
588
|
const nonRevertibleSideEffects: T[] = [];
|
|
500
589
|
effects.forEach(effect => {
|
|
501
|
-
if (effect.counter < minRevertibleSideEffectCounter) {
|
|
590
|
+
if (minRevertibleSideEffectCounter === 0 || effect.counter < minRevertibleSideEffectCounter) {
|
|
502
591
|
nonRevertibleSideEffects.push(effect.sideEffect);
|
|
503
592
|
} else {
|
|
504
593
|
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,21 +32,24 @@ 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
|
|
50
|
+
private usedProtocolNullifierForNonces: boolean | undefined;
|
|
48
51
|
|
|
49
|
-
constructor(private readonly
|
|
52
|
+
constructor(private readonly protocolNullifier: Fr) {}
|
|
50
53
|
|
|
51
54
|
/**
|
|
52
55
|
* Enters the revertible phase of the transaction.
|
|
@@ -61,17 +64,17 @@ export class ExecutionNoteCache {
|
|
|
61
64
|
this.inRevertiblePhase = true;
|
|
62
65
|
this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
|
|
63
66
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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]);
|
|
70
73
|
|
|
71
74
|
// The existing pending notes are all non-revertible.
|
|
72
75
|
// They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
|
|
73
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.
|
|
74
|
-
// The nonces will be used to create the "
|
|
77
|
+
// The nonces will be used to create the "unique" note hashes.
|
|
75
78
|
const updatedNotes = await Promise.all(
|
|
76
79
|
this.notes.map(async ({ note, counter }, i) => {
|
|
77
80
|
const noteNonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
@@ -92,15 +95,19 @@ export class ExecutionNoteCache {
|
|
|
92
95
|
updatedNotes.forEach(n => this.#addNote(n));
|
|
93
96
|
}
|
|
94
97
|
|
|
98
|
+
public isSideEffectCounterRevertible(sideEffectCounter: number): boolean {
|
|
99
|
+
if (!this.inRevertiblePhase) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return sideEffectCounter >= this.minRevertibleSideEffectCounter;
|
|
103
|
+
}
|
|
104
|
+
|
|
95
105
|
public finish() {
|
|
96
|
-
// If we never entered the revertible phase,
|
|
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.
|
|
97
108
|
if (!this.inRevertiblePhase) {
|
|
98
|
-
this.
|
|
109
|
+
this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
|
|
99
110
|
}
|
|
100
|
-
// If we entered the revertible phase, the nonce generator was decided based on wether or not a nullifier was emitted before entering.
|
|
101
|
-
return {
|
|
102
|
-
usedTxRequestHashForNonces: this.usedTxRequestHashForNonces,
|
|
103
|
-
};
|
|
104
111
|
}
|
|
105
112
|
|
|
106
113
|
/**
|
|
@@ -143,11 +150,11 @@ export class ExecutionNoteCache {
|
|
|
143
150
|
|
|
144
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
|
|
145
152
|
if (this.inRevertiblePhase && note.counter < this.minRevertibleSideEffectCounter) {
|
|
146
|
-
this
|
|
153
|
+
this.#recordNullifier(contractAddress, siloedNullifier);
|
|
147
154
|
}
|
|
148
155
|
} else {
|
|
149
156
|
// If the note being nullified comes from a previous tx the nullifier will be emitted.
|
|
150
|
-
this
|
|
157
|
+
this.#recordNullifier(contractAddress, siloedNullifier);
|
|
151
158
|
}
|
|
152
159
|
return nullifiedNoteHashCounter;
|
|
153
160
|
}
|
|
@@ -159,18 +166,22 @@ export class ExecutionNoteCache {
|
|
|
159
166
|
*/
|
|
160
167
|
public async nullifierCreated(contractAddress: AztecAddress, innerNullifier: Fr) {
|
|
161
168
|
const siloedNullifier = (await siloNullifier(contractAddress, innerNullifier)).toBigInt();
|
|
162
|
-
this
|
|
169
|
+
this.#recordNullifier(contractAddress, siloedNullifier);
|
|
163
170
|
}
|
|
164
171
|
|
|
165
172
|
/**
|
|
166
173
|
* Return notes created up to current point in execution.
|
|
167
174
|
* If a nullifier for a note in this list is emitted, the note will be deleted.
|
|
168
175
|
* @param contractAddress - Contract address of the notes.
|
|
176
|
+
* @param owner - Owner of the notes. If undefined, returns all notes regardless of owner.
|
|
169
177
|
* @param storageSlot - Storage slot of the notes.
|
|
170
178
|
**/
|
|
171
|
-
public getNotes(contractAddress: AztecAddress, storageSlot: Fr) {
|
|
179
|
+
public getNotes(contractAddress: AztecAddress, owner: AztecAddress | undefined, storageSlot: Fr) {
|
|
172
180
|
const notes = this.noteMap.get(contractAddress.toBigInt()) ?? [];
|
|
173
|
-
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);
|
|
174
185
|
}
|
|
175
186
|
|
|
176
187
|
/**
|
|
@@ -204,11 +215,30 @@ export class ExecutionNoteCache {
|
|
|
204
215
|
return this.notes;
|
|
205
216
|
}
|
|
206
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
|
+
*/
|
|
207
229
|
getAllNullifiers(): Fr[] {
|
|
208
|
-
|
|
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];
|
|
209
239
|
}
|
|
210
240
|
|
|
211
|
-
recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
|
|
241
|
+
#recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
|
|
212
242
|
const nullifiers = this.getNullifiers(contractAddress);
|
|
213
243
|
|
|
214
244
|
if (nullifiers.has(siloedNullifier)) {
|
|
@@ -217,6 +247,6 @@ export class ExecutionNoteCache {
|
|
|
217
247
|
|
|
218
248
|
nullifiers.add(siloedNullifier);
|
|
219
249
|
this.nullifierMap.set(contractAddress.toBigInt(), nullifiers);
|
|
220
|
-
this.
|
|
250
|
+
this.emittedNullifiers.add(siloedNullifier);
|
|
221
251
|
}
|
|
222
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';
|
|
@@ -42,7 +42,7 @@ export class LogRetrievalResponse {
|
|
|
42
42
|
return range(serializationLen).map(_ => Fr.zero());
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
static toSerializedOption(response
|
|
45
|
+
static toSerializedOption(response: LogRetrievalResponse | null): Fr[] {
|
|
46
46
|
if (response) {
|
|
47
47
|
return [new Fr(1), ...response.toFields()];
|
|
48
48
|
} else {
|