@aztec/stdlib 0.0.1-commit.6c91f13 → 0.0.1-commit.6d63667d
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/abi/contract_artifact.d.ts +2 -2
- package/dest/abi/contract_artifact.d.ts.map +1 -1
- package/dest/abi/contract_artifact.js +1 -1
- package/dest/abi/function_call.d.ts +9 -1
- package/dest/abi/function_call.d.ts.map +1 -1
- package/dest/abi/selector.js +3 -1
- package/dest/abi/utils.d.ts +7 -1
- package/dest/abi/utils.d.ts.map +1 -1
- package/dest/abi/utils.js +7 -0
- package/dest/auth_witness/auth_witness.d.ts +2 -1
- package/dest/auth_witness/auth_witness.d.ts.map +1 -1
- package/dest/avm/avm.d.ts +62 -62
- package/dest/avm/avm_accumulated_data.d.ts +30 -3
- package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
- package/dest/avm/avm_accumulated_data.js +5 -2
- package/dest/avm/avm_circuit_public_inputs.d.ts +9 -9
- package/dest/avm/avm_circuit_public_inputs.js +3 -1
- package/dest/avm/avm_proving_request.d.ts +299 -299
- package/dest/avm/contract_storage_read.d.ts +13 -1
- package/dest/avm/contract_storage_read.d.ts.map +1 -1
- package/dest/avm/contract_storage_update_request.d.ts +13 -1
- package/dest/avm/contract_storage_update_request.d.ts.map +1 -1
- package/dest/avm/public_call_stack_item_compressed.d.ts +3 -1
- package/dest/avm/public_call_stack_item_compressed.d.ts.map +1 -1
- package/dest/avm/public_data_read.d.ts +10 -1
- package/dest/avm/public_data_read.d.ts.map +1 -1
- package/dest/avm/public_data_update_request.d.ts +10 -1
- package/dest/avm/public_data_update_request.d.ts.map +1 -1
- package/dest/avm/public_data_update_request.js +3 -1
- package/dest/avm/public_data_write.d.ts +7 -1
- package/dest/avm/public_data_write.d.ts.map +1 -1
- package/dest/avm/public_inner_call_request.d.ts +4 -1
- package/dest/avm/public_inner_call_request.d.ts.map +1 -1
- package/dest/avm/public_inner_call_request.js +3 -1
- package/dest/avm/revert_code.d.ts +4 -4
- package/dest/avm/revert_code.d.ts.map +1 -1
- package/dest/avm/revert_code.js +3 -1
- package/dest/aztec-address/index.js +4 -2
- package/dest/block/attestation_info.d.ts +5 -5
- package/dest/block/attestation_info.d.ts.map +1 -1
- package/dest/block/attestation_info.js +4 -4
- package/dest/block/block_hash.d.ts +18 -14
- package/dest/block/block_hash.d.ts.map +1 -1
- package/dest/block/block_hash.js +22 -20
- package/dest/block/block_parameter.d.ts +4 -3
- package/dest/block/block_parameter.d.ts.map +1 -1
- package/dest/block/block_parameter.js +2 -0
- package/dest/block/body.d.ts +1 -1
- package/dest/block/body.d.ts.map +1 -1
- package/dest/block/body.js +5 -2
- package/dest/block/checkpointed_l2_block.d.ts +20 -137
- package/dest/block/checkpointed_l2_block.d.ts.map +1 -1
- package/dest/block/checkpointed_l2_block.js +7 -45
- package/dest/block/in_block.d.ts +9 -9
- package/dest/block/in_block.d.ts.map +1 -1
- package/dest/block/in_block.js +4 -4
- package/dest/block/index.d.ts +1 -3
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +0 -2
- package/dest/block/l2_block.d.ts +57 -57
- package/dest/block/l2_block.d.ts.map +1 -1
- package/dest/block/l2_block.js +64 -108
- package/dest/block/l2_block_source.d.ts +298 -68
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_source.js +25 -6
- package/dest/block/l2_block_stream/index.d.ts +2 -1
- package/dest/block/l2_block_stream/index.d.ts.map +1 -1
- package/dest/block/l2_block_stream/index.js +1 -0
- package/dest/block/l2_block_stream/interfaces.d.ts +15 -5
- package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts +8 -3
- package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.js +106 -31
- package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +24 -16
- package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_tips_memory_store.js +55 -61
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +49 -0
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -0
- package/dest/block/l2_block_stream/l2_tips_store_base.js +179 -0
- package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
- package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
- package/dest/block/test/l2_tips_store_test_suite.js +478 -38
- package/dest/block/validate_block_result.d.ts +24 -24
- package/dest/block/validate_block_result.d.ts.map +1 -1
- package/dest/block/validate_block_result.js +18 -17
- package/dest/checkpoint/checkpoint.d.ts +30 -20
- package/dest/checkpoint/checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.js +19 -6
- package/dest/checkpoint/checkpoint_info.d.ts +32 -3
- package/dest/checkpoint/checkpoint_info.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint_info.js +34 -1
- package/dest/checkpoint/index.d.ts +2 -1
- package/dest/checkpoint/index.d.ts.map +1 -1
- package/dest/checkpoint/index.js +1 -0
- package/dest/checkpoint/published_checkpoint.d.ts +17 -15
- package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/published_checkpoint.js +4 -3
- package/dest/config/node-rpc-config.js +1 -1
- package/dest/contract/complete_address.d.ts +4 -1
- package/dest/contract/complete_address.d.ts.map +1 -1
- package/dest/contract/contract_address.js +1 -1
- package/dest/contract/contract_class_id.d.ts +1 -1
- package/dest/contract/contract_class_id.js +1 -1
- package/dest/contract/contract_deployment_data.d.ts +5 -5
- package/dest/contract/index.d.ts +1 -3
- package/dest/contract/index.d.ts.map +1 -1
- package/dest/contract/index.js +0 -2
- package/dest/contract/interfaces/contract_instance.d.ts +16 -16
- package/dest/contract/private_function.d.ts +1 -1
- package/dest/contract/private_function.d.ts.map +1 -1
- package/dest/contract/private_function.js +2 -3
- package/dest/contract/private_function_membership_proof.d.ts +1 -1
- package/dest/contract/private_function_membership_proof.js +1 -1
- package/dest/database-version/database_version.d.ts +58 -0
- package/dest/database-version/database_version.d.ts.map +1 -0
- package/dest/database-version/database_version.js +69 -0
- package/dest/database-version/version_manager.d.ts +3 -49
- package/dest/database-version/version_manager.d.ts.map +1 -1
- package/dest/database-version/version_manager.js +1 -64
- package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts +2 -2
- package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts.map +1 -1
- package/dest/delayed_public_mutable/delayed_public_mutable_values.js +7 -10
- package/dest/deserialization/index.d.ts +11 -0
- package/dest/deserialization/index.d.ts.map +1 -0
- package/dest/deserialization/index.js +10 -0
- package/dest/epoch-helpers/index.d.ts +3 -1
- package/dest/epoch-helpers/index.d.ts.map +1 -1
- package/dest/epoch-helpers/index.js +5 -1
- package/dest/errors/proving_error.d.ts +2 -2
- package/dest/errors/proving_error.d.ts.map +1 -1
- package/dest/gas/gas.js +3 -1
- package/dest/gas/gas_fees.js +3 -1
- package/dest/hash/hash.js +2 -2
- package/dest/hash/map_slot.d.ts +1 -1
- package/dest/hash/map_slot.d.ts.map +1 -1
- package/dest/hash/map_slot.js +4 -3
- package/dest/interfaces/api_limit.d.ts +3 -1
- package/dest/interfaces/api_limit.d.ts.map +1 -1
- package/dest/interfaces/api_limit.js +2 -0
- package/dest/interfaces/archiver.d.ts +6 -6
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +22 -17
- package/dest/interfaces/aztec-node-admin.d.ts +73 -31
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +5 -3
- package/dest/interfaces/aztec-node.d.ts +74 -76
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +15 -16
- package/dest/interfaces/block-builder.d.ts +22 -14
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/block-builder.js +7 -0
- package/dest/interfaces/configs.d.ts +12 -7
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +2 -1
- package/dest/interfaces/get_logs_response.d.ts +16 -9
- package/dest/interfaces/get_logs_response.d.ts.map +1 -1
- package/dest/interfaces/l2_logs_source.d.ts +14 -5
- package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
- package/dest/interfaces/p2p.d.ts +7 -9
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/p2p.js +3 -4
- package/dest/interfaces/prover-broker.d.ts +16 -1
- package/dest/interfaces/prover-broker.d.ts.map +1 -1
- package/dest/interfaces/prover-broker.js +4 -1
- package/dest/interfaces/prover-client.d.ts +15 -1
- package/dest/interfaces/prover-client.d.ts.map +1 -1
- package/dest/interfaces/prover-client.js +12 -1
- package/dest/interfaces/proving-job.d.ts +218 -218
- package/dest/interfaces/proving-job.d.ts.map +1 -1
- package/dest/interfaces/proving-job.js +1 -7
- package/dest/interfaces/server_circuit_prover.d.ts +4 -3
- package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
- package/dest/interfaces/tx_provider.d.ts +3 -3
- package/dest/interfaces/tx_provider.d.ts.map +1 -1
- package/dest/interfaces/validator.d.ts +140 -18
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +5 -3
- package/dest/kernel/claimed_length_array.js +3 -1
- package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +6 -5
- package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/build_note_hash_read_request_hints.js +19 -10
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -3
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/build_nullifier_read_request_hints.js +16 -8
- package/dest/kernel/hints/key_validation_hint.d.ts +2 -1
- package/dest/kernel/hints/key_validation_hint.d.ts.map +1 -1
- package/dest/kernel/hints/key_validation_request.d.ts +2 -1
- package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
- package/dest/kernel/hints/key_validation_request_and_generator.d.ts +6 -1
- package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +1 -1
- package/dest/kernel/hints/private_kernel_reset_hints.d.ts +13 -1
- package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
- package/dest/kernel/hints/read_request.d.ts +7 -1
- package/dest/kernel/hints/read_request.d.ts.map +1 -1
- package/dest/kernel/hints/read_request_hints.d.ts +7 -1
- package/dest/kernel/hints/read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/transient_data_squashing_hint.js +3 -1
- package/dest/kernel/log_hash.js +3 -1
- package/dest/kernel/private_accumulated_data.d.ts +23 -1
- package/dest/kernel/private_accumulated_data.d.ts.map +1 -1
- package/dest/kernel/private_call_data.d.ts +25 -1
- package/dest/kernel/private_call_data.d.ts.map +1 -1
- package/dest/kernel/private_call_request.d.ts +16 -1
- package/dest/kernel/private_call_request.d.ts.map +1 -1
- package/dest/kernel/private_circuit_public_inputs.d.ts +74 -1
- package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +31 -1
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_data.d.ts +7 -1
- package/dest/kernel/private_kernel_data.d.ts.map +1 -1
- package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +22 -1
- package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts +7 -1
- package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts +4 -1
- package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +10 -1
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +23 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_log_data.js +5 -2
- package/dest/kernel/private_to_avm_accumulated_data.d.ts +2 -2
- package/dest/kernel/private_to_avm_accumulated_data.js +5 -2
- package/dest/kernel/private_to_public_accumulated_data.js +3 -1
- package/dest/kernel/private_to_rollup_accumulated_data.d.ts +17 -1
- package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
- package/dest/kernel/private_to_rollup_accumulated_data.js +3 -1
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +16 -1
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_validation_requests.d.ts +10 -1
- package/dest/kernel/private_validation_requests.d.ts.map +1 -1
- package/dest/kernel/private_validation_requests.js +3 -1
- package/dest/kernel/public_call_request.d.ts +22 -1
- package/dest/kernel/public_call_request.d.ts.map +1 -1
- package/dest/kernel/public_call_request.js +5 -2
- package/dest/kernel/utils/optional_number.d.ts +7 -1
- package/dest/kernel/utils/optional_number.d.ts.map +1 -1
- package/dest/keys/derivation.d.ts +3 -3
- package/dest/keys/derivation.js +8 -8
- package/dest/keys/key_types.d.ts +1 -1
- package/dest/keys/public_keys.d.ts +5 -1
- package/dest/keys/public_keys.d.ts.map +1 -1
- package/dest/keys/utils.d.ts +1 -1
- package/dest/keys/utils.d.ts.map +1 -1
- package/dest/keys/utils.js +7 -3
- package/dest/l1-contracts/slash_factory.d.ts +1 -1
- package/dest/l1-contracts/slash_factory.d.ts.map +1 -1
- package/dest/l1-contracts/slash_factory.js +1 -0
- package/dest/logs/contract_class_log.js +3 -1
- package/dest/logs/extended_contract_class_log.d.ts +3 -1
- package/dest/logs/extended_contract_class_log.d.ts.map +1 -1
- package/dest/logs/extended_public_log.d.ts +17 -9
- package/dest/logs/extended_public_log.d.ts.map +1 -1
- package/dest/logs/log_id.d.ts +21 -14
- package/dest/logs/log_id.d.ts.map +1 -1
- package/dest/logs/log_id.js +20 -17
- package/dest/logs/private_log.js +3 -1
- package/dest/logs/public_log.js +3 -1
- package/dest/logs/siloed_tag.d.ts +1 -1
- package/dest/logs/siloed_tag.d.ts.map +1 -1
- package/dest/logs/siloed_tag.js +4 -3
- package/dest/messaging/in_hash.d.ts +4 -2
- package/dest/messaging/in_hash.d.ts.map +1 -1
- package/dest/messaging/in_hash.js +3 -1
- package/dest/messaging/inbox_leaf.d.ts +3 -1
- package/dest/messaging/inbox_leaf.d.ts.map +1 -1
- package/dest/messaging/l1_actor.d.ts +7 -1
- package/dest/messaging/l1_actor.d.ts.map +1 -1
- package/dest/messaging/l1_to_l2_message.d.ts +6 -1
- package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
- package/dest/messaging/l2_actor.d.ts +7 -1
- package/dest/messaging/l2_actor.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_membership.d.ts +88 -6
- package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_membership.js +160 -42
- package/dest/messaging/out_hash.d.ts +41 -3
- package/dest/messaging/out_hash.d.ts.map +1 -1
- package/dest/messaging/out_hash.js +54 -19
- package/dest/note/note_dao.d.ts +36 -5
- package/dest/note/note_dao.d.ts.map +1 -1
- package/dest/note/note_dao.js +15 -12
- package/dest/p2p/attestation_utils.d.ts +3 -3
- package/dest/p2p/attestation_utils.d.ts.map +1 -1
- package/dest/p2p/attestation_utils.js +1 -1
- package/dest/p2p/block_proposal.d.ts +102 -23
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +140 -39
- package/dest/p2p/checkpoint_attestation.d.ts +81 -0
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -0
- package/dest/p2p/{block_attestation.js → checkpoint_attestation.js} +22 -19
- package/dest/p2p/checkpoint_proposal.d.ts +167 -0
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
- package/dest/p2p/checkpoint_proposal.js +229 -0
- package/dest/p2p/consensus_payload.d.ts +9 -9
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +3 -5
- package/dest/p2p/constants.d.ts +3 -0
- package/dest/p2p/constants.d.ts.map +1 -0
- package/dest/p2p/constants.js +2 -0
- package/dest/p2p/gossipable.d.ts +4 -3
- package/dest/p2p/gossipable.d.ts.map +1 -1
- package/dest/p2p/gossipable.js +16 -5
- package/dest/p2p/index.d.ts +5 -2
- package/dest/p2p/index.d.ts.map +1 -1
- package/dest/p2p/index.js +4 -1
- package/dest/p2p/message_validator.d.ts +18 -3
- package/dest/p2p/message_validator.d.ts.map +1 -1
- package/dest/p2p/message_validator.js +2 -1
- package/dest/p2p/signature_utils.d.ts +5 -3
- package/dest/p2p/signature_utils.d.ts.map +1 -1
- package/dest/p2p/signature_utils.js +3 -1
- package/dest/p2p/signed_txs.d.ts +42 -0
- package/dest/p2p/signed_txs.d.ts.map +1 -0
- package/dest/p2p/signed_txs.js +75 -0
- package/dest/p2p/topic_type.d.ts +3 -2
- package/dest/p2p/topic_type.d.ts.map +1 -1
- package/dest/p2p/topic_type.js +10 -3
- package/dest/parity/parity_base_private_inputs.d.ts +3 -1
- package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
- package/dest/parity/parity_public_inputs.d.ts +4 -1
- package/dest/parity/parity_public_inputs.d.ts.map +1 -1
- package/dest/parity/parity_root_private_inputs.d.ts +2 -1
- package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
- package/dest/proofs/chonk_proof.d.ts +1 -1
- package/dest/proofs/chonk_proof.d.ts.map +1 -1
- package/dest/proofs/chonk_proof.js +9 -4
- package/dest/proofs/proof.d.ts +4 -1
- package/dest/proofs/proof.d.ts.map +1 -1
- package/dest/proofs/recursive_proof.d.ts +10 -1
- package/dest/proofs/recursive_proof.d.ts.map +1 -1
- package/dest/rollup/base_rollup_hints.d.ts +34 -1
- package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
- package/dest/rollup/block_constant_data.d.ts +12 -1
- package/dest/rollup/block_constant_data.d.ts.map +1 -1
- package/dest/rollup/block_headers_hash.js +1 -1
- package/dest/rollup/block_merge_rollup_private_inputs.d.ts +4 -1
- package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/block_rollup_public_inputs.d.ts +47 -11
- package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/block_rollup_public_inputs.js +8 -12
- package/dest/rollup/block_root_rollup_private_inputs.d.ts +64 -1
- package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_constant_data.d.ts +10 -1
- package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -1
- package/dest/rollup/checkpoint_constant_data.js +3 -1
- package/dest/rollup/checkpoint_header.d.ts +42 -12
- package/dest/rollup/checkpoint_header.d.ts.map +1 -1
- package/dest/rollup/checkpoint_header.js +49 -19
- package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +4 -1
- package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +41 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.js +10 -2
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +44 -3
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_root_rollup_private_inputs.js +13 -2
- package/dest/rollup/epoch_constant_data.d.ts +16 -1
- package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
- package/dest/rollup/root_rollup_private_inputs.d.ts +6 -1
- package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.d.ts +18 -3
- package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.js +9 -3
- package/dest/rollup/tree_snapshot_diff_hints.d.ts +24 -1
- package/dest/rollup/tree_snapshot_diff_hints.d.ts.map +1 -1
- package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +4 -1
- package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/tx_rollup_public_inputs.d.ts +29 -1
- package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
- package/dest/schemas/schemas.d.ts +1 -1
- package/dest/stats/stats.d.ts +1 -3
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +16 -10
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +60 -25
- package/dest/tests/jest.js +1 -1
- package/dest/tests/mocks.d.ts +74 -19
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +123 -57
- package/dest/trees/append_only_tree_snapshot.d.ts +13 -1
- package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
- package/dest/trees/append_only_tree_snapshot.js +3 -1
- package/dest/trees/nullifier_leaf.d.ts +13 -1
- package/dest/trees/nullifier_leaf.d.ts.map +1 -1
- package/dest/trees/nullifier_membership_witness.d.ts +10 -1
- package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
- package/dest/trees/public_data_leaf.d.ts +16 -1
- package/dest/trees/public_data_leaf.d.ts.map +1 -1
- package/dest/trees/public_data_witness.d.ts +11 -1
- package/dest/trees/public_data_witness.d.ts.map +1 -1
- package/dest/tx/block_header.d.ts +14 -2
- package/dest/tx/block_header.d.ts.map +1 -1
- package/dest/tx/block_header.js +8 -2
- package/dest/tx/call_context.d.ts +13 -1
- package/dest/tx/call_context.d.ts.map +1 -1
- package/dest/tx/call_context.js +3 -1
- package/dest/tx/capsule.d.ts +4 -1
- package/dest/tx/capsule.d.ts.map +1 -1
- package/dest/tx/execution_payload.d.ts +9 -1
- package/dest/tx/execution_payload.d.ts.map +1 -1
- package/dest/tx/function_data.d.ts +4 -2
- package/dest/tx/function_data.d.ts.map +1 -1
- package/dest/tx/global_variable_builder.d.ts +2 -2
- package/dest/tx/global_variable_builder.d.ts.map +1 -1
- package/dest/tx/global_variables.d.ts +9 -1
- package/dest/tx/global_variables.d.ts.map +1 -1
- package/dest/tx/global_variables.js +3 -1
- package/dest/tx/hashed_values.d.ts +7 -1
- package/dest/tx/hashed_values.d.ts.map +1 -1
- package/dest/tx/in_tx.d.ts +4 -4
- package/dest/tx/index.d.ts +1 -2
- package/dest/tx/index.d.ts.map +1 -1
- package/dest/tx/index.js +0 -1
- package/dest/tx/indexed_tx_effect.d.ts +5 -5
- package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
- package/dest/tx/indexed_tx_effect.js +3 -2
- package/dest/tx/partial_state_reference.d.ts +4 -1
- package/dest/tx/partial_state_reference.d.ts.map +1 -1
- package/dest/tx/private_execution_result.d.ts +23 -6
- package/dest/tx/private_execution_result.d.ts.map +1 -1
- package/dest/tx/private_execution_result.js +4 -21
- package/dest/tx/private_tx_constant_data.d.ts +16 -1
- package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
- package/dest/tx/profiling.d.ts +149 -26
- package/dest/tx/profiling.d.ts.map +1 -1
- package/dest/tx/profiling.js +44 -7
- package/dest/tx/protocol_contracts.d.ts +1 -1
- package/dest/tx/public_call_request_with_calldata.d.ts +7 -1
- package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
- package/dest/tx/public_call_request_with_calldata.js +3 -1
- package/dest/tx/state_reference.d.ts +3 -1
- package/dest/tx/state_reference.d.ts.map +1 -1
- package/dest/tx/state_reference.js +3 -1
- package/dest/tx/tree_snapshots.js +3 -1
- package/dest/tx/tx.d.ts +24 -1
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +9 -4
- package/dest/tx/tx_context.d.ts +2 -1
- package/dest/tx/tx_context.d.ts.map +1 -1
- package/dest/tx/tx_effect.d.ts +32 -6
- package/dest/tx/tx_effect.d.ts.map +1 -1
- package/dest/tx/tx_effect.js +3 -8
- package/dest/tx/tx_execution_request.d.ts +30 -1
- package/dest/tx/tx_execution_request.d.ts.map +1 -1
- package/dest/tx/tx_execution_request.js +6 -2
- package/dest/tx/tx_hash.d.ts +2 -1
- package/dest/tx/tx_hash.d.ts.map +1 -1
- package/dest/tx/tx_receipt.d.ts +47 -13
- package/dest/tx/tx_receipt.d.ts.map +1 -1
- package/dest/tx/tx_receipt.js +46 -15
- package/dest/tx/tx_request.d.ts +6 -1
- package/dest/tx/tx_request.d.ts.map +1 -1
- package/dest/tx/validator/error_texts.d.ts +2 -1
- package/dest/tx/validator/error_texts.d.ts.map +1 -1
- package/dest/tx/validator/error_texts.js +2 -0
- package/dest/types/shared.d.ts +4 -1
- package/dest/types/shared.d.ts.map +1 -1
- package/dest/validators/schemas.d.ts +8 -8
- package/dest/vks/verification_key.d.ts +22 -1
- package/dest/vks/verification_key.d.ts.map +1 -1
- package/dest/vks/vk_data.d.ts +7 -1
- package/dest/vks/vk_data.d.ts.map +1 -1
- package/dest/zkpassport/index.d.ts +3 -4
- package/dest/zkpassport/index.d.ts.map +1 -1
- package/dest/zkpassport/index.js +9 -9
- package/package.json +25 -12
- package/src/abi/contract_artifact.ts +10 -10
- package/src/abi/utils.ts +17 -0
- package/src/block/attestation_info.ts +9 -6
- package/src/block/block_hash.ts +26 -25
- package/src/block/block_parameter.ts +4 -2
- package/src/block/body.ts +2 -1
- package/src/block/checkpointed_l2_block.ts +8 -58
- package/src/block/in_block.ts +5 -5
- package/src/block/index.ts +0 -2
- package/src/block/l2_block.ts +102 -149
- package/src/block/l2_block_source.ts +123 -44
- package/src/block/l2_block_stream/index.ts +1 -0
- package/src/block/l2_block_stream/interfaces.ts +15 -4
- package/src/block/l2_block_stream/l2_block_stream.ts +130 -39
- package/src/block/l2_block_stream/l2_tips_memory_store.ts +62 -56
- package/src/block/l2_block_stream/l2_tips_store_base.ts +226 -0
- package/src/block/test/l2_tips_store_test_suite.ts +480 -36
- package/src/block/validate_block_result.ts +40 -35
- package/src/checkpoint/checkpoint.ts +34 -11
- package/src/checkpoint/checkpoint_info.ts +45 -2
- package/src/checkpoint/index.ts +1 -0
- package/src/checkpoint/published_checkpoint.ts +4 -3
- package/src/config/node-rpc-config.ts +1 -1
- package/src/contract/contract_address.ts +1 -1
- package/src/contract/contract_class_id.ts +1 -1
- package/src/contract/index.ts +0 -2
- package/src/contract/private_function.ts +2 -3
- package/src/contract/private_function_membership_proof.ts +1 -1
- package/src/database-version/database_version.ts +87 -0
- package/src/database-version/version_manager.ts +1 -77
- package/src/delayed_public_mutable/delayed_public_mutable_values.ts +9 -10
- package/src/deserialization/index.ts +21 -0
- package/src/epoch-helpers/index.ts +10 -1
- package/src/hash/hash.ts +2 -2
- package/src/hash/map_slot.ts +3 -2
- package/src/interfaces/api_limit.ts +2 -0
- package/src/interfaces/archiver.ts +26 -24
- package/src/interfaces/aztec-node-admin.ts +8 -4
- package/src/interfaces/aztec-node.ts +109 -128
- package/src/interfaces/block-builder.ts +40 -23
- package/src/interfaces/configs.ts +3 -0
- package/src/interfaces/l2_logs_source.ts +17 -4
- package/src/interfaces/p2p.ts +8 -12
- package/src/interfaces/prover-broker.ts +22 -0
- package/src/interfaces/prover-client.ts +22 -0
- package/src/interfaces/proving-job.ts +2 -11
- package/src/interfaces/server_circuit_prover.ts +3 -2
- package/src/interfaces/tx_provider.ts +2 -2
- package/src/interfaces/validator.ts +62 -14
- package/src/kernel/hints/build_note_hash_read_request_hints.ts +20 -12
- package/src/kernel/hints/build_nullifier_read_request_hints.ts +17 -14
- package/src/keys/derivation.ts +8 -8
- package/src/keys/key_types.ts +1 -1
- package/src/keys/utils.ts +7 -3
- package/src/l1-contracts/slash_factory.ts +1 -0
- package/src/logs/log_id.ts +22 -18
- package/src/logs/siloed_tag.ts +3 -2
- package/src/messaging/in_hash.ts +3 -1
- package/src/messaging/l2_to_l1_membership.ts +178 -52
- package/src/messaging/out_hash.ts +62 -21
- package/src/note/note_dao.ts +18 -13
- package/src/p2p/attestation_utils.ts +3 -3
- package/src/p2p/block_proposal.ts +213 -46
- package/src/p2p/{block_attestation.ts → checkpoint_attestation.ts} +31 -25
- package/src/p2p/checkpoint_proposal.ts +355 -0
- package/src/p2p/consensus_payload.ts +5 -7
- package/src/p2p/constants.ts +3 -0
- package/src/p2p/gossipable.ts +14 -4
- package/src/p2p/index.ts +4 -1
- package/src/p2p/message_validator.ts +14 -2
- package/src/p2p/signature_utils.ts +3 -1
- package/src/p2p/signed_txs.ts +88 -0
- package/src/p2p/topic_type.ts +4 -3
- package/src/proofs/chonk_proof.ts +9 -5
- package/src/rollup/block_headers_hash.ts +1 -1
- package/src/rollup/block_rollup_public_inputs.ts +5 -11
- package/src/rollup/checkpoint_header.ts +63 -20
- package/src/rollup/checkpoint_rollup_public_inputs.ts +12 -0
- package/src/rollup/checkpoint_root_rollup_private_inputs.ts +14 -1
- package/src/rollup/root_rollup_public_inputs.ts +9 -0
- package/src/stats/stats.ts +0 -2
- package/src/tests/factories.ts +56 -40
- package/src/tests/jest.ts +1 -1
- package/src/tests/mocks.ts +213 -91
- package/src/tx/block_header.ts +11 -3
- package/src/tx/global_variable_builder.ts +1 -1
- package/src/tx/index.ts +0 -1
- package/src/tx/indexed_tx_effect.ts +3 -2
- package/src/tx/private_execution_result.ts +1 -16
- package/src/tx/profiling.ts +46 -4
- package/src/tx/tx.ts +10 -9
- package/src/tx/tx_effect.ts +0 -9
- package/src/tx/tx_execution_request.ts +2 -0
- package/src/tx/tx_receipt.ts +75 -18
- package/src/tx/validator/error_texts.ts +3 -0
- package/src/zkpassport/index.ts +11 -12
- package/dest/block/l2_block_code_to_purge.d.ts +0 -12
- package/dest/block/l2_block_code_to_purge.d.ts.map +0 -1
- package/dest/block/l2_block_code_to_purge.js +0 -61
- package/dest/block/l2_block_header.d.ts +0 -98
- package/dest/block/l2_block_header.d.ts.map +0 -1
- package/dest/block/l2_block_header.js +0 -153
- package/dest/block/l2_block_new.d.ts +0 -135
- package/dest/block/l2_block_new.d.ts.map +0 -1
- package/dest/block/l2_block_new.js +0 -152
- package/dest/contract/contract_class_metadata.d.ts +0 -8
- package/dest/contract/contract_class_metadata.d.ts.map +0 -1
- package/dest/contract/contract_class_metadata.js +0 -1
- package/dest/contract/contract_metadata.d.ts +0 -7
- package/dest/contract/contract_metadata.d.ts.map +0 -1
- package/dest/contract/contract_metadata.js +0 -1
- package/dest/database-version/index.d.ts +0 -2
- package/dest/database-version/index.d.ts.map +0 -1
- package/dest/database-version/index.js +0 -1
- package/dest/p2p/block_attestation.d.ts +0 -80
- package/dest/p2p/block_attestation.d.ts.map +0 -1
- package/dest/tx/content_commitment.d.ts +0 -49
- package/dest/tx/content_commitment.d.ts.map +0 -1
- package/dest/tx/content_commitment.js +0 -90
- package/src/block/l2_block_code_to_purge.ts +0 -88
- package/src/block/l2_block_header.ts +0 -246
- package/src/block/l2_block_new.ts +0 -207
- package/src/contract/contract_class_metadata.ts +0 -8
- package/src/contract/contract_metadata.ts +0 -7
- package/src/database-version/index.ts +0 -1
- package/src/tx/content_commitment.ts +0 -113
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
|
+
import type { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
-
import type {
|
|
3
|
+
import type { LoggerBindings } from '@aztec/foundation/log';
|
|
4
4
|
|
|
5
5
|
import type { L2Block } from '../block/l2_block.js';
|
|
6
6
|
import type { ChainConfig, SequencerConfig } from '../config/chain-config.js';
|
|
7
7
|
import type { L1RollupConstants } from '../epoch-helpers/index.js';
|
|
8
8
|
import type { Gas } from '../gas/gas.js';
|
|
9
|
-
import type { MerkleTreeWriteOperations } from '../trees/index.js';
|
|
10
9
|
import type { BlockHeader } from '../tx/block_header.js';
|
|
11
|
-
import type { GlobalVariables } from '../tx/global_variables.js';
|
|
10
|
+
import type { CheckpointGlobalVariables, GlobalVariables } from '../tx/global_variables.js';
|
|
12
11
|
import type { FailedTx, ProcessedTx } from '../tx/processed_tx.js';
|
|
13
12
|
import { Tx } from '../tx/tx.js';
|
|
14
13
|
import type { TxValidator } from '../tx/validator/tx_validator.js';
|
|
14
|
+
import type { MerkleTreeWriteOperations } from './merkle_tree_operations.js';
|
|
15
15
|
import type { ProcessedTxHandler } from './processed-tx-handler.js';
|
|
16
16
|
|
|
17
17
|
/** The interface to a block builder. Generates an L2 block out of a set of processed txs. */
|
|
@@ -47,16 +47,6 @@ export interface PublicProcessorValidator {
|
|
|
47
47
|
preprocessValidator?: TxValidator<Tx>;
|
|
48
48
|
nullifierCache?: { addNullifiers: (nullifiers: Buffer[]) => void };
|
|
49
49
|
}
|
|
50
|
-
export interface BuildBlockResult {
|
|
51
|
-
block: L2Block;
|
|
52
|
-
publicGas: Gas;
|
|
53
|
-
publicProcessorDuration: number;
|
|
54
|
-
numMsgs: number;
|
|
55
|
-
numTxs: number;
|
|
56
|
-
failedTxs: FailedTx[];
|
|
57
|
-
blockBuildingTimer: Timer;
|
|
58
|
-
usedTxs: Tx[];
|
|
59
|
-
}
|
|
60
50
|
|
|
61
51
|
export type FullNodeBlockBuilderConfig = Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration'> &
|
|
62
52
|
Pick<ChainConfig, 'l1ChainId' | 'rollupVersion'> &
|
|
@@ -72,18 +62,45 @@ export const FullNodeBlockBuilderConfigKeys: (keyof FullNodeBlockBuilderConfig)[
|
|
|
72
62
|
'fakeThrowAfterProcessingTxCount',
|
|
73
63
|
] as const;
|
|
74
64
|
|
|
75
|
-
|
|
76
|
-
|
|
65
|
+
/** Thrown when no valid transactions are available to include in a block after processing, and this is not the first block in a checkpoint. */
|
|
66
|
+
export class NoValidTxsError extends Error {
|
|
67
|
+
constructor(public readonly failedTxs: FailedTx[]) {
|
|
68
|
+
super('No valid transactions to include in block');
|
|
69
|
+
this.name = 'NoValidTxsError';
|
|
70
|
+
}
|
|
71
|
+
}
|
|
77
72
|
|
|
78
|
-
|
|
73
|
+
/** Result of building a block within a checkpoint. */
|
|
74
|
+
export type BuildBlockInCheckpointResult = {
|
|
75
|
+
block: L2Block;
|
|
76
|
+
publicGas: Gas;
|
|
77
|
+
publicProcessorDuration: number;
|
|
78
|
+
numTxs: number;
|
|
79
|
+
failedTxs: FailedTx[];
|
|
80
|
+
usedTxs: Tx[];
|
|
81
|
+
usedTxBlobFields: number;
|
|
82
|
+
};
|
|
79
83
|
|
|
84
|
+
/** Interface for building blocks within a checkpoint context. */
|
|
85
|
+
export interface ICheckpointBlockBuilder {
|
|
80
86
|
buildBlock(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
pendingTxs: Iterable<Tx> | AsyncIterable<Tx>,
|
|
88
|
+
blockNumber: BlockNumber,
|
|
89
|
+
timestamp: bigint,
|
|
90
|
+
opts: PublicProcessorLimits,
|
|
91
|
+
): Promise<BuildBlockInCheckpointResult>;
|
|
92
|
+
}
|
|
87
93
|
|
|
94
|
+
/** Interface for creating checkpoint builders. */
|
|
95
|
+
export interface ICheckpointsBuilder {
|
|
88
96
|
getFork(blockNumber: BlockNumber): Promise<MerkleTreeWriteOperations>;
|
|
97
|
+
|
|
98
|
+
startCheckpoint(
|
|
99
|
+
checkpointNumber: CheckpointNumber,
|
|
100
|
+
constants: CheckpointGlobalVariables,
|
|
101
|
+
l1ToL2Messages: Fr[],
|
|
102
|
+
previousCheckpointOutHashes: Fr[],
|
|
103
|
+
fork: MerkleTreeWriteOperations,
|
|
104
|
+
bindings?: LoggerBindings,
|
|
105
|
+
): Promise<ICheckpointBlockBuilder>;
|
|
89
106
|
}
|
|
@@ -67,6 +67,8 @@ export interface SequencerConfig {
|
|
|
67
67
|
blockDurationMs?: number;
|
|
68
68
|
/** Have sequencer build and publish an empty checkpoint if there are no txs */
|
|
69
69
|
buildCheckpointIfEmpty?: boolean;
|
|
70
|
+
/** Skip pushing proposed blocks to archiver (default: false) */
|
|
71
|
+
skipPushProposedBlocksToArchiver?: boolean;
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
export const SequencerConfigSchema = zodFor<SequencerConfig>()(
|
|
@@ -100,6 +102,7 @@ export const SequencerConfigSchema = zodFor<SequencerConfig>()(
|
|
|
100
102
|
shuffleAttestationOrdering: z.boolean().optional(),
|
|
101
103
|
blockDurationMs: z.number().positive().optional(),
|
|
102
104
|
buildCheckpointIfEmpty: z.boolean().optional(),
|
|
105
|
+
skipPushProposedBlocksToArchiver: z.boolean().optional(),
|
|
103
106
|
}),
|
|
104
107
|
);
|
|
105
108
|
|
|
@@ -12,16 +12,29 @@ import type { GetContractClassLogsResponse, GetPublicLogsResponse } from './get_
|
|
|
12
12
|
*/
|
|
13
13
|
export interface L2LogsSource {
|
|
14
14
|
/**
|
|
15
|
-
* Gets
|
|
15
|
+
* Gets private logs that match any of the `tags`. For each tag, an array of matching logs is returned. An empty
|
|
16
16
|
* array implies no logs match that tag.
|
|
17
|
+
* @param tags - The tags to search for.
|
|
18
|
+
* @param page - The page number (0-indexed) for pagination.
|
|
19
|
+
* @returns An array of log arrays, one per tag. Returns at most 10 logs per tag per page. If 10 logs are returned
|
|
20
|
+
* for a tag, the caller should fetch the next page to check for more logs.
|
|
17
21
|
*/
|
|
18
|
-
getPrivateLogsByTags(tags: SiloedTag[]): Promise<TxScopedL2Log[][]>;
|
|
22
|
+
getPrivateLogsByTags(tags: SiloedTag[], page?: number): Promise<TxScopedL2Log[][]>;
|
|
19
23
|
|
|
20
24
|
/**
|
|
21
|
-
* Gets
|
|
25
|
+
* Gets public logs that match any of the `tags` from the specified contract. For each tag, an array of matching
|
|
22
26
|
* logs is returned. An empty array implies no logs match that tag.
|
|
27
|
+
* @param contractAddress - The contract address to search logs for.
|
|
28
|
+
* @param tags - The tags to search for.
|
|
29
|
+
* @param page - The page number (0-indexed) for pagination.
|
|
30
|
+
* @returns An array of log arrays, one per tag. Returns at most 10 logs per tag per page. If 10 logs are returned
|
|
31
|
+
* for a tag, the caller should fetch the next page to check for more logs.
|
|
23
32
|
*/
|
|
24
|
-
getPublicLogsByTagsFromContract(
|
|
33
|
+
getPublicLogsByTagsFromContract(
|
|
34
|
+
contractAddress: AztecAddress,
|
|
35
|
+
tags: Tag[],
|
|
36
|
+
page?: number,
|
|
37
|
+
): Promise<TxScopedL2Log[][]>;
|
|
25
38
|
|
|
26
39
|
/**
|
|
27
40
|
* Gets public logs based on the provided filter.
|
package/src/interfaces/p2p.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
|
2
2
|
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { CheckpointAttestation } from '../p2p/checkpoint_attestation.js';
|
|
6
6
|
import type { P2PClientType } from '../p2p/client_type.js';
|
|
7
7
|
import { type ApiSchemaFor, optional, schemas } from '../schemas/index.js';
|
|
8
8
|
import { Tx } from '../tx/tx.js';
|
|
@@ -52,21 +52,18 @@ export interface P2PApiWithoutAttestations {
|
|
|
52
52
|
|
|
53
53
|
export interface P2PApiWithAttestations extends P2PApiWithoutAttestations {
|
|
54
54
|
/**
|
|
55
|
-
* Queries the Attestation pool for attestations for the given slot
|
|
55
|
+
* Queries the Attestation pool for checkpoint attestations for the given slot
|
|
56
56
|
*
|
|
57
57
|
* @param slot - the slot to query
|
|
58
58
|
* @param proposalId - the proposal id to query, or undefined to query all proposals for the slot
|
|
59
|
-
* @returns
|
|
59
|
+
* @returns CheckpointAttestations
|
|
60
60
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
/** Deletes a given attestation manually from the p2p client attestation pool. */
|
|
64
|
-
deleteAttestation(attestation: BlockAttestation): Promise<void>;
|
|
61
|
+
getCheckpointAttestationsForSlot(slot: SlotNumber, proposalId?: string): Promise<CheckpointAttestation[]>;
|
|
65
62
|
}
|
|
66
63
|
|
|
67
64
|
export interface P2PClient extends P2PApiWithAttestations {
|
|
68
|
-
/** Manually adds
|
|
69
|
-
|
|
65
|
+
/** Manually adds checkpoint attestations to the p2p client attestation pool. */
|
|
66
|
+
addCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
|
|
70
67
|
}
|
|
71
68
|
|
|
72
69
|
export type P2PApi<T extends P2PClientType = P2PClientType.Full> = T extends P2PClientType.Full
|
|
@@ -78,10 +75,10 @@ export type P2PApiFull<T extends P2PClientType = P2PClientType.Full> = T extends
|
|
|
78
75
|
: P2PApiWithoutAttestations;
|
|
79
76
|
|
|
80
77
|
export const P2PApiSchema: ApiSchemaFor<P2PApi> = {
|
|
81
|
-
|
|
78
|
+
getCheckpointAttestationsForSlot: z
|
|
82
79
|
.function()
|
|
83
80
|
.args(schemas.SlotNumber, optional(z.string()))
|
|
84
|
-
.returns(z.array(
|
|
81
|
+
.returns(z.array(CheckpointAttestation.schema)),
|
|
85
82
|
getPendingTxs: z
|
|
86
83
|
.function()
|
|
87
84
|
.args(optional(z.number().gte(1).lte(MAX_RPC_TXS_LEN).default(MAX_RPC_TXS_LEN)), optional(TxHash.schema))
|
|
@@ -90,5 +87,4 @@ export const P2PApiSchema: ApiSchemaFor<P2PApi> = {
|
|
|
90
87
|
getPendingTxCount: z.function().returns(schemas.Integer),
|
|
91
88
|
getEncodedEnr: z.function().returns(z.string().optional()),
|
|
92
89
|
getPeers: z.function().args(optional(z.boolean())).returns(z.array(PeerInfoSchema)),
|
|
93
|
-
deleteAttestation: z.function().args(BlockAttestation.schema).returns(z.void()),
|
|
94
90
|
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { EpochNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
|
|
1
3
|
import type { ProvingRequestType } from '../proofs/proving_request_type.js';
|
|
2
4
|
import type { ProofUri, ProvingJob, ProvingJobId, ProvingJobStatus } from './proving-job.js';
|
|
3
5
|
|
|
@@ -88,3 +90,23 @@ export interface ProvingJobConsumer {
|
|
|
88
90
|
}
|
|
89
91
|
|
|
90
92
|
export interface ProvingJobBroker extends ProvingJobProducer, ProvingJobConsumer {}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Debug interface for replaying proving jobs from stored inputs.
|
|
96
|
+
* Used for benchmarking different agent configurations against the same workload.
|
|
97
|
+
*/
|
|
98
|
+
export interface ProvingJobBrokerDebug {
|
|
99
|
+
/**
|
|
100
|
+
* Replays a proving job by re-enqueuing it with inputs from the configured proof store.
|
|
101
|
+
* The proof type is parsed from the job ID (format: epoch:typeName:hash).
|
|
102
|
+
* @param jobId - The original job ID to replay
|
|
103
|
+
* @param epochNumber - The epoch number to assign
|
|
104
|
+
* @param inputsUri - The proof inputs location
|
|
105
|
+
*/
|
|
106
|
+
replayProvingJob(
|
|
107
|
+
jobId: ProvingJobId,
|
|
108
|
+
type: ProvingRequestType,
|
|
109
|
+
epochNumber: EpochNumber,
|
|
110
|
+
inputsUri: ProofUri,
|
|
111
|
+
): Promise<ProvingJobStatus>;
|
|
112
|
+
}
|
|
@@ -17,6 +17,12 @@ export type ActualProverConfig = {
|
|
|
17
17
|
proverTestDelayMs: number;
|
|
18
18
|
/** If using realistic delays, what percentage of realistic times to apply. */
|
|
19
19
|
proverTestDelayFactor: number;
|
|
20
|
+
/**
|
|
21
|
+
* Whether to abort pending proving jobs when the orchestrator is cancelled.
|
|
22
|
+
* When false (default), jobs remain in the broker queue and can be reused on restart/reorg.
|
|
23
|
+
* When true, jobs are explicitly cancelled with the broker, which prevents reuse.
|
|
24
|
+
*/
|
|
25
|
+
cancelJobsOnStop: boolean;
|
|
20
26
|
};
|
|
21
27
|
|
|
22
28
|
/**
|
|
@@ -29,6 +35,8 @@ export type ProverConfig = ActualProverConfig & {
|
|
|
29
35
|
proverId?: EthAddress;
|
|
30
36
|
/** Number of proving agents to start within the prover. */
|
|
31
37
|
proverAgentCount: number;
|
|
38
|
+
/** Where to store proving request. Must be accessible to both prover node and agents. If not set will inline-encode the parameters */
|
|
39
|
+
proofStore?: string;
|
|
32
40
|
/** Store for failed proof inputs. */
|
|
33
41
|
failedProofStore?: string;
|
|
34
42
|
};
|
|
@@ -42,7 +50,9 @@ export const ProverConfigSchema = zodFor<ProverConfig>()(
|
|
|
42
50
|
proverTestDelayMs: z.number(),
|
|
43
51
|
proverTestDelayFactor: z.number(),
|
|
44
52
|
proverAgentCount: z.number(),
|
|
53
|
+
proofStore: z.string().optional(),
|
|
45
54
|
failedProofStore: z.string().optional(),
|
|
55
|
+
cancelJobsOnStop: z.boolean(),
|
|
46
56
|
}),
|
|
47
57
|
);
|
|
48
58
|
|
|
@@ -80,11 +90,23 @@ export const proverConfigMappings: ConfigMappingsType<ProverConfig> = {
|
|
|
80
90
|
description: 'The number of prover agents to start',
|
|
81
91
|
...numberConfigHelper(1),
|
|
82
92
|
},
|
|
93
|
+
proofStore: {
|
|
94
|
+
env: 'PROVER_PROOF_STORE',
|
|
95
|
+
description: 'Optional proof input store for the prover',
|
|
96
|
+
},
|
|
83
97
|
failedProofStore: {
|
|
84
98
|
env: 'PROVER_FAILED_PROOF_STORE',
|
|
85
99
|
description:
|
|
86
100
|
'Store for failed proof inputs. Google cloud storage is only supported at the moment. Set this value as gs://bucket-name/path/to/store.',
|
|
87
101
|
},
|
|
102
|
+
cancelJobsOnStop: {
|
|
103
|
+
env: 'PROVER_CANCEL_JOBS_ON_STOP',
|
|
104
|
+
description:
|
|
105
|
+
'Whether to abort pending proving jobs when the orchestrator is cancelled. ' +
|
|
106
|
+
'When false (default), jobs remain in the broker queue and can be reused on restart/reorg. ' +
|
|
107
|
+
'When true, jobs are explicitly cancelled with the broker, which prevents reuse.',
|
|
108
|
+
...booleanConfigHelper(false),
|
|
109
|
+
},
|
|
88
110
|
};
|
|
89
111
|
|
|
90
112
|
function parseProverId(str?: string) {
|
|
@@ -47,15 +47,6 @@ export type ProofAndVerificationKey<N extends number> = {
|
|
|
47
47
|
verificationKey: VerificationKeyData;
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
-
function schemaForRecursiveProofAndVerificationKey<N extends number>(
|
|
51
|
-
proofLength: N,
|
|
52
|
-
): ZodFor<ProofAndVerificationKey<N>> {
|
|
53
|
-
return z.object({
|
|
54
|
-
proof: RecursiveProof.schemaFor(proofLength),
|
|
55
|
-
verificationKey: VerificationKeyData.schema,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
|
|
59
50
|
export function makeProofAndVerificationKey<N extends number>(
|
|
60
51
|
proof: RecursiveProof<N>,
|
|
61
52
|
verificationKey: VerificationKeyData,
|
|
@@ -213,7 +204,7 @@ export type ProvingJobInputsMap = {
|
|
|
213
204
|
export const ProvingJobResult = z.discriminatedUnion('type', [
|
|
214
205
|
z.object({
|
|
215
206
|
type: z.literal(ProvingRequestType.PUBLIC_VM),
|
|
216
|
-
result:
|
|
207
|
+
result: RecursiveProof.schemaFor(AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED),
|
|
217
208
|
}),
|
|
218
209
|
z.object({
|
|
219
210
|
type: z.literal(ProvingRequestType.PUBLIC_CHONK_VERIFIER),
|
|
@@ -328,7 +319,7 @@ export const ProvingJobResult = z.discriminatedUnion('type', [
|
|
|
328
319
|
]);
|
|
329
320
|
export type ProvingJobResult = z.infer<typeof ProvingJobResult>;
|
|
330
321
|
export type ProvingJobResultsMap = {
|
|
331
|
-
[ProvingRequestType.PUBLIC_VM]:
|
|
322
|
+
[ProvingRequestType.PUBLIC_VM]: RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>;
|
|
332
323
|
[ProvingRequestType.PUBLIC_CHONK_VERIFIER]: PublicInputsAndRecursiveProof<
|
|
333
324
|
PublicChonkVerifierPublicInputs,
|
|
334
325
|
typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
|
|
@@ -9,6 +9,7 @@ import type { AvmCircuitInputs } from '../avm/avm.js';
|
|
|
9
9
|
import type { ParityBasePrivateInputs } from '../parity/parity_base_private_inputs.js';
|
|
10
10
|
import type { ParityPublicInputs } from '../parity/parity_public_inputs.js';
|
|
11
11
|
import type { ParityRootPrivateInputs } from '../parity/parity_root_private_inputs.js';
|
|
12
|
+
import type { RecursiveProof } from '../proofs/recursive_proof.js';
|
|
12
13
|
import type { BlockMergeRollupPrivateInputs } from '../rollup/block_merge_rollup_private_inputs.js';
|
|
13
14
|
import type { BlockRollupPublicInputs } from '../rollup/block_rollup_public_inputs.js';
|
|
14
15
|
import type {
|
|
@@ -34,7 +35,7 @@ import type { RootRollupPublicInputs } from '../rollup/root_rollup_public_inputs
|
|
|
34
35
|
import type { TxMergeRollupPrivateInputs } from '../rollup/tx_merge_rollup_private_inputs.js';
|
|
35
36
|
import type { TxRollupPublicInputs } from '../rollup/tx_rollup_public_inputs.js';
|
|
36
37
|
import type { Tx } from '../tx/tx.js';
|
|
37
|
-
import type {
|
|
38
|
+
import type { PublicInputsAndRecursiveProof } from './proving-job.js';
|
|
38
39
|
|
|
39
40
|
/**
|
|
40
41
|
* Generates proofs for parity and rollup circuits.
|
|
@@ -188,7 +189,7 @@ export interface ServerCircuitProver {
|
|
|
188
189
|
inputs: AvmCircuitInputs,
|
|
189
190
|
signal?: AbortSignal,
|
|
190
191
|
epochNumber?: number,
|
|
191
|
-
): Promise<
|
|
192
|
+
): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>>;
|
|
192
193
|
}
|
|
193
194
|
|
|
194
195
|
export type IVCProofVerificationResult = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { L2Block } from '@aztec/stdlib/block';
|
|
2
2
|
import type { BlockProposal } from '@aztec/stdlib/p2p';
|
|
3
3
|
import { type Tx, TxHash } from '@aztec/stdlib/tx';
|
|
4
4
|
|
|
@@ -13,5 +13,5 @@ export interface ITxProvider {
|
|
|
13
13
|
opts: { pinnedPeer: PeerId | undefined; deadline: Date },
|
|
14
14
|
): Promise<{ txs: Tx[]; missingTxs: TxHash[] }>;
|
|
15
15
|
|
|
16
|
-
getTxsForBlock(block:
|
|
16
|
+
getTxsForBlock(block: L2Block, opts: { deadline: Date }): Promise<{ txs: Tx[]; missingTxs: TxHash[] }>;
|
|
17
17
|
}
|
|
@@ -1,23 +1,32 @@
|
|
|
1
|
+
import type { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { SecretValue } from '@aztec/foundation/config';
|
|
2
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
5
|
import type { Signature } from '@aztec/foundation/eth-signature';
|
|
5
6
|
import { schemas, zodFor } from '@aztec/foundation/schemas';
|
|
6
7
|
import type { SequencerConfig, SlasherConfig } from '@aztec/stdlib/interfaces/server';
|
|
7
|
-
import type {
|
|
8
|
-
|
|
8
|
+
import type {
|
|
9
|
+
BlockProposal,
|
|
10
|
+
BlockProposalOptions,
|
|
11
|
+
CheckpointAttestation,
|
|
12
|
+
CheckpointLastBlockData,
|
|
13
|
+
CheckpointProposal,
|
|
14
|
+
CheckpointProposalOptions,
|
|
15
|
+
} from '@aztec/stdlib/p2p';
|
|
16
|
+
import type { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
17
|
+
import type { BlockHeader, Tx } from '@aztec/stdlib/tx';
|
|
18
|
+
import { type ValidatorHASignerConfig, ValidatorHASignerConfigSchema } from '@aztec/validator-ha-signer/config';
|
|
9
19
|
|
|
10
20
|
import type { PeerId } from '@libp2p/interface';
|
|
11
21
|
import { z } from 'zod';
|
|
12
22
|
|
|
13
23
|
import type { CommitteeAttestationsAndSigners } from '../block/index.js';
|
|
14
|
-
import type { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
15
24
|
import { AllowedElementSchema } from './allowed_element.js';
|
|
16
25
|
|
|
17
26
|
/**
|
|
18
27
|
* Validator client configuration
|
|
19
28
|
*/
|
|
20
|
-
export
|
|
29
|
+
export type ValidatorClientConfig = ValidatorHASignerConfig & {
|
|
21
30
|
/** The private keys of the validators participating in attestation duties */
|
|
22
31
|
validatorPrivateKeys?: SecretValue<`0x${string}`[]>;
|
|
23
32
|
|
|
@@ -36,15 +45,18 @@ export interface ValidatorClientConfig {
|
|
|
36
45
|
/** Whether to re-execute transactions in a block proposal before attesting */
|
|
37
46
|
validatorReexecute: boolean;
|
|
38
47
|
|
|
39
|
-
/** Will re-execute until this many milliseconds are left in the slot */
|
|
40
|
-
validatorReexecuteDeadlineMs: number;
|
|
41
|
-
|
|
42
48
|
/** Whether to always reexecute block proposals, even for non-validator nodes or when out of the currnet committee */
|
|
43
49
|
alwaysReexecuteBlockProposals?: boolean;
|
|
44
50
|
|
|
45
51
|
/** Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus */
|
|
46
52
|
fishermanMode?: boolean;
|
|
47
|
-
|
|
53
|
+
|
|
54
|
+
/** Skip checkpoint proposal validation and always attest (default: false) */
|
|
55
|
+
skipCheckpointProposalValidation?: boolean;
|
|
56
|
+
|
|
57
|
+
/** Skip pushing re-executed blocks to archiver (default: false) */
|
|
58
|
+
skipPushProposedBlocksToArchiver?: boolean;
|
|
59
|
+
};
|
|
48
60
|
|
|
49
61
|
export type ValidatorClientFullConfig = ValidatorClientConfig &
|
|
50
62
|
Pick<SequencerConfig, 'txPublicSetupAllowList' | 'broadcastInvalidBlockProposal'> &
|
|
@@ -57,15 +69,16 @@ export type ValidatorClientFullConfig = ValidatorClientConfig &
|
|
|
57
69
|
};
|
|
58
70
|
|
|
59
71
|
export const ValidatorClientConfigSchema = zodFor<Omit<ValidatorClientConfig, 'validatorPrivateKeys'>>()(
|
|
60
|
-
|
|
72
|
+
ValidatorHASignerConfigSchema.extend({
|
|
61
73
|
validatorAddresses: z.array(schemas.EthAddress).optional(),
|
|
62
74
|
disableValidator: z.boolean(),
|
|
63
75
|
disabledValidators: z.array(schemas.EthAddress),
|
|
64
76
|
attestationPollingIntervalMs: z.number().min(0),
|
|
65
77
|
validatorReexecute: z.boolean(),
|
|
66
|
-
validatorReexecuteDeadlineMs: z.number().min(0),
|
|
67
78
|
alwaysReexecuteBlockProposals: z.boolean().optional(),
|
|
68
79
|
fishermanMode: z.boolean().optional(),
|
|
80
|
+
skipCheckpointProposalValidation: z.boolean().optional(),
|
|
81
|
+
skipPushProposedBlocksToArchiver: z.boolean().optional(),
|
|
69
82
|
}),
|
|
70
83
|
);
|
|
71
84
|
|
|
@@ -78,25 +91,60 @@ export const ValidatorClientFullConfigSchema = zodFor<Omit<ValidatorClientFullCo
|
|
|
78
91
|
}),
|
|
79
92
|
);
|
|
80
93
|
|
|
94
|
+
export type CreateCheckpointProposalLastBlockData = Omit<CheckpointLastBlockData, 'txHashes'> & { txs: Tx[] };
|
|
95
|
+
|
|
81
96
|
export interface Validator {
|
|
82
97
|
start(): Promise<void>;
|
|
83
98
|
updateConfig(config: Partial<ValidatorClientFullConfig>): void;
|
|
84
99
|
|
|
85
100
|
// Block validation responsibilities
|
|
86
101
|
createBlockProposal(
|
|
87
|
-
|
|
88
|
-
|
|
102
|
+
blockHeader: BlockHeader,
|
|
103
|
+
indexWithinCheckpoint: number,
|
|
104
|
+
inHash: Fr,
|
|
89
105
|
archive: Fr,
|
|
90
106
|
txs: Tx[],
|
|
91
107
|
proposerAddress: EthAddress | undefined,
|
|
92
108
|
options: BlockProposalOptions,
|
|
93
109
|
): Promise<BlockProposal | undefined>;
|
|
94
|
-
|
|
110
|
+
|
|
111
|
+
/** Creates a checkpoint proposal for the last block in a checkpoint */
|
|
112
|
+
createCheckpointProposal(
|
|
113
|
+
checkpointHeader: CheckpointHeader,
|
|
114
|
+
archive: Fr,
|
|
115
|
+
lastBlockInfo: CreateCheckpointProposalLastBlockData | undefined,
|
|
116
|
+
proposerAddress: EthAddress | undefined,
|
|
117
|
+
options: CheckpointProposalOptions,
|
|
118
|
+
): Promise<CheckpointProposal>;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Validate a block proposal from a peer.
|
|
122
|
+
* Note: Validators do NOT attest to individual blocks - attestations are only for checkpoint proposals.
|
|
123
|
+
* @returns true if the proposal is valid, false otherwise
|
|
124
|
+
*/
|
|
125
|
+
validateBlockProposal(proposal: BlockProposal, sender: PeerId): Promise<boolean>;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Validate and attest to a checkpoint proposal from a peer.
|
|
129
|
+
* @returns Checkpoint attestations if valid, undefined otherwise
|
|
130
|
+
*/
|
|
131
|
+
attestToCheckpointProposal(
|
|
132
|
+
proposal: CheckpointProposal,
|
|
133
|
+
sender: PeerId,
|
|
134
|
+
): Promise<CheckpointAttestation[] | undefined>;
|
|
95
135
|
|
|
96
136
|
broadcastBlockProposal(proposal: BlockProposal): Promise<void>;
|
|
97
|
-
|
|
137
|
+
|
|
138
|
+
/** Collect own attestations for a checkpoint proposal (used when skipping p2p attestation collection) */
|
|
139
|
+
collectOwnAttestations(proposal: CheckpointProposal): Promise<CheckpointAttestation[]>;
|
|
140
|
+
|
|
141
|
+
/** Collect attestations from the p2p network for a checkpoint proposal */
|
|
142
|
+
collectAttestations(proposal: CheckpointProposal, required: number, deadline: Date): Promise<CheckpointAttestation[]>;
|
|
143
|
+
|
|
98
144
|
signAttestationsAndSigners(
|
|
99
145
|
attestationsAndSigners: CommitteeAttestationsAndSigners,
|
|
100
146
|
proposer: EthAddress,
|
|
147
|
+
slot: SlotNumber,
|
|
148
|
+
blockNumber: BlockNumber | CheckpointNumber,
|
|
101
149
|
): Promise<Signature>;
|
|
102
150
|
}
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
|
|
4
4
|
type NOTE_HASH_TREE_HEIGHT,
|
|
5
5
|
} from '@aztec/constants';
|
|
6
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
7
|
import type { MembershipWitness } from '@aztec/foundation/trees';
|
|
7
8
|
|
|
8
9
|
import type { ClaimedLengthArray } from '../claimed_length_array.js';
|
|
@@ -61,12 +62,11 @@ export function getNoteHashReadRequestResetActions(
|
|
|
61
62
|
|
|
62
63
|
export async function buildNoteHashReadRequestHintsFromResetActions<PENDING extends number, SETTLED extends number>(
|
|
63
64
|
oracle: {
|
|
64
|
-
getNoteHashMembershipWitness(
|
|
65
|
+
getNoteHashMembershipWitness(noteHash: Fr): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT> | undefined>;
|
|
65
66
|
},
|
|
66
67
|
noteHashReadRequests: ClaimedLengthArray<ScopedReadRequest, typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>,
|
|
67
68
|
noteHashes: ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>,
|
|
68
69
|
resetActions: ReadRequestResetActions<typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>,
|
|
69
|
-
noteHashLeafIndexMap: Map<bigint, bigint>,
|
|
70
70
|
maxPending: PENDING = MAX_NOTE_HASH_READ_REQUESTS_PER_TX as PENDING,
|
|
71
71
|
maxSettled: SETTLED = MAX_NOTE_HASH_READ_REQUESTS_PER_TX as SETTLED,
|
|
72
72
|
) {
|
|
@@ -76,18 +76,28 @@ export async function buildNoteHashReadRequestHintsFromResetActions<PENDING exte
|
|
|
76
76
|
builder.addPendingReadRequest(hint.readRequestIndex, hint.pendingValueIndex);
|
|
77
77
|
});
|
|
78
78
|
|
|
79
|
+
// Collect all settled read requests
|
|
80
|
+
const settledRequests: { index: number; readRequest: ScopedReadRequest }[] = [];
|
|
79
81
|
for (let i = 0; i < resetActions.actions.length; i++) {
|
|
80
82
|
if (resetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
|
|
81
|
-
|
|
82
|
-
const leafIndex = noteHashLeafIndexMap.get(readRequest.value.toBigInt());
|
|
83
|
-
if (leafIndex === undefined) {
|
|
84
|
-
throw new Error('Read request is reading an unknown note hash.');
|
|
85
|
-
}
|
|
86
|
-
const membershipWitness = await oracle.getNoteHashMembershipWitness(leafIndex);
|
|
87
|
-
builder.addSettledReadRequest(i, membershipWitness, readRequest.value);
|
|
83
|
+
settledRequests.push({ index: i, readRequest: noteHashReadRequests.array[i] });
|
|
88
84
|
}
|
|
89
85
|
}
|
|
90
86
|
|
|
87
|
+
// Fetch all membership witnesses in parallel
|
|
88
|
+
const membershipWitnesses = await Promise.all(
|
|
89
|
+
settledRequests.map(({ readRequest }) => oracle.getNoteHashMembershipWitness(readRequest.value)),
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
// Add settled read requests to builder
|
|
93
|
+
for (let i = 0; i < settledRequests.length; i++) {
|
|
94
|
+
const membershipWitness = membershipWitnesses[i];
|
|
95
|
+
if (!membershipWitness) {
|
|
96
|
+
throw new Error('Read request is reading an unknown note hash.');
|
|
97
|
+
}
|
|
98
|
+
builder.addSettledReadRequest(settledRequests[i].index, membershipWitness, settledRequests[i].readRequest.value);
|
|
99
|
+
}
|
|
100
|
+
|
|
91
101
|
const noteHashMap: Map<bigint, { noteHash: ScopedNoteHash; index: number }[]> = new Map();
|
|
92
102
|
noteHashes.getActiveItems().forEach((noteHash, index) => {
|
|
93
103
|
const value = noteHash.value.toBigInt();
|
|
@@ -101,11 +111,10 @@ export async function buildNoteHashReadRequestHintsFromResetActions<PENDING exte
|
|
|
101
111
|
|
|
102
112
|
export async function buildNoteHashReadRequestHints<PENDING extends number, SETTLED extends number>(
|
|
103
113
|
oracle: {
|
|
104
|
-
getNoteHashMembershipWitness(
|
|
114
|
+
getNoteHashMembershipWitness(noteHash: Fr): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT>>;
|
|
105
115
|
},
|
|
106
116
|
noteHashReadRequests: ClaimedLengthArray<ScopedReadRequest, typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>,
|
|
107
117
|
noteHashes: ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>,
|
|
108
|
-
noteHashLeafIndexMap: Map<bigint, bigint>,
|
|
109
118
|
futureNoteHashes: ScopedNoteHash[],
|
|
110
119
|
maxPending: PENDING = MAX_NOTE_HASH_READ_REQUESTS_PER_TX as PENDING,
|
|
111
120
|
maxSettled: SETTLED = MAX_NOTE_HASH_READ_REQUESTS_PER_TX as SETTLED,
|
|
@@ -116,7 +125,6 @@ export async function buildNoteHashReadRequestHints<PENDING extends number, SETT
|
|
|
116
125
|
noteHashReadRequests,
|
|
117
126
|
noteHashes,
|
|
118
127
|
resetActions,
|
|
119
|
-
noteHashLeafIndexMap,
|
|
120
128
|
maxPending,
|
|
121
129
|
maxSettled,
|
|
122
130
|
);
|
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
7
7
|
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
8
8
|
|
|
9
|
-
import { siloNullifier } from '../../hash/hash.js';
|
|
10
9
|
import type { NullifierLeafPreimage } from '../../trees/nullifier_leaf.js';
|
|
11
10
|
import type { ClaimedLengthArray } from '../claimed_length_array.js';
|
|
12
11
|
import type { ScopedNullifier } from '../nullifier.js';
|
|
@@ -74,7 +73,6 @@ export async function buildNullifierReadRequestHintsFromResetActions<PENDING ext
|
|
|
74
73
|
resetActions: ReadRequestResetActions<typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>,
|
|
75
74
|
maxPending: PENDING = MAX_NULLIFIER_READ_REQUESTS_PER_TX as PENDING,
|
|
76
75
|
maxSettled: SETTLED = MAX_NULLIFIER_READ_REQUESTS_PER_TX as SETTLED,
|
|
77
|
-
siloed = false,
|
|
78
76
|
) {
|
|
79
77
|
const builder = new NullifierReadRequestHintsBuilder(maxPending, maxSettled);
|
|
80
78
|
|
|
@@ -82,21 +80,28 @@ export async function buildNullifierReadRequestHintsFromResetActions<PENDING ext
|
|
|
82
80
|
builder.addPendingReadRequest(hint.readRequestIndex, hint.pendingValueIndex);
|
|
83
81
|
});
|
|
84
82
|
|
|
83
|
+
// Collect all settled read requests
|
|
84
|
+
const settledRequests: { index: number; readRequest: ScopedReadRequest }[] = [];
|
|
85
85
|
for (let i = 0; i < resetActions.actions.length; i++) {
|
|
86
86
|
if (resetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
|
|
87
|
-
|
|
88
|
-
const siloedValue = siloed
|
|
89
|
-
? readRequest.value
|
|
90
|
-
: await siloNullifier(readRequest.contractAddress, readRequest.value);
|
|
91
|
-
const membershipWitnessWithPreimage = await oracle.getNullifierMembershipWitness(siloedValue);
|
|
92
|
-
builder.addSettledReadRequest(
|
|
93
|
-
i,
|
|
94
|
-
membershipWitnessWithPreimage.membershipWitness,
|
|
95
|
-
membershipWitnessWithPreimage.leafPreimage,
|
|
96
|
-
);
|
|
87
|
+
settledRequests.push({ index: i, readRequest: nullifierReadRequests.array[i] });
|
|
97
88
|
}
|
|
98
89
|
}
|
|
99
90
|
|
|
91
|
+
const siloedValues = settledRequests.map(({ readRequest }) => readRequest.value);
|
|
92
|
+
|
|
93
|
+
// Fetch all membership witnesses in parallel
|
|
94
|
+
const membershipWitnesses = await Promise.all(siloedValues.map(value => oracle.getNullifierMembershipWitness(value)));
|
|
95
|
+
|
|
96
|
+
// Add settled read requests to builder
|
|
97
|
+
for (let i = 0; i < settledRequests.length; i++) {
|
|
98
|
+
builder.addSettledReadRequest(
|
|
99
|
+
settledRequests[i].index,
|
|
100
|
+
membershipWitnesses[i].membershipWitness,
|
|
101
|
+
membershipWitnesses[i].leafPreimage,
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
|
|
100
105
|
return builder.toHints();
|
|
101
106
|
}
|
|
102
107
|
|
|
@@ -109,7 +114,6 @@ export async function buildNullifierReadRequestHints<PENDING extends number, SET
|
|
|
109
114
|
futureNullifiers: ScopedNullifier[],
|
|
110
115
|
maxPending: PENDING = MAX_NULLIFIER_READ_REQUESTS_PER_TX as PENDING,
|
|
111
116
|
maxSettled: SETTLED = MAX_NULLIFIER_READ_REQUESTS_PER_TX as SETTLED,
|
|
112
|
-
siloed = false,
|
|
113
117
|
) {
|
|
114
118
|
const resetActions = getNullifierReadRequestResetActions(nullifierReadRequests, nullifiers, futureNullifiers);
|
|
115
119
|
return await buildNullifierReadRequestHintsFromResetActions(
|
|
@@ -118,6 +122,5 @@ export async function buildNullifierReadRequestHints<PENDING extends number, SET
|
|
|
118
122
|
resetActions,
|
|
119
123
|
maxPending,
|
|
120
124
|
maxSettled,
|
|
121
|
-
siloed,
|
|
122
125
|
);
|
|
123
126
|
}
|