use chia_protocol::Bytes32;
use chia_streamable_macro::streamable;
#[cfg(feature = "py-bindings")]
use chia_py_streamable_macro::{PyGetters, PyJsonDict, PyStreamable};
use hex_literal::hex;
#[cfg_attr(
feature = "py-bindings",
pyo3::pyclass(module = "chia_rs"),
derive(PyJsonDict, PyStreamable, PyGetters),
py_uppercase,
py_pickle
)]
#[streamable]
pub struct ConsensusConstants {
slot_blocks_target: u32,
min_blocks_per_challenge_block: u8,
max_sub_slot_blocks: u32,
num_sps_sub_slot: u32,
sub_slot_iters_starting: u64,
difficulty_constant_factor: u128,
difficulty_starting: u64,
difficulty_change_max_factor: u32,
sub_epoch_blocks: u32,
epoch_blocks: u32,
significant_bits: u8,
discriminant_size_bits: u16,
number_zero_bits_plot_filter: u8,
min_plot_size: u8,
max_plot_size: u8,
sub_slot_time_target: u16,
num_sp_intervals_extra: u8,
max_future_time2: u32,
number_of_timestamps: u8,
genesis_challenge: Bytes32,
agg_sig_me_additional_data: Bytes32,
agg_sig_parent_additional_data: Bytes32,
agg_sig_puzzle_additional_data: Bytes32,
agg_sig_amount_additional_data: Bytes32,
agg_sig_puzzle_amount_additional_data: Bytes32,
agg_sig_parent_amount_additional_data: Bytes32,
agg_sig_parent_puzzle_additional_data: Bytes32,
genesis_pre_farm_pool_puzzle_hash: Bytes32,
genesis_pre_farm_farmer_puzzle_hash: Bytes32,
max_vdf_witness_size: u8,
mempool_block_buffer: u8,
max_coin_amount: u64,
max_block_cost_clvm: u64,
cost_per_byte: u64,
weight_proof_threshold: u8,
weight_proof_recent_blocks: u32,
max_block_count_per_requests: u32,
blocks_cache_size: u32,
max_generator_size: u32,
max_generator_ref_list_size: u32,
pool_sub_slot_iters: u64,
soft_fork5_height: u32,
hard_fork_height: u32,
plot_filter_128_height: u32,
plot_filter_64_height: u32,
plot_filter_32_height: u32,
}
pub const TEST_CONSTANTS: ConsensusConstants = ConsensusConstants {
slot_blocks_target: 32,
min_blocks_per_challenge_block: 16,
max_sub_slot_blocks: 128,
num_sps_sub_slot: 64,
sub_slot_iters_starting: u64::pow(2, 27),
difficulty_constant_factor: u128::pow(2, 67),
difficulty_starting: 7,
difficulty_change_max_factor: 3,
sub_epoch_blocks: 384,
epoch_blocks: 4608,
significant_bits: 8,
discriminant_size_bits: 1024,
number_zero_bits_plot_filter: 9,
min_plot_size: 32,
max_plot_size: 50,
sub_slot_time_target: 600,
num_sp_intervals_extra: 3,
max_future_time2: 2 * 60,
number_of_timestamps: 11,
genesis_challenge: Bytes32::new(hex!(
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
)),
agg_sig_me_additional_data: Bytes32::new(hex!(
"ccd5bb71183532bff220ba46c268991a3ff07eb358e8255a65c30a2dce0e5fbb"
)),
agg_sig_parent_additional_data: Bytes32::new(hex!(
"baf5d69c647c91966170302d18521b0a85663433d161e72c826ed08677b53a74"
)),
agg_sig_puzzle_additional_data: Bytes32::new(hex!(
"284fa2ef486c7a41cc29fc99c9d08376161e93dd37817edb8219f42dca7592c4"
)),
agg_sig_amount_additional_data: Bytes32::new(hex!(
"cda186a9cd030f7a130fae45005e81cae7a90e0fa205b75f6aebc0d598e0348e"
)),
agg_sig_puzzle_amount_additional_data: Bytes32::new(hex!(
"0f7d90dff0613e6901e24dae59f1e690f18b8f5fbdcf1bb192ac9deaf7de22ad"
)),
agg_sig_parent_amount_additional_data: Bytes32::new(hex!(
"585796bd90bb553c0430b87027ffee08d88aba0162c6e1abbbcc6b583f2ae7f9"
)),
agg_sig_parent_puzzle_additional_data: Bytes32::new(hex!(
"2ebfdae17b29d83bae476a25ea06f0c4bd57298faddbbc3ec5ad29b9b86ce5df"
)),
genesis_pre_farm_pool_puzzle_hash: Bytes32::new(hex!(
"d23da14695a188ae5708dd152263c4db883eb27edeb936178d4d988b8f3ce5fc"
)),
genesis_pre_farm_farmer_puzzle_hash: Bytes32::new(hex!(
"3d8765d3a597ec1d99663f6c9816d915b9f68613ac94009884c4addaefcce6af"
)),
max_vdf_witness_size: 64,
mempool_block_buffer: 10,
max_coin_amount: u64::MAX,
max_block_cost_clvm: 11_000_000_000,
cost_per_byte: 12000,
weight_proof_threshold: 2,
blocks_cache_size: 4608 + (128 * 4),
weight_proof_recent_blocks: 1000,
max_block_count_per_requests: 32,
max_generator_size: 1_000_000,
max_generator_ref_list_size: 512,
pool_sub_slot_iters: 37_600_000_000,
soft_fork5_height: 5_940_000,
hard_fork_height: 5_496_000,
plot_filter_128_height: 10_542_000,
plot_filter_64_height: 15_592_000,
plot_filter_32_height: 20_643_000,
};