@aztec/stdlib 3.0.3-rc.3 → 4.0.0-devnet.1-patch.0
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/abi.d.ts +602 -4
- package/dest/abi/abi.d.ts.map +1 -1
- package/dest/abi/abi.js +7 -7
- 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 +47 -9
- package/dest/abi/function_call.d.ts.map +1 -1
- package/dest/abi/function_call.js +20 -3
- package/dest/abi/function_selector.d.ts +2 -1
- package/dest/abi/function_selector.d.ts.map +1 -1
- package/dest/abi/function_selector.js +7 -0
- 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.js +1 -1
- 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 +150 -0
- package/dest/block/checkpointed_l2_block.d.ts.map +1 -0
- package/dest/block/checkpointed_l2_block.js +46 -0
- 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 +5 -5
- package/dest/block/index.d.ts +2 -4
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +1 -3
- 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 +344 -90
- 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 +13 -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 +115 -32
- 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 -41
- 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 +45 -20
- package/dest/checkpoint/checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.js +59 -8
- package/dest/checkpoint/checkpoint_info.d.ts +38 -0
- package/dest/checkpoint/checkpoint_info.d.ts.map +1 -0
- package/dest/checkpoint/checkpoint_info.js +34 -0
- 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 +30 -22
- package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/published_checkpoint.js +14 -3
- package/dest/config/index.d.ts +2 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +1 -0
- package/dest/config/node-rpc-config.js +1 -1
- package/dest/config/sequencer-config.d.ts +10 -0
- package/dest/config/sequencer-config.d.ts.map +1 -0
- package/dest/config/sequencer-config.js +12 -0
- 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 +2 -2
- 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_class.d.ts +11 -13
- package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_class.js +18 -18
- package/dest/contract/interfaces/contract_instance.d.ts +28 -29
- package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_instance.js +5 -5
- package/dest/contract/interfaces/contract_instance_update.d.ts +6 -7
- package/dest/contract/interfaces/contract_instance_update.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_instance_update.js +5 -5
- 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 +7 -1
- package/dest/epoch-helpers/index.d.ts.map +1 -1
- package/dest/epoch-helpers/index.js +12 -6
- 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.d.ts +1 -9
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +2 -14
- 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/allowed_element.d.ts +7 -8
- package/dest/interfaces/allowed_element.d.ts.map +1 -1
- package/dest/interfaces/allowed_element.js +3 -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 +25 -15
- package/dest/interfaces/aztec-node-admin.d.ts +110 -41
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +6 -4
- package/dest/interfaces/aztec-node.d.ts +77 -79
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +16 -17
- package/dest/interfaces/block-builder.d.ts +22 -13
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/block-builder.js +16 -1
- package/dest/interfaces/configs.d.ts +56 -27
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +12 -6
- package/dest/interfaces/get_logs_response.d.ts +27 -5
- package/dest/interfaces/get_logs_response.d.ts.map +1 -1
- package/dest/interfaces/get_logs_response.js +5 -4
- package/dest/interfaces/l2_logs_source.d.ts +21 -8
- package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
- package/dest/interfaces/merkle_tree_operations.d.ts +2 -2
- package/dest/interfaces/merkle_tree_operations.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 +19 -3
- package/dest/interfaces/prover-client.d.ts.map +1 -1
- package/dest/interfaces/prover-client.js +16 -4
- 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/slasher.d.ts +9 -1
- package/dest/interfaces/slasher.d.ts.map +1 -1
- package/dest/interfaces/slasher.js +5 -3
- 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 +161 -26
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +12 -7
- package/dest/interfaces/world_state.d.ts +17 -8
- package/dest/interfaces/world_state.d.ts.map +1 -1
- 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/find_private_kernel_reset_dimensions.d.ts +1 -1
- package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts.map +1 -1
- package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +1 -3
- 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 +120 -47
- package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_circuit_public_inputs.js +59 -59
- 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 -3
- package/dest/logs/extended_public_log.d.ts.map +1 -1
- package/dest/logs/index.d.ts +3 -2
- package/dest/logs/index.d.ts.map +1 -1
- package/dest/logs/index.js +2 -1
- package/dest/logs/log_id.d.ts +22 -7
- package/dest/logs/log_id.d.ts.map +1 -1
- package/dest/logs/log_id.js +23 -13
- package/dest/logs/private_log.d.ts +1 -1
- package/dest/logs/private_log.d.ts.map +1 -1
- package/dest/logs/private_log.js +5 -2
- package/dest/logs/public_log.js +3 -1
- package/dest/logs/siloed_tag.d.ts +23 -0
- package/dest/logs/siloed_tag.d.ts.map +1 -0
- package/dest/logs/siloed_tag.js +31 -0
- package/dest/logs/tag.d.ts +21 -0
- package/dest/logs/tag.d.ts.map +1 -0
- package/dest/logs/tag.js +30 -0
- package/dest/logs/tx_scoped_l2_log.d.ts +24 -33
- package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
- package/dest/logs/tx_scoped_l2_log.js +37 -43
- 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 +174 -0
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
- package/dest/p2p/checkpoint_proposal.js +238 -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 +5 -0
- package/dest/p2p/constants.d.ts.map +1 -0
- package/dest/p2p/constants.js +3 -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/avm_proof_data.d.ts +1 -3
- package/dest/rollup/avm_proof_data.d.ts.map +1 -1
- package/dest/rollup/avm_proof_data.js +1 -9
- 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 +11 -1
- package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -1
- package/dest/rollup/checkpoint_constant_data.js +4 -1
- package/dest/rollup/checkpoint_header.d.ts +46 -12
- package/dest/rollup/checkpoint_header.d.ts.map +1 -1
- package/dest/rollup/checkpoint_header.js +53 -20
- 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 +46 -6
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.js +11 -3
- 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 +21 -6
- package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.js +10 -4
- 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 +5 -3
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +2 -1
- package/dest/slashing/empire.d.ts +1 -1
- package/dest/slashing/empire.d.ts.map +1 -1
- package/dest/slashing/empire.js +2 -0
- package/dest/slashing/helpers.d.ts +2 -2
- package/dest/slashing/helpers.d.ts.map +1 -1
- package/dest/slashing/helpers.js +6 -0
- package/dest/slashing/tally.d.ts +2 -1
- package/dest/slashing/tally.d.ts.map +1 -1
- package/dest/slashing/tally.js +6 -2
- package/dest/slashing/types.d.ts +10 -7
- package/dest/slashing/types.d.ts.map +1 -1
- package/dest/slashing/types.js +18 -6
- package/dest/snapshots/types.d.ts +1 -1
- package/dest/snapshots/types.d.ts.map +1 -1
- package/dest/snapshots/types.js +5 -5
- package/dest/stats/stats.d.ts +10 -8
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +39 -10
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +81 -26
- package/dest/tests/jest.js +1 -1
- package/dest/tests/mocks.d.ts +76 -20
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +139 -60
- package/dest/timetable/index.d.ts +37 -0
- package/dest/timetable/index.d.ts.map +1 -0
- package/dest/timetable/index.js +39 -0
- 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 +21 -8
- package/dest/tx/block_header.d.ts.map +1 -1
- package/dest/tx/block_header.js +12 -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 +5 -3
- package/dest/tx/global_variable_builder.d.ts.map +1 -1
- package/dest/tx/global_variables.d.ts +14 -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 +24 -7
- 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/simulated_tx.d.ts +1031 -7
- package/dest/tx/simulated_tx.d.ts.map +1 -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 +33 -3
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +18 -6
- 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 +6 -9
- 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/empty_validator.d.ts +2 -2
- package/dest/tx/validator/empty_validator.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/tx/validator/tx_validator.d.ts +2 -5
- package/dest/tx/validator/tx_validator.d.ts.map +1 -1
- package/dest/tx/validator/tx_validator.js +4 -4
- package/dest/types/shared.d.ts +4 -1
- package/dest/types/shared.d.ts.map +1 -1
- package/dest/validators/schemas.d.ts +9 -9
- package/dest/validators/schemas.d.ts.map +1 -1
- package/dest/validators/schemas.js +13 -13
- 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 +27 -13
- package/src/abi/abi.ts +39 -33
- package/src/abi/contract_artifact.ts +10 -10
- package/src/abi/function_call.ts +25 -3
- package/src/abi/function_selector.ts +8 -0
- package/src/abi/utils.ts +17 -0
- package/src/avm/avm.ts +1 -1
- 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 +70 -0
- package/src/block/in_block.ts +6 -6
- package/src/block/index.ts +1 -3
- package/src/block/l2_block.ts +102 -149
- package/src/block/l2_block_source.ts +175 -68
- 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 +139 -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 -35
- package/src/block/validate_block_result.ts +40 -35
- package/src/checkpoint/checkpoint.ts +82 -12
- package/src/checkpoint/checkpoint_info.ts +52 -0
- package/src/checkpoint/index.ts +1 -0
- package/src/checkpoint/published_checkpoint.ts +22 -7
- package/src/config/index.ts +1 -0
- package/src/config/node-rpc-config.ts +1 -1
- package/src/config/sequencer-config.ts +19 -0
- package/src/contract/contract_address.ts +1 -1
- package/src/contract/contract_class_id.ts +2 -2
- package/src/contract/index.ts +0 -2
- package/src/contract/interfaces/contract_class.ts +59 -46
- package/src/contract/interfaces/contract_instance.ts +15 -13
- package/src/contract/interfaces/contract_instance_update.ts +11 -9
- 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 +24 -10
- package/src/hash/hash.ts +2 -13
- package/src/hash/map_slot.ts +3 -2
- package/src/interfaces/allowed_element.ts +9 -7
- package/src/interfaces/api_limit.ts +2 -0
- package/src/interfaces/archiver.ts +33 -23
- package/src/interfaces/aztec-node-admin.ts +10 -6
- package/src/interfaces/aztec-node.ts +118 -134
- package/src/interfaces/block-builder.ts +50 -23
- package/src/interfaces/configs.ts +67 -33
- package/src/interfaces/get_logs_response.ts +13 -9
- package/src/interfaces/l2_logs_source.ts +25 -7
- package/src/interfaces/merkle_tree_operations.ts +4 -1
- package/src/interfaces/p2p.ts +8 -12
- package/src/interfaces/prover-broker.ts +22 -0
- package/src/interfaces/prover-client.ts +35 -10
- package/src/interfaces/proving-job.ts +2 -11
- package/src/interfaces/server_circuit_prover.ts +3 -3
- package/src/interfaces/slasher.ts +28 -22
- package/src/interfaces/tx_provider.ts +2 -2
- package/src/interfaces/validator.ts +92 -31
- package/src/interfaces/world_state.ts +16 -9
- 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/kernel/hints/find_private_kernel_reset_dimensions.ts +2 -4
- package/src/kernel/private_circuit_public_inputs.ts +85 -85
- 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/index.ts +2 -1
- package/src/logs/log_id.ts +26 -12
- package/src/logs/private_log.ts +2 -1
- package/src/logs/siloed_tag.ts +45 -0
- package/src/logs/tag.ts +42 -0
- package/src/logs/tx_scoped_l2_log.ts +45 -43
- package/src/messaging/in_hash.ts +3 -1
- package/src/messaging/l1_to_l2_message.ts +1 -0
- 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 +365 -0
- package/src/p2p/consensus_payload.ts +5 -7
- package/src/p2p/constants.ts +6 -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/avm_proof_data.ts +0 -7
- package/src/rollup/block_headers_hash.ts +1 -1
- package/src/rollup/block_rollup_public_inputs.ts +5 -11
- package/src/rollup/checkpoint_constant_data.ts +1 -0
- package/src/rollup/checkpoint_header.ts +67 -20
- package/src/rollup/checkpoint_rollup_public_inputs.ts +17 -5
- package/src/rollup/checkpoint_root_rollup_private_inputs.ts +14 -1
- package/src/rollup/root_rollup_public_inputs.ts +16 -7
- package/src/schemas/schemas.ts +4 -0
- package/src/slashing/empire.ts +3 -1
- package/src/slashing/helpers.ts +8 -0
- package/src/slashing/tally.ts +8 -2
- package/src/slashing/types.ts +38 -20
- package/src/snapshots/types.ts +33 -29
- package/src/stats/stats.ts +10 -7
- package/src/tests/factories.ts +103 -42
- package/src/tests/jest.ts +1 -1
- package/src/tests/mocks.ts +226 -92
- package/src/timetable/index.ts +66 -0
- package/src/tx/block_header.ts +21 -8
- package/src/tx/global_variable_builder.ts +9 -2
- package/src/tx/global_variables.ts +6 -0
- package/src/tx/index.ts +0 -1
- package/src/tx/indexed_tx_effect.ts +3 -2
- package/src/tx/private_execution_result.ts +2 -17
- package/src/tx/profiling.ts +46 -4
- package/src/tx/tx.ts +19 -11
- package/src/tx/tx_effect.ts +3 -10
- package/src/tx/tx_execution_request.ts +2 -0
- package/src/tx/tx_receipt.ts +75 -18
- package/src/tx/validator/empty_validator.ts +1 -1
- package/src/tx/validator/error_texts.ts +3 -0
- package/src/tx/validator/tx_validator.ts +9 -7
- package/src/validators/schemas.ts +54 -48
- 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 -130
- package/dest/block/l2_block_new.d.ts.map +0 -1
- package/dest/block/l2_block_new.js +0 -151
- package/dest/block/published_l2_block.d.ts +0 -130
- package/dest/block/published_l2_block.d.ts.map +0 -1
- package/dest/block/published_l2_block.js +0 -48
- 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/logs/log_with_tx_data.d.ts +0 -19
- package/dest/logs/log_with_tx_data.d.ts.map +0 -1
- package/dest/logs/log_with_tx_data.js +0 -49
- 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 -197
- package/src/block/published_l2_block.ts +0 -65
- 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/logs/log_with_tx_data.ts +0 -46
- package/src/tx/content_commitment.ts +0 -113
package/src/tests/mocks.ts
CHANGED
|
@@ -6,24 +6,24 @@ import {
|
|
|
6
6
|
MAX_NULLIFIERS_PER_TX,
|
|
7
7
|
MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
8
8
|
} from '@aztec/constants';
|
|
9
|
-
import { makeTuple } from '@aztec/foundation/array';
|
|
10
|
-
import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
9
|
+
import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
|
|
10
|
+
import { BlockNumber, CheckpointNumber, IndexWithinCheckpoint, SlotNumber } from '@aztec/foundation/branded-types';
|
|
11
11
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
12
12
|
import { padArrayEnd, times } from '@aztec/foundation/collection';
|
|
13
13
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
14
14
|
import { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
15
15
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
16
|
+
import { Signature } from '@aztec/foundation/eth-signature';
|
|
16
17
|
|
|
17
18
|
import type { ContractArtifact } from '../abi/abi.js';
|
|
18
19
|
import { PublicTxEffect } from '../avm/avm.js';
|
|
20
|
+
import type { AvmAccumulatedData } from '../avm/avm_accumulated_data.js';
|
|
19
21
|
import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
|
|
20
22
|
import { PublicDataWrite } from '../avm/public_data_write.js';
|
|
21
23
|
import { RevertCode } from '../avm/revert_code.js';
|
|
22
24
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
23
|
-
import {
|
|
24
|
-
import { L2Block } from '../block/l2_block.js';
|
|
25
|
+
import { CheckpointedL2Block, CommitteeAttestation, L2Block } from '../block/index.js';
|
|
25
26
|
import type { CommitteeAttestationsAndSigners } from '../block/proposal/attestations_and_signers.js';
|
|
26
|
-
import { PublishedL2Block } from '../block/published_l2_block.js';
|
|
27
27
|
import { Checkpoint } from '../checkpoint/checkpoint.js';
|
|
28
28
|
import { L1PublishedData } from '../checkpoint/published_checkpoint.js';
|
|
29
29
|
import { computeContractAddressFromInstance } from '../contract/contract_address.js';
|
|
@@ -46,12 +46,14 @@ import { PrivateToAvmAccumulatedData } from '../kernel/private_to_avm_accumulate
|
|
|
46
46
|
import { PrivateToPublicAccumulatedDataBuilder } from '../kernel/private_to_public_accumulated_data_builder.js';
|
|
47
47
|
import { PublicCallRequestArrayLengths } from '../kernel/public_call_request.js';
|
|
48
48
|
import { computeInHashFromL1ToL2Messages } from '../messaging/in_hash.js';
|
|
49
|
-
import { BlockAttestation } from '../p2p/block_attestation.js';
|
|
50
49
|
import { BlockProposal } from '../p2p/block_proposal.js';
|
|
50
|
+
import { CheckpointAttestation } from '../p2p/checkpoint_attestation.js';
|
|
51
|
+
import { CheckpointProposal } from '../p2p/checkpoint_proposal.js';
|
|
51
52
|
import { ConsensusPayload } from '../p2p/consensus_payload.js';
|
|
52
53
|
import { SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '../p2p/signature_utils.js';
|
|
53
54
|
import { ChonkProof } from '../proofs/chonk_proof.js';
|
|
54
55
|
import { ProvingRequestType } from '../proofs/proving_request_type.js';
|
|
56
|
+
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
55
57
|
import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
|
|
56
58
|
import {
|
|
57
59
|
BlockHeader,
|
|
@@ -73,9 +75,9 @@ import {
|
|
|
73
75
|
makeAvmCircuitInputs,
|
|
74
76
|
makeAztecAddress,
|
|
75
77
|
makeBlockHeader,
|
|
78
|
+
makeCheckpointHeader,
|
|
76
79
|
makeGas,
|
|
77
80
|
makeGlobalVariables,
|
|
78
|
-
makeL2BlockHeader,
|
|
79
81
|
makePrivateToPublicAccumulatedData,
|
|
80
82
|
makePrivateToRollupAccumulatedData,
|
|
81
83
|
makeProtocolContracts,
|
|
@@ -95,12 +97,14 @@ export const mockTx = async (
|
|
|
95
97
|
publicCalldataSize = 2,
|
|
96
98
|
feePayer,
|
|
97
99
|
chonkProof = ChonkProof.random(),
|
|
100
|
+
maxFeesPerGas = new GasFees(10, 10),
|
|
98
101
|
maxPriorityFeesPerGas,
|
|
99
102
|
gasUsed = Gas.empty(),
|
|
100
103
|
chainId = Fr.ZERO,
|
|
101
104
|
version = Fr.ZERO,
|
|
102
105
|
vkTreeRoot = Fr.ZERO,
|
|
103
106
|
protocolContractsHash = Fr.ZERO,
|
|
107
|
+
anchorBlockHeader = BlockHeader.empty(),
|
|
104
108
|
}: {
|
|
105
109
|
numberOfNonRevertiblePublicCallRequests?: number;
|
|
106
110
|
numberOfRevertiblePublicCallRequests?: number;
|
|
@@ -109,12 +113,14 @@ export const mockTx = async (
|
|
|
109
113
|
publicCalldataSize?: number;
|
|
110
114
|
feePayer?: AztecAddress;
|
|
111
115
|
chonkProof?: ChonkProof;
|
|
116
|
+
maxFeesPerGas?: GasFees;
|
|
112
117
|
maxPriorityFeesPerGas?: GasFees;
|
|
113
118
|
gasUsed?: Gas;
|
|
114
119
|
chainId?: Fr;
|
|
115
120
|
version?: Fr;
|
|
116
121
|
vkTreeRoot?: Fr;
|
|
117
122
|
protocolContractsHash?: Fr;
|
|
123
|
+
anchorBlockHeader?: BlockHeader;
|
|
118
124
|
} = {},
|
|
119
125
|
) => {
|
|
120
126
|
const totalPublicCallRequests =
|
|
@@ -124,10 +130,8 @@ export const mockTx = async (
|
|
|
124
130
|
const isForPublic = totalPublicCallRequests > 0;
|
|
125
131
|
const data = PrivateKernelTailCircuitPublicInputs.empty();
|
|
126
132
|
const firstNullifier = new Nullifier(new Fr(seed + 1), Fr.ZERO, 0);
|
|
127
|
-
data.constants.
|
|
128
|
-
|
|
129
|
-
maxPriorityFeesPerGas,
|
|
130
|
-
});
|
|
133
|
+
data.constants.anchorBlockHeader = anchorBlockHeader;
|
|
134
|
+
data.constants.txContext.gasSettings = GasSettings.default({ maxFeesPerGas, maxPriorityFeesPerGas });
|
|
131
135
|
data.feePayer = feePayer ?? (await AztecAddress.random());
|
|
132
136
|
data.gasUsed = gasUsed;
|
|
133
137
|
data.constants.txContext.chainId = chainId;
|
|
@@ -203,6 +207,7 @@ export async function mockProcessedTx({
|
|
|
203
207
|
// The default gasUsed is the tx overhead.
|
|
204
208
|
gasUsed = Gas.from({ daGas: FIXED_DA_GAS, l2Gas: FIXED_L2_GAS }),
|
|
205
209
|
privateOnly = false,
|
|
210
|
+
avmAccumulatedData,
|
|
206
211
|
...mockTxOpts
|
|
207
212
|
}: {
|
|
208
213
|
seed?: number;
|
|
@@ -214,6 +219,7 @@ export async function mockProcessedTx({
|
|
|
214
219
|
protocolContracts?: ProtocolContracts;
|
|
215
220
|
feePaymentPublicDataWrite?: PublicDataWrite;
|
|
216
221
|
privateOnly?: boolean;
|
|
222
|
+
avmAccumulatedData?: Partial<FieldsOf<AvmAccumulatedData>>;
|
|
217
223
|
} & Parameters<typeof mockTx>[1] = {}) {
|
|
218
224
|
seed *= 0x1000; // Avoid clashing with the previous mock values if seed only increases by 1.
|
|
219
225
|
anchorBlockHeader ??= db?.getInitialHeader() ?? makeBlockHeader(seed);
|
|
@@ -293,19 +299,22 @@ export async function mockProcessedTx({
|
|
|
293
299
|
avmOutput.previousRevertibleAccumulatedDataArrayLengths =
|
|
294
300
|
avmOutput.previousRevertibleAccumulatedData.getArrayLengths();
|
|
295
301
|
// Assign final data emitted from avm.
|
|
296
|
-
avmOutput.accumulatedData.noteHashes = revertibleData.noteHashes;
|
|
297
|
-
avmOutput.accumulatedData.nullifiers =
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
302
|
+
avmOutput.accumulatedData.noteHashes = avmAccumulatedData?.noteHashes ?? revertibleData.noteHashes;
|
|
303
|
+
avmOutput.accumulatedData.nullifiers =
|
|
304
|
+
avmAccumulatedData?.nullifiers ??
|
|
305
|
+
padArrayEnd(
|
|
306
|
+
nonRevertibleData.nullifiers.concat(revertibleData.nullifiers).filter(n => !n.isEmpty()),
|
|
307
|
+
Fr.ZERO,
|
|
308
|
+
MAX_NULLIFIERS_PER_TX,
|
|
309
|
+
);
|
|
310
|
+
avmOutput.accumulatedData.l2ToL1Msgs = avmAccumulatedData?.l2ToL1Msgs ?? revertibleData.l2ToL1Msgs;
|
|
311
|
+
avmOutput.accumulatedData.publicDataWrites =
|
|
312
|
+
avmAccumulatedData?.publicDataWrites ??
|
|
313
|
+
makeTuple(
|
|
314
|
+
MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
315
|
+
i => (i === 0 ? feePaymentPublicDataWrite : new PublicDataWrite(new Fr(i), new Fr(i + 10))),
|
|
316
|
+
seed + 0x2000,
|
|
317
|
+
);
|
|
309
318
|
avmOutput.accumulatedDataArrayLengths = avmOutput.accumulatedData.getArrayLengths();
|
|
310
319
|
avmOutput.gasSettings = gasSettings;
|
|
311
320
|
// Note: The fee is computed from the tx's gas used, which only includes the gas used in private. But this shouldn't
|
|
@@ -354,7 +363,6 @@ const emptyPrivateCallExecutionResult = () =>
|
|
|
354
363
|
Buffer.from(''),
|
|
355
364
|
new Map(),
|
|
356
365
|
PrivateCircuitPublicInputs.empty(),
|
|
357
|
-
new Map(),
|
|
358
366
|
[],
|
|
359
367
|
new Map(),
|
|
360
368
|
[],
|
|
@@ -393,34 +401,51 @@ export async function mockCheckpointAndMessages(
|
|
|
393
401
|
{
|
|
394
402
|
startBlockNumber = BlockNumber(1),
|
|
395
403
|
numBlocks = 1,
|
|
404
|
+
blocks,
|
|
396
405
|
numTxsPerBlock = 1,
|
|
397
406
|
numL1ToL2Messages = 1,
|
|
398
407
|
makeBlockOptions = () => ({}),
|
|
408
|
+
previousArchive,
|
|
409
|
+
maxEffects,
|
|
399
410
|
...options
|
|
400
411
|
}: {
|
|
401
412
|
startBlockNumber?: BlockNumber;
|
|
402
413
|
numBlocks?: number;
|
|
403
414
|
numTxsPerBlock?: number;
|
|
404
415
|
numL1ToL2Messages?: number;
|
|
405
|
-
makeBlockOptions?: (blockNumber: BlockNumber) => Partial<Parameters<typeof
|
|
416
|
+
makeBlockOptions?: (blockNumber: BlockNumber) => Partial<Parameters<typeof L2Block.random>[1]>;
|
|
417
|
+
previousArchive?: AppendOnlyTreeSnapshot;
|
|
418
|
+
blocks?: L2Block[];
|
|
419
|
+
maxEffects?: number;
|
|
406
420
|
} & Partial<Parameters<typeof Checkpoint.random>[1]> &
|
|
407
|
-
Partial<Parameters<typeof
|
|
421
|
+
Partial<Parameters<typeof L2Block.random>[1]> = {},
|
|
408
422
|
) {
|
|
409
|
-
const slotNumber = options.slotNumber ?? SlotNumber(checkpointNumber * 10);
|
|
423
|
+
const slotNumber = options.slotNumber ?? SlotNumber(Number(checkpointNumber) * 10);
|
|
410
424
|
const blocksAndMessages = [];
|
|
411
|
-
|
|
425
|
+
// Track the previous block's archive to ensure consecutive blocks have consistent archive roots.
|
|
426
|
+
// The current block's header.lastArchive must equal the previous block's archive.
|
|
427
|
+
let lastArchive: AppendOnlyTreeSnapshot | undefined = previousArchive;
|
|
428
|
+
// Pass maxEffects via txOptions so it reaches TxEffect.random
|
|
429
|
+
const txOptions = maxEffects !== undefined ? { maxEffects } : {};
|
|
430
|
+
for (let i = 0; i < (blocks?.length ?? numBlocks); i++) {
|
|
412
431
|
const blockNumber = BlockNumber(startBlockNumber + i);
|
|
413
432
|
const { block, messages } = {
|
|
414
|
-
block:
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
433
|
+
block:
|
|
434
|
+
blocks?.[i] ??
|
|
435
|
+
(await L2Block.random(blockNumber, {
|
|
436
|
+
checkpointNumber,
|
|
437
|
+
indexWithinCheckpoint: IndexWithinCheckpoint(i),
|
|
438
|
+
txsPerBlock: numTxsPerBlock,
|
|
439
|
+
txOptions,
|
|
440
|
+
slotNumber,
|
|
441
|
+
...options,
|
|
442
|
+
...makeBlockOptions(blockNumber),
|
|
443
|
+
...(lastArchive ? { lastArchive } : {}),
|
|
444
|
+
})),
|
|
422
445
|
messages: mockL1ToL2Messages(numL1ToL2Messages),
|
|
423
446
|
};
|
|
447
|
+
// Update lastArchive for the next block
|
|
448
|
+
lastArchive = block.archive;
|
|
424
449
|
blocksAndMessages.push({ block, messages });
|
|
425
450
|
}
|
|
426
451
|
|
|
@@ -428,8 +453,13 @@ export async function mockCheckpointAndMessages(
|
|
|
428
453
|
const inHash = computeInHashFromL1ToL2Messages(messages);
|
|
429
454
|
const checkpoint = await Checkpoint.random(checkpointNumber, { numBlocks: 0, slotNumber, inHash, ...options });
|
|
430
455
|
checkpoint.blocks = blocksAndMessages.map(({ block }) => block);
|
|
456
|
+
// Set the checkpoint's archive to match the last block's archive for proper chaining.
|
|
457
|
+
// When the archiver reconstructs checkpoints from L1, it uses the checkpoint's archive root
|
|
458
|
+
// from the L1 event to set the last block's archive. Without this, the archive chain breaks.
|
|
459
|
+
checkpoint.archive = lastArchive!;
|
|
431
460
|
|
|
432
|
-
|
|
461
|
+
// Return lastArchive so callers can chain it across multiple checkpoints
|
|
462
|
+
return { checkpoint, messages, lastArchive };
|
|
433
463
|
}
|
|
434
464
|
|
|
435
465
|
export const randomContractArtifact = (): ContractArtifact => ({
|
|
@@ -469,28 +499,52 @@ export interface MakeConsensusPayloadOptions {
|
|
|
469
499
|
signer?: Secp256k1Signer;
|
|
470
500
|
attesterSigner?: Secp256k1Signer;
|
|
471
501
|
proposerSigner?: Secp256k1Signer;
|
|
472
|
-
header?:
|
|
502
|
+
header?: CheckpointHeader;
|
|
473
503
|
archive?: Fr;
|
|
474
504
|
txHashes?: TxHash[];
|
|
475
505
|
txs?: Tx[];
|
|
476
506
|
}
|
|
477
507
|
|
|
508
|
+
export interface MakeBlockProposalOptions {
|
|
509
|
+
signer?: Secp256k1Signer;
|
|
510
|
+
blockHeader?: BlockHeader;
|
|
511
|
+
indexWithinCheckpoint?: IndexWithinCheckpoint;
|
|
512
|
+
inHash?: Fr;
|
|
513
|
+
archiveRoot?: Fr;
|
|
514
|
+
txHashes?: TxHash[];
|
|
515
|
+
txs?: Tx[];
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
export interface MakeCheckpointProposalOptions {
|
|
519
|
+
signer?: Secp256k1Signer;
|
|
520
|
+
checkpointHeader?: CheckpointHeader;
|
|
521
|
+
archiveRoot?: Fr;
|
|
522
|
+
/** Options for the lastBlock - if undefined, no lastBlock is included */
|
|
523
|
+
lastBlock?: {
|
|
524
|
+
blockHeader?: BlockHeader;
|
|
525
|
+
indexWithinCheckpoint?: IndexWithinCheckpoint;
|
|
526
|
+
txHashes?: TxHash[];
|
|
527
|
+
txs?: Tx[];
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
478
532
|
const makeAndSignConsensusPayload = (
|
|
479
533
|
domainSeparator: SignatureDomainSeparator,
|
|
480
534
|
options?: MakeConsensusPayloadOptions,
|
|
481
535
|
) => {
|
|
482
|
-
const header = options?.header ??
|
|
536
|
+
const header = options?.header ?? makeCheckpointHeader(1);
|
|
483
537
|
const { signer = Secp256k1Signer.random(), archive = Fr.random() } = options ?? {};
|
|
484
538
|
|
|
485
539
|
const payload = ConsensusPayload.fromFields({
|
|
486
|
-
header
|
|
540
|
+
header,
|
|
487
541
|
archive,
|
|
488
542
|
});
|
|
489
543
|
|
|
490
544
|
const hash = getHashedSignaturePayloadEthSignedMessage(payload, domainSeparator);
|
|
491
545
|
const signature = signer.sign(hash);
|
|
492
546
|
|
|
493
|
-
return { blockNumber: header.
|
|
547
|
+
return { blockNumber: header.slotNumber, payload, signature };
|
|
494
548
|
};
|
|
495
549
|
|
|
496
550
|
export const makeAndSignCommitteeAttestationsAndSigners = (
|
|
@@ -504,79 +558,149 @@ export const makeAndSignCommitteeAttestationsAndSigners = (
|
|
|
504
558
|
return signer.sign(hash);
|
|
505
559
|
};
|
|
506
560
|
|
|
507
|
-
export const makeBlockProposal = (options?:
|
|
508
|
-
const
|
|
561
|
+
export const makeBlockProposal = (options?: MakeBlockProposalOptions): Promise<BlockProposal> => {
|
|
562
|
+
const blockHeader = options?.blockHeader ?? makeBlockHeader(1);
|
|
563
|
+
const indexWithinCheckpoint = options?.indexWithinCheckpoint ?? IndexWithinCheckpoint(0);
|
|
564
|
+
const inHash = options?.inHash ?? Fr.random();
|
|
565
|
+
const archiveRoot = options?.archiveRoot ?? Fr.random();
|
|
509
566
|
const txHashes = options?.txHashes ?? [0, 1, 2, 3, 4, 5].map(() => TxHash.random());
|
|
510
|
-
|
|
567
|
+
const txs = options?.txs;
|
|
568
|
+
const signer = options?.signer ?? Secp256k1Signer.random();
|
|
569
|
+
|
|
570
|
+
return BlockProposal.createProposalFromSigner(
|
|
571
|
+
blockHeader,
|
|
572
|
+
indexWithinCheckpoint,
|
|
573
|
+
inHash,
|
|
574
|
+
archiveRoot,
|
|
575
|
+
txHashes,
|
|
576
|
+
txs,
|
|
577
|
+
(_payload, _context) => Promise.resolve(signer.signMessage(_payload)),
|
|
578
|
+
);
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
export const makeCheckpointProposal = (options?: MakeCheckpointProposalOptions): Promise<CheckpointProposal> => {
|
|
582
|
+
const blockHeader = options?.lastBlock?.blockHeader ?? makeBlockHeader(1);
|
|
583
|
+
const checkpointHeader = options?.checkpointHeader ?? makeCheckpointHeader(1);
|
|
584
|
+
const archiveRoot = options?.archiveRoot ?? Fr.random();
|
|
585
|
+
const signer = options?.signer ?? Secp256k1Signer.random();
|
|
586
|
+
|
|
587
|
+
// Build lastBlock info if provided
|
|
588
|
+
const lastBlockInfo = options?.lastBlock
|
|
589
|
+
? {
|
|
590
|
+
blockHeader,
|
|
591
|
+
indexWithinCheckpoint: options.lastBlock.indexWithinCheckpoint ?? IndexWithinCheckpoint(4), // Last block in a 5-block checkpoint
|
|
592
|
+
txHashes: options.lastBlock.txHashes ?? [0, 1, 2, 3, 4, 5].map(() => TxHash.random()),
|
|
593
|
+
txs: options.lastBlock.txs,
|
|
594
|
+
}
|
|
595
|
+
: undefined;
|
|
596
|
+
|
|
597
|
+
return CheckpointProposal.createProposalFromSigner(checkpointHeader, archiveRoot, lastBlockInfo, payload =>
|
|
598
|
+
Promise.resolve(signer.signMessage(payload)),
|
|
599
|
+
);
|
|
511
600
|
};
|
|
512
601
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
602
|
+
/**
|
|
603
|
+
* Options for creating a checkpoint attestation
|
|
604
|
+
*/
|
|
605
|
+
export type MakeCheckpointAttestationOptions = {
|
|
606
|
+
header?: CheckpointHeader;
|
|
607
|
+
archive?: Fr;
|
|
608
|
+
attesterSigner?: Secp256k1Signer;
|
|
609
|
+
proposerSigner?: Secp256k1Signer;
|
|
610
|
+
signer?: Secp256k1Signer;
|
|
611
|
+
};
|
|
517
612
|
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
613
|
+
/**
|
|
614
|
+
* Create a checkpoint attestation for testing
|
|
615
|
+
*/
|
|
616
|
+
export const makeCheckpointAttestation = (options: MakeCheckpointAttestationOptions = {}): CheckpointAttestation => {
|
|
617
|
+
const header = options.header ?? makeCheckpointHeader(1);
|
|
618
|
+
const archive = options.archive ?? Fr.random();
|
|
619
|
+
const { signer, attesterSigner = signer, proposerSigner = signer } = options;
|
|
620
|
+
|
|
621
|
+
const payload = new ConsensusPayload(header, archive);
|
|
622
|
+
|
|
623
|
+
// Sign as attester
|
|
624
|
+
const attestationHash = getHashedSignaturePayloadEthSignedMessage(
|
|
625
|
+
payload,
|
|
626
|
+
SignatureDomainSeparator.checkpointAttestation,
|
|
627
|
+
);
|
|
628
|
+
const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
|
|
629
|
+
const attestationSignature = attestationSigner.sign(attestationHash);
|
|
630
|
+
|
|
631
|
+
// Sign as proposer - use CheckpointProposal's payload format (serializeToBuffer)
|
|
632
|
+
// This is different from ConsensusPayload's format (ABI encoding)
|
|
633
|
+
const proposalSignerToUse = proposerSigner ?? Secp256k1Signer.random();
|
|
634
|
+
const tempProposal = new CheckpointProposal(header, archive, Signature.empty());
|
|
635
|
+
const proposalHash = getHashedSignaturePayloadEthSignedMessage(
|
|
636
|
+
tempProposal,
|
|
637
|
+
SignatureDomainSeparator.checkpointProposal,
|
|
638
|
+
);
|
|
639
|
+
const proposerSignature = proposalSignerToUse.sign(proposalHash);
|
|
522
640
|
|
|
523
|
-
return
|
|
641
|
+
return new CheckpointAttestation(payload, attestationSignature, proposerSignature);
|
|
524
642
|
};
|
|
525
643
|
|
|
526
|
-
|
|
527
|
-
|
|
644
|
+
/**
|
|
645
|
+
* Create a checkpoint attestation from a checkpoint proposal
|
|
646
|
+
*/
|
|
647
|
+
export const makeCheckpointAttestationFromProposal = (
|
|
648
|
+
proposal: CheckpointProposal,
|
|
528
649
|
attesterSigner?: Secp256k1Signer,
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
const header = checkpoint.header;
|
|
532
|
-
const archive = checkpoint.archive.root;
|
|
650
|
+
): CheckpointAttestation => {
|
|
651
|
+
const payload = new ConsensusPayload(proposal.checkpointHeader, proposal.archive);
|
|
533
652
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
653
|
+
// Sign as attester
|
|
654
|
+
const attestationHash = getHashedSignaturePayloadEthSignedMessage(
|
|
655
|
+
payload,
|
|
656
|
+
SignatureDomainSeparator.checkpointAttestation,
|
|
657
|
+
);
|
|
658
|
+
const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
|
|
659
|
+
const attestationSignature = attestationSigner.sign(attestationHash);
|
|
538
660
|
|
|
539
|
-
|
|
661
|
+
// Use the proposal's signature as the proposer signature
|
|
662
|
+
return new CheckpointAttestation(payload, attestationSignature, proposal.signature);
|
|
540
663
|
};
|
|
541
664
|
|
|
542
|
-
|
|
543
|
-
|
|
665
|
+
/**
|
|
666
|
+
* Create a checkpoint attestation from a checkpoint
|
|
667
|
+
*/
|
|
668
|
+
export const makeCheckpointAttestationFromCheckpoint = (
|
|
669
|
+
checkpoint: Checkpoint,
|
|
544
670
|
attesterSigner?: Secp256k1Signer,
|
|
545
671
|
proposerSigner?: Secp256k1Signer,
|
|
546
|
-
):
|
|
547
|
-
const header =
|
|
548
|
-
const archive =
|
|
549
|
-
|
|
550
|
-
const payload = ConsensusPayload.fromFields({
|
|
551
|
-
header: header.toCheckpointHeader(),
|
|
552
|
-
archive,
|
|
553
|
-
});
|
|
672
|
+
): CheckpointAttestation => {
|
|
673
|
+
const header = checkpoint.header;
|
|
674
|
+
const archive = checkpoint.archive.root;
|
|
554
675
|
|
|
555
|
-
return
|
|
676
|
+
return makeCheckpointAttestation({ header, archive, attesterSigner, proposerSigner });
|
|
556
677
|
};
|
|
557
678
|
|
|
558
|
-
|
|
559
|
-
|
|
679
|
+
/**
|
|
680
|
+
* Create a checkpoint attestation from an L2Block
|
|
681
|
+
* Note: This is a compatibility function for tests. L2Block doesn't have a checkpoint header directly.
|
|
682
|
+
*/
|
|
683
|
+
export const makeCheckpointAttestationFromBlock = (
|
|
684
|
+
block: L2Block,
|
|
560
685
|
attesterSigner?: Secp256k1Signer,
|
|
561
686
|
proposerSigner?: Secp256k1Signer,
|
|
562
|
-
):
|
|
563
|
-
//
|
|
564
|
-
const
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
const
|
|
571
|
-
const proposerSignature = proposalSignerToUse.sign(proposalHash);
|
|
687
|
+
): CheckpointAttestation => {
|
|
688
|
+
// For L2Block, we create a minimal checkpoint header for testing purposes
|
|
689
|
+
const header = CheckpointHeader.empty({
|
|
690
|
+
lastArchiveRoot: block.header.lastArchive.root,
|
|
691
|
+
slotNumber: block.slot,
|
|
692
|
+
timestamp: block.timestamp,
|
|
693
|
+
blockHeadersHash: Fr.ZERO, // Would need to compute from block header hash
|
|
694
|
+
});
|
|
695
|
+
const archive = block.archive.root;
|
|
572
696
|
|
|
573
|
-
return
|
|
697
|
+
return makeCheckpointAttestation({ header, archive, attesterSigner, proposerSigner });
|
|
574
698
|
};
|
|
575
699
|
|
|
576
700
|
export async function randomPublishedL2Block(
|
|
577
701
|
l2BlockNumber: number,
|
|
578
702
|
opts: { signers?: Secp256k1Signer[] } = {},
|
|
579
|
-
): Promise<
|
|
703
|
+
): Promise<CheckpointedL2Block> {
|
|
580
704
|
const block = await L2Block.random(BlockNumber(l2BlockNumber));
|
|
581
705
|
const l1 = L1PublishedData.fromFields({
|
|
582
706
|
blockNumber: BigInt(block.number),
|
|
@@ -585,9 +709,19 @@ export async function randomPublishedL2Block(
|
|
|
585
709
|
});
|
|
586
710
|
|
|
587
711
|
const signers = opts.signers ?? times(3, () => Secp256k1Signer.random());
|
|
588
|
-
const
|
|
712
|
+
const checkpoint = await Checkpoint.random(CheckpointNumber.fromBlockNumber(BlockNumber(l2BlockNumber)), {
|
|
713
|
+
numBlocks: 0,
|
|
714
|
+
});
|
|
715
|
+
checkpoint.blocks = [block];
|
|
716
|
+
const atts = signers.map(signer =>
|
|
717
|
+
makeCheckpointAttestation({
|
|
718
|
+
signer,
|
|
719
|
+
archive: block.archive.root,
|
|
720
|
+
header: checkpoint.header,
|
|
721
|
+
}),
|
|
722
|
+
);
|
|
589
723
|
const attestations = atts.map(
|
|
590
724
|
(attestation, i) => new CommitteeAttestation(signers[i].address, attestation.signature),
|
|
591
725
|
);
|
|
592
|
-
return new
|
|
726
|
+
return new CheckpointedL2Block(CheckpointNumber.fromBlockNumber(BlockNumber(l2BlockNumber)), block, l1, attestations);
|
|
593
727
|
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timetable constants used for sequencer timing calculations.
|
|
3
|
+
* These define the time budgets for various phases of block production.
|
|
4
|
+
*
|
|
5
|
+
* The sequencer slot is divided into phases:
|
|
6
|
+
* 1. Checkpoint initialization (sync + proposer check)
|
|
7
|
+
* 2. Block building (execution)
|
|
8
|
+
* 3. Checkpoint assembly
|
|
9
|
+
* 4. P2P propagation for proposal and attestations (round-trip)
|
|
10
|
+
* 5. L1 publishing
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/** Time budget for checkpoint initialization (sync + proposer check) in seconds */
|
|
14
|
+
export const CHECKPOINT_INITIALIZATION_TIME = 1;
|
|
15
|
+
|
|
16
|
+
/** Time budget for assembling a checkpoint after building the last block in seconds */
|
|
17
|
+
export const CHECKPOINT_ASSEMBLE_TIME = 1;
|
|
18
|
+
|
|
19
|
+
/** Default one-way P2P propagation time for proposals and attestations in seconds */
|
|
20
|
+
export const DEFAULT_P2P_PROPAGATION_TIME = 2;
|
|
21
|
+
|
|
22
|
+
/** Default L1 publishing time (matches Ethereum slot duration on mainnet) in seconds */
|
|
23
|
+
export const DEFAULT_L1_PUBLISHING_TIME = 12;
|
|
24
|
+
|
|
25
|
+
/** Minimum execution time for building a block in seconds */
|
|
26
|
+
export const MIN_EXECUTION_TIME = 2;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Calculates the maximum number of blocks that can be built in a slot.
|
|
30
|
+
* Used by both the sequencer timetable and p2p gossipsub scoring.
|
|
31
|
+
*
|
|
32
|
+
* @param aztecSlotDurationSec - Aztec slot duration in seconds
|
|
33
|
+
* @param blockDurationSec - Duration per block in seconds (undefined = single block mode)
|
|
34
|
+
* @param opts - Optional overrides for timing constants
|
|
35
|
+
* @returns Maximum number of blocks per slot
|
|
36
|
+
*/
|
|
37
|
+
export function calculateMaxBlocksPerSlot(
|
|
38
|
+
aztecSlotDurationSec: number,
|
|
39
|
+
blockDurationSec: number | undefined,
|
|
40
|
+
opts: {
|
|
41
|
+
checkpointInitializationTime?: number;
|
|
42
|
+
checkpointAssembleTime?: number;
|
|
43
|
+
p2pPropagationTime?: number;
|
|
44
|
+
l1PublishingTime?: number;
|
|
45
|
+
} = {},
|
|
46
|
+
): number {
|
|
47
|
+
if (!blockDurationSec) {
|
|
48
|
+
return 1; // Single block per slot
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const initOffset = opts.checkpointInitializationTime ?? CHECKPOINT_INITIALIZATION_TIME;
|
|
52
|
+
const assembleTime = opts.checkpointAssembleTime ?? CHECKPOINT_ASSEMBLE_TIME;
|
|
53
|
+
const p2pTime = opts.p2pPropagationTime ?? DEFAULT_P2P_PROPAGATION_TIME;
|
|
54
|
+
const l1Time = opts.l1PublishingTime ?? DEFAULT_L1_PUBLISHING_TIME;
|
|
55
|
+
|
|
56
|
+
// Calculate checkpoint finalization time (assembly + round-trip propagation + L1 publishing)
|
|
57
|
+
const checkpointFinalizationTime = assembleTime + p2pTime * 2 + l1Time;
|
|
58
|
+
|
|
59
|
+
// Time reserved at end for last sub-slot (validator re-execution) + finalization
|
|
60
|
+
const timeReservedAtEnd = blockDurationSec + checkpointFinalizationTime;
|
|
61
|
+
|
|
62
|
+
// Time available for building blocks
|
|
63
|
+
const timeAvailableForBlocks = aztecSlotDurationSec - initOffset - timeReservedAtEnd;
|
|
64
|
+
|
|
65
|
+
return Math.max(1, Math.floor(timeAvailableForBlocks / blockDurationSec));
|
|
66
|
+
}
|
package/src/tx/block_header.ts
CHANGED
|
@@ -11,28 +11,31 @@ import type { FieldsOf } from '@aztec/foundation/types';
|
|
|
11
11
|
import { inspect } from 'util';
|
|
12
12
|
import { z } from 'zod';
|
|
13
13
|
|
|
14
|
+
import { BlockHash } from '../block/block_hash.js';
|
|
14
15
|
import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
|
|
15
16
|
import { GlobalVariables } from './global_variables.js';
|
|
16
17
|
import { StateReference } from './state_reference.js';
|
|
17
18
|
|
|
18
19
|
/** A header of an L2 block. */
|
|
19
20
|
export class BlockHeader {
|
|
21
|
+
private _cachedHash?: Promise<BlockHash>;
|
|
22
|
+
|
|
20
23
|
constructor(
|
|
21
24
|
/** Snapshot of archive before the block is applied. */
|
|
22
|
-
public lastArchive: AppendOnlyTreeSnapshot,
|
|
25
|
+
public readonly lastArchive: AppendOnlyTreeSnapshot,
|
|
23
26
|
/** State reference. */
|
|
24
|
-
public state: StateReference,
|
|
27
|
+
public readonly state: StateReference,
|
|
25
28
|
/**
|
|
26
29
|
* Hash of the sponge blob after the tx effects of this block has been applied.
|
|
27
30
|
* May contain tx effects from the previous blocks in the same checkpoint.
|
|
28
31
|
*/
|
|
29
|
-
public spongeBlobHash: Fr,
|
|
32
|
+
public readonly spongeBlobHash: Fr,
|
|
30
33
|
/** Global variables of an L2 block. */
|
|
31
|
-
public globalVariables: GlobalVariables,
|
|
34
|
+
public readonly globalVariables: GlobalVariables,
|
|
32
35
|
/** Total fees in the block, computed by the root rollup circuit */
|
|
33
|
-
public totalFees: Fr,
|
|
36
|
+
public readonly totalFees: Fr,
|
|
34
37
|
/** Total mana used in the block, computed by the root rollup circuit */
|
|
35
|
-
public totalManaUsed: Fr,
|
|
38
|
+
public readonly totalManaUsed: Fr,
|
|
36
39
|
) {}
|
|
37
40
|
|
|
38
41
|
static get schema(): ZodFor<BlockHeader> {
|
|
@@ -159,8 +162,18 @@ export class BlockHeader {
|
|
|
159
162
|
return BlockHeader.fromBuffer(hexToBuffer(str));
|
|
160
163
|
}
|
|
161
164
|
|
|
162
|
-
hash(): Promise<
|
|
163
|
-
|
|
165
|
+
hash(): Promise<BlockHash> {
|
|
166
|
+
if (!this._cachedHash) {
|
|
167
|
+
this._cachedHash = poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.BLOCK_HEADER_HASH).then(
|
|
168
|
+
fr => new BlockHash(fr),
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
return this._cachedHash;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/** Manually set the hash for this block header if already computed */
|
|
175
|
+
setHash(hashed: Fr) {
|
|
176
|
+
this._cachedHash = Promise.resolve(new BlockHash(hashed));
|
|
164
177
|
}
|
|
165
178
|
|
|
166
179
|
static random(overrides: Partial<FieldsOf<BlockHeader>> & Partial<FieldsOf<GlobalVariables>> = {}): BlockHeader {
|
|
@@ -4,13 +4,13 @@ import type { SlotNumber } from '@aztec/foundation/schemas';
|
|
|
4
4
|
import type { AztecAddress } from '../aztec-address/index.js';
|
|
5
5
|
import type { GasFees } from '../gas/gas_fees.js';
|
|
6
6
|
import type { UInt32 } from '../types/index.js';
|
|
7
|
-
import type { GlobalVariables } from './global_variables.js';
|
|
7
|
+
import type { CheckpointGlobalVariables, GlobalVariables } from './global_variables.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Interface for building global variables for Aztec blocks.
|
|
11
11
|
*/
|
|
12
12
|
export interface GlobalVariableBuilder {
|
|
13
|
-
|
|
13
|
+
getCurrentMinFees(): Promise<GasFees>;
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Builds global variables for a given block.
|
|
@@ -26,4 +26,11 @@ export interface GlobalVariableBuilder {
|
|
|
26
26
|
feeRecipient: AztecAddress,
|
|
27
27
|
slotNumber?: SlotNumber,
|
|
28
28
|
): Promise<GlobalVariables>;
|
|
29
|
+
|
|
30
|
+
/** Builds global variables that are constant throughout a checkpoint. */
|
|
31
|
+
buildCheckpointGlobalVariables(
|
|
32
|
+
coinbase: EthAddress,
|
|
33
|
+
feeRecipient: AztecAddress,
|
|
34
|
+
slotNumber: SlotNumber,
|
|
35
|
+
): Promise<CheckpointGlobalVariables>;
|
|
29
36
|
}
|