pub enum ForkCondition {
Block(BlockNumber),
TTD {
activation_block_number: BlockNumber,
fork_block: Option<BlockNumber>,
total_difficulty: U256,
},
Timestamp(u64),
Never,
}
Expand description
The condition at which a fork is activated.
Variants§
Block(BlockNumber)
The fork is activated after a certain block.
TTD
The fork is activated after a total difficulty has been reached.
Fields
activation_block_number: BlockNumber
The activation block number for the merge.
This should represent the first post-merge block for the given network. Sepolia and mainnet are the only networks that have merged, and they have both finalized post-merge, so total difficulty is effectively deprecated.
fork_block: Option<BlockNumber>
The block number at which TTD is reached, if it is known.
This should NOT be set unless you want this block advertised as EIP-2124
FORK_NEXT
. This is currently only the case for Sepolia and Holesky.
total_difficulty: U256
The total difficulty after which the fork is activated.
Timestamp(u64)
The fork is activated after a specific timestamp.
Never
The fork is never activated
Implementations§
Source§impl ForkCondition
impl ForkCondition
Sourcepub const fn is_timestamp(&self) -> bool
pub const fn is_timestamp(&self) -> bool
Returns true if the fork condition is timestamp based.
Sourcepub const fn active_at_block(&self, current_block: BlockNumber) -> bool
pub const fn active_at_block(&self, current_block: BlockNumber) -> bool
Checks whether the fork condition is satisfied at the given block.
This will return true if the block number is equal or greater than the activation block of:
For timestamp conditions, this will always return false.
Sourcepub const fn transitions_at_block(&self, current_block: BlockNumber) -> bool
pub const fn transitions_at_block(&self, current_block: BlockNumber) -> bool
Checks if the given block is the first block that satisfies the fork condition.
This will return false for any condition that is not block based.
Sourcepub fn active_at_ttd(&self, ttd: U256, difficulty: U256) -> bool
pub fn active_at_ttd(&self, ttd: U256, difficulty: U256) -> bool
Checks whether the fork condition is satisfied at the given total difficulty and difficulty of a current block.
The fork is considered active if the previous total difficulty is above the threshold.
To achieve that, we subtract the passed difficulty
from the current block’s total
difficulty, and check if it’s above the Fork Condition’s total difficulty (here:
58_750_000_000_000_000_000_000
)
This will return false for any condition that is not TTD-based.
Sourcepub const fn active_at_timestamp(&self, timestamp: u64) -> bool
pub const fn active_at_timestamp(&self, timestamp: u64) -> bool
Checks whether the fork condition is satisfied at the given timestamp.
This will return false for any condition that is not timestamp-based.
Sourcepub const fn transitions_at_timestamp(
&self,
timestamp: u64,
parent_timestamp: u64,
) -> bool
pub const fn transitions_at_timestamp( &self, timestamp: u64, parent_timestamp: u64, ) -> bool
Checks if the given block is the first block that satisfies the fork condition.
This will return false for any condition that is not timestamp based.
Sourcepub const fn active_at_timestamp_or_number(
&self,
timestamp: u64,
block_number: u64,
) -> bool
pub const fn active_at_timestamp_or_number( &self, timestamp: u64, block_number: u64, ) -> bool
Checks whether the fork condition is satisfied at the given timestamp or number.
Sourcepub fn active_at_head(&self, head: &Head) -> bool
pub fn active_at_head(&self, head: &Head) -> bool
Checks whether the fork condition is satisfied at the given head block.
This will return true if:
- The condition is satisfied by the block number;
- The condition is satisfied by the timestamp;
- or the condition is satisfied by the total difficulty
Sourcepub const fn ttd(&self) -> Option<U256>
pub const fn ttd(&self) -> Option<U256>
Get the total terminal difficulty for this fork condition.
Returns None
for fork conditions that are not TTD based.
Sourcepub const fn as_timestamp(&self) -> Option<u64>
pub const fn as_timestamp(&self) -> Option<u64>
Returns the timestamp of the fork condition, if it is timestamp based.
Trait Implementations§
Source§impl Clone for ForkCondition
impl Clone for ForkCondition
Source§fn clone(&self) -> ForkCondition
fn clone(&self) -> ForkCondition
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ForkCondition
impl Debug for ForkCondition
Source§impl Default for ForkCondition
impl Default for ForkCondition
Source§fn default() -> ForkCondition
fn default() -> ForkCondition
Source§impl<'de> Deserialize<'de> for ForkCondition
impl<'de> Deserialize<'de> for ForkCondition
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for ForkCondition
impl PartialEq for ForkCondition
Source§impl Serialize for ForkCondition
impl Serialize for ForkCondition
impl Copy for ForkCondition
impl Eq for ForkCondition
impl StructuralPartialEq for ForkCondition
Auto Trait Implementations§
impl Freeze for ForkCondition
impl RefUnwindSafe for ForkCondition
impl Send for ForkCondition
impl Sync for ForkCondition
impl Unpin for ForkCondition
impl UnwindSafe for ForkCondition
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,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 56 bytes
Size for each variant:
Block
: 16 bytesTTD
: 56 bytesTimestamp
: 16 bytesNever
: 0 bytes