@aztec/pxe 0.0.0-test.1 → 0.0.1-commit.5476d83
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/README.md +5 -5
- package/dest/bin/check_oracle_version.d.ts +2 -0
- package/dest/bin/check_oracle_version.d.ts.map +1 -0
- package/dest/bin/check_oracle_version.js +39 -0
- package/dest/config/index.d.ts +11 -24
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +18 -33
- package/dest/config/package_info.d.ts +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +56 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -0
- package/dest/contract_function_simulator/contract_function_simulator.js +300 -0
- package/dest/contract_function_simulator/execution_data_provider.d.ts +265 -0
- package/dest/contract_function_simulator/execution_data_provider.d.ts.map +1 -0
- package/dest/contract_function_simulator/execution_data_provider.js +14 -0
- package/dest/contract_function_simulator/execution_note_cache.d.ts +94 -0
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -0
- package/dest/contract_function_simulator/execution_note_cache.js +190 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +16 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +26 -0
- package/dest/contract_function_simulator/hashed_values_cache.d.ts +28 -0
- package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -0
- package/dest/contract_function_simulator/hashed_values_cache.js +36 -0
- package/dest/contract_function_simulator/index.d.ts +14 -0
- package/dest/contract_function_simulator/index.d.ts.map +1 -0
- package/dest/contract_function_simulator/index.js +12 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +20 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +37 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +15 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +25 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +17 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +65 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +23 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +48 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +22 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.js +33 -0
- package/dest/contract_function_simulator/oracle/index.d.ts +14 -0
- package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/index.js +2 -0
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +100 -0
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +17 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +24 -0
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +24 -0
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +50 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +58 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle.js +333 -0
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +48 -0
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/private_execution.js +123 -0
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +231 -0
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +428 -0
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +153 -0
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +265 -0
- package/dest/contract_function_simulator/pick_notes.d.ts +85 -0
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -0
- package/dest/contract_function_simulator/pick_notes.js +51 -0
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +6 -0
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -0
- package/dest/contract_function_simulator/proxied_contract_data_source.js +62 -0
- package/dest/contract_function_simulator/proxied_node.d.ts +9 -0
- package/dest/contract_function_simulator/proxied_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/proxied_node.js +27 -0
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +122 -0
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +1 -0
- package/dest/contract_function_simulator/pxe_oracle_interface.js +694 -0
- package/dest/entrypoints/client/bundle/index.d.ts +5 -3
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +3 -2
- package/dest/entrypoints/client/bundle/utils.d.ts +10 -10
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +18 -12
- package/dest/entrypoints/client/lazy/index.d.ts +5 -3
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +3 -2
- package/dest/entrypoints/client/lazy/utils.d.ts +9 -9
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +17 -11
- package/dest/entrypoints/pxe_creation_options.d.ts +14 -0
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -0
- package/dest/entrypoints/server/index.d.ts +6 -4
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +4 -3
- package/dest/entrypoints/server/utils.d.ts +8 -16
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +30 -35
- package/dest/error_enriching.d.ts +11 -0
- package/dest/error_enriching.d.ts.map +1 -0
- package/dest/{pxe_service/error_enriching.js → error_enriching.js} +26 -18
- package/dest/oracle_version.d.ts +3 -0
- package/dest/oracle_version.d.ts.map +1 -0
- package/dest/oracle_version.js +10 -0
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +28 -0
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -0
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.js +271 -0
- package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.d.ts +3 -0
- package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.d.ts.map +1 -0
- package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.js +48 -0
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.js +41 -0
- package/dest/private_kernel/hints/index.d.ts +3 -0
- package/dest/private_kernel/hints/index.d.ts.map +1 -0
- package/dest/{kernel_prover → private_kernel}/hints/index.js +1 -0
- package/dest/private_kernel/index.d.ts +3 -0
- package/dest/private_kernel/index.d.ts.map +1 -0
- package/dest/private_kernel/index.js +2 -0
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +44 -0
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -0
- package/dest/private_kernel/private_kernel_execution_prover.js +289 -0
- package/dest/private_kernel/private_kernel_oracle.d.ts +62 -0
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -0
- package/dest/private_kernel/private_kernel_oracle.js +4 -0
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts +45 -0
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -0
- package/dest/{kernel_oracle/index.js → private_kernel/private_kernel_oracle_impl.js} +19 -9
- package/dest/pxe.d.ts +240 -0
- package/dest/pxe.d.ts.map +1 -0
- package/dest/pxe.js +771 -0
- package/dest/storage/address_data_provider/address_data_provider.d.ts +2 -4
- package/dest/storage/address_data_provider/address_data_provider.d.ts.map +1 -1
- package/dest/storage/address_data_provider/address_data_provider.js +0 -3
- package/dest/storage/address_data_provider/index.d.ts +1 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +15 -6
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +1 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.js +85 -24
- package/dest/storage/capsule_data_provider/index.d.ts +1 -1
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts +13 -58
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +1 -1
- package/dest/storage/contract_data_provider/contract_data_provider.js +89 -79
- package/dest/storage/contract_data_provider/index.d.ts +1 -2
- package/dest/storage/contract_data_provider/index.d.ts.map +1 -1
- package/dest/storage/contract_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts +3 -42
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +1 -1
- package/dest/storage/contract_data_provider/private_functions_tree.js +9 -61
- package/dest/storage/index.d.ts +3 -4
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +2 -3
- package/dest/storage/metadata.d.ts +2 -0
- package/dest/storage/metadata.d.ts.map +1 -0
- package/dest/storage/metadata.js +1 -0
- package/dest/storage/note_data_provider/index.d.ts +2 -2
- package/dest/storage/note_data_provider/index.d.ts.map +1 -1
- package/dest/storage/note_data_provider/index.js +1 -1
- package/dest/storage/note_data_provider/note_data_provider.d.ts +73 -10
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +1 -1
- package/dest/storage/note_data_provider/note_data_provider.js +145 -83
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +37 -0
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +1 -0
- package/dest/storage/private_event_data_provider/private_event_data_provider.js +105 -0
- package/dest/storage/sync_data_provider/index.d.ts +1 -1
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts +3 -5
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +1 -1
- package/dest/storage/sync_data_provider/sync_data_provider.js +2 -5
- package/dest/storage/tagging_data_provider/index.d.ts +1 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +29 -7
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +1 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.js +48 -24
- package/dest/synchronizer/index.d.ts +1 -1
- package/dest/synchronizer/synchronizer.d.ts +8 -10
- package/dest/synchronizer/synchronizer.d.ts.map +1 -1
- package/dest/synchronizer/synchronizer.js +17 -19
- package/dest/tagging/constants.d.ts +2 -0
- package/dest/tagging/constants.d.ts.map +1 -0
- package/dest/tagging/constants.js +2 -0
- package/dest/tagging/index.d.ts +7 -0
- package/dest/tagging/index.d.ts.map +1 -0
- package/dest/tagging/index.js +5 -0
- package/dest/tagging/siloed_tag.d.ts +14 -0
- package/dest/tagging/siloed_tag.d.ts.map +1 -0
- package/dest/tagging/siloed_tag.js +20 -0
- package/dest/tagging/tag.d.ts +12 -0
- package/dest/tagging/tag.d.ts.map +1 -0
- package/dest/tagging/tag.js +17 -0
- package/dest/tagging/utils.d.ts +18 -0
- package/dest/tagging/utils.d.ts.map +1 -0
- package/dest/tagging/utils.js +24 -0
- package/package.json +37 -34
- package/src/bin/check_oracle_version.ts +50 -0
- package/src/config/index.ts +27 -55
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +553 -0
- package/src/contract_function_simulator/execution_data_provider.ts +333 -0
- package/src/contract_function_simulator/execution_note_cache.ts +229 -0
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +32 -0
- package/src/contract_function_simulator/hashed_values_cache.ts +47 -0
- package/src/contract_function_simulator/index.ts +13 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +47 -0
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -0
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +69 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +61 -0
- package/src/contract_function_simulator/noir-structs/utility_context.ts +42 -0
- package/src/contract_function_simulator/oracle/index.ts +16 -0
- package/src/contract_function_simulator/oracle/interfaces.ts +170 -0
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +23 -0
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +54 -0
- package/src/contract_function_simulator/oracle/oracle.ts +583 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +207 -0
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +633 -0
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +358 -0
- package/src/contract_function_simulator/pick_notes.ts +141 -0
- package/src/contract_function_simulator/proxied_contract_data_source.ts +66 -0
- package/src/contract_function_simulator/proxied_node.ts +33 -0
- package/src/contract_function_simulator/pxe_oracle_interface.ts +1008 -0
- package/src/entrypoints/client/bundle/index.ts +4 -2
- package/src/entrypoints/client/bundle/utils.ts +36 -36
- package/src/entrypoints/client/lazy/index.ts +4 -2
- package/src/entrypoints/client/lazy/utils.ts +36 -31
- package/src/entrypoints/{client/pxe_creation_options.ts → pxe_creation_options.ts} +4 -1
- package/src/entrypoints/server/index.ts +5 -3
- package/src/entrypoints/server/utils.ts +58 -50
- package/src/{pxe_service/error_enriching.ts → error_enriching.ts} +36 -27
- package/src/oracle_version.ts +11 -0
- package/src/{kernel_prover → private_kernel}/hints/build_private_kernel_reset_private_inputs.ts +158 -146
- package/src/private_kernel/hints/compute_side_effect_uniqueness_hints.ts +173 -0
- package/src/private_kernel/hints/compute_tx_include_by_timestamp.ts +58 -0
- package/src/{kernel_prover → private_kernel}/hints/index.ts +1 -0
- package/src/private_kernel/index.ts +2 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +436 -0
- package/src/{kernel_prover/proving_data_oracle.ts → private_kernel/private_kernel_oracle.ts} +17 -29
- package/src/{kernel_oracle/index.ts → private_kernel/private_kernel_oracle_impl.ts} +30 -15
- package/src/pxe.ts +1085 -0
- package/src/storage/address_data_provider/address_data_provider.ts +1 -7
- package/src/storage/capsule_data_provider/capsule_data_provider.ts +97 -30
- package/src/storage/contract_data_provider/contract_data_provider.ts +109 -93
- package/src/storage/contract_data_provider/index.ts +0 -1
- package/src/storage/contract_data_provider/private_functions_tree.ts +11 -75
- package/src/storage/index.ts +2 -4
- package/src/storage/metadata.ts +1 -0
- package/src/storage/note_data_provider/index.ts +1 -1
- package/src/storage/note_data_provider/note_data_provider.ts +176 -122
- package/src/storage/private_event_data_provider/private_event_data_provider.ts +143 -0
- package/src/storage/sync_data_provider/sync_data_provider.ts +4 -10
- package/src/storage/tagging_data_provider/tagging_data_provider.ts +58 -30
- package/src/synchronizer/synchronizer.ts +21 -22
- package/src/tagging/constants.ts +2 -0
- package/src/tagging/index.ts +6 -0
- package/src/tagging/siloed_tag.ts +22 -0
- package/src/tagging/tag.ts +16 -0
- package/src/tagging/utils.ts +31 -0
- package/dest/bin/index.d.ts +0 -3
- package/dest/bin/index.d.ts.map +0 -1
- package/dest/bin/index.js +0 -28
- package/dest/entrypoints/client/pxe_creation_options.d.ts +0 -11
- package/dest/entrypoints/client/pxe_creation_options.d.ts.map +0 -1
- package/dest/kernel_oracle/index.d.ts +0 -45
- package/dest/kernel_oracle/index.d.ts.map +0 -1
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +0 -270
- package/dest/kernel_prover/hints/index.d.ts +0 -2
- package/dest/kernel_prover/hints/index.d.ts.map +0 -1
- package/dest/kernel_prover/index.d.ts +0 -3
- package/dest/kernel_prover/index.d.ts.map +0 -1
- package/dest/kernel_prover/index.js +0 -2
- package/dest/kernel_prover/kernel_prover.d.ts +0 -38
- package/dest/kernel_prover/kernel_prover.d.ts.map +0 -1
- package/dest/kernel_prover/kernel_prover.js +0 -217
- package/dest/kernel_prover/proving_data_oracle.d.ts +0 -73
- package/dest/kernel_prover/proving_data_oracle.d.ts.map +0 -1
- package/dest/kernel_prover/proving_data_oracle.js +0 -4
- package/dest/note_decryption_utils/add_public_values_to_payload.d.ts +0 -11
- package/dest/note_decryption_utils/add_public_values_to_payload.d.ts.map +0 -1
- package/dest/note_decryption_utils/add_public_values_to_payload.js +0 -47
- package/dest/pxe_http/index.d.ts +0 -2
- package/dest/pxe_http/index.d.ts.map +0 -1
- package/dest/pxe_http/index.js +0 -1
- package/dest/pxe_http/pxe_http_server.d.ts +0 -16
- package/dest/pxe_http/pxe_http_server.d.ts.map +0 -1
- package/dest/pxe_http/pxe_http_server.js +0 -27
- package/dest/pxe_oracle_interface/index.d.ts +0 -159
- package/dest/pxe_oracle_interface/index.d.ts.map +0 -1
- package/dest/pxe_oracle_interface/index.js +0 -692
- package/dest/pxe_oracle_interface/tagging_utils.d.ts +0 -17
- package/dest/pxe_oracle_interface/tagging_utils.d.ts.map +0 -1
- package/dest/pxe_oracle_interface/tagging_utils.js +0 -23
- package/dest/pxe_service/error_enriching.d.ts +0 -11
- package/dest/pxe_service/error_enriching.d.ts.map +0 -1
- package/dest/pxe_service/index.d.ts +0 -3
- package/dest/pxe_service/index.d.ts.map +0 -1
- package/dest/pxe_service/index.js +0 -2
- package/dest/pxe_service/pxe_service.d.ts +0 -111
- package/dest/pxe_service/pxe_service.d.ts.map +0 -1
- package/dest/pxe_service/pxe_service.js +0 -664
- package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts +0 -11
- package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts.map +0 -1
- package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.js +0 -20
- package/dest/storage/auth_witness_data_provider/index.d.ts +0 -2
- package/dest/storage/auth_witness_data_provider/index.d.ts.map +0 -1
- package/dest/storage/auth_witness_data_provider/index.js +0 -1
- package/dest/storage/data_provider.d.ts +0 -4
- package/dest/storage/data_provider.d.ts.map +0 -1
- package/dest/storage/data_provider.js +0 -1
- package/dest/storage/note_data_provider/note_dao.d.ts +0 -106
- package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_dao.js +0 -106
- package/dest/test/pxe_test_suite.d.ts +0 -3
- package/dest/test/pxe_test_suite.d.ts.map +0 -1
- package/dest/test/pxe_test_suite.js +0 -97
- package/src/bin/index.ts +0 -38
- package/src/kernel_prover/index.ts +0 -2
- package/src/kernel_prover/kernel_prover.ts +0 -351
- package/src/note_decryption_utils/add_public_values_to_payload.ts +0 -64
- package/src/pxe_http/index.ts +0 -1
- package/src/pxe_http/pxe_http_server.ts +0 -29
- package/src/pxe_oracle_interface/index.ts +0 -925
- package/src/pxe_oracle_interface/tagging_utils.ts +0 -32
- package/src/pxe_service/index.ts +0 -2
- package/src/pxe_service/pxe_service.ts +0 -949
- package/src/storage/auth_witness_data_provider/auth_witness_data_provider.ts +0 -34
- package/src/storage/auth_witness_data_provider/index.ts +0 -1
- package/src/storage/data_provider.ts +0 -3
- package/src/storage/note_data_provider/note_dao.ts +0 -162
- package/src/test/pxe_test_suite.ts +0 -111
- /package/dest/entrypoints/{client/pxe_creation_options.js → pxe_creation_options.js} +0 -0
package/src/{kernel_prover → private_kernel}/hints/build_private_kernel_reset_private_inputs.ts
RENAMED
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
|
|
5
5
|
MAX_NULLIFIERS_PER_TX,
|
|
6
6
|
MAX_NULLIFIER_READ_REQUESTS_PER_TX,
|
|
7
|
+
MAX_PRIVATE_LOGS_PER_TX,
|
|
7
8
|
NULLIFIER_TREE_HEIGHT,
|
|
8
|
-
VK_TREE_HEIGHT,
|
|
9
9
|
} from '@aztec/constants';
|
|
10
10
|
import { makeTuple } from '@aztec/foundation/array';
|
|
11
11
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
@@ -14,7 +14,9 @@ import { type Tuple, 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 {
|
|
17
|
+
ClaimedLengthArray,
|
|
17
18
|
KeyValidationHint,
|
|
19
|
+
PaddedSideEffects,
|
|
18
20
|
type PrivateCircuitPublicInputs,
|
|
19
21
|
type PrivateKernelCircuitPublicInputs,
|
|
20
22
|
PrivateKernelData,
|
|
@@ -22,41 +24,36 @@ import {
|
|
|
22
24
|
PrivateKernelResetDimensions,
|
|
23
25
|
PrivateKernelResetHints,
|
|
24
26
|
type PrivateKernelSimulateOutput,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
ReadRequestState,
|
|
27
|
+
ReadRequestActionEnum,
|
|
28
|
+
ReadRequestResetActions,
|
|
28
29
|
type ScopedKeyValidationRequestAndGenerator,
|
|
29
30
|
ScopedNoteHash,
|
|
30
31
|
ScopedNullifier,
|
|
31
32
|
ScopedReadRequest,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
TransientDataSquashingHint,
|
|
34
|
+
buildNoteHashReadRequestHintsFromResetActions,
|
|
35
|
+
buildNullifierReadRequestHintsFromResetActions,
|
|
35
36
|
buildTransientDataHints,
|
|
36
|
-
countAccumulatedItems,
|
|
37
37
|
findPrivateKernelResetDimensions,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
getNullifierReadRequestResetStates,
|
|
38
|
+
getNoteHashReadRequestResetActions,
|
|
39
|
+
getNullifierReadRequestResetActions,
|
|
41
40
|
privateKernelResetDimensionNames,
|
|
42
41
|
} from '@aztec/stdlib/kernel';
|
|
43
42
|
import { type PrivateCallExecutionResult, collectNested } from '@aztec/stdlib/tx';
|
|
43
|
+
import { VkData } from '@aztec/stdlib/vks';
|
|
44
44
|
|
|
45
|
-
import type {
|
|
45
|
+
import type { PrivateKernelOracle } from '../private_kernel_oracle.js';
|
|
46
46
|
|
|
47
|
-
function collectNestedReadRequests(
|
|
47
|
+
function collectNestedReadRequests<N extends number>(
|
|
48
48
|
executionStack: PrivateCallExecutionResult[],
|
|
49
|
-
extractReadRequests: (execution: PrivateCallExecutionResult) =>
|
|
49
|
+
extractReadRequests: (execution: PrivateCallExecutionResult) => ClaimedLengthArray<ScopedReadRequest, N>,
|
|
50
50
|
): ScopedReadRequest[] {
|
|
51
51
|
return collectNested(executionStack, executionResult => {
|
|
52
|
-
|
|
53
|
-
return nonEmptyReadRequests.map(
|
|
54
|
-
readRequest => new ScopedReadRequest(readRequest, executionResult.publicInputs.callContext.contractAddress),
|
|
55
|
-
);
|
|
52
|
+
return extractReadRequests(executionResult).getActiveItems();
|
|
56
53
|
});
|
|
57
54
|
}
|
|
58
55
|
|
|
59
|
-
function getNullifierMembershipWitnessResolver(oracle:
|
|
56
|
+
function getNullifierMembershipWitnessResolver(oracle: PrivateKernelOracle) {
|
|
60
57
|
return async (nullifier: Fr) => {
|
|
61
58
|
const res = await oracle.getNullifierMembershipWitness(nullifier);
|
|
62
59
|
if (!res) {
|
|
@@ -72,23 +69,21 @@ function getNullifierMembershipWitnessResolver(oracle: ProvingDataOracle) {
|
|
|
72
69
|
}
|
|
73
70
|
|
|
74
71
|
async function getMasterSecretKeysAndAppKeyGenerators(
|
|
75
|
-
keyValidationRequests:
|
|
76
|
-
|
|
72
|
+
keyValidationRequests: ClaimedLengthArray<
|
|
73
|
+
ScopedKeyValidationRequestAndGenerator,
|
|
74
|
+
typeof MAX_KEY_VALIDATION_REQUESTS_PER_TX
|
|
75
|
+
>,
|
|
76
|
+
numRequestsToVerify: number,
|
|
77
|
+
oracle: PrivateKernelOracle,
|
|
77
78
|
) {
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
const secretKeys = await oracle.getMasterSecretKey(request.request.pkM);
|
|
85
|
-
keysHints.push(new KeyValidationHint(secretKeys, i));
|
|
86
|
-
}
|
|
87
|
-
return padArrayEnd(
|
|
88
|
-
keysHints,
|
|
89
|
-
KeyValidationHint.nada(MAX_KEY_VALIDATION_REQUESTS_PER_TX),
|
|
90
|
-
MAX_KEY_VALIDATION_REQUESTS_PER_TX,
|
|
79
|
+
const numRequestsToProcess = Math.min(keyValidationRequests.claimedLength, numRequestsToVerify);
|
|
80
|
+
const keysHints = await Promise.all(
|
|
81
|
+
keyValidationRequests.array.slice(0, numRequestsToProcess).map(async ({ request }) => {
|
|
82
|
+
const secretKeys = await oracle.getMasterSecretKey(request.request.pkM);
|
|
83
|
+
return new KeyValidationHint(secretKeys);
|
|
84
|
+
}),
|
|
91
85
|
);
|
|
86
|
+
return padArrayEnd(keysHints, KeyValidationHint.empty(), MAX_KEY_VALIDATION_REQUESTS_PER_TX);
|
|
92
87
|
}
|
|
93
88
|
|
|
94
89
|
export class PrivateKernelResetPrivateInputsBuilder {
|
|
@@ -96,25 +91,25 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
96
91
|
// If there's no next iteration, it's the final reset.
|
|
97
92
|
private nextIteration?: PrivateCircuitPublicInputs;
|
|
98
93
|
|
|
99
|
-
private
|
|
100
|
-
private
|
|
94
|
+
private noteHashResetActions: ReadRequestResetActions<typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>;
|
|
95
|
+
private nullifierResetActions: ReadRequestResetActions<typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>;
|
|
101
96
|
private numTransientData?: number;
|
|
102
|
-
private
|
|
97
|
+
private transientDataSquashingHints: Tuple<TransientDataSquashingHint, typeof MAX_NULLIFIERS_PER_TX>;
|
|
103
98
|
private requestedDimensions: PrivateKernelResetDimensions;
|
|
104
99
|
|
|
105
100
|
constructor(
|
|
106
101
|
private previousKernelOutput: PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>,
|
|
107
102
|
private executionStack: PrivateCallExecutionResult[],
|
|
108
103
|
private noteHashNullifierCounterMap: Map<number, number>,
|
|
109
|
-
private
|
|
104
|
+
private splitCounter: number,
|
|
110
105
|
) {
|
|
111
106
|
this.previousKernel = previousKernelOutput.publicInputs;
|
|
112
107
|
this.requestedDimensions = PrivateKernelResetDimensions.empty();
|
|
113
|
-
this.
|
|
114
|
-
this.
|
|
115
|
-
this.
|
|
108
|
+
this.noteHashResetActions = ReadRequestResetActions.empty(MAX_NOTE_HASH_READ_REQUESTS_PER_TX);
|
|
109
|
+
this.nullifierResetActions = ReadRequestResetActions.empty(MAX_NULLIFIER_READ_REQUESTS_PER_TX);
|
|
110
|
+
this.transientDataSquashingHints = makeTuple(
|
|
116
111
|
MAX_NULLIFIERS_PER_TX,
|
|
117
|
-
() => new
|
|
112
|
+
() => new TransientDataSquashingHint(MAX_NULLIFIERS_PER_TX, MAX_NOTE_HASHES_PER_TX),
|
|
118
113
|
);
|
|
119
114
|
this.nextIteration = executionStack[this.executionStack.length - 1]?.publicInputs;
|
|
120
115
|
}
|
|
@@ -143,7 +138,7 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
143
138
|
}
|
|
144
139
|
}
|
|
145
140
|
|
|
146
|
-
async build(oracle:
|
|
141
|
+
async build(oracle: PrivateKernelOracle, noteHashLeafIndexMap: Map<bigint, bigint>) {
|
|
147
142
|
if (privateKernelResetDimensionNames.every(name => !this.requestedDimensions[name])) {
|
|
148
143
|
throw new Error('Reset is not required.');
|
|
149
144
|
}
|
|
@@ -162,122 +157,131 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
162
157
|
allowRemainder,
|
|
163
158
|
);
|
|
164
159
|
|
|
165
|
-
const previousVkMembershipWitness = await oracle.getVkMembershipWitness(
|
|
166
|
-
|
|
167
|
-
|
|
160
|
+
const previousVkMembershipWitness = await oracle.getVkMembershipWitness(
|
|
161
|
+
this.previousKernelOutput.verificationKey.keyAsFields,
|
|
162
|
+
);
|
|
163
|
+
const vkData = new VkData(
|
|
168
164
|
this.previousKernelOutput.verificationKey,
|
|
169
165
|
Number(previousVkMembershipWitness.leafIndex),
|
|
170
|
-
|
|
166
|
+
previousVkMembershipWitness.siblingPath,
|
|
171
167
|
);
|
|
168
|
+
const previousKernelData = new PrivateKernelData(this.previousKernelOutput.publicInputs, vkData);
|
|
172
169
|
|
|
173
|
-
this.
|
|
174
|
-
this.
|
|
175
|
-
dimensions.
|
|
176
|
-
dimensions.
|
|
170
|
+
this.reduceReadRequestActions(
|
|
171
|
+
this.noteHashResetActions,
|
|
172
|
+
dimensions.NOTE_HASH_PENDING_READ,
|
|
173
|
+
dimensions.NOTE_HASH_SETTLED_READ,
|
|
177
174
|
);
|
|
178
|
-
this.
|
|
179
|
-
this.
|
|
180
|
-
dimensions.
|
|
181
|
-
dimensions.
|
|
175
|
+
this.reduceReadRequestActions(
|
|
176
|
+
this.nullifierResetActions,
|
|
177
|
+
dimensions.NULLIFIER_PENDING_READ,
|
|
178
|
+
dimensions.NULLIFIER_SETTLED_READ,
|
|
182
179
|
);
|
|
183
180
|
|
|
181
|
+
// TODO: Enable padding when we have a better idea what are the final amounts we should pad to.
|
|
182
|
+
const paddedSideEffects = PaddedSideEffects.empty();
|
|
183
|
+
|
|
184
184
|
return new PrivateKernelResetCircuitPrivateInputs(
|
|
185
185
|
previousKernelData,
|
|
186
|
+
paddedSideEffects,
|
|
186
187
|
new PrivateKernelResetHints(
|
|
187
|
-
await
|
|
188
|
+
await buildNoteHashReadRequestHintsFromResetActions(
|
|
188
189
|
oracle,
|
|
189
190
|
this.previousKernel.validationRequests.noteHashReadRequests,
|
|
190
191
|
this.previousKernel.end.noteHashes,
|
|
191
|
-
this.
|
|
192
|
+
this.noteHashResetActions,
|
|
192
193
|
noteHashLeafIndexMap,
|
|
193
194
|
),
|
|
194
|
-
await
|
|
195
|
+
await buildNullifierReadRequestHintsFromResetActions(
|
|
195
196
|
{ getNullifierMembershipWitness: getNullifierMembershipWitnessResolver(oracle) },
|
|
196
197
|
this.previousKernel.validationRequests.nullifierReadRequests,
|
|
197
|
-
this.
|
|
198
|
+
this.nullifierResetActions,
|
|
198
199
|
),
|
|
199
200
|
await getMasterSecretKeysAndAppKeyGenerators(
|
|
200
201
|
this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators,
|
|
202
|
+
dimensions.KEY_VALIDATION,
|
|
201
203
|
oracle,
|
|
202
204
|
),
|
|
203
|
-
this.
|
|
204
|
-
this.validationRequestsSplitCounter,
|
|
205
|
+
this.transientDataSquashingHints,
|
|
205
206
|
),
|
|
206
207
|
dimensions,
|
|
207
208
|
);
|
|
208
209
|
}
|
|
209
210
|
|
|
210
|
-
private
|
|
211
|
-
|
|
211
|
+
private reduceReadRequestActions<NUM_READS extends number>(
|
|
212
|
+
resetActions: ReadRequestResetActions<NUM_READS>,
|
|
212
213
|
maxPending: number,
|
|
213
214
|
maxSettled: number,
|
|
214
215
|
) {
|
|
215
216
|
let numPending = 0;
|
|
216
217
|
let numSettled = 0;
|
|
217
|
-
for (let i = 0; i <
|
|
218
|
-
const
|
|
219
|
-
if (
|
|
218
|
+
for (let i = 0; i < resetActions.actions.length; i++) {
|
|
219
|
+
const action = resetActions.actions[i];
|
|
220
|
+
if (action === ReadRequestActionEnum.READ_AS_PENDING) {
|
|
220
221
|
if (numPending < maxPending) {
|
|
221
222
|
numPending++;
|
|
222
223
|
} else {
|
|
223
|
-
|
|
224
|
+
resetActions.actions[i] = ReadRequestActionEnum.SKIP;
|
|
224
225
|
}
|
|
225
|
-
} else if (
|
|
226
|
+
} else if (action === ReadRequestActionEnum.READ_AS_SETTLED) {
|
|
226
227
|
if (numSettled < maxSettled) {
|
|
227
228
|
numSettled++;
|
|
228
229
|
} else {
|
|
229
|
-
|
|
230
|
+
resetActions.actions[i] = ReadRequestActionEnum.SKIP;
|
|
230
231
|
}
|
|
231
232
|
}
|
|
232
233
|
}
|
|
233
234
|
|
|
234
|
-
|
|
235
|
+
resetActions.pendingReadHints = resetActions.pendingReadHints.slice(0, maxPending);
|
|
235
236
|
}
|
|
236
237
|
|
|
237
238
|
private needsResetNoteHashReadRequests(forceResetAll = false) {
|
|
238
|
-
const numCurr =
|
|
239
|
-
const numNext = this.nextIteration ?
|
|
239
|
+
const numCurr = this.previousKernel.validationRequests.noteHashReadRequests.claimedLength;
|
|
240
|
+
const numNext = this.nextIteration ? this.nextIteration.noteHashReadRequests.claimedLength : 0;
|
|
240
241
|
const maxAmountToKeep = !this.nextIteration || forceResetAll ? 0 : MAX_NOTE_HASH_READ_REQUESTS_PER_TX;
|
|
241
242
|
if (numCurr + numNext <= maxAmountToKeep) {
|
|
242
243
|
return false;
|
|
243
244
|
}
|
|
244
245
|
|
|
245
246
|
const futureNoteHashes = collectNested(this.executionStack, executionResult => {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
noteHash => new ScopedNoteHash(noteHash, executionResult.publicInputs.callContext.contractAddress)
|
|
249
|
-
);
|
|
247
|
+
return executionResult.publicInputs.noteHashes
|
|
248
|
+
.getActiveItems()
|
|
249
|
+
.map(noteHash => new ScopedNoteHash(noteHash, executionResult.publicInputs.callContext.contractAddress));
|
|
250
250
|
});
|
|
251
251
|
|
|
252
|
-
const
|
|
252
|
+
const resetActions = getNoteHashReadRequestResetActions(
|
|
253
253
|
this.previousKernel.validationRequests.noteHashReadRequests,
|
|
254
254
|
this.previousKernel.end.noteHashes,
|
|
255
255
|
futureNoteHashes,
|
|
256
256
|
);
|
|
257
257
|
|
|
258
|
-
const numPendingReads =
|
|
259
|
-
const numSettledReads =
|
|
260
|
-
(accum,
|
|
258
|
+
const numPendingReads = resetActions.pendingReadHints.length;
|
|
259
|
+
const numSettledReads = resetActions.actions.reduce(
|
|
260
|
+
(accum, action) => accum + (action === ReadRequestActionEnum.READ_AS_SETTLED ? 1 : 0),
|
|
261
261
|
0,
|
|
262
262
|
);
|
|
263
263
|
|
|
264
264
|
if (!this.nextIteration) {
|
|
265
|
-
this.
|
|
266
|
-
this.requestedDimensions.
|
|
267
|
-
this.requestedDimensions.
|
|
265
|
+
this.noteHashResetActions = resetActions;
|
|
266
|
+
this.requestedDimensions.NOTE_HASH_PENDING_READ = numPendingReads;
|
|
267
|
+
this.requestedDimensions.NOTE_HASH_SETTLED_READ = numSettledReads;
|
|
268
268
|
} else {
|
|
269
269
|
// Pick only one dimension to reset if next iteration is not empty.
|
|
270
270
|
if (numPendingReads > numSettledReads) {
|
|
271
|
-
this.requestedDimensions.
|
|
272
|
-
this.
|
|
273
|
-
|
|
271
|
+
this.requestedDimensions.NOTE_HASH_PENDING_READ = numPendingReads;
|
|
272
|
+
this.noteHashResetActions.actions = assertLength(
|
|
273
|
+
resetActions.actions.map(action =>
|
|
274
|
+
action === ReadRequestActionEnum.READ_AS_PENDING ? action : ReadRequestActionEnum.SKIP,
|
|
275
|
+
),
|
|
274
276
|
MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
|
|
275
277
|
);
|
|
276
|
-
this.
|
|
278
|
+
this.noteHashResetActions.pendingReadHints = resetActions.pendingReadHints;
|
|
277
279
|
} else {
|
|
278
|
-
this.requestedDimensions.
|
|
279
|
-
this.
|
|
280
|
-
|
|
280
|
+
this.requestedDimensions.NOTE_HASH_SETTLED_READ = numSettledReads;
|
|
281
|
+
this.noteHashResetActions.actions = assertLength(
|
|
282
|
+
resetActions.actions.map(action =>
|
|
283
|
+
action === ReadRequestActionEnum.READ_AS_SETTLED ? action : ReadRequestActionEnum.SKIP,
|
|
284
|
+
),
|
|
281
285
|
MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
|
|
282
286
|
);
|
|
283
287
|
}
|
|
@@ -287,49 +291,52 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
287
291
|
}
|
|
288
292
|
|
|
289
293
|
private needsResetNullifierReadRequests(forceResetAll = false) {
|
|
290
|
-
const numCurr =
|
|
291
|
-
const numNext = this.nextIteration ?
|
|
294
|
+
const numCurr = this.previousKernel.validationRequests.nullifierReadRequests.claimedLength;
|
|
295
|
+
const numNext = this.nextIteration ? this.nextIteration.nullifierReadRequests.claimedLength : 0;
|
|
292
296
|
const maxAmountToKeep = !this.nextIteration || forceResetAll ? 0 : MAX_NULLIFIER_READ_REQUESTS_PER_TX;
|
|
293
297
|
if (numCurr + numNext <= maxAmountToKeep) {
|
|
294
298
|
return false;
|
|
295
299
|
}
|
|
296
300
|
|
|
297
301
|
const futureNullifiers = collectNested(this.executionStack, executionResult => {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
nullifier => new ScopedNullifier(nullifier, executionResult.publicInputs.callContext.contractAddress)
|
|
301
|
-
);
|
|
302
|
+
return executionResult.publicInputs.nullifiers
|
|
303
|
+
.getActiveItems()
|
|
304
|
+
.map(nullifier => new ScopedNullifier(nullifier, executionResult.publicInputs.callContext.contractAddress));
|
|
302
305
|
});
|
|
303
306
|
|
|
304
|
-
const
|
|
307
|
+
const resetActions = getNullifierReadRequestResetActions(
|
|
305
308
|
this.previousKernel.validationRequests.nullifierReadRequests,
|
|
306
309
|
this.previousKernel.end.nullifiers,
|
|
307
310
|
futureNullifiers,
|
|
308
311
|
);
|
|
309
312
|
|
|
310
|
-
const numPendingReads =
|
|
311
|
-
const numSettledReads =
|
|
312
|
-
(accum,
|
|
313
|
+
const numPendingReads = resetActions.pendingReadHints.length;
|
|
314
|
+
const numSettledReads = resetActions.actions.reduce(
|
|
315
|
+
(accum, action) => accum + (action === ReadRequestActionEnum.READ_AS_SETTLED ? 1 : 0),
|
|
313
316
|
0,
|
|
314
317
|
);
|
|
315
318
|
|
|
316
319
|
if (!this.nextIteration) {
|
|
317
|
-
this.
|
|
318
|
-
this.requestedDimensions.
|
|
319
|
-
this.requestedDimensions.
|
|
320
|
+
this.nullifierResetActions = resetActions;
|
|
321
|
+
this.requestedDimensions.NULLIFIER_PENDING_READ = numPendingReads;
|
|
322
|
+
this.requestedDimensions.NULLIFIER_SETTLED_READ = numSettledReads;
|
|
320
323
|
} else {
|
|
321
324
|
// Pick only one dimension to reset if next iteration is not empty.
|
|
322
325
|
if (numPendingReads > numSettledReads) {
|
|
323
|
-
this.requestedDimensions.
|
|
324
|
-
this.
|
|
325
|
-
|
|
326
|
+
this.requestedDimensions.NULLIFIER_PENDING_READ = numPendingReads;
|
|
327
|
+
this.nullifierResetActions.actions = assertLength(
|
|
328
|
+
resetActions.actions.map(action =>
|
|
329
|
+
action === ReadRequestActionEnum.READ_AS_PENDING ? action : ReadRequestActionEnum.SKIP,
|
|
330
|
+
),
|
|
326
331
|
MAX_NULLIFIER_READ_REQUESTS_PER_TX,
|
|
327
332
|
);
|
|
328
|
-
this.
|
|
333
|
+
this.nullifierResetActions.pendingReadHints = resetActions.pendingReadHints;
|
|
329
334
|
} else {
|
|
330
|
-
this.requestedDimensions.
|
|
331
|
-
this.
|
|
332
|
-
|
|
335
|
+
this.requestedDimensions.NULLIFIER_SETTLED_READ = numSettledReads;
|
|
336
|
+
this.nullifierResetActions.actions = assertLength(
|
|
337
|
+
resetActions.actions.map(action =>
|
|
338
|
+
action === ReadRequestActionEnum.READ_AS_SETTLED ? action : ReadRequestActionEnum.SKIP,
|
|
339
|
+
),
|
|
333
340
|
MAX_NULLIFIER_READ_REQUESTS_PER_TX,
|
|
334
341
|
);
|
|
335
342
|
}
|
|
@@ -339,18 +346,14 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
339
346
|
}
|
|
340
347
|
|
|
341
348
|
private needsResetNullifierKeys() {
|
|
342
|
-
const numCurr =
|
|
343
|
-
|
|
344
|
-
);
|
|
345
|
-
const numNext = this.nextIteration
|
|
346
|
-
? countAccumulatedItems(this.nextIteration.keyValidationRequestsAndGenerators)
|
|
347
|
-
: 0;
|
|
349
|
+
const numCurr = this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators.claimedLength;
|
|
350
|
+
const numNext = this.nextIteration ? this.nextIteration.keyValidationRequestsAndGenerators.claimedLength : 0;
|
|
348
351
|
const maxAmountToKeep = !this.nextIteration ? 0 : MAX_KEY_VALIDATION_REQUESTS_PER_TX;
|
|
349
352
|
if (numCurr + numNext <= maxAmountToKeep) {
|
|
350
353
|
return false;
|
|
351
354
|
}
|
|
352
355
|
|
|
353
|
-
this.requestedDimensions.
|
|
356
|
+
this.requestedDimensions.KEY_VALIDATION = numCurr;
|
|
354
357
|
|
|
355
358
|
return true;
|
|
356
359
|
}
|
|
@@ -360,14 +363,16 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
360
363
|
this.numTransientData = 0;
|
|
361
364
|
|
|
362
365
|
const nextAccumNoteHashes =
|
|
363
|
-
|
|
364
|
-
countAccumulatedItems(this.nextIteration?.noteHashes ?? []);
|
|
366
|
+
this.previousKernel.end.noteHashes.claimedLength + (this.nextIteration?.noteHashes.claimedLength ?? 0);
|
|
365
367
|
const noteHashWillOverflow = nextAccumNoteHashes > MAX_NOTE_HASHES_PER_TX;
|
|
366
368
|
const nextAccumNullifiers =
|
|
367
|
-
|
|
368
|
-
countAccumulatedItems(this.nextIteration?.nullifiers ?? []);
|
|
369
|
+
this.previousKernel.end.nullifiers.claimedLength + (this.nextIteration?.nullifiers.claimedLength ?? 0);
|
|
369
370
|
const nullifierWillOverflow = nextAccumNullifiers > MAX_NULLIFIERS_PER_TX;
|
|
370
|
-
|
|
371
|
+
const nextAccumLogs =
|
|
372
|
+
this.previousKernel.end.privateLogs.claimedLength + (this.nextIteration?.privateLogs.claimedLength ?? 0);
|
|
373
|
+
const logsWillOverflow = nextAccumLogs > MAX_PRIVATE_LOGS_PER_TX;
|
|
374
|
+
|
|
375
|
+
if (this.nextIteration && !noteHashWillOverflow && !nullifierWillOverflow && !logsWillOverflow) {
|
|
371
376
|
return false;
|
|
372
377
|
}
|
|
373
378
|
|
|
@@ -379,35 +384,36 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
379
384
|
this.executionStack,
|
|
380
385
|
executionResult => executionResult.publicInputs.nullifierReadRequests,
|
|
381
386
|
);
|
|
387
|
+
// TODO(#15902): Collect future logs and only allow squashing a note hash when all its logs have been emitted
|
|
388
|
+
// (i.e. none of the future logs are linked to the to-be-squashed note hashes).
|
|
382
389
|
if (this.nextIteration) {
|
|
383
390
|
// If it's not the final reset, only one dimension will be reset at a time.
|
|
384
391
|
// The note hashes and nullifiers for the remaining read requests can't be squashed.
|
|
385
|
-
futureNoteHashReads.push(
|
|
386
|
-
|
|
387
|
-
);
|
|
388
|
-
futureNullifierReads.push(
|
|
389
|
-
...this.previousKernel.validationRequests.nullifierReadRequests.filter(r => !r.isEmpty()),
|
|
390
|
-
);
|
|
392
|
+
futureNoteHashReads.push(...this.previousKernel.validationRequests.noteHashReadRequests.getActiveItems());
|
|
393
|
+
futureNullifierReads.push(...this.previousKernel.validationRequests.nullifierReadRequests.getActiveItems());
|
|
391
394
|
}
|
|
392
395
|
|
|
393
|
-
const { numTransientData, hints:
|
|
396
|
+
const { numTransientData, hints: transientDataSquashingHints } = buildTransientDataHints(
|
|
394
397
|
this.previousKernel.end.noteHashes,
|
|
395
398
|
this.previousKernel.end.nullifiers,
|
|
396
399
|
futureNoteHashReads,
|
|
397
400
|
futureNullifierReads,
|
|
398
401
|
this.noteHashNullifierCounterMap,
|
|
399
|
-
this.
|
|
400
|
-
MAX_NOTE_HASHES_PER_TX,
|
|
401
|
-
MAX_NULLIFIERS_PER_TX,
|
|
402
|
+
this.splitCounter,
|
|
402
403
|
);
|
|
403
404
|
|
|
404
405
|
if (this.nextIteration && !numTransientData) {
|
|
405
406
|
const forceResetAll = true;
|
|
406
407
|
const canClearReadRequests =
|
|
407
408
|
(noteHashWillOverflow && this.needsResetNoteHashReadRequests(forceResetAll)) ||
|
|
408
|
-
(nullifierWillOverflow && this.needsResetNullifierReadRequests(forceResetAll))
|
|
409
|
+
(nullifierWillOverflow && this.needsResetNullifierReadRequests(forceResetAll)) ||
|
|
410
|
+
(logsWillOverflow && this.needsResetNoteHashReadRequests(forceResetAll));
|
|
409
411
|
if (!canClearReadRequests) {
|
|
410
|
-
const overflownData = noteHashWillOverflow
|
|
412
|
+
const overflownData = noteHashWillOverflow
|
|
413
|
+
? 'note hashes'
|
|
414
|
+
: nullifierWillOverflow
|
|
415
|
+
? 'nullifiers'
|
|
416
|
+
: 'private logs';
|
|
411
417
|
throw new Error(`Number of ${overflownData} exceeds the limit.`);
|
|
412
418
|
}
|
|
413
419
|
// Clearing the read requests might not be enough to squash the overflown data.
|
|
@@ -416,8 +422,8 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
416
422
|
}
|
|
417
423
|
|
|
418
424
|
this.numTransientData = numTransientData;
|
|
419
|
-
this.
|
|
420
|
-
this.requestedDimensions.
|
|
425
|
+
this.transientDataSquashingHints = transientDataSquashingHints;
|
|
426
|
+
this.requestedDimensions.TRANSIENT_DATA_SQUASHING = numTransientData;
|
|
421
427
|
|
|
422
428
|
return numTransientData > 0;
|
|
423
429
|
}
|
|
@@ -427,9 +433,11 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
427
433
|
throw new Error('`needsResetTransientData` must be run before `needsSiloNoteHashes`.');
|
|
428
434
|
}
|
|
429
435
|
|
|
430
|
-
const numNoteHashes = this.previousKernel.end.noteHashes
|
|
436
|
+
const numNoteHashes = this.previousKernel.end.noteHashes
|
|
437
|
+
.getActiveItems()
|
|
438
|
+
.filter(n => !n.contractAddress.isZero()).length;
|
|
431
439
|
const numToSilo = Math.max(0, numNoteHashes - this.numTransientData);
|
|
432
|
-
this.requestedDimensions.
|
|
440
|
+
this.requestedDimensions.NOTE_HASH_SILOING = numToSilo;
|
|
433
441
|
|
|
434
442
|
return numToSilo > 0;
|
|
435
443
|
}
|
|
@@ -439,13 +447,15 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
439
447
|
throw new Error('`needsResetTransientData` must be run before `needsSiloNullifiers`.');
|
|
440
448
|
}
|
|
441
449
|
|
|
442
|
-
const numNullifiers = this.previousKernel.end.nullifiers
|
|
450
|
+
const numNullifiers = this.previousKernel.end.nullifiers
|
|
451
|
+
.getActiveItems()
|
|
452
|
+
.filter(n => !n.contractAddress.isZero()).length;
|
|
443
453
|
const numToSilo = Math.max(0, numNullifiers - this.numTransientData);
|
|
444
454
|
// Include the first nullifier if there's something to silo.
|
|
445
455
|
// The reset circuit checks that capped_size must be greater than or equal to all non-empty nullifiers.
|
|
446
456
|
// Which includes the first nullifier, even though its contract address is always zero and doesn't need siloing.
|
|
447
457
|
const cappedSize = numToSilo ? numToSilo + 1 : 0;
|
|
448
|
-
this.requestedDimensions.
|
|
458
|
+
this.requestedDimensions.NULLIFIER_SILOING = cappedSize;
|
|
449
459
|
|
|
450
460
|
return numToSilo > 0;
|
|
451
461
|
}
|
|
@@ -456,16 +466,18 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
456
466
|
}
|
|
457
467
|
|
|
458
468
|
const privateLogs = this.previousKernel.end.privateLogs;
|
|
459
|
-
const numLogs = privateLogs.filter(l => !l.contractAddress.isZero()).length;
|
|
469
|
+
const numLogs = privateLogs.getActiveItems().filter(l => !l.contractAddress.isZero()).length;
|
|
460
470
|
|
|
461
471
|
const noteHashes = this.previousKernel.end.noteHashes;
|
|
462
|
-
const squashedNoteHashCounters = this.
|
|
463
|
-
.filter(h => h.noteHashIndex < noteHashes.
|
|
464
|
-
.map(h => noteHashes[h.noteHashIndex].counter);
|
|
465
|
-
const numSquashedLogs = privateLogs
|
|
472
|
+
const squashedNoteHashCounters = this.transientDataSquashingHints
|
|
473
|
+
.filter(h => h.noteHashIndex < noteHashes.claimedLength)
|
|
474
|
+
.map(h => noteHashes.array[h.noteHashIndex].counter);
|
|
475
|
+
const numSquashedLogs = privateLogs
|
|
476
|
+
.getActiveItems()
|
|
477
|
+
.filter(l => squashedNoteHashCounters.includes(l.inner.noteHashCounter)).length;
|
|
466
478
|
|
|
467
479
|
const numToSilo = numLogs - numSquashedLogs;
|
|
468
|
-
this.requestedDimensions.
|
|
480
|
+
this.requestedDimensions.PRIVATE_LOG_SILOING = numToSilo;
|
|
469
481
|
|
|
470
482
|
return numToSilo > 0;
|
|
471
483
|
}
|