@aztec/pxe 0.0.1-commit.b655e406 → 0.0.1-commit.c0b82b2
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/access_scopes.d.ts +9 -0
- package/dest/access_scopes.d.ts.map +1 -0
- package/dest/access_scopes.js +6 -0
- package/dest/bin/check_oracle_version.d.ts +1 -1
- package/dest/bin/check_oracle_version.js +105 -15
- package/dest/block_synchronizer/block_synchronizer.d.ts +45 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/block_synchronizer/block_synchronizer.js +153 -0
- package/dest/block_synchronizer/index.d.ts +2 -0
- package/dest/block_synchronizer/index.d.ts.map +1 -0
- package/dest/block_synchronizer/index.js +1 -0
- package/dest/config/index.d.ts +6 -12
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +24 -13
- package/dest/config/package_info.d.ts +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/benchmarked_node.js +77 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +78 -26
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +226 -82
- package/dest/contract_function_simulator/execution_note_cache.d.ts +25 -14
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +59 -34
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +6 -6
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +4 -4
- package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
- package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.d.ts +2 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -4
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -4
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +3 -3
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +7 -5
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +13 -4
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
- package/dest/contract_function_simulator/oracle/index.d.ts +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +30 -20
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +2 -2
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +14 -8
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +16 -11
- package/dest/contract_function_simulator/oracle/oracle.d.ts +15 -12
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +93 -53
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -27
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +2 -38
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +56 -52
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +120 -66
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +114 -39
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +214 -86
- package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
- package/dest/contract_logging.d.ts +22 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +23 -0
- package/dest/contract_sync/contract_sync_service.d.ts +43 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +97 -0
- package/dest/contract_sync/helpers.d.ts +29 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/helpers.js +55 -0
- package/dest/debug/pxe_debug_utils.d.ts +45 -0
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
- package/dest/debug/pxe_debug_utils.js +48 -0
- package/dest/entrypoints/client/bundle/index.d.ts +4 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +3 -1
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +33 -10
- package/dest/entrypoints/client/lazy/index.d.ts +4 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +3 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +34 -11
- package/dest/entrypoints/pxe_creation_options.d.ts +7 -3
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +6 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +5 -1
- package/dest/entrypoints/server/utils.d.ts +1 -1
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +40 -28
- package/dest/error_enriching.d.ts +4 -4
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +6 -6
- package/dest/events/event_service.d.ts +15 -0
- package/dest/events/event_service.d.ts.map +1 -0
- package/dest/events/event_service.js +44 -0
- package/dest/events/index.d.ts +2 -0
- package/dest/events/index.d.ts.map +1 -0
- package/dest/events/index.js +1 -0
- package/dest/events/private_event_filter_validator.d.ts +9 -0
- package/dest/events/private_event_filter_validator.d.ts.map +1 -0
- package/dest/events/private_event_filter_validator.js +38 -0
- package/dest/job_coordinator/job_coordinator.d.ts +75 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +94 -0
- package/dest/logs/log_service.d.ts +29 -0
- package/dest/logs/log_service.d.ts.map +1 -0
- package/dest/logs/log_service.js +118 -0
- package/dest/notes/index.d.ts +2 -0
- package/dest/notes/index.d.ts.map +1 -0
- package/dest/notes/index.js +1 -0
- package/dest/notes/note_service.d.ts +49 -0
- package/dest/notes/note_service.d.ts.map +1 -0
- package/dest/notes/note_service.js +148 -0
- package/dest/notes_filter.d.ts +25 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +4 -3
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
- package/dest/private_kernel/hints/index.d.ts +3 -3
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +2 -2
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -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} +144 -77
- package/dest/private_kernel/hints/test_utils.d.ts +122 -0
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
- package/dest/private_kernel/hints/test_utils.js +203 -0
- package/dest/private_kernel/index.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +33 -25
- package/dest/private_kernel/private_kernel_oracle.d.ts +26 -25
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +94 -2
- package/dest/pxe.d.ts +121 -103
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +268 -279
- package/dest/storage/address_store/address_store.d.ts +11 -0
- package/dest/storage/address_store/address_store.d.ts.map +1 -0
- package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -12
- package/dest/storage/address_store/index.d.ts +2 -0
- package/dest/storage/address_store/index.d.ts.map +1 -0
- package/dest/storage/address_store/index.js +1 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
- package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +10 -10
- package/dest/storage/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 +253 -0
- package/dest/storage/capsule_store/index.d.ts +2 -0
- package/dest/storage/capsule_store/index.d.ts.map +1 -0
- package/dest/storage/capsule_store/index.js +1 -0
- package/dest/storage/contract_store/contract_store.d.ts +93 -0
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
- package/dest/storage/contract_store/contract_store.js +309 -0
- package/dest/storage/contract_store/index.d.ts +2 -0
- package/dest/storage/contract_store/index.d.ts.map +1 -0
- package/dest/storage/contract_store/index.js +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
- package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
- package/dest/storage/index.d.ts +8 -8
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +7 -7
- package/dest/storage/metadata.d.ts +2 -2
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/index.d.ts +3 -0
- package/dest/storage/note_store/index.d.ts.map +1 -0
- package/dest/storage/note_store/index.js +2 -0
- package/dest/storage/note_store/note_store.d.ts +83 -0
- package/dest/storage/note_store/note_store.d.ts.map +1 -0
- package/dest/storage/note_store/note_store.js +343 -0
- package/dest/storage/note_store/stored_note.d.ts +16 -0
- package/dest/storage/note_store/stored_note.d.ts.map +1 -0
- package/dest/storage/note_store/stored_note.js +43 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
- package/dest/storage/private_event_store/private_event_store.js +273 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
- package/dest/storage/private_event_store/stored_private_event.js +56 -0
- package/dest/storage/tagging_store/index.d.ts +4 -0
- package/dest/storage/tagging_store/index.d.ts.map +1 -0
- package/dest/storage/tagging_store/index.js +3 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_address_book_store.js +36 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +77 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_tagging_store.js +348 -0
- package/dest/tagging/constants.d.ts +2 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +10 -2
- package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
- package/dest/tagging/get_all_logs_by_tags.js +60 -0
- package/dest/tagging/index.d.ts +16 -6
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +15 -5
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +14 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +14 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +33 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +17 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +71 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +29 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +18 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +59 -0
- package/package.json +29 -19
- package/src/access_scopes.ts +9 -0
- package/src/bin/check_oracle_version.ts +131 -20
- package/src/block_synchronizer/block_synchronizer.ts +178 -0
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +24 -25
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +396 -116
- package/src/contract_function_simulator/execution_note_cache.ts +58 -28
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +6 -6
- package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
- package/src/contract_function_simulator/index.ts +1 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +7 -3
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -2
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +15 -3
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +43 -18
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +30 -14
- package/src/contract_function_simulator/oracle/oracle.ts +111 -49
- package/src/contract_function_simulator/oracle/private_execution.ts +2 -68
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +166 -98
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +350 -91
- package/src/contract_function_simulator/pick_notes.ts +1 -1
- package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
- package/src/contract_logging.ts +39 -0
- package/src/contract_sync/contract_sync_service.ts +152 -0
- package/src/contract_sync/helpers.ts +98 -0
- package/src/debug/pxe_debug_utils.ts +93 -0
- package/src/entrypoints/client/bundle/index.ts +3 -1
- package/src/entrypoints/client/bundle/utils.ts +25 -18
- package/src/entrypoints/client/lazy/index.ts +3 -1
- package/src/entrypoints/client/lazy/utils.ts +26 -19
- package/src/entrypoints/pxe_creation_options.ts +6 -2
- package/src/entrypoints/server/index.ts +5 -1
- package/src/entrypoints/server/utils.ts +34 -56
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +71 -0
- package/src/events/index.ts +1 -0
- package/src/events/private_event_filter_validator.ts +46 -0
- package/src/job_coordinator/job_coordinator.ts +150 -0
- package/src/logs/log_service.ts +213 -0
- package/src/notes/index.ts +1 -0
- package/src/notes/note_service.ts +196 -0
- package/src/notes_filter.ts +26 -0
- package/src/oracle_version.ts +4 -3
- package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
- package/src/private_kernel/hints/index.ts +2 -2
- package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +199 -145
- package/src/private_kernel/hints/test_utils.ts +325 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +38 -34
- package/src/private_kernel/private_kernel_oracle.ts +118 -37
- package/src/pxe.ts +410 -382
- package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +16 -16
- package/src/storage/address_store/index.ts +1 -0
- package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +10 -11
- package/src/storage/anchor_block_store/index.ts +1 -0
- package/src/storage/capsule_store/capsule_store.ts +315 -0
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/contract_store/contract_store.ts +429 -0
- package/src/storage/contract_store/index.ts +1 -0
- package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
- package/src/storage/index.ts +7 -7
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/note_store/note_store.ts +418 -0
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +384 -0
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/index.ts +3 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +143 -0
- package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
- package/src/storage/tagging_store/sender_tagging_store.ts +429 -0
- package/src/tagging/constants.ts +10 -2
- package/src/tagging/get_all_logs_by_tags.ts +92 -0
- package/src/tagging/index.ts +18 -5
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +140 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +44 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +94 -0
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +36 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +75 -0
- package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -274
- package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
- package/dest/contract_function_simulator/execution_data_provider.js +0 -14
- package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
- package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_node.js +0 -27
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
- package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -701
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -45
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
- package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
- package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.d.ts +0 -2
- package/dest/storage/address_data_provider/index.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.js +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -118
- package/dest/storage/capsule_data_provider/index.d.ts +0 -2
- package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts +0 -74
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/contract_data_provider.js +0 -205
- package/dest/storage/contract_data_provider/index.d.ts +0 -2
- package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.d.ts +0 -3
- package/dest/storage/note_data_provider/index.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.js +0 -2
- package/dest/storage/note_data_provider/note_dao.d.ts +0 -100
- package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_dao.js +0 -102
- package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -83
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_data_provider.js +0 -308
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -43
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -104
- package/dest/storage/sync_data_provider/index.d.ts +0 -2
- package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/index.js +0 -1
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -10
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.d.ts +0 -2
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
- package/dest/synchronizer/index.d.ts +0 -2
- package/dest/synchronizer/index.d.ts.map +0 -1
- package/dest/synchronizer/index.js +0 -1
- package/dest/synchronizer/synchronizer.d.ts +0 -35
- package/dest/synchronizer/synchronizer.d.ts.map +0 -1
- package/dest/synchronizer/synchronizer.js +0 -101
- package/dest/tagging/siloed_tag.d.ts +0 -14
- package/dest/tagging/siloed_tag.d.ts.map +0 -1
- package/dest/tagging/siloed_tag.js +0 -20
- package/dest/tagging/tag.d.ts +0 -12
- package/dest/tagging/tag.d.ts.map +0 -1
- package/dest/tagging/tag.js +0 -17
- package/dest/tagging/utils.d.ts +0 -18
- package/dest/tagging/utils.d.ts.map +0 -1
- package/dest/tagging/utils.js +0 -24
- package/src/contract_function_simulator/execution_data_provider.ts +0 -343
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1019
- package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
- package/src/storage/address_data_provider/index.ts +0 -1
- package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -147
- package/src/storage/capsule_data_provider/index.ts +0 -1
- package/src/storage/contract_data_provider/contract_data_provider.ts +0 -294
- package/src/storage/contract_data_provider/index.ts +0 -1
- package/src/storage/note_data_provider/index.ts +0 -2
- package/src/storage/note_data_provider/note_dao.ts +0 -154
- package/src/storage/note_data_provider/note_data_provider.ts +0 -393
- package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -148
- package/src/storage/sync_data_provider/index.ts +0 -1
- package/src/storage/tagging_data_provider/index.ts +0 -1
- package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
- package/src/synchronizer/index.ts +0 -1
- package/src/synchronizer/synchronizer.ts +0 -120
- package/src/tagging/siloed_tag.ts +0 -22
- package/src/tagging/tag.ts +0 -16
- package/src/tagging/utils.ts +0 -31
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
} from '@aztec/constants';
|
|
10
10
|
import { makeTuple } from '@aztec/foundation/array';
|
|
11
11
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
12
|
-
import type { Fr } from '@aztec/foundation/
|
|
13
|
-
import {
|
|
12
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
13
|
+
import { assertLength } from '@aztec/foundation/serialize';
|
|
14
14
|
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
15
15
|
import { privateKernelResetDimensionsConfig } from '@aztec/noir-protocol-circuits-types/client';
|
|
16
16
|
import {
|
|
@@ -24,17 +24,14 @@ import {
|
|
|
24
24
|
PrivateKernelResetDimensions,
|
|
25
25
|
PrivateKernelResetHints,
|
|
26
26
|
type PrivateKernelSimulateOutput,
|
|
27
|
-
type ReadRequest,
|
|
28
27
|
ReadRequestActionEnum,
|
|
29
28
|
ReadRequestResetActions,
|
|
30
|
-
type
|
|
31
|
-
ScopedNoteHash,
|
|
32
|
-
ScopedNullifier,
|
|
33
|
-
ScopedReadRequest,
|
|
29
|
+
type ScopedKeyValidationRequestAndSeparator,
|
|
34
30
|
TransientDataSquashingHint,
|
|
35
31
|
buildNoteHashReadRequestHintsFromResetActions,
|
|
36
32
|
buildNullifierReadRequestHintsFromResetActions,
|
|
37
33
|
buildTransientDataHints,
|
|
34
|
+
countSquashedLogs,
|
|
38
35
|
findPrivateKernelResetDimensions,
|
|
39
36
|
getNoteHashReadRequestResetActions,
|
|
40
37
|
getNullifierReadRequestResetActions,
|
|
@@ -45,17 +42,6 @@ import { VkData } from '@aztec/stdlib/vks';
|
|
|
45
42
|
|
|
46
43
|
import type { PrivateKernelOracle } from '../private_kernel_oracle.js';
|
|
47
44
|
|
|
48
|
-
function collectNestedReadRequests<N extends number>(
|
|
49
|
-
executionStack: PrivateCallExecutionResult[],
|
|
50
|
-
extractReadRequests: (execution: PrivateCallExecutionResult) => ClaimedLengthArray<ReadRequest, N>,
|
|
51
|
-
): ScopedReadRequest[] {
|
|
52
|
-
return collectNested(executionStack, executionResult => {
|
|
53
|
-
return extractReadRequests(executionResult)
|
|
54
|
-
.getActiveItems()
|
|
55
|
-
.map(readRequest => new ScopedReadRequest(readRequest, executionResult.publicInputs.callContext.contractAddress));
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
|
|
59
45
|
function getNullifierMembershipWitnessResolver(oracle: PrivateKernelOracle) {
|
|
60
46
|
return async (nullifier: Fr) => {
|
|
61
47
|
const res = await oracle.getNullifierMembershipWitness(nullifier);
|
|
@@ -71,9 +57,9 @@ function getNullifierMembershipWitnessResolver(oracle: PrivateKernelOracle) {
|
|
|
71
57
|
};
|
|
72
58
|
}
|
|
73
59
|
|
|
74
|
-
async function
|
|
60
|
+
async function getMasterSecretKeysAndKeyTypeDomainSeparators(
|
|
75
61
|
keyValidationRequests: ClaimedLengthArray<
|
|
76
|
-
|
|
62
|
+
ScopedKeyValidationRequestAndSeparator,
|
|
77
63
|
typeof MAX_KEY_VALIDATION_REQUESTS_PER_TX
|
|
78
64
|
>,
|
|
79
65
|
numRequestsToVerify: number,
|
|
@@ -94,34 +80,34 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
94
80
|
// If there's no next iteration, it's the final reset.
|
|
95
81
|
private nextIteration?: PrivateCircuitPublicInputs;
|
|
96
82
|
|
|
97
|
-
private noteHashResetActions
|
|
98
|
-
private nullifierResetActions
|
|
83
|
+
private noteHashResetActions = ReadRequestResetActions.empty(MAX_NOTE_HASH_READ_REQUESTS_PER_TX);
|
|
84
|
+
private nullifierResetActions = ReadRequestResetActions.empty(MAX_NULLIFIER_READ_REQUESTS_PER_TX);
|
|
99
85
|
private numTransientData?: number;
|
|
100
|
-
private transientDataSquashingHints
|
|
101
|
-
|
|
86
|
+
private transientDataSquashingHints = makeTuple(
|
|
87
|
+
MAX_NULLIFIERS_PER_TX,
|
|
88
|
+
() => new TransientDataSquashingHint(MAX_NULLIFIERS_PER_TX, MAX_NOTE_HASHES_PER_TX),
|
|
89
|
+
);
|
|
90
|
+
private requestedDimensions = PrivateKernelResetDimensions.empty();
|
|
102
91
|
|
|
103
92
|
constructor(
|
|
104
93
|
private previousKernelOutput: PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>,
|
|
105
94
|
private executionStack: PrivateCallExecutionResult[],
|
|
106
95
|
private noteHashNullifierCounterMap: Map<number, number>,
|
|
107
|
-
private
|
|
96
|
+
private splitCounter: number,
|
|
108
97
|
) {
|
|
109
98
|
this.previousKernel = previousKernelOutput.publicInputs;
|
|
110
|
-
this.requestedDimensions = PrivateKernelResetDimensions.empty();
|
|
111
|
-
this.noteHashResetActions = ReadRequestResetActions.empty(MAX_NOTE_HASH_READ_REQUESTS_PER_TX);
|
|
112
|
-
this.nullifierResetActions = ReadRequestResetActions.empty(MAX_NULLIFIER_READ_REQUESTS_PER_TX);
|
|
113
|
-
this.transientDataSquashingHints = makeTuple(
|
|
114
|
-
MAX_NULLIFIERS_PER_TX,
|
|
115
|
-
() => new TransientDataSquashingHint(MAX_NULLIFIERS_PER_TX, MAX_NOTE_HASHES_PER_TX),
|
|
116
|
-
);
|
|
117
99
|
this.nextIteration = executionStack[this.executionStack.length - 1]?.publicInputs;
|
|
118
100
|
}
|
|
119
101
|
|
|
102
|
+
getRequestedDimensions(): PrivateKernelResetDimensions {
|
|
103
|
+
return this.requestedDimensions;
|
|
104
|
+
}
|
|
105
|
+
|
|
120
106
|
needsReset(): boolean {
|
|
121
107
|
const fns: (() => boolean)[] = [
|
|
122
108
|
() => this.needsResetNoteHashReadRequests(),
|
|
123
109
|
() => this.needsResetNullifierReadRequests(),
|
|
124
|
-
() => this.
|
|
110
|
+
() => this.needsResetKeyValidationRequests(),
|
|
125
111
|
() => this.needsResetTransientData(),
|
|
126
112
|
];
|
|
127
113
|
|
|
@@ -141,15 +127,14 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
141
127
|
}
|
|
142
128
|
}
|
|
143
129
|
|
|
144
|
-
async build(oracle: PrivateKernelOracle
|
|
130
|
+
async build(oracle: PrivateKernelOracle) {
|
|
145
131
|
if (privateKernelResetDimensionNames.every(name => !this.requestedDimensions[name])) {
|
|
146
132
|
throw new Error('Reset is not required.');
|
|
147
133
|
}
|
|
148
134
|
|
|
149
135
|
const isInner = !!this.nextIteration;
|
|
150
136
|
|
|
151
|
-
// "final" reset must be done
|
|
152
|
-
// Because the code that silo note hashes can't be run repeatedly.
|
|
137
|
+
// "final" reset must be done exactly once, because siloing can't be run repeatedly.
|
|
153
138
|
// The dimensions found must be big enough to reset all values, i.e. empty remainder.
|
|
154
139
|
const allowRemainder = isInner;
|
|
155
140
|
|
|
@@ -160,16 +145,6 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
160
145
|
allowRemainder,
|
|
161
146
|
);
|
|
162
147
|
|
|
163
|
-
const previousVkMembershipWitness = await oracle.getVkMembershipWitness(
|
|
164
|
-
this.previousKernelOutput.verificationKey.keyAsFields,
|
|
165
|
-
);
|
|
166
|
-
const vkData = new VkData(
|
|
167
|
-
this.previousKernelOutput.verificationKey,
|
|
168
|
-
Number(previousVkMembershipWitness.leafIndex),
|
|
169
|
-
previousVkMembershipWitness.siblingPath,
|
|
170
|
-
);
|
|
171
|
-
const previousKernelData = new PrivateKernelData(this.previousKernelOutput.publicInputs, vkData);
|
|
172
|
-
|
|
173
148
|
this.reduceReadRequestActions(
|
|
174
149
|
this.noteHashResetActions,
|
|
175
150
|
dimensions.NOTE_HASH_PENDING_READ,
|
|
@@ -181,32 +156,52 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
181
156
|
dimensions.NULLIFIER_SETTLED_READ,
|
|
182
157
|
);
|
|
183
158
|
|
|
184
|
-
//
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
159
|
+
// Execute all the expensive node querying operations in parallel.
|
|
160
|
+
const [previousVkMembershipWitness, noteHashReadRequestHints, nullifierReadRequestHints, keyValidationHints] =
|
|
161
|
+
await Promise.all([
|
|
162
|
+
oracle.getVkMembershipWitness(this.previousKernelOutput.verificationKey.keyAsFields),
|
|
163
|
+
buildNoteHashReadRequestHintsFromResetActions<
|
|
164
|
+
typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
|
|
165
|
+
typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX
|
|
166
|
+
>(
|
|
192
167
|
oracle,
|
|
193
168
|
this.previousKernel.validationRequests.noteHashReadRequests,
|
|
194
169
|
this.previousKernel.end.noteHashes,
|
|
195
170
|
this.noteHashResetActions,
|
|
196
|
-
noteHashLeafIndexMap,
|
|
197
171
|
),
|
|
198
|
-
|
|
172
|
+
buildNullifierReadRequestHintsFromResetActions<
|
|
173
|
+
typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX,
|
|
174
|
+
typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX
|
|
175
|
+
>(
|
|
199
176
|
{ getNullifierMembershipWitness: getNullifierMembershipWitnessResolver(oracle) },
|
|
200
177
|
this.previousKernel.validationRequests.nullifierReadRequests,
|
|
201
178
|
this.nullifierResetActions,
|
|
202
179
|
),
|
|
203
|
-
|
|
204
|
-
this.previousKernel.validationRequests.
|
|
180
|
+
getMasterSecretKeysAndKeyTypeDomainSeparators(
|
|
181
|
+
this.previousKernel.validationRequests.scopedKeyValidationRequestsAndSeparators,
|
|
205
182
|
dimensions.KEY_VALIDATION,
|
|
206
183
|
oracle,
|
|
207
184
|
),
|
|
185
|
+
]);
|
|
186
|
+
|
|
187
|
+
const vkData = new VkData(
|
|
188
|
+
this.previousKernelOutput.verificationKey,
|
|
189
|
+
Number(previousVkMembershipWitness.leafIndex),
|
|
190
|
+
previousVkMembershipWitness.siblingPath,
|
|
191
|
+
);
|
|
192
|
+
const previousKernelData = new PrivateKernelData(this.previousKernelOutput.publicInputs, vkData);
|
|
193
|
+
|
|
194
|
+
// TODO: Enable padding when we have a better idea what are the final amounts we should pad to.
|
|
195
|
+
const paddedSideEffects = PaddedSideEffects.empty();
|
|
196
|
+
|
|
197
|
+
return new PrivateKernelResetCircuitPrivateInputs(
|
|
198
|
+
previousKernelData,
|
|
199
|
+
paddedSideEffects,
|
|
200
|
+
new PrivateKernelResetHints(
|
|
201
|
+
noteHashReadRequestHints,
|
|
202
|
+
nullifierReadRequestHints,
|
|
203
|
+
keyValidationHints,
|
|
208
204
|
this.transientDataSquashingHints,
|
|
209
|
-
this.validationRequestsSplitCounter,
|
|
210
205
|
),
|
|
211
206
|
dimensions,
|
|
212
207
|
);
|
|
@@ -239,24 +234,17 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
239
234
|
resetActions.pendingReadHints = resetActions.pendingReadHints.slice(0, maxPending);
|
|
240
235
|
}
|
|
241
236
|
|
|
242
|
-
private needsResetNoteHashReadRequests(
|
|
237
|
+
private needsResetNoteHashReadRequests(forceReset = false) {
|
|
243
238
|
const numCurr = this.previousKernel.validationRequests.noteHashReadRequests.claimedLength;
|
|
244
239
|
const numNext = this.nextIteration ? this.nextIteration.noteHashReadRequests.claimedLength : 0;
|
|
245
|
-
const maxAmountToKeep = !this.nextIteration ||
|
|
240
|
+
const maxAmountToKeep = !this.nextIteration || forceReset ? 0 : MAX_NOTE_HASH_READ_REQUESTS_PER_TX;
|
|
246
241
|
if (numCurr + numNext <= maxAmountToKeep) {
|
|
247
242
|
return false;
|
|
248
243
|
}
|
|
249
244
|
|
|
250
|
-
const futureNoteHashes = collectNested(this.executionStack, executionResult => {
|
|
251
|
-
return executionResult.publicInputs.noteHashes
|
|
252
|
-
.getActiveItems()
|
|
253
|
-
.map(noteHash => new ScopedNoteHash(noteHash, executionResult.publicInputs.callContext.contractAddress));
|
|
254
|
-
});
|
|
255
|
-
|
|
256
245
|
const resetActions = getNoteHashReadRequestResetActions(
|
|
257
246
|
this.previousKernel.validationRequests.noteHashReadRequests,
|
|
258
247
|
this.previousKernel.end.noteHashes,
|
|
259
|
-
futureNoteHashes,
|
|
260
248
|
);
|
|
261
249
|
|
|
262
250
|
const numPendingReads = resetActions.pendingReadHints.length;
|
|
@@ -265,53 +253,72 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
265
253
|
0,
|
|
266
254
|
);
|
|
267
255
|
|
|
256
|
+
const totalReadsToReset = numPendingReads + numSettledReads;
|
|
257
|
+
const minResetNeeded = numCurr + numNext - maxAmountToKeep;
|
|
258
|
+
if (totalReadsToReset < minResetNeeded) {
|
|
259
|
+
if (!this.nextIteration) {
|
|
260
|
+
// In the final reset, all note hashes have been emitted. So if we can't reset all requests, at least one
|
|
261
|
+
// pending read request doesn't match any of them.
|
|
262
|
+
throw new Error('No matching note hash found for note hash read request.');
|
|
263
|
+
} else if (!forceReset) {
|
|
264
|
+
// A pending read request can only be reset if its note hash has already been included (e.g. a parent call might
|
|
265
|
+
// be reading a note hash emitted by a child call. The read request of the parent call is included before the note
|
|
266
|
+
// hash of the child call).
|
|
267
|
+
// If we can't clear enough read requests to make room for the next iteration's reads, we're stuck.
|
|
268
|
+
throw new Error('Number of note hash read requests exceeds the limit.');
|
|
269
|
+
} else if (totalReadsToReset == 0) {
|
|
270
|
+
// It's transient data squashing asking for the read requests to be reset first (forceReset == true), and
|
|
271
|
+
// there's nothing to reset, returns false and let needsResetTransientData throw a more descriptive error.
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
// Otherwise, forceReset is true, we should proceed to reset as many as we can.
|
|
275
|
+
}
|
|
276
|
+
|
|
268
277
|
if (!this.nextIteration) {
|
|
278
|
+
// If there's no next iteration, we need to reset all the read requests.
|
|
269
279
|
this.noteHashResetActions = resetActions;
|
|
270
280
|
this.requestedDimensions.NOTE_HASH_PENDING_READ = numPendingReads;
|
|
271
281
|
this.requestedDimensions.NOTE_HASH_SETTLED_READ = numSettledReads;
|
|
272
282
|
} else {
|
|
273
|
-
//
|
|
283
|
+
// If there's a next iteration, only one dimension can be reset at a time.
|
|
284
|
+
// So we pick the dimension that has more read requests to reset.
|
|
274
285
|
if (numPendingReads > numSettledReads) {
|
|
275
|
-
|
|
276
|
-
|
|
286
|
+
// Reset the pending read requests.
|
|
287
|
+
const pendingOnlyActions = assertLength(
|
|
277
288
|
resetActions.actions.map(action =>
|
|
278
289
|
action === ReadRequestActionEnum.READ_AS_PENDING ? action : ReadRequestActionEnum.SKIP,
|
|
279
290
|
),
|
|
280
291
|
MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
|
|
281
292
|
);
|
|
282
|
-
this.noteHashResetActions
|
|
293
|
+
this.noteHashResetActions = new ReadRequestResetActions(pendingOnlyActions, resetActions.pendingReadHints);
|
|
294
|
+
this.requestedDimensions.NOTE_HASH_PENDING_READ = numPendingReads;
|
|
283
295
|
} else {
|
|
284
|
-
|
|
285
|
-
|
|
296
|
+
// Reset the settled read requests.
|
|
297
|
+
const settledOnlyActions = assertLength(
|
|
286
298
|
resetActions.actions.map(action =>
|
|
287
299
|
action === ReadRequestActionEnum.READ_AS_SETTLED ? action : ReadRequestActionEnum.SKIP,
|
|
288
300
|
),
|
|
289
301
|
MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
|
|
290
302
|
);
|
|
303
|
+
this.noteHashResetActions = new ReadRequestResetActions(settledOnlyActions, []);
|
|
304
|
+
this.requestedDimensions.NOTE_HASH_SETTLED_READ = numSettledReads;
|
|
291
305
|
}
|
|
292
306
|
}
|
|
293
307
|
|
|
294
308
|
return true;
|
|
295
309
|
}
|
|
296
310
|
|
|
297
|
-
private needsResetNullifierReadRequests(
|
|
311
|
+
private needsResetNullifierReadRequests(forceReset = false) {
|
|
298
312
|
const numCurr = this.previousKernel.validationRequests.nullifierReadRequests.claimedLength;
|
|
299
313
|
const numNext = this.nextIteration ? this.nextIteration.nullifierReadRequests.claimedLength : 0;
|
|
300
|
-
const maxAmountToKeep = !this.nextIteration ||
|
|
314
|
+
const maxAmountToKeep = !this.nextIteration || forceReset ? 0 : MAX_NULLIFIER_READ_REQUESTS_PER_TX;
|
|
301
315
|
if (numCurr + numNext <= maxAmountToKeep) {
|
|
302
316
|
return false;
|
|
303
317
|
}
|
|
304
318
|
|
|
305
|
-
const futureNullifiers = collectNested(this.executionStack, executionResult => {
|
|
306
|
-
return executionResult.publicInputs.nullifiers
|
|
307
|
-
.getActiveItems()
|
|
308
|
-
.map(nullifier => new ScopedNullifier(nullifier, executionResult.publicInputs.callContext.contractAddress));
|
|
309
|
-
});
|
|
310
|
-
|
|
311
319
|
const resetActions = getNullifierReadRequestResetActions(
|
|
312
320
|
this.previousKernel.validationRequests.nullifierReadRequests,
|
|
313
321
|
this.previousKernel.end.nullifiers,
|
|
314
|
-
futureNullifiers,
|
|
315
322
|
);
|
|
316
323
|
|
|
317
324
|
const numPendingReads = resetActions.pendingReadHints.length;
|
|
@@ -320,38 +327,63 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
320
327
|
0,
|
|
321
328
|
);
|
|
322
329
|
|
|
330
|
+
const totalReadsToReset = numPendingReads + numSettledReads;
|
|
331
|
+
const minResetNeeded = numCurr + numNext - maxAmountToKeep;
|
|
332
|
+
if (totalReadsToReset < minResetNeeded) {
|
|
333
|
+
if (!this.nextIteration) {
|
|
334
|
+
// In the final reset, all nullifiers have been emitted. So if we can't reset all requests, at least one pending
|
|
335
|
+
// read request doesn't match any of them.
|
|
336
|
+
throw new Error('No matching nullifier found for nullifier read request.');
|
|
337
|
+
} else if (!forceReset) {
|
|
338
|
+
// A pending read request can only be reset if its nullifier has already been included (e.g. a parent call might
|
|
339
|
+
// be reading a nullifier emitted by a child call. The read request of the parent call is included before the
|
|
340
|
+
// nullifier of the child call).
|
|
341
|
+
// If we can't clear enough read requests to make room for the next iteration's reads, we're stuck.
|
|
342
|
+
throw new Error('Number of nullifier read requests exceeds the limit.');
|
|
343
|
+
} else if (totalReadsToReset == 0) {
|
|
344
|
+
// It's transient data squashing asking for the read requests to be reset first (forceReset == true), and
|
|
345
|
+
// there's nothing to reset, returns false and let needsResetTransientData throw a more descriptive error.
|
|
346
|
+
return false;
|
|
347
|
+
}
|
|
348
|
+
// Otherwise, forceReset is true, we should proceed to reset as many as we can.
|
|
349
|
+
}
|
|
350
|
+
|
|
323
351
|
if (!this.nextIteration) {
|
|
352
|
+
// If there's no next iteration, we need to reset all the read requests.
|
|
324
353
|
this.nullifierResetActions = resetActions;
|
|
325
354
|
this.requestedDimensions.NULLIFIER_PENDING_READ = numPendingReads;
|
|
326
355
|
this.requestedDimensions.NULLIFIER_SETTLED_READ = numSettledReads;
|
|
327
356
|
} else {
|
|
328
|
-
//
|
|
357
|
+
// If there's a next iteration, we can only reset one dimension at a time.
|
|
329
358
|
if (numPendingReads > numSettledReads) {
|
|
330
|
-
|
|
331
|
-
|
|
359
|
+
// Reset the pending read requests.
|
|
360
|
+
const pendingOnlyActions = assertLength(
|
|
332
361
|
resetActions.actions.map(action =>
|
|
333
362
|
action === ReadRequestActionEnum.READ_AS_PENDING ? action : ReadRequestActionEnum.SKIP,
|
|
334
363
|
),
|
|
335
364
|
MAX_NULLIFIER_READ_REQUESTS_PER_TX,
|
|
336
365
|
);
|
|
337
|
-
this.nullifierResetActions
|
|
366
|
+
this.nullifierResetActions = new ReadRequestResetActions(pendingOnlyActions, resetActions.pendingReadHints);
|
|
367
|
+
this.requestedDimensions.NULLIFIER_PENDING_READ = numPendingReads;
|
|
338
368
|
} else {
|
|
339
|
-
|
|
340
|
-
|
|
369
|
+
// Reset the settled read requests.
|
|
370
|
+
const settledOnlyActions = assertLength(
|
|
341
371
|
resetActions.actions.map(action =>
|
|
342
372
|
action === ReadRequestActionEnum.READ_AS_SETTLED ? action : ReadRequestActionEnum.SKIP,
|
|
343
373
|
),
|
|
344
374
|
MAX_NULLIFIER_READ_REQUESTS_PER_TX,
|
|
345
375
|
);
|
|
376
|
+
this.nullifierResetActions = new ReadRequestResetActions(settledOnlyActions, []);
|
|
377
|
+
this.requestedDimensions.NULLIFIER_SETTLED_READ = numSettledReads;
|
|
346
378
|
}
|
|
347
379
|
}
|
|
348
380
|
|
|
349
381
|
return true;
|
|
350
382
|
}
|
|
351
383
|
|
|
352
|
-
private
|
|
353
|
-
const numCurr = this.previousKernel.validationRequests.
|
|
354
|
-
const numNext = this.nextIteration ? this.nextIteration.
|
|
384
|
+
private needsResetKeyValidationRequests() {
|
|
385
|
+
const numCurr = this.previousKernel.validationRequests.scopedKeyValidationRequestsAndSeparators.claimedLength;
|
|
386
|
+
const numNext = this.nextIteration ? this.nextIteration.keyValidationRequestsAndSeparators.claimedLength : 0;
|
|
355
387
|
const maxAmountToKeep = !this.nextIteration ? 0 : MAX_KEY_VALIDATION_REQUESTS_PER_TX;
|
|
356
388
|
if (numCurr + numNext <= maxAmountToKeep) {
|
|
357
389
|
return false;
|
|
@@ -363,9 +395,6 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
363
395
|
}
|
|
364
396
|
|
|
365
397
|
private needsResetTransientData() {
|
|
366
|
-
// Initialize this to 0 so that needsSilo can be run.
|
|
367
|
-
this.numTransientData = 0;
|
|
368
|
-
|
|
369
398
|
const nextAccumNoteHashes =
|
|
370
399
|
this.previousKernel.end.noteHashes.claimedLength + (this.nextIteration?.noteHashes.claimedLength ?? 0);
|
|
371
400
|
const noteHashWillOverflow = nextAccumNoteHashes > MAX_NOTE_HASHES_PER_TX;
|
|
@@ -380,19 +409,19 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
380
409
|
return false;
|
|
381
410
|
}
|
|
382
411
|
|
|
383
|
-
const futureNoteHashReads =
|
|
384
|
-
|
|
385
|
-
|
|
412
|
+
const futureNoteHashReads = collectNested(this.executionStack, executionResult =>
|
|
413
|
+
executionResult.publicInputs.noteHashReadRequests.getActiveItems(),
|
|
414
|
+
);
|
|
415
|
+
const futureNullifierReads = collectNested(this.executionStack, executionResult =>
|
|
416
|
+
executionResult.publicInputs.nullifierReadRequests.getActiveItems(),
|
|
386
417
|
);
|
|
387
|
-
const
|
|
388
|
-
|
|
389
|
-
executionResult => executionResult.publicInputs.nullifierReadRequests,
|
|
418
|
+
const futureLogs = collectNested(this.executionStack, executionResult =>
|
|
419
|
+
executionResult.publicInputs.privateLogs.getActiveItems(),
|
|
390
420
|
);
|
|
391
|
-
// TODO(#15902): Collect future logs and only allow squashing a note hash when all its logs have been emitted
|
|
392
|
-
// (i.e. none of the future logs are linked to the to-be-squashed note hashes).
|
|
393
421
|
if (this.nextIteration) {
|
|
394
|
-
// If it's not the final reset, only one dimension will be reset at a time.
|
|
395
|
-
//
|
|
422
|
+
// If it's not the final reset, only one dimension will be reset at a time. Since we are resetting the transient
|
|
423
|
+
// data, the note hash and nullifier read requests in the previous kernel won't be squashed and need to be
|
|
424
|
+
// included in the future read requests.
|
|
396
425
|
futureNoteHashReads.push(...this.previousKernel.validationRequests.noteHashReadRequests.getActiveItems());
|
|
397
426
|
futureNullifierReads.push(...this.previousKernel.validationRequests.nullifierReadRequests.getActiveItems());
|
|
398
427
|
}
|
|
@@ -402,27 +431,50 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
402
431
|
this.previousKernel.end.nullifiers,
|
|
403
432
|
futureNoteHashReads,
|
|
404
433
|
futureNullifierReads,
|
|
434
|
+
futureLogs,
|
|
405
435
|
this.noteHashNullifierCounterMap,
|
|
406
|
-
this.
|
|
436
|
+
this.splitCounter,
|
|
407
437
|
);
|
|
408
438
|
|
|
409
|
-
if (this.nextIteration
|
|
410
|
-
const
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
439
|
+
if (this.nextIteration) {
|
|
440
|
+
const noteHashOverflowBy = noteHashWillOverflow
|
|
441
|
+
? nextAccumNoteHashes - MAX_NOTE_HASHES_PER_TX - numTransientData
|
|
442
|
+
: 0;
|
|
443
|
+
const nullifierOverflowBy = nullifierWillOverflow
|
|
444
|
+
? nextAccumNullifiers - MAX_NULLIFIERS_PER_TX - numTransientData
|
|
445
|
+
: 0;
|
|
446
|
+
const numSquashedLogs = logsWillOverflow
|
|
447
|
+
? countSquashedLogs(
|
|
448
|
+
this.previousKernel.end.noteHashes,
|
|
449
|
+
this.previousKernel.end.privateLogs,
|
|
450
|
+
transientDataSquashingHints.slice(0, numTransientData),
|
|
451
|
+
)
|
|
452
|
+
: 0;
|
|
453
|
+
const logsOverflowBy = logsWillOverflow ? nextAccumLogs - MAX_PRIVATE_LOGS_PER_TX - numSquashedLogs : 0;
|
|
454
|
+
|
|
455
|
+
if (noteHashOverflowBy > 0 || nullifierOverflowBy > 0 || logsOverflowBy > 0) {
|
|
456
|
+
// There's not enough transient data to squash to clear space for the overflow. It may be because some data is
|
|
457
|
+
// still required for read requests. Force a reset of the read requests first, and return to transient data
|
|
458
|
+
// squashing in the next round of reset.
|
|
459
|
+
// Note that clearing the read requests might not be enough to clear more space for the overflow. In this case,
|
|
460
|
+
// running the next reset will fail at the following check.
|
|
461
|
+
// Only one dimension can be reset at a time for an inner reset, so we try the note hash read requests first
|
|
462
|
+
// (which also helps with log overflow), then fall back to nullifier read requests.
|
|
463
|
+
const forceReset = true;
|
|
464
|
+
if ((noteHashOverflowBy > 0 || logsOverflowBy > 0) && this.needsResetNoteHashReadRequests(forceReset)) {
|
|
465
|
+
return true;
|
|
466
|
+
}
|
|
467
|
+
if (nullifierOverflowBy > 0 && this.needsResetNullifierReadRequests(forceReset)) {
|
|
468
|
+
return true;
|
|
469
|
+
}
|
|
470
|
+
if (noteHashWillOverflow) {
|
|
471
|
+
throw new Error('Number of note hashes exceeds the limit.');
|
|
472
|
+
}
|
|
473
|
+
if (nullifierWillOverflow) {
|
|
474
|
+
throw new Error('Number of nullifiers exceeds the limit.');
|
|
475
|
+
}
|
|
476
|
+
throw new Error('Number of private logs exceeds the limit.');
|
|
422
477
|
}
|
|
423
|
-
// Clearing the read requests might not be enough to squash the overflown data.
|
|
424
|
-
// In this case, the next iteration will fail at the above check.
|
|
425
|
-
return true;
|
|
426
478
|
}
|
|
427
479
|
|
|
428
480
|
this.numTransientData = numTransientData;
|
|
@@ -437,10 +489,13 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
437
489
|
throw new Error('`needsResetTransientData` must be run before `needsSiloNoteHashes`.');
|
|
438
490
|
}
|
|
439
491
|
|
|
440
|
-
const
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
492
|
+
const noteHashes = this.previousKernel.end.noteHashes;
|
|
493
|
+
if (noteHashes.claimedLength > 0 && noteHashes.array[0].contractAddress.isZero()) {
|
|
494
|
+
// Already siloed.
|
|
495
|
+
return false;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
const numToSilo = noteHashes.claimedLength - this.numTransientData;
|
|
444
499
|
this.requestedDimensions.NOTE_HASH_SILOING = numToSilo;
|
|
445
500
|
|
|
446
501
|
return numToSilo > 0;
|
|
@@ -451,15 +506,14 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
451
506
|
throw new Error('`needsResetTransientData` must be run before `needsSiloNullifiers`.');
|
|
452
507
|
}
|
|
453
508
|
|
|
454
|
-
const
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
this.requestedDimensions.NULLIFIER_SILOING = cappedSize;
|
|
509
|
+
const nullifiers = this.previousKernel.end.nullifiers;
|
|
510
|
+
if (nullifiers.claimedLength > 0 && nullifiers.array[0].contractAddress.isZero()) {
|
|
511
|
+
// Already siloed.
|
|
512
|
+
return false;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
const numToSilo = nullifiers.claimedLength - this.numTransientData;
|
|
516
|
+
this.requestedDimensions.NULLIFIER_SILOING = numToSilo;
|
|
463
517
|
|
|
464
518
|
return numToSilo > 0;
|
|
465
519
|
}
|
|
@@ -470,17 +524,17 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
470
524
|
}
|
|
471
525
|
|
|
472
526
|
const privateLogs = this.previousKernel.end.privateLogs;
|
|
473
|
-
|
|
527
|
+
if (privateLogs.claimedLength > 0 && privateLogs.array[0].contractAddress.isZero()) {
|
|
528
|
+
// Already siloed.
|
|
529
|
+
return false;
|
|
530
|
+
}
|
|
474
531
|
|
|
475
|
-
const
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
.
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
.filter(l => squashedNoteHashCounters.includes(l.inner.noteHashCounter)).length;
|
|
482
|
-
|
|
483
|
-
const numToSilo = numLogs - numSquashedLogs;
|
|
532
|
+
const numSquashedLogs = countSquashedLogs(
|
|
533
|
+
this.previousKernel.end.noteHashes,
|
|
534
|
+
privateLogs,
|
|
535
|
+
this.transientDataSquashingHints.slice(0, this.numTransientData),
|
|
536
|
+
);
|
|
537
|
+
const numToSilo = privateLogs.claimedLength - numSquashedLogs;
|
|
484
538
|
this.requestedDimensions.PRIVATE_LOG_SILOING = numToSilo;
|
|
485
539
|
|
|
486
540
|
return numToSilo > 0;
|