@aztec/stdlib 0.0.1-commit.c7c42ec → 0.0.1-commit.c80b6263
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 +16 -9
- package/dest/block/block_hash.d.ts.map +1 -1
- package/dest/block/block_hash.js +23 -8
- 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 +8 -8
- 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 +56 -57
- package/dest/block/l2_block.d.ts.map +1 -1
- package/dest/block/l2_block.js +64 -107
- package/dest/block/l2_block_source.d.ts +296 -67
- 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_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 +1 -2
- package/dest/database-version/version_manager.d.ts +4 -2
- package/dest/database-version/version_manager.d.ts.map +1 -1
- package/dest/database-version/version_manager.js +3 -1
- 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/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 +20 -16
- package/dest/interfaces/aztec-node-admin.d.ts +67 -31
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +2 -2
- package/dest/interfaces/aztec-node.d.ts +70 -51
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +12 -9
- package/dest/interfaces/block-builder.d.ts +17 -14
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- 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 +3 -3
- 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-client.d.ts +10 -1
- package/dest/interfaces/prover-client.d.ts.map +1 -1
- package/dest/interfaces/prover-client.js +7 -1
- package/dest/interfaces/proving-job.d.ts +184 -184
- 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 +108 -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/public_keys.d.ts +5 -1
- package/dest/keys/public_keys.d.ts.map +1 -1
- 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 +7 -5
- package/dest/logs/extended_public_log.d.ts.map +1 -1
- package/dest/logs/log_id.d.ts +10 -6
- package/dest/logs/log_id.d.ts.map +1 -1
- package/dest/logs/log_id.js +5 -5
- package/dest/logs/private_log.js +3 -1
- package/dest/logs/public_log.js +3 -1
- 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/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 +3 -3
- 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 +4 -4
- package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
- package/dest/tx/indexed_tx_effect.js +2 -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 +12 -10
- 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 +36 -10
- 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 +101 -148
- package/src/block/l2_block_source.ts +121 -43
- 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/index.ts +0 -2
- package/src/contract/private_function.ts +1 -2
- 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/interfaces/api_limit.ts +2 -0
- package/src/interfaces/archiver.ts +24 -23
- package/src/interfaces/aztec-node-admin.ts +5 -2
- package/src/interfaces/aztec-node.ts +100 -68
- package/src/interfaces/block-builder.ts +33 -24
- 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-client.ts +15 -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/logs/log_id.ts +6 -6
- 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/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 +2 -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/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/tx/content_commitment.ts +0 -113
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
BlockNumber,
|
|
3
3
|
BlockNumberSchema,
|
|
4
4
|
CheckpointNumber,
|
|
5
|
+
CheckpointNumberSchema,
|
|
5
6
|
type EpochNumber,
|
|
6
7
|
type SlotNumber,
|
|
7
8
|
} from '@aztec/foundation/branded-types';
|
|
@@ -14,14 +15,14 @@ import { z } from 'zod';
|
|
|
14
15
|
import type { Checkpoint } from '../checkpoint/checkpoint.js';
|
|
15
16
|
import type { PublishedCheckpoint } from '../checkpoint/published_checkpoint.js';
|
|
16
17
|
import type { L1RollupConstants } from '../epoch-helpers/index.js';
|
|
18
|
+
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
17
19
|
import type { BlockHeader } from '../tx/block_header.js';
|
|
18
20
|
import type { IndexedTxEffect } from '../tx/indexed_tx_effect.js';
|
|
19
21
|
import type { TxHash } from '../tx/tx_hash.js';
|
|
20
22
|
import type { TxReceipt } from '../tx/tx_receipt.js';
|
|
21
|
-
import {
|
|
23
|
+
import type { CheckpointedL2Block } from './checkpointed_l2_block.js';
|
|
22
24
|
import type { L2Block } from './l2_block.js';
|
|
23
|
-
import type {
|
|
24
|
-
import type { ValidateBlockNegativeResult, ValidateBlockResult } from './validate_block_result.js';
|
|
25
|
+
import type { ValidateCheckpointNegativeResult, ValidateCheckpointResult } from './validate_block_result.js';
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* Interface of classes allowing for the retrieval of L2 blocks.
|
|
@@ -51,6 +52,20 @@ export interface L2BlockSource {
|
|
|
51
52
|
*/
|
|
52
53
|
getProvenBlockNumber(): Promise<BlockNumber>;
|
|
53
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Gets the number of the latest L2 block checkpointed seen by the block source implementation.
|
|
57
|
+
* @returns The number of the latest L2 block checkpointed seen by the block source implementation.
|
|
58
|
+
*/
|
|
59
|
+
getCheckpointedL2BlockNumber(): Promise<BlockNumber>;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Computes the finalized block number based on the proven block number.
|
|
63
|
+
* A block is considered finalized when it's 2 epochs behind the proven block.
|
|
64
|
+
* TODO(#13569): Compute proper finalized block number based on L1 finalized block.
|
|
65
|
+
* @returns The finalized block number.
|
|
66
|
+
*/
|
|
67
|
+
getFinalizedL2BlockNumber(): Promise<BlockNumber>;
|
|
68
|
+
|
|
54
69
|
/**
|
|
55
70
|
* Gets an l2 block header.
|
|
56
71
|
* @param number - The block number to return or 'latest' for the most recent one.
|
|
@@ -66,13 +81,15 @@ export interface L2BlockSource {
|
|
|
66
81
|
*/
|
|
67
82
|
getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined>;
|
|
68
83
|
|
|
84
|
+
getCheckpointedBlocks(from: BlockNumber, limit: number): Promise<CheckpointedL2Block[]>;
|
|
85
|
+
|
|
69
86
|
/**
|
|
70
|
-
* Retrieves a collection of
|
|
71
|
-
* @param checkpointNumber The first checkpoint to be retrieved
|
|
72
|
-
* @param limit The number of checkpoints to be retrieved
|
|
73
|
-
* @returns The collection of complete checkpoints
|
|
87
|
+
* Retrieves a collection of checkpoints.
|
|
88
|
+
* @param checkpointNumber The first checkpoint to be retrieved.
|
|
89
|
+
* @param limit The number of checkpoints to be retrieved.
|
|
90
|
+
* @returns The collection of complete checkpoints.
|
|
74
91
|
*/
|
|
75
|
-
|
|
92
|
+
getCheckpoints(checkpointNumber: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
|
|
76
93
|
|
|
77
94
|
/**
|
|
78
95
|
* Gets the checkpoints for a given epoch
|
|
@@ -99,7 +116,21 @@ export interface L2BlockSource {
|
|
|
99
116
|
* @param number - The block number to return.
|
|
100
117
|
* @returns The requested L2 block (or undefined if not found).
|
|
101
118
|
*/
|
|
102
|
-
|
|
119
|
+
getL2Block(number: BlockNumber): Promise<L2Block | undefined>;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Gets an L2 block by its hash.
|
|
123
|
+
* @param blockHash - The block hash to retrieve.
|
|
124
|
+
* @returns The requested L2 block (or undefined if not found).
|
|
125
|
+
*/
|
|
126
|
+
getL2BlockByHash(blockHash: Fr): Promise<L2Block | undefined>;
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Gets an L2 block by its archive root.
|
|
130
|
+
* @param archive - The archive root to retrieve.
|
|
131
|
+
* @returns The requested L2 block (or undefined if not found).
|
|
132
|
+
*/
|
|
133
|
+
getL2BlockByArchive(archive: Fr): Promise<L2Block | undefined>;
|
|
103
134
|
|
|
104
135
|
/**
|
|
105
136
|
* Gets a tx effect.
|
|
@@ -126,11 +157,11 @@ export interface L2BlockSource {
|
|
|
126
157
|
getL2EpochNumber(): Promise<EpochNumber | undefined>;
|
|
127
158
|
|
|
128
159
|
/**
|
|
129
|
-
* Returns all block headers for a given epoch.
|
|
160
|
+
* Returns all checkpointed block headers for a given epoch.
|
|
130
161
|
* @dev Use this method only with recent epochs, since it walks the block list backwards.
|
|
131
162
|
* @param epochNumber - The epoch number to return headers for.
|
|
132
163
|
*/
|
|
133
|
-
|
|
164
|
+
getCheckpointedBlockHeadersForEpoch(epochNumber: EpochNumber): Promise<BlockHeader[]>;
|
|
134
165
|
|
|
135
166
|
/**
|
|
136
167
|
* Returns whether the given epoch is completed on L1, based on the current L1 and L2 block numbers.
|
|
@@ -161,10 +192,10 @@ export interface L2BlockSource {
|
|
|
161
192
|
isPendingChainInvalid(): Promise<boolean>;
|
|
162
193
|
|
|
163
194
|
/**
|
|
164
|
-
* Returns the status of the pending chain validation. If the chain is invalid, reports the earliest consecutive
|
|
165
|
-
* that is invalid, along with the reason for being invalid, which can be used to trigger an invalidation.
|
|
195
|
+
* Returns the status of the pending chain validation. If the chain is invalid, reports the earliest consecutive
|
|
196
|
+
* checkpoint that is invalid, along with the reason for being invalid, which can be used to trigger an invalidation.
|
|
166
197
|
*/
|
|
167
|
-
getPendingChainValidationStatus(): Promise<
|
|
198
|
+
getPendingChainValidationStatus(): Promise<ValidateCheckpointResult>;
|
|
168
199
|
|
|
169
200
|
/** Force a sync. */
|
|
170
201
|
syncImmediate(): Promise<void>;
|
|
@@ -175,42 +206,44 @@ export interface L2BlockSource {
|
|
|
175
206
|
* Gets an l2 block. If a negative number is passed, the block returned is the most recent.
|
|
176
207
|
* @param number - The block number to return (inclusive).
|
|
177
208
|
* @returns The requested L2 block.
|
|
178
|
-
* @deprecated Use getL2BlockNew instead.
|
|
179
209
|
*/
|
|
180
210
|
getBlock(number: BlockNumber): Promise<L2Block | undefined>;
|
|
181
211
|
|
|
182
212
|
/**
|
|
183
|
-
* Returns all blocks for a given epoch.
|
|
213
|
+
* Returns all checkpointed blocks for a given epoch.
|
|
184
214
|
* @dev Use this method only with recent epochs, since it walks the block list backwards.
|
|
185
215
|
* @param epochNumber - The epoch number to return blocks for.
|
|
186
216
|
*/
|
|
187
|
-
|
|
217
|
+
getCheckpointedBlocksForEpoch(epochNumber: EpochNumber): Promise<CheckpointedL2Block[]>;
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Returns all blocks for a given slot.
|
|
221
|
+
* @dev Use this method only with recent slots, since it walks the block list backwards.
|
|
222
|
+
* @param slotNumber - The slot number to return blocks for.
|
|
223
|
+
*/
|
|
224
|
+
getBlocksForSlot(slotNumber: SlotNumber): Promise<L2Block[]>;
|
|
188
225
|
|
|
189
226
|
/**
|
|
190
|
-
* Gets a
|
|
227
|
+
* Gets a checkpointed block by its block hash.
|
|
191
228
|
* @param blockHash - The block hash to retrieve.
|
|
192
229
|
* @returns The requested block (or undefined if not found).
|
|
193
230
|
*/
|
|
194
|
-
|
|
231
|
+
getCheckpointedBlockByHash(blockHash: Fr): Promise<CheckpointedL2Block | undefined>;
|
|
195
232
|
|
|
196
233
|
/**
|
|
197
|
-
* Gets a
|
|
234
|
+
* Gets a checkpointed block by its archive root.
|
|
198
235
|
* @param archive - The archive root to retrieve.
|
|
199
236
|
* @returns The requested block (or undefined if not found).
|
|
200
237
|
*/
|
|
201
|
-
|
|
238
|
+
getCheckpointedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined>;
|
|
202
239
|
|
|
203
240
|
/**
|
|
204
241
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
205
242
|
* @param from - Number of the first block to return (inclusive).
|
|
206
243
|
* @param limit - The maximum number of blocks to return.
|
|
207
|
-
* @param proven - If true, only return blocks that have been proven.
|
|
208
244
|
* @returns The requested L2 blocks.
|
|
209
245
|
*/
|
|
210
|
-
getBlocks(from: BlockNumber, limit: number
|
|
211
|
-
|
|
212
|
-
/** Equivalent to getBlocks but includes publish data. */
|
|
213
|
-
getPublishedBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<PublishedL2Block[]>;
|
|
246
|
+
getBlocks(from: BlockNumber, limit: number): Promise<L2Block[]>;
|
|
214
247
|
}
|
|
215
248
|
|
|
216
249
|
/**
|
|
@@ -222,7 +255,7 @@ export interface L2BlockSink {
|
|
|
222
255
|
* @param block - The L2 block to add.
|
|
223
256
|
* @throws If block number is not incremental (i.e., not exactly one more than the last stored block).
|
|
224
257
|
*/
|
|
225
|
-
addBlock(block:
|
|
258
|
+
addBlock(block: L2Block): Promise<void>;
|
|
226
259
|
}
|
|
227
260
|
|
|
228
261
|
/**
|
|
@@ -230,26 +263,42 @@ export interface L2BlockSink {
|
|
|
230
263
|
* see L2BlockSourceEvents for the events emitted.
|
|
231
264
|
*/
|
|
232
265
|
export type ArchiverEmitter = TypedEventEmitter<{
|
|
233
|
-
[L2BlockSourceEvents.
|
|
266
|
+
[L2BlockSourceEvents.L2PruneUnproven]: (args: L2PruneUnprovenEvent) => void;
|
|
267
|
+
[L2BlockSourceEvents.L2PruneUncheckpointed]: (args: L2PruneUncheckpointedEvent) => void;
|
|
234
268
|
[L2BlockSourceEvents.L2BlockProven]: (args: L2BlockProvenEvent) => void;
|
|
235
|
-
[L2BlockSourceEvents.
|
|
269
|
+
[L2BlockSourceEvents.InvalidAttestationsCheckpointDetected]: (args: InvalidCheckpointDetectedEvent) => void;
|
|
270
|
+
[L2BlockSourceEvents.L2BlocksCheckpointed]: (args: L2CheckpointEvent) => void;
|
|
236
271
|
}>;
|
|
237
|
-
export interface L2BlockSourceEventEmitter extends L2BlockSource
|
|
272
|
+
export interface L2BlockSourceEventEmitter extends L2BlockSource {
|
|
273
|
+
events: ArchiverEmitter;
|
|
274
|
+
}
|
|
238
275
|
|
|
239
276
|
/**
|
|
240
277
|
* Identifier for L2 block tags.
|
|
241
|
-
* -
|
|
278
|
+
* - proposed: Latest block proposed on L2.
|
|
279
|
+
* - checkpointed: Checkpointed block on L1.
|
|
242
280
|
* - proven: Proven block on L1.
|
|
243
281
|
* - finalized: Proven block on a finalized L1 block (not implemented, set to proven for now).
|
|
244
282
|
*/
|
|
245
|
-
export type L2BlockTag = '
|
|
283
|
+
export type L2BlockTag = 'proposed' | 'checkpointed' | 'proven' | 'finalized';
|
|
246
284
|
|
|
247
285
|
/** Tips of the L2 chain. */
|
|
248
|
-
export type L2Tips =
|
|
286
|
+
export type L2Tips = {
|
|
287
|
+
proposed: L2BlockId;
|
|
288
|
+
checkpointed: L2TipId;
|
|
289
|
+
proven: L2TipId;
|
|
290
|
+
finalized: L2TipId;
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
export const GENESIS_CHECKPOINT_HEADER_HASH = CheckpointHeader.empty().hash();
|
|
249
294
|
|
|
250
295
|
/** Identifies a block by number and hash. */
|
|
251
296
|
export type L2BlockId = { number: BlockNumber; hash: string };
|
|
252
297
|
|
|
298
|
+
export type CheckpointId = { number: CheckpointNumber; hash: string };
|
|
299
|
+
|
|
300
|
+
export type L2TipId = { block: L2BlockId; checkpoint: CheckpointId };
|
|
301
|
+
|
|
253
302
|
/** Creates an L2 block id */
|
|
254
303
|
export function makeL2BlockId(number: BlockNumber, hash?: string): L2BlockId {
|
|
255
304
|
if (number !== 0 && !hash) {
|
|
@@ -258,21 +307,39 @@ export function makeL2BlockId(number: BlockNumber, hash?: string): L2BlockId {
|
|
|
258
307
|
return { number, hash: hash! };
|
|
259
308
|
}
|
|
260
309
|
|
|
310
|
+
/** Creates an L2 checkpoint id */
|
|
311
|
+
export function makeL2CheckpointId(number: CheckpointNumber, hash: string): CheckpointId {
|
|
312
|
+
return { number, hash };
|
|
313
|
+
}
|
|
314
|
+
|
|
261
315
|
const L2BlockIdSchema = z.object({
|
|
262
316
|
number: BlockNumberSchema,
|
|
263
317
|
hash: z.string(),
|
|
264
318
|
});
|
|
265
319
|
|
|
320
|
+
const L2CheckpointIdSchema = z.object({
|
|
321
|
+
number: CheckpointNumberSchema,
|
|
322
|
+
hash: z.string(),
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
const L2TipIdSchema = z.object({
|
|
326
|
+
block: L2BlockIdSchema,
|
|
327
|
+
checkpoint: L2CheckpointIdSchema,
|
|
328
|
+
});
|
|
329
|
+
|
|
266
330
|
export const L2TipsSchema = z.object({
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
331
|
+
proposed: L2BlockIdSchema,
|
|
332
|
+
checkpointed: L2TipIdSchema,
|
|
333
|
+
proven: L2TipIdSchema,
|
|
334
|
+
finalized: L2TipIdSchema,
|
|
270
335
|
});
|
|
271
336
|
|
|
272
337
|
export enum L2BlockSourceEvents {
|
|
273
|
-
|
|
338
|
+
L2PruneUnproven = 'l2PruneUnproven',
|
|
339
|
+
L2PruneUncheckpointed = 'l2PruneUncheckpointed',
|
|
274
340
|
L2BlockProven = 'l2BlockProven',
|
|
275
|
-
|
|
341
|
+
L2BlocksCheckpointed = 'l2BlocksCheckpointed',
|
|
342
|
+
InvalidAttestationsCheckpointDetected = 'invalidCheckpointDetected',
|
|
276
343
|
}
|
|
277
344
|
|
|
278
345
|
export type L2BlockProvenEvent = {
|
|
@@ -282,13 +349,24 @@ export type L2BlockProvenEvent = {
|
|
|
282
349
|
epochNumber: EpochNumber;
|
|
283
350
|
};
|
|
284
351
|
|
|
285
|
-
export type
|
|
286
|
-
type: '
|
|
352
|
+
export type L2PruneUnprovenEvent = {
|
|
353
|
+
type: 'l2PruneUnproven';
|
|
287
354
|
epochNumber: EpochNumber;
|
|
288
355
|
blocks: L2Block[];
|
|
289
356
|
};
|
|
290
357
|
|
|
291
|
-
export type
|
|
292
|
-
type: '
|
|
293
|
-
|
|
358
|
+
export type L2PruneUncheckpointedEvent = {
|
|
359
|
+
type: 'l2PruneUncheckpointed';
|
|
360
|
+
slotNumber: SlotNumber;
|
|
361
|
+
blocks: L2Block[];
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
export type L2CheckpointEvent = {
|
|
365
|
+
type: 'l2BlocksCheckpointed';
|
|
366
|
+
checkpoint: PublishedCheckpoint;
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
export type InvalidCheckpointDetectedEvent = {
|
|
370
|
+
type: 'invalidCheckpointDetected';
|
|
371
|
+
validationResult: ValidateCheckpointNegativeResult;
|
|
294
372
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
|
|
2
|
+
import type { L2Block } from '../l2_block.js';
|
|
3
|
+
import type { CheckpointId, L2BlockId, L2Tips } from '../l2_block_source.js';
|
|
3
4
|
|
|
4
5
|
/** Interface to the local view of the chain. Implemented by world-state and l2-tips-store. */
|
|
5
6
|
export interface L2BlockStreamLocalDataProvider {
|
|
@@ -15,11 +16,21 @@ export interface L2BlockStreamEventHandler {
|
|
|
15
16
|
export type L2BlockStreamEvent =
|
|
16
17
|
| /** Emits blocks added to the chain. */ {
|
|
17
18
|
type: 'blocks-added';
|
|
18
|
-
blocks:
|
|
19
|
+
blocks: L2Block[];
|
|
19
20
|
}
|
|
20
|
-
| /**
|
|
21
|
+
| /** Emits checkpoints published to L1. */ {
|
|
22
|
+
type: 'chain-checkpointed';
|
|
23
|
+
checkpoint: PublishedCheckpoint;
|
|
24
|
+
block: L2BlockId;
|
|
25
|
+
}
|
|
26
|
+
| /**
|
|
27
|
+
* Reports last correct block (new tip of the proposed chain). Note that this is not necessarily the anchor block
|
|
28
|
+
* that will be used in the transaction - if the chain has already moved past the reorg, we'll also see blocks-added
|
|
29
|
+
* events that will push the anchor block forward.
|
|
30
|
+
*/ {
|
|
21
31
|
type: 'chain-pruned';
|
|
22
32
|
block: L2BlockId;
|
|
33
|
+
checkpoint: CheckpointId;
|
|
23
34
|
}
|
|
24
35
|
| /** Reports new proven block. */ {
|
|
25
36
|
type: 'chain-proven';
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
|
+
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { AbortError } from '@aztec/foundation/error';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
5
5
|
|
|
6
|
+
import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
|
|
6
7
|
import { type L2BlockId, type L2BlockSource, makeL2BlockId } from '../l2_block_source.js';
|
|
7
8
|
import type { L2BlockStreamEvent, L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from './interfaces.js';
|
|
8
9
|
|
|
10
|
+
/** Maximum number of checkpoints to prefetch at once during sync. Matches MAX_RPC_CHECKPOINTS_LEN. */
|
|
11
|
+
export const CHECKPOINT_PREFETCH_LIMIT = 50;
|
|
12
|
+
|
|
9
13
|
/** Creates a stream of events for new blocks, chain tips updates, and reorgs, out of polling an archiver or a node. */
|
|
10
14
|
export class L2BlockStream {
|
|
11
15
|
private readonly runningPromise: RunningPromise;
|
|
@@ -13,17 +17,23 @@ export class L2BlockStream {
|
|
|
13
17
|
private hasStarted = false;
|
|
14
18
|
|
|
15
19
|
constructor(
|
|
16
|
-
private l2BlockSource: Pick<
|
|
20
|
+
private l2BlockSource: Pick<
|
|
21
|
+
L2BlockSource,
|
|
22
|
+
'getBlocks' | 'getBlockHeader' | 'getL2Tips' | 'getCheckpoints' | 'getCheckpointedBlocks'
|
|
23
|
+
>,
|
|
17
24
|
private localData: L2BlockStreamLocalDataProvider,
|
|
18
25
|
private handler: L2BlockStreamEventHandler,
|
|
19
26
|
private readonly log = createLogger('types:block_stream'),
|
|
20
27
|
private opts: {
|
|
21
|
-
proven?: boolean;
|
|
22
28
|
pollIntervalMS?: number;
|
|
23
29
|
batchSize?: number;
|
|
24
30
|
startingBlock?: number;
|
|
25
31
|
/** Instead of downloading all blocks, only fetch the smallest subset that results in reliable reorg detection. */
|
|
26
32
|
skipFinalized?: boolean;
|
|
33
|
+
/** When true, checkpoint events will not be emitted. Blocks are still fetched via checkpoints but only blocks-added events are emitted. */
|
|
34
|
+
ignoreCheckpoints?: boolean;
|
|
35
|
+
/** Maximum number of checkpoints to prefetch at once during sync. Defaults to CHECKPOINT_PREFETCH_LIMIT (50). */
|
|
36
|
+
checkpointPrefetchLimit?: number;
|
|
27
37
|
} = {},
|
|
28
38
|
) {
|
|
29
39
|
// Note that RunningPromise is in stopped state by default. This promise won't run until someone invokes `start`,
|
|
@@ -61,36 +71,29 @@ export class L2BlockStream {
|
|
|
61
71
|
try {
|
|
62
72
|
const sourceTips = await this.l2BlockSource.getL2Tips();
|
|
63
73
|
const localTips = await this.localData.getL2Tips();
|
|
64
|
-
this.log.trace(`Running L2 block stream`, {
|
|
65
|
-
sourceLatest: sourceTips.latest.number,
|
|
66
|
-
localLatest: localTips.latest.number,
|
|
67
|
-
sourceFinalized: sourceTips.finalized.number,
|
|
68
|
-
localFinalized: localTips.finalized.number,
|
|
69
|
-
sourceProven: sourceTips.proven.number,
|
|
70
|
-
localProven: localTips.proven.number,
|
|
71
|
-
sourceLatestHash: sourceTips.latest.hash,
|
|
72
|
-
localLatestHash: localTips.latest.hash,
|
|
73
|
-
sourceProvenHash: sourceTips.proven.hash,
|
|
74
|
-
localProvenHash: localTips.proven.hash,
|
|
75
|
-
sourceFinalizedHash: sourceTips.finalized.hash,
|
|
76
|
-
localFinalizedHash: localTips.finalized.hash,
|
|
77
|
-
});
|
|
74
|
+
this.log.trace(`Running L2 block stream`, { sourceTips, localTips });
|
|
78
75
|
|
|
79
76
|
// Check if there was a reorg and emit a chain-pruned event if so.
|
|
80
|
-
let latestBlockNumber = localTips.
|
|
81
|
-
const sourceCache = new BlockHashCache([sourceTips.
|
|
77
|
+
let latestBlockNumber = localTips.proposed.number;
|
|
78
|
+
const sourceCache = new BlockHashCache([sourceTips.proposed]);
|
|
82
79
|
while (!(await this.areBlockHashesEqualAt(latestBlockNumber, { sourceCache }))) {
|
|
83
80
|
latestBlockNumber--;
|
|
84
81
|
}
|
|
85
82
|
|
|
86
|
-
if (latestBlockNumber < localTips.
|
|
87
|
-
latestBlockNumber = BlockNumber(Math.min(latestBlockNumber, sourceTips.
|
|
83
|
+
if (latestBlockNumber < localTips.proposed.number) {
|
|
84
|
+
latestBlockNumber = BlockNumber(Math.min(latestBlockNumber, sourceTips.proposed.number)); // see #13471
|
|
88
85
|
const hash = sourceCache.get(latestBlockNumber) ?? (await this.getBlockHashFromSource(latestBlockNumber));
|
|
89
86
|
if (latestBlockNumber !== 0 && !hash) {
|
|
90
87
|
throw new Error(`Block hash not found in block source for block number ${latestBlockNumber}`);
|
|
91
88
|
}
|
|
92
|
-
this.log.verbose(
|
|
93
|
-
|
|
89
|
+
this.log.verbose(
|
|
90
|
+
`Reorg detected. Pruning blocks from ${latestBlockNumber + 1} to ${localTips.proposed.number}.`,
|
|
91
|
+
);
|
|
92
|
+
await this.emitEvent({
|
|
93
|
+
type: 'chain-pruned',
|
|
94
|
+
block: makeL2BlockId(latestBlockNumber, hash),
|
|
95
|
+
checkpoint: sourceTips.checkpointed.checkpoint,
|
|
96
|
+
});
|
|
94
97
|
}
|
|
95
98
|
|
|
96
99
|
// If we are just starting, use the starting block number from the options.
|
|
@@ -105,40 +108,128 @@ export class L2BlockStream {
|
|
|
105
108
|
}
|
|
106
109
|
|
|
107
110
|
let nextBlockNumber = latestBlockNumber + 1;
|
|
111
|
+
let nextCheckpointToEmit = CheckpointNumber(localTips.checkpointed.checkpoint.number + 1);
|
|
108
112
|
if (this.opts.skipFinalized) {
|
|
109
113
|
// When skipping finalized blocks we need to provide reliable reorg detection while fetching as few blocks as
|
|
110
114
|
// possible. Finalized blocks cannot be reorged by definition, so we can skip most of them. We do need the very
|
|
111
115
|
// last finalized block however in order to guarantee that we will eventually find a block in which our local
|
|
112
116
|
// store matches the source.
|
|
113
117
|
// If the last finalized block is behind our local tip, there is nothing to skip.
|
|
114
|
-
nextBlockNumber = Math.max(sourceTips.finalized.number, nextBlockNumber);
|
|
118
|
+
nextBlockNumber = Math.max(sourceTips.finalized.block.number, nextBlockNumber);
|
|
119
|
+
// If the next checkpoint to emit is behind the finalized tip then skip forward
|
|
120
|
+
nextCheckpointToEmit = CheckpointNumber(Math.max(nextCheckpointToEmit, sourceTips.finalized.checkpoint.number));
|
|
115
121
|
}
|
|
116
122
|
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
// Loop 1: Emit checkpoint events for checkpoints whose blocks are already in local storage.
|
|
124
|
+
// This handles the case where blocks were synced as uncheckpointed and later became checkpointed.
|
|
125
|
+
// The guard `lastBlockInCheckpoint.number > localTips.proposed.number` ensures we don't emit
|
|
126
|
+
// checkpoints for blocks we don't have (e.g., when startingBlock skips earlier blocks).
|
|
127
|
+
// Since only one checkpoint can ever be uncheckpointed, this loop should iterate at most once.
|
|
128
|
+
if (!this.opts.ignoreCheckpoints) {
|
|
129
|
+
let loop1Iterations = 0;
|
|
130
|
+
while (nextCheckpointToEmit <= sourceTips.checkpointed.checkpoint.number) {
|
|
131
|
+
const checkpoints = await this.l2BlockSource.getCheckpoints(nextCheckpointToEmit, 1);
|
|
132
|
+
if (checkpoints.length === 0) {
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
const lastBlockInCheckpoint = checkpoints[0].checkpoint.blocks.at(-1)!;
|
|
136
|
+
// If this checkpoint has blocks we haven't seen yet, stop - they need to be fetched first
|
|
137
|
+
if (lastBlockInCheckpoint.number > localTips.proposed.number) {
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
loop1Iterations++;
|
|
141
|
+
if (loop1Iterations > 1) {
|
|
142
|
+
this.log.warn(
|
|
143
|
+
`Emitting multiple checkpoints (${loop1Iterations}) for already-local blocks. ` +
|
|
144
|
+
`Next checkpoint: ${nextCheckpointToEmit}, source checkpointed: ${sourceTips.checkpointed.checkpoint.number}`,
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
const lastBlockHash = await lastBlockInCheckpoint.hash();
|
|
148
|
+
await this.emitEvent({
|
|
149
|
+
type: 'chain-checkpointed',
|
|
150
|
+
checkpoint: checkpoints[0],
|
|
151
|
+
block: makeL2BlockId(lastBlockInCheckpoint.number, lastBlockHash.toString()),
|
|
152
|
+
});
|
|
153
|
+
nextCheckpointToEmit = CheckpointNumber(nextCheckpointToEmit + 1);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Loop 2: Fetch new checkpointed blocks. For each checkpoint, emit all blocks
|
|
158
|
+
// from that checkpoint that we need, then emit the checkpoint event.
|
|
159
|
+
// We prefetch multiple checkpoints, then process them one by one.
|
|
160
|
+
let prefetchedCheckpoints: PublishedCheckpoint[] = [];
|
|
161
|
+
let prefetchIdx = 0;
|
|
162
|
+
let nextCheckpointNumber: CheckpointNumber | undefined;
|
|
163
|
+
|
|
164
|
+
// Find the starting checkpoint number
|
|
165
|
+
if (nextBlockNumber <= sourceTips.checkpointed.block.number) {
|
|
166
|
+
const blocks = await this.l2BlockSource.getCheckpointedBlocks(BlockNumber(nextBlockNumber), 1);
|
|
167
|
+
if (blocks.length > 0) {
|
|
168
|
+
nextCheckpointNumber = blocks[0].checkpointNumber;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
while (nextBlockNumber <= sourceTips.checkpointed.block.number && nextCheckpointNumber !== undefined) {
|
|
173
|
+
// Refill the prefetch buffer when exhausted
|
|
174
|
+
if (prefetchIdx >= prefetchedCheckpoints.length) {
|
|
175
|
+
const prefetchLimit = this.opts.checkpointPrefetchLimit ?? CHECKPOINT_PREFETCH_LIMIT;
|
|
176
|
+
prefetchedCheckpoints = await this.l2BlockSource.getCheckpoints(nextCheckpointNumber, prefetchLimit);
|
|
177
|
+
prefetchIdx = 0;
|
|
178
|
+
if (prefetchedCheckpoints.length === 0) {
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const checkpoint = prefetchedCheckpoints[prefetchIdx]!;
|
|
184
|
+
|
|
185
|
+
// Get all blocks from this checkpoint that we need, respecting batchSize
|
|
186
|
+
const limit = Math.min(this.opts.batchSize ?? 50, sourceTips.checkpointed.block.number - nextBlockNumber + 1);
|
|
187
|
+
const blocksForCheckpoint = checkpoint.checkpoint.blocks
|
|
188
|
+
.filter(b => b.number >= nextBlockNumber)
|
|
189
|
+
.slice(0, limit);
|
|
190
|
+
if (blocksForCheckpoint.length === 0) {
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
await this.emitEvent({ type: 'blocks-added', blocks: blocksForCheckpoint });
|
|
194
|
+
nextBlockNumber = blocksForCheckpoint.at(-1)!.number + 1;
|
|
195
|
+
|
|
196
|
+
// If we've reached the end of this checkpoint, emit the checkpoint event and move to next
|
|
197
|
+
const lastBlockInCheckpoint = checkpoint.checkpoint.blocks.at(-1)!;
|
|
198
|
+
if (nextBlockNumber > lastBlockInCheckpoint.number) {
|
|
199
|
+
if (!this.opts.ignoreCheckpoints) {
|
|
200
|
+
const lastBlockHash = await lastBlockInCheckpoint.hash();
|
|
201
|
+
await this.emitEvent({
|
|
202
|
+
type: 'chain-checkpointed',
|
|
203
|
+
checkpoint,
|
|
204
|
+
block: makeL2BlockId(lastBlockInCheckpoint.number, lastBlockHash.toString()),
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
prefetchIdx++;
|
|
208
|
+
nextCheckpointNumber = CheckpointNumber(nextCheckpointNumber + 1);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// Loop 3: Fetch any remaining uncheckpointed (proposed) blocks.
|
|
213
|
+
while (nextBlockNumber <= sourceTips.proposed.number) {
|
|
214
|
+
const limit = Math.min(this.opts.batchSize ?? 50, sourceTips.proposed.number - nextBlockNumber + 1);
|
|
215
|
+
this.log.trace(`Requesting blocks from ${nextBlockNumber} limit ${limit}`);
|
|
216
|
+
const blocks = await this.l2BlockSource.getBlocks(BlockNumber(nextBlockNumber), BlockNumber(limit));
|
|
126
217
|
if (blocks.length === 0) {
|
|
127
218
|
break;
|
|
128
219
|
}
|
|
129
220
|
await this.emitEvent({ type: 'blocks-added', blocks });
|
|
130
|
-
nextBlockNumber = blocks.at(-1)!.
|
|
221
|
+
nextBlockNumber = blocks.at(-1)!.number + 1;
|
|
131
222
|
}
|
|
132
223
|
|
|
133
224
|
// Update the proven and finalized tips.
|
|
134
|
-
if (localTips.proven !== undefined && sourceTips.proven.number !== localTips.proven.number) {
|
|
225
|
+
if (localTips.proven !== undefined && sourceTips.proven.block.number !== localTips.proven.block.number) {
|
|
135
226
|
await this.emitEvent({
|
|
136
227
|
type: 'chain-proven',
|
|
137
|
-
block: sourceTips.proven,
|
|
228
|
+
block: sourceTips.proven.block,
|
|
138
229
|
});
|
|
139
230
|
}
|
|
140
|
-
if (localTips.finalized !== undefined && sourceTips.finalized.number !== localTips.finalized.number) {
|
|
141
|
-
await this.emitEvent({ type: 'chain-finalized', block: sourceTips.finalized });
|
|
231
|
+
if (localTips.finalized !== undefined && sourceTips.finalized.block.number !== localTips.finalized.block.number) {
|
|
232
|
+
await this.emitEvent({ type: 'chain-finalized', block: sourceTips.finalized.block });
|
|
142
233
|
}
|
|
143
234
|
} catch (err: any) {
|
|
144
235
|
if (err.name === 'AbortError') {
|
|
@@ -186,7 +277,7 @@ export class L2BlockStream {
|
|
|
186
277
|
|
|
187
278
|
private async emitEvent(event: L2BlockStreamEvent) {
|
|
188
279
|
this.log.debug(
|
|
189
|
-
`Emitting ${event.type} (${event.type === 'blocks-added' ? event.blocks.length : event.block.number})`,
|
|
280
|
+
`Emitting ${event.type} (${event.type === 'blocks-added' ? event.blocks.length : event.type === 'chain-checkpointed' ? event.checkpoint.checkpoint.number : event.block.number})`,
|
|
190
281
|
);
|
|
191
282
|
await this.handler.handleBlockStreamEvent(event);
|
|
192
283
|
if (!this.isRunning() && !this.isSyncing) {
|