@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
|
@@ -71,22 +71,23 @@ import {
|
|
|
71
71
|
getFinalMinRevertibleSideEffectCounter,
|
|
72
72
|
} from '@aztec/stdlib/tx';
|
|
73
73
|
|
|
74
|
-
import type {
|
|
75
|
-
import type {
|
|
76
|
-
import type {
|
|
77
|
-
import type {
|
|
78
|
-
import type {
|
|
79
|
-
import type {
|
|
80
|
-
import type {
|
|
81
|
-
import type {
|
|
74
|
+
import type { AddressStore } from '../storage/address_store/address_store.js';
|
|
75
|
+
import type { AnchorBlockStore } from '../storage/anchor_block_store/anchor_block_store.js';
|
|
76
|
+
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
77
|
+
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
78
|
+
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
79
|
+
import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
80
|
+
import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
|
|
81
|
+
import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
|
|
82
|
+
import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
|
|
83
|
+
import type { BenchmarkedNode } from './benchmarked_node.js';
|
|
82
84
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
83
85
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
84
86
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
85
87
|
import { Oracle } from './oracle/oracle.js';
|
|
86
|
-
import { executePrivateFunction
|
|
88
|
+
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
87
89
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
88
90
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
89
|
-
import type { ProxiedNode } from './proxied_node.js';
|
|
90
91
|
|
|
91
92
|
/**
|
|
92
93
|
* The contract function simulator.
|
|
@@ -95,16 +96,17 @@ export class ContractFunctionSimulator {
|
|
|
95
96
|
private log: Logger;
|
|
96
97
|
|
|
97
98
|
constructor(
|
|
98
|
-
private
|
|
99
|
-
private
|
|
99
|
+
private contractStore: ContractStore,
|
|
100
|
+
private noteStore: NoteStore,
|
|
100
101
|
private keyStore: KeyStore,
|
|
101
|
-
private
|
|
102
|
+
private addressStore: AddressStore,
|
|
102
103
|
private aztecNode: AztecNode,
|
|
103
|
-
private
|
|
104
|
-
private
|
|
105
|
-
private
|
|
106
|
-
private
|
|
107
|
-
private
|
|
104
|
+
private anchorBlockStore: AnchorBlockStore,
|
|
105
|
+
private senderTaggingStore: SenderTaggingStore,
|
|
106
|
+
private recipientTaggingStore: RecipientTaggingStore,
|
|
107
|
+
private senderAddressBookStore: SenderAddressBookStore,
|
|
108
|
+
private capsuleStore: CapsuleStore,
|
|
109
|
+
private privateEventStore: PrivateEventStore,
|
|
108
110
|
private simulator: CircuitSimulator,
|
|
109
111
|
) {
|
|
110
112
|
this.log = createLogger('simulator');
|
|
@@ -121,6 +123,7 @@ export class ContractFunctionSimulator {
|
|
|
121
123
|
* @param senderForTags - The address that is used as a tagging sender when emitting private logs. Returned from
|
|
122
124
|
* the `privateGetSenderForTags` oracle.
|
|
123
125
|
* @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
|
|
126
|
+
* @param jobId - The job ID for staged writes.
|
|
124
127
|
* @returns The result of the execution.
|
|
125
128
|
*/
|
|
126
129
|
public async run(
|
|
@@ -129,17 +132,13 @@ export class ContractFunctionSimulator {
|
|
|
129
132
|
selector: FunctionSelector,
|
|
130
133
|
msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
|
|
131
134
|
anchorBlockHeader: BlockHeader,
|
|
132
|
-
senderForTags
|
|
133
|
-
scopes
|
|
135
|
+
senderForTags: AztecAddress | undefined,
|
|
136
|
+
scopes: AztecAddress[] | undefined,
|
|
137
|
+
jobId: string,
|
|
134
138
|
): Promise<PrivateExecutionResult> {
|
|
135
139
|
const simulatorSetupTimer = new Timer();
|
|
136
140
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const entryPointArtifact = await this.contractDataProvider.getFunctionArtifactWithDebugMetadata(
|
|
140
|
-
contractAddress,
|
|
141
|
-
selector,
|
|
142
|
-
);
|
|
141
|
+
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
|
|
143
142
|
|
|
144
143
|
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
145
144
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
@@ -170,21 +169,26 @@ export class ContractFunctionSimulator {
|
|
|
170
169
|
request.txContext,
|
|
171
170
|
callContext,
|
|
172
171
|
anchorBlockHeader,
|
|
172
|
+
async call => {
|
|
173
|
+
await this.runUtility(call, [], anchorBlockHeader, scopes, jobId);
|
|
174
|
+
},
|
|
173
175
|
request.authWitnesses,
|
|
174
176
|
request.capsules,
|
|
175
177
|
HashedValuesCache.create(request.argsOfCalls),
|
|
176
178
|
noteCache,
|
|
177
179
|
taggingIndexCache,
|
|
178
|
-
this.
|
|
179
|
-
this.
|
|
180
|
+
this.contractStore,
|
|
181
|
+
this.noteStore,
|
|
180
182
|
this.keyStore,
|
|
181
|
-
this.
|
|
183
|
+
this.addressStore,
|
|
182
184
|
this.aztecNode,
|
|
183
|
-
this.
|
|
184
|
-
this.
|
|
185
|
-
this.
|
|
186
|
-
this.
|
|
187
|
-
this.
|
|
185
|
+
this.anchorBlockStore,
|
|
186
|
+
this.senderTaggingStore,
|
|
187
|
+
this.recipientTaggingStore,
|
|
188
|
+
this.senderAddressBookStore,
|
|
189
|
+
this.capsuleStore,
|
|
190
|
+
this.privateEventStore,
|
|
191
|
+
jobId,
|
|
188
192
|
0, // totalPublicArgsCount
|
|
189
193
|
startSideEffectCounter,
|
|
190
194
|
undefined, // log
|
|
@@ -208,8 +212,9 @@ export class ContractFunctionSimulator {
|
|
|
208
212
|
request.functionSelector,
|
|
209
213
|
);
|
|
210
214
|
const simulatorTeardownTimer = new Timer();
|
|
211
|
-
|
|
212
|
-
|
|
215
|
+
|
|
216
|
+
noteCache.finish();
|
|
217
|
+
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
213
218
|
|
|
214
219
|
const publicCallRequests = collectNested([executionResult], r =>
|
|
215
220
|
r.publicInputs.publicCallRequests
|
|
@@ -254,14 +259,10 @@ export class ContractFunctionSimulator {
|
|
|
254
259
|
call: FunctionCall,
|
|
255
260
|
authwits: AuthWitness[],
|
|
256
261
|
anchorBlockHeader: BlockHeader,
|
|
257
|
-
scopes
|
|
262
|
+
scopes: AztecAddress[] | undefined,
|
|
263
|
+
jobId: string,
|
|
258
264
|
): Promise<Fr[]> {
|
|
259
|
-
await
|
|
260
|
-
|
|
261
|
-
const entryPointArtifact = await this.contractDataProvider.getFunctionArtifactWithDebugMetadata(
|
|
262
|
-
call.to,
|
|
263
|
-
call.selector,
|
|
264
|
-
);
|
|
265
|
+
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
265
266
|
|
|
266
267
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
267
268
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
@@ -272,16 +273,17 @@ export class ContractFunctionSimulator {
|
|
|
272
273
|
authwits,
|
|
273
274
|
[],
|
|
274
275
|
anchorBlockHeader,
|
|
275
|
-
this.
|
|
276
|
-
this.
|
|
276
|
+
this.contractStore,
|
|
277
|
+
this.noteStore,
|
|
277
278
|
this.keyStore,
|
|
278
|
-
this.
|
|
279
|
+
this.addressStore,
|
|
279
280
|
this.aztecNode,
|
|
280
|
-
this.
|
|
281
|
-
this.
|
|
282
|
-
this.
|
|
283
|
-
this.
|
|
284
|
-
this.
|
|
281
|
+
this.anchorBlockStore,
|
|
282
|
+
this.recipientTaggingStore,
|
|
283
|
+
this.senderAddressBookStore,
|
|
284
|
+
this.capsuleStore,
|
|
285
|
+
this.privateEventStore,
|
|
286
|
+
jobId,
|
|
285
287
|
undefined,
|
|
286
288
|
scopes,
|
|
287
289
|
);
|
|
@@ -322,7 +324,12 @@ export class ContractFunctionSimulator {
|
|
|
322
324
|
*/
|
|
323
325
|
getStats() {
|
|
324
326
|
const nodeRPCCalls =
|
|
325
|
-
typeof (this.aztecNode as
|
|
327
|
+
typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
|
|
328
|
+
? (this.aztecNode as BenchmarkedNode).getStats()
|
|
329
|
+
: {
|
|
330
|
+
perMethod: {},
|
|
331
|
+
roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
|
|
332
|
+
};
|
|
326
333
|
|
|
327
334
|
return { nodeRPCCalls };
|
|
328
335
|
}
|
|
@@ -345,15 +352,15 @@ class OrderedSideEffect<T> {
|
|
|
345
352
|
* (allowing state overrides) and is much faster, while still generating a valid
|
|
346
353
|
* output that can be sent to the node for public simulation
|
|
347
354
|
* @param privateExecutionResult - The result of the private execution.
|
|
348
|
-
* @param
|
|
349
|
-
*
|
|
350
|
-
*
|
|
355
|
+
* @param contractStore - A provider for contract data in order to get function names and debug info.
|
|
356
|
+
* @param minRevertibleSideEffectCounterOverride - Optional override for the min revertible side effect counter.
|
|
357
|
+
* Used by TXE to simulate account contract behavior (setting the counter before app execution).
|
|
351
358
|
* @returns The simulated proving result.
|
|
352
359
|
*/
|
|
353
360
|
export async function generateSimulatedProvingResult(
|
|
354
361
|
privateExecutionResult: PrivateExecutionResult,
|
|
355
|
-
|
|
356
|
-
|
|
362
|
+
contractStore: ContractStore,
|
|
363
|
+
minRevertibleSideEffectCounterOverride?: number,
|
|
357
364
|
): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
358
365
|
const siloedNoteHashes: OrderedSideEffect<Fr>[] = [];
|
|
359
366
|
const nullifiers: OrderedSideEffect<Fr>[] = [];
|
|
@@ -430,7 +437,7 @@ export async function generateSimulatedProvingResult(
|
|
|
430
437
|
: execution.publicInputs.publicTeardownCallRequest;
|
|
431
438
|
|
|
432
439
|
executionSteps.push({
|
|
433
|
-
functionName: await
|
|
440
|
+
functionName: await contractStore.getDebugFunctionName(
|
|
434
441
|
execution.publicInputs.callContext.contractAddress,
|
|
435
442
|
execution.publicInputs.callContext.functionSelector,
|
|
436
443
|
),
|
|
@@ -457,16 +464,18 @@ export async function generateSimulatedProvingResult(
|
|
|
457
464
|
const getEffect = <T>(orderedSideEffect: OrderedSideEffect<T>) => orderedSideEffect.sideEffect;
|
|
458
465
|
|
|
459
466
|
const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
|
|
460
|
-
const minRevertibleSideEffectCounter =
|
|
467
|
+
const minRevertibleSideEffectCounter =
|
|
468
|
+
minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
|
|
461
469
|
|
|
462
470
|
const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(
|
|
463
471
|
nullifiers.sort(sortByCounter),
|
|
464
472
|
minRevertibleSideEffectCounter,
|
|
465
473
|
);
|
|
466
|
-
|
|
474
|
+
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
475
|
+
if (nonRevertibleNullifiers.length === 0) {
|
|
476
|
+
nonRevertibleNullifiers.push(nonceGenerator);
|
|
477
|
+
} else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
|
|
467
478
|
throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
|
|
468
|
-
} else {
|
|
469
|
-
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
470
479
|
}
|
|
471
480
|
|
|
472
481
|
if (isPrivateOnlyTx) {
|
|
@@ -502,6 +511,12 @@ export async function generateSimulatedProvingResult(
|
|
|
502
511
|
siloedNoteHashes.sort(sortByCounter),
|
|
503
512
|
minRevertibleSideEffectCounter,
|
|
504
513
|
);
|
|
514
|
+
const nonRevertibleUniqueNoteHashes = await Promise.all(
|
|
515
|
+
nonRevertibleNoteHashes.map(async (noteHash, i) => {
|
|
516
|
+
const nonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
517
|
+
return await computeUniqueNoteHash(nonce, noteHash);
|
|
518
|
+
}),
|
|
519
|
+
);
|
|
505
520
|
const [nonRevertibleL2ToL1Messages, revertibleL2ToL1Messages] = splitOrderedSideEffects(
|
|
506
521
|
l2ToL1Messages.sort(sortByCounter),
|
|
507
522
|
minRevertibleSideEffectCounter,
|
|
@@ -520,7 +535,7 @@ export async function generateSimulatedProvingResult(
|
|
|
520
535
|
);
|
|
521
536
|
|
|
522
537
|
const nonRevertibleData = new PrivateToPublicAccumulatedData(
|
|
523
|
-
padArrayEnd(
|
|
538
|
+
padArrayEnd(nonRevertibleUniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
|
|
524
539
|
padArrayEnd(nonRevertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
|
|
525
540
|
padArrayEnd(nonRevertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
|
|
526
541
|
padArrayEnd(nonRevertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
|
|
@@ -568,7 +583,7 @@ function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertib
|
|
|
568
583
|
const revertibleSideEffects: T[] = [];
|
|
569
584
|
const nonRevertibleSideEffects: T[] = [];
|
|
570
585
|
effects.forEach(effect => {
|
|
571
|
-
if (effect.counter < minRevertibleSideEffectCounter) {
|
|
586
|
+
if (minRevertibleSideEffectCounter === 0 || effect.counter < minRevertibleSideEffectCounter) {
|
|
572
587
|
nonRevertibleSideEffects.push(effect.sideEffect);
|
|
573
588
|
} else {
|
|
574
589
|
revertibleSideEffects.push(effect.sideEffect);
|
|
@@ -32,19 +32,22 @@ export class ExecutionNoteCache {
|
|
|
32
32
|
private nullifierMap: Map<bigint, Set<bigint>> = new Map();
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* Nullifiers emitted by private calls in this transaction.
|
|
36
36
|
*/
|
|
37
|
-
private
|
|
37
|
+
private emittedNullifiers: Set<bigint> = new Set();
|
|
38
38
|
|
|
39
|
+
/**
|
|
40
|
+
* The counter that separates non-revertible side effects (which persist even if the tx reverts) from revertible ones.
|
|
41
|
+
*/
|
|
39
42
|
private minRevertibleSideEffectCounter = 0;
|
|
40
43
|
|
|
41
44
|
private inRevertiblePhase = false;
|
|
42
45
|
|
|
43
46
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
47
|
+
* Whether the protocol nullifier was used for nonce generation.
|
|
48
|
+
* We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
|
|
46
49
|
*/
|
|
47
|
-
private usedProtocolNullifierForNonces
|
|
50
|
+
private usedProtocolNullifierForNonces: boolean | undefined;
|
|
48
51
|
|
|
49
52
|
constructor(private readonly protocolNullifier: Fr) {}
|
|
50
53
|
|
|
@@ -60,17 +63,18 @@ export class ExecutionNoteCache {
|
|
|
60
63
|
}
|
|
61
64
|
this.inRevertiblePhase = true;
|
|
62
65
|
this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
|
|
63
|
-
|
|
64
|
-
const nullifiers = this.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
|
|
67
|
+
const nullifiers = this.getEmittedNullifiers();
|
|
68
|
+
// If there are no nullifiers emitted by private calls so far, we use the protocol nullifier as the nonce generator.
|
|
69
|
+
// Note: There could still be nullifiers emitted after the counter is set, but those nullifiers are revertible, so
|
|
70
|
+
// we don't want to use them as the nonce generator.
|
|
71
|
+
this.usedProtocolNullifierForNonces = nullifiers.length === 0;
|
|
72
|
+
const nonceGenerator = this.usedProtocolNullifierForNonces ? this.protocolNullifier : new Fr(nullifiers[0]);
|
|
69
73
|
|
|
70
74
|
// The existing pending notes are all non-revertible.
|
|
71
75
|
// They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
|
|
72
76
|
// Their indexes in the tx are known at this point and won't change. So we can assign a nonce to each one of them.
|
|
73
|
-
// The nonces will be used to create the "
|
|
77
|
+
// The nonces will be used to create the "unique" note hashes.
|
|
74
78
|
const updatedNotes = await Promise.all(
|
|
75
79
|
this.notes.map(async ({ note, counter }, i) => {
|
|
76
80
|
const noteNonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
@@ -99,15 +103,11 @@ export class ExecutionNoteCache {
|
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
public finish() {
|
|
102
|
-
// If we never entered the revertible phase,
|
|
103
|
-
//
|
|
106
|
+
// If we never entered the revertible phase, and there are no nullifiers emitted, we need to use the protocol
|
|
107
|
+
// nullifier as the nonce generator.
|
|
104
108
|
if (!this.inRevertiblePhase) {
|
|
105
|
-
this.usedProtocolNullifierForNonces = this.
|
|
109
|
+
this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
|
|
106
110
|
}
|
|
107
|
-
// If we entered the revertible phase, the nonce generator was decided based on wether or not a nullifier was emitted before entering.
|
|
108
|
-
return {
|
|
109
|
-
usedProtocolNullifierForNonces: this.usedProtocolNullifierForNonces,
|
|
110
|
-
};
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
/**
|
|
@@ -150,11 +150,11 @@ export class ExecutionNoteCache {
|
|
|
150
150
|
|
|
151
151
|
// If the note is non revertible and the nullifier was emitted in the revertible phase, both the note hash and the nullifier will be emitted
|
|
152
152
|
if (this.inRevertiblePhase && note.counter < this.minRevertibleSideEffectCounter) {
|
|
153
|
-
this
|
|
153
|
+
this.#recordNullifier(contractAddress, siloedNullifier);
|
|
154
154
|
}
|
|
155
155
|
} else {
|
|
156
156
|
// If the note being nullified comes from a previous tx the nullifier will be emitted.
|
|
157
|
-
this
|
|
157
|
+
this.#recordNullifier(contractAddress, siloedNullifier);
|
|
158
158
|
}
|
|
159
159
|
return nullifiedNoteHashCounter;
|
|
160
160
|
}
|
|
@@ -166,7 +166,7 @@ export class ExecutionNoteCache {
|
|
|
166
166
|
*/
|
|
167
167
|
public async nullifierCreated(contractAddress: AztecAddress, innerNullifier: Fr) {
|
|
168
168
|
const siloedNullifier = (await siloNullifier(contractAddress, innerNullifier)).toBigInt();
|
|
169
|
-
this
|
|
169
|
+
this.#recordNullifier(contractAddress, siloedNullifier);
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
/**
|
|
@@ -215,11 +215,30 @@ export class ExecutionNoteCache {
|
|
|
215
215
|
return this.notes;
|
|
216
216
|
}
|
|
217
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
|
+
*/
|
|
218
229
|
getAllNullifiers(): Fr[] {
|
|
219
|
-
|
|
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];
|
|
220
239
|
}
|
|
221
240
|
|
|
222
|
-
recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
|
|
241
|
+
#recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
|
|
223
242
|
const nullifiers = this.getNullifiers(contractAddress);
|
|
224
243
|
|
|
225
244
|
if (nullifiers.has(siloedNullifier)) {
|
|
@@ -228,6 +247,6 @@ export class ExecutionNoteCache {
|
|
|
228
247
|
|
|
229
248
|
nullifiers.add(siloedNullifier);
|
|
230
249
|
this.nullifierMap.set(contractAddress.toBigInt(), nullifiers);
|
|
231
|
-
this.
|
|
250
|
+
this.emittedNullifiers.add(siloedNullifier);
|
|
232
251
|
}
|
|
233
252
|
}
|
|
@@ -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';
|
|
@@ -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,
|
|
@@ -7,7 +7,7 @@ import { TxHash } from '@aztec/stdlib/tx';
|
|
|
7
7
|
export const MAX_NOTE_PACKED_LEN = 10;
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* Intermediate struct used to perform batch note validation by PXE. The `
|
|
10
|
+
* Intermediate struct used to perform batch note validation by PXE. The `utilityValidateAndStoreEnqueuedNotesAndEvents` oracle
|
|
11
11
|
* expects for values of this type to be stored in a `CapsuleArray`.
|
|
12
12
|
*/
|
|
13
13
|
export class NoteValidationRequest {
|
|
@@ -1,42 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { FieldsOf } from '@aztec/foundation/types';
|
|
1
|
+
import { toACVMField } from '@aztec/simulator/client';
|
|
3
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
-
import type {
|
|
3
|
+
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* TypeScript counterpart of utility_context.nr. Used only as a return value for the utilityGetUtilityContext oracle.
|
|
8
7
|
*/
|
|
9
8
|
export class UtilityContext {
|
|
10
|
-
|
|
11
|
-
public readonly
|
|
12
|
-
public readonly timestamp: UInt64,
|
|
9
|
+
constructor(
|
|
10
|
+
public readonly blockHeader: BlockHeader,
|
|
13
11
|
public readonly contractAddress: AztecAddress,
|
|
14
|
-
public readonly version: Fr,
|
|
15
|
-
public readonly chainId: Fr,
|
|
16
12
|
) {}
|
|
17
13
|
|
|
18
|
-
static from(fields: FieldsOf<UtilityContext>) {
|
|
19
|
-
return new UtilityContext(
|
|
20
|
-
fields.blockNumber,
|
|
21
|
-
fields.timestamp,
|
|
22
|
-
fields.contractAddress,
|
|
23
|
-
fields.version,
|
|
24
|
-
fields.chainId,
|
|
25
|
-
);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
14
|
/**
|
|
29
15
|
* Returns a representation of the utility context as expected by intrinsic Noir deserialization.
|
|
30
16
|
* The order of the fields has to be the same as the order of the fields in the utility_context.nr.
|
|
31
17
|
*/
|
|
32
18
|
public toNoirRepresentation(): (string | string[])[] {
|
|
33
19
|
// TODO(#12874): remove the stupid as string conversion by modifying ForeignCallOutput type in acvm.js
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
new Fr(this.timestamp).toString() as string,
|
|
37
|
-
this.contractAddress.toString() as string,
|
|
38
|
-
this.version.toString() as string,
|
|
39
|
-
this.chainId.toString() as string,
|
|
40
|
-
];
|
|
20
|
+
const blockHeaderFields = this.blockHeader.toFields().map(toACVMField);
|
|
21
|
+
return [...blockHeaderFields, this.contractAddress.toString() as string];
|
|
41
22
|
}
|
|
42
23
|
}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import type { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
|
|
1
|
+
import type { ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, NOTE_HASH_TREE_HEIGHT } from '@aztec/constants';
|
|
2
2
|
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { Point } from '@aztec/foundation/curves/grumpkin';
|
|
5
|
+
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
5
6
|
import type { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
6
7
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
8
|
+
import { L2BlockHash } from '@aztec/stdlib/block';
|
|
7
9
|
import type { CompleteAddress, ContractInstance } from '@aztec/stdlib/contract';
|
|
8
10
|
import type { KeyValidationRequest } from '@aztec/stdlib/kernel';
|
|
9
11
|
import type { ContractClassLog, Tag } from '@aztec/stdlib/logs';
|
|
10
12
|
import type { Note, NoteStatus } from '@aztec/stdlib/note';
|
|
11
|
-
import { type
|
|
13
|
+
import { type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
12
14
|
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
13
15
|
|
|
14
16
|
import type { UtilityContext } from '../noir-structs/utility_context.js';
|
|
@@ -32,10 +34,10 @@ export interface NoteData {
|
|
|
32
34
|
noteNonce: Fr;
|
|
33
35
|
/** A hash of the note as it gets stored in the note hash tree. */
|
|
34
36
|
noteHash: Fr;
|
|
37
|
+
/** True if the note is pending, false if settled. */
|
|
38
|
+
isPending: boolean;
|
|
35
39
|
/** The corresponding nullifier of the note. Undefined for pending notes. */
|
|
36
40
|
siloedNullifier?: Fr;
|
|
37
|
-
/** The note's leaf index in the note hash tree. Undefined for pending notes. */
|
|
38
|
-
index?: bigint;
|
|
39
41
|
}
|
|
40
42
|
|
|
41
43
|
// These interfaces contain the list of oracles required by aztec-nr in order to simulate and execute transactions, i.e.
|
|
@@ -65,14 +67,21 @@ export interface IUtilityExecutionOracle {
|
|
|
65
67
|
utilityGetUtilityContext(): UtilityContext;
|
|
66
68
|
utilityGetKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest>;
|
|
67
69
|
utilityGetContractInstance(address: AztecAddress): Promise<ContractInstance>;
|
|
68
|
-
|
|
70
|
+
utilityGetNoteHashMembershipWitness(
|
|
71
|
+
blockHash: L2BlockHash,
|
|
72
|
+
leafValue: Fr,
|
|
73
|
+
): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT> | undefined>;
|
|
74
|
+
utilityGetArchiveMembershipWitness(
|
|
75
|
+
blockHash: L2BlockHash,
|
|
76
|
+
leafValue: Fr,
|
|
77
|
+
): Promise<MembershipWitness<typeof ARCHIVE_HEIGHT> | undefined>;
|
|
69
78
|
utilityGetNullifierMembershipWitness(
|
|
70
|
-
|
|
79
|
+
blockHash: L2BlockHash,
|
|
71
80
|
nullifier: Fr,
|
|
72
81
|
): Promise<NullifierMembershipWitness | undefined>;
|
|
73
|
-
utilityGetPublicDataWitness(
|
|
82
|
+
utilityGetPublicDataWitness(blockHash: L2BlockHash, leafSlot: Fr): Promise<PublicDataWitness | undefined>;
|
|
74
83
|
utilityGetLowNullifierMembershipWitness(
|
|
75
|
-
|
|
84
|
+
blockHash: L2BlockHash,
|
|
76
85
|
nullifier: Fr,
|
|
77
86
|
): Promise<NullifierMembershipWitness | undefined>;
|
|
78
87
|
utilityGetBlockHeader(blockNumber: BlockNumber): Promise<BlockHeader | undefined>;
|
|
@@ -102,13 +111,13 @@ export interface IUtilityExecutionOracle {
|
|
|
102
111
|
secret: Fr,
|
|
103
112
|
): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
|
|
104
113
|
utilityStorageRead(
|
|
114
|
+
blockHash: L2BlockHash,
|
|
105
115
|
contractAddress: AztecAddress,
|
|
106
116
|
startStorageSlot: Fr,
|
|
107
|
-
blockNumber: BlockNumber,
|
|
108
117
|
numberOfElements: number,
|
|
109
118
|
): Promise<Fr[]>;
|
|
110
119
|
utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr): Promise<void>;
|
|
111
|
-
|
|
120
|
+
utilityValidateAndStoreEnqueuedNotesAndEvents(
|
|
112
121
|
contractAddress: AztecAddress,
|
|
113
122
|
noteValidationRequestsArrayBaseSlot: Fr,
|
|
114
123
|
eventValidationRequestsArrayBaseSlot: Fr,
|
|
@@ -146,6 +155,7 @@ export interface IPrivateExecutionOracle {
|
|
|
146
155
|
): void;
|
|
147
156
|
privateNotifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number): Promise<void>;
|
|
148
157
|
privateNotifyCreatedNullifier(innerNullifier: Fr): Promise<void>;
|
|
158
|
+
privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean>;
|
|
149
159
|
privateNotifyCreatedContractClassLog(log: ContractClassLog, counter: number): void;
|
|
150
160
|
privateCallPrivateFunction(
|
|
151
161
|
targetContractAddress: AztecAddress,
|
|
@@ -18,27 +18,27 @@ function fromRawData(nonzeroNoteHashCounter: boolean, maybeNoteNonce: Fr): { sta
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
-
* Packs a note in a format that is compatible with the default Packable implementation of the
|
|
21
|
+
* Packs a note in a format that is compatible with the default Packable implementation of the hinted note.
|
|
22
22
|
*
|
|
23
23
|
* @dev Unlike the default Packable implementation, this function first constructs the note metadata from the inputs
|
|
24
|
-
* and only after that it packs the
|
|
24
|
+
* and only after that it packs the hinted note. Hence it doesn't map one to one with `HintedNote::pack()`.
|
|
25
25
|
*
|
|
26
26
|
* @param contractAddress - The address of the contract that owns the note
|
|
27
27
|
* @param owner - The owner of the note
|
|
28
28
|
* @param randomness - The randomness injected into the note to get the hiding property of commitments
|
|
29
29
|
* @param storageSlot - The storage slot of the note
|
|
30
30
|
* @param noteNonce - The nonce injected into the note hash preimage by kernels.
|
|
31
|
-
* @param
|
|
31
|
+
* @param isPending - True if the note is pending, false if settled
|
|
32
32
|
* @param note - The note content containing the actual note data
|
|
33
33
|
* @returns The packed note as an array of field elements
|
|
34
34
|
*/
|
|
35
|
-
export function
|
|
35
|
+
export function packAsHintedNote({
|
|
36
36
|
contractAddress,
|
|
37
37
|
owner,
|
|
38
38
|
randomness,
|
|
39
39
|
storageSlot,
|
|
40
40
|
noteNonce,
|
|
41
|
-
|
|
41
|
+
isPending,
|
|
42
42
|
note,
|
|
43
43
|
}: {
|
|
44
44
|
contractAddress: AztecAddress;
|
|
@@ -46,14 +46,14 @@ export function packAsRetrievedNote({
|
|
|
46
46
|
randomness: Fr;
|
|
47
47
|
storageSlot: Fr;
|
|
48
48
|
noteNonce: Fr;
|
|
49
|
-
|
|
49
|
+
isPending: boolean;
|
|
50
50
|
note: Note;
|
|
51
51
|
}) {
|
|
52
|
-
// If
|
|
53
|
-
const
|
|
52
|
+
// If the note is pending it means it has a non-zero note hash counter associated with it.
|
|
53
|
+
const nonZeroNoteHashCounter = isPending;
|
|
54
54
|
|
|
55
|
-
// To pack the note as
|
|
56
|
-
const noteMetadata = fromRawData(
|
|
55
|
+
// To pack the note as hinted note we first need to reconstruct the note metadata.
|
|
56
|
+
const noteMetadata = fromRawData(nonZeroNoteHashCounter, noteNonce);
|
|
57
57
|
|
|
58
58
|
// Pack in order: note, contract_address, owner, randomness, storage_slot, metadata (stage, maybe_note_nonce)
|
|
59
59
|
return [
|