Expose valid (min, max) difficulty transition thresholds
Once `U256` was made private, we lost the ability to check whether a valid difficulty transition was made in the chain, since `Target` no longer exposes any arithmetic operations.
This commit is contained in:
parent
cce8512d41
commit
8e6f953aa7
|
@ -234,6 +234,20 @@ impl Target {
|
||||||
/// [`difficulty`]: Target::difficulty
|
/// [`difficulty`]: Target::difficulty
|
||||||
#[cfg_attr(all(test, mutate), mutate)]
|
#[cfg_attr(all(test, mutate), mutate)]
|
||||||
pub fn difficulty_float(&self) -> f64 { TARGET_MAX_F64 / self.0.to_f64() }
|
pub fn difficulty_float(&self) -> f64 { TARGET_MAX_F64 / self.0.to_f64() }
|
||||||
|
|
||||||
|
/// Computes the minimum valid [`Target`] threshold allowed for a block in which a difficulty
|
||||||
|
/// adjustment occurs.
|
||||||
|
///
|
||||||
|
/// The difficulty can only decrease or increase by a factor of 4 max on each difficulty
|
||||||
|
/// adjustment period.
|
||||||
|
pub fn min_difficulty_transition_threshold(&self) -> Self { Self(self.0 >> 2) }
|
||||||
|
|
||||||
|
/// Computes the maximum valid [`Target`] threshold allowed for a block in which a difficulty
|
||||||
|
/// adjustment occurs.
|
||||||
|
///
|
||||||
|
/// The difficulty can only decrease or increase by a factor of 4 max on each difficulty
|
||||||
|
/// adjustment period.
|
||||||
|
pub fn max_difficulty_transition_threshold(&self) -> Self { Self(self.0 << 2) }
|
||||||
}
|
}
|
||||||
do_impl!(Target);
|
do_impl!(Target);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue