Skip to main content

ConsensusConstants

Struct ConsensusConstants 

Source
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: u32

How many blocks to target per sub-slot.

§min_blocks_per_challenge_block: u8

How many blocks must be created per slot (to make challenge sb).

§max_sub_slot_blocks: u32

Max 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: u8

The number of signage points per sub-slot (including the 0th sp at the sub-slot start).

§sub_slot_iters_starting: u64

The sub_slot_iters for the first epoch.

§difficulty_constant_factor: u128

Multiplied by the difficulty to get iterations.

§difficulty_starting: u64

The difficulty for the first epoch.

§difficulty_change_max_factor: u32

The maximum factor by which difficulty and sub_slot_iters can change per epoch.

§sub_epoch_blocks: u32

The number of blocks per sub-epoch.

§epoch_blocks: u32

The number of blocks per sub-epoch, must be a multiple of SUB_EPOCH_BLOCKS.

§significant_bits: u8

The number of bits to look at in difficulty and min iters. The rest are zeroed.

§discriminant_size_bits: u16

Max is 1024 (based on ClassGroupElement int size).

§number_zero_bits_plot_filter_v1: u8

H(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: u8

H(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: u8

The 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: u8

The 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: u16

The target number of seconds per sub-slot.

§num_sp_intervals_extra: u8

The difference between signage point and infusion point (plus required_iters).

§max_future_time2: u32

After soft-fork2, this is the new MAX_FUTURE_TIME.

§number_of_timestamps: u8

Than 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: u8

The maximum number of classgroup elements within an n-wesolowski proof.

§mempool_block_buffer: u8

Size of mempool = 10x the size of block.

§max_coin_amount: u64

Max coin amount uint(1 << 64). This allows coin amounts to fit in 64 bits. This is around 18M chia.

§max_block_cost_clvm: u64

Max block cost in clvm cost units.

§cost_per_byte: u64

Cost 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: u32

The hard fork planned with the 2.0 release. This is the block with the first plot filter adjustment.

§hard_fork2_height: u32

The 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: u32

The 128 plot filter adjustment height. This affects the plot filter for original plots

§plot_filter_64_height: u32

The 64 plot filter adjustment height. This affects the plot filter for original plots

§plot_filter_32_height: u32

The 32 plot filter adjustment height. This affects the plot filter for original plots

§plot_difficulty_initial: u8

initial plot difficulty for the v2 plot format.

§plot_difficulty_4_height: u32

Plot 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: u32

Implementations§

Source§

impl ConsensusConstants

Source

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

Source§

fn clone(&self) -> ConsensusConstants

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ConsensusConstants

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Hash for ConsensusConstants

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ConsensusConstants

Source§

fn eq(&self, other: &ConsensusConstants) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Streamable for ConsensusConstants

Source§

fn update_digest(&self, digest: &mut Sha256)

Source§

fn stream(&self, out: &mut Vec<u8>) -> Result<(), Error>

Source§

fn parse<const TRUSTED: bool>( input: &mut Cursor<&[u8]>, ) -> Result<ConsensusConstants, Error>

Source§

fn to_bytes(&self) -> Result<Vec<u8>, Error>

Source§

fn from_bytes(bytes: &[u8]) -> Result<Self, Error>
where Self: Sized,

Source§

fn from_bytes_unchecked(bytes: &[u8]) -> Result<Self, Error>
where Self: Sized,

Source§

fn hash(&self) -> [u8; 32]

Source§

impl Eq for ConsensusConstants

Source§

impl StructuralPartialEq for ConsensusConstants

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .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
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more