@aztec/pxe 0.0.1-commit.03f7ef2 → 0.0.1-commit.0b941701
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 +1 -1
- package/dest/block_synchronizer/block_synchronizer.d.ts +14 -10
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +72 -32
- package/dest/config/index.d.ts +3 -1
- 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 +28 -27
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +56 -40
- package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +45 -28
- 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 +4 -3
- 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/note_validation_request.d.ts +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 +15 -11
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +6 -6
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
- 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 +43 -32
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +1 -37
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +26 -26
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +28 -41
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +44 -34
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +92 -92
- 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 +5 -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 +6 -6
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +8 -7
- 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 +10 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +10 -1
- package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +3 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +2 -0
- 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 +11 -7
- 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 +8 -7
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +22 -24
- package/dest/events/private_event_filter_validator.d.ts +6 -6
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +5 -6
- package/dest/job_coordinator/job_coordinator.d.ts +74 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +93 -0
- package/dest/logs/log_service.d.ts +15 -31
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +77 -188
- package/dest/notes/note_service.d.ts +10 -9
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +40 -44
- 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 +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +4 -5
- package/dest/private_kernel/private_kernel_oracle.d.ts +24 -28
- 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 +17 -44
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +131 -147
- 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/{anchor_block_data_provider/anchor_block_data_provider.js → anchor_block_store/anchor_block_store.js} +1 -1
- 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} +3 -3
- 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} +2 -2
- 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/index.d.ts +8 -8
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +7 -7
- 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 +303 -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 +250 -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_data_provider/sender_tagging_data_provider.d.ts → tagging_store/sender_tagging_store.d.ts} +19 -9
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/{tagging_data_provider/sender_tagging_data_provider.js → tagging_store/sender_tagging_store.js} +111 -29
- package/dest/tagging/constants.d.ts +2 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +10 -3
- 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 +15 -3
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +14 -2
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -3
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +8 -8
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +3 -2
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +5 -2
- package/dest/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.d.ts +4 -4
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.js +8 -23
- package/dest/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.d.ts +1 -1
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
- package/dest/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.js +5 -8
- package/dest/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.d.ts +7 -4
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.js +12 -7
- package/package.json +18 -18
- package/src/bin/check_oracle_version.ts +1 -0
- package/src/block_synchronizer/block_synchronizer.ts +83 -34
- package/src/config/index.ts +14 -0
- 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 +79 -64
- package/src/contract_function_simulator/execution_note_cache.ts +44 -25
- package/src/contract_function_simulator/index.ts +1 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -1
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +20 -10
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
- package/src/contract_function_simulator/oracle/oracle.ts +56 -41
- package/src/contract_function_simulator/oracle/private_execution.ts +1 -69
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +77 -78
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +121 -105
- package/src/contract_function_simulator/proxied_contract_data_source.ts +7 -7
- package/src/contract_sync/index.ts +98 -0
- package/src/debug/pxe_debug_utils.ts +7 -6
- package/src/entrypoints/client/bundle/utils.ts +7 -1
- package/src/entrypoints/client/lazy/utils.ts +7 -2
- package/src/entrypoints/pxe_creation_options.ts +2 -1
- package/src/entrypoints/server/index.ts +2 -0
- package/src/entrypoints/server/utils.ts +11 -15
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +23 -27
- package/src/events/private_event_filter_validator.ts +4 -6
- package/src/job_coordinator/job_coordinator.ts +149 -0
- package/src/logs/log_service.ts +116 -260
- package/src/notes/note_service.ts +43 -46
- 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} +33 -22
- package/src/private_kernel/private_kernel_execution_prover.ts +3 -5
- package/src/private_kernel/private_kernel_oracle.ts +116 -36
- package/src/pxe.ts +189 -190
- 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/{anchor_block_data_provider/anchor_block_data_provider.ts → anchor_block_store/anchor_block_store.ts} +1 -1
- 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} +2 -2
- package/src/storage/contract_store/index.ts +1 -0
- package/src/storage/index.ts +7 -7
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/note_store/note_store.ts +381 -0
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +363 -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_data_provider/sender_tagging_data_provider.ts → tagging_store/sender_tagging_store.ts} +129 -28
- package/src/tagging/constants.ts +10 -3
- package/src/tagging/get_all_logs_by_tags.ts +68 -0
- package/src/tagging/index.ts +17 -2
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +23 -9
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +7 -1
- package/src/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.ts +12 -25
- package/src/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.ts +5 -13
- package/src/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.ts +19 -7
- 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/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 -46
- 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/public_storage/public_storage_service.d.ts +0 -24
- package/dest/public_storage/public_storage_service.d.ts.map +0 -1
- package/dest/public_storage/public_storage_service.js +0 -26
- 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/anchor_block_data_provider/anchor_block_data_provider.d.ts +0 -9
- package/dest/storage/anchor_block_data_provider/anchor_block_data_provider.d.ts.map +0 -1
- package/dest/storage/anchor_block_data_provider/index.d.ts +0 -2
- package/dest/storage/anchor_block_data_provider/index.d.ts.map +0 -1
- package/dest/storage/anchor_block_data_provider/index.js +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -57
- 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 -146
- 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 -84
- 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 -322
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -51
- 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 -115
- package/dest/storage/tagging_data_provider/index.d.ts +0 -3
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -2
- package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.d.ts +0 -31
- package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.js +0 -65
- package/dest/storage/tagging_data_provider/sender_tagging_data_provider.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.d.ts +0 -21
- package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.js +0 -42
- package/dest/tagging/sync/sync_sender_tagging_indexes.d.ts.map +0 -1
- package/dest/tagging/sync/utils/get_status_change_of_pending.d.ts.map +0 -1
- package/dest/tagging/sync/utils/load_and_store_new_tagging_indexes.d.ts.map +0 -1
- package/dest/tagging/utils.d.ts +0 -18
- package/dest/tagging/utils.d.ts.map +0 -1
- package/dest/tagging/utils.js +0 -25
- package/dest/tree_membership/tree_membership_service.d.ts +0 -52
- package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
- package/dest/tree_membership/tree_membership_service.js +0 -84
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/private_kernel/private_kernel_oracle_impl.ts +0 -133
- package/src/public_storage/public_storage_service.ts +0 -33
- package/src/storage/address_data_provider/index.ts +0 -1
- package/src/storage/anchor_block_data_provider/index.ts +0 -1
- package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -179
- 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 -412
- package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -162
- package/src/storage/tagging_data_provider/index.ts +0 -2
- package/src/storage/tagging_data_provider/recipient_tagging_data_provider.ts +0 -86
- package/src/tagging/recipient_sync/new_recipient_tagging_data_provider.ts +0 -53
- package/src/tagging/utils.ts +0 -32
- package/src/tree_membership/tree_membership_service.ts +0 -112
- /package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +0 -0
- /package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +0 -0
|
@@ -12,11 +12,11 @@ import {
|
|
|
12
12
|
} from '@aztec/simulator/client';
|
|
13
13
|
import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
14
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
|
+
import { L2BlockHash } from '@aztec/stdlib/block';
|
|
15
16
|
import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
|
|
16
|
-
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
17
17
|
|
|
18
18
|
import type { IMiscOracle, IPrivateExecutionOracle, IUtilityExecutionOracle } from './interfaces.js';
|
|
19
|
-
import {
|
|
19
|
+
import { packAsHintedNote } from './note_packing_utils.js';
|
|
20
20
|
|
|
21
21
|
export class UnavailableOracleError extends Error {
|
|
22
22
|
constructor(oracleName: string) {
|
|
@@ -137,77 +137,84 @@ export class Oracle {
|
|
|
137
137
|
].map(toACVMField);
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
async
|
|
141
|
-
[
|
|
142
|
-
[treeId]: ACVMField[],
|
|
140
|
+
async utilityGetNoteHashMembershipWitness(
|
|
141
|
+
[blockHash]: ACVMField[],
|
|
143
142
|
[leafValue]: ACVMField[],
|
|
144
143
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
145
|
-
const
|
|
146
|
-
const parsedTreeId = Fr.fromString(treeId).toNumber();
|
|
144
|
+
const parsedBlockHash = L2BlockHash.fromString(blockHash);
|
|
147
145
|
const parsedLeafValue = Fr.fromString(leafValue);
|
|
148
146
|
|
|
149
|
-
const witness = await this.handlerAsUtility().
|
|
150
|
-
BlockNumber(parsedBlockNumber),
|
|
151
|
-
parsedTreeId,
|
|
152
|
-
parsedLeafValue,
|
|
153
|
-
);
|
|
147
|
+
const witness = await this.handlerAsUtility().utilityGetNoteHashMembershipWitness(parsedBlockHash, parsedLeafValue);
|
|
154
148
|
if (!witness) {
|
|
155
|
-
throw new Error(
|
|
156
|
-
|
|
157
|
-
|
|
149
|
+
throw new Error(`Leaf ${leafValue} not found in the note hash tree at block hash ${parsedBlockHash.toString()}.`);
|
|
150
|
+
}
|
|
151
|
+
return witness.toNoirRepresentation();
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
async utilityGetArchiveMembershipWitness(
|
|
155
|
+
[blockHash]: ACVMField[],
|
|
156
|
+
[leafValue]: ACVMField[],
|
|
157
|
+
): Promise<(ACVMField | ACVMField[])[]> {
|
|
158
|
+
const parsedBlockHash = L2BlockHash.fromString(blockHash);
|
|
159
|
+
const parsedLeafValue = Fr.fromString(leafValue);
|
|
160
|
+
|
|
161
|
+
const witness = await this.handlerAsUtility().utilityGetArchiveMembershipWitness(parsedBlockHash, parsedLeafValue);
|
|
162
|
+
if (!witness) {
|
|
163
|
+
throw new Error(`Leaf ${leafValue} not found in the archive tree at block hash ${parsedBlockHash.toString()}.`);
|
|
158
164
|
}
|
|
159
|
-
return
|
|
165
|
+
return witness.toNoirRepresentation();
|
|
160
166
|
}
|
|
161
167
|
|
|
162
168
|
async utilityGetNullifierMembershipWitness(
|
|
163
|
-
[
|
|
169
|
+
[blockHash]: ACVMField[],
|
|
164
170
|
[nullifier]: ACVMField[], // nullifier, we try to find the witness for (to prove inclusion)
|
|
165
171
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
166
|
-
const
|
|
172
|
+
const parsedBlockHash = L2BlockHash.fromString(blockHash);
|
|
167
173
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
168
174
|
|
|
169
175
|
const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(
|
|
170
|
-
|
|
176
|
+
parsedBlockHash,
|
|
171
177
|
parsedNullifier,
|
|
172
178
|
);
|
|
173
179
|
if (!witness) {
|
|
174
|
-
throw new Error(
|
|
180
|
+
throw new Error(
|
|
181
|
+
`Nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
|
|
182
|
+
);
|
|
175
183
|
}
|
|
176
184
|
return witness.toNoirRepresentation();
|
|
177
185
|
}
|
|
178
186
|
|
|
179
187
|
async utilityGetLowNullifierMembershipWitness(
|
|
180
|
-
[
|
|
188
|
+
[blockHash]: ACVMField[],
|
|
181
189
|
[nullifier]: ACVMField[], // nullifier, we try to find the low nullifier witness for (to prove non-inclusion)
|
|
182
190
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
183
|
-
const
|
|
191
|
+
const parsedBlockHash = L2BlockHash.fromString(blockHash);
|
|
184
192
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
185
193
|
|
|
186
194
|
const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(
|
|
187
|
-
|
|
195
|
+
parsedBlockHash,
|
|
188
196
|
parsedNullifier,
|
|
189
197
|
);
|
|
190
198
|
if (!witness) {
|
|
191
199
|
throw new Error(
|
|
192
|
-
`Low nullifier witness not found for nullifier ${parsedNullifier} at block ${
|
|
200
|
+
`Low nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
|
|
193
201
|
);
|
|
194
202
|
}
|
|
195
203
|
return witness.toNoirRepresentation();
|
|
196
204
|
}
|
|
197
205
|
|
|
198
206
|
async utilityGetPublicDataWitness(
|
|
199
|
-
[
|
|
207
|
+
[blockHash]: ACVMField[],
|
|
200
208
|
[leafSlot]: ACVMField[],
|
|
201
209
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
202
|
-
const
|
|
210
|
+
const parsedBlockHash = L2BlockHash.fromString(blockHash);
|
|
203
211
|
const parsedLeafSlot = Fr.fromString(leafSlot);
|
|
204
212
|
|
|
205
|
-
const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(
|
|
206
|
-
BlockNumber(parsedBlockNumber),
|
|
207
|
-
parsedLeafSlot,
|
|
208
|
-
);
|
|
213
|
+
const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(parsedBlockHash, parsedLeafSlot);
|
|
209
214
|
if (!witness) {
|
|
210
|
-
throw new Error(
|
|
215
|
+
throw new Error(
|
|
216
|
+
`Public data witness not found for slot ${parsedLeafSlot} at block hash ${parsedBlockHash.toString()}.`,
|
|
217
|
+
);
|
|
211
218
|
}
|
|
212
219
|
return witness.toNoirRepresentation();
|
|
213
220
|
}
|
|
@@ -257,7 +264,7 @@ export class Oracle {
|
|
|
257
264
|
[offset]: ACVMField[],
|
|
258
265
|
[status]: ACVMField[],
|
|
259
266
|
[maxNotes]: ACVMField[],
|
|
260
|
-
[
|
|
267
|
+
[packedHintedNoteLength]: ACVMField[],
|
|
261
268
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
262
269
|
// Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
|
|
263
270
|
const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
|
|
@@ -279,25 +286,25 @@ export class Oracle {
|
|
|
279
286
|
+status,
|
|
280
287
|
);
|
|
281
288
|
|
|
282
|
-
const
|
|
283
|
-
|
|
289
|
+
const returnDataAsArrayOfPackedHintedNotes = noteDatas.map(noteData =>
|
|
290
|
+
packAsHintedNote({
|
|
284
291
|
contractAddress: noteData.contractAddress,
|
|
285
292
|
owner: noteData.owner,
|
|
286
293
|
randomness: noteData.randomness,
|
|
287
294
|
storageSlot: noteData.storageSlot,
|
|
288
295
|
noteNonce: noteData.noteNonce,
|
|
289
|
-
|
|
296
|
+
isPending: noteData.isPending,
|
|
290
297
|
note: noteData.note,
|
|
291
298
|
}),
|
|
292
299
|
);
|
|
293
300
|
|
|
294
301
|
// Now we convert each sub-array to an array of ACVMField
|
|
295
|
-
const returnDataAsArrayOfACVMFieldArrays =
|
|
302
|
+
const returnDataAsArrayOfACVMFieldArrays = returnDataAsArrayOfPackedHintedNotes.map(subArray =>
|
|
296
303
|
subArray.map(toACVMField),
|
|
297
304
|
);
|
|
298
305
|
|
|
299
306
|
// At last we convert the array of arrays to a bounded vec of arrays
|
|
300
|
-
return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +
|
|
307
|
+
return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +packedHintedNoteLength);
|
|
301
308
|
}
|
|
302
309
|
|
|
303
310
|
privateNotifyCreatedNote(
|
|
@@ -339,6 +346,14 @@ export class Oracle {
|
|
|
339
346
|
return [];
|
|
340
347
|
}
|
|
341
348
|
|
|
349
|
+
async privateIsNullifierPending([innerNullifier]: ACVMField[], [contractAddress]: ACVMField[]): Promise<ACVMField[]> {
|
|
350
|
+
const isPending = await this.handlerAsPrivate().privateIsNullifierPending(
|
|
351
|
+
Fr.fromString(innerNullifier),
|
|
352
|
+
AztecAddress.fromString(contractAddress),
|
|
353
|
+
);
|
|
354
|
+
return [toACVMField(isPending)];
|
|
355
|
+
}
|
|
356
|
+
|
|
342
357
|
async utilityCheckNullifierExists([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
|
|
343
358
|
const exists = await this.handlerAsUtility().utilityCheckNullifierExists(Fr.fromString(innerNullifier));
|
|
344
359
|
return [toACVMField(exists)];
|
|
@@ -358,15 +373,15 @@ export class Oracle {
|
|
|
358
373
|
}
|
|
359
374
|
|
|
360
375
|
async utilityStorageRead(
|
|
376
|
+
[blockHash]: ACVMField[],
|
|
361
377
|
[contractAddress]: ACVMField[],
|
|
362
378
|
[startStorageSlot]: ACVMField[],
|
|
363
|
-
[blockNumber]: ACVMField[],
|
|
364
379
|
[numberOfElements]: ACVMField[],
|
|
365
380
|
): Promise<ACVMField[][]> {
|
|
366
381
|
const values = await this.handlerAsUtility().utilityStorageRead(
|
|
382
|
+
L2BlockHash.fromString(blockHash),
|
|
367
383
|
new AztecAddress(Fr.fromString(contractAddress)),
|
|
368
384
|
Fr.fromString(startStorageSlot),
|
|
369
|
-
BlockNumber(+blockNumber),
|
|
370
385
|
+numberOfElements,
|
|
371
386
|
);
|
|
372
387
|
return [values.map(toACVMField)];
|
|
@@ -476,12 +491,12 @@ export class Oracle {
|
|
|
476
491
|
return [];
|
|
477
492
|
}
|
|
478
493
|
|
|
479
|
-
async
|
|
494
|
+
async utilityValidateAndStoreEnqueuedNotesAndEvents(
|
|
480
495
|
[contractAddress]: ACVMField[],
|
|
481
496
|
[noteValidationRequestsArrayBaseSlot]: ACVMField[],
|
|
482
497
|
[eventValidationRequestsArrayBaseSlot]: ACVMField[],
|
|
483
498
|
): Promise<ACVMField[]> {
|
|
484
|
-
await this.handlerAsUtility().
|
|
499
|
+
await this.handlerAsUtility().utilityValidateAndStoreEnqueuedNotesAndEvents(
|
|
485
500
|
AztecAddress.fromString(contractAddress),
|
|
486
501
|
Fr.fromString(noteValidationRequestsArrayBaseSlot),
|
|
487
502
|
Fr.fromString(eventValidationRequestsArrayBaseSlot),
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, PRIVATE_CONTEXT_INPUTS_LENGTH } from '@aztec/constants';
|
|
2
|
-
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
6
|
-
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
7
5
|
import {
|
|
8
6
|
type ACVMWitness,
|
|
9
7
|
type CircuitSimulator,
|
|
@@ -19,15 +17,10 @@ import {
|
|
|
19
17
|
countArgumentsSize,
|
|
20
18
|
} from '@aztec/stdlib/abi';
|
|
21
19
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
22
|
-
import type { ContractInstance } from '@aztec/stdlib/contract';
|
|
23
|
-
import { DelayedPublicMutableValues, DelayedPublicMutableValuesWithHash } from '@aztec/stdlib/delayed-public-mutable';
|
|
24
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
25
20
|
import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
26
21
|
import type { CircuitWitnessGenerationStats } from '@aztec/stdlib/stats';
|
|
27
|
-
import {
|
|
28
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
22
|
+
import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
29
23
|
|
|
30
|
-
import { ContractDataProvider } from '../../storage/contract_data_provider/index.js';
|
|
31
24
|
import { Oracle } from './oracle.js';
|
|
32
25
|
import type { PrivateExecutionOracle } from './private_execution_oracle.js';
|
|
33
26
|
|
|
@@ -85,7 +78,6 @@ export async function executePrivateFunction(
|
|
|
85
78
|
|
|
86
79
|
const rawReturnValues = await privateExecutionOracle.privateLoadFromExecutionCache(publicInputs.returnsHash);
|
|
87
80
|
|
|
88
|
-
const noteHashLeafIndexMap = privateExecutionOracle.getNoteHashLeafIndexMap();
|
|
89
81
|
const newNotes = privateExecutionOracle.getNewNotes();
|
|
90
82
|
const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
|
|
91
83
|
const offchainEffects = privateExecutionOracle.getOffchainEffects();
|
|
@@ -108,7 +100,6 @@ export async function executePrivateFunction(
|
|
|
108
100
|
Buffer.from(artifact.verificationKey!, 'base64'),
|
|
109
101
|
partialWitness,
|
|
110
102
|
publicInputs,
|
|
111
|
-
noteHashLeafIndexMap,
|
|
112
103
|
newNotes,
|
|
113
104
|
noteHashNullifierCounterMap,
|
|
114
105
|
rawReturnValues,
|
|
@@ -148,62 +139,3 @@ export function extractPrivateCircuitPublicInputs(
|
|
|
148
139
|
}
|
|
149
140
|
return PrivateCircuitPublicInputs.fromFields(returnData);
|
|
150
141
|
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Read the current class id of a contract from the execution data provider or AztecNode. If not found, class id
|
|
154
|
-
* from the instance is used.
|
|
155
|
-
* @param contractAddress - The address of the contract to read the class id for.
|
|
156
|
-
* @param instance - The instance of the contract.
|
|
157
|
-
* @param executionDataProvider - The execution data provider.
|
|
158
|
-
* @param blockNumber - The block number at which to load the DelayedPublicMutable storing the class id.
|
|
159
|
-
* @param timestamp - The timestamp at which to obtain the class id from the DelayedPublicMutable.
|
|
160
|
-
* @returns The current class id.
|
|
161
|
-
*/
|
|
162
|
-
export async function readCurrentClassId(
|
|
163
|
-
contractAddress: AztecAddress,
|
|
164
|
-
instance: ContractInstance,
|
|
165
|
-
aztecNode: AztecNode,
|
|
166
|
-
blockNumber: BlockNumber,
|
|
167
|
-
timestamp: UInt64,
|
|
168
|
-
) {
|
|
169
|
-
const { delayedPublicMutableSlot } = await DelayedPublicMutableValuesWithHash.getContractUpdateSlots(contractAddress);
|
|
170
|
-
const delayedPublicMutableValues = await DelayedPublicMutableValues.readFromTree(delayedPublicMutableSlot, slot =>
|
|
171
|
-
aztecNode.getPublicStorageAt(blockNumber, ProtocolContractAddress.ContractInstanceRegistry, slot),
|
|
172
|
-
);
|
|
173
|
-
let currentClassId = delayedPublicMutableValues.svc.getCurrentAt(timestamp)[0];
|
|
174
|
-
if (currentClassId.isZero()) {
|
|
175
|
-
currentClassId = instance.originalContractClassId;
|
|
176
|
-
}
|
|
177
|
-
return currentClassId;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Verify that the current class id of a contract obtained from AztecNode is the same as the one in contract data
|
|
182
|
-
* provider (i.e. PXE's own storage).
|
|
183
|
-
* @param header - The header of the block at which to verify the current class id. If not provided, the anchor block
|
|
184
|
-
* header of the execution data provider is used.
|
|
185
|
-
*/
|
|
186
|
-
export async function verifyCurrentClassId(
|
|
187
|
-
contractAddress: AztecAddress,
|
|
188
|
-
aztecNode: AztecNode,
|
|
189
|
-
contractDataProvider: ContractDataProvider,
|
|
190
|
-
header: BlockHeader,
|
|
191
|
-
) {
|
|
192
|
-
const instance = await contractDataProvider.getContractInstance(contractAddress);
|
|
193
|
-
if (!instance) {
|
|
194
|
-
throw new Error(`No contract instance found for address ${contractAddress.toString()}`);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
const currentClassId = await readCurrentClassId(
|
|
198
|
-
contractAddress,
|
|
199
|
-
instance,
|
|
200
|
-
aztecNode,
|
|
201
|
-
header.globalVariables.blockNumber,
|
|
202
|
-
header.globalVariables.timestamp,
|
|
203
|
-
);
|
|
204
|
-
if (!instance.currentContractClassId.equals(currentClassId)) {
|
|
205
|
-
throw new Error(
|
|
206
|
-
`Contract ${contractAddress} is outdated, current class id is ${currentClassId}, local class id is ${instance.currentContractClassId}`,
|
|
207
|
-
);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
@@ -7,13 +7,14 @@ import { type CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
|
|
|
7
7
|
import {
|
|
8
8
|
type FunctionAbi,
|
|
9
9
|
type FunctionArtifact,
|
|
10
|
+
type FunctionCall,
|
|
10
11
|
FunctionSelector,
|
|
11
12
|
type NoteSelector,
|
|
12
13
|
countArgumentsSize,
|
|
13
14
|
} from '@aztec/stdlib/abi';
|
|
14
15
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
15
16
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
16
|
-
import {
|
|
17
|
+
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
17
18
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
18
19
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
19
20
|
import { type ContractClassLog, DirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
|
|
@@ -29,22 +30,24 @@ import {
|
|
|
29
30
|
type TxContext,
|
|
30
31
|
} from '@aztec/stdlib/tx';
|
|
31
32
|
|
|
33
|
+
import { ensureContractSynced } from '../../contract_sync/index.js';
|
|
32
34
|
import { NoteService } from '../../notes/note_service.js';
|
|
33
|
-
import type {
|
|
34
|
-
import type {
|
|
35
|
-
import type {
|
|
36
|
-
import type {
|
|
37
|
-
import type {
|
|
38
|
-
import type {
|
|
39
|
-
import type {
|
|
40
|
-
import type {
|
|
41
|
-
import {
|
|
35
|
+
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
36
|
+
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
37
|
+
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
38
|
+
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
39
|
+
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
40
|
+
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
41
|
+
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
42
|
+
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
43
|
+
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
44
|
+
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
42
45
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
43
46
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
44
47
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
45
48
|
import { pickNotes } from '../pick_notes.js';
|
|
46
49
|
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
47
|
-
import { executePrivateFunction
|
|
50
|
+
import { executePrivateFunction } from './private_execution.js';
|
|
48
51
|
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
49
52
|
|
|
50
53
|
/**
|
|
@@ -62,16 +65,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
62
65
|
* Users can also use this to get a clearer idea of what's happened during a simulation.
|
|
63
66
|
*/
|
|
64
67
|
private newNotes: NoteAndSlot[] = [];
|
|
65
|
-
/**
|
|
66
|
-
* Notes from previous transactions that are returned to the oracle call `getNotes` during this execution.
|
|
67
|
-
* The mapping maps from the unique siloed note hash to the index for notes created in private executions.
|
|
68
|
-
* It maps from siloed note hash to the index for notes created by public functions.
|
|
69
|
-
*
|
|
70
|
-
* They are not part of the ExecutionNoteCache and being forwarded to nested contexts via `extend()`
|
|
71
|
-
* because these notes are meant to be maintained on a per-call basis
|
|
72
|
-
* They should act as references for the read requests output by an app circuit via public inputs.
|
|
73
|
-
*/
|
|
74
|
-
private noteHashLeafIndexMap: Map<bigint, bigint> = new Map();
|
|
75
68
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
76
69
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
77
70
|
private offchainEffects: { data: Fr[] }[] = [];
|
|
@@ -83,22 +76,26 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
83
76
|
private readonly callContext: CallContext,
|
|
84
77
|
/** Header of a block whose state is used during private execution (not the block the transaction is included in). */
|
|
85
78
|
protected override readonly anchorBlockHeader: BlockHeader,
|
|
79
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
80
|
+
private readonly utilityExecutor: (call: FunctionCall) => Promise<void>,
|
|
86
81
|
/** List of transient auth witnesses to be used during this simulation */
|
|
87
82
|
authWitnesses: AuthWitness[],
|
|
88
83
|
capsules: Capsule[],
|
|
89
84
|
private readonly executionCache: HashedValuesCache,
|
|
90
85
|
private readonly noteCache: ExecutionNoteCache,
|
|
91
86
|
private readonly taggingIndexCache: ExecutionTaggingIndexCache,
|
|
92
|
-
|
|
93
|
-
|
|
87
|
+
contractStore: ContractStore,
|
|
88
|
+
noteStore: NoteStore,
|
|
94
89
|
keyStore: KeyStore,
|
|
95
|
-
|
|
90
|
+
addressStore: AddressStore,
|
|
96
91
|
aztecNode: AztecNode,
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
92
|
+
anchorBlockStore: AnchorBlockStore,
|
|
93
|
+
private readonly senderTaggingStore: SenderTaggingStore,
|
|
94
|
+
recipientTaggingStore: RecipientTaggingStore,
|
|
95
|
+
senderAddressBookStore: SenderAddressBookStore,
|
|
96
|
+
capsuleStore: CapsuleStore,
|
|
97
|
+
privateEventStore: PrivateEventStore,
|
|
98
|
+
jobId: string,
|
|
102
99
|
private totalPublicCalldataCount: number = 0,
|
|
103
100
|
protected sideEffectCounter: number = 0,
|
|
104
101
|
log = createLogger('simulator:client_execution_context'),
|
|
@@ -111,16 +108,17 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
111
108
|
authWitnesses,
|
|
112
109
|
capsules,
|
|
113
110
|
anchorBlockHeader,
|
|
114
|
-
|
|
115
|
-
|
|
111
|
+
contractStore,
|
|
112
|
+
noteStore,
|
|
116
113
|
keyStore,
|
|
117
|
-
|
|
114
|
+
addressStore,
|
|
118
115
|
aztecNode,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
116
|
+
anchorBlockStore,
|
|
117
|
+
recipientTaggingStore,
|
|
118
|
+
senderAddressBookStore,
|
|
119
|
+
capsuleStore,
|
|
120
|
+
privateEventStore,
|
|
121
|
+
jobId,
|
|
124
122
|
log,
|
|
125
123
|
scopes,
|
|
126
124
|
);
|
|
@@ -155,14 +153,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
155
153
|
return toACVMWitness(0, fields);
|
|
156
154
|
}
|
|
157
155
|
|
|
158
|
-
/**
|
|
159
|
-
* The KernelProver will use this to fully populate witnesses and provide hints to the kernel circuit
|
|
160
|
-
* regarding which note hash each settled read request corresponds to.
|
|
161
|
-
*/
|
|
162
|
-
public getNoteHashLeafIndexMap() {
|
|
163
|
-
return this.noteHashLeafIndexMap;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
156
|
/**
|
|
167
157
|
* Get the data for the newly created notes.
|
|
168
158
|
*/
|
|
@@ -276,9 +266,16 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
276
266
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
277
267
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
278
268
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
279
|
-
await syncSenderTaggingIndexes(
|
|
280
|
-
|
|
281
|
-
|
|
269
|
+
await syncSenderTaggingIndexes(
|
|
270
|
+
secret,
|
|
271
|
+
this.contractAddress,
|
|
272
|
+
this.aztecNode,
|
|
273
|
+
this.senderTaggingStore,
|
|
274
|
+
await this.anchorBlockHeader.hash(),
|
|
275
|
+
this.jobId,
|
|
276
|
+
);
|
|
277
|
+
|
|
278
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
282
279
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
283
280
|
// Otherwise, the next index to use is one past the last used index
|
|
284
281
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -367,7 +364,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
367
364
|
|
|
368
365
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
369
366
|
|
|
370
|
-
const noteService = new NoteService(this.
|
|
367
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockStore, this.jobId);
|
|
371
368
|
const dbNotes = await noteService.getNotes(
|
|
372
369
|
this.callContext.contractAddress,
|
|
373
370
|
owner,
|
|
@@ -397,23 +394,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
397
394
|
.join(', ')}`,
|
|
398
395
|
);
|
|
399
396
|
|
|
400
|
-
const noteHashesAndIndexes = await Promise.all(
|
|
401
|
-
notes.map(async n => {
|
|
402
|
-
if (n.index !== undefined) {
|
|
403
|
-
const siloedNoteHash = await siloNoteHash(n.contractAddress, n.noteHash);
|
|
404
|
-
const uniqueNoteHash = await computeUniqueNoteHash(n.noteNonce, siloedNoteHash);
|
|
405
|
-
|
|
406
|
-
return { hash: uniqueNoteHash, index: n.index };
|
|
407
|
-
}
|
|
408
|
-
}),
|
|
409
|
-
);
|
|
410
|
-
|
|
411
|
-
noteHashesAndIndexes
|
|
412
|
-
.filter(n => n !== undefined)
|
|
413
|
-
.forEach(n => {
|
|
414
|
-
this.noteHashLeafIndexMap.set(n!.hash.toBigInt(), n!.index);
|
|
415
|
-
});
|
|
416
|
-
|
|
417
397
|
return notes;
|
|
418
398
|
}
|
|
419
399
|
|
|
@@ -456,6 +436,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
456
436
|
note,
|
|
457
437
|
siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
|
|
458
438
|
noteHash,
|
|
439
|
+
isPending: true, // This note has just been created and hence is not settled yet.
|
|
459
440
|
},
|
|
460
441
|
counter,
|
|
461
442
|
);
|
|
@@ -490,6 +471,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
490
471
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
491
472
|
}
|
|
492
473
|
|
|
474
|
+
/**
|
|
475
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
|
|
476
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
477
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
478
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
479
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
480
|
+
*/
|
|
481
|
+
public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
482
|
+
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
483
|
+
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
484
|
+
return Promise.resolve(isNullifierPending);
|
|
485
|
+
}
|
|
486
|
+
|
|
493
487
|
/**
|
|
494
488
|
* Emit a contract class log.
|
|
495
489
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -546,14 +540,16 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
546
540
|
|
|
547
541
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
548
542
|
|
|
549
|
-
await
|
|
543
|
+
await ensureContractSynced(
|
|
550
544
|
targetContractAddress,
|
|
545
|
+
functionSelector,
|
|
546
|
+
this.utilityExecutor,
|
|
551
547
|
this.aztecNode,
|
|
552
|
-
this.
|
|
548
|
+
this.contractStore,
|
|
553
549
|
this.anchorBlockHeader,
|
|
554
550
|
);
|
|
555
551
|
|
|
556
|
-
const targetArtifact = await this.
|
|
552
|
+
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
557
553
|
targetContractAddress,
|
|
558
554
|
functionSelector,
|
|
559
555
|
);
|
|
@@ -567,21 +563,24 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
567
563
|
derivedTxContext,
|
|
568
564
|
derivedCallContext,
|
|
569
565
|
this.anchorBlockHeader,
|
|
566
|
+
this.utilityExecutor,
|
|
570
567
|
this.authWitnesses,
|
|
571
568
|
this.capsules,
|
|
572
569
|
this.executionCache,
|
|
573
570
|
this.noteCache,
|
|
574
571
|
this.taggingIndexCache,
|
|
575
|
-
this.
|
|
576
|
-
this.
|
|
572
|
+
this.contractStore,
|
|
573
|
+
this.noteStore,
|
|
577
574
|
this.keyStore,
|
|
578
|
-
this.
|
|
575
|
+
this.addressStore,
|
|
579
576
|
this.aztecNode,
|
|
580
|
-
this.
|
|
581
|
-
this.
|
|
582
|
-
this.
|
|
583
|
-
this.
|
|
584
|
-
this.
|
|
577
|
+
this.anchorBlockStore,
|
|
578
|
+
this.senderTaggingStore,
|
|
579
|
+
this.recipientTaggingStore,
|
|
580
|
+
this.senderAddressBookStore,
|
|
581
|
+
this.capsuleStore,
|
|
582
|
+
this.privateEventStore,
|
|
583
|
+
this.jobId,
|
|
585
584
|
this.totalPublicCalldataCount,
|
|
586
585
|
sideEffectCounter,
|
|
587
586
|
this.log,
|
|
@@ -694,7 +693,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
694
693
|
}
|
|
695
694
|
|
|
696
695
|
public getDebugFunctionName() {
|
|
697
|
-
return this.
|
|
696
|
+
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
698
697
|
}
|
|
699
698
|
|
|
700
699
|
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|