@aztec/stdlib 5.0.0-private.20260319 → 5.0.0-rc.1
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 +142 -1081
- package/dest/abi/abi.d.ts.map +1 -1
- package/dest/abi/abi.js +41 -18
- package/dest/abi/authorization_selector.d.ts +4 -7
- package/dest/abi/authorization_selector.d.ts.map +1 -1
- package/dest/abi/buffer.d.ts +14 -4
- package/dest/abi/buffer.d.ts.map +1 -1
- package/dest/abi/buffer.js +25 -4
- package/dest/abi/contract_artifact.d.ts +14 -1
- package/dest/abi/contract_artifact.d.ts.map +1 -1
- package/dest/abi/contract_artifact.js +31 -7
- package/dest/abi/decoder.d.ts +5 -44
- package/dest/abi/decoder.d.ts.map +1 -1
- package/dest/abi/decoder.js +12 -67
- package/dest/abi/encoder.d.ts +1 -1
- package/dest/abi/encoder.d.ts.map +1 -1
- package/dest/abi/encoder.js +32 -6
- package/dest/abi/event_selector.d.ts +4 -7
- package/dest/abi/event_selector.d.ts.map +1 -1
- package/dest/abi/function_call.d.ts +7 -25
- package/dest/abi/function_call.d.ts.map +1 -1
- package/dest/abi/function_selector.d.ts +3 -6
- package/dest/abi/function_selector.d.ts.map +1 -1
- package/dest/abi/function_selector.js +2 -4
- package/dest/abi/function_signature_decoder.d.ts +43 -0
- package/dest/abi/function_signature_decoder.d.ts.map +1 -0
- package/dest/abi/function_signature_decoder.js +66 -0
- package/dest/abi/index.d.ts +2 -1
- package/dest/abi/index.d.ts.map +1 -1
- package/dest/abi/index.js +1 -0
- package/dest/abi/note_selector.d.ts +4 -7
- package/dest/abi/note_selector.d.ts.map +1 -1
- package/dest/abi/note_selector.js +1 -3
- package/dest/abi/selector.d.ts +2 -2
- package/dest/abi/selector.d.ts.map +1 -1
- package/dest/abi/selector.js +1 -1
- package/dest/abi/utils.d.ts +1 -1
- package/dest/abi/utils.d.ts.map +1 -1
- package/dest/abi/utils.js +1 -1
- package/dest/auth_witness/auth_witness.d.ts +2 -2
- package/dest/auth_witness/auth_witness.d.ts.map +1 -1
- package/dest/avm/avm.d.ts +1756 -10463
- package/dest/avm/avm.d.ts.map +1 -1
- package/dest/avm/avm.js +6 -3
- package/dest/avm/avm_accumulated_data.d.ts +22 -86
- package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
- package/dest/avm/avm_circuit_public_inputs.d.ts +180 -932
- package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
- package/dest/avm/avm_proving_request.d.ts +653 -5446
- package/dest/avm/avm_proving_request.d.ts.map +1 -1
- package/dest/avm/message_pack.js +12 -3
- package/dest/avm/public_data_write.d.ts +6 -12
- package/dest/avm/public_data_write.d.ts.map +1 -1
- package/dest/avm/revert_code.d.ts +5 -21
- package/dest/avm/revert_code.d.ts.map +1 -1
- package/dest/avm/revert_code.js +12 -30
- package/dest/aztec-address/index.d.ts +8 -8
- package/dest/aztec-address/index.d.ts.map +1 -1
- package/dest/aztec-address/index.js +9 -6
- package/dest/block/attestation_info.d.ts +3 -2
- package/dest/block/attestation_info.d.ts.map +1 -1
- package/dest/block/attestation_info.js +7 -5
- package/dest/block/block_data.d.ts +13 -38
- package/dest/block/block_data.d.ts.map +1 -1
- package/dest/block/block_data.js +2 -2
- package/dest/block/block_hash.d.ts +11 -10
- package/dest/block/block_hash.d.ts.map +1 -1
- package/dest/block/block_hash.js +10 -9
- package/dest/block/block_parameter.d.ts +37 -4
- package/dest/block/block_parameter.d.ts.map +1 -1
- package/dest/block/block_parameter.js +53 -2
- package/dest/block/in_block.d.ts +5 -24
- package/dest/block/in_block.d.ts.map +1 -1
- package/dest/block/index.d.ts +1 -2
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +0 -1
- package/dest/block/l2_block.d.ts +13 -41
- package/dest/block/l2_block.d.ts.map +1 -1
- package/dest/block/l2_block_info.d.ts +10 -29
- package/dest/block/l2_block_info.d.ts.map +1 -1
- package/dest/block/l2_block_info.js +6 -5
- package/dest/block/l2_block_source.d.ts +216 -357
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_source.js +67 -1
- package/dest/block/l2_block_stream/interfaces.d.ts +46 -7
- package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts +2 -2
- package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.js +57 -21
- package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +8 -12
- 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 +11 -32
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +12 -18
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_tips_store_base.js +66 -40
- package/dest/block/proposal/attestations_and_signers.d.ts +19 -30
- package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
- package/dest/block/proposal/attestations_and_signers.js +26 -18
- package/dest/block/proposal/committee_attestation.d.ts +6 -12
- package/dest/block/proposal/committee_attestation.d.ts.map +1 -1
- 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 +202 -33
- package/dest/checkpoint/checkpoint.d.ts +30 -96
- package/dest/checkpoint/checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.js +11 -3
- package/dest/checkpoint/checkpoint_data.d.ts +68 -91
- package/dest/checkpoint/checkpoint_data.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint_data.js +12 -0
- package/dest/checkpoint/checkpoint_info.d.ts +7 -23
- package/dest/checkpoint/checkpoint_info.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint_reexecution_tracker.d.ts +60 -0
- package/dest/checkpoint/checkpoint_reexecution_tracker.d.ts.map +1 -0
- package/dest/checkpoint/checkpoint_reexecution_tracker.js +108 -0
- package/dest/checkpoint/digest.d.ts +18 -0
- package/dest/checkpoint/digest.d.ts.map +1 -0
- package/dest/checkpoint/digest.js +12 -0
- package/dest/checkpoint/index.d.ts +4 -1
- package/dest/checkpoint/index.d.ts.map +1 -1
- package/dest/checkpoint/index.js +3 -0
- package/dest/checkpoint/previous_checkpoint_out_hashes.d.ts +33 -0
- package/dest/checkpoint/previous_checkpoint_out_hashes.d.ts.map +1 -0
- package/dest/checkpoint/previous_checkpoint_out_hashes.js +45 -0
- package/dest/checkpoint/published_checkpoint.d.ts +42 -194
- package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/validate.d.ts +11 -3
- package/dest/checkpoint/validate.d.ts.map +1 -1
- package/dest/checkpoint/validate.js +9 -6
- package/dest/config/chain-config.d.ts +4 -9
- package/dest/config/chain-config.d.ts.map +1 -1
- package/dest/config/chain-config.js +13 -12
- package/dest/config/index.d.ts +2 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +1 -1
- package/dest/config/network-consensus-config.d.ts +72 -0
- package/dest/config/network-consensus-config.d.ts.map +1 -0
- package/dest/config/network-consensus-config.js +231 -0
- package/dest/config/sequencer-config.d.ts +7 -3
- package/dest/config/sequencer-config.d.ts.map +1 -1
- package/dest/config/sequencer-config.js +38 -5
- package/dest/contract/complete_address.d.ts +3 -2
- package/dest/contract/complete_address.d.ts.map +1 -1
- package/dest/contract/complete_address.js +6 -2
- package/dest/contract/contract_address.d.ts +5 -5
- package/dest/contract/contract_address.d.ts.map +1 -1
- package/dest/contract/contract_address.js +5 -4
- package/dest/contract/contract_deployment_data.d.ts +15 -61
- package/dest/contract/contract_deployment_data.d.ts.map +1 -1
- package/dest/contract/contract_instance.d.ts +4 -2
- package/dest/contract/contract_instance.d.ts.map +1 -1
- package/dest/contract/contract_instance.js +10 -3
- 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 +17 -241
- package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_class.js +1 -28
- package/dest/contract/interfaces/contract_instance.d.ts +41 -95
- package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_instance.js +4 -2
- package/dest/contract/interfaces/contract_instance_update.d.ts +6 -26
- package/dest/contract/interfaces/contract_instance_update.d.ts.map +1 -1
- package/dest/contract/interfaces/node-info.d.ts +11 -1
- package/dest/contract/interfaces/node-info.d.ts.map +1 -1
- package/dest/contract/interfaces/node-info.js +7 -1
- package/dest/contract/interfaces/protocol_contract_addresses.d.ts +2 -12
- package/dest/contract/interfaces/protocol_contract_addresses.d.ts.map +1 -1
- 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 -4
- package/dest/database-version/database_version.d.ts +5 -11
- package/dest/database-version/database_version.d.ts.map +1 -1
- package/dest/database-version/version_manager.d.ts +6 -2
- package/dest/database-version/version_manager.d.ts.map +1 -1
- package/dest/database-version/version_manager.js +12 -1
- package/dest/deserialization/index.d.ts +35 -3
- package/dest/deserialization/index.d.ts.map +1 -1
- package/dest/deserialization/index.js +32 -1
- package/dest/epoch-helpers/index.d.ts +10 -22
- package/dest/epoch-helpers/index.d.ts.map +1 -1
- package/dest/epoch-helpers/index.js +12 -0
- package/dest/file-store/factory.d.ts +4 -3
- package/dest/file-store/factory.d.ts.map +1 -1
- package/dest/file-store/factory.js +2 -2
- package/dest/file-store/http.d.ts +9 -2
- package/dest/file-store/http.d.ts.map +1 -1
- package/dest/file-store/http.js +20 -9
- package/dest/file-store/index.d.ts +2 -1
- package/dest/file-store/index.d.ts.map +1 -1
- package/dest/gas/fee_math.d.ts +49 -0
- package/dest/gas/fee_math.d.ts.map +1 -0
- package/dest/gas/fee_math.js +80 -0
- package/dest/gas/gas.d.ts +9 -14
- package/dest/gas/gas.d.ts.map +1 -1
- package/dest/gas/gas.js +6 -3
- package/dest/gas/gas_fees.d.ts +13 -14
- package/dest/gas/gas_fees.d.ts.map +1 -1
- package/dest/gas/gas_fees.js +17 -4
- package/dest/gas/gas_settings.d.ts +60 -86
- package/dest/gas/gas_settings.d.ts.map +1 -1
- package/dest/gas/gas_settings.js +49 -9
- package/dest/gas/index.d.ts +3 -1
- package/dest/gas/index.d.ts.map +1 -1
- package/dest/gas/index.js +2 -0
- package/dest/gas/tx_gas_limits.d.ts +72 -0
- package/dest/gas/tx_gas_limits.d.ts.map +1 -0
- package/dest/gas/tx_gas_limits.js +85 -0
- package/dest/ha-signing/config.d.ts +11 -75
- package/dest/ha-signing/config.d.ts.map +1 -1
- package/dest/ha-signing/config.js +9 -18
- package/dest/ha-signing/index.d.ts +2 -2
- package/dest/ha-signing/index.d.ts.map +1 -1
- package/dest/ha-signing/index.js +1 -1
- package/dest/ha-signing/local_config.d.ts +3 -34
- package/dest/ha-signing/local_config.d.ts.map +1 -1
- package/dest/ha-signing/local_config.js +2 -2
- package/dest/ha-signing/types.d.ts +37 -32
- package/dest/ha-signing/types.d.ts.map +1 -1
- package/dest/ha-signing/types.js +13 -6
- package/dest/hash/hash.d.ts +19 -1
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +39 -2
- package/dest/interfaces/allowed_element.d.ts +4 -28
- package/dest/interfaces/allowed_element.d.ts.map +1 -1
- package/dest/interfaces/api_limit.d.ts +1 -1
- package/dest/interfaces/api_limit.js +1 -1
- package/dest/interfaces/archiver.d.ts +20 -32
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +215 -70
- package/dest/interfaces/aztec-node-admin.d.ts +71 -305
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +60 -17
- package/dest/interfaces/aztec-node-debug.d.ts +34 -0
- package/dest/interfaces/aztec-node-debug.d.ts.map +1 -0
- package/dest/interfaces/aztec-node-debug.js +29 -0
- package/dest/interfaces/aztec-node.d.ts +156 -112
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +354 -71
- package/dest/interfaces/block-builder.d.ts +5 -1
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/block_response.d.ts +90 -0
- package/dest/interfaces/block_response.d.ts.map +1 -0
- package/dest/interfaces/block_response.js +30 -0
- package/dest/interfaces/chain_tips.d.ts +50 -0
- package/dest/interfaces/chain_tips.d.ts.map +1 -0
- package/dest/interfaces/chain_tips.js +11 -0
- package/dest/interfaces/checkpoint_parameter.d.ts +14 -0
- package/dest/interfaces/checkpoint_parameter.d.ts.map +1 -0
- package/dest/interfaces/checkpoint_parameter.js +18 -0
- package/dest/interfaces/checkpoint_response.d.ts +122 -0
- package/dest/interfaces/checkpoint_response.d.ts.map +1 -0
- package/dest/interfaces/checkpoint_response.js +26 -0
- package/dest/interfaces/client.d.ts +9 -2
- package/dest/interfaces/client.d.ts.map +1 -1
- package/dest/interfaces/client.js +7 -1
- package/dest/interfaces/configs.d.ts +63 -134
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +13 -2
- package/dest/interfaces/get_tx_by_hash_options.d.ts +9 -0
- package/dest/interfaces/get_tx_by_hash_options.d.ts.map +1 -0
- package/dest/interfaces/get_tx_by_hash_options.js +4 -0
- package/dest/interfaces/l1_publish_info.d.ts +29 -0
- package/dest/interfaces/l1_publish_info.d.ts.map +1 -0
- package/dest/interfaces/l1_publish_info.js +26 -0
- package/dest/interfaces/l2_logs_source.d.ts +14 -36
- package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
- package/dest/interfaces/l2_logs_source.js +5 -0
- package/dest/interfaces/merkle_tree_operations.d.ts +4 -3
- package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
- package/dest/interfaces/p2p-bootstrap.js +8 -2
- package/dest/interfaces/p2p.d.ts +46 -7
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/p2p.js +41 -6
- package/dest/interfaces/private_kernel_prover.d.ts +62 -2
- package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
- package/dest/interfaces/prover-agent.d.ts +5 -23
- package/dest/interfaces/prover-agent.d.ts.map +1 -1
- package/dest/interfaces/prover-agent.js +4 -1
- package/dest/interfaces/prover-client.d.ts +7 -29
- package/dest/interfaces/prover-client.d.ts.map +1 -1
- package/dest/interfaces/prover-client.js +0 -3
- package/dest/interfaces/prover-node.d.ts +8 -3
- package/dest/interfaces/prover-node.d.ts.map +1 -1
- package/dest/interfaces/prover-node.js +30 -14
- package/dest/interfaces/proving-job-source.js +24 -4
- package/dest/interfaces/proving-job.d.ts +763 -5814
- package/dest/interfaces/proving-job.d.ts.map +1 -1
- package/dest/interfaces/proving-job.js +1 -1
- package/dest/interfaces/public_storage_override.d.ts +22 -0
- package/dest/interfaces/public_storage_override.d.ts.map +1 -0
- package/dest/interfaces/public_storage_override.js +7 -0
- package/dest/interfaces/server.d.ts +6 -2
- package/dest/interfaces/server.d.ts.map +1 -1
- package/dest/interfaces/server.js +5 -1
- package/dest/interfaces/slasher.d.ts +25 -65
- package/dest/interfaces/slasher.d.ts.map +1 -1
- package/dest/interfaces/slasher.js +8 -4
- package/dest/interfaces/tx_provider.d.ts +6 -1
- package/dest/interfaces/tx_provider.d.ts.map +1 -1
- package/dest/interfaces/validator.d.ts +55 -248
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +8 -2
- package/dest/interfaces/world_state.d.ts +2 -2
- package/dest/interfaces/world_state.d.ts.map +1 -1
- package/dest/kernel/hints/key_validation_request.d.ts +12 -8
- package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
- package/dest/kernel/hints/key_validation_request.js +20 -18
- package/dest/kernel/index.d.ts +5 -1
- package/dest/kernel/index.d.ts.map +1 -1
- package/dest/kernel/index.js +4 -0
- package/dest/kernel/log_hash.d.ts +6 -2
- package/dest/kernel/log_hash.d.ts.map +1 -1
- package/dest/kernel/log_hash.js +21 -9
- package/dest/kernel/private_circuit_public_inputs.d.ts +2 -2
- package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +2 -2
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts +23 -0
- package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_init_2_circuit_private_inputs.js +35 -0
- package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts +24 -0
- package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_init_3_circuit_private_inputs.js +37 -0
- package/dest/kernel/private_kernel_inner_2_circuit_private_inputs.d.ts +16 -0
- package/dest/kernel/private_kernel_inner_2_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_inner_2_circuit_private_inputs.js +23 -0
- package/dest/kernel/private_kernel_inner_3_circuit_private_inputs.d.ts +17 -0
- package/dest/kernel/private_kernel_inner_3_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_inner_3_circuit_private_inputs.js +25 -0
- package/dest/kernel/private_kernel_prover_output.d.ts +3 -29
- package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +9 -6
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +22 -7
- package/dest/kernel/private_to_avm_accumulated_data.d.ts +25 -69
- package/dest/kernel/private_to_avm_accumulated_data.d.ts.map +1 -1
- package/dest/kernel/private_to_avm_accumulated_data.js +11 -5
- package/dest/kernel/private_to_public_accumulated_data.d.ts +4 -3
- package/dest/kernel/private_to_public_accumulated_data.d.ts.map +1 -1
- package/dest/kernel/private_to_public_accumulated_data.js +6 -3
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +5 -4
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +7 -3
- package/dest/kernel/private_to_rollup_accumulated_data.d.ts +5 -4
- package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
- package/dest/kernel/private_to_rollup_accumulated_data.js +6 -3
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +5 -4
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.js +7 -3
- package/dest/kernel/public_call_request.d.ts +15 -30
- package/dest/kernel/public_call_request.d.ts.map +1 -1
- package/dest/kernel/public_call_request.js +16 -7
- package/dest/keys/derivation.d.ts +6 -2
- package/dest/keys/derivation.d.ts.map +1 -1
- package/dest/keys/derivation.js +16 -6
- package/dest/keys/public_key.d.ts +22 -3
- package/dest/keys/public_key.d.ts.map +1 -1
- package/dest/keys/public_key.js +20 -1
- package/dest/keys/public_keys.d.ts +55 -82
- package/dest/keys/public_keys.d.ts.map +1 -1
- package/dest/keys/public_keys.js +102 -74
- package/dest/kv-store/config.d.ts +3 -6
- package/dest/kv-store/config.d.ts.map +1 -1
- package/dest/kv-store/config.js +2 -7
- package/dest/l1-contracts/index.d.ts +2 -2
- package/dest/l1-contracts/index.d.ts.map +1 -1
- package/dest/l1-contracts/index.js +1 -1
- package/dest/logs/app_tagging_secret.d.ts +46 -0
- package/dest/logs/app_tagging_secret.d.ts.map +1 -0
- package/dest/logs/app_tagging_secret.js +109 -0
- package/dest/logs/app_tagging_secret_kind.d.ts +7 -0
- package/dest/logs/app_tagging_secret_kind.d.ts.map +1 -0
- package/dest/logs/app_tagging_secret_kind.js +17 -0
- package/dest/logs/contract_class_log.d.ts +16 -34
- package/dest/logs/contract_class_log.d.ts.map +1 -1
- package/dest/logs/contract_class_log.js +11 -9
- package/dest/logs/index.d.ts +7 -7
- package/dest/logs/index.d.ts.map +1 -1
- package/dest/logs/index.js +6 -6
- package/dest/logs/log_cursor.d.ts +51 -0
- package/dest/logs/log_cursor.d.ts.map +1 -0
- package/dest/logs/log_cursor.js +82 -0
- package/dest/logs/log_result.d.ts +54 -0
- package/dest/logs/log_result.d.ts.map +1 -0
- package/dest/logs/log_result.js +56 -0
- package/dest/logs/logs_query.d.ts +82 -0
- package/dest/logs/logs_query.d.ts.map +1 -0
- package/dest/logs/logs_query.js +50 -0
- package/dest/logs/message_context.d.ts +6 -8
- package/dest/logs/message_context.d.ts.map +1 -1
- package/dest/logs/message_context.js +27 -9
- package/dest/logs/pending_tagged_log.d.ts +2 -3
- package/dest/logs/pending_tagged_log.d.ts.map +1 -1
- package/dest/logs/pending_tagged_log.js +2 -2
- package/dest/logs/pre_tag.d.ts +11 -24
- package/dest/logs/pre_tag.d.ts.map +1 -1
- package/dest/logs/pre_tag.js +2 -2
- package/dest/logs/private_log.d.ts +7 -12
- package/dest/logs/private_log.d.ts.map +1 -1
- package/dest/logs/private_log.js +6 -3
- package/dest/logs/query_all_logs_by_tags.d.ts +24 -0
- package/dest/logs/query_all_logs_by_tags.d.ts.map +1 -0
- package/dest/logs/query_all_logs_by_tags.js +64 -0
- package/dest/logs/shared_secret_derivation.d.ts +11 -10
- package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
- package/dest/logs/shared_secret_derivation.js +15 -9
- package/dest/logs/siloed_tag.d.ts +8 -7
- package/dest/logs/siloed_tag.d.ts.map +1 -1
- package/dest/logs/siloed_tag.js +13 -3
- package/dest/logs/tag.d.ts +5 -6
- package/dest/logs/tag.d.ts.map +1 -1
- package/dest/logs/tag.js +4 -0
- package/dest/logs/tagging_index_range.d.ts +13 -31
- package/dest/logs/tagging_index_range.d.ts.map +1 -1
- package/dest/logs/tagging_index_range.js +2 -2
- package/dest/messaging/append_l1_to_l2_messages.d.ts +9 -0
- package/dest/messaging/append_l1_to_l2_messages.d.ts.map +1 -0
- package/dest/messaging/append_l1_to_l2_messages.js +12 -0
- package/dest/messaging/index.d.ts +2 -1
- package/dest/messaging/index.d.ts.map +1 -1
- package/dest/messaging/index.js +1 -0
- package/dest/messaging/l1_to_l2_message.d.ts +3 -2
- package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
- package/dest/messaging/l1_to_l2_message.js +11 -13
- package/dest/messaging/l2_to_l1_membership.d.ts +43 -6
- package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_membership.js +72 -12
- package/dest/messaging/l2_to_l1_message.d.ts +38 -112
- package/dest/messaging/l2_to_l1_message.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_message.js +21 -12
- package/dest/noir/index.d.ts +3 -1
- package/dest/noir/index.d.ts.map +1 -1
- package/dest/note/note.d.ts +2 -2
- package/dest/note/note.d.ts.map +1 -1
- package/dest/note/note_dao.d.ts +1 -1
- package/dest/note/note_dao.d.ts.map +1 -1
- package/dest/note/note_dao.js +1 -4
- package/dest/p2p/block_proposal.d.ts +31 -14
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +57 -39
- package/dest/p2p/checkpoint_attestation.d.ts +15 -9
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
- package/dest/p2p/checkpoint_attestation.js +23 -24
- package/dest/p2p/checkpoint_proposal.d.ts +35 -16
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/checkpoint_proposal.js +59 -51
- package/dest/p2p/consensus_payload.d.ts +26 -20
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +38 -19
- package/dest/p2p/gossipable.d.ts +4 -4
- package/dest/p2p/gossipable.d.ts.map +1 -1
- package/dest/p2p/signature_utils.d.ts +28 -19
- package/dest/p2p/signature_utils.d.ts.map +1 -1
- package/dest/p2p/signature_utils.js +118 -21
- package/dest/p2p/signed_txs.d.ts +15 -13
- package/dest/p2p/signed_txs.d.ts.map +1 -1
- package/dest/p2p/signed_txs.js +26 -24
- package/dest/parity/parity_base_private_inputs.d.ts +8 -4
- package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
- package/dest/parity/parity_base_private_inputs.js +7 -5
- package/dest/parity/parity_public_inputs.d.ts +8 -4
- package/dest/parity/parity_public_inputs.d.ts.map +1 -1
- package/dest/parity/parity_public_inputs.js +6 -3
- package/dest/parity/parity_root_private_inputs.d.ts +2 -2
- package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
- package/dest/proofs/chonk_proof.d.ts +57 -7
- package/dest/proofs/chonk_proof.d.ts.map +1 -1
- package/dest/proofs/chonk_proof.js +112 -15
- package/dest/proofs/recursive_proof.d.ts +2 -2
- package/dest/proofs/recursive_proof.d.ts.map +1 -1
- package/dest/rollup/block_headers_hash.d.ts +1 -1
- package/dest/rollup/block_headers_hash.d.ts.map +1 -1
- package/dest/rollup/block_headers_hash.js +8 -2
- package/dest/rollup/block_merge_rollup_private_inputs.d.ts +2 -2
- package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/block_rollup_public_inputs.d.ts +12 -2
- package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/block_rollup_public_inputs.js +12 -0
- package/dest/rollup/block_root_rollup_private_inputs.d.ts +6 -6
- package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +2 -2
- package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +9 -2
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.js +9 -0
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +5 -5
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts +2 -2
- package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/public_chonk_verifier_private_inputs.d.ts +2 -2
- package/dest/rollup/public_chonk_verifier_private_inputs.d.ts.map +1 -1
- package/dest/rollup/public_chonk_verifier_public_inputs.d.ts +2 -2
- package/dest/rollup/public_chonk_verifier_public_inputs.d.ts.map +1 -1
- package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts +2 -2
- package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_private_inputs.d.ts +2 -2
- package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.d.ts +2 -2
- package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +2 -2
- package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/tx_rollup_public_inputs.d.ts +2 -2
- package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
- package/dest/schemas/schemas.d.ts +32 -78
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +2 -2
- package/dest/slashing/helpers.d.ts +2 -2
- package/dest/slashing/helpers.d.ts.map +1 -1
- package/dest/slashing/helpers.js +10 -7
- package/dest/slashing/index.d.ts +2 -3
- package/dest/slashing/index.d.ts.map +1 -1
- package/dest/slashing/index.js +1 -2
- package/dest/slashing/serialization.d.ts +2 -6
- package/dest/slashing/serialization.d.ts.map +1 -1
- package/dest/slashing/serialization.js +0 -60
- package/dest/slashing/types.d.ts +18 -112
- package/dest/slashing/types.d.ts.map +1 -1
- package/dest/slashing/types.js +16 -24
- package/dest/slashing/{tally.d.ts → votes.d.ts} +1 -1
- package/dest/slashing/{tally.d.ts.map → votes.d.ts.map} +1 -1
- package/dest/slashing/{tally.js → votes.js} +1 -1
- package/dest/snapshots/types.d.ts +15 -78
- package/dest/snapshots/types.d.ts.map +1 -1
- package/dest/stats/stats.d.ts +2 -2
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +25 -32
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +85 -82
- package/dest/tests/mocks.d.ts +8 -5
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +45 -56
- package/dest/timetable/budgets.d.ts +57 -0
- package/dest/timetable/budgets.d.ts.map +1 -0
- package/dest/timetable/budgets.js +56 -0
- package/dest/timetable/build_proposer_timetable.d.ts +21 -0
- package/dest/timetable/build_proposer_timetable.d.ts.map +1 -0
- package/dest/timetable/build_proposer_timetable.js +17 -0
- package/dest/timetable/consensus_timetable.d.ts +70 -0
- package/dest/timetable/consensus_timetable.d.ts.map +1 -0
- package/dest/timetable/consensus_timetable.js +89 -0
- package/dest/timetable/index.d.ts +5 -37
- package/dest/timetable/index.d.ts.map +1 -1
- package/dest/timetable/index.js +4 -39
- package/dest/timetable/proposer_timetable.d.ts +106 -0
- package/dest/timetable/proposer_timetable.d.ts.map +1 -0
- package/dest/timetable/proposer_timetable.js +132 -0
- package/dest/trees/append_only_tree_snapshot.d.ts +9 -14
- package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
- package/dest/trees/append_only_tree_snapshot.js +6 -3
- package/dest/trees/nullifier_leaf.d.ts +19 -42
- package/dest/trees/nullifier_leaf.d.ts.map +1 -1
- package/dest/trees/nullifier_leaf.js +3 -0
- package/dest/trees/nullifier_membership_witness.d.ts +16 -59
- package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
- package/dest/trees/nullifier_membership_witness.js +2 -14
- package/dest/trees/public_data_leaf.d.ts +21 -53
- package/dest/trees/public_data_leaf.d.ts.map +1 -1
- package/dest/trees/public_data_witness.d.ts +16 -58
- package/dest/trees/public_data_witness.d.ts.map +1 -1
- package/dest/tx/block_header.d.ts +5 -4
- package/dest/tx/block_header.d.ts.map +1 -1
- package/dest/tx/block_header.js +7 -4
- package/dest/tx/call_context.d.ts +4 -14
- package/dest/tx/call_context.d.ts.map +1 -1
- package/dest/tx/capsule.d.ts +7 -3
- package/dest/tx/capsule.d.ts.map +1 -1
- package/dest/tx/capsule.js +9 -3
- package/dest/tx/fee_provider.d.ts +10 -0
- package/dest/tx/fee_provider.d.ts.map +1 -0
- package/dest/tx/fee_provider.js +1 -0
- package/dest/tx/function_data.d.ts +4 -10
- package/dest/tx/function_data.d.ts.map +1 -1
- package/dest/tx/global_variable_builder.d.ts +3 -4
- package/dest/tx/global_variable_builder.d.ts.map +1 -1
- package/dest/tx/global_variables.d.ts +16 -49
- package/dest/tx/global_variables.d.ts.map +1 -1
- package/dest/tx/global_variables.js +8 -12
- package/dest/tx/hashed_values.d.ts +4 -3
- package/dest/tx/hashed_values.d.ts.map +1 -1
- package/dest/tx/hashed_values.js +6 -3
- package/dest/tx/in_tx.d.ts +5 -17
- package/dest/tx/in_tx.d.ts.map +1 -1
- package/dest/tx/index.d.ts +2 -1
- package/dest/tx/index.d.ts.map +1 -1
- package/dest/tx/index.js +1 -0
- package/dest/tx/indexed_tx_effect.d.ts +8 -19
- package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
- package/dest/tx/indexed_tx_effect.js +9 -6
- package/dest/tx/partial_state_reference.d.ts +22 -65
- package/dest/tx/partial_state_reference.d.ts.map +1 -1
- package/dest/tx/partial_state_reference.js +6 -3
- package/dest/tx/private_execution_result.d.ts +6 -16
- package/dest/tx/private_execution_result.d.ts.map +1 -1
- package/dest/tx/profiling.d.ts +54 -352
- package/dest/tx/profiling.d.ts.map +1 -1
- package/dest/tx/profiling.js +4 -4
- package/dest/tx/protocol_contracts.d.ts +5 -9
- package/dest/tx/protocol_contracts.d.ts.map +1 -1
- package/dest/tx/proven_tx.d.ts +30 -74
- package/dest/tx/proven_tx.d.ts.map +1 -1
- package/dest/tx/proven_tx.js +6 -0
- package/dest/tx/public_call_request_with_calldata.d.ts +4 -3
- package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
- package/dest/tx/public_call_request_with_calldata.js +6 -3
- package/dest/tx/simulated_tx.d.ts +64 -1143
- package/dest/tx/simulated_tx.d.ts.map +1 -1
- package/dest/tx/simulated_tx.js +13 -11
- package/dest/tx/state_reference.d.ts +30 -117
- package/dest/tx/state_reference.d.ts.map +1 -1
- package/dest/tx/state_reference.js +6 -4
- package/dest/tx/tree_snapshots.d.ts +27 -84
- package/dest/tx/tree_snapshots.d.ts.map +1 -1
- package/dest/tx/tree_snapshots.js +6 -4
- package/dest/tx/tx.d.ts +22 -13
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +44 -22
- package/dest/tx/tx_constant_data.d.ts +4 -3
- package/dest/tx/tx_constant_data.d.ts.map +1 -1
- package/dest/tx/tx_constant_data.js +6 -3
- package/dest/tx/tx_context.d.ts +32 -131
- package/dest/tx/tx_context.d.ts.map +1 -1
- package/dest/tx/tx_context.js +6 -6
- package/dest/tx/tx_hash.d.ts +6 -4
- package/dest/tx/tx_hash.d.ts.map +1 -1
- package/dest/tx/tx_hash.js +13 -5
- package/dest/tx/tx_receipt.d.ts +144 -63
- package/dest/tx/tx_receipt.d.ts.map +1 -1
- package/dest/tx/tx_receipt.js +143 -60
- package/dest/tx/validator/error_texts.d.ts +6 -2
- package/dest/tx/validator/error_texts.d.ts.map +1 -1
- package/dest/tx/validator/error_texts.js +7 -1
- package/dest/tx/validator/tx_validator.d.ts +5 -27
- package/dest/tx/validator/tx_validator.d.ts.map +1 -1
- package/dest/tx/validator/tx_validator.js +0 -4
- package/dest/types/shared.d.ts +4 -12
- package/dest/types/shared.d.ts.map +1 -1
- package/dest/types/shared.js +6 -12
- package/dest/update-checker/dev_version.d.ts +3 -0
- package/dest/update-checker/dev_version.d.ts.map +1 -0
- package/dest/update-checker/dev_version.js +1 -0
- package/dest/update-checker/index.d.ts +2 -1
- package/dest/update-checker/index.d.ts.map +1 -1
- package/dest/update-checker/index.js +1 -0
- package/dest/update-checker/package_version.d.ts +6 -3
- package/dest/update-checker/package_version.d.ts.map +1 -1
- package/dest/update-checker/package_version.js +8 -19
- package/dest/validators/schemas.d.ts +147 -614
- package/dest/validators/schemas.d.ts.map +1 -1
- package/dest/validators/schemas.js +6 -4
- package/dest/validators/types.d.ts +20 -3
- package/dest/validators/types.d.ts.map +1 -1
- package/dest/versioning/versioning.js +1 -1
- package/dest/vks/verification_key.d.ts +4 -139
- package/dest/vks/verification_key.d.ts.map +1 -1
- package/dest/vks/verification_key.js +5 -126
- package/dest/world-state/genesis_data.d.ts +13 -0
- package/dest/world-state/genesis_data.d.ts.map +1 -0
- package/dest/world-state/genesis_data.js +7 -0
- package/dest/world-state/index.d.ts +2 -1
- package/dest/world-state/index.d.ts.map +1 -1
- package/dest/world-state/index.js +1 -0
- package/dest/world-state/world_state_revision.d.ts +15 -26
- package/dest/world-state/world_state_revision.d.ts.map +1 -1
- package/dest/world-state/world_state_revision.js +7 -1
- package/package.json +12 -11
- package/src/abi/abi.ts +78 -21
- package/src/abi/authorization_selector.ts +2 -8
- package/src/abi/buffer.ts +25 -4
- package/src/abi/contract_artifact.ts +30 -6
- package/src/abi/decoder.ts +23 -78
- package/src/abi/encoder.ts +42 -6
- package/src/abi/event_selector.ts +2 -8
- package/src/abi/function_selector.ts +4 -13
- package/src/abi/function_signature_decoder.ts +77 -0
- package/src/abi/index.ts +1 -0
- package/src/abi/note_selector.ts +3 -12
- package/src/abi/selector.ts +1 -1
- package/src/abi/utils.ts +6 -4
- package/src/avm/avm.ts +5 -0
- package/src/avm/message_pack.ts +12 -3
- package/src/avm/revert_code.ts +19 -39
- package/src/aztec-address/index.ts +15 -12
- package/src/block/attestation_info.ts +11 -11
- package/src/block/block_data.ts +3 -4
- package/src/block/block_hash.ts +21 -14
- package/src/block/block_parameter.ts +72 -4
- package/src/block/index.ts +0 -1
- package/src/block/l2_block_info.ts +8 -6
- package/src/block/l2_block_source.ts +216 -147
- package/src/block/l2_block_stream/interfaces.ts +42 -6
- package/src/block/l2_block_stream/l2_block_stream.ts +60 -31
- package/src/block/l2_block_stream/l2_tips_memory_store.ts +17 -41
- package/src/block/l2_block_stream/l2_tips_store_base.ts +64 -60
- package/src/block/proposal/attestations_and_signers.ts +32 -17
- package/src/block/test/l2_tips_store_test_suite.ts +198 -18
- package/src/checkpoint/checkpoint.ts +13 -3
- package/src/checkpoint/checkpoint_data.ts +44 -4
- package/src/checkpoint/checkpoint_reexecution_tracker.ts +167 -0
- package/src/checkpoint/digest.ts +28 -0
- package/src/checkpoint/index.ts +3 -0
- package/src/checkpoint/previous_checkpoint_out_hashes.ts +61 -0
- package/src/checkpoint/validate.ts +16 -6
- package/src/config/chain-config.ts +13 -16
- package/src/config/index.ts +1 -1
- package/src/config/network-consensus-config.ts +302 -0
- package/src/config/sequencer-config.ts +68 -9
- package/src/contract/complete_address.ts +7 -3
- package/src/contract/contract_address.ts +6 -6
- package/src/contract/contract_instance.ts +11 -2
- package/src/contract/index.ts +0 -2
- package/src/contract/interfaces/contract_class.ts +2 -82
- package/src/contract/interfaces/contract_instance.ts +6 -2
- package/src/contract/interfaces/node-info.ts +11 -0
- package/src/contract/private_function.ts +3 -1
- package/src/database-version/version_manager.ts +17 -0
- package/src/deserialization/index.ts +35 -2
- package/src/epoch-helpers/index.ts +24 -0
- package/src/file-store/factory.ts +13 -4
- package/src/file-store/http.ts +29 -10
- package/src/file-store/index.ts +1 -0
- package/src/gas/README.md +123 -0
- package/src/gas/fee_math.ts +120 -0
- package/src/gas/gas.ts +8 -3
- package/src/gas/gas_fees.ts +26 -13
- package/src/gas/gas_settings.ts +63 -15
- package/src/gas/index.ts +2 -0
- package/src/gas/tx_gas_limits.ts +123 -0
- package/src/ha-signing/config.ts +14 -18
- package/src/ha-signing/index.ts +3 -1
- package/src/ha-signing/local_config.ts +2 -2
- package/src/ha-signing/types.ts +48 -34
- package/src/hash/hash.ts +34 -2
- package/src/interfaces/api_limit.ts +1 -1
- package/src/interfaces/archiver.ts +88 -93
- package/src/interfaces/aztec-node-admin.ts +36 -21
- package/src/interfaces/aztec-node-debug.ts +55 -0
- package/src/interfaces/aztec-node.ts +389 -259
- package/src/interfaces/block-builder.ts +4 -0
- package/src/interfaces/block_response.ts +92 -0
- package/src/interfaces/chain_tips.ts +24 -0
- package/src/interfaces/checkpoint_parameter.ts +20 -0
- package/src/interfaces/checkpoint_response.ts +84 -0
- package/src/interfaces/client.ts +8 -1
- package/src/interfaces/configs.ts +64 -7
- package/src/interfaces/get_tx_by_hash_options.ts +14 -0
- package/src/interfaces/l1_publish_info.ts +40 -0
- package/src/interfaces/l2_logs_source.ts +13 -42
- package/src/interfaces/merkle_tree_operations.ts +3 -2
- package/src/interfaces/p2p-bootstrap.ts +2 -2
- package/src/interfaces/p2p.ts +59 -19
- package/src/interfaces/private_kernel_prover.ts +88 -0
- package/src/interfaces/prover-agent.ts +1 -1
- package/src/interfaces/prover-client.ts +3 -8
- package/src/interfaces/prover-node.ts +19 -12
- package/src/interfaces/proving-job-source.ts +4 -4
- package/src/interfaces/proving-job.ts +3 -3
- package/src/interfaces/public_storage_override.ts +26 -0
- package/src/interfaces/server.ts +5 -1
- package/src/interfaces/slasher.ts +17 -10
- package/src/interfaces/tx_provider.ts +6 -0
- package/src/interfaces/validator.ts +45 -15
- package/src/interfaces/world_state.ts +1 -1
- package/src/kernel/hints/key_validation_request.ts +18 -16
- package/src/kernel/index.ts +4 -0
- package/src/kernel/log_hash.ts +29 -9
- package/src/kernel/private_kernel_init_2_circuit_private_inputs.ts +49 -0
- package/src/kernel/private_kernel_init_3_circuit_private_inputs.ts +52 -0
- package/src/kernel/private_kernel_inner_2_circuit_private_inputs.ts +29 -0
- package/src/kernel/private_kernel_inner_3_circuit_private_inputs.ts +31 -0
- package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +29 -14
- package/src/kernel/private_to_avm_accumulated_data.ts +16 -5
- package/src/kernel/private_to_public_accumulated_data.ts +9 -3
- package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +10 -4
- package/src/kernel/private_to_rollup_accumulated_data.ts +8 -3
- package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +9 -9
- package/src/kernel/public_call_request.ts +22 -7
- package/src/keys/derivation.ts +21 -9
- package/src/keys/public_key.ts +26 -2
- package/src/keys/public_keys.ts +124 -110
- package/src/kv-store/config.ts +3 -10
- package/src/l1-contracts/index.ts +1 -1
- package/src/logs/app_tagging_secret.ts +137 -0
- package/src/logs/app_tagging_secret_kind.ts +21 -0
- package/src/logs/contract_class_log.ts +15 -5
- package/src/logs/index.ts +6 -6
- package/src/logs/log_cursor.ts +110 -0
- package/src/logs/log_result.ts +104 -0
- package/src/logs/logs_query.ts +138 -0
- package/src/logs/message_context.ts +22 -8
- package/src/logs/pending_tagged_log.ts +1 -3
- package/src/logs/pre_tag.ts +3 -6
- package/src/logs/private_log.ts +9 -3
- package/src/logs/query_all_logs_by_tags.ts +98 -0
- package/src/logs/shared_secret_derivation.ts +21 -10
- package/src/logs/siloed_tag.ts +20 -11
- package/src/logs/tag.ts +8 -8
- package/src/logs/tagging_index_range.ts +4 -10
- package/src/messaging/append_l1_to_l2_messages.ts +21 -0
- package/src/messaging/index.ts +1 -0
- package/src/messaging/l1_to_l2_message.ts +12 -9
- package/src/messaging/l2_to_l1_membership.ts +108 -19
- package/src/messaging/l2_to_l1_message.ts +29 -9
- package/src/noir/index.ts +2 -0
- package/src/note/note_dao.ts +1 -4
- package/src/p2p/block_proposal.ts +111 -36
- package/src/p2p/checkpoint_attestation.ts +27 -31
- package/src/p2p/checkpoint_proposal.ts +128 -73
- package/src/p2p/consensus_payload.ts +59 -28
- package/src/p2p/gossipable.ts +4 -4
- package/src/p2p/signature_utils.ts +110 -25
- package/src/p2p/signed_txs.ts +46 -28
- package/src/parity/parity_base_private_inputs.ts +10 -4
- package/src/parity/parity_public_inputs.ts +9 -2
- package/src/proofs/chonk_proof.ts +132 -12
- package/src/rollup/block_headers_hash.ts +11 -2
- package/src/rollup/block_rollup_public_inputs.ts +13 -0
- package/src/rollup/checkpoint_rollup_public_inputs.ts +10 -0
- package/src/schemas/schemas.ts +6 -1
- package/src/slashing/helpers.ts +13 -9
- package/src/slashing/index.ts +1 -2
- package/src/slashing/serialization.ts +1 -81
- package/src/slashing/types.ts +24 -49
- package/src/slashing/{tally.ts → votes.ts} +1 -1
- package/src/stats/stats.ts +4 -0
- package/src/tests/factories.ts +109 -111
- package/src/tests/mocks.ts +72 -71
- package/src/timetable/README.md +609 -0
- package/src/timetable/budgets.ts +87 -0
- package/src/timetable/build_proposer_timetable.ts +42 -0
- package/src/timetable/consensus_timetable.ts +126 -0
- package/src/timetable/index.ts +4 -66
- package/src/timetable/proposer_timetable.ts +190 -0
- package/src/timetable/timetable-example.svg +108 -0
- package/src/trees/append_only_tree_snapshot.ts +8 -3
- package/src/trees/nullifier_leaf.ts +4 -0
- package/src/trees/nullifier_membership_witness.ts +2 -12
- package/src/tx/block_header.ts +10 -5
- package/src/tx/capsule.ts +10 -2
- package/src/tx/fee_provider.ts +10 -0
- package/src/tx/global_variable_builder.ts +2 -3
- package/src/tx/global_variables.ts +10 -18
- package/src/tx/hashed_values.ts +8 -3
- package/src/tx/index.ts +1 -0
- package/src/tx/indexed_tx_effect.ts +18 -6
- package/src/tx/partial_state_reference.ts +8 -3
- package/src/tx/profiling.ts +4 -4
- package/src/tx/proven_tx.ts +6 -0
- package/src/tx/public_call_request_with_calldata.ts +8 -3
- package/src/tx/simulated_tx.ts +22 -21
- package/src/tx/state_reference.ts +9 -4
- package/src/tx/tree_snapshots.ts +9 -4
- package/src/tx/tx.ts +60 -24
- package/src/tx/tx_constant_data.ts +8 -3
- package/src/tx/tx_context.ts +8 -3
- package/src/tx/tx_hash.ts +20 -5
- package/src/tx/tx_receipt.ts +265 -85
- package/src/tx/validator/error_texts.ts +10 -1
- package/src/tx/validator/tx_validator.ts +1 -5
- package/src/types/shared.ts +8 -13
- package/src/update-checker/dev_version.ts +2 -0
- package/src/update-checker/index.ts +1 -0
- package/src/update-checker/package_version.ts +10 -23
- package/src/validators/schemas.ts +6 -4
- package/src/validators/types.ts +21 -2
- package/src/versioning/versioning.ts +1 -1
- package/src/vks/verification_key.ts +5 -184
- package/src/world-state/genesis_data.ts +27 -0
- package/src/world-state/index.ts +1 -0
- package/src/world-state/world_state_revision.ts +9 -1
- package/dest/abi/mocked_keys.d.ts +0 -2
- package/dest/abi/mocked_keys.d.ts.map +0 -1
- package/dest/abi/mocked_keys.js +0 -1
- package/dest/block/checkpointed_l2_block.d.ts +0 -150
- package/dest/block/checkpointed_l2_block.d.ts.map +0 -1
- package/dest/block/checkpointed_l2_block.js +0 -46
- package/dest/config/pipelining-config.d.ts +0 -19
- package/dest/config/pipelining-config.d.ts.map +0 -1
- package/dest/config/pipelining-config.js +0 -18
- package/dest/contract/private_function_membership_proof.d.ts +0 -32
- package/dest/contract/private_function_membership_proof.d.ts.map +0 -1
- package/dest/contract/private_function_membership_proof.js +0 -124
- package/dest/contract/utility_function_membership_proof.d.ts +0 -27
- package/dest/contract/utility_function_membership_proof.d.ts.map +0 -1
- package/dest/contract/utility_function_membership_proof.js +0 -87
- package/dest/interfaces/epoch-prover.d.ts +0 -57
- package/dest/interfaces/epoch-prover.d.ts.map +0 -1
- package/dest/interfaces/epoch-prover.js +0 -1
- package/dest/interfaces/get_logs_response.d.ts +0 -97
- package/dest/interfaces/get_logs_response.d.ts.map +0 -1
- package/dest/interfaces/get_logs_response.js +0 -12
- package/dest/l1-contracts/slash_factory.d.ts +0 -45
- package/dest/l1-contracts/slash_factory.d.ts.map +0 -1
- package/dest/l1-contracts/slash_factory.js +0 -158
- package/dest/logs/extended_contract_class_log.d.ts +0 -51
- package/dest/logs/extended_contract_class_log.d.ts.map +0 -1
- package/dest/logs/extended_contract_class_log.js +0 -67
- package/dest/logs/extended_directional_app_tagging_secret.d.ts +0 -47
- package/dest/logs/extended_directional_app_tagging_secret.d.ts.map +0 -1
- package/dest/logs/extended_directional_app_tagging_secret.js +0 -72
- package/dest/logs/extended_public_log.d.ts +0 -106
- package/dest/logs/extended_public_log.d.ts.map +0 -1
- package/dest/logs/extended_public_log.js +0 -73
- package/dest/logs/log_filter.d.ts +0 -25
- package/dest/logs/log_filter.d.ts.map +0 -1
- package/dest/logs/log_filter.js +0 -12
- package/dest/logs/log_id.d.ts +0 -85
- package/dest/logs/log_id.d.ts.map +0 -1
- package/dest/logs/log_id.js +0 -94
- package/dest/logs/tx_scoped_l2_log.d.ts +0 -51
- package/dest/logs/tx_scoped_l2_log.d.ts.map +0 -1
- package/dest/logs/tx_scoped_l2_log.js +0 -77
- package/dest/slashing/empire.d.ts +0 -31
- package/dest/slashing/empire.d.ts.map +0 -1
- package/dest/slashing/empire.js +0 -87
- package/src/abi/mocked_keys.ts +0 -2
- package/src/block/checkpointed_l2_block.ts +0 -70
- package/src/config/pipelining-config.ts +0 -31
- package/src/contract/private_function_membership_proof.ts +0 -167
- package/src/contract/utility_function_membership_proof.ts +0 -118
- package/src/interfaces/epoch-prover.ts +0 -72
- package/src/interfaces/get_logs_response.ts +0 -35
- package/src/l1-contracts/slash_factory.ts +0 -180
- package/src/logs/extended_contract_class_log.ts +0 -87
- package/src/logs/extended_directional_app_tagging_secret.ts +0 -87
- package/src/logs/extended_public_log.ts +0 -94
- package/src/logs/log_filter.ts +0 -36
- package/src/logs/log_id.ts +0 -125
- package/src/logs/tx_scoped_l2_log.ts +0 -114
- package/src/slashing/empire.ts +0 -104
|
@@ -0,0 +1,609 @@
|
|
|
1
|
+
# Block Building Timetable Spec
|
|
2
|
+
|
|
3
|
+
This document specifies the timing model for pipelined block building, checkpoint validation, attestation collection, and L1 publishing.
|
|
4
|
+
|
|
5
|
+
## Goals
|
|
6
|
+
|
|
7
|
+
The timetable has these goals:
|
|
8
|
+
|
|
9
|
+
- schedule block sub-slots so the proposer produces a checkpoint at a predictable cadence;
|
|
10
|
+
- enforce consensus-critical deadlines so validators and the next proposer agree on the proposed chain, by agreeing on when a proposal is too late to build on;
|
|
11
|
+
- maximize the time available for the L1 publish transaction by making the payload ready before the ideal L1 send time, which is one Ethereum slot before the target L2 slot;
|
|
12
|
+
- accept late checkpoint proposals until the next-proposer handoff deadline, and late attestations until the latest useful L1 publish deadline.
|
|
13
|
+
|
|
14
|
+
Pipelining is the only production mode. For target slot `target_slot`, the proposer builds during the preceding `build_slot` and the L1 transaction is meant to land inside `target_slot`.
|
|
15
|
+
|
|
16
|
+
This model does not describe deterministic automine or other synchronous local-mining modes. Those modes may publish inside the same slot and do not use the pipelined build-slot/target-slot timetable.
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
This example uses the production-like values proposed below: `aztec_slot_duration = 72s`,
|
|
21
|
+
`ethereum_slot_duration = 12s`, `block_duration = 6s`, `p2p_propagation_time = 2s`,
|
|
22
|
+
`checkpoint_proposal_prepare_time = 1s`, and `checkpoint_proposal_init_time = 1s`.
|
|
23
|
+
|
|
24
|
+
All times are offsets from `build_frame_start`. Rows are ordered by the ideal path; deadline-path values show late acceptance cutoffs for the same activity.
|
|
25
|
+
|
|
26
|
+
| Step | Ideal path | Deadline path |
|
|
27
|
+
| --- | ---: | ---: |
|
|
28
|
+
| Build frame opens | +0s (`build_frame_start`) | +0s (`build_frame_start`) |
|
|
29
|
+
| First sub-slot opens | +1s (`first_subslot_start`) | +1s (`first_subslot_start`) |
|
|
30
|
+
| Block 1 build deadline | +7s (`block_build_deadline(0)`) | +7s (`block_build_deadline(0)`) |
|
|
31
|
+
| Build slot starts | +12s (`build_slot_start`) | +12s (`build_slot_start`) |
|
|
32
|
+
| Latest useful block-building start | +59s (`start_deadline`) | +59s (`start_deadline`) |
|
|
33
|
+
| Last block build time | +61s (`last_block_build_time`) | +61s (`last_block_build_time`) |
|
|
34
|
+
| Checkpoint proposal sent | +62s (`checkpoint_proposal_send_time`) | +62s (`checkpoint_proposal_send_time`) |
|
|
35
|
+
| Checkpoint proposal received | +64s (`checkpoint_proposal_receive_ideal_time`) | +66s (`checkpoint_proposal_receive_deadline`) |
|
|
36
|
+
| Proposal validation complete and attestation sent | +70s (`proposal_validation_ideal_time`) | +132s (`attestation_deadline`) |
|
|
37
|
+
| Next-proposer handoff complete | +70s (`next_proposer_handoff_ideal_time`) | +72s (`next_proposer_handoff_deadline`) |
|
|
38
|
+
| Attestation received / deadline | +72s (`attestation_receive_ideal_time`) | +132s (`attestation_deadline`) |
|
|
39
|
+
| Next proposer build frame opens | +72s (`next_proposer_build_frame_start`) | +72s (`next_proposer_build_frame_start`) |
|
|
40
|
+
| L1 publish tx sent / latest useful send | +72s (`l1_publish_ideal_time`) | +132s (`attestation_deadline`) |
|
|
41
|
+
|
|
42
|
+
The ideal path is the proposer scheduling target for maximizing L1 publishing time. The deadline path is the latest consensus-safe path: validators and the next proposer use `checkpoint_proposal_receive_deadline`, which depends only on the target slot timing and `block_duration`.
|
|
43
|
+
|
|
44
|
+
### Example timeline diagram
|
|
45
|
+
|
|
46
|
+
The diagram highlights the most relevant steps from the table above, as offsets from `build_frame_start` (`target_slot_start - aztec_slot_duration - ethereum_slot_duration`). Blue marks build/structural deadlines, green marks the ideal path, and red marks the late-acceptance deadlines. Dashed lines are slot boundaries.
|
|
47
|
+
|
|
48
|
+
_Mermaid version (evenly spaced):_
|
|
49
|
+
|
|
50
|
+
```mermaid
|
|
51
|
+
timeline
|
|
52
|
+
title Example timetable (offsets from build_frame_start)
|
|
53
|
+
section Build frame
|
|
54
|
+
+0s : Build frame opens
|
|
55
|
+
+61s : Last block build time
|
|
56
|
+
section Dead zone / handoff
|
|
57
|
+
+64s : Checkpoint proposal received (ideal)
|
|
58
|
+
+66s : Checkpoint proposal received (deadline)
|
|
59
|
+
+72s : Attestations received (ideal) : Next proposer frame opens : L1 publish tx sent (ideal)
|
|
60
|
+
section Target L2 slot
|
|
61
|
+
+132s : Attestation deadline : L1 publish latest useful send
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
_SVG version (proportional):_
|
|
65
|
+
|
|
66
|
+

|
|
67
|
+
|
|
68
|
+
## Inputs
|
|
69
|
+
|
|
70
|
+
All timing inputs are expressed in seconds unless otherwise stated. Inputs are grouped by how they are controlled.
|
|
71
|
+
|
|
72
|
+
### Protocol Constants
|
|
73
|
+
|
|
74
|
+
These values come from the rollup protocol or network definition. Nodes should not tune them locally.
|
|
75
|
+
|
|
76
|
+
| Input | Meaning |
|
|
77
|
+
| --- | --- |
|
|
78
|
+
| `genesis_time` | L1 timestamp for L2 slot zero. |
|
|
79
|
+
| `aztec_slot_duration` | Duration of one L2 slot. |
|
|
80
|
+
| `ethereum_slot_duration` | Duration of one Ethereum slot. |
|
|
81
|
+
| `block_duration` | Normal sub-slot duration allocated to building one block and to validator re-execution. |
|
|
82
|
+
|
|
83
|
+
`block_duration` should be treated as a network-wide timing constant. Validators use it as the expected re-execution
|
|
84
|
+
budget, so proposer and validator nodes must agree on it.
|
|
85
|
+
|
|
86
|
+
### Build Configuration
|
|
87
|
+
|
|
88
|
+
These values are operational timing budgets. They may differ between production and local test profiles, but nodes in the
|
|
89
|
+
same network should use the same values for coordinated proposer and validator behavior.
|
|
90
|
+
|
|
91
|
+
| Input | Meaning |
|
|
92
|
+
| --- | --- |
|
|
93
|
+
| `min_block_duration` | Minimum block-building time that is still worth allocating if the proposer starts late. |
|
|
94
|
+
| `p2p_propagation_time` | One-way propagation budget for proposals and attestations. |
|
|
95
|
+
| `checkpoint_proposal_prepare_time` | Local time between the last block build finishing and the checkpoint proposal being ready for p2p send. |
|
|
96
|
+
| `checkpoint_proposal_init_time` | Proposer budget reserved at the start of the build frame for sync, the proposer check, and checkpoint initialization before the first block sub-slot opens. |
|
|
97
|
+
|
|
98
|
+
`checkpoint_proposal_prepare_time` includes `completeCheckpoint`, local checkpoint validation, header validation simulation, checkpoint proposal signing, proposed-checkpoint archiver sync, and the immediate call into p2p broadcast.
|
|
99
|
+
|
|
100
|
+
### Parameters
|
|
101
|
+
|
|
102
|
+
These values change per timetable evaluation.
|
|
103
|
+
|
|
104
|
+
| Input | Meaning |
|
|
105
|
+
| --- | --- |
|
|
106
|
+
| `target_slot` | The L2 slot the checkpoint commits to and whose proposer is building this checkpoint. |
|
|
107
|
+
|
|
108
|
+
## Derived Slot Times
|
|
109
|
+
|
|
110
|
+
The model derives all wall-clock times from `target_slot`, `genesis_time`, and the slot durations.
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
target_slot_start = genesis_time + target_slot * aztec_slot_duration
|
|
114
|
+
|
|
115
|
+
build_slot = target_slot - 1
|
|
116
|
+
|
|
117
|
+
build_slot_start = genesis_time + build_slot * aztec_slot_duration
|
|
118
|
+
|
|
119
|
+
build_frame_start = build_slot_start - ethereum_slot_duration
|
|
120
|
+
|
|
121
|
+
next_proposer_build_frame_start = target_slot_start - ethereum_slot_duration
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The build frame starts one Ethereum slot before the build slot starts.
|
|
125
|
+
|
|
126
|
+
## L1 Publish and Attestation Deadline
|
|
127
|
+
|
|
128
|
+
The model distinguishes an ideal L1 send time from a single hard attestation deadline.
|
|
129
|
+
|
|
130
|
+
```text
|
|
131
|
+
l1_publish_ideal_time = target_slot_start - ethereum_slot_duration
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
This is the time by which we want the L1 transaction ready and submitted to maximize the chance of inclusion in the first Ethereum block of `target_slot`.
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
last_ethereum_block_in_target_slot = target_slot_start + aztec_slot_duration - ethereum_slot_duration
|
|
138
|
+
|
|
139
|
+
attestation_deadline = last_ethereum_block_in_target_slot - ethereum_slot_duration
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
`attestation_deadline` is the hard deadline by which validators must have completed re-execution/validation and signed their attestation. It is also the latest useful L1 send time if the only requirement is for the tx to land in the final Ethereum block inside `target_slot`.
|
|
143
|
+
|
|
144
|
+
This deadline is consensus-driven, not operational. It is used for inactivity/slashing decisions, so all nodes must agree
|
|
145
|
+
on it. It is derived only from slot timing protocol constants.
|
|
146
|
+
|
|
147
|
+
With `aztec_slot_duration = 72` and `ethereum_slot_duration = 12`:
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
l1_publish_ideal_time = target_slot_start - 12
|
|
151
|
+
attestation_deadline = target_slot_start + 48
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Ideal Times vs Deadlines
|
|
155
|
+
|
|
156
|
+
_Be conservative in what you send, be liberal in what you accept._
|
|
157
|
+
|
|
158
|
+
The timetable has two rails:
|
|
159
|
+
|
|
160
|
+
- **Ideal times** describe when work should complete on the happy path to maximize the L1 publishing window.
|
|
161
|
+
- **Deadlines** describe the latest time work can complete under the rule that applies to that activity.
|
|
162
|
+
|
|
163
|
+
The proposer should schedule block production and checkpoint proposal sending against ideal L1 publishing. Validators and p2p should enforce consensus deadlines, late attestation deadlines, and small clock-disparity tolerances. This lets delayed validators contribute attestations while keeping the proposer from planning around the slow path.
|
|
164
|
+
|
|
165
|
+
Checkpoint proposal timing has both an ideal target and a hard deadline. The ideal target is derived from the L1 publish path and is not a consensus gate. The hard receive deadline is derived only from the next-proposer handoff constraint.
|
|
166
|
+
|
|
167
|
+
## Checkpoint Proposal Deadlines
|
|
168
|
+
|
|
169
|
+
The checkpoint proposal affects consensus: it determines the proposed checkpoint the next proposer may build on top of. For that reason, the receive deadline used for validation must not depend on operational budgets such as p2p propagation or L1 publish preparation time.
|
|
170
|
+
|
|
171
|
+
The ideal receive time is a proposer scheduling target. It is the receive time that leaves enough room for validators to re-execute the checkpoint and send attestations back by `l1_publish_ideal_time`:
|
|
172
|
+
|
|
173
|
+
```text
|
|
174
|
+
checkpoint_proposal_receive_ideal_time = proposal_validation_ideal_time - block_duration
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
The hard receive deadline is the consensus gate. Validators reject checkpoint proposals that arrive after this time, and the next proposer does not build on them. It is derived from the next proposer's own build frame:
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
checkpoint_proposal_receive_deadline = next_proposer_build_frame_start - block_duration
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
The send time is proposer-owned and is derived by subtracting one propagation hop from the ideal receive time:
|
|
184
|
+
|
|
185
|
+
```text
|
|
186
|
+
checkpoint_proposal_send_time = checkpoint_proposal_receive_ideal_time - p2p_propagation_time
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
The sequencer does not need to wait for this send time. It should send the checkpoint proposal as soon as the final block and local checkpoint proposal preparation are complete. The proposer schedules block building only against the ideal L1 publish path:
|
|
190
|
+
|
|
191
|
+
```text
|
|
192
|
+
last_block_build_time = checkpoint_proposal_send_time - checkpoint_proposal_prepare_time
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
The first consensus boundary for the checkpoint proposal is `checkpoint_proposal_receive_deadline`, not a send deadline.
|
|
196
|
+
|
|
197
|
+
## Checkpoint Proposal Materialization and Orphan Pruning
|
|
198
|
+
|
|
199
|
+
After an in-time checkpoint proposal is received, it still has to validate and materialize into the archiver's
|
|
200
|
+
proposed-checkpoint state before the next proposer can safely build on it. The materialization deadline is:
|
|
201
|
+
|
|
202
|
+
```text
|
|
203
|
+
checkpoint_proposal_synced_deadline = next_proposer_build_frame_start + checkpoint_proposal_sync_grace
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
`checkpoint_proposal_sync_grace` is a consensus/network value, defaulting to `2 * block_duration`. It is not an
|
|
207
|
+
operator-tuned archiver knob: nodes need to agree on when a received proposal has had enough time to materialize.
|
|
208
|
+
|
|
209
|
+
Orphan proposed-block pruning has two branches:
|
|
210
|
+
|
|
211
|
+
- If no checkpoint proposal was received for the orphan slot, the archiver prunes once strictly past
|
|
212
|
+
`checkpoint_proposal_receive_deadline + orphan_prune_no_proposal_tolerance`.
|
|
213
|
+
- If a checkpoint proposal was received but has not materialized into proposed archiver state, the archiver prunes
|
|
214
|
+
once strictly past `checkpoint_proposal_synced_deadline`.
|
|
215
|
+
|
|
216
|
+
`orphan_prune_no_proposal_tolerance` is archiver-local tolerance, defaulting to 1 second. It only covers
|
|
217
|
+
polling and timer skew in the no-proposal branch; it does not define whether a checkpoint proposal is buildable.
|
|
218
|
+
|
|
219
|
+
The no-proposal branch deliberately does not wait for `attestation_deadline`. A malicious proposer can broadcast
|
|
220
|
+
block proposals while withholding transaction data and never send the checkpoint proposal. Other nodes may then
|
|
221
|
+
spend the remaining validation window trying to collect missing transactions and re-execute a checkpoint that will
|
|
222
|
+
not be buildable by the next proposer. Pruning after the receive deadline plus local tolerance restores next-proposer
|
|
223
|
+
liveness.
|
|
224
|
+
|
|
225
|
+
The received-proposal branch gives bounded time for validation and archiver insertion. Validators that do not
|
|
226
|
+
finish re-execution before `checkpoint_proposal_synced_deadline` may fail to attest on time and may only follow the
|
|
227
|
+
checkpoint once it is re-synced from L1.
|
|
228
|
+
|
|
229
|
+
## Proposal Validation and Attestation Times
|
|
230
|
+
|
|
231
|
+
The relevant validator-side activity is proposal validation: receiving proposals, collecting transactions if needed, re-executing blocks, validating the checkpoint, and then signing an attestation.
|
|
232
|
+
|
|
233
|
+
For intermediate block proposals within the checkpoint, the same principle applies at each sub-slot: validators should receive the proposal, collect any missing transactions, and re-execute the block within the block's validation budget. For the final checkpoint proposal, `proposal_validation_ideal_time` is the aggregate end-of-checkpoint validation target.
|
|
234
|
+
|
|
235
|
+
Ideal validation completion is computed from the ideal L1 send time:
|
|
236
|
+
|
|
237
|
+
```text
|
|
238
|
+
attestation_receive_ideal_time = l1_publish_ideal_time
|
|
239
|
+
|
|
240
|
+
proposal_validation_ideal_time = attestation_receive_ideal_time - p2p_propagation_time
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
The hard validation deadline is `attestation_deadline`:
|
|
244
|
+
|
|
245
|
+
```text
|
|
246
|
+
block_validation_deadline = attestation_deadline
|
|
247
|
+
checkpoint_validation_deadline = attestation_deadline
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
The ideal difference between validation completion and attestation receipt is one propagation hop:
|
|
251
|
+
|
|
252
|
+
```text
|
|
253
|
+
attestation_receive_ideal_time - proposal_validation_ideal_time = p2p_propagation_time
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
The proposer should aim to have enough attestations by `attestation_receive_ideal_time`. Validators may still validate blocks, validate the checkpoint, and sign attestations until `attestation_deadline`. This deadline is the same for all block proposals and the final checkpoint proposal. It must be consensus-driven because inactivity/slashing checks use it to decide whether a validator failed to attest on time.
|
|
257
|
+
|
|
258
|
+
The `attestation_deadline` above is a validation/re-execution deadline, not an arrival gate. Arrival at the p2p layer is gated separately and more tightly: intermediate block proposals share the checkpoint proposal's receive window as their arrival gate. Every block proposal for a slot is sent before that slot's checkpoint proposal, so nothing legitimate can arrive after `checkpoint_proposal_receive_deadline`. A block proposal arriving after that deadline is therefore rejected at p2p ingress, exactly as a late checkpoint proposal would be. The `attestation_deadline` remains the validation/re-execution deadline for any block or checkpoint proposal that did arrive in time.
|
|
259
|
+
|
|
260
|
+
## Block Sub-Slots
|
|
261
|
+
|
|
262
|
+
Block sub-slots are fixed windows counted from the first sub-slot start, which sits one `checkpoint_proposal_init_time` after `build_frame_start`. `min_block_duration` is the spec name for the minimum execution headroom currently called `minExecutionTime`.
|
|
263
|
+
|
|
264
|
+
`checkpoint_proposal_init_time` is the proposer budget reserved at the start of the build frame for sync, the proposer check, and checkpoint initialization. The proposer rarely begins building exactly at `build_frame_start` — it enters the build loop only after that prologue completes — so the sub-slot grid is offset by this budget. Without it, any non-zero prologue eats into the first sub-slot, and when `min_block_duration` equals `block_duration` (tight fast profiles) the first sub-slot becomes unstartable, leaving the checkpoint under-packed. This is an operational proposer budget, so it lives in the proposer timetable and does not affect any consensus-acceptance deadline.
|
|
265
|
+
|
|
266
|
+
```text
|
|
267
|
+
first_subslot_start = build_frame_start + checkpoint_proposal_init_time
|
|
268
|
+
|
|
269
|
+
block_build_start(block_index) = first_subslot_start + block_index * block_duration
|
|
270
|
+
|
|
271
|
+
block_build_deadline(block_index) = first_subslot_start + (block_index + 1) * block_duration
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
where `block_index` is zero-based.
|
|
275
|
+
|
|
276
|
+
Sub-slot starts and deadlines do not move when earlier blocks finish early or late. If block `k` finishes early, the proposer waits until `block_build_deadline(k)` before attempting block `k + 1`. If block `k` finishes late, the next sub-slot keeps its original deadline and therefore has less remaining headroom.
|
|
277
|
+
|
|
278
|
+
The number of full-duration block sub-slots a node's local operational budgets compute is:
|
|
279
|
+
|
|
280
|
+
```text
|
|
281
|
+
computed_blocks_per_checkpoint = floor((last_block_build_time - first_subslot_start) / block_duration)
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
The effective `max_blocks_per_checkpoint` is this computed value, clamped down to the explicit network value when
|
|
285
|
+
the network value is lower. A network value at or above the computed count has no effect and the computed count is
|
|
286
|
+
used. When the local budgets compute more blocks than the network allows, the computed count is clamped down to the
|
|
287
|
+
network value and a warning is emitted. Clamping never raises the effective value above what the local budgets can
|
|
288
|
+
fit, preserving the invariant that every offered sub-slot's build deadline stays within `last_block_build_time`.
|
|
289
|
+
|
|
290
|
+
`max_blocks_per_checkpoint` is also an input to the network tx admission limits (it divides the per-checkpoint gas budgets into a per-block share); see [`../gas/README.md`](../gas/README.md) under "Gas and Data Limits".
|
|
291
|
+
|
|
292
|
+
The start deadline is the latest time at which the proposer can still squeeze one minimum-duration block and make the ideal L1 publish path:
|
|
293
|
+
|
|
294
|
+
```text
|
|
295
|
+
start_deadline = last_block_build_time - min_block_duration
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
If the sequencer reaches the build frame after `start_deadline`, it should abandon block production for the slot. A later
|
|
299
|
+
checkpoint proposal might still satisfy the consensus receive deadline, but the proposer timetable intentionally does not
|
|
300
|
+
plan around that path because it prioritizes publishing at `l1_publish_ideal_time`. If it starts before `start_deadline`
|
|
301
|
+
but is late for a particular sub-slot, it should skip to the next available sub-slot with at least `min_block_duration`
|
|
302
|
+
remaining.
|
|
303
|
+
|
|
304
|
+
When choosing whether to start a block, the proposer scans the sub-slots in order and selects the first one whose
|
|
305
|
+
deadline is at least `min_block_duration` in the future:
|
|
306
|
+
|
|
307
|
+
```text
|
|
308
|
+
block_build_deadline(block_index) - now >= min_block_duration
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
Sub-slots that do not satisfy this condition are skipped. This is also the rule while waiting for enough transactions. If
|
|
312
|
+
the proposer is waiting for txs for a selected sub-slot, it may wait only until:
|
|
313
|
+
|
|
314
|
+
```text
|
|
315
|
+
wait_for_txs_deadline(block_index) = block_build_deadline(block_index) - min_block_duration
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
If enough txs arrive before `wait_for_txs_deadline(block_index)`, the proposer starts building in that sub-slot. If not,
|
|
319
|
+
the sub-slot is dropped without committing a block, the proposer waits until the sub-slot deadline, and then retries with
|
|
320
|
+
the next available sub-slot. If the dropped sub-slot was the final sub-slot, block production for the checkpoint ends.
|
|
321
|
+
Empty-checkpoint forcing may override the tx-count rule, but it must not remove the `min_block_duration` headroom
|
|
322
|
+
requirement.
|
|
323
|
+
|
|
324
|
+
`block_build_deadline(block_index)` is an execution cutoff, not only a scheduling hint. Block building should stop public
|
|
325
|
+
tx execution at that deadline and then finalize the block from whatever txs were successfully executed. Finalization may
|
|
326
|
+
spill slightly past the deadline, but later sub-slot starts and deadlines must not move.
|
|
327
|
+
|
|
328
|
+
## Parallel Execution
|
|
329
|
+
|
|
330
|
+
For non-final blocks, proposer building and committee validation are pipelined. After the proposer finishes and broadcasts
|
|
331
|
+
block `k`, validators receive it, collect any missing txs, and re-execute it while the proposer waits for or starts block
|
|
332
|
+
`k + 1`.
|
|
333
|
+
|
|
334
|
+
This is why `block_duration` is used both as the proposer’s normal build cadence and as the validator re-execution
|
|
335
|
+
budget. The system does not wait for committee validation of block `k` before beginning block `k + 1`; it relies on the
|
|
336
|
+
fixed sub-slot cadence and p2p propagation budget to keep both sides aligned.
|
|
337
|
+
|
|
338
|
+
The final block is different. There is no block `k + 1` to build in parallel, and the final block should not be broadcast
|
|
339
|
+
as a regular block proposal. The proposer holds it and includes it in the checkpoint proposal, then spends the dead zone
|
|
340
|
+
assembling and sending that checkpoint proposal, waiting for committee re-execution and attestations, and preparing the
|
|
341
|
+
L1 publish request.
|
|
342
|
+
|
|
343
|
+
## Handling Timing Variations
|
|
344
|
+
|
|
345
|
+
The sub-slot schedule is fixed, so timing variation changes how much headroom remains; it does not move deadlines.
|
|
346
|
+
|
|
347
|
+
- If the proposer initializes early, the first block gets extra time before its fixed deadline.
|
|
348
|
+
- If the proposer initializes late but the current sub-slot still has at least `min_block_duration` remaining, it may
|
|
349
|
+
build in that sub-slot.
|
|
350
|
+
- If initialization or a previous block overrun leaves less than `min_block_duration` before the current sub-slot deadline, that sub-slot is skipped.
|
|
351
|
+
- If a block finishes early, the proposer waits until the next sub-slot boundary before attempting the next block.
|
|
352
|
+
- If a block finishes late, the next block may still start if some later sub-slot has enough remaining headroom.
|
|
353
|
+
- If a block cannot be built because there are not enough txs, the current sub-slot is dropped and the proposer retries at the next available sub-slot, unless the dropped sub-slot was the final one.
|
|
354
|
+
|
|
355
|
+
## Dead Zone
|
|
356
|
+
|
|
357
|
+
The dead zone is the time between the previous proposer finishing its final block and the next proposer starting its own build frame. During this interval no proposer is actively building new blocks.
|
|
358
|
+
|
|
359
|
+
```text
|
|
360
|
+
dead_zone = next_proposer_build_frame_start - last_block_build_time
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
Expanded through the ideal L1 publish path:
|
|
364
|
+
|
|
365
|
+
```text
|
|
366
|
+
dead_zone = checkpoint_proposal_prepare_time
|
|
367
|
+
+ p2p_propagation_time
|
|
368
|
+
+ block_duration
|
|
369
|
+
+ p2p_propagation_time
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
The two `p2p_propagation_time` terms are different hops:
|
|
373
|
+
|
|
374
|
+
- checkpoint proposal propagation from proposer to validators;
|
|
375
|
+
- attestation propagation from validators back to the proposer.
|
|
376
|
+
|
|
377
|
+
The dead zone is deliberate. It buys enough time to assemble and broadcast the checkpoint proposal, let validators re-execute it, and receive attestations back before `l1_publish_ideal_time`. A later checkpoint proposal may still satisfy the consensus handoff deadline, but the proposer does not size block production around that fallback.
|
|
378
|
+
|
|
379
|
+
## Next-Proposer Handoff
|
|
380
|
+
|
|
381
|
+
The next proposer must have enough time to receive and re-execute the previous checkpoint before its own build frame starts. This is the consensus-critical receive deadline:
|
|
382
|
+
|
|
383
|
+
```text
|
|
384
|
+
next_proposer_handoff_deadline = checkpoint_proposal_receive_deadline + block_duration
|
|
385
|
+
|
|
386
|
+
next_proposer_handoff_deadline = next_proposer_build_frame_start
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
The handoff driven by the ideal path that maximizes L1 inclusion times is earlier:
|
|
390
|
+
|
|
391
|
+
```text
|
|
392
|
+
next_proposer_handoff_ideal_time = checkpoint_proposal_receive_ideal_time + block_duration
|
|
393
|
+
|
|
394
|
+
next_proposer_handoff_ideal_time = next_proposer_build_frame_start - p2p_propagation_time
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
Therefore:
|
|
398
|
+
|
|
399
|
+
```text
|
|
400
|
+
next_proposer_handoff_ideal_time <= next_proposer_build_frame_start
|
|
401
|
+
|
|
402
|
+
next_proposer_handoff_deadline = next_proposer_build_frame_start
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
The ideal handoff margin is:
|
|
406
|
+
|
|
407
|
+
```text
|
|
408
|
+
next_proposer_build_frame_start - next_proposer_handoff_ideal_time = p2p_propagation_time
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
The consensus handoff deadline is `p2p_propagation_time` later than the ideal handoff target. That slack is for accepting otherwise valid late checkpoint proposals, not for sizing normal block production.
|
|
412
|
+
|
|
413
|
+
## Constraints
|
|
414
|
+
|
|
415
|
+
### Input constraints
|
|
416
|
+
|
|
417
|
+
```text
|
|
418
|
+
target_slot > 0
|
|
419
|
+
aztec_slot_duration > 0
|
|
420
|
+
ethereum_slot_duration > 0
|
|
421
|
+
aztec_slot_duration >= ethereum_slot_duration
|
|
422
|
+
aztec_slot_duration % ethereum_slot_duration == 0
|
|
423
|
+
block_duration > 0
|
|
424
|
+
min_block_duration > 0
|
|
425
|
+
min_block_duration <= block_duration
|
|
426
|
+
p2p_propagation_time >= 0
|
|
427
|
+
checkpoint_proposal_prepare_time >= 0
|
|
428
|
+
checkpoint_proposal_init_time >= 0
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
### Build frame constraint
|
|
432
|
+
|
|
433
|
+
```text
|
|
434
|
+
build_frame_start = build_slot_start - ethereum_slot_duration
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
### P2P propagation constraints
|
|
438
|
+
|
|
439
|
+
```text
|
|
440
|
+
checkpoint_proposal_receive_ideal_time - checkpoint_proposal_send_time = p2p_propagation_time
|
|
441
|
+
|
|
442
|
+
attestation_receive_ideal_time - proposal_validation_ideal_time = p2p_propagation_time
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### Next proposer constraint
|
|
446
|
+
|
|
447
|
+
```text
|
|
448
|
+
checkpoint_proposal_receive_deadline = next_proposer_build_frame_start - block_duration
|
|
449
|
+
|
|
450
|
+
next_proposer_handoff_deadline = checkpoint_proposal_receive_deadline + block_duration
|
|
451
|
+
|
|
452
|
+
next_proposer_handoff_deadline = next_proposer_build_frame_start
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
The ideal target must be no later than the consensus handoff:
|
|
456
|
+
|
|
457
|
+
```text
|
|
458
|
+
next_proposer_handoff_ideal_time = checkpoint_proposal_receive_ideal_time + block_duration
|
|
459
|
+
|
|
460
|
+
next_proposer_handoff_ideal_time = next_proposer_build_frame_start - p2p_propagation_time
|
|
461
|
+
|
|
462
|
+
next_proposer_handoff_ideal_time <= next_proposer_handoff_deadline
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### Attestation deadline constraints
|
|
466
|
+
|
|
467
|
+
```text
|
|
468
|
+
attestation_deadline = last_ethereum_block_in_target_slot - ethereum_slot_duration
|
|
469
|
+
|
|
470
|
+
block_validation_deadline = attestation_deadline
|
|
471
|
+
|
|
472
|
+
checkpoint_validation_deadline = attestation_deadline
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
### Checkpoint proposal preparation constraint
|
|
476
|
+
|
|
477
|
+
```text
|
|
478
|
+
checkpoint_proposal_send_time - last_block_build_time = checkpoint_proposal_prepare_time
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
### Minimum useful checkpoint constraint
|
|
482
|
+
|
|
483
|
+
```text
|
|
484
|
+
start_deadline >= build_frame_start
|
|
485
|
+
max_blocks_per_checkpoint >= 1
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
Expanded:
|
|
489
|
+
|
|
490
|
+
```text
|
|
491
|
+
last_block_build_time - min_block_duration >= build_frame_start
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
### Ideal-before-deadline constraints
|
|
495
|
+
|
|
496
|
+
```text
|
|
497
|
+
l1_publish_ideal_time <= attestation_deadline
|
|
498
|
+
attestation_receive_ideal_time <= attestation_deadline
|
|
499
|
+
proposal_validation_ideal_time <= attestation_deadline
|
|
500
|
+
checkpoint_proposal_receive_ideal_time <= checkpoint_proposal_receive_deadline
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### Happy-path readiness constraint
|
|
504
|
+
|
|
505
|
+
To maximize the L1 publishing window, the proposer should not plan around late attestation acceptance. On the happy path:
|
|
506
|
+
|
|
507
|
+
```text
|
|
508
|
+
actual_checkpoint_proposal_receive_time <= checkpoint_proposal_receive_ideal_time
|
|
509
|
+
|
|
510
|
+
actual_proposal_validation_complete_time <= proposal_validation_ideal_time
|
|
511
|
+
|
|
512
|
+
actual_attestation_receive_time <= attestation_receive_ideal_time
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
Then the L1 publish tx can be sent at:
|
|
516
|
+
|
|
517
|
+
```text
|
|
518
|
+
l1_publish_ideal_time
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
For consensus acceptance:
|
|
522
|
+
|
|
523
|
+
```text
|
|
524
|
+
actual_checkpoint_proposal_receive_time <= checkpoint_proposal_receive_deadline
|
|
525
|
+
actual_block_validation_complete_time <= attestation_deadline
|
|
526
|
+
actual_checkpoint_validation_complete_time <= attestation_deadline
|
|
527
|
+
actual_attestation_signed_time <= attestation_deadline
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
## Suggested Constants
|
|
531
|
+
|
|
532
|
+
These are proposed values for the new model. They intentionally separate production settings from local e2e settings with mocked p2p networks.
|
|
533
|
+
|
|
534
|
+
### Production
|
|
535
|
+
|
|
536
|
+
| Input | Proposed value | Rationale |
|
|
537
|
+
| --- | ---: | --- |
|
|
538
|
+
| `aztec_slot_duration` | 72s | Mainnet-like L2 slot duration. |
|
|
539
|
+
| `ethereum_slot_duration` | 12s | Ethereum mainnet slot duration. |
|
|
540
|
+
| `block_duration` | 6s | Allows up to 10 blocks while still targeting the ideal L1 publish time. |
|
|
541
|
+
| `min_block_duration` | 2s | Conservative minimum useful execution budget. |
|
|
542
|
+
| `p2p_propagation_time` | 2s | Conservative one-way proposal/attestation propagation budget. |
|
|
543
|
+
| `checkpoint_proposal_prepare_time` | 1s | Conservative checkpoint assembly and broadcast preparation budget. |
|
|
544
|
+
| `checkpoint_proposal_init_time` | 1s | Sync + proposer-check + init budget reserved before the first sub-slot. |
|
|
545
|
+
|
|
546
|
+
Derived shape with these values:
|
|
547
|
+
|
|
548
|
+
```text
|
|
549
|
+
l1_publish_ideal_time is 12s before target_slot_start
|
|
550
|
+
attestation_deadline is 48s after target_slot_start
|
|
551
|
+
attestation_receive_ideal_time is 12s before target_slot_start
|
|
552
|
+
proposal_validation_ideal_time is 14s before target_slot_start
|
|
553
|
+
checkpoint_proposal_receive_ideal_time is 20s before target_slot_start
|
|
554
|
+
checkpoint_proposal_receive_deadline is 18s before target_slot_start
|
|
555
|
+
checkpoint_proposal_send_time is 22s before target_slot_start
|
|
556
|
+
last_block_build_time is 23s before target_slot_start
|
|
557
|
+
dead_zone = 11s
|
|
558
|
+
max_blocks_per_checkpoint = 10
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
The ideal publish path is the normal scheduling target: it reserves one attestation propagation hop, validator re-execution time, one checkpoint proposal propagation hop, and local checkpoint proposal preparation. The hard checkpoint proposal receive deadline is later and is used for consensus acceptance.
|
|
562
|
+
|
|
563
|
+
### Local e2e with mocked p2p
|
|
564
|
+
|
|
565
|
+
For mocked p2p networks, local profiles can use shorter propagation and preparation budgets. A fast profile should still
|
|
566
|
+
preserve the same ordering constraints as production.
|
|
567
|
+
|
|
568
|
+
These fast-profile budgets are applied automatically when `ethereum_slot_duration` is below `FAST_PROFILE_ETHEREUM_SLOT_DURATION` (8s): the timetable clamps `p2p_propagation_time`, `checkpoint_proposal_prepare_time`, and `min_block_duration` down to the fast values below. Without this, a fast network would inherit the conservative production budgets (e.g. `p2p_propagation_time = 2s`), which shrink the per-checkpoint build window and under-pack checkpoints. The clamp only lowers budgets, so an operator that explicitly configures a smaller value keeps it; `checkpoint_proposal_init_time` is a proposer prologue budget and is not affected by the profile.
|
|
569
|
+
|
|
570
|
+
Recommended fast local profile:
|
|
571
|
+
|
|
572
|
+
| Input | Proposed value | Rationale |
|
|
573
|
+
| --- | ---: | --- |
|
|
574
|
+
| `aztec_slot_duration` | 36s | Fast local e2e slot duration for epoch tests. |
|
|
575
|
+
| `ethereum_slot_duration` | 4s | Fast anvil-style Ethereum slot duration. |
|
|
576
|
+
| `block_duration` | 6s | Fast block cadence while still leaving room for validation. |
|
|
577
|
+
| `min_block_duration` | 1s | Local execution and mocked p2p are faster; preserves late-start behavior. |
|
|
578
|
+
| `p2p_propagation_time` | 0.5s | Mocked one-way proposal/attestation propagation budget. |
|
|
579
|
+
| `checkpoint_proposal_prepare_time` | 0.5s | Short local checkpoint assembly and broadcast preparation budget. |
|
|
580
|
+
| `checkpoint_proposal_init_time` | 1s | Sync + proposer-check + init budget reserved before the first sub-slot. |
|
|
581
|
+
|
|
582
|
+
Derived shape with these values:
|
|
583
|
+
|
|
584
|
+
```text
|
|
585
|
+
l1_publish_ideal_time is 4s before target_slot_start
|
|
586
|
+
attestation_deadline is 28s after target_slot_start
|
|
587
|
+
attestation_receive_ideal_time is 4s before target_slot_start
|
|
588
|
+
proposal_validation_ideal_time is 4.5s before target_slot_start
|
|
589
|
+
checkpoint_proposal_receive_ideal_time is 10.5s before target_slot_start
|
|
590
|
+
checkpoint_proposal_receive_deadline is 10s before target_slot_start
|
|
591
|
+
checkpoint_proposal_send_time is 11s before target_slot_start
|
|
592
|
+
last_block_build_time is 11.5s before target_slot_start
|
|
593
|
+
dead_zone = 7.5s
|
|
594
|
+
max_blocks_per_checkpoint = 4
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
Alternative slower-block local profile:
|
|
598
|
+
|
|
599
|
+
| Input | Proposed value | Rationale |
|
|
600
|
+
| --- | ---: | --- |
|
|
601
|
+
| `aztec_slot_duration` | 36s |
|
|
602
|
+
| `ethereum_slot_duration` | 4s |
|
|
603
|
+
| `block_duration` | 8s |
|
|
604
|
+
| `min_block_duration` | 1s |
|
|
605
|
+
| `p2p_propagation_time` | 0.5s |
|
|
606
|
+
| `checkpoint_proposal_prepare_time` | 0.5s |
|
|
607
|
+
| `checkpoint_proposal_init_time` | 1s |
|
|
608
|
+
|
|
609
|
+
This yields `max_blocks_per_checkpoint = 3` for a 36s/4s/8s local profile.
|