pub struct ConsensusConstants {Show 55 fields
pub slot_blocks_target: u32,
pub min_blocks_per_challenge_block: u8,
pub max_sub_slot_blocks: u32,
pub num_sps_sub_slot: u8,
pub sub_slot_iters_starting: u64,
pub difficulty_constant_factor: u128,
pub difficulty_starting: u64,
pub difficulty_change_max_factor: u32,
pub sub_epoch_blocks: u32,
pub epoch_blocks: u32,
pub significant_bits: u8,
pub discriminant_size_bits: u16,
pub number_zero_bits_plot_filter_v1: u8,
pub number_zero_bits_plot_filter_v2: u8,
pub min_plot_size_v1: u8,
pub max_plot_size_v1: u8,
pub min_plot_size_v2: u8,
pub max_plot_size_v2: u8,
pub sub_slot_time_target: u16,
pub num_sp_intervals_extra: u8,
pub max_future_time2: u32,
pub number_of_timestamps: u8,
pub genesis_challenge: BytesImpl<32>,
pub agg_sig_me_additional_data: BytesImpl<32>,
pub agg_sig_parent_additional_data: BytesImpl<32>,
pub agg_sig_puzzle_additional_data: BytesImpl<32>,
pub agg_sig_amount_additional_data: BytesImpl<32>,
pub agg_sig_puzzle_amount_additional_data: BytesImpl<32>,
pub agg_sig_parent_amount_additional_data: BytesImpl<32>,
pub agg_sig_parent_puzzle_additional_data: BytesImpl<32>,
pub genesis_pre_farm_pool_puzzle_hash: BytesImpl<32>,
pub genesis_pre_farm_farmer_puzzle_hash: BytesImpl<32>,
pub max_vdf_witness_size: u8,
pub mempool_block_buffer: u8,
pub max_coin_amount: u64,
pub max_block_cost_clvm: u64,
pub cost_per_byte: u64,
pub weight_proof_threshold: u8,
pub weight_proof_recent_blocks: u32,
pub max_block_count_per_requests: u32,
pub blocks_cache_size: u32,
pub max_generator_size: u32,
pub max_generator_ref_list_size: u32,
pub pool_sub_slot_iters: u64,
pub hard_fork_height: u32,
pub hard_fork2_height: u32,
pub plot_filter_128_height: u32,
pub plot_filter_64_height: u32,
pub plot_filter_32_height: u32,
pub plot_difficulty_initial: u8,
pub plot_difficulty_4_height: u32,
pub plot_difficulty_5_height: u32,
pub plot_difficulty_6_height: u32,
pub plot_difficulty_7_height: u32,
pub plot_difficulty_8_height: u32,
}Fields§
§slot_blocks_target: u32How many blocks to target per sub-slot.
min_blocks_per_challenge_block: u8How many blocks must be created per slot (to make challenge sb).
max_sub_slot_blocks: u32Max number of blocks that can be infused into a sub-slot. Note: This must be less than SUB_EPOCH_BLOCKS/2, and > SLOT_BLOCKS_TARGET.
num_sps_sub_slot: u8The number of signage points per sub-slot (including the 0th sp at the sub-slot start).
sub_slot_iters_starting: u64The sub_slot_iters for the first epoch.
difficulty_constant_factor: u128Multiplied by the difficulty to get iterations.
difficulty_starting: u64The difficulty for the first epoch.
difficulty_change_max_factor: u32The maximum factor by which difficulty and sub_slot_iters can change per epoch.
sub_epoch_blocks: u32The number of blocks per sub-epoch.
epoch_blocks: u32The number of blocks per sub-epoch, must be a multiple of SUB_EPOCH_BLOCKS.
significant_bits: u8The number of bits to look at in difficulty and min iters. The rest are zeroed.
discriminant_size_bits: u16Max is 1024 (based on ClassGroupElement int size).
number_zero_bits_plot_filter_v1: u8H(plot id + challenge hash + signage point) must start with these many zeroes. This applies to original plots, and proof-of-space format
number_zero_bits_plot_filter_v2: u8H(plot id + challenge hash + signage point) must start with these many zeroes. This applies to the new plot format, and proof-of-space format
min_plot_size_v1: u8The smallest and largest allowed plot size for the original plot format, v1. These are the K-values for the plots.
max_plot_size_v1: u8§min_plot_size_v2: u8The smallest and largest allowed plot size for the the new plot format, v2. These are the K-values for the plots. In addition to these constraints, v2 plot sizes must be even numbers. The new plot format was introduced in Chia-3.0.
max_plot_size_v2: u8§sub_slot_time_target: u16The target number of seconds per sub-slot.
num_sp_intervals_extra: u8The difference between signage point and infusion point (plus required_iters).
max_future_time2: u32After soft-fork2, this is the new MAX_FUTURE_TIME.
number_of_timestamps: u8Than the average of the last NUMBER_OF_TIMESTAMPS blocks.
genesis_challenge: BytesImpl<32>Used as the initial cc rc challenges, as well as first block back pointers, and first SES back pointer. We override this value based on the chain being run (testnet0, testnet1, mainnet, etc).
agg_sig_me_additional_data: BytesImpl<32>Forks of chia should change these values to provide replay attack protection.
agg_sig_parent_additional_data: BytesImpl<32>By convention, the below additional data is derived from the agg_sig_me_additional_data
agg_sig_puzzle_additional_data: BytesImpl<32>§agg_sig_amount_additional_data: BytesImpl<32>§agg_sig_puzzle_amount_additional_data: BytesImpl<32>§agg_sig_parent_amount_additional_data: BytesImpl<32>§agg_sig_parent_puzzle_additional_data: BytesImpl<32>§genesis_pre_farm_pool_puzzle_hash: BytesImpl<32>The block at height must pay out to this pool puzzle hash.
genesis_pre_farm_farmer_puzzle_hash: BytesImpl<32>The block at height must pay out to this farmer puzzle hash.
max_vdf_witness_size: u8The maximum number of classgroup elements within an n-wesolowski proof.
mempool_block_buffer: u8Size of mempool = 10x the size of block.
max_coin_amount: u64Max coin amount uint(1 << 64). This allows coin amounts to fit in 64 bits. This is around 18M chia.
max_block_cost_clvm: u64Max block cost in clvm cost units.
cost_per_byte: u64Cost per byte of generator program.
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§hard_fork_height: u32The hard fork planned with the 2.0 release. This is the block with the first plot filter adjustment.
hard_fork2_height: u32The hard fork planned with the 3.0 release. This is the first block where the new plot format and proof-of-space is valid
plot_filter_128_height: u32The 128 plot filter adjustment height. This affects the plot filter for original plots
plot_filter_64_height: u32The 64 plot filter adjustment height. This affects the plot filter for original plots
plot_filter_32_height: u32The 32 plot filter adjustment height. This affects the plot filter for original plots
plot_difficulty_initial: u8initial plot difficulty for the v2 plot format.
plot_difficulty_4_height: u32Plot difficulty is a feature of the new plot format, v2 (introduced in Chia 3.0) The plot difficulty will increase at these block heights. The new difficulty will be 4, 5, 6, 7 and 8 respectively.
plot_difficulty_5_height: u32§plot_difficulty_6_height: u32§plot_difficulty_7_height: u32§plot_difficulty_8_height: u32Implementations§
Source§impl ConsensusConstants
impl ConsensusConstants
pub fn new( slot_blocks_target: u32, min_blocks_per_challenge_block: u8, max_sub_slot_blocks: u32, num_sps_sub_slot: u8, 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_v1: u8, number_zero_bits_plot_filter_v2: u8, min_plot_size_v1: u8, max_plot_size_v1: u8, min_plot_size_v2: u8, max_plot_size_v2: u8, sub_slot_time_target: u16, num_sp_intervals_extra: u8, max_future_time2: u32, number_of_timestamps: u8, genesis_challenge: BytesImpl<32>, agg_sig_me_additional_data: BytesImpl<32>, agg_sig_parent_additional_data: BytesImpl<32>, agg_sig_puzzle_additional_data: BytesImpl<32>, agg_sig_amount_additional_data: BytesImpl<32>, agg_sig_puzzle_amount_additional_data: BytesImpl<32>, agg_sig_parent_amount_additional_data: BytesImpl<32>, agg_sig_parent_puzzle_additional_data: BytesImpl<32>, genesis_pre_farm_pool_puzzle_hash: BytesImpl<32>, genesis_pre_farm_farmer_puzzle_hash: BytesImpl<32>, 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, hard_fork_height: u32, hard_fork2_height: u32, plot_filter_128_height: u32, plot_filter_64_height: u32, plot_filter_32_height: u32, plot_difficulty_initial: u8, plot_difficulty_4_height: u32, plot_difficulty_5_height: u32, plot_difficulty_6_height: u32, plot_difficulty_7_height: u32, plot_difficulty_8_height: u32, ) -> ConsensusConstants
Trait Implementations§
Source§impl Clone for ConsensusConstants
impl Clone for ConsensusConstants
Source§fn clone(&self) -> ConsensusConstants
fn clone(&self) -> ConsensusConstants
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ConsensusConstants
impl Debug for ConsensusConstants
Source§impl Hash for ConsensusConstants
impl Hash for ConsensusConstants
Source§impl PartialEq for ConsensusConstants
impl PartialEq for ConsensusConstants
Source§impl Streamable for ConsensusConstants
impl Streamable for ConsensusConstants
fn update_digest(&self, digest: &mut Sha256)
fn stream(&self, out: &mut Vec<u8>) -> Result<(), Error>
fn parse<const TRUSTED: bool>( input: &mut Cursor<&[u8]>, ) -> Result<ConsensusConstants, Error>
fn to_bytes(&self) -> Result<Vec<u8>, Error>
fn from_bytes(bytes: &[u8]) -> Result<Self, Error>where
Self: Sized,
fn from_bytes_unchecked(bytes: &[u8]) -> Result<Self, Error>where
Self: Sized,
fn hash(&self) -> [u8; 32]
impl Eq for ConsensusConstants
impl StructuralPartialEq for ConsensusConstants
Auto Trait Implementations§
impl Freeze for ConsensusConstants
impl RefUnwindSafe for ConsensusConstants
impl Send for ConsensusConstants
impl Sync for ConsensusConstants
impl Unpin for ConsensusConstants
impl UnsafeUnpin for ConsensusConstants
impl UnwindSafe for ConsensusConstants
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.