@aztec/stdlib 0.0.1-commit.e61ad554 → 0.0.1-commit.ec5f612
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/decoder.d.ts +1 -1
- package/dest/abi/decoder.d.ts.map +1 -1
- package/dest/abi/decoder.js +1 -4
- package/dest/abi/encoder.d.ts +1 -1
- package/dest/abi/encoder.d.ts.map +1 -1
- package/dest/abi/encoder.js +9 -5
- package/dest/abi/function_call.d.ts +39 -9
- package/dest/abi/function_call.d.ts.map +1 -1
- package/dest/abi/function_call.js +20 -3
- package/dest/auth_witness/auth_witness.js +3 -3
- package/dest/avm/avm.d.ts +300 -300
- package/dest/avm/avm_proving_request.d.ts +166 -166
- package/dest/avm/revert_code.d.ts +16 -1
- package/dest/avm/revert_code.d.ts.map +1 -1
- package/dest/avm/revert_code.js +15 -5
- package/dest/block/block_data.d.ts +52 -0
- package/dest/block/block_data.d.ts.map +1 -0
- package/dest/block/block_data.js +12 -0
- package/dest/block/block_hash.d.ts +16 -19
- package/dest/block/block_hash.d.ts.map +1 -1
- package/dest/block/block_hash.js +21 -34
- package/dest/block/block_parameter.d.ts +4 -4
- package/dest/block/block_parameter.d.ts.map +1 -1
- package/dest/block/block_parameter.js +2 -2
- 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 -1
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +1 -0
- package/dest/block/l2_block.d.ts +3 -2
- package/dest/block/l2_block.d.ts.map +1 -1
- package/dest/block/l2_block.js +2 -3
- package/dest/block/l2_block_source.d.ts +24 -4
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.js +10 -0
- package/dest/checkpoint/checkpoint.d.ts +21 -7
- package/dest/checkpoint/checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.js +24 -13
- package/dest/checkpoint/checkpoint_data.d.ts +120 -0
- package/dest/checkpoint/checkpoint_data.d.ts.map +1 -0
- package/dest/checkpoint/checkpoint_data.js +26 -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 +17 -2
- package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/published_checkpoint.js +1 -2
- 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/sequencer-config.d.ts +10 -0
- package/dest/config/sequencer-config.d.ts.map +1 -0
- package/dest/config/sequencer-config.js +18 -0
- package/dest/contract/contract_address.js +4 -4
- package/dest/contract/contract_class.d.ts +2 -3
- package/dest/contract/contract_class.d.ts.map +1 -1
- package/dest/contract/contract_class_id.d.ts +2 -2
- package/dest/contract/contract_class_id.d.ts.map +1 -1
- package/dest/contract/contract_class_id.js +6 -5
- package/dest/contract/interfaces/node-info.d.ts +3 -1
- package/dest/contract/interfaces/node-info.d.ts.map +1 -1
- package/dest/contract/interfaces/node-info.js +2 -1
- package/dest/contract/private_function.js +2 -2
- 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 +2 -50
- package/dest/database-version/version_manager.d.ts.map +1 -1
- package/dest/database-version/version_manager.js +1 -66
- 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 +8 -2
- package/dest/file-store/local.d.ts +3 -3
- package/dest/file-store/local.d.ts.map +1 -1
- package/dest/file-store/local.js +13 -4
- package/dest/file-store/s3.d.ts +1 -1
- package/dest/file-store/s3.d.ts.map +1 -1
- package/dest/file-store/s3.js +11 -3
- package/dest/ha-signing/config.d.ts +101 -0
- package/dest/ha-signing/config.d.ts.map +1 -0
- package/dest/ha-signing/config.js +92 -0
- package/dest/ha-signing/index.d.ts +3 -0
- package/dest/ha-signing/index.d.ts.map +1 -0
- package/dest/ha-signing/index.js +2 -0
- package/dest/ha-signing/types.d.ts +85 -0
- package/dest/ha-signing/types.d.ts.map +1 -0
- package/dest/ha-signing/types.js +32 -0
- package/dest/hash/hash.d.ts +2 -1
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +16 -10
- 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/archiver.d.ts +1 -1
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +9 -3
- package/dest/interfaces/aztec-node-admin.d.ts +46 -3
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +12 -4
- package/dest/interfaces/aztec-node.d.ts +34 -55
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +6 -10
- package/dest/interfaces/block-builder.d.ts +10 -4
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/block-builder.js +7 -0
- package/dest/interfaces/configs.d.ts +17 -2
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +4 -1
- package/dest/interfaces/get_logs_response.d.ts +15 -8
- package/dest/interfaces/get_logs_response.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 +4 -9
- package/dest/interfaces/p2p.d.ts.map +1 -1
- 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 +6 -1
- package/dest/interfaces/prover-client.d.ts.map +1 -1
- package/dest/interfaces/prover-client.js +5 -0
- package/dest/interfaces/proving-job.d.ts +202 -202
- package/dest/interfaces/slasher.d.ts +9 -1
- package/dest/interfaces/slasher.d.ts.map +1 -1
- package/dest/interfaces/slasher.js +2 -0
- package/dest/interfaces/validator.d.ts +51 -5
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +5 -2
- package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +3 -3
- 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 +13 -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 +13 -10
- package/dest/kernel/hints/build_transient_data_hints.d.ts +5 -2
- package/dest/kernel/hints/build_transient_data_hints.d.ts.map +1 -1
- package/dest/kernel/hints/build_transient_data_hints.js +9 -3
- package/dest/kernel/hints/index.d.ts +2 -2
- package/dest/kernel/hints/index.js +2 -2
- package/dest/kernel/hints/key_validation_request_and_separator.d.ts +24 -0
- package/dest/kernel/hints/key_validation_request_and_separator.d.ts.map +1 -0
- package/dest/kernel/hints/{key_validation_request_and_generator.js → key_validation_request_and_separator.js} +12 -15
- package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts → scoped_key_validation_request_and_separator.d.ts} +8 -8
- package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts.map → scoped_key_validation_request_and_separator.d.ts.map} +1 -1
- package/dest/kernel/hints/{scoped_key_validation_request_and_generator.js → scoped_key_validation_request_and_separator.js} +6 -6
- package/dest/kernel/private_circuit_public_inputs.d.ts +9 -9
- package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_circuit_public_inputs.js +16 -16
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +3 -3
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_circuit_public_inputs.js +4 -4
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +3 -3
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +4 -4
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +3 -3
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +7 -7
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +3 -3
- 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 -7
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +3 -3
- 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 -7
- package/dest/kernel/private_validation_requests.d.ts +3 -3
- package/dest/kernel/private_validation_requests.js +9 -9
- package/dest/keys/derivation.d.ts +3 -3
- package/dest/keys/derivation.js +15 -15
- package/dest/keys/key_types.d.ts +3 -3
- package/dest/keys/key_types.d.ts.map +1 -1
- package/dest/keys/public_keys.js +2 -2
- package/dest/keys/utils.d.ts +1 -1
- package/dest/keys/utils.d.ts.map +1 -1
- package/dest/keys/utils.js +8 -4
- 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/debug_log_store.d.ts +30 -0
- package/dest/logs/debug_log_store.d.ts.map +1 -0
- package/dest/logs/debug_log_store.js +30 -0
- package/dest/logs/extended_directional_app_tagging_secret.d.ts +47 -0
- package/dest/logs/extended_directional_app_tagging_secret.d.ts.map +1 -0
- package/dest/logs/{directional_app_tagging_secret.js → extended_directional_app_tagging_secret.js} +23 -15
- package/dest/logs/extended_public_log.d.ts +13 -7
- 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 +17 -14
- package/dest/logs/log_id.d.ts.map +1 -1
- package/dest/logs/log_id.js +20 -17
- package/dest/logs/pre_tag.d.ts +16 -11
- 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 +2 -2
- package/dest/logs/private_log.d.ts.map +1 -1
- package/dest/logs/siloed_tag.d.ts +5 -3
- package/dest/logs/siloed_tag.d.ts.map +1 -1
- package/dest/logs/siloed_tag.js +8 -6
- package/dest/logs/tag.js +1 -1
- package/dest/messaging/l2_to_l1_membership.d.ts +2 -2
- package/dest/messaging/l2_to_l1_membership.js +3 -3
- package/dest/note/index.d.ts +1 -2
- package/dest/note/index.d.ts.map +1 -1
- package/dest/note/index.js +0 -1
- package/dest/p2p/attestation_utils.d.ts +11 -1
- package/dest/p2p/attestation_utils.d.ts.map +1 -1
- package/dest/p2p/attestation_utils.js +45 -0
- package/dest/p2p/block_proposal.d.ts +11 -4
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +2 -4
- package/dest/p2p/checkpoint_attestation.d.ts +2 -1
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
- package/dest/p2p/checkpoint_attestation.js +1 -1
- package/dest/p2p/checkpoint_proposal.d.ts +27 -8
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/checkpoint_proposal.js +30 -16
- package/dest/p2p/client_type.d.ts +2 -5
- package/dest/p2p/client_type.d.ts.map +1 -1
- package/dest/p2p/client_type.js +0 -7
- package/dest/p2p/consensus_payload.d.ts +12 -3
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +22 -15
- package/dest/p2p/constants.d.ts +3 -1
- package/dest/p2p/constants.d.ts.map +1 -1
- package/dest/p2p/constants.js +1 -0
- package/dest/p2p/index.d.ts +1 -2
- package/dest/p2p/index.d.ts.map +1 -1
- package/dest/p2p/index.js +0 -1
- package/dest/p2p/topic_type.d.ts +3 -4
- package/dest/p2p/topic_type.d.ts.map +1 -1
- package/dest/p2p/topic_type.js +7 -24
- package/dest/rollup/checkpoint_header.d.ts +2 -2
- package/dest/rollup/checkpoint_header.js +2 -2
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +6 -6
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.js +2 -2
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +2 -2
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.d.ts +6 -6
- package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.js +3 -3
- 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 +7 -3
- package/dest/slashing/types.d.ts.map +1 -1
- package/dest/slashing/types.js +13 -1
- package/dest/stats/stats.d.ts +1 -3
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +3 -1
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +21 -13
- package/dest/tests/mocks.d.ts +10 -3
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +22 -16
- 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/public_data_leaf.d.ts +2 -1
- package/dest/trees/public_data_leaf.d.ts.map +1 -1
- package/dest/trees/public_data_leaf.js +7 -6
- package/dest/tx/block_header.d.ts +3 -3
- package/dest/tx/block_header.d.ts.map +1 -1
- package/dest/tx/block_header.js +4 -4
- package/dest/tx/global_variables.d.ts +4 -4
- package/dest/tx/global_variables.d.ts.map +1 -1
- package/dest/tx/in_tx.d.ts +3 -3
- 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/profiling.d.ts +4 -4
- package/dest/tx/profiling.d.ts.map +1 -1
- package/dest/tx/profiling.js +3 -3
- package/dest/tx/protocol_contracts.d.ts +1 -1
- package/dest/tx/protocol_contracts.d.ts.map +1 -1
- package/dest/tx/protocol_contracts.js +2 -2
- package/dest/tx/public_simulation_output.d.ts +4 -2
- package/dest/tx/public_simulation_output.d.ts.map +1 -1
- package/dest/tx/public_simulation_output.js +7 -3
- package/dest/tx/tx_receipt.d.ts +20 -6
- package/dest/tx/tx_receipt.d.ts.map +1 -1
- package/dest/tx/tx_receipt.js +13 -5
- package/dest/tx/tx_request.js +2 -2
- 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 +1 -1
- package/dest/tx/validator/error_texts.js +1 -1
- package/dest/tx/validator/tx_validator.d.ts +2 -2
- package/dest/tx/validator/tx_validator.d.ts.map +1 -1
- package/dest/validators/schemas.d.ts +30 -30
- package/dest/validators/schemas.d.ts.map +1 -1
- package/dest/validators/schemas.js +4 -3
- package/dest/validators/types.d.ts +3 -3
- package/dest/validators/types.d.ts.map +1 -1
- package/package.json +25 -13
- package/src/abi/decoder.ts +1 -4
- package/src/abi/encoder.ts +8 -5
- package/src/abi/function_call.ts +25 -3
- package/src/auth_witness/auth_witness.ts +3 -3
- package/src/avm/revert_code.ts +15 -0
- package/src/block/block_data.ts +26 -0
- package/src/block/block_hash.ts +25 -50
- package/src/block/block_parameter.ts +3 -3
- package/src/block/in_block.ts +6 -6
- package/src/block/index.ts +1 -0
- package/src/block/l2_block.ts +3 -3
- package/src/block/l2_block_source.ts +26 -3
- package/src/block/l2_block_stream/l2_block_stream.ts +21 -0
- package/src/checkpoint/checkpoint.ts +32 -14
- package/src/checkpoint/checkpoint_data.ts +51 -0
- package/src/checkpoint/index.ts +1 -0
- package/src/checkpoint/published_checkpoint.ts +3 -1
- package/src/config/index.ts +1 -0
- package/src/config/sequencer-config.ts +29 -0
- package/src/contract/contract_address.ts +4 -4
- package/src/contract/contract_class.ts +3 -3
- package/src/contract/contract_class_id.ts +6 -5
- package/src/contract/interfaces/node-info.ts +3 -0
- package/src/contract/private_function.ts +2 -2
- 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/epoch-helpers/index.ts +12 -0
- package/src/file-store/local.ts +15 -5
- package/src/file-store/s3.ts +12 -3
- package/src/ha-signing/config.ts +149 -0
- package/src/ha-signing/index.ts +18 -0
- package/src/ha-signing/types.ts +112 -0
- package/src/hash/hash.ts +14 -10
- package/src/hash/map_slot.ts +3 -2
- package/src/interfaces/archiver.ts +9 -3
- package/src/interfaces/aztec-node-admin.ts +26 -2
- package/src/interfaces/aztec-node.ts +43 -94
- package/src/interfaces/block-builder.ts +13 -2
- package/src/interfaces/configs.ts +12 -1
- package/src/interfaces/merkle_tree_operations.ts +1 -1
- package/src/interfaces/p2p.ts +3 -14
- package/src/interfaces/prover-broker.ts +22 -0
- package/src/interfaces/prover-client.ts +7 -0
- package/src/interfaces/slasher.ts +4 -0
- package/src/interfaces/validator.ts +13 -4
- package/src/kernel/hints/build_note_hash_read_request_hints.ts +14 -18
- package/src/kernel/hints/build_nullifier_read_request_hints.ts +15 -18
- package/src/kernel/hints/build_transient_data_hints.ts +17 -2
- package/src/kernel/hints/index.ts +2 -2
- package/src/kernel/hints/{key_validation_request_and_generator.ts → key_validation_request_and_separator.ts} +12 -15
- package/src/kernel/hints/{scoped_key_validation_request_and_generator.ts → scoped_key_validation_request_and_separator.ts} +10 -10
- package/src/kernel/private_circuit_public_inputs.ts +14 -14
- package/src/kernel/private_kernel_circuit_public_inputs.ts +2 -2
- package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +2 -2
- package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +5 -5
- package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +5 -5
- package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +5 -5
- package/src/kernel/private_validation_requests.ts +8 -8
- package/src/keys/derivation.ts +15 -15
- package/src/keys/key_types.ts +6 -2
- package/src/keys/public_keys.ts +2 -2
- package/src/keys/utils.ts +8 -4
- package/src/l1-contracts/slash_factory.ts +1 -0
- package/src/logs/debug_log_store.ts +54 -0
- package/src/logs/{directional_app_tagging_secret.ts → extended_directional_app_tagging_secret.ts} +24 -16
- package/src/logs/index.ts +2 -1
- package/src/logs/log_id.ts +22 -18
- package/src/logs/pre_tag.ts +5 -5
- package/src/logs/siloed_tag.ts +10 -4
- package/src/logs/tag.ts +1 -1
- package/src/messaging/l2_to_l1_membership.ts +3 -3
- package/src/note/index.ts +0 -1
- package/src/p2p/attestation_utils.ts +56 -0
- package/src/p2p/block_proposal.ts +10 -5
- package/src/p2p/checkpoint_attestation.ts +6 -1
- package/src/p2p/checkpoint_proposal.ts +55 -16
- package/src/p2p/client_type.ts +0 -6
- package/src/p2p/consensus_payload.ts +25 -12
- package/src/p2p/constants.ts +3 -0
- package/src/p2p/index.ts +0 -1
- package/src/p2p/topic_type.ts +8 -15
- package/src/rollup/checkpoint_header.ts +2 -2
- package/src/rollup/checkpoint_rollup_public_inputs.ts +5 -5
- package/src/rollup/root_rollup_public_inputs.ts +7 -7
- 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 +14 -0
- package/src/stats/stats.ts +0 -2
- package/src/tests/factories.ts +26 -17
- package/src/tests/mocks.ts +34 -17
- package/src/timetable/index.ts +66 -0
- package/src/trees/public_data_leaf.ts +11 -5
- package/src/tx/block_header.ts +7 -7
- package/src/tx/global_variables.ts +3 -3
- package/src/tx/indexed_tx_effect.ts +3 -2
- package/src/tx/profiling.ts +5 -5
- package/src/tx/protocol_contracts.ts +2 -2
- package/src/tx/public_simulation_output.ts +4 -0
- package/src/tx/tx_receipt.ts +14 -4
- package/src/tx/tx_request.ts +2 -2
- package/src/tx/validator/empty_validator.ts +1 -1
- package/src/tx/validator/error_texts.ts +1 -1
- package/src/tx/validator/tx_validator.ts +1 -1
- package/src/validators/schemas.ts +8 -1
- package/src/validators/types.ts +5 -4
- 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/kernel/hints/key_validation_request_and_generator.d.ts +0 -30
- package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +0 -1
- package/dest/logs/directional_app_tagging_secret.d.ts +0 -40
- package/dest/logs/directional_app_tagging_secret.d.ts.map +0 -1
- package/dest/note/notes_filter.d.ts +0 -27
- package/dest/note/notes_filter.d.ts.map +0 -1
- package/dest/note/notes_filter.js +0 -11
- package/src/database-version/index.ts +0 -1
- package/src/note/notes_filter.ts +0 -38
|
@@ -5,11 +5,11 @@ import { tryRecoverAddress } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
|
5
5
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
7
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
8
|
-
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
9
|
-
import { DutyType, type SigningContext } from '@aztec/validator-ha-signer/types';
|
|
8
|
+
import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
10
9
|
|
|
11
10
|
import type { L2BlockInfo } from '../block/l2_block_info.js';
|
|
12
11
|
import { MAX_TXS_PER_BLOCK } from '../deserialization/index.js';
|
|
12
|
+
import { DutyType, type SigningContext } from '../ha-signing/index.js';
|
|
13
13
|
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
14
14
|
import { BlockHeader } from '../tx/block_header.js';
|
|
15
15
|
import { TxHash } from '../tx/index.js';
|
|
@@ -32,8 +32,15 @@ export class CheckpointProposalHash extends Buffer32 {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
export type CheckpointProposalOptions = {
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Whether to include the tx objects along with the block proposal.
|
|
37
|
+
* Dramatically increases size of the payload but eliminates failed reexecutions due to missing txs.
|
|
38
|
+
*/
|
|
39
|
+
publishFullTxs?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Whether to generate an invalid checkpoint proposal for broadcasting.
|
|
42
|
+
* Use only for testing.
|
|
43
|
+
*/
|
|
37
44
|
broadcastInvalidCheckpointProposal?: boolean;
|
|
38
45
|
};
|
|
39
46
|
|
|
@@ -74,7 +81,10 @@ export class CheckpointProposal extends Gossipable {
|
|
|
74
81
|
/** Archive root after this checkpoint is applied */
|
|
75
82
|
public readonly archive: Fr,
|
|
76
83
|
|
|
77
|
-
/** The
|
|
84
|
+
/** The fee asset price modifier in basis points (from oracle) */
|
|
85
|
+
public readonly feeAssetPriceModifier: bigint,
|
|
86
|
+
|
|
87
|
+
/** The proposer's signature over the checkpoint payload (checkpointHeader + archive + feeAssetPriceModifier) */
|
|
78
88
|
public readonly signature: Signature,
|
|
79
89
|
|
|
80
90
|
/** Optional last block info, including its own signature for BlockProposal extraction */
|
|
@@ -141,22 +151,43 @@ export class CheckpointProposal extends Gossipable {
|
|
|
141
151
|
};
|
|
142
152
|
}
|
|
143
153
|
|
|
154
|
+
toCheckpointInfo() {
|
|
155
|
+
return {
|
|
156
|
+
slotNumber: this.slotNumber,
|
|
157
|
+
archive: this.archive,
|
|
158
|
+
lastBlockNumber: this.lastBlock?.blockHeader.getBlockNumber(),
|
|
159
|
+
lastBlockIndex: this.lastBlock?.indexWithinCheckpoint,
|
|
160
|
+
blockHeadersHash: this.checkpointHeader.blockHeadersHash,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
144
164
|
/**
|
|
145
165
|
* Get the payload to sign for this checkpoint proposal.
|
|
146
|
-
* The signature is over the checkpoint header + archive root (for consensus).
|
|
166
|
+
* The signature is over the checkpoint header + archive root + feeAssetPriceModifier (for consensus).
|
|
147
167
|
*/
|
|
148
168
|
getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer {
|
|
149
|
-
return serializeToBuffer([
|
|
169
|
+
return serializeToBuffer([
|
|
170
|
+
domainSeparator,
|
|
171
|
+
this.checkpointHeader,
|
|
172
|
+
this.archive,
|
|
173
|
+
serializeSignedBigInt(this.feeAssetPriceModifier),
|
|
174
|
+
]);
|
|
150
175
|
}
|
|
151
176
|
|
|
152
177
|
static async createProposalFromSigner(
|
|
153
178
|
checkpointHeader: CheckpointHeader,
|
|
154
179
|
archiveRoot: Fr,
|
|
180
|
+
feeAssetPriceModifier: bigint,
|
|
155
181
|
lastBlockInfo: CheckpointLastBlockData | undefined,
|
|
156
182
|
payloadSigner: (payload: Buffer32, context: SigningContext) => Promise<Signature>,
|
|
157
183
|
): Promise<CheckpointProposal> {
|
|
158
184
|
// Sign the checkpoint payload with CHECKPOINT_PROPOSAL duty type
|
|
159
|
-
const tempProposal = new CheckpointProposal(
|
|
185
|
+
const tempProposal = new CheckpointProposal(
|
|
186
|
+
checkpointHeader,
|
|
187
|
+
archiveRoot,
|
|
188
|
+
feeAssetPriceModifier,
|
|
189
|
+
Signature.empty(),
|
|
190
|
+
);
|
|
160
191
|
const checkpointHash = getHashedSignaturePayload(tempProposal, SignatureDomainSeparator.checkpointProposal);
|
|
161
192
|
|
|
162
193
|
const checkpointContext: SigningContext = {
|
|
@@ -167,7 +198,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
167
198
|
const checkpointSignature = await payloadSigner(checkpointHash, checkpointContext);
|
|
168
199
|
|
|
169
200
|
if (!lastBlockInfo) {
|
|
170
|
-
return new CheckpointProposal(checkpointHeader, archiveRoot, checkpointSignature);
|
|
201
|
+
return new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, checkpointSignature);
|
|
171
202
|
}
|
|
172
203
|
|
|
173
204
|
const lastBlockProposal = await BlockProposal.createProposalFromSigner(
|
|
@@ -180,7 +211,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
180
211
|
payloadSigner,
|
|
181
212
|
);
|
|
182
213
|
|
|
183
|
-
return new CheckpointProposal(checkpointHeader, archiveRoot, checkpointSignature, {
|
|
214
|
+
return new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, checkpointSignature, {
|
|
184
215
|
blockHeader: lastBlockInfo.blockHeader,
|
|
185
216
|
indexWithinCheckpoint: lastBlockInfo.indexWithinCheckpoint,
|
|
186
217
|
txHashes: lastBlockInfo.txHashes,
|
|
@@ -220,7 +251,12 @@ export class CheckpointProposal extends Gossipable {
|
|
|
220
251
|
}
|
|
221
252
|
|
|
222
253
|
toBuffer(): Buffer {
|
|
223
|
-
const buffer: any[] = [
|
|
254
|
+
const buffer: any[] = [
|
|
255
|
+
this.checkpointHeader,
|
|
256
|
+
this.archive,
|
|
257
|
+
serializeSignedBigInt(this.feeAssetPriceModifier),
|
|
258
|
+
this.signature,
|
|
259
|
+
];
|
|
224
260
|
|
|
225
261
|
if (this.lastBlock) {
|
|
226
262
|
buffer.push(1); // hasLastBlock = true
|
|
@@ -247,6 +283,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
247
283
|
|
|
248
284
|
const checkpointHeader = reader.readObject(CheckpointHeader);
|
|
249
285
|
const archive = reader.readObject(Fr);
|
|
286
|
+
const feeAssetPriceModifier = reader.readInt256();
|
|
250
287
|
const signature = reader.readObject(Signature);
|
|
251
288
|
|
|
252
289
|
const hasLastBlock = reader.readNumber();
|
|
@@ -269,7 +306,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
269
306
|
}
|
|
270
307
|
}
|
|
271
308
|
|
|
272
|
-
return new CheckpointProposal(checkpointHeader, archive, signature, {
|
|
309
|
+
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature, {
|
|
273
310
|
blockHeader,
|
|
274
311
|
indexWithinCheckpoint,
|
|
275
312
|
txHashes,
|
|
@@ -278,7 +315,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
278
315
|
});
|
|
279
316
|
}
|
|
280
317
|
|
|
281
|
-
return new CheckpointProposal(checkpointHeader, archive, signature);
|
|
318
|
+
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature);
|
|
282
319
|
}
|
|
283
320
|
|
|
284
321
|
getSize(): number {
|
|
@@ -286,6 +323,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
286
323
|
this.checkpointHeader.toBuffer().length +
|
|
287
324
|
this.archive.size +
|
|
288
325
|
this.signature.getSize() +
|
|
326
|
+
8 /* feeAssetPriceModifier */ +
|
|
289
327
|
4; /* hasLastBlock flag */
|
|
290
328
|
|
|
291
329
|
if (this.lastBlock) {
|
|
@@ -303,11 +341,11 @@ export class CheckpointProposal extends Gossipable {
|
|
|
303
341
|
}
|
|
304
342
|
|
|
305
343
|
static empty(): CheckpointProposal {
|
|
306
|
-
return new CheckpointProposal(CheckpointHeader.empty(), Fr.ZERO, Signature.empty());
|
|
344
|
+
return new CheckpointProposal(CheckpointHeader.empty(), Fr.ZERO, 0n, Signature.empty());
|
|
307
345
|
}
|
|
308
346
|
|
|
309
347
|
static random(): CheckpointProposal {
|
|
310
|
-
return new CheckpointProposal(CheckpointHeader.random(), Fr.random(), Signature.random(), {
|
|
348
|
+
return new CheckpointProposal(CheckpointHeader.random(), Fr.random(), 0n, Signature.random(), {
|
|
311
349
|
blockHeader: BlockHeader.random(),
|
|
312
350
|
indexWithinCheckpoint: IndexWithinCheckpoint(Math.floor(Math.random() * 5)),
|
|
313
351
|
txHashes: [TxHash.random(), TxHash.random()],
|
|
@@ -320,6 +358,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
320
358
|
checkpointHeader: this.checkpointHeader.toInspect(),
|
|
321
359
|
archive: this.archive.toString(),
|
|
322
360
|
signature: this.signature.toString(),
|
|
361
|
+
feeAssetPriceModifier: this.feeAssetPriceModifier.toString(),
|
|
323
362
|
lastBlock: this.lastBlock
|
|
324
363
|
? {
|
|
325
364
|
blockHeader: this.lastBlock.blockHeader.toInspect(),
|
|
@@ -336,7 +375,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
336
375
|
* Used when the lastBlock has been extracted and stored separately.
|
|
337
376
|
*/
|
|
338
377
|
toCore(): CheckpointProposalCore {
|
|
339
|
-
return new CheckpointProposal(this.checkpointHeader, this.archive, this.signature);
|
|
378
|
+
return new CheckpointProposal(this.checkpointHeader, this.archive, this.feeAssetPriceModifier, this.signature);
|
|
340
379
|
}
|
|
341
380
|
}
|
|
342
381
|
|
package/src/p2p/client_type.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { schemas } from '@aztec/foundation/schemas';
|
|
3
|
-
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
3
|
+
import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
4
|
import { hexToBuffer } from '@aztec/foundation/string';
|
|
5
5
|
import type { FieldsOf } from '@aztec/foundation/types';
|
|
6
6
|
|
|
@@ -21,6 +21,8 @@ export class ConsensusPayload implements Signable {
|
|
|
21
21
|
public readonly header: CheckpointHeader,
|
|
22
22
|
/** The archive root after the block is added */
|
|
23
23
|
public readonly archive: Fr,
|
|
24
|
+
/** The fee asset price modifier in basis points (from oracle) */
|
|
25
|
+
public readonly feeAssetPriceModifier: bigint = 0n,
|
|
24
26
|
) {}
|
|
25
27
|
|
|
26
28
|
static get schema() {
|
|
@@ -28,12 +30,13 @@ export class ConsensusPayload implements Signable {
|
|
|
28
30
|
.object({
|
|
29
31
|
header: CheckpointHeader.schema,
|
|
30
32
|
archive: schemas.Fr,
|
|
33
|
+
feeAssetPriceModifier: schemas.BigInt,
|
|
31
34
|
})
|
|
32
|
-
.transform(obj => new ConsensusPayload(obj.header, obj.archive));
|
|
35
|
+
.transform(obj => new ConsensusPayload(obj.header, obj.archive, obj.feeAssetPriceModifier));
|
|
33
36
|
}
|
|
34
37
|
|
|
35
38
|
static getFields(fields: FieldsOf<ConsensusPayload>) {
|
|
36
|
-
return [fields.header, fields.archive] as const;
|
|
39
|
+
return [fields.header, fields.archive, fields.feeAssetPriceModifier] as const;
|
|
37
40
|
}
|
|
38
41
|
|
|
39
42
|
getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer {
|
|
@@ -50,41 +53,50 @@ export class ConsensusPayload implements Signable {
|
|
|
50
53
|
const headerHash = this.header.hash().toString();
|
|
51
54
|
const encodedData = encodeAbiParameters(abi, [
|
|
52
55
|
domainSeparator,
|
|
53
|
-
[archiveRoot, [
|
|
56
|
+
[archiveRoot, [this.feeAssetPriceModifier], headerHash],
|
|
54
57
|
] as const);
|
|
55
58
|
|
|
56
59
|
return hexToBuffer(encodedData);
|
|
57
60
|
}
|
|
58
61
|
|
|
59
62
|
toBuffer(): Buffer {
|
|
60
|
-
return serializeToBuffer([this.header, this.archive]);
|
|
63
|
+
return serializeToBuffer([this.header, this.archive, serializeSignedBigInt(this.feeAssetPriceModifier)]);
|
|
61
64
|
}
|
|
62
65
|
|
|
63
66
|
public equals(other: ConsensusPayload | CheckpointProposal | CheckpointProposalCore): boolean {
|
|
64
67
|
const otherHeader = 'checkpointHeader' in other ? other.checkpointHeader : other.header;
|
|
65
|
-
|
|
68
|
+
const otherModifier = 'feeAssetPriceModifier' in other ? other.feeAssetPriceModifier : 0n;
|
|
69
|
+
return (
|
|
70
|
+
this.header.equals(otherHeader) &&
|
|
71
|
+
this.archive.equals(other.archive) &&
|
|
72
|
+
this.feeAssetPriceModifier === otherModifier
|
|
73
|
+
);
|
|
66
74
|
}
|
|
67
75
|
|
|
68
76
|
static fromBuffer(buf: Buffer | BufferReader): ConsensusPayload {
|
|
69
77
|
const reader = BufferReader.asReader(buf);
|
|
70
|
-
const payload = new ConsensusPayload(
|
|
78
|
+
const payload = new ConsensusPayload(
|
|
79
|
+
reader.readObject(CheckpointHeader),
|
|
80
|
+
reader.readObject(Fr),
|
|
81
|
+
reader.readInt256(),
|
|
82
|
+
);
|
|
71
83
|
return payload;
|
|
72
84
|
}
|
|
73
85
|
|
|
74
86
|
static fromFields(fields: FieldsOf<ConsensusPayload>): ConsensusPayload {
|
|
75
|
-
return new ConsensusPayload(fields.header, fields.archive);
|
|
87
|
+
return new ConsensusPayload(fields.header, fields.archive, fields.feeAssetPriceModifier);
|
|
76
88
|
}
|
|
77
89
|
|
|
78
90
|
static fromCheckpoint(checkpoint: Checkpoint): ConsensusPayload {
|
|
79
|
-
return new ConsensusPayload(checkpoint.header, checkpoint.archive.root);
|
|
91
|
+
return new ConsensusPayload(checkpoint.header, checkpoint.archive.root, checkpoint.feeAssetPriceModifier);
|
|
80
92
|
}
|
|
81
93
|
|
|
82
94
|
static empty(): ConsensusPayload {
|
|
83
|
-
return new ConsensusPayload(CheckpointHeader.empty(), Fr.ZERO);
|
|
95
|
+
return new ConsensusPayload(CheckpointHeader.empty(), Fr.ZERO, 0n);
|
|
84
96
|
}
|
|
85
97
|
|
|
86
98
|
static random(): ConsensusPayload {
|
|
87
|
-
return new ConsensusPayload(CheckpointHeader.random(), Fr.random());
|
|
99
|
+
return new ConsensusPayload(CheckpointHeader.random(), Fr.random(), 0n);
|
|
88
100
|
}
|
|
89
101
|
|
|
90
102
|
/**
|
|
@@ -104,10 +116,11 @@ export class ConsensusPayload implements Signable {
|
|
|
104
116
|
return {
|
|
105
117
|
header: this.header.toInspect(),
|
|
106
118
|
archive: this.archive.toString(),
|
|
119
|
+
feeAssetPriceModifier: this.feeAssetPriceModifier.toString(),
|
|
107
120
|
};
|
|
108
121
|
}
|
|
109
122
|
|
|
110
123
|
toString() {
|
|
111
|
-
return `header: ${this.header.toString()}, archive: ${this.archive.toString()}}`;
|
|
124
|
+
return `header: ${this.header.toString()}, archive: ${this.archive.toString()}, feeAssetPriceModifier: ${this.feeAssetPriceModifier}}`;
|
|
112
125
|
}
|
|
113
126
|
}
|
package/src/p2p/constants.ts
CHANGED
package/src/p2p/index.ts
CHANGED
|
@@ -8,7 +8,6 @@ export * from './interface.js';
|
|
|
8
8
|
export * from './signature_utils.js';
|
|
9
9
|
export * from './signed_txs.js';
|
|
10
10
|
export * from './topic_type.js';
|
|
11
|
-
export * from './client_type.js';
|
|
12
11
|
export * from './message_validator.js';
|
|
13
12
|
export * from './peer_error.js';
|
|
14
13
|
export * from './constants.js';
|
package/src/p2p/topic_type.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { P2PClientType } from './client_type.js';
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Creates the topic channel identifier string from a given topic type
|
|
5
3
|
*/
|
|
@@ -27,19 +25,14 @@ export enum TopicType {
|
|
|
27
25
|
checkpoint_attestation = 'checkpoint_attestation',
|
|
28
26
|
}
|
|
29
27
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export function getTopicsForClientAndConfig(clientType: P2PClientType, disableTransactions: boolean) {
|
|
42
|
-
const topics = getTopicTypeForClientType(clientType);
|
|
28
|
+
/** Returns all gossip topics, optionally filtering out transactions. */
|
|
29
|
+
export function getTopicsForConfig(disableTransactions: boolean) {
|
|
30
|
+
const topics = [
|
|
31
|
+
TopicType.tx,
|
|
32
|
+
TopicType.block_proposal,
|
|
33
|
+
TopicType.checkpoint_proposal,
|
|
34
|
+
TopicType.checkpoint_attestation,
|
|
35
|
+
];
|
|
43
36
|
if (disableTransactions) {
|
|
44
37
|
return topics.filter(topic => topic !== TopicType.tx);
|
|
45
38
|
}
|
|
@@ -19,8 +19,8 @@ import type { UInt64 } from '../types/shared.js';
|
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Header of a checkpoint. A checkpoint is a collection of blocks submitted to L1 all within the same slot.
|
|
22
|
-
*
|
|
23
|
-
*
|
|
22
|
+
* This header is verified as-is in the rollup circuits, posted to the L1 rollup contract, stored in the archiver,
|
|
23
|
+
* and exposed via the Aztec Node API. See `CheckpointData` for a struct that includes the header plus extra metadata.
|
|
24
24
|
*/
|
|
25
25
|
export class CheckpointHeader {
|
|
26
26
|
constructor(
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BlobAccumulator, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
|
|
2
|
-
import {
|
|
2
|
+
import { MAX_CHECKPOINTS_PER_EPOCH } from '@aztec/constants';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import { bufferSchemaFor } from '@aztec/foundation/schemas';
|
|
@@ -38,11 +38,11 @@ export class CheckpointRollupPublicInputs {
|
|
|
38
38
|
/**
|
|
39
39
|
* The hashes of the headers of the constituent checkpoints.
|
|
40
40
|
*/
|
|
41
|
-
public checkpointHeaderHashes: Tuple<Fr, typeof
|
|
41
|
+
public checkpointHeaderHashes: Tuple<Fr, typeof MAX_CHECKPOINTS_PER_EPOCH>,
|
|
42
42
|
/**
|
|
43
43
|
* The summed transaction fees and recipients of the constituent checkpoints.
|
|
44
44
|
*/
|
|
45
|
-
public fees: Tuple<FeeRecipient, typeof
|
|
45
|
+
public fees: Tuple<FeeRecipient, typeof MAX_CHECKPOINTS_PER_EPOCH>,
|
|
46
46
|
/**
|
|
47
47
|
* Accumulated opening proofs for all blobs before this checkpoint range.
|
|
48
48
|
*/
|
|
@@ -65,8 +65,8 @@ export class CheckpointRollupPublicInputs {
|
|
|
65
65
|
reader.readObject(AppendOnlyTreeSnapshot),
|
|
66
66
|
reader.readObject(AppendOnlyTreeSnapshot),
|
|
67
67
|
reader.readObject(AppendOnlyTreeSnapshot),
|
|
68
|
-
reader.readArray(
|
|
69
|
-
reader.readArray(
|
|
68
|
+
reader.readArray(MAX_CHECKPOINTS_PER_EPOCH, Fr),
|
|
69
|
+
reader.readArray(MAX_CHECKPOINTS_PER_EPOCH, FeeRecipient),
|
|
70
70
|
reader.readObject(BlobAccumulator),
|
|
71
71
|
reader.readObject(BlobAccumulator),
|
|
72
72
|
reader.readObject(FinalBlobBatchingChallenges),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FinalBlobAccumulator } from '@aztec/blob-lib/types';
|
|
2
|
-
import {
|
|
2
|
+
import { MAX_CHECKPOINTS_PER_EPOCH } from '@aztec/constants';
|
|
3
3
|
import { makeTuple } from '@aztec/foundation/array';
|
|
4
4
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
5
|
import { bufferSchemaFor } from '@aztec/foundation/schemas';
|
|
@@ -27,8 +27,8 @@ export class RootRollupPublicInputs {
|
|
|
27
27
|
*/
|
|
28
28
|
public outHash: Fr,
|
|
29
29
|
/** Hashes of checkpoint headers for this rollup. */
|
|
30
|
-
public checkpointHeaderHashes: Tuple<Fr, typeof
|
|
31
|
-
public fees: Tuple<FeeRecipient, typeof
|
|
30
|
+
public checkpointHeaderHashes: Tuple<Fr, typeof MAX_CHECKPOINTS_PER_EPOCH>,
|
|
31
|
+
public fees: Tuple<FeeRecipient, typeof MAX_CHECKPOINTS_PER_EPOCH>,
|
|
32
32
|
public constants: EpochConstantData,
|
|
33
33
|
public blobPublicInputs: FinalBlobAccumulator,
|
|
34
34
|
) {}
|
|
@@ -68,8 +68,8 @@ export class RootRollupPublicInputs {
|
|
|
68
68
|
Fr.fromBuffer(reader),
|
|
69
69
|
Fr.fromBuffer(reader),
|
|
70
70
|
Fr.fromBuffer(reader),
|
|
71
|
-
reader.readArray(
|
|
72
|
-
reader.readArray(
|
|
71
|
+
reader.readArray(MAX_CHECKPOINTS_PER_EPOCH, Fr),
|
|
72
|
+
reader.readArray(MAX_CHECKPOINTS_PER_EPOCH, FeeRecipient),
|
|
73
73
|
EpochConstantData.fromBuffer(reader),
|
|
74
74
|
reader.readObject(FinalBlobAccumulator),
|
|
75
75
|
);
|
|
@@ -99,8 +99,8 @@ export class RootRollupPublicInputs {
|
|
|
99
99
|
Fr.random(),
|
|
100
100
|
Fr.random(),
|
|
101
101
|
Fr.random(),
|
|
102
|
-
makeTuple(
|
|
103
|
-
makeTuple(
|
|
102
|
+
makeTuple(MAX_CHECKPOINTS_PER_EPOCH, Fr.random),
|
|
103
|
+
makeTuple(MAX_CHECKPOINTS_PER_EPOCH, FeeRecipient.random),
|
|
104
104
|
new EpochConstantData(Fr.random(), Fr.random(), Fr.random(), Fr.random(), Fr.random()),
|
|
105
105
|
FinalBlobAccumulator.random(),
|
|
106
106
|
);
|
package/src/slashing/empire.ts
CHANGED
|
@@ -83,7 +83,9 @@ export function getFirstEligibleRoundForOffense(
|
|
|
83
83
|
case OffenseType.PROPOSED_INSUFFICIENT_ATTESTATIONS:
|
|
84
84
|
case OffenseType.PROPOSED_INCORRECT_ATTESTATIONS:
|
|
85
85
|
case OffenseType.ATTESTED_DESCENDANT_OF_INVALID:
|
|
86
|
-
case OffenseType.BROADCASTED_INVALID_BLOCK_PROPOSAL:
|
|
86
|
+
case OffenseType.BROADCASTED_INVALID_BLOCK_PROPOSAL:
|
|
87
|
+
case OffenseType.DUPLICATE_PROPOSAL:
|
|
88
|
+
case OffenseType.DUPLICATE_ATTESTATION: {
|
|
87
89
|
const slot = offense.epochOrSlot;
|
|
88
90
|
const detectedSlot = SlotNumber.fromBigInt(slot + 1n);
|
|
89
91
|
return getRoundForSlot(detectedSlot, constants).round + 1n;
|
package/src/slashing/helpers.ts
CHANGED
|
@@ -50,6 +50,8 @@ export function getPenaltyForOffense(
|
|
|
50
50
|
SlasherConfig,
|
|
51
51
|
| 'slashAttestDescendantOfInvalidPenalty'
|
|
52
52
|
| 'slashBroadcastedInvalidBlockPenalty'
|
|
53
|
+
| 'slashDuplicateProposalPenalty'
|
|
54
|
+
| 'slashDuplicateAttestationPenalty'
|
|
53
55
|
| 'slashPrunePenalty'
|
|
54
56
|
| 'slashDataWithholdingPenalty'
|
|
55
57
|
| 'slashUnknownPenalty'
|
|
@@ -71,6 +73,10 @@ export function getPenaltyForOffense(
|
|
|
71
73
|
return config.slashAttestDescendantOfInvalidPenalty;
|
|
72
74
|
case OffenseType.BROADCASTED_INVALID_BLOCK_PROPOSAL:
|
|
73
75
|
return config.slashBroadcastedInvalidBlockPenalty;
|
|
76
|
+
case OffenseType.DUPLICATE_PROPOSAL:
|
|
77
|
+
return config.slashDuplicateProposalPenalty;
|
|
78
|
+
case OffenseType.DUPLICATE_ATTESTATION:
|
|
79
|
+
return config.slashDuplicateAttestationPenalty;
|
|
74
80
|
case OffenseType.UNKNOWN:
|
|
75
81
|
return config.slashUnknownPenalty;
|
|
76
82
|
default: {
|
|
@@ -85,6 +91,8 @@ export function getTimeUnitForOffense(offense: OffenseType): 'epoch' | 'slot' {
|
|
|
85
91
|
switch (offense) {
|
|
86
92
|
case OffenseType.ATTESTED_DESCENDANT_OF_INVALID:
|
|
87
93
|
case OffenseType.BROADCASTED_INVALID_BLOCK_PROPOSAL:
|
|
94
|
+
case OffenseType.DUPLICATE_PROPOSAL:
|
|
95
|
+
case OffenseType.DUPLICATE_ATTESTATION:
|
|
88
96
|
case OffenseType.PROPOSED_INCORRECT_ATTESTATIONS:
|
|
89
97
|
case OffenseType.PROPOSED_INSUFFICIENT_ATTESTATIONS:
|
|
90
98
|
return 'slot';
|
package/src/slashing/tally.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { sumBigint } from '@aztec/foundation/bigint';
|
|
2
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
2
3
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
4
|
import type { PartialBy } from '@aztec/foundation/types';
|
|
4
5
|
|
|
@@ -20,9 +21,10 @@ export function getSlashConsensusVotesFromOffenses(
|
|
|
20
21
|
settings: {
|
|
21
22
|
slashingAmounts: [bigint, bigint, bigint];
|
|
22
23
|
epochDuration: number;
|
|
24
|
+
targetCommitteeSize: number;
|
|
23
25
|
},
|
|
24
26
|
): ValidatorSlashVote[] {
|
|
25
|
-
const { slashingAmounts } = settings;
|
|
27
|
+
const { slashingAmounts, targetCommitteeSize } = settings;
|
|
26
28
|
|
|
27
29
|
if (committees.length !== epochsForCommittees.length) {
|
|
28
30
|
throw new Error('committees and epochsForCommittees must have the same length');
|
|
@@ -31,7 +33,9 @@ export function getSlashConsensusVotesFromOffenses(
|
|
|
31
33
|
const votes = committees.flatMap((committee, committeeIndex) => {
|
|
32
34
|
const committeeEpoch = epochsForCommittees[committeeIndex];
|
|
33
35
|
|
|
34
|
-
|
|
36
|
+
// Map over actual committee members, then pad to targetCommitteeSize.
|
|
37
|
+
// Padding handles cases where committees may be empty (e.g., when there aren't enough validators to fill the committee size during network startup).
|
|
38
|
+
const votes = committee.map(validator => {
|
|
35
39
|
// Find offenses for this validator in this specific epoch.
|
|
36
40
|
// If an offense has no epoch, it is considered for all epochs due to a slashAlways setting.
|
|
37
41
|
const validatorOffenses = offenses.filter(
|
|
@@ -45,6 +49,8 @@ export function getSlashConsensusVotesFromOffenses(
|
|
|
45
49
|
const slashUnits = getSlashUnitsForAmount(slashAmount, slashingAmounts);
|
|
46
50
|
return Number(slashUnits);
|
|
47
51
|
});
|
|
52
|
+
|
|
53
|
+
return padArrayEnd(votes, 0, targetCommitteeSize);
|
|
48
54
|
});
|
|
49
55
|
|
|
50
56
|
return votes;
|
package/src/slashing/types.ts
CHANGED
|
@@ -20,6 +20,10 @@ export enum OffenseType {
|
|
|
20
20
|
PROPOSED_INCORRECT_ATTESTATIONS = 6,
|
|
21
21
|
/** A committee member attested to a block that was built as a descendent of an invalid block (as in a block with invalid attestations) */
|
|
22
22
|
ATTESTED_DESCENDANT_OF_INVALID = 7,
|
|
23
|
+
/** A proposer sent duplicate proposals for the same position (slot, indexWithinCheckpoint for blocks or slot for checkpoints) */
|
|
24
|
+
DUPLICATE_PROPOSAL = 8,
|
|
25
|
+
/** A validator signed attestations for different proposals at the same slot (equivocation) */
|
|
26
|
+
DUPLICATE_ATTESTATION = 9,
|
|
23
27
|
}
|
|
24
28
|
|
|
25
29
|
export function getOffenseTypeName(offense: OffenseType) {
|
|
@@ -40,6 +44,10 @@ export function getOffenseTypeName(offense: OffenseType) {
|
|
|
40
44
|
return 'proposed_incorrect_attestations';
|
|
41
45
|
case OffenseType.ATTESTED_DESCENDANT_OF_INVALID:
|
|
42
46
|
return 'attested_descendant_of_invalid';
|
|
47
|
+
case OffenseType.DUPLICATE_PROPOSAL:
|
|
48
|
+
return 'duplicate_proposal';
|
|
49
|
+
case OffenseType.DUPLICATE_ATTESTATION:
|
|
50
|
+
return 'duplicate_attestation';
|
|
43
51
|
default:
|
|
44
52
|
throw new Error(`Unknown offense type: ${offense}`);
|
|
45
53
|
}
|
|
@@ -56,6 +64,8 @@ export const OffenseToBigInt: Record<OffenseType, bigint> = {
|
|
|
56
64
|
[OffenseType.PROPOSED_INSUFFICIENT_ATTESTATIONS]: 5n,
|
|
57
65
|
[OffenseType.PROPOSED_INCORRECT_ATTESTATIONS]: 6n,
|
|
58
66
|
[OffenseType.ATTESTED_DESCENDANT_OF_INVALID]: 7n,
|
|
67
|
+
[OffenseType.DUPLICATE_PROPOSAL]: 8n,
|
|
68
|
+
[OffenseType.DUPLICATE_ATTESTATION]: 9n,
|
|
59
69
|
};
|
|
60
70
|
|
|
61
71
|
export function bigIntToOffense(offense: bigint): OffenseType {
|
|
@@ -76,6 +86,10 @@ export function bigIntToOffense(offense: bigint): OffenseType {
|
|
|
76
86
|
return OffenseType.PROPOSED_INCORRECT_ATTESTATIONS;
|
|
77
87
|
case 7n:
|
|
78
88
|
return OffenseType.ATTESTED_DESCENDANT_OF_INVALID;
|
|
89
|
+
case 8n:
|
|
90
|
+
return OffenseType.DUPLICATE_PROPOSAL;
|
|
91
|
+
case 9n:
|
|
92
|
+
return OffenseType.DUPLICATE_ATTESTATION;
|
|
79
93
|
default:
|
|
80
94
|
throw new Error(`Unknown offense: ${offense}`);
|
|
81
95
|
}
|
package/src/stats/stats.ts
CHANGED
|
@@ -202,8 +202,6 @@ export type L2BlockBuiltStats = {
|
|
|
202
202
|
duration: number;
|
|
203
203
|
/** Time for processing public txs in ms. */
|
|
204
204
|
publicProcessDuration: number;
|
|
205
|
-
/** Time for running rollup circuits in ms. */
|
|
206
|
-
rollupCircuitsDuration: number;
|
|
207
205
|
} & L2BlockStats;
|
|
208
206
|
|
|
209
207
|
/** Stats for an L2 block processed by the world state synchronizer. */
|